avformat/matroskadec: force full frame parsing of MLP/TrueHD streams
authorJames Almer <jamrial@gmail.com>
Tue, 30 Jan 2018 01:59:52 +0000 (22:59 -0300)
committerJames Almer <jamrial@gmail.com>
Tue, 30 Jan 2018 02:09:08 +0000 (23:09 -0300)
There's at least one known file with a TrueHD stream that hasn't
been correctly muxed, and requires full frame parsing and repack.

Signed-off-by: James Almer <jamrial@gmail.com>
libavformat/matroskadec.c

index a45fe09..cda8df2 100644 (file)
@@ -2521,7 +2521,9 @@ static int matroska_parse_tracks(AVFormatContext *s)
             st->codecpar->channels    = track->audio.channels;
             if (!st->codecpar->bits_per_coded_sample)
                 st->codecpar->bits_per_coded_sample = track->audio.bitdepth;
-            if (st->codecpar->codec_id == AV_CODEC_ID_MP3)
+            if (st->codecpar->codec_id == AV_CODEC_ID_MP3 ||
+                st->codecpar->codec_id == AV_CODEC_ID_MLP ||
+                st->codecpar->codec_id == AV_CODEC_ID_TRUEHD)
                 st->need_parsing = AVSTREAM_PARSE_FULL;
             else if (st->codecpar->codec_id != AV_CODEC_ID_AAC)
                 st->need_parsing = AVSTREAM_PARSE_HEADERS;