vlc | branch: master | Rafaël Carré <[email protected]> | Tue Jul 31 11:02:33 2012 +0200| [090a2cce88f3b563a394e47da6e6f268b3abf510] | committer: Rafaël Carré
transcode: simplify drift calculation Show drift value in debug log > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=090a2cce88f3b563a394e47da6e6f268b3abf510 --- modules/stream_out/transcode/audio.c | 16 +++++++++------- modules/stream_out/transcode/video.c | 22 +++++++++++++--------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/modules/stream_out/transcode/audio.c b/modules/stream_out/transcode/audio.c index a041e06..f54aa5f 100644 --- a/modules/stream_out/transcode/audio.c +++ b/modules/stream_out/transcode/audio.c @@ -328,17 +328,19 @@ int transcode_audio_process( sout_stream_t *p_stream, { if( p_sys->b_master_sync ) { - mtime_t i_dts = date_Get( &id->interpolated_pts ) + 1; - if ( p_audio_buf->i_pts - i_dts > MASTER_SYNC_MAX_DRIFT - || p_audio_buf->i_pts - i_dts < -MASTER_SYNC_MAX_DRIFT ) + mtime_t i_pts = date_Get( &id->interpolated_pts ) + 1; + mtime_t i_drift = p_audio_buf->i_pts - i_pts; + if (i_drift > MASTER_SYNC_MAX_DRIFT || i_drift < -MASTER_SYNC_MAX_DRIFT) { - msg_Dbg( p_stream, "drift is too high, resetting master sync" ); + msg_Dbg( p_stream, + "drift is too high (%"PRId64"), resetting master sync", + i_drift ); date_Set( &id->interpolated_pts, p_audio_buf->i_pts ); - i_dts = p_audio_buf->i_pts + 1; + i_pts = p_audio_buf->i_pts + 1; } - p_sys->i_master_drift = p_audio_buf->i_pts - i_dts; + p_sys->i_master_drift = p_audio_buf->i_pts - i_pts; date_Increment( &id->interpolated_pts, p_audio_buf->i_nb_samples ); - p_audio_buf->i_pts -= p_sys->i_master_drift; + p_audio_buf->i_pts = i_pts; } p_audio_buf->i_dts = p_audio_buf->i_pts; diff --git a/modules/stream_out/transcode/video.c b/modules/stream_out/transcode/video.c index 3ab053e..e8ca26d 100644 --- a/modules/stream_out/transcode/video.c +++ b/modules/stream_out/transcode/video.c @@ -601,15 +601,16 @@ int transcode_video_process( sout_stream_t *p_stream, sout_stream_id_t *id, if( p_sys->b_master_sync ) { - mtime_t i_video_drift; mtime_t i_master_drift = p_sys->i_master_drift; - mtime_t i_pts; + mtime_t i_pts = date_Get( &id->interpolated_pts ) + 1; + mtime_t i_video_drift = p_pic->date - i_pts; - i_pts = date_Get( &id->interpolated_pts ) + 1; - if ( unlikely( p_pic->date - i_pts > MASTER_SYNC_MAX_DRIFT - || p_pic->date - i_pts < -MASTER_SYNC_MAX_DRIFT ) ) + if ( unlikely( i_video_drift > MASTER_SYNC_MAX_DRIFT + || i_video_drift < -MASTER_SYNC_MAX_DRIFT ) ) { - msg_Dbg( p_stream, "drift is too high, resetting master sync" ); + msg_Dbg( p_stream, + "drift is too high (%"PRId64", resetting master sync", + i_video_drift ); date_Set( &id->interpolated_pts, p_pic->date ); i_pts = p_pic->date + 1; } @@ -717,10 +718,13 @@ int transcode_video_process( sout_stream_t *p_stream, sout_stream_id_t *id, if( p_sys->b_master_sync ) { mtime_t i_pts = date_Get( &id->interpolated_pts ) + 1; - if (unlikely ( p_pic->date - i_pts > MASTER_SYNC_MAX_DRIFT - || p_pic->date - i_pts < -MASTER_SYNC_MAX_DRIFT ) ) + mtime_t i_video_drift = p_pic->date - i_pts; + if (unlikely ( i_video_drift > MASTER_SYNC_MAX_DRIFT + || i_video_drift < -MASTER_SYNC_MAX_DRIFT ) ) { - msg_Dbg( p_stream, "drift is too high, resetting master sync" ); + msg_Dbg( p_stream, + "drift is too high (%"PRId64"), resetting master sync", + i_video_drift ); date_Set( &id->interpolated_pts, p_pic->date ); i_pts = p_pic->date + 1; } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
