#include "libavutil/crc.h"#include "libavutil/intreadwrite.h"#include "libavutil/log.h"#include "libavutil/dict.h"#include "libavutil/mathematics.h"#include "libavutil/opt.h"#include "libavutil/avassert.h"#include "libavcodec/bytestream.h"#include "libavcodec/get_bits.h"#include "avformat.h"#include "mpegts.h"#include "internal.h"#include "avio_internal.h"#include "seek.h"#include "mpeg.h"#include "isom.h"Go to the source code of this file.
Data Structures | |
| struct | MpegTSPESFilter | 
| struct | MpegTSSectionFilter | 
| struct | MpegTSFilter | 
| struct | Program | 
| struct | MpegTSContext | 
| struct | PESContext | 
| struct | SectionHeader | 
| struct | StreamType | 
| struct | MP4DescrParseContext | 
Defines | |
| #define | MAX_RESYNC_SIZE 65536 | 
| #define | MAX_PES_PAYLOAD 200*1024 | 
| #define | MAX_MP4_DESCR_COUNT 16 | 
| #define | MAX_PIDS_PER_PROGRAM 64 | 
| #define | PES_START_SIZE 6 | 
| #define | PES_HEADER_SIZE 9 | 
| #define | MAX_PES_HEADER_SIZE (9 + 255) | 
| #define | MAX_LEVEL 4 | 
| #define | CHECK_COUNT 10 | 
| #define | MAX_PACKET_READAHEAD ((128 * 1024) / 188) | 
Typedefs | |
| typedef struct MpegTSFilter | MpegTSFilter | 
| typedef int | PESCallback (MpegTSFilter *f, const uint8_t *buf, int len, int is_start, int64_t pos) | 
| typedef void | SectionCallback (MpegTSFilter *f, const uint8_t *buf, int len) | 
| typedef void | SetServiceCallback (void *opaque, int ret) | 
Enumerations | |
| enum | MpegTSFilterType { MPEGTS_PES, MPEGTS_SECTION } | 
| enum | MpegTSState {  MPEGTS_HEADER = 0, MPEGTS_PESHEADER, MPEGTS_PESHEADER_FILL, MPEGTS_PAYLOAD, MPEGTS_SKIP }  | 
Functions | |
| static void | clear_program (MpegTSContext *ts, unsigned int programid) | 
| static void | clear_programs (MpegTSContext *ts) | 
| static void | add_pat_entry (MpegTSContext *ts, unsigned int programid) | 
| static void | add_pid_to_pmt (MpegTSContext *ts, unsigned int programid, unsigned int pid) | 
| static void | set_pcr_pid (AVFormatContext *s, unsigned int programid, unsigned int pid) | 
| static int | discard_pid (MpegTSContext *ts, unsigned int pid) | 
| discard_pid() decides if the pid is to be discarded according to caller's programs selection   | |
| static void | write_section_data (AVFormatContext *s, MpegTSFilter *tss1, const uint8_t *buf, int buf_size, int is_start) | 
| Assemble PES packets out of TS packets, and then call the "section_cb" function when they are complete.   | |
| static MpegTSFilter * | mpegts_open_section_filter (MpegTSContext *ts, unsigned int pid, SectionCallback *section_cb, void *opaque, int check_crc) | 
| static MpegTSFilter * | mpegts_open_pes_filter (MpegTSContext *ts, unsigned int pid, PESCallback *pes_cb, void *opaque) | 
| static void | mpegts_close_filter (MpegTSContext *ts, MpegTSFilter *filter) | 
| static int | analyze (const uint8_t *buf, int size, int packet_size, int *index) | 
| static int | get_packet_size (const uint8_t *buf, int size) | 
| static int | get8 (const uint8_t **pp, const uint8_t *p_end) | 
| static int | get16 (const uint8_t **pp, const uint8_t *p_end) | 
| static char * | getstr8 (const uint8_t **pp, const uint8_t *p_end) | 
| static int | parse_section_header (SectionHeader *h, const uint8_t **pp, const uint8_t *p_end) | 
| static void | mpegts_find_stream_type (AVStream *st, uint32_t stream_type, const StreamType *types) | 
| static int | mpegts_set_stream_info (AVStream *st, PESContext *pes, uint32_t stream_type, uint32_t prog_reg_desc) | 
| static void | new_pes_packet (PESContext *pes, AVPacket *pkt) | 
| static uint64_t | get_bits64 (GetBitContext *gb, int bits) | 
| static int | read_sl_header (PESContext *pes, SLConfigDescr *sl, const uint8_t *buf, int buf_size) | 
| static int | mpegts_push_data (MpegTSFilter *filter, const uint8_t *buf, int buf_size, int is_start, int64_t pos) | 
| static PESContext * | add_pes_stream (MpegTSContext *ts, int pid, int pcr_pid) | 
| static int | init_MP4DescrParseContext (MP4DescrParseContext *d, AVFormatContext *s, const uint8_t *buf, unsigned size, Mp4Descr *descr, int max_descr_count) | 
| static void | update_offsets (AVIOContext *pb, int64_t *off, int *len) | 
| static int | parse_mp4_descr (MP4DescrParseContext *d, int64_t off, int len, int target_tag) | 
| static int | parse_mp4_descr_arr (MP4DescrParseContext *d, int64_t off, int len) | 
| static int | parse_MP4IODescrTag (MP4DescrParseContext *d, int64_t off, int len) | 
| static int | parse_MP4ODescrTag (MP4DescrParseContext *d, int64_t off, int len) | 
| static int | parse_MP4ESDescrTag (MP4DescrParseContext *d, int64_t off, int len) | 
| static int | parse_MP4DecConfigDescrTag (MP4DescrParseContext *d, int64_t off, int len) | 
| static int | parse_MP4SLDescrTag (MP4DescrParseContext *d, int64_t off, int len) | 
| static int | mp4_read_iods (AVFormatContext *s, const uint8_t *buf, unsigned size, Mp4Descr *descr, int *descr_count, int max_descr_count) | 
| static int | mp4_read_od (AVFormatContext *s, const uint8_t *buf, unsigned size, Mp4Descr *descr, int *descr_count, int max_descr_count) | 
| static void | m4sl_cb (MpegTSFilter *filter, const uint8_t *section, int section_len) | 
| int | ff_parse_mpeg2_descriptor (AVFormatContext *fc, AVStream *st, int stream_type, const uint8_t **pp, const uint8_t *desc_list_end, Mp4Descr *mp4_descr, int mp4_descr_count, int pid, MpegTSContext *ts) | 
| Parse an MPEG-2 descriptor.   | |
| static void | pmt_cb (MpegTSFilter *filter, const uint8_t *section, int section_len) | 
| static void | pat_cb (MpegTSFilter *filter, const uint8_t *section, int section_len) | 
| static void | sdt_cb (MpegTSFilter *filter, const uint8_t *section, int section_len) | 
| static int | handle_packet (MpegTSContext *ts, const uint8_t *packet) | 
| static int | mpegts_resync (AVFormatContext *s) | 
| static int | read_packet (AVFormatContext *s, uint8_t *buf, int raw_packet_size) | 
| static int | handle_packets (MpegTSContext *ts, int nb_packets) | 
| static int | mpegts_probe (AVProbeData *p) | 
| static int | parse_pcr (int64_t *ppcr_high, int *ppcr_low, const uint8_t *packet) | 
| static int | mpegts_read_header (AVFormatContext *s) | 
| static int | mpegts_raw_read_packet (AVFormatContext *s, AVPacket *pkt) | 
| static int | mpegts_read_packet (AVFormatContext *s, AVPacket *pkt) | 
| static int | mpegts_read_close (AVFormatContext *s) | 
| static av_unused int64_t | mpegts_get_pcr (AVFormatContext *s, int stream_index, int64_t *ppos, int64_t pos_limit) | 
| static int64_t | mpegts_get_dts (AVFormatContext *s, int stream_index, int64_t *ppos, int64_t pos_limit) | 
| MpegTSContext * | ff_mpegts_parse_open (AVFormatContext *s) | 
| int | ff_mpegts_parse_packet (MpegTSContext *ts, AVPacket *pkt, const uint8_t *buf, int len) | 
| void | ff_mpegts_parse_close (MpegTSContext *ts) | 
Variables | |
| static const AVOption | options [] | 
| static const AVClass | mpegtsraw_class | 
| AVInputFormat | ff_mpegts_demuxer | 
| static const StreamType | ISO_types [] | 
| static const StreamType | HDMV_types [] | 
| static const StreamType | MISC_types [] | 
| static const StreamType | REGD_types [] | 
| static const StreamType | DESC_types [] | 
| AVInputFormat | ff_mpegtsraw_demuxer | 
| #define CHECK_COUNT 10 | 
| #define MAX_MP4_DESCR_COUNT 16 | 
| #define MAX_PACKET_READAHEAD ((128 * 1024) / 188) | 
| #define MAX_PES_PAYLOAD 200*1024 | 
| #define MAX_PIDS_PER_PROGRAM 64 | 
| #define MAX_RESYNC_SIZE 65536 | 
| #define PES_HEADER_SIZE 9 | 
| #define PES_START_SIZE 6 | 
| typedef struct MpegTSFilter MpegTSFilter | 
| typedef int PESCallback(MpegTSFilter *f, const uint8_t *buf, int len, int is_start, int64_t pos) | 
| typedef void SectionCallback(MpegTSFilter *f, const uint8_t *buf, int len) | 
| typedef void SetServiceCallback(void *opaque, int ret) | 
| enum MpegTSFilterType | 
| enum MpegTSState | 
| static void add_pat_entry | ( | MpegTSContext * | ts, | |
| unsigned int | programid | |||
| ) |  [static] | 
        
