|
|
|
@@ -1891,18 +1891,24 @@ static int matroska_parse_tracks(AVFormatContext *s) |
|
|
|
/* Normally 36, but allow noncompliant private data */ |
|
|
|
&& (track->codec_priv.size >= 32) |
|
|
|
&& (track->codec_priv.data)) { |
|
|
|
uint16_t sample_size; |
|
|
|
int ret = get_qt_codec(track, &fourcc, &codec_id); |
|
|
|
if (ret < 0) |
|
|
|
return ret; |
|
|
|
sample_size = AV_RB16(track->codec_priv.data + 26); |
|
|
|
if (fourcc == 0) { |
|
|
|
if (track->audio.bitdepth == 8) { |
|
|
|
if (sample_size == 8) { |
|
|
|
fourcc = MKTAG('r','a','w',' '); |
|
|
|
codec_id = ff_codec_get_id(ff_codec_movaudio_tags, fourcc); |
|
|
|
} else if (track->audio.bitdepth == 16) { |
|
|
|
} else if (sample_size == 16) { |
|
|
|
fourcc = MKTAG('t','w','o','s'); |
|
|
|
codec_id = ff_codec_get_id(ff_codec_movaudio_tags, fourcc); |
|
|
|
} |
|
|
|
} |
|
|
|
if ((fourcc == MKTAG('t','w','o','s') || |
|
|
|
fourcc == MKTAG('s','o','w','t')) && |
|
|
|
sample_size == 8) |
|
|
|
codec_id = AV_CODEC_ID_PCM_S8; |
|
|
|
} else if (!strcmp(track->codec_id, "V_QUICKTIME") && |
|
|
|
(track->codec_priv.size >= 21) && |
|
|
|
(track->codec_priv.data)) { |
|
|
|
|