|
|
|
@ -640,6 +640,11 @@ static const StreamType REGD_types[] = { |
|
|
|
|
{ 0 }, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const StreamType METADATA_types[] = { |
|
|
|
|
{ MKTAG('K','L','V','A'), AVMEDIA_TYPE_DATA, AV_CODEC_ID_SMPTE_KLV }, |
|
|
|
|
{ 0 }, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/* descriptor present */ |
|
|
|
|
static const StreamType DESC_types[] = { |
|
|
|
|
{ 0x6a, AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_AC3 }, /* AC-3 descriptor */ |
|
|
|
@ -1002,6 +1007,12 @@ static int mpegts_push_data(MpegTSFilter *filter, |
|
|
|
|
p += sl_header_bytes; |
|
|
|
|
buf_size -= sl_header_bytes; |
|
|
|
|
} |
|
|
|
|
if (pes->stream_type == 0x15 && buf_size >= 5) { |
|
|
|
|
/* skip metadata access unit header */ |
|
|
|
|
pes->pes_header_size += 5; |
|
|
|
|
p += 5; |
|
|
|
|
buf_size -= 5; |
|
|
|
|
} |
|
|
|
|
if (pes->ts->fix_teletext_pts && pes->st->codec->codec_id == AV_CODEC_ID_DVB_TELETEXT) { |
|
|
|
|
AVProgram *p = NULL; |
|
|
|
|
while ((p = av_find_program_from_stream(pes->stream, p, pes->st->index))) { |
|
|
|
@ -1489,6 +1500,15 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type |
|
|
|
|
case 0x52: /* stream identifier descriptor */ |
|
|
|
|
st->stream_identifier = 1 + get8(pp, desc_end); |
|
|
|
|
break; |
|
|
|
|
case 0x26: /* metadata descriptor */ |
|
|
|
|
if (get16(pp, desc_end) == 0xFFFF) |
|
|
|
|
*pp += 4; |
|
|
|
|
if (get8(pp, desc_end) == 0xFF) { |
|
|
|
|
st->codec->codec_tag = bytestream_get_le32(pp); |
|
|
|
|
if (st->codec->codec_id == AV_CODEC_ID_NONE) |
|
|
|
|
mpegts_find_stream_type(st, st->codec->codec_tag, METADATA_types); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|