p_aout->output.output.i_rate = i_rate;
aout_FormatPrepare( &p_aout->output.output );
- aout_lock_output_fifo( p_aout );
-
/* Find the best output plug-in. */
p_aout->output.p_module = module_need( p_aout, "audio output", "$aout", false );
if ( p_aout->output.p_module == NULL )
{
msg_Err( p_aout, "no suitable audio output module" );
- aout_unlock_output_fifo( p_aout );
return -1;
}
aout_FormatPrepare( &p_aout->output.output );
+ aout_lock_output_fifo( p_aout );
+
/* Prepare FIFO. */
aout_FifoInit( p_aout, &p_aout->output.fifo,
p_aout->output.output.i_rate );
{
/* Non-S/PDIF mixer only deals with float32 or fixed32. */
p_aout->mixer_format.i_format
- = (vlc_CPU() & CPU_CAPABILITY_FPU) ?
- VLC_CODEC_FL32 : VLC_CODEC_FI32;
+ = HAVE_FPU ? VLC_CODEC_FL32 : VLC_CODEC_FI32;
aout_FormatPrepare( &p_aout->mixer_format );
}
else
*****************************************************************************/
void aout_OutputPlay( aout_instance_t * p_aout, aout_buffer_t * p_buffer )
{
- aout_FiltersPlay( p_aout, p_aout->output.pp_filters,
- p_aout->output.i_nb_filters,
+ aout_FiltersPlay( p_aout->output.pp_filters, p_aout->output.i_nb_filters,
&p_buffer );
- if( p_buffer->i_nb_bytes == 0 )
+ if( !p_buffer )
+ return;
+ if( p_buffer->i_buffer == 0 )
{
- aout_BufferFree( p_buffer );
+ block_Release( p_buffer );
return;
}
{
msg_Dbg( p_aout, "audio output is too slow (%"PRId64"), "
"trashing %"PRId64"us", mdate() - p_buffer->i_pts,
- p_buffer->end_date - p_buffer->i_pts );
+ p_buffer->i_length );
p_buffer = p_buffer->p_next;
aout_BufferFree( p_aout->output.fifo.p_first );
p_aout->output.fifo.p_first = p_buffer;
/* Here we suppose that all buffers have the same duration - this is
* generally true, and anyway if it's wrong it won't be a disaster.
*/
- if ( p_buffer->i_pts > start_date
- + (p_buffer->end_date - p_buffer->i_pts) )
+ if ( p_buffer->i_pts > start_date + p_buffer->i_length )
/*
* + AOUT_PTS_TOLERANCE )
* There is no reason to want that, it just worsen the scheduling of