summaryrefslogtreecommitdiff
path: root/ffmpeg.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-11-19 19:24:39 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-11-19 20:18:03 +0100
commit33bc81e437419d3e99c67826afdd0f4cf7621c0a (patch)
treedc3b20c705635543314cb6237dee7489706280f2 /ffmpeg.c
parentde8cd93a05d1c1feb69e18998932430f6d4f941b (diff)
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.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index e51e789b03..2586dcf2d9 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -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) {