| static PESContext* add_pes_stream | ( | MpegTSContext * | ts, | |
| int | pid, | |||
| int | pcr_pid | |||
| ) |  [static] | 
        
| static void add_pid_to_pmt | ( | MpegTSContext * | ts, | |
| unsigned int | programid, | |||
| unsigned int | pid | |||
| ) |  [static] | 
        
| static void clear_program | ( | MpegTSContext * | ts, | |
| unsigned int | programid | |||
| ) |  [static] | 
        
| static void clear_programs | ( | MpegTSContext * | ts | ) |  [static] | 
        
| static int discard_pid | ( | MpegTSContext * | ts, | |
| unsigned int | pid | |||
| ) |  [static] | 
        
discard_pid() decides if the pid is to be discarded according to caller's programs selection
| ts | : - TS context | |
| pid | : - pid | 
Definition at line 248 of file mpegts.c.
Referenced by handle_packet().
| void ff_mpegts_parse_close | ( | MpegTSContext * | ts | ) | 
Definition at line 2211 of file mpegts.c.
Referenced by ff_rtp_parse_close(), ff_rtsp_close_streams(), and iec61883_close().
| MpegTSContext* ff_mpegts_parse_open | ( | AVFormatContext * | s | ) | 
Definition at line 2167 of file mpegts.c.
Referenced by ff_rtp_parse_open(), and iec61883_read_header().
| int ff_mpegts_parse_packet | ( | MpegTSContext * | ts, | |
| AVPacket * | pkt, | |||
| const uint8_t * | buf, | |||
| int | len | |||
| ) | 
Definition at line 2186 of file mpegts.c.
Referenced by iec61883_parse_queue_hdv(), rtp_parse_one_packet(), and rtp_parse_packet_internal().
| int ff_parse_mpeg2_descriptor | ( | AVFormatContext * | fc, | |
| AVStream * | st, | |||
| int | stream_type, | |||
| const uint8_t ** | pp, | |||
| const uint8_t * | desc_list_end, | |||
| Mp4Descr * | mp4_descr, | |||
| int | mp4_descr_count, | |||
| int | pid, | |||
| MpegTSContext * | ts | |||
| ) | 
Parse an MPEG-2 descriptor.
| [in] | fc | Format context (used for logging only) | 
| st | Stream | |
| stream_type | STREAM_TYPE_xxx | |
| pp | Descriptor buffer pointer | |
| desc_list_end | End of buffer | 
Definition at line 1271 of file mpegts.c.
Referenced by parse_chunks(), and pmt_cb().
Definition at line 455 of file mpegts.c.
Referenced by ff_parse_mpeg2_descriptor(), parse_section_header(), pat_cb(), pmt_cb(), and sdt_cb().
Definition at line 442 of file mpegts.c.
Referenced by ff_parse_mpeg2_descriptor(), getstr8(), parse_section_header(), pmt_cb(), and sdt_cb().
| static uint64_t get_bits64 | ( | GetBitContext * | gb, | |
| int | bits | |||
| ) |  [static] | 
        
