vlc | branch: master | Francois Cartegnie <[email protected]> | Tue Aug 7 20:13:00 2018 +0200| [bc243c4db9d32bcc6d2af35f06d14880c738d79b] | committer: Francois Cartegnie
packetizer: mpeg4video: workaround missing modulo_time_base > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=bc243c4db9d32bcc6d2af35f06d14880c738d79b --- modules/packetizer/mpeg4video.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/packetizer/mpeg4video.c b/modules/packetizer/mpeg4video.c index a3303fcd8c..5a0f53abe3 100644 --- a/modules/packetizer/mpeg4video.c +++ b/modules/packetizer/mpeg4video.c @@ -532,6 +532,15 @@ static int ParseVOP( decoder_t *p_dec, block_t *p_vop ) (i_modulo_time_base * p_sys->i_fps_num); } + int64_t i_time_diff = (i_time_ref + i_time_increment) - (p_sys->i_last_time + p_sys->i_last_timeincr); + if( p_sys->i_fps_num && i_modulo_time_base == 0 && i_time_diff < 0 && -i_time_diff > p_sys->i_fps_num ) + { + msg_Warn(p_dec, "missing modulo_time_base update"); + i_modulo_time_base += -i_time_diff / p_sys->i_fps_num; + p_sys->i_time_ref += (i_modulo_time_base * p_sys->i_fps_num); + p_sys->i_time_ref += p_sys->i_last_timeincr % p_sys->i_fps_num; + i_time_ref = p_sys->i_time_ref; + } if( p_sys->i_fps_num < 5 && /* Work-around buggy streams */ p_dec->fmt_in.video.i_frame_rate > 0 && @@ -542,10 +551,10 @@ static int ParseVOP( decoder_t *p_dec, block_t *p_vop ) p_dec->fmt_in.video.i_frame_rate; } else if( p_sys->i_fps_num ) - p_sys->i_interpolated_pts += - ( CLOCK_FREQ * (i_time_ref + i_time_increment - - p_sys->i_last_time - p_sys->i_last_timeincr) / - p_sys->i_fps_num ); + { + i_time_diff = (i_time_ref + i_time_increment) - (p_sys->i_last_time + p_sys->i_last_timeincr); + p_sys->i_interpolated_pts += ( CLOCK_FREQ * i_time_diff / p_sys->i_fps_num ); + } #if 0 msg_Err( p_dec, "interp dts/pts (%"PRId64",%"PRId64"), dts/pts (%"PRId64",%"PRId64") %"PRId64" mod %d inc %"PRId64, _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
