audio_sample_format_t * p_format )
{
/* Retrieve user defaults. */
- int i_rate = config_GetInt( p_aout, "aout-rate" );
+ int i_rate = var_InheritInteger( p_aout, "aout-rate" );
vlc_value_t val, text;
/* kludge to avoid a fpu error when rate is 0... */
if( i_rate == 0 ) i_rate = -1;
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 );
p_aout->output.b_starving = 0;
+ p_aout->output.fifo.p_first = p_buffer->p_next;
+ if ( p_buffer->p_next == NULL )
+ {
+ 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) ) )
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++ )
{
aout_FifoMoveDates( p_aout, p_fifo, difference );
}
-
- aout_FifoMoveDates( p_aout, &p_aout->output.fifo, difference );
aout_unlock_input_fifos( p_aout );
}
+ else
+ aout_unlock_output_fifo( p_aout );
- p_aout->output.fifo.p_first = p_buffer->p_next;
- if ( p_buffer->p_next == NULL )
- {
- p_aout->output.fifo.pp_last = &p_aout->output.fifo.p_first;
- }
-
- aout_unlock_output_fifo( p_aout );
return p_buffer;
}