| static int handle_packet | ( | MpegTSContext * | ts, | |
| const uint8_t * | packet | |||
| ) |  [static] | 
        
Definition at line 1672 of file mpegts.c.
Referenced by ff_mpegts_parse_packet(), and handle_packets().
| static int handle_packets | ( | MpegTSContext * | ts, | |
| int | nb_packets | |||
| ) |  [static] | 
        
Definition at line 1821 of file mpegts.c.
Referenced by mpegts_read_header(), and mpegts_read_packet().
| static int init_MP4DescrParseContext | ( | MP4DescrParseContext * | d, | |
| AVFormatContext * | s, | |||
| const uint8_t * | buf, | |||
| unsigned | size, | |||
| Mp4Descr * | descr, | |||
| int | max_descr_count | |||
| ) |  [static] | 
        
| static void m4sl_cb | ( | MpegTSFilter * | filter, | |
| const uint8_t * | section, | |||
| int | section_len | |||
| ) |  [static] | 
        
| static void mpegts_close_filter | ( | MpegTSContext * | ts, | |
| MpegTSFilter * | filter | |||
| ) |  [static] | 
        
| static void mpegts_find_stream_type | ( | AVStream * | st, | |
| uint32_t | stream_type, | |||
| const StreamType * | types | |||
| ) |  [static] | 
        
