diff options
author | Mats Peterson <matsp888@yahoo.com> | 2016-01-15 23:25:38 +0100 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-01-16 11:44:46 +0100 |
commit | 535d09a51099d3c796d6c0c3ec381ff99d5ce0c8 (patch) | |
tree | 0fb75ced4ab52a8a2579c2a784f12d6a37bb12c8 /libavformat/matroskadec.c | |
parent | a51c8a68adbe466a4fddd9ff83aadd16bd0ece03 (diff) | |
download | ffmpeg-535d09a51099d3c796d6c0c3ec381ff99d5ce0c8.tar.gz |
lavf/matroskadec: Get sample size from private data
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavformat/matroskadec.c')
-rw-r--r-- | libavformat/matroskadec.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index cc5ec19590..d788232150 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -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)) { |