# HG changeset patch # User bellard # Date 1036022833 0 # Node ID e9bfaabcf07d8a616391461da15be7ba505cfe53 # Parent 0e1d375c537f82ed596464d75a3c2c9ecd470b85 fixed nb_block_sizes detection - fixed codec_id test (avctx->codec_id does not need to be initialized) diff -r 0e1d375c537f -r e9bfaabcf07d wmadec.c --- a/wmadec.c Wed Oct 30 22:55:07 2002 +0000 +++ b/wmadec.c Thu Oct 31 00:07:13 2002 +0000 @@ -245,7 +245,7 @@ s->bit_rate = avctx->bit_rate; s->block_align = avctx->block_align; - if (avctx->codec_id == CODEC_ID_WMAV1) { + if (avctx->codec->id == CODEC_ID_WMAV1) { s->version = 1; } else { s->version = 2; @@ -278,7 +278,14 @@ } s->frame_len = 1 << s->frame_len_bits; if (s->use_variable_block_len) { - s->nb_block_sizes = s->frame_len_bits - BLOCK_MIN_BITS + 1; + int nb_max, nb; + nb = ((flags2 >> 3) & 3) + 1; + if ((s->bit_rate / s->nb_channels) >= 32000) + nb += 2; + nb_max = s->frame_len_bits - BLOCK_MIN_BITS; + if (nb > nb_max) + nb = nb_max; + s->nb_block_sizes = nb + 1; } else { s->nb_block_sizes = 1; } @@ -353,8 +360,8 @@ s->block_align); printf("bps=%f bps1=%f high_freq=%f bitoffset=%d\n", bps, bps1, high_freq, s->byte_offset_bits); - printf("use_noise_coding=%d use_exp_vlc=%d\n", - s->use_noise_coding, s->use_exp_vlc); + printf("use_noise_coding=%d use_exp_vlc=%d nb_block_sizes=%d\n", + s->use_noise_coding, s->use_exp_vlc, s->nb_block_sizes); #endif /* compute the scale factor band sizes for each MDCT block size */