diff options
author | Paul B Mahol <onemda@gmail.com> | 2021-09-06 23:56:48 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2021-10-03 11:46:53 +0200 |
commit | 17130321f3faaa01c7360f904229c7b9b4410703 (patch) | |
tree | 642b6e83909c203d629813e0645f0c66ca72f3eb /libavcodec/mlpdec.c | |
parent | 114634a51a7ca2ea4d375d62eba55123ce2262d5 (diff) |
avcodec/mlpdec: skip decoding substreams if their channels are not to be used
Diffstat (limited to 'libavcodec/mlpdec.c')
-rw-r--r-- | libavcodec/mlpdec.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c index d56e214e1e..68c270ef52 100644 --- a/libavcodec/mlpdec.c +++ b/libavcodec/mlpdec.c @@ -1249,6 +1249,12 @@ static int read_access_unit(AVCodecContext *avctx, void* data, for (substr = 0; substr <= m->max_decoded_substream; substr++) { SubStream *s = &m->substream[substr]; + + if (substr != m->max_decoded_substream && + m->substream[m->max_decoded_substream].min_channel == 0 && + m->substream[m->max_decoded_substream].max_channel == avctx->channels - 1) + goto skip_substr; + init_get_bits(&gb, buf, substream_data_len[substr] * 8); m->matrix_changed = 0; @@ -1322,6 +1328,7 @@ next_substr: av_log(m->avctx, AV_LOG_ERROR, "No restart header present in substream %d.\n", substr); +skip_substr: buf += substream_data_len[substr]; } |