return NULL;
p_input->b_error = true;
- p_input->b_paused = false;
- p_input->i_pause_date = 0;
+ p_input->i_pause_date = VLC_TS_INVALID;
aout_FormatPrepare( p_format );
void aout_DecChangePause( audio_output_t *p_aout, aout_input_t *p_input, bool b_paused, mtime_t i_date )
{
- mtime_t i_duration = 0;
-
aout_lock( p_aout );
assert( p_aout->p_input == p_input );
- assert( !p_input->b_paused || !b_paused );
- if( p_input->b_paused )
+
+ if( b_paused )
{
- i_duration = i_date - p_input->i_pause_date;
+ p_input->i_pause_date = i_date;
}
- p_input->b_paused = b_paused;
- p_input->i_pause_date = i_date;
-
- if( i_duration != 0 )
+ 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_FifoMoveDates( &p_aout->fifo, i_duration );
}
+
aout_OutputPause( p_aout, b_paused, i_date );
aout_unlock( p_aout );
}
/* A little trick to avoid loosing our input fifo and properties */
aout_fifo_t fifo = p_input->fifo;
- bool b_paused = p_input->b_paused;
mtime_t i_pause_date = p_input->i_pause_date;
aout_FifoInit( p_aout, &p_input->fifo, p_aout->mixer_format.i_rate );
aout_InputNew( p_aout, p_input, &p_input->request_vout );
p_input->fifo = fifo;
- p_input->b_paused = b_paused;
p_input->i_pause_date = i_pause_date;
p_input->b_restart = false;