FFmpeg
mpegts.h
Go to the documentation of this file.
1 /*
2  * MPEG-2 transport stream defines
3  * Copyright (c) 2003 Fabrice Bellard
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 #ifndef AVFORMAT_MPEGTS_H
23 #define AVFORMAT_MPEGTS_H
24 
25 #include "avformat.h"
26 
27 #define TS_FEC_PACKET_SIZE 204
28 #define TS_DVHS_PACKET_SIZE 192
29 #define TS_PACKET_SIZE 188
30 #define TS_MAX_PACKET_SIZE 204
31 
32 #define NB_PID_MAX 8192
33 #define MAX_SECTION_SIZE 4096
34 
35 /* pids */
36 #define PAT_PID 0x0000
37 #define SDT_PID 0x0011
38 
39 /* table ids */
40 #define PAT_TID 0x00
41 #define PMT_TID 0x02
42 #define M4OD_TID 0x05
43 #define SDT_TID 0x42
44 
45 #define STREAM_TYPE_VIDEO_MPEG1 0x01
46 #define STREAM_TYPE_VIDEO_MPEG2 0x02
47 #define STREAM_TYPE_AUDIO_MPEG1 0x03
48 #define STREAM_TYPE_AUDIO_MPEG2 0x04
49 #define STREAM_TYPE_PRIVATE_SECTION 0x05
50 #define STREAM_TYPE_PRIVATE_DATA 0x06
51 #define STREAM_TYPE_AUDIO_AAC 0x0f
52 #define STREAM_TYPE_AUDIO_AAC_LATM 0x11
53 #define STREAM_TYPE_VIDEO_MPEG4 0x10
54 #define STREAM_TYPE_METADATA 0x15
55 #define STREAM_TYPE_VIDEO_H264 0x1b
56 #define STREAM_TYPE_VIDEO_HEVC 0x24
57 #define STREAM_TYPE_VIDEO_CAVS 0x42
58 #define STREAM_TYPE_VIDEO_VC1 0xea
59 #define STREAM_TYPE_VIDEO_DIRAC 0xd1
60 
61 #define STREAM_TYPE_AUDIO_AC3 0x81
62 #define STREAM_TYPE_AUDIO_DTS 0x82
63 #define STREAM_TYPE_AUDIO_TRUEHD 0x83
64 #define STREAM_TYPE_AUDIO_EAC3 0x87
65 
66 typedef struct MpegTSContext MpegTSContext;
67 
70  const uint8_t *buf, int len);
72 
73 typedef struct SLConfigDescr {
79  int use_idle;
82  int ocr_len;
83  int au_len;
89 
90 typedef struct Mp4Descr {
91  int es_id;
95 } Mp4Descr;
96 
97 /**
98  * Parse an MPEG-2 descriptor
99  * @param[in] fc Format context (used for logging only)
100  * @param st Stream
101  * @param stream_type STREAM_TYPE_xxx
102  * @param pp Descriptor buffer pointer
103  * @param desc_list_end End of buffer
104  * @return <0 to stop processing
105  */
106 int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type,
107  const uint8_t **pp, const uint8_t *desc_list_end,
108  Mp4Descr *mp4_descr, int mp4_descr_count, int pid,
109  MpegTSContext *ts);
110 
111 /**
112  * Check presence of H264 startcode
113  * @return <0 to stop processing
114  */
116 
117 #endif /* AVFORMAT_MPEGTS_H */
SLConfigDescr::au_seq_num_len
int au_seq_num_len
Definition: mpegts.h:86
fc
#define fc(width, name, range_min, range_max)
Definition: cbs_av1.c:555
SLConfigDescr::use_idle
int use_idle
Definition: mpegts.h:79
SLConfigDescr::inst_bitrate_len
int inst_bitrate_len
Definition: mpegts.h:84
avpriv_mpegts_parse_open
MpegTSContext * avpriv_mpegts_parse_open(AVFormatContext *s)
Definition: mpegts.c:3231
SLConfigDescr::use_padding
int use_padding
Definition: mpegts.h:77
SLConfigDescr::use_rand_acc_pt
int use_rand_acc_pt
Definition: mpegts.h:76
SLConfigDescr::timestamp_len
int timestamp_len
Definition: mpegts.h:81
avpriv_mpegts_parse_packet
int avpriv_mpegts_parse_packet(MpegTSContext *ts, AVPacket *pkt, const uint8_t *buf, int len)
Definition: mpegts.c:3250
buf
void * buf
Definition: avisynth_c.h:766
Mp4Descr::sl
SLConfigDescr sl
Definition: mpegts.h:94
s
#define s(width, name)
Definition: cbs_vp9.c:257
SLConfigDescr::degr_prior_len
int degr_prior_len
Definition: mpegts.h:85
AVFormatContext
Format I/O context.
Definition: avformat.h:1342
Mp4Descr::es_id
int es_id
Definition: mpegts.h:91
Mp4Descr::dec_config_descr_len
int dec_config_descr_len
Definition: mpegts.h:92
SLConfigDescr::ocr_len
int ocr_len
Definition: mpegts.h:82
SLConfigDescr::packet_seq_num_len
int packet_seq_num_len
Definition: mpegts.h:87
SLConfigDescr::use_au_start
int use_au_start
Definition: mpegts.h:74
avpriv_mpegts_parse_close
void avpriv_mpegts_parse_close(MpegTSContext *ts)
Definition: mpegts.c:3275
MpegTSContext
Definition: mpegts.c:118
SLConfigDescr::use_au_end
int use_au_end
Definition: mpegts.h:75
uint8_t
uint8_t
Definition: audio_convert.c:194
len
int len
Definition: vorbis_enc_data.h:452
SLConfigDescr::au_len
int au_len
Definition: mpegts.h:83
ff_check_h264_startcode
int ff_check_h264_startcode(AVFormatContext *s, const AVStream *st, const AVPacket *pkt)
Check presence of H264 startcode.
Definition: mpegtsenc.c:1438
AVStream
Stream structure.
Definition: avformat.h:870
Mp4Descr::dec_config_descr
uint8_t * dec_config_descr
Definition: mpegts.h:93
SLConfigDescr::use_timestamps
int use_timestamps
Definition: mpegts.h:78
avformat.h
pkt
static AVPacket pkt
Definition: demuxing_decoding.c:54
SLConfigDescr::timestamp_res
int timestamp_res
Definition: mpegts.h:80
AVPacket
This structure stores compressed data.
Definition: avcodec.h:1454
ff_parse_mpeg2_descriptor
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.
Definition: mpegts.c:1766
Mp4Descr
Definition: mpegts.h:90
SLConfigDescr
Definition: mpegts.h:73