X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Finput%2Finput_internal.h;h=7cd39f75baa39718df282f163f976a07bcd7b0b5;hb=a5dc11a80916461de6e279143db532d7782cfea2;hp=4acdac425fbd940559799335566059cae02bab9b;hpb=c63257e2bfec8d448c250635e7f512623ee70b22;p=vlc diff --git a/src/input/input_internal.h b/src/input/input_internal.h index 4acdac425f..7cd39f75ba 100644 --- a/src/input/input_internal.h +++ b/src/input/input_internal.h @@ -68,31 +68,45 @@ typedef struct bool b_can_stream_record; bool b_rescale_ts; + /* */ + int64_t i_pts_delay; + bool b_eof; /* eof of demuxer */ } input_source_t; +typedef struct +{ + int i_type; + vlc_value_t val; +} input_control_t; + /** Private input fields */ struct input_thread_private_t { /* Global properties */ - bool b_can_pause; - bool b_can_rate_control; double f_fps; int i_state; - - /* Internal caching common to all sources */ - mtime_t i_pts_delay; + bool b_can_pause; + bool b_can_rate_control; + bool b_can_pace_control; /* Current state */ - int i_rate; bool b_recording; + int i_rate; /* Playtime configuration and state */ int64_t i_start; /* :start-time,0 by default */ int64_t i_stop; /* :stop-time, 0 if none */ int64_t i_run; /* :run-time, 0 if none */ int64_t i_time; /* Current time */ + bool b_fast_seek;/* :input-fast-seek */ + + /* Output */ + bool b_out_pace_control; /* XXX Move it ot es_sout ? */ + sout_instance_t *p_sout; /* Idem ? */ + es_out_t *p_es_out; + es_out_t *p_es_out_display; /* Title infos FIXME multi-input (not easy) ? */ int i_title; @@ -110,26 +124,20 @@ struct input_thread_private_t int i_attachment; input_attachment_t **attachment; - /* Output */ - es_out_t *p_es_out; - es_out_t *p_es_out_display; - sout_instance_t *p_sout; /* XXX Move it to es_out ? */ - bool b_out_pace_control; /* idem ? */ - /* Main input properties */ /* Input item */ input_item_t *p_item; - /* Clock average variation */ - int i_cr_average; + /* Main source */ input_source_t input; /* Slave sources (subs, and others) */ int i_slave; input_source_t **slave; - /* Ressources */ - input_ressource_t *p_ressource; + /* Resources */ + input_resource_t *p_resource; + input_resource_t *p_resource_private; /* Stats counters */ struct { @@ -138,6 +146,8 @@ struct input_thread_private_t counter_t *p_input_bitrate; counter_t *p_demux_read; counter_t *p_demux_bitrate; + counter_t *p_demux_corrupted; + counter_t *p_demux_discontinuity; counter_t *p_decoded_audio; counter_t *p_decoded_video; counter_t *p_decoded_sub; @@ -155,13 +165,9 @@ struct input_thread_private_t vlc_mutex_t lock_control; vlc_cond_t wait_control; int i_control; - struct - { - /* XXX for string value you have to allocate it before calling - * input_ControlPush */ - int i_type; - vlc_value_t val; - } control[INPUT_CONTROL_FIFO_SIZE]; + input_control_t control[INPUT_CONTROL_FIFO_SIZE]; + + bool b_abort; }; /*************************************************************************** @@ -174,14 +180,10 @@ enum input_control_e INPUT_CONTROL_SET_STATE, INPUT_CONTROL_SET_RATE, - INPUT_CONTROL_SET_RATE_SLOWER, - INPUT_CONTROL_SET_RATE_FASTER, INPUT_CONTROL_SET_POSITION, - INPUT_CONTROL_SET_POSITION_OFFSET, INPUT_CONTROL_SET_TIME, - INPUT_CONTROL_SET_TIME_OFFSET, INPUT_CONTROL_SET_PROGRAM, @@ -211,8 +213,15 @@ enum input_control_e }; /* Internal helpers */ + +/* XXX for string value you have to allocate it before calling + * input_ControlPush + */ void input_ControlPush( input_thread_t *, int i_type, vlc_value_t * ); +/* Bound pts_delay */ +#define INPUT_PTS_DELAY_MAX INT64_C(60000000) + /********************************************************************** * Item metadata **********************************************************************/