diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-11-19 19:24:39 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-11-19 20:18:03 +0100 |
commit | 33bc81e437419d3e99c67826afdd0f4cf7621c0a (patch) | |
tree | dc3b20c705635543314cb6237dee7489706280f2 /ffmpeg.c | |
parent | de8cd93a05d1c1feb69e18998932430f6d4f941b (diff) | |
download | ffmpeg-33bc81e437419d3e99c67826afdd0f4cf7621c0a.tar.gz |
ffmpeg: skip duration cliping for passthrough & drop modes
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'ffmpeg.c')
-rw-r--r-- | ffmpeg.c | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -904,13 +904,6 @@ static void do_video_out(AVFormatContext *s, sync_ipts = next_picture->pts; delta0 = sync_ipts - ost->sync_opts; delta = delta0 + duration; - if (delta0 < 0 && delta > 0) { - double cor = FFMIN(-delta0, duration); - av_log(NULL, AV_LOG_WARNING, "Past duration %f too large\n", -delta0); - sync_ipts += cor; - duration -= cor; - delta0 += cor; - } /* by default, we output a single frame */ nb0_frames = 0; @@ -933,6 +926,17 @@ static void do_video_out(AVFormatContext *s, } } + if (delta0 < 0 && + delta > 0 && + format_video_sync != VSYNC_PASSTHROUGH && + format_video_sync != VSYNC_DROP) { + double cor = FFMIN(-delta0, duration); + av_log(NULL, AV_LOG_WARNING, "Past duration %f too large\n", -delta0); + sync_ipts += cor; + duration -= cor; + delta0 += cor; + } + switch (format_video_sync) { case VSYNC_VSCFR: if (ost->frame_number == 0 && delta - duration >= 0.5) { |