Commit 9af57553 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Cosmetic fix (excessive indentation)

parent 35c8e86d
...@@ -788,117 +788,108 @@ static void ALSAFill( aout_instance_t * p_aout ) ...@@ -788,117 +788,108 @@ static void ALSAFill( aout_instance_t * p_aout )
mtime_t next_date; mtime_t next_date;
/* Fill in the buffer until space or audio output buffer shortage */ /* Fill in the buffer until space or audio output buffer shortage */
/* Get the status */
i_snd_rc = snd_pcm_status( p_sys->p_snd_pcm, p_status );
if( i_snd_rc < 0 )
{ {
/* Get the status */ msg_Err( p_aout, "cannot get device status" );
i_snd_rc = snd_pcm_status( p_sys->p_snd_pcm, p_status ); goto error;
if( i_snd_rc < 0 ) }
{
msg_Err( p_aout, "unable to get the device's status (%s)",
snd_strerror( i_snd_rc ) );
msleep( p_sys->i_period_time >> 1 ); /* Handle buffer underruns and get the status again */
return; if( snd_pcm_status_get_state( p_status ) == SND_PCM_STATE_XRUN )
} {
/* Prepare the device */
i_snd_rc = snd_pcm_prepare( p_sys->p_snd_pcm );
/* Handle buffer underruns and get the status again */ if( i_snd_rc )
if( snd_pcm_status_get_state( p_status ) == SND_PCM_STATE_XRUN )
{ {
/* Prepare the device */ msg_Err( p_aout, "cannot recover from buffer underrun" );
i_snd_rc = snd_pcm_prepare( p_sys->p_snd_pcm ); goto error;
}
if( i_snd_rc == 0 ) msg_Dbg( p_aout, "recovered from buffer underrun" );
{
msg_Dbg( p_aout, "recovered from buffer underrun" );
/* Get the new status */ /* Get the new status */
i_snd_rc = snd_pcm_status( p_sys->p_snd_pcm, p_status ); i_snd_rc = snd_pcm_status( p_sys->p_snd_pcm, p_status );
if( i_snd_rc < 0 ) if( i_snd_rc < 0 )
{ {
msg_Err( p_aout, "unable to get the device's status after " msg_Err( p_aout, "cannot get device status after recovery" );
"recovery (%s)", snd_strerror( i_snd_rc ) ); goto error;
}
msleep( p_sys->i_period_time >> 1 );
return;
}
}
else
{
msg_Err( p_aout, "unable to recover from buffer underrun" );
msleep( p_sys->i_period_time >> 1 ); /* Underrun, try to recover as quickly as possible */
return; next_date = mdate();
} }
else
{
/* Here the device should be in RUNNING state.
* p_status is valid. */
/* Underrun, try to recover as quickly as possible */ #if 0
next_date = mdate(); /* This apparently does not work correctly in Alsa 1.0.11 */
snd_pcm_status_get_tstamp( p_status, &ts_next );
next_date = (mtime_t)ts_next.tv_sec * 1000000 + ts_next.tv_usec;
if( next_date )
{
next_date += (mtime_t)snd_pcm_status_get_delay(p_status)
* 1000000 / p_aout->output.output.i_rate;
} }
else else
{
/* Here the device should be in RUNNING state.
* p_status is valid. */
#if 0
/* This apparently does not work correctly in Alsa 1.0.11 */
snd_pcm_status_get_tstamp( p_status, &ts_next );
next_date = (mtime_t)ts_next.tv_sec * 1000000 + ts_next.tv_usec;
if( next_date )
{
next_date += (mtime_t)snd_pcm_status_get_delay(p_status)
* 1000000 / p_aout->output.output.i_rate;
}
else
#endif #endif
{ {
/* With screwed ALSA drivers the timestamp is always zero; /* With screwed ALSA drivers the timestamp is always zero;
* use another method then */ * use another method then */
snd_pcm_sframes_t delay = 0; snd_pcm_sframes_t delay = 0;
snd_pcm_delay( p_sys->p_snd_pcm, &delay ); snd_pcm_delay( p_sys->p_snd_pcm, &delay );
next_date = mdate() + (mtime_t)(delay) * 1000000 / next_date = mdate() + (mtime_t)(delay) * 1000000
p_aout->output.output.i_rate / p_aout->output.output.i_rate
* p_aout->output.output.i_frame_length; * p_aout->output.output.i_frame_length;
}
} }
}
p_buffer = aout_OutputNextBuffer( p_aout, next_date, p_buffer = aout_OutputNextBuffer( p_aout, next_date,
(p_aout->output.output.i_format == (p_aout->output.output.i_format == VLC_FOURCC('s','p','d','i')) );
VLC_FOURCC('s','p','d','i')) );
/* Audio output buffer shortage -> stop the fill process and wait */ /* Audio output buffer shortage -> stop the fill process and wait */
if( p_buffer == NULL ) if( p_buffer == NULL )
{ goto error;
msleep( p_sys->i_period_time >> 1 );
return;
}
for (;;) for (;;)
{
i_snd_rc = snd_pcm_writei( p_sys->p_snd_pcm, p_buffer->p_buffer,
p_buffer->i_nb_samples );
if( i_snd_rc != -ESTRPIPE )
break;
/* a suspend event occurred
* (stream is suspended and waiting for an application recovery) */
msg_Dbg( p_aout, "entering in suspend mode, trying to resume..." );
while( !p_aout->b_die && !p_aout->p_libvlc->b_die &&
( i_snd_rc = snd_pcm_resume( p_sys->p_snd_pcm ) ) == -EAGAIN )
{ {
i_snd_rc = snd_pcm_writei( p_sys->p_snd_pcm, p_buffer->p_buffer, msleep( 1000000 );
p_buffer->i_nb_samples );
if( i_snd_rc != -ESTRPIPE )
break;
/* a suspend event occurred
* (stream is suspended and waiting for an application recovery) */
msg_Dbg( p_aout, "entering in suspend mode, trying to resume..." );
while( !p_aout->b_die && !p_aout->p_libvlc->b_die &&
( i_snd_rc = snd_pcm_resume( p_sys->p_snd_pcm ) ) == -EAGAIN )
msleep( 100000 );
if( i_snd_rc < 0 )
/* Device does not supprot resuming, restart it */
i_snd_rc = snd_pcm_prepare( p_sys->p_snd_pcm );
} }
if( i_snd_rc < 0 ) if( i_snd_rc < 0 )
{ /* Device does not supprot resuming, restart it */
msg_Err( p_aout, "write failed (%s)", i_snd_rc = snd_pcm_prepare( p_sys->p_snd_pcm );
snd_strerror( i_snd_rc ) );
}
aout_BufferFree( p_buffer );
} }
if( i_snd_rc < 0 )
msg_Err( p_aout, "cannot write: %s", snd_strerror( i_snd_rc ) );
aout_BufferFree( p_buffer );
return;
error:
if( i_snd_rc < 0 )
msg_Err( p_aout, "ALSA error: %s", snd_strerror( i_snd_rc ) );
msleep( p_sys->i_period_time >> 1 );
} }
static void GetDevicesForCard( module_config_t *p_item, int i_card ); static void GetDevicesForCard( module_config_t *p_item, int i_card );
......
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