Definition at line 585 of file mpegts.c.
Referenced by ff_parse_mpeg2_descriptor(), and mpegts_set_stream_info().
| static int64_t mpegts_get_dts | ( | AVFormatContext * | s, | |
| int | stream_index, | |||
| int64_t * | ppos, | |||
| int64_t | pos_limit | |||
| ) |  [static] | 
        
| static av_unused int64_t mpegts_get_pcr | ( | AVFormatContext * | s, | |
| int | stream_index, | |||
| int64_t * | ppos, | |||
| int64_t | pos_limit | |||
| ) |  [static] | 
        
| static MpegTSFilter* mpegts_open_pes_filter | ( | MpegTSContext * | ts, | |
| unsigned int | pid, | |||
| PESCallback * | pes_cb, | |||
| void * | opaque | |||
| ) |  [static] | 
        
| static MpegTSFilter* mpegts_open_section_filter | ( | MpegTSContext * | ts, | |
| unsigned int | pid, | |||
| SectionCallback * | section_cb, | |||
| void * | opaque, | |||
| int | check_crc | |||
| ) |  [static] | 
        
Definition at line 315 of file mpegts.c.
Referenced by ff_mpegts_parse_open(), ff_parse_mpeg2_descriptor(), mpegts_read_header(), and pat_cb().
| static int mpegts_probe | ( | AVProbeData * | p | ) |  [static] | 
        
| static int mpegts_push_data | ( | MpegTSFilter * | filter, | |
| const uint8_t * | buf, | |||
| int | buf_size, | |||
| int | is_start, | |||
| int64_t | pos | |||
| ) |  [static] | 
        
| static int mpegts_raw_read_packet | ( | AVFormatContext * | s, | |
| AVPacket * | pkt | |||
| ) |  [static] | 
        
| static int mpegts_read_close | ( | AVFormatContext * | s | ) |  [static] | 
        
| static int mpegts_read_header | ( | AVFormatContext * | s | ) |  [static] | 
        
| static int mpegts_read_packet | ( | AVFormatContext * | s, | |
| AVPacket * | pkt | |||
| ) |  [static] | 
        
| static int mpegts_resync | ( | AVFormatContext * | s | ) |  [static] | 
        
| static int mpegts_set_stream_info | ( | AVStream * | st, | |
| PESContext * | pes, | |||
| uint32_t | stream_type, | |||
| uint32_t | prog_reg_desc | |||
| ) |  [static] | 
        
| static void new_pes_packet | ( | PESContext * | pes, | |
| AVPacket * | pkt | |||
| ) |  [static] | 
        
Definition at line 657 of file mpegts.c.
Referenced by mpegts_push_data(), and mpegts_read_packet().
| static int parse_mp4_descr | ( | MP4DescrParseContext * | d, | |
| int64_t | off, | |||
| int | len, | |||
| int | target_tag | |||
| ) |  [static] | 
        
Definition at line 1137 of file mpegts.c.
Referenced by mp4_read_iods(), parse_mp4_descr_arr(), and parse_MP4ESDescrTag().
| static int parse_mp4_descr_arr | ( | MP4DescrParseContext * | d, | |
| int64_t | off, | |||
| int | len | |||
| ) |  [static] | 
        
