@ -823,9 +823,21 @@ static void do_video_out(AVFormatContext *s,
format_video_sync = VSYNC_VFR ;
} else
format_video_sync = ( s - > oformat - > flags & AVFMT_VARIABLE_FPS ) ? ( ( s - > oformat - > flags & AVFMT_NOTIMESTAMPS ) ? VSYNC_PASSTHROUGH : VSYNC_VFR ) : VSYNC_CFR ;
if ( ist
& & format_video_sync = = VSYNC_CFR
& & input_files [ ist - > file_index ] - > ctx - > nb_streams = = 1
& & input_files [ ist - > file_index ] - > input_ts_offset = = 0 ) {
format_video_sync = VSYNC_VSCFR ;
}
}
switch ( format_video_sync ) {
case VSYNC_VSCFR :
if ( ost - > frame_number = = 0 & & delta - duration > = 0.5 ) {
av_log ( NULL , AV_LOG_DEBUG , " Not duplicating %d initial frames \n " , ( int ) lrintf ( delta - duration ) ) ;
delta = duration ;
ost - > sync_opts = lrint ( sync_ipts ) ;
}
case VSYNC_CFR :
// FIXME set to 0.5 after we fix some dts/pts bugs like in avidec.c
if ( delta < - 1.1 )
@ -2365,7 +2377,7 @@ static int transcode_init(void)
if ( ost - > filter & & ! ( codec - > time_base . num & & codec - > time_base . den ) )
codec - > time_base = ost - > filter - > filter - > inputs [ 0 ] - > time_base ;
if ( av_q2d ( codec - > time_base ) < 0.001 & & video_sync_method ! = VSYNC_PASSTHROUGH
& & ( video_sync_method = = VSYNC_CFR | | ( video_sync_method = = VSYNC_AUTO & & ! ( oc - > oformat - > flags & AVFMT_VARIABLE_FPS ) ) ) ) {
& & ( video_sync_method = = VSYNC_CFR | | video_sync_method = = VSYNC_VSCFR | | ( video_sync_method = = VSYNC_AUTO & & ! ( oc - > oformat - > flags & AVFMT_VARIABLE_FPS ) ) ) ) {
av_log ( oc , AV_LOG_WARNING , " Frame rate very high for a muxer not efficiently supporting it. \n "
" Please consider specifying a lower framerate, a different muxer or -vsync 2 \n " ) ;
}