return NULL;
}
-void input_EsOutDiscontinuity( es_out_t *out, vlc_bool_t b_flush, vlc_bool_t b_audio )
+static void EsOutDiscontinuity( es_out_t *out, vlc_bool_t b_flush, vlc_bool_t b_audio )
{
es_out_sys_t *p_sys = out->p_sys;
int i;
es_out_sys_t *p_sys = out->p_sys;
int i;
- input_EsOutDiscontinuity( out, VLC_FALSE, VLC_FALSE );
+ EsOutDiscontinuity( out, VLC_FALSE, VLC_FALSE );
for( i = 0; i < p_sys->i_pgrm; i++ )
input_ClockSetRate( p_sys->p_input, &p_sys->pgrm[i]->clock );
{
/* Send discontinuity to decoders (it will allow them to flush
* * if implemented */
- input_EsOutDiscontinuity( out, VLC_FALSE, VLC_FALSE );
+ EsOutDiscontinuity( out, VLC_FALSE, VLC_FALSE );
}
else
{
es_out_Control( out, ES_OUT_RESET_PCR );
}
}
+void input_EsOutChangePosition( es_out_t *out )
+{
+ //es_out_sys_t *p_sys = out->p_sys;
+
+ es_out_Control( out, ES_OUT_RESET_PCR );
+ EsOutDiscontinuity( out, VLC_TRUE, VLC_FALSE );
+}
vlc_bool_t input_EsOutDecodersEmpty( es_out_t *out )
{
if( f_pos < 0.0 ) f_pos = 0.0;
if( f_pos > 1.0 ) f_pos = 1.0;
/* Reset the decoders states and clock sync (before calling the demuxer */
- es_out_Control( p_input->p->p_es_out, ES_OUT_RESET_PCR );
- input_EsOutDiscontinuity( p_input->p->p_es_out, VLC_TRUE, VLC_FALSE );
+ input_EsOutChangePosition( p_input->p->p_es_out );
if( demux2_Control( p_input->p->input.p_demux, DEMUX_SET_POSITION,
f_pos ) )
{
if( i_time < 0 ) i_time = 0;
/* Reset the decoders states and clock sync (before calling the demuxer */
- es_out_Control( p_input->p->p_es_out, ES_OUT_RESET_PCR );
- input_EsOutDiscontinuity( p_input->p->p_es_out, VLC_TRUE, VLC_FALSE );
+ input_EsOutChangePosition( p_input->p->p_es_out );
i_ret = demux2_Control( p_input->p->input.p_demux,
DEMUX_SET_TIME, i_time );
if( i_title >= 0 && i_title < p_input->p->input.i_title )
{
- es_out_Control( p_input->p->p_es_out, ES_OUT_RESET_PCR );
- input_EsOutDiscontinuity( p_input->p->p_es_out, VLC_TRUE, VLC_FALSE );
+ input_EsOutChangePosition( p_input->p->p_es_out );
demux2_Control( p_demux, DEMUX_SET_TITLE, i_title );
input_ControlVarTitle( p_input, i_title );
if( i_title >= 0 && i_title < p_input->p->input.i_title )
{
- es_out_Control( p_input->p->p_es_out, ES_OUT_RESET_PCR );
- input_EsOutDiscontinuity( p_input->p->p_es_out, VLC_TRUE, VLC_FALSE );
+ input_EsOutChangePosition( p_input->p->p_es_out );
access2_Control( p_access, ACCESS_SET_TITLE, i_title );
stream_AccessReset( p_input->p->input.p_stream );
if( i_seekpoint >= 0 && i_seekpoint <
p_input->p->input.title[p_demux->info.i_title]->i_seekpoint )
{
- es_out_Control( p_input->p->p_es_out, ES_OUT_RESET_PCR );
- input_EsOutDiscontinuity( p_input->p->p_es_out, VLC_TRUE, VLC_FALSE );
+
+ input_EsOutChangePosition( p_input->p->p_es_out );
demux2_Control( p_demux, DEMUX_SET_SEEKPOINT, i_seekpoint );
}
if( i_seekpoint >= 0 && i_seekpoint <
p_input->p->input.title[p_access->info.i_title]->i_seekpoint )
{
- es_out_Control( p_input->p->p_es_out, ES_OUT_RESET_PCR );
- input_EsOutDiscontinuity( p_input->p->p_es_out, VLC_TRUE, VLC_FALSE );
+ input_EsOutChangePosition( p_input->p->p_es_out );
access2_Control( p_access, ACCESS_SET_SEEKPOINT,
i_seekpoint );
es_out_t *input_EsOutNew( input_thread_t * );
void input_EsOutDelete( es_out_t * );
es_out_id_t *input_EsOutGetFromID( es_out_t *, int i_id );
-void input_EsOutDiscontinuity( es_out_t *, vlc_bool_t b_flush, vlc_bool_t b_audio );
void input_EsOutSetDelay( es_out_t *, int i_cat, int64_t );
void input_EsOutChangeRate( es_out_t * );
void input_EsOutChangeState( es_out_t * );
+void input_EsOutChangePosition( es_out_t * );
vlc_bool_t input_EsOutDecodersEmpty( es_out_t * );
/* clock.c */