1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-07-11 14:30:22 +02:00

avformat/mpegts: add constants for MPEG-TS transport stream identifiers

Signed-off-by: Brad Hards <bradh@frogmouth.net>
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
Brad Hards
2020-06-09 01:01:24 +02:00
committed by Marton Balint
parent 81975cd24b
commit fb819697f6
2 changed files with 15 additions and 8 deletions

View File

@ -137,6 +137,13 @@
#define STREAM_TYPE_AUDIO_TRUEHD 0x83 #define STREAM_TYPE_AUDIO_TRUEHD 0x83
#define STREAM_TYPE_AUDIO_EAC3 0x87 #define STREAM_TYPE_AUDIO_EAC3 0x87
/* ISO/IEC 13818-1 Table 2-22 */
#define STREAM_ID_PRIVATE_STREAM_1 0xbd
#define STREAM_ID_AUDIO_STREAM_0 0xc0
#define STREAM_ID_VIDEO_STREAM_0 0xe0
#define STREAM_ID_METADATA_STREAM 0xfc
#define STREAM_ID_EXTENDED_STREAM_ID 0xfd
typedef struct MpegTSContext MpegTSContext; typedef struct MpegTSContext MpegTSContext;
MpegTSContext *avpriv_mpegts_parse_open(AVFormatContext *s); MpegTSContext *avpriv_mpegts_parse_open(AVFormatContext *s);

View File

@ -1382,28 +1382,28 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st,
is_dvb_teletext = 0; is_dvb_teletext = 0;
if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
if (st->codecpar->codec_id == AV_CODEC_ID_DIRAC) if (st->codecpar->codec_id == AV_CODEC_ID_DIRAC)
*q++ = 0xfd; *q++ = STREAM_ID_EXTENDED_STREAM_ID;
else else
*q++ = 0xe0; *q++ = STREAM_ID_VIDEO_STREAM_0;
} else if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && } else if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
(st->codecpar->codec_id == AV_CODEC_ID_MP2 || (st->codecpar->codec_id == AV_CODEC_ID_MP2 ||
st->codecpar->codec_id == AV_CODEC_ID_MP3 || st->codecpar->codec_id == AV_CODEC_ID_MP3 ||
st->codecpar->codec_id == AV_CODEC_ID_AAC)) { st->codecpar->codec_id == AV_CODEC_ID_AAC)) {
*q++ = 0xc0; *q++ = STREAM_ID_AUDIO_STREAM_0;
} else if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && } else if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
st->codecpar->codec_id == AV_CODEC_ID_AC3 && st->codecpar->codec_id == AV_CODEC_ID_AC3 &&
ts->m2ts_mode) { ts->m2ts_mode) {
*q++ = 0xfd; *q++ = STREAM_ID_EXTENDED_STREAM_ID;
} else if (st->codecpar->codec_type == AVMEDIA_TYPE_DATA && } else if (st->codecpar->codec_type == AVMEDIA_TYPE_DATA &&
st->codecpar->codec_id == AV_CODEC_ID_TIMED_ID3) { st->codecpar->codec_id == AV_CODEC_ID_TIMED_ID3) {
*q++ = 0xbd; *q++ = STREAM_ID_PRIVATE_STREAM_1;
} else if (st->codecpar->codec_type == AVMEDIA_TYPE_DATA) { } else if (st->codecpar->codec_type == AVMEDIA_TYPE_DATA) {
*q++ = stream_id != -1 ? stream_id : 0xfc; *q++ = stream_id != -1 ? stream_id : STREAM_ID_METADATA_STREAM;
if (stream_id == 0xbd) /* asynchronous KLV */ if (stream_id == STREAM_ID_PRIVATE_STREAM_1) /* asynchronous KLV */
pts = dts = AV_NOPTS_VALUE; pts = dts = AV_NOPTS_VALUE;
} else { } else {
*q++ = 0xbd; *q++ = STREAM_ID_PRIVATE_STREAM_1;
if (st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) { if (st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) {
if (st->codecpar->codec_id == AV_CODEC_ID_DVB_SUBTITLE) { if (st->codecpar->codec_id == AV_CODEC_ID_DVB_SUBTITLE) {
is_dvb_subtitle = 1; is_dvb_subtitle = 1;