[FFmpeg-cvslog] lavf: inject sample skip side data when requested by the demuxer

Michael Niedermayer git at videolan.org
Thu Jul 12 22:31:05 CEST 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Jul  4 22:00:50 2012 +0200| [018601dbf940a43dc0367f99b4953da5db9693e0] | committer: Michael Niedermayer

lavf: inject sample skip side data when requested by the demuxer

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=018601dbf940a43dc0367f99b4953da5db9693e0
---

 libavformat/avformat.h |    5 +++++
 libavformat/utils.c    |    8 ++++++++
 2 files changed, 13 insertions(+)

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index a435d51..7dad8e2 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -805,6 +805,11 @@ typedef struct AVStream {
      * should be discarded.
      */
     int skip_to_keyframe;
+
+    /**
+     * Number of samples to skip at the start of the frame decoded from the next packet.
+     */
+    int skip_samples;
 } AVStream;
 
 #define AV_PROGRAM_RUNNING 1
diff --git a/libavformat/utils.c b/libavformat/utils.c
index b1b48fe..39527a6 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -1450,6 +1450,14 @@ int av_read_frame(AVFormatContext *s, AVPacket *pkt)
     }
 
 return_packet:
+
+    if(s->streams[pkt->stream_index]->skip_samples) {
+        uint8_t *p = av_packet_new_side_data(pkt, AV_PKT_DATA_SKIP_SAMPLES, 10);
+        AV_WL32(p, s->streams[pkt->stream_index]->skip_samples);
+        av_log(s, AV_LOG_DEBUG, "demuxer injecting skip %d\n", s->streams[pkt->stream_index]->skip_samples);
+        s->streams[pkt->stream_index]->skip_samples = 0;
+    }
+
     if (is_relative(pkt->dts))
         pkt->dts -= RELATIVE_TS_BASE;
     if (is_relative(pkt->pts))



More information about the ffmpeg-cvslog mailing list