]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Make sure -vsync 2 does not produce timestamps equal to the previous,
authormichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Fri, 27 Feb 2009 14:53:29 +0000 (14:53 +0000)
committermichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Fri, 27 Feb 2009 14:53:29 +0000 (14:53 +0000)
rather drop a frame.
Fixes Issue872.

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@17643 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

ffmpeg.c

index f5849b4fa20004556f4f38f3ad568bf9d17f00f0..c5cafad1ae78134016abef000adc89f373675c47 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -865,9 +865,12 @@ static void do_video_out(AVFormatContext *s,
         //FIXME set to 0.5 after we fix some dts/pts bugs like in avidec.c
         if (vdelta < -1.1)
             nb_frames = 0;
-        else if (video_sync_method == 2 || (video_sync_method<0 && (s->oformat->flags & AVFMT_VARIABLE_FPS)))
+        else if (video_sync_method == 2 || (video_sync_method<0 && (s->oformat->flags & AVFMT_VARIABLE_FPS))){
+            if(vdelta<=-0.6){
+                nb_frames=0;
+            }else if(vdelta>0.6)
             ost->sync_opts= lrintf(get_sync_ipts(ost) / av_q2d(enc->time_base));
-        else if (vdelta > 1.1)
+        }else if (vdelta > 1.1)
             nb_frames = lrintf(vdelta);
 //fprintf(stderr, "vdelta:%f, ost->sync_opts:%"PRId64", ost->sync_ipts:%f nb_frames:%d\n", vdelta, ost->sync_opts, get_sync_ipts(ost), nb_frames);
         if (nb_frames == 0){