Browse Source

ffmpeg: Check duration for overlap and clip in fps cfr/vfr code

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.5
Michael Niedermayer 11 years ago
parent
commit
4e20e94921
2 changed files with 8 additions and 1 deletions
  1. +7
    -0
      ffmpeg.c
  2. +1
    -1
      tests/ref/fate/gif-disposal-restore

+ 7
- 0
ffmpeg.c View File

@@ -904,6 +904,13 @@ static void do_video_out(AVFormatContext *s,
sync_ipts = next_picture->pts; sync_ipts = next_picture->pts;
delta0 = sync_ipts - ost->sync_opts; delta0 = sync_ipts - ost->sync_opts;
delta = delta0 + duration; 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 */ /* by default, we output a single frame */
nb0_frames = 0; nb0_frames = 0;


+ 1
- 1
tests/ref/fate/gif-disposal-restore View File

@@ -1,4 +1,4 @@
#tb 0: 1/1 #tb 0: 1/1
0, 0, 0, 1, 112320, 0xb8afe429 0, 0, 0, 1, 112320, 0xb8afe429
0, 0, 0, 1, 112320, 0xae588a4b
0, 1, 1, 1, 112320, 0xae588a4b
0, 3, 3, 1, 112320, 0xccdd27b7 0, 3, 3, 1, 112320, 0xccdd27b7

Loading…
Cancel
Save