Browse Source

ffmpeg: skip duration cliping for passthrough & drop modes

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.5
Michael Niedermayer 11 years ago
parent
commit
33bc81e437
1 changed files with 11 additions and 7 deletions
  1. +11
    -7
      ffmpeg.c

+ 11
- 7
ffmpeg.c View File

@@ -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) {


Loading…
Cancel
Save