diff options
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/mlp.h | 6 | ||||
-rw-r--r-- | libavcodec/mlpdec.c | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/libavcodec/mlp.h b/libavcodec/mlp.h index 032a8f6bdf..c19b69915e 100644 --- a/libavcodec/mlp.h +++ b/libavcodec/mlp.h @@ -34,10 +34,10 @@ */ #define MAX_MATRICES 15 -/** Maximum number of substreams that can be decoded. This could also be set - * higher, but I haven't seen any examples with more than two. +/** Maximum number of substreams that can be decoded. + * MLP's limit is 2. TrueHD supports at least up to 3. */ -#define MAX_SUBSTREAMS 2 +#define MAX_SUBSTREAMS 3 /** maximum sample frequency seen in files */ #define MAX_SAMPLERATE 192000 diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c index 6b825cdea1..c71450062a 100644 --- a/libavcodec/mlpdec.c +++ b/libavcodec/mlpdec.c @@ -280,6 +280,10 @@ static int read_major_sync(MLPDecodeContext *m, GetBitContext *gb) if (mh.num_substreams == 0) return -1; + if (m->avctx->codec_id == CODEC_ID_MLP && mh.num_substreams > 2) { + av_log(m->avctx, AV_LOG_ERROR, "MLP only supports up to 2 substreams.\n"); + return -1; + } if (mh.num_substreams > MAX_SUBSTREAMS) { av_log(m->avctx, AV_LOG_ERROR, "Number of substreams %d is larger than the maximum supported " |