From 85eded42c67ddce01a7c1dcdfdc3c6e4a97fc0f0 Mon Sep 17 00:00:00 2001 From: ramiro Date: Wed, 6 May 2009 15:46:10 +0000 Subject: [PATCH] mlpdec: Split sync word error and MLP sync word check. The previous code would print the wrong error message for MLP streams with TrueHD noise type. git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18762 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b --- libavcodec/mlpdec.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c index 491fb864c..f1a3b3a34 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); -- 2.39.2