Definition at line 1037 of file mpegts.c.
Referenced by mp4_read_od(), parse_MP4IODescrTag(), and parse_MP4ODescrTag().
| static int parse_MP4DecConfigDescrTag | ( | MP4DescrParseContext * | d, | |
| int64_t | off, | |||
| int | len | |||
| ) |  [static] | 
        
| static int parse_MP4ESDescrTag | ( | MP4DescrParseContext * | d, | |
| int64_t | off, | |||
| int | len | |||
| ) |  [static] | 
        
| static int parse_MP4IODescrTag | ( | MP4DescrParseContext * | d, | |
| int64_t | off, | |||
| int | len | |||
| ) |  [static] | 
        
| static int parse_MP4ODescrTag | ( | MP4DescrParseContext * | d, | |
| int64_t | off, | |||
| int | len | |||
| ) |  [static] | 
        
| static int parse_MP4SLDescrTag | ( | MP4DescrParseContext * | d, | |
| int64_t | off, | |||
| int | len | |||
| ) |  [static] | 
        
Definition at line 1892 of file mpegts.c.
Referenced by mpegts_get_pcr(), mpegts_raw_read_packet(), and mpegts_read_header().
| static int parse_section_header | ( | SectionHeader * | h, | |
| const uint8_t ** | pp, | |||
| const uint8_t * | p_end | |||
| ) |  [static] | 
        
| static void pat_cb | ( | MpegTSFilter * | filter, | |
| const uint8_t * | section, | |||
| int | section_len | |||
| ) |  [static] | 
        
Definition at line 1546 of file mpegts.c.
Referenced by ff_mpegts_parse_open(), and mpegts_read_header().
| static void pmt_cb | ( | MpegTSFilter * | filter, | |
| const uint8_t * | section, | |||
| int | section_len | |||
| ) |  [static] | 
        
| static int read_packet | ( | AVFormatContext * | s, | |
| uint8_t * | buf, | |||
| int | raw_packet_size | |||
| ) |  [static] | 
        
| static int read_sl_header | ( | PESContext * | pes, | |
| SLConfigDescr * | sl, | |||
| const uint8_t * | buf, | |||
| int | buf_size | |||
| ) |  [static] | 
        
| static void sdt_cb | ( | MpegTSFilter * | filter, | |
| const uint8_t * | section, | |||
| int | section_len | |||
| ) |  [static] | 
        
Definition at line 1594 of file mpegts.c.
Referenced by ff_mpegts_parse_open(), and mpegts_read_header().
| static void set_pcr_pid | ( | AVFormatContext * | s, | |
| unsigned int | programid, | |||
| unsigned int | pid | |||
| ) |  [static] | 
        
| static void update_offsets | ( | AVIOContext * | pb, | |
| int64_t * | off, | |||
| int * | len | |||
| ) |  [static] | 
        
Definition at line 1028 of file mpegts.c.
Referenced by parse_mp4_descr(), parse_mp4_descr_arr(), parse_MP4ESDescrTag(), parse_MP4IODescrTag(), and parse_MP4ODescrTag().
| static void write_section_data | ( | AVFormatContext * | s, | |
| MpegTSFilter * | tss1, | |||
| const uint8_t * | buf, | |||
| int | buf_size, | |||
| int | is_start | |||
| ) |  [static] | 
        
Assemble PES packets out of TS packets, and then call the "section_cb" function when they are complete.
Definition at line 277 of file mpegts.c.
Referenced by handle_packet().
const StreamType DESC_types[] [static]           | 
        
