Commit 090a2cce authored by Rafaël Carré's avatar Rafaël Carré

transcode: simplify drift calculation

Show drift value in debug log
parent 97acb225
...@@ -328,17 +328,19 @@ int transcode_audio_process( sout_stream_t *p_stream, ...@@ -328,17 +328,19 @@ int transcode_audio_process( sout_stream_t *p_stream,
{ {
if( p_sys->b_master_sync ) if( p_sys->b_master_sync )
{ {
mtime_t i_dts = date_Get( &id->interpolated_pts ) + 1; mtime_t i_pts = date_Get( &id->interpolated_pts ) + 1;
if ( p_audio_buf->i_pts - i_dts > MASTER_SYNC_MAX_DRIFT mtime_t i_drift = p_audio_buf->i_pts - i_pts;
|| p_audio_buf->i_pts - i_dts < -MASTER_SYNC_MAX_DRIFT ) 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 ); 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 ); 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; p_audio_buf->i_dts = p_audio_buf->i_pts;
......
...@@ -601,15 +601,16 @@ int transcode_video_process( sout_stream_t *p_stream, sout_stream_id_t *id, ...@@ -601,15 +601,16 @@ int transcode_video_process( sout_stream_t *p_stream, sout_stream_id_t *id,
if( p_sys->b_master_sync ) if( p_sys->b_master_sync )
{ {
mtime_t i_video_drift;
mtime_t i_master_drift = p_sys->i_master_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( i_video_drift > MASTER_SYNC_MAX_DRIFT
if ( unlikely( p_pic->date - i_pts > MASTER_SYNC_MAX_DRIFT || i_video_drift < -MASTER_SYNC_MAX_DRIFT ) )
|| p_pic->date - i_pts < -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 ); date_Set( &id->interpolated_pts, p_pic->date );
i_pts = p_pic->date + 1; i_pts = p_pic->date + 1;
} }
...@@ -717,10 +718,13 @@ int transcode_video_process( sout_stream_t *p_stream, sout_stream_id_t *id, ...@@ -717,10 +718,13 @@ int transcode_video_process( sout_stream_t *p_stream, sout_stream_id_t *id,
if( p_sys->b_master_sync ) if( p_sys->b_master_sync )
{ {
mtime_t i_pts = date_Get( &id->interpolated_pts ) + 1; mtime_t i_pts = date_Get( &id->interpolated_pts ) + 1;
if (unlikely ( p_pic->date - i_pts > MASTER_SYNC_MAX_DRIFT mtime_t i_video_drift = p_pic->date - i_pts;
|| 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 ); date_Set( &id->interpolated_pts, p_pic->date );
i_pts = p_pic->date + 1; i_pts = p_pic->date + 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment