|
|
|
@ -2525,7 +2525,6 @@ static int mka_parse_audio_codec(MatroskaTrack *track, AVCodecParameters *par, |
|
|
|
|
if (!strcmp(track->codec_id, "A_MS/ACM") && |
|
|
|
|
track->codec_priv.size >= 14) { |
|
|
|
|
FFIOContext b; |
|
|
|
|
int ret; |
|
|
|
|
ffio_init_context(&b, track->codec_priv.data, |
|
|
|
|
track->codec_priv.size, |
|
|
|
|
0, NULL, NULL, NULL, NULL); |
|
|
|
@ -2535,13 +2534,14 @@ static int mka_parse_audio_codec(MatroskaTrack *track, AVCodecParameters *par, |
|
|
|
|
return ret; |
|
|
|
|
*extradata_offset = FFMIN(track->codec_priv.size, 18); |
|
|
|
|
return 0; |
|
|
|
|
} else if (!strcmp(track->codec_id, "A_QUICKTIME") |
|
|
|
|
} else if (!strcmp(track->codec_id, "A_QUICKTIME") && |
|
|
|
|
/* Normally 36, but allow noncompliant private data */ |
|
|
|
|
&& track->codec_priv.size >= 32) { |
|
|
|
|
track->codec_priv.size >= 32) { |
|
|
|
|
enum AVCodecID codec_id; |
|
|
|
|
uint32_t fourcc; |
|
|
|
|
uint16_t sample_size; |
|
|
|
|
int ret = get_qt_codec(track, &fourcc, &codec_id); |
|
|
|
|
|
|
|
|
|
ret = get_qt_codec(track, &fourcc, &codec_id); |
|
|
|
|
if (ret < 0) |
|
|
|
|
return ret; |
|
|
|
|
sample_size = AV_RB16(track->codec_priv.data + 26); |
|
|
|
@ -2555,8 +2555,7 @@ static int mka_parse_audio_codec(MatroskaTrack *track, AVCodecParameters *par, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if ((fourcc == MKTAG('t','w','o','s') || |
|
|
|
|
fourcc == MKTAG('s','o','w','t')) && |
|
|
|
|
sample_size == 8) |
|
|
|
|
fourcc == MKTAG('s','o','w','t')) && sample_size == 8) |
|
|
|
|
codec_id = AV_CODEC_ID_PCM_S8; |
|
|
|
|
par->codec_id = codec_id; |
|
|
|
|
par->codec_tag = fourcc; |
|
|
|
|