From 46bf3b92d0252b4ea3188d2f77141caacfa05ec4 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 1 Sep 2009 21:42:26 +0200 Subject: [PATCH] ffdec: disable interpolation when dropping frames When we are dropping frames because of QoS disable the DTS interpolation because we won't be able to update the timestamps and end up setting the wrong timestamps. Instead, simply use the timestamps from ffmpeg. --- ext/ffmpeg/gstffmpegdec.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ext/ffmpeg/gstffmpegdec.c b/ext/ffmpeg/gstffmpegdec.c index 2478462..f8345f0 100644 --- a/ext/ffmpeg/gstffmpegdec.c +++ b/ext/ffmpeg/gstffmpegdec.c @@ -1683,6 +1683,14 @@ gst_ffmpegdec_video_frame (GstFFMpegDec * ffmpegdec, if (len < 0 && (mode_switch || ffmpegdec->context->hurry_up)) len = 0; + if (len > 0 && have_data <= 0 && (mode_switch + || ffmpegdec->context->hurry_up)) { + /* we consumed some bytes but nothing decoded and we are skipping frames, + * disable the interpollation of DTS timestamps */ + ffmpegdec->ts_is_dts = FALSE; + ffmpegdec->last_out = -1; + } + /* no data, we're done */ if (len < 0 || have_data <= 0) goto beach; -- 2.7.4