
Data Structures | |
| struct | ty_rec_hdr_t |
| struct | ty_seq_table_t |
| struct | xds_packet_t |
| struct | xds_meta_program_t |
| struct | xds_meta_t |
| struct | xds_t |
| struct | demux_sys_t |
Defines | |
| #define | SERIES1_PES_LENGTH (11) |
| #define | SERIES2_PES_LENGTH (16) |
| #define | AC3_PES_LENGTH (14) |
| #define | VIDEO_PES_LENGTH (16) |
| #define | DTIVO_PTS_OFFSET (6) |
| #define | SA_PTS_OFFSET (9) |
| #define | AC3_PTS_OFFSET (9) |
| #define | VIDEO_PTS_OFFSET (9) |
| #define | AC3_PKT_LENGTH (1536) |
| #define | CHUNK_PEEK_COUNT (3) |
| #define | TIVO_PES_FILEID ( 0xf5467abd ) |
| #define | TIVO_PART_LENGTH ( 0x20000000 ) |
| #define | CHUNK_SIZE ( 128 * 1024 ) |
| #define | XDS_MAX_DATA_SIZE (32) |
| #define | TY_ES_GROUP (1) |
| #define | E2(c, u1, u2) case c: dst[i_dst++] = u1; dst[i_dst++] = u2; break |
Enumerations | |
| enum | tivo_type_t { TIVO_TYPE_UNKNOWN, TIVO_TYPE_SA, TIVO_TYPE_DTIVO } |
| enum | tivo_series_t { TIVO_SERIES_UNKNOWN, TIVO_SERIES1, TIVO_SERIES2 } |
| enum | tivo_audio_t { TIVO_AUDIO_UNKNOWN, TIVO_AUDIO_AC3, TIVO_AUDIO_MPEG } |
| enum | xds_class_t { XDS_CLASS_CURRENT = 0, XDS_CLASS_FUTURE = 1, XDS_CLASS_CHANNEL = 2, XDS_CLASS_MISCELLANEOUS = 3, XDS_CLASS_PUBLIC_SERVICE = 4, XDS_CLASS_RESERVED = 5, XDS_CLASS_UNDEFINED = 6, XDS_CLASS_OTHER = 7, XDS_MAX_CLASS_COUNT } |
| enum | xds_meta_program_rating_t { XDS_META_PROGRAM_RATING_NONE, XDS_META_PROGRAM_RATING_MPAA, XDS_META_PROGRAM_RATING_TPG } |
Functions | |
| static int | Open (vlc_object_t *) |
| Probes and initializes. | |
| static void | Close (vlc_object_t *) |
| Releases resources. | |
| int | vlc_entry__main (module_t *p_module) |
| const char * | vlc_entry_license__main (void) |
| static int | Demux (demux_t *) |
| static int | Control (demux_t *, int, va_list) |
| static int | get_chunk_header (demux_t *) |
| static mtime_t | get_pts (const uint8_t *buf) |
| static int | find_es_header (const uint8_t *header, const uint8_t *buffer, int i_search_len) |
| static int | ty_stream_seek_pct (demux_t *p_demux, double seek_pct) |
| static int | ty_stream_seek_time (demux_t *, uint64_t) |
| static ty_rec_hdr_t * | parse_chunk_headers (const uint8_t *p_buf, int i_num_recs, int *pi_payload_size) |
| static int | probe_stream (demux_t *p_demux) |
| static void | analyze_chunk (demux_t *p_demux, const uint8_t *p_chunk) |
| static void | parse_master (demux_t *p_demux) |
| static int | DemuxRecVideo (demux_t *p_demux, ty_rec_hdr_t *rec_hdr, block_t *p_block_in) |
| static int | DemuxRecAudio (demux_t *p_demux, ty_rec_hdr_t *rec_hdr, block_t *p_block_in) |
| static int | DemuxRecCc (demux_t *p_demux, ty_rec_hdr_t *rec_hdr, block_t *p_block_in) |
| static void | DemuxDecodeXds (demux_t *p_demux, uint8_t d1, uint8_t d2) |
| static void | XdsInit (xds_t *) |
| static void | XdsExit (xds_t *) |
| static int | check_sync_pes (demux_t *p_demux, block_t *p_block, int32_t offset, int32_t rec_len) |
| static void | XdsStringUtf8 (char dst[2 *32+1], const uint8_t *p_src, int i_src) |
| static bool | XdsChangeString (xds_t *h, char **ppsz_dst, const char *psz_new) |
| static void | XdsDecodeCurrentFuture (xds_t *h, xds_packet_t *pk) |
| static void | XdsDecodeChannel (xds_t *h, xds_packet_t *pk) |
| static void | XdsDecode (xds_t *h, xds_packet_t *pk) |
| static void | XdsParse (xds_t *h, uint8_t d1, uint8_t d2) |
Variables | |
| static const uint8_t | ty_VideoPacket [] = { 0x00, 0x00, 0x01, 0xe0 } |
| static const uint8_t | ty_MPEGAudioPacket [] = { 0x00, 0x00, 0x01, 0xc0 } |
| static const uint8_t | ty_AC3AudioPacket [] = { 0x00, 0x00, 0x01, 0xbd } |
| #define AC3_PES_LENGTH (14) |
Referenced by analyze_chunk().
| #define AC3_PKT_LENGTH (1536) |
Referenced by DemuxRecAudio().
| #define AC3_PTS_OFFSET (9) |
Referenced by analyze_chunk().
| #define CHUNK_PEEK_COUNT (3) |
Referenced by probe_stream().
| #define CHUNK_SIZE ( 128 * 1024 ) |
Referenced by get_chunk_header(), parse_master(), probe_stream(), ty_stream_seek_pct(), and ty_stream_seek_time().
| #define DTIVO_PTS_OFFSET (6) |
Referenced by analyze_chunk().
| #define SA_PTS_OFFSET (9) |
Referenced by analyze_chunk(), and DemuxRecAudio().
| #define SERIES1_PES_LENGTH (11) |
Referenced by analyze_chunk().
| #define SERIES2_PES_LENGTH (16) |
Referenced by analyze_chunk().
| #define TIVO_PART_LENGTH ( 0x20000000 ) |
Referenced by ty_stream_seek_pct(), and ty_stream_seek_time().
| #define TIVO_PES_FILEID ( 0xf5467abd ) |
Referenced by analyze_chunk(), and get_chunk_header().
| #define TY_ES_GROUP (1) |
Referenced by DemuxDecodeXds(), and DemuxRecVideo().
| #define VIDEO_PES_LENGTH (16) |
Referenced by DemuxRecVideo().
| #define VIDEO_PTS_OFFSET (9) |
Referenced by DemuxRecVideo().
| #define XDS_MAX_DATA_SIZE (32) |
Referenced by XdsParse().
| enum tivo_audio_t |
| enum tivo_series_t |
| enum tivo_type_t |
| enum xds_class_t |
| static void analyze_chunk | ( | demux_t * | p_demux, | |
| const uint8_t * | p_chunk | |||
| ) | [static] |
References AC3_PES_LENGTH, AC3_PTS_OFFSET, demux_sys_t::audio_type, DTIVO_PTS_OFFSET, find_es_header(), i, demux_sys_t::i_Pes_Length, demux_sys_t::i_Pts_Offset, ty_rec_hdr_t::l_rec_size, msg_Dbg, demux_t::p_sys, p_sys, parse_chunk_headers(), SA_PTS_OFFSET, SERIES1_PES_LENGTH, SERIES2_PES_LENGTH, TIVO_AUDIO_AC3, TIVO_AUDIO_MPEG, TIVO_PES_FILEID, demux_sys_t::tivo_series, TIVO_SERIES1, TIVO_SERIES2, demux_sys_t::tivo_type, TIVO_TYPE_DTIVO, TIVO_TYPE_SA, TIVO_TYPE_UNKNOWN, and U32_AT().
Referenced by probe_stream().
| static int check_sync_pes | ( | demux_t * | p_demux, | |
| block_t * | p_block, | |||
| int32_t | offset, | |||
| int32_t | rec_len | |||
| ) | [static] |
References demux_sys_t::firstAudioPTS, get_pts(), block_t::i_buffer, demux_sys_t::i_pes_buf_cnt, demux_sys_t::i_Pes_Length, block_t::i_pts, demux_sys_t::i_Pts_Offset, demux_sys_t::lastAudioPTS, msg_Dbg, msg_Err, block_t::p_buffer, demux_t::p_sys, p_sys, demux_sys_t::pes_buffer, and VLC_TS_0.
Referenced by DemuxRecAudio().
| static void Close | ( | vlc_object_t * | p_this | ) | [static] |
Releases resources.
Close the module.
Destroys the X11 window.
Disconnect from the X server.
Close a SDL video output.
It destroys an OpenGL vout display.
Terminate a vout display created by Open.
It destroyes a Direct3D vout display.
Terminate an output method created by Open.
Release the drawable.
Close a libcaca video output.
Close a aa video output method.
Close the filter.
Terminate a splitter module.
This function closes a clone video splitter module.
Common close function.
Releases allocate resources.
Close: Destructor.
| p_this | pointer to this filter object | |
| p_this,: | the filter object |
| static int Control | ( | demux_t * | p_demux, | |
| int | i_query, | |||
| va_list | args | |||
| ) | [static] |
| static int Demux | ( | demux_t * | p_demux | ) | [static] |
References ty_rec_hdr_t::b_ext, demux_sys_t::b_first_chunk, block_Release(), DemuxRecAudio(), DemuxRecCc(), DemuxRecVideo(), demux_sys_t::eof, get_chunk_header(), demux_sys_t::i_cur_rec, block_t::i_dts, demux_sys_t::i_num_recs, block_t::i_pts, ty_rec_hdr_t::l_rec_size, msg_Dbg, demux_t::p_sys, p_sys, demux_sys_t::rec_hdrs, ty_rec_hdr_t::rec_type, demux_t::s, stream_Block(), and VLC_TS_INVALID.
| static void DemuxDecodeXds | ( | demux_t * | p_demux, | |
| uint8_t | d1, | |||
| uint8_t | d2 | |||
| ) | [static] |
References xds_t::b_meta_changed, xds_meta_t::current, es_out_Control(), ES_OUT_SET_GROUP_EPG, ES_OUT_SET_GROUP_META, xds_meta_t::future, vlc_epg_t::i_event, xds_t::meta, demux_t::out, demux_t::p_sys, p_sys, xds_meta_t::psz_channel_call_letter, xds_meta_t::psz_channel_name, xds_meta_t::psz_channel_number, xds_meta_program_t::psz_name, TY_ES_GROUP, vlc_epg_AddEvent(), vlc_epg_Delete(), vlc_epg_New(), vlc_epg_SetCurrent(), vlc_meta_AddExtra(), vlc_meta_Delete(), vlc_meta_New(), vlc_meta_SetPublisher, vlc_meta_SetTitle, demux_sys_t::xds, and XdsParse().
Referenced by DemuxRecCc().
| static int DemuxRecAudio | ( | demux_t * | p_demux, | |
| ty_rec_hdr_t * | rec_hdr, | |||
| block_t * | p_block_in | |||
| ) | [static] |
References AC3_PKT_LENGTH, demux_sys_t::audio_type, block_Release(), check_sync_pes(), es_out_Control(), es_out_Send(), ES_OUT_SET_PCR, find_es_header(), demux_sys_t::firstAudioPTS, get_pts(), i, block_t::i_buffer, demux_sys_t::i_pes_buf_cnt, demux_sys_t::i_Pes_Length, block_t::i_pts, demux_sys_t::i_Pts_Offset, demux_sys_t::l_ac3_pkt_size, ty_rec_hdr_t::l_rec_size, demux_sys_t::lastAudioPTS, msg_Dbg, msg_Err, demux_t::out, demux_sys_t::p_audio, block_t::p_buffer, demux_t::p_sys, p_sys, demux_sys_t::pes_buffer, ty_rec_hdr_t::rec_type, SA_PTS_OFFSET, ty_rec_hdr_t::subrec_type, TIVO_AUDIO_AC3, TIVO_AUDIO_MPEG, demux_sys_t::tivo_series, TIVO_SERIES2, VLC_TS_0, and VLC_TS_INVALID.
Referenced by Demux().
| static int DemuxRecCc | ( | demux_t * | p_demux, | |
| ty_rec_hdr_t * | rec_hdr, | |||
| block_t * | p_block_in | |||
| ) | [static] |
References block_Release(), demux_sys_t::cc, cc_AppendData(), CC_MAX_DATA_SIZE, DemuxDecodeXds(), ty_rec_hdr_t::ex, cc_data_t::i_data, demux_t::p_sys, p_sys, and ty_rec_hdr_t::rec_type.
Referenced by Demux().
| static int DemuxRecVideo | ( | demux_t * | p_demux, | |
| ty_rec_hdr_t * | rec_hdr, | |||
| block_t * | p_block_in | |||
| ) | [static] |
References BLOCK_FLAG_TYPE_I, block_New, block_Release(), demux_sys_t::cc, cc_Flush(), es_format_Clean(), es_format_Init(), es_out_Add(), es_out_Send(), find_es_header(), get_pts(), i, block_t::i_buffer, cc_data_t::i_data, block_t::i_flags, es_format_t::i_group, block_t::i_pts, demux_sys_t::l_last_ty_pts, ty_rec_hdr_t::l_rec_size, ty_rec_hdr_t::l_ty_pts, demux_sys_t::lastVideoPTS, msg_Dbg, N_, demux_t::out, block_t::p_buffer, demux_sys_t::p_cc, cc_data_t::p_data, demux_t::p_sys, p_sys, demux_sys_t::p_video, cc_data_t::pb_present, es_format_t::psz_description, ty_rec_hdr_t::rec_type, SPU_ES, strdup(), ty_rec_hdr_t::subrec_type, TY_ES_GROUP, VIDEO_PES_LENGTH, VIDEO_PTS_OFFSET, VLC_FOURCC, vlc_gettext(), VLC_TS_0, and VLC_TS_INVALID.
Referenced by Demux().
| static int find_es_header | ( | const uint8_t * | header, | |
| const uint8_t * | buffer, | |||
| int | i_search_len | |||
| ) | [static] |
| static int get_chunk_header | ( | demux_t * | p_demux | ) | [static] |
References demux_sys_t::b_first_chunk, CHUNK_SIZE, demux_sys_t::eof, demux_sys_t::i_cur_chunk, demux_sys_t::i_cur_rec, demux_sys_t::i_num_recs, demux_sys_t::i_seq_rec, demux_sys_t::i_stuff_cnt, msg_Dbg, demux_t::p_sys, p_sys, parse_chunk_headers(), parse_master(), demux_sys_t::rec_hdrs, demux_t::s, stream_Peek(), stream_Read(), TIVO_PES_FILEID, and U32_AT().
Referenced by Demux(), ty_stream_seek_pct(), and ty_stream_seek_time().
| static mtime_t get_pts | ( | const uint8_t * | buf | ) | [static] |
Referenced by check_sync_pes(), DemuxRecAudio(), and DemuxRecVideo().
| static int Open | ( | vlc_object_t * | p_this | ) | [static] |
Probes and initializes.
Status of this demuxer: Real Media format -----------------.
Basic chorus/flanger/delay audio filter This implements a variable delay filter for VLC.
Todo:
Open the module.
Create an X11 window.
Probe the X server.
This function initializes SDL vout method.
It creates an OpenGL vout display.
This function allocates and initialize the DirectX vout display.
It creates a Direct3D vout display.
This function allocates and initializes a FB vout method.
Find the drawable set by libvlc application.
This function initializes libcaca vout method.
This function allocates and initializes a aa vout method.
This function allocates and initializes a Wall splitter module.
Open the filter.
This function allocates and initializes a Clone splitter module.
Open: initialize and create stuff.
Connect to the sftp server and ask for a file.
| p_this,: | the vlc_object |
| p_this | ||
| p_this,: | the filter object |
| static ty_rec_hdr_t * parse_chunk_headers | ( | const uint8_t * | p_buf, | |
| int | i_num_recs, | |||
| int * | pi_payload_size | |||
| ) | [static] |
References i, ty_rec_hdr_t::rec_type, and U64_AT().
Referenced by analyze_chunk(), and get_chunk_header().
| static void parse_master | ( | demux_t * | p_demux | ) | [static] |
References demux_sys_t::b_have_master, ty_seq_table_t::chunk_bitmask, CHUNK_SIZE, i, demux_sys_t::i_bits_per_seq_entry, demux_sys_t::i_seq_table_size, demux_sys_t::l_final_ty_pts, demux_sys_t::l_first_ty_pts, ty_seq_table_t::l_timestamp, msg_Dbg, msg_Err, demux_t::p_sys, p_sys, demux_t::s, demux_sys_t::seq_table, stream_Read(), stream_Seek(), stream_Tell(), U32_AT(), and U64_AT().
Referenced by get_chunk_header(), ty_stream_seek_pct(), and ty_stream_seek_time().
| static int probe_stream | ( | demux_t * | p_demux | ) | [static] |
| static int ty_stream_seek_pct | ( | demux_t * | p_demux, | |
| double | seek_pct | |||
| ) | [static] |
References demux_sys_t::b_seekable, CHUNK_SIZE, get_chunk_header(), i, demux_sys_t::i_cur_chunk, demux_sys_t::i_cur_rec, demux_sys_t::i_num_recs, demux_sys_t::i_stream_size, demux_sys_t::i_stuff_cnt, ty_rec_hdr_t::l_rec_size, msg_Dbg, demux_t::p_sys, p_sys, parse_master(), demux_sys_t::rec_hdrs, demux_t::s, stream_Seek(), TIVO_PART_LENGTH, VLC_EGENERIC, and VLC_SUCCESS.
Referenced by Control().
| static int ty_stream_seek_time | ( | demux_t * | p_demux, | |
| uint64_t | l_seek_time | |||
| ) | [static] |
References demux_sys_t::b_have_master, demux_sys_t::b_seekable, ty_seq_table_t::chunk_bitmask, CHUNK_SIZE, get_chunk_header(), i, demux_sys_t::i_bits_per_seq_entry, demux_sys_t::i_cur_rec, demux_sys_t::i_num_recs, demux_sys_t::i_seq_rec, demux_sys_t::i_seq_table_size, demux_sys_t::i_stream_size, demux_sys_t::i_stuff_cnt, demux_sys_t::l_final_ty_pts, ty_rec_hdr_t::l_rec_size, ty_seq_table_t::l_timestamp, ty_rec_hdr_t::l_ty_pts, msg_Dbg, msg_Err, demux_t::p_sys, p_sys, parse_master(), demux_sys_t::rec_hdrs, demux_t::s, demux_sys_t::seq_table, stream_Read(), stream_Seek(), stream_Tell(), TIVO_PART_LENGTH, VLC_EGENERIC, and VLC_SUCCESS.
Referenced by Control().
| int vlc_entry__main | ( | module_t * | p_module | ) |
| const char* vlc_entry_license__main | ( | void | ) |
| static bool XdsChangeString | ( | xds_t * | h, | |
| char ** | ppsz_dst, | |||
| const char * | psz_new | |||
| ) | [static] |
References xds_t::b_meta_changed, and strdup().
Referenced by XdsDecodeChannel(), and XdsDecodeCurrentFuture().
| static void XdsDecode | ( | xds_t * | h, | |
| xds_packet_t * | pk | |||
| ) | [static] |
References xds_t::i_class, XDS_CLASS_CHANNEL, XDS_CLASS_CURRENT, XDS_CLASS_FUTURE, XDS_CLASS_MISCELLANEOUS, XDS_CLASS_PUBLIC_SERVICE, XdsDecodeChannel(), and XdsDecodeCurrentFuture().
Referenced by XdsParse().
| static void XdsDecodeChannel | ( | xds_t * | h, | |
| xds_packet_t * | pk | |||
| ) | [static] |
| static void XdsDecodeCurrentFuture | ( | xds_t * | h, | |
| xds_packet_t * | pk | |||
| ) | [static] |
References xds_t::b_future, xds_meta_t::current, xds_meta_t::future, xds_packet_t::i_data, xds_t::i_type, xds_t::meta, name, xds_packet_t::p_data, xds_meta_program_t::psz_name, xds_meta_program_t::psz_rating, xds_meta_program_t::rating, XDS_META_PROGRAM_RATING_MPAA, XDS_META_PROGRAM_RATING_NONE, XDS_META_PROGRAM_RATING_TPG, XdsChangeString(), and XdsStringUtf8().
Referenced by XdsDecode().
| static void XdsExit | ( | xds_t * | h | ) | [static] |
| static void XdsInit | ( | xds_t * | h | ) | [static] |
| static void XdsParse | ( | xds_t * | h, | |
| uint8_t | d1, | |||
| uint8_t | d2 | |||
| ) | [static] |
References xds_t::b_future, xds_packet_t::b_started, xds_t::b_xds, xds_t::i_class, xds_packet_t::i_data, xds_packet_t::i_sum, xds_t::i_type, i_type, xds_packet_t::p_data, xds_t::pkt, XDS_MAX_DATA_SIZE, and XdsDecode().
Referenced by DemuxDecodeXds().
| static void XdsStringUtf8 | ( | char | dst[2 *32+1], | |
| const uint8_t * | p_src, | |||
| int | i_src | |||
| ) | [static] |
const uint8_t ty_AC3AudioPacket[] = { 0x00, 0x00, 0x01, 0xbd } [static] |
const uint8_t ty_MPEGAudioPacket[] = { 0x00, 0x00, 0x01, 0xc0 } [static] |
const uint8_t ty_VideoPacket[] = { 0x00, 0x00, 0x01, 0xe0 } [static] |
1.5.6