[vlc-devel] commit: ALSA: save one mdate() call per (debug) loop ( Rémi Denis-Courmont )

git version control git at videolan.org
Sat Oct 24 15:26:39 CEST 2009


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Oct 24 15:39:22 2009 +0300| [19eb1b4582878f7e45e0128a41e79ecab565bbcc] | committer: Rémi Denis-Courmont 

ALSA: save one mdate() call per (debug) loop

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

 modules/audio_output/alsa.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/modules/audio_output/alsa.c b/modules/audio_output/alsa.c
index 0c25cac..aecf770 100644
--- a/modules/audio_output/alsa.c
+++ b/modules/audio_output/alsa.c
@@ -820,25 +820,26 @@ static void ALSAFill( aout_instance_t * p_aout )
         if( delay == 0 ) /* workaround buggy alsa drivers */
             if( snd_pcm_delay( p_sys->p_snd_pcm, &delay ) < 0 )
                 delay = 0; /* FIXME: use a positive minimal delay */
-        int i_bytes = snd_pcm_frames_to_bytes( p_sys->p_snd_pcm, delay );
-        next_date = mdate() + ( (mtime_t)i_bytes * 1000000
+
+        size_t i_bytes = snd_pcm_frames_to_bytes( p_sys->p_snd_pcm, delay );
+        mtime_t delay_us = CLOCK_FREQ * i_bytes
                 / p_aout->output.output.i_bytes_per_frame
                 / p_aout->output.output.i_rate
-                * p_aout->output.output.i_frame_length );
+                * p_aout->output.output.i_frame_length;
 
 #ifdef ALSA_DEBUG
         snd_pcm_state_t state = snd_pcm_status_get_state( p_status );
         if( state != SND_PCM_STATE_RUNNING )
             msg_Err( p_aout, "pcm status (%d) != RUNNING", state );
 
-        msg_Dbg( p_aout, "Delay is %ld frames (%d bytes)", delay, i_bytes );
+        msg_Dbg( p_aout, "Delay is %ld frames (%zu bytes)", delay, i_bytes );
 
         msg_Dbg( p_aout, "Bytes per frame: %d", p_aout->output.output.i_bytes_per_frame );
         msg_Dbg( p_aout, "Rate: %d", p_aout->output.output.i_rate );
         msg_Dbg( p_aout, "Frame length: %d", p_aout->output.output.i_frame_length );
-
-        msg_Dbg( p_aout, "Next date is in %d microseconds", (int)(next_date - mdate()) );
+        msg_Dbg( p_aout, "Next date: in %"PRId64" microseconds", delay_us );
 #endif
+        next_date = mdate() + delay_us;
     }
 
     p_buffer = aout_OutputNextBuffer( p_aout, next_date,




More information about the vlc-devel mailing list