diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c index 491fb864c0..f1a3b3a348 100644 --- a/libavcodec/mlpdec.c +++ b/libavcodec/mlpdec.c @@ -344,15 +344,20 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp, : MAX_MATRIX_CHANNEL_TRUEHD; sync_word = get_bits(gbp, 13); - s->noise_type = get_bits1(gbp); - if ((m->avctx->codec_id == CODEC_ID_MLP && s->noise_type) || - sync_word != 0x31ea >> 1) { + if (sync_word != 0x31ea >> 1) { av_log(m->avctx, AV_LOG_ERROR, "restart header sync incorrect (got 0x%04x)\n", sync_word); return -1; } + s->noise_type = get_bits1(gbp); + + if (m->avctx->codec_id == CODEC_ID_MLP && s->noise_type) { + av_log(m->avctx, AV_LOG_ERROR, "MLP must have 0x31ea sync word.\n"); + return -1; + } + skip_bits(gbp, 16); /* Output timestamp */ s->min_channel = get_bits(gbp, 4);