]> git.sesse.net Git - vlc/commitdiff
transcode: simplify drift calculation
authorRafaël Carré <funman@videolan.org>
Tue, 31 Jul 2012 09:02:33 +0000 (11:02 +0200)
committerRafaël Carré <funman@videolan.org>
Tue, 31 Jul 2012 09:13:02 +0000 (11:13 +0200)
Show drift value in debug log

modules/stream_out/transcode/audio.c
modules/stream_out/transcode/video.c

index a041e065410e058da97b05edc893114da4a63e22..f54aa5f6e92852019f4dee460f8e962a8e3466a2 100644 (file)
@@ -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;
index 3ab053edb9b941659498a4b77a57171f5b05e5a1..e8ca26d230094eefb8f0c0fc6b88e0ead0b364b0 100644 (file)
@@ -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;
             }