avformat/mpegts: Do not trust BSSD descriptor, it is sometimes not an S302M stream

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer 2016-06-06 21:43:01 +02:00
parent 9511a0895d
commit a5eb70ad95

View File

@ -1804,8 +1804,11 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type
case 0x05: /* registration descriptor */ case 0x05: /* registration descriptor */
st->codecpar->codec_tag = bytestream_get_le32(pp); st->codecpar->codec_tag = bytestream_get_le32(pp);
av_log(fc, AV_LOG_TRACE, "reg_desc=%.4s\n", (char *)&st->codecpar->codec_tag); av_log(fc, AV_LOG_TRACE, "reg_desc=%.4s\n", (char *)&st->codecpar->codec_tag);
if (st->codecpar->codec_id == AV_CODEC_ID_NONE || st->request_probe > 0) if (st->codecpar->codec_id == AV_CODEC_ID_NONE || st->request_probe > 0) {
mpegts_find_stream_type(st, st->codecpar->codec_tag, REGD_types); mpegts_find_stream_type(st, st->codecpar->codec_tag, REGD_types);
if (st->codecpar->codec_tag == MKTAG('B', 'S', 'S', 'D'))
st->request_probe = 50;
}
break; break;
case 0x52: /* stream identifier descriptor */ case 0x52: /* stream identifier descriptor */
st->stream_identifier = 1 + get8(pp, desc_end); st->stream_identifier = 1 + get8(pp, desc_end);