Initial value:
 {
    { 0x6a, AVMEDIA_TYPE_AUDIO,             AV_CODEC_ID_AC3 }, 
    { 0x7a, AVMEDIA_TYPE_AUDIO,            AV_CODEC_ID_EAC3 }, 
    { 0x7b, AVMEDIA_TYPE_AUDIO,             AV_CODEC_ID_DTS },
    { 0x56, AVMEDIA_TYPE_SUBTITLE, AV_CODEC_ID_DVB_TELETEXT },
    { 0x59, AVMEDIA_TYPE_SUBTITLE, AV_CODEC_ID_DVB_SUBTITLE }, 
    { 0 },
}
Initial value:
 {
    .name           = "mpegts",
    .long_name      = NULL_IF_CONFIG_SMALL("MPEG-TS (MPEG-2 Transport Stream)"),
    .priv_data_size = sizeof(MpegTSContext),
    .read_probe     = mpegts_probe,
    .read_header    = mpegts_read_header,
    .read_packet    = mpegts_read_packet,
    .read_close     = mpegts_read_close,
    .read_timestamp = mpegts_get_dts,
    .flags          = AVFMT_SHOW_IDS | AVFMT_TS_DISCONT,
}
Initial value:
 {
    .name           = "mpegtsraw",
    .long_name      = NULL_IF_CONFIG_SMALL("raw MPEG-TS (MPEG-2 Transport Stream)"),
    .priv_data_size = sizeof(MpegTSContext),
    .read_header    = mpegts_read_header,
    .read_packet    = mpegts_raw_read_packet,
    .read_close     = mpegts_read_close,
    .read_timestamp = mpegts_get_dts,
    .flags          = AVFMT_SHOW_IDS | AVFMT_TS_DISCONT,
    .priv_class     = &mpegtsraw_class,
}
const StreamType HDMV_types[] [static]           | 
        
Initial value:
 {
    { 0x80, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_PCM_BLURAY },
    { 0x81, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_AC3 },
    { 0x82, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_DTS },
    { 0x83, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_TRUEHD },
    { 0x84, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_EAC3 },
    { 0x85, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_DTS }, 
    { 0x86, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_DTS }, 
    { 0xa1, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_EAC3 }, 
    { 0xa2, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_DTS },  
    { 0x90, AVMEDIA_TYPE_SUBTITLE, AV_CODEC_ID_HDMV_PGS_SUBTITLE },
    { 0 },
}
const StreamType ISO_types[] [static]           | 
        
Initial value:
 {
    { 0x01, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_MPEG2VIDEO },
    { 0x02, AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_MPEG2VIDEO },
    { 0x03, AVMEDIA_TYPE_AUDIO,        AV_CODEC_ID_MP3 },
    { 0x04, AVMEDIA_TYPE_AUDIO,        AV_CODEC_ID_MP3 },
    { 0x0f, AVMEDIA_TYPE_AUDIO,        AV_CODEC_ID_AAC },
    { 0x10, AVMEDIA_TYPE_VIDEO,      AV_CODEC_ID_MPEG4 },
    
    { 0x1b, AVMEDIA_TYPE_VIDEO,       AV_CODEC_ID_H264 },
    { 0xd1, AVMEDIA_TYPE_VIDEO,      AV_CODEC_ID_DIRAC },
    { 0xea, AVMEDIA_TYPE_VIDEO,        AV_CODEC_ID_VC1 },
    { 0 },
}
const StreamType MISC_types[] [static]           | 
        
Initial value:
 {
    { 0x81, AVMEDIA_TYPE_AUDIO,   AV_CODEC_ID_AC3 },
    { 0x8a, AVMEDIA_TYPE_AUDIO,   AV_CODEC_ID_DTS },
    { 0 },
}
const AVClass mpegtsraw_class [static]           | 
        
Initial value:
 {
    .class_name = "mpegtsraw demuxer",
    .item_name  = av_default_item_name,
    .option     = options,
    .version    = LIBAVUTIL_VERSION_INT,
}
Initial value:
 {
    {"compute_pcr", "Compute exact PCR for each transport stream packet.", 0x42, AV_OPT_TYPE_INT,
     {.i64 = 0}, 0, 1, AV_OPT_FLAG_DECODING_PARAM },
    { NULL },
}
const StreamType REGD_types[] [static]           | 
        
Initial value:
 {
    { MKTAG('d','r','a','c'), AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_DIRAC },
    { MKTAG('A','C','-','3'), AVMEDIA_TYPE_AUDIO,   AV_CODEC_ID_AC3 },
    { MKTAG('B','S','S','D'), AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_S302M },
    { MKTAG('D','T','S','1'), AVMEDIA_TYPE_AUDIO,   AV_CODEC_ID_DTS },
    { MKTAG('D','T','S','2'), AVMEDIA_TYPE_AUDIO,   AV_CODEC_ID_DTS },
    { MKTAG('D','T','S','3'), AVMEDIA_TYPE_AUDIO,   AV_CODEC_ID_DTS },
    { MKTAG('V','C','-','1'), AVMEDIA_TYPE_VIDEO,   AV_CODEC_ID_VC1 },
    { 0 },
}
 1.5.8