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.

Originally committed as revision 18762 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Ramiro Polla 2009-05-06 15:46:10 +00:00
parent aff42ee0ff
commit e8d341ce19
1 changed files with 8 additions and 3 deletions

View File

@ -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);