[vlc-commits] aout: do not compute the same difference three times

Rémi Denis-Courmont git at videolan.org
Sat Apr 9 19:10:03 CEST 2011


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Apr  9 19:59:28 2011 +0300| [97c0744fee3247d048d60786f176fed37a1fafb4] | committer: Rémi Denis-Courmont

aout: do not compute the same difference three times

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=97c0744fee3247d048d60786f176fed37a1fafb4
---

 src/audio_output/output.c |   31 ++++++++++++++-----------------
 1 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/src/audio_output/output.c b/src/audio_output/output.c
index a427467..368d185 100644
--- a/src/audio_output/output.c
+++ b/src/audio_output/output.c
@@ -341,30 +341,27 @@ aout_buffer_t * aout_OutputNextBuffer( aout_instance_t * p_aout,
         p_aout->output.fifo.pp_last = &p_aout->output.fifo.p_first;
     }
 
-    if ( !b_can_sleek &&
-          ( (p_buffer->i_pts - start_date > AOUT_PTS_TOLERANCE)
-             || (start_date - p_buffer->i_pts > AOUT_PTS_TOLERANCE) ) )
+    if( !b_can_sleek )
     {
-        /* Try to compensate the drift by doing some resampling. */
-        int i;
         mtime_t difference = start_date - p_buffer->i_pts;
-        msg_Warn( p_aout, "output date isn't PTS date, requesting "
-                  "resampling (%"PRId64")", difference );
 
-        aout_FifoMoveDates( p_aout, &p_aout->output.fifo, difference );
-        aout_unlock_output_fifo( p_aout );
-
-        aout_lock_input_fifos( p_aout );
-        for ( i = 0; i < p_aout->i_nb_inputs; i++ )
+        if( difference > AOUT_PTS_TOLERANCE
+         || difference < -AOUT_PTS_TOLERANCE )
         {
-            aout_fifo_t * p_fifo = &p_aout->pp_inputs[i]->mixer.fifo;
+            /* Try to compensate the drift by doing some resampling. */
+            msg_Warn( p_aout, "output date isn't PTS date, requesting "
+                      "resampling (%"PRId64")", difference );
 
+            aout_FifoMoveDates( p_aout, &p_aout->output.fifo, difference );
+            aout_unlock_output_fifo( p_aout );
+
+            aout_lock_input_fifos( p_aout );
+            aout_fifo_t *p_fifo = &p_aout->pp_inputs[0]->mixer.fifo;
             aout_FifoMoveDates( p_aout, p_fifo, difference );
+            aout_unlock_input_fifos( p_aout );
+            return p_buffer;
         }
-        aout_unlock_input_fifos( p_aout );
     }
-    else
-        aout_unlock_output_fifo( p_aout );
-
+    aout_unlock_output_fifo( p_aout );
     return p_buffer;
 }



More information about the vlc-commits mailing list