aout_lock( p_aout );
assert( p_aout->p_input == p_input );
+ aout_OutputPause( p_aout, b_paused, i_date );
+
if( b_paused )
{
p_input->i_pause_date = i_date;
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 );
}
{
aout_lock( p_aout );
aout_FifoReset( &p_input->fifo );
- aout_FifoReset( &p_aout->fifo );
aout_OutputFlush( p_aout, false );
aout_unlock( p_aout );
}
msg_Warn( p_aout, "computed PTS is out of range (%"PRId64"), "
"clearing out", now - start_date );
aout_FifoReset( &p_input->fifo );
- aout_FifoReset( &p_aout->fifo );
+ aout_OutputFlush( p_aout, false );
if ( p_input->i_resampling_type != AOUT_RESAMPLING_NONE )
msg_Warn( p_aout, "timing screwed, stopping resampling" );
inputResamplingStop( p_input );
msg_Warn( p_aout, "buffer way too early (%"PRId64"), clearing queue",
drift );
aout_FifoReset( &p_input->fifo );
- aout_FifoReset( &p_aout->fifo );
+ aout_OutputFlush( p_aout, false );
if ( p_input->i_resampling_type != AOUT_RESAMPLING_NONE )
msg_Warn( p_aout, "timing screwed, stopping resampling" );
inputResamplingStop( p_input );
if( aout->pf_pause != NULL )
aout->pf_pause( aout, pause, date );
+ if( !pause )
+ {
+ mtime_t duration = date - aout->p_input->i_pause_date;
+ /* XXX: ^ onk onk! gruik! ^ */
+ aout_FifoMoveDates( &aout->fifo, duration );
+ }
}
/**
if( aout->pf_flush != NULL )
aout->pf_flush( aout, wait );
+ aout_FifoReset( &aout->fifo );
}