[vlc-commits] transcode: simplify drift calculation
Rafaël Carré
git at videolan.org
Tue Jul 31 11:14:03 CEST 2012
vlc | branch: master | Rafaël Carré <funman at videolan.org> | 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;
}
More information about the vlc-commits
mailing list