X-Git-Url: https://git.videolan.org/gitweb.cgi/vlc.git/?p=vlc.git;p=vlc.git;a=blobdiff_plain;f=modules%2Faudio_output%2Fesd.c;h=cbf8130117b8311153dfe3edca1f1eed54958551;hp=4db499ecd7407a7e343e309bea42ed2838f773dc;hb=1c13a9874579b0640d294389a5f888b81a8926fc;hpb=eb93d56d8d76be74193a77ee163462c14af92959;ds=sidebyside diff --git a/modules/audio_output/esd.c b/modules/audio_output/esd.c index 4db499ecd7..cbf8130117 100644 --- a/modules/audio_output/esd.c +++ b/modules/audio_output/esd.c @@ -2,7 +2,7 @@ * esd.c : EsounD module ***************************************************************************** * Copyright (C) 2000, 2001 VideoLAN - * $Id: esd.c,v 1.4 2002/08/14 00:23:59 massiot Exp $ + * $Id: esd.c,v 1.8 2002/08/19 23:07:30 sam Exp $ * * Authors: Samuel Hocevar * @@ -58,7 +58,7 @@ static int Open ( vlc_object_t * ); static void Close ( vlc_object_t * ); static int SetFormat ( aout_instance_t * ); -static void Play ( aout_instance_t *, aout_buffer_t * ); +static void Play ( aout_instance_t * ); static int ESDThread ( aout_instance_t * ); /***************************************************************************** @@ -146,11 +146,15 @@ static int SetFormat( aout_instance_t *p_aout ) /* ESD latency is calculated for 44100 Hz. We don't have any way to get the * number of buffered samples, so I assume ESD_BUF_SIZE/2 */ p_sys->latency = - (mtime_t)( esd_get_latency( esd_open_sound(NULL) ) + ESD_BUF_SIZE / 2 - * p_aout->output.output.i_rate / ESD_DEFAULT_RATE - * aout_FormatTo( &p_aout->output.output, 1 ) ) + (mtime_t)( esd_get_latency( esd_open_sound(NULL) ) + ESD_BUF_SIZE/2 + * p_aout->output.output.i_bytes_per_frame + * p_aout->output.output.i_rate + / p_aout->output.output.i_frame_length + / ESD_DEFAULT_RATE ) * (mtime_t)1000000 - / (mtime_t)aout_FormatToByterate( &p_aout->output.output ); + / p_aout->output.output.i_bytes_per_frame + / p_aout->output.output.i_rate + * p_aout->output.output.i_frame_length; p_sys->b_initialized = VLC_TRUE; @@ -160,9 +164,8 @@ static int SetFormat( aout_instance_t *p_aout ) /***************************************************************************** * Play: queue a buffer for playing by ESDThread *****************************************************************************/ -static void Play( aout_instance_t *p_aout, aout_buffer_t * p_buffer ) +static void Play( aout_instance_t *p_aout ) { - aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer ); } /***************************************************************************** @@ -201,7 +204,7 @@ static int ESDThread( aout_instance_t * p_aout ) /* Get the presentation date of the next write() operation. It * is equal to the current date + buffered samples + esd latency */ - p_buffer = aout_OutputNextBuffer( p_aout, mdate() + p_sys->latency ); + p_buffer = aout_OutputNextBuffer( p_aout, mdate() + p_sys->latency, 0 ); if ( p_buffer != NULL ) { @@ -210,9 +213,9 @@ static int ESDThread( aout_instance_t * p_aout ) } else { - i_size = aout_FormatToByterate( &p_aout->output.output ) - * ESD_BUF_SIZE * 2 - / p_aout->output.output.i_rate; + i_size = ESD_BUF_SIZE * 2 + / p_aout->output.output.i_frame_length + * p_aout->output.output.i_bytes_per_frame; p_bytes = alloca( i_size ); memset( p_bytes, 0, i_size ); }