return NULL;
p_input->b_error = true;
- p_input->i_pause_date = VLC_TS_INVALID;
aout_FormatPrepare( p_format );
aout_owner_t *owner = aout_owner(p_aout);
aout_lock( p_aout );
assert (owner->input == NULL);
- owner->input = p_input;
var_Destroy( p_aout, "audio-device" );
var_Destroy( p_aout, "audio-channels" );
/* Recreate the output using the new format. */
if( aout_OutputNew( p_aout, p_format ) < 0 )
-#warning Input without output and mixer = bad idea.
- goto out;
+ goto error;
assert (owner->volume.mixer == NULL);
- owner->volume.mixer = aout_MixerNew (p_aout, &owner->mixer_format);
+ owner->volume.mixer = aout_MixerNew (p_aout, owner->mixer_format.i_format);
if (owner->volume.mixer == NULL)
{
aout_OutputDelete( p_aout );
-#warning Memory leak.
- p_input = NULL;
- goto out;
+ goto error;
}
+ owner->input = p_input;
aout_InputNew( p_aout, p_input, p_request_vout );
-out:
aout_unlock( p_aout );
return p_input;
+error:
+ aout_unlock( p_aout );
+ free( p_input );
+ return NULL;
}
/*****************************************************************************
aout_lock( p_aout );
assert (owner->input == p_input);
+ /* XXX: Should the input date be offset by the pause duration instead? */
+ date_Set (&p_input->date, VLC_TS_INVALID);
aout_OutputPause( p_aout, b_paused, i_date );
-
- if( b_paused )
- {
- p_input->i_pause_date = i_date;
- }
- else
- {
- assert( p_input->i_pause_date != VLC_TS_INVALID );
-
- mtime_t i_duration = i_date - p_input->i_pause_date;
- p_input->i_pause_date = VLC_TS_INVALID;
- aout_FifoMoveDates( &p_input->fifo, i_duration );
- }
aout_unlock( p_aout );
}
void aout_DecFlush( audio_output_t *p_aout, aout_input_t *p_input )
{
aout_lock( p_aout );
- aout_FifoReset( &p_input->fifo );
+ date_Set (&p_input->date, VLC_TS_INVALID);
aout_OutputFlush( p_aout, false );
aout_unlock( p_aout );
}
mtime_t end_date;
aout_lock( p_aout );
- end_date = aout_FifoNextStart( &p_input->fifo );
+ /* FIXME: tell output to drain */
+ end_date = date_Get (&p_input->date);
aout_unlock( p_aout );
return end_date == VLC_TS_INVALID || end_date <= mdate();
}