/* TODO */
//static void InputGetAttachments( input_thread_t *, input_source_t * );
-static void SlaveDemux( input_thread_t *p_input, bool *pb_demux_polled );
+static void SlaveDemux( input_thread_t *p_input );
static void SlaveSeek( input_thread_t *p_input );
static void InputMetaUser( input_thread_t *p_input, vlc_meta_t *p_meta );
* MainLoopDemux
* It asks the demuxer to demux some data
*/
-static void MainLoopDemux( input_thread_t *p_input, bool *pb_changed, bool *pb_demux_polled, mtime_t i_start_mdate )
+static void MainLoopDemux( input_thread_t *p_input, bool *pb_changed, mtime_t i_start_mdate )
{
int i_ret;
*pb_changed = false;
- *pb_demux_polled = p_input->p->input.p_demux->pf_demux != NULL;
if( ( p_input->p->i_stop > 0 && p_input->p->i_time >= p_input->p->i_stop ) ||
( p_input->p->i_run > 0 && i_start_mdate+p_input->p->i_run < mdate() ) )
}
if( i_ret > 0 && p_input->p->i_slave > 0 )
- {
- bool b_demux_polled;
- SlaveDemux( p_input, &b_demux_polled );
-
- *pb_demux_polled |= b_demux_polled;
- }
+ SlaveDemux( p_input );
}
static int MainLoopTryRepeat( input_thread_t *p_input, mtime_t *pi_start_mdate )
while( vlc_object_alive( p_input ) && !p_input->b_error )
{
- mtime_t i_wakeup = 0;
- bool b_demux_polled = true;
+ mtime_t i_wakeup = -1;
bool b_paused = p_input->p->i_state == PAUSE_S;
/* FIXME if p_input->p->i_state == PAUSE_S the access/access_demux
* is paused -> this may cause problem with some of them
{
bool b_force_update = false;
- MainLoopDemux( p_input, &b_force_update, &b_demux_polled,
- i_start_mdate );
+ MainLoopDemux( p_input, &b_force_update, i_start_mdate );
i_wakeup = es_out_GetWakeup( p_input->p->p_es_out );
if( b_force_update )
{
mtime_t i_deadline = i_wakeup;
- if( b_paused || !b_demux_polled )
- /* FIXME: remove this polling */
- i_deadline = mdate() + INT64_C(250000);
-
/* Postpone seeking until ES buffering is complete or at most
* 125 ms. */
bool b_postpone = es_out_GetBuffering( p_input->p->p_es_out )
/* Recheck ES buffer level every 20 ms when seeking */
if( now < i_last_seek_mdate + INT64_C(125000)
- && i_deadline > now + INT64_C(20000) )
+ && (i_deadline < 0 || i_deadline > now + INT64_C(20000)) )
i_deadline = now + INT64_C(20000);
else
b_postpone = false;
}
-static void SlaveDemux( input_thread_t *p_input, bool *pb_demux_polled )
+static void SlaveDemux( input_thread_t *p_input )
{
int64_t i_time;
int i;
- *pb_demux_polled = false;
if( demux_Control( p_input->p->input.p_demux, DEMUX_GET_TIME, &i_time ) )
{
msg_Err( p_input, "demux doesn't like DEMUX_GET_TIME" );
if( in->b_eof )
continue;
- const bool b_demux_polled = in->p_demux->pf_demux != NULL;
- if( !b_demux_polled )
- continue;
-
- *pb_demux_polled = true;
-
/* Call demux_Demux until we have read enough data */
if( demux_Control( in->p_demux, DEMUX_SET_NEXT_DEMUX_TIME, i_time ) )
{