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