mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-21 06:50:56 +00:00
Make sure -vsync 2 does not produce timestamps equal to the previous,
rather drop a frame. Fixes Issue872. Originally committed as revision 17643 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
fc6765d719
commit
e6fdc2b1a0
7
ffmpeg.c
7
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
|
//FIXME set to 0.5 after we fix some dts/pts bugs like in avidec.c
|
||||||
if (vdelta < -1.1)
|
if (vdelta < -1.1)
|
||||||
nb_frames = 0;
|
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));
|
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);
|
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);
|
//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){
|
if (nb_frames == 0){
|
||||||
|
Loading…
Reference in New Issue
Block a user