📄 input.h
字号:
char* psz_srv_name;#endif /* XXX?? target background grid descriptor ? */ /* XXX?? video window descriptor ? */ /* XXX?? ISO 639 language descriptor ? */#ifdef STATS /* Stats */ /* XXX?? ...stats */#endif} pgrm_descriptor_t;/***************************************************************************** * pcr_descriptor_t ***************************************************************************** * Contains informations used to synchronise the decoder with the server *****************************************************************************/typedef struct pcr_descriptor_struct{ /* system_date = PTS_date + delta_pcr + delta_absolute */ mtime_t delta_pcr; mtime_t delta_absolute; mtime_t last_pcr; u32 i_synchro_state; count_t c_average_count; /* counter used to compute dynamic average values */} pcr_descriptor_t;/***************************************************************************** * stream_descriptor_t ***************************************************************************** * Describes a transport stream and list its associated programs. Build upon * the informations carried in program association sections *****************************************************************************/typedef struct{ u16 i_stream_id; /* stream id */ /* Program Association Table status */ u8 i_PAT_version; /* version number */ boolean_t b_is_PAT_complete; /* Is the PAT complete ?*/ u8 i_known_PAT_sections; /* Number of section we received so far */ byte_t a_known_PAT_sections[32]; /* Already received sections */ /* Program Map Table status */ boolean_t b_is_PMT_complete; /* Is the PMT complete ?*/ u8 i_known_PMT_sections; /* Number of section we received so far */ byte_t a_known_PMT_sections[32]; /* Already received sections */ /* Service Description Table status */ u8 i_SDT_version; /* version number */ boolean_t b_is_SDT_complete; /* Is the SDT complete ?*/ u8 i_known_SDT_sections; /* Number of section we received so far */ byte_t a_known_SDT_sections[32]; /* Already received sections */ /* Programs description */ int i_pgrm_number; /* Number of program number we have */ pgrm_descriptor_t ** ap_programs; /* Array of pointers to pgrm */#ifdef STATS /* Stats */ /* XXX?? ...stats */#endif} stream_descriptor_t;/***************************************************************************** * input_netlist_t *****************************************************************************/typedef struct{ vlc_mutex_t lock; /* netlist modification lock */ struct iovec p_ts_free[INPUT_MAX_TS + INPUT_TS_READ_ONCE]; /* FIFO or LIFO of free TS packets */ ts_packet_t * p_ts_packets; /* pointer to the first TS packet we allocated */ pes_packet_t * p_pes_free[INPUT_MAX_PES + 1]; /* FIFO or LIFO of free PES packets */ pes_packet_t * p_pes_packets; /* pointer to the first PES packet we allocated */ /* To use the efficiency of the scatter/gather IO operations. We implemented * it in 2 ways, as we don't know yet which one is better : as a FIFO (code * simplier) or as a LIFO stack (when we doesn't care of the ordering, this * allow to drastically improve the cache performance) */#ifdef INPUT_LIFO_TS_NETLIST int i_ts_index;#else int i_ts_start, i_ts_end;#endif#ifdef INPUT_LIFO_PES_NETLIST int i_pes_index;#else int i_pes_start, i_pes_end;#endif} input_netlist_t;/***************************************************************************** * input_thread_t ***************************************************************************** * This structure includes all the local static variables of an input thread, * including the netlist and the ES descriptors * Note that p_es must be defined as a static table, otherwise we would have to * update all reference to it each time the table would be reallocated *****************************************************************************//* Function pointers used in structure */typedef int (input_open_t) ( p_input_thread_t p_input );typedef int (input_read_t) ( p_input_thread_t p_input, const struct iovec *p_vector, size_t i_count );typedef void (input_close_t) ( p_input_thread_t p_input );/* Structure */typedef struct input_thread_s{ /* Thread properties and locks */ boolean_t b_die; /* 'die' flag */ boolean_t b_error; /* deadlock */ vlc_thread_t thread_id; /* id for thread functions */ vlc_mutex_t programs_lock; /* programs modification lock */ vlc_mutex_t es_lock; /* es modification lock */ int * pi_status; /* temporary status flag */ /* Input method description */ int i_method; /* input method */ int i_handle; /* file/socket descriptor */ char * p_source; /* source */ int i_port; /* port number */ int i_vlan; /* id for vlan method */ input_open_t * p_Open; /* opener of the method */ input_read_t * p_Read; /* reading function */ input_close_t * p_Close; /* destroying function */ /* General stream description */ stream_descriptor_t * p_stream; /* PAT tables */ es_descriptor_t p_es[INPUT_MAX_ES];/* carried elementary streams */ pcr_descriptor_t * p_pcr; /* PCR struct used for synchronisation */ /* List of streams to demux */ es_descriptor_t * pp_selected_es[INPUT_MAX_SELECTED_ES]; /* Netlists */ input_netlist_t netlist; /* see above */ /* Default settings for spawned decoders */ p_aout_thread_t p_aout; /* audio output thread structure */ p_vout_thread_t p_vout; /* video output thread */#ifdef STATS /* Statistics */ count_t c_loops; /* number of loops */ count_t c_bytes; /* bytes read */ count_t c_payload_bytes; /* payload useful bytes */ count_t c_packets_read; /* packets read */ count_t c_packets_trashed; /* trashed packets */#endif} input_thread_t;/* Input methods */#define INPUT_METHOD_NONE 0 /* input thread is inactive */#define INPUT_METHOD_TS_FILE 10 /* TS stream is read from a file */#define INPUT_METHOD_TS_UCAST 20 /* TS UDP unicast */#define INPUT_METHOD_TS_MCAST 21 /* TS UDP multicast */#define INPUT_METHOD_TS_BCAST 22 /* TS UDP broadcast */#define INPUT_METHOD_TS_VLAN_BCAST 32 /* TS UDP broadcast with VLANs *//***************************************************************************** * Prototypes *****************************************************************************/input_thread_t *input_CreateThread ( int i_method, void *p_source, int i_port, int i_vlan, p_vout_thread_t p_vout, p_aout_thread_t p_aout, int *pi_status );void input_DestroyThread ( input_thread_t *p_input, int *pi_status );int input_OpenAudioStream ( input_thread_t *p_input, int i_pid );void input_CloseAudioStream ( input_thread_t *p_input, int i_pid );int input_OpenVideoStream ( input_thread_t *p_input, int i_pid );void input_CloseVideoStream ( input_thread_t *p_input, int i_pid );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -