[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