X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=wmadec_filter.c;h=e41e8c505e88e8cdbd325d1e299ed292c49e488b;hp=c7403c3d6469b89eabd551dff084d224acabfd07;hb=232020d1a15641c8a492c07f79f59df7d4d279ea;hpb=a4ae014c7b47509d236ddc7a63a3510079470382 diff --git a/wmadec_filter.c b/wmadec_filter.c index c7403c3d..e41e8c50 100644 --- a/wmadec_filter.c +++ b/wmadec_filter.c @@ -183,7 +183,7 @@ static void init_coef_vlc(struct vlc *vlc, uint16_t **prun_table, uint16_t *run_table, *level_table, *int_table; int i, l, j, k, level; - init_vlc(vlc, VLCBITS, n, table_bits, table_codes, 4, 4); + init_vlc(vlc, VLCBITS, n, table_bits, table_codes, 4); run_table = para_malloc(n * sizeof(uint16_t)); level_table = para_malloc(n * sizeof(uint16_t)); @@ -489,14 +489,14 @@ static int wma_decode_init(char *initial_buf, int len, struct private_wmadec_dat PARA_INFO_LOG("using noise coding\n"); init_vlc(&pwd->hgain_vlc, HGAINVLCBITS, sizeof(ff_wma_hgain_huffbits), ff_wma_hgain_huffbits, - ff_wma_hgain_huffcodes, 2, 2); + ff_wma_hgain_huffcodes, 2); } if (pwd->use_exp_vlc) { PARA_INFO_LOG("using exp_vlc\n"); init_vlc(&pwd->exp_vlc, EXPVLCBITS, sizeof(ff_wma_scale_huffbits), ff_wma_scale_huffbits, - ff_wma_scale_huffcodes, 4, 4); + ff_wma_scale_huffcodes, 4); } else { PARA_INFO_LOG("using curve\n"); wma_lsp_to_curve_init(pwd, pwd->frame_len); @@ -574,27 +574,6 @@ static void decode_exp_lsp(struct private_wmadec_data *pwd, int ch) pwd->block_len, lsp_coefs); } -/* - * Parse a vlc code, faster then get_vlc(). - * - * \param bits The number of bits which will be read at once, must be - * identical to nb_bits in init_vlc() - * - * \param max_depth The number of times bits bits must be read to completely - * read the longest vlc code = (max_vlc_length + bits - 1) / bits. - */ -static int get_vlc2(struct getbit_context *s, VLC_TYPE(*table)[2], - int bits, int max_depth) -{ - int code; - - OPEN_READER(re, s) - UPDATE_CACHE(re, s) - GET_VLC(code, re, s, table, bits, max_depth) - CLOSE_READER(re, s) - return code; -} - /* Decode exponents coded with VLC codes. */ static int decode_exp_vlc(struct private_wmadec_data *pwd, int ch) { @@ -610,7 +589,7 @@ static int decode_exp_vlc(struct private_wmadec_data *pwd, int ch) last_exp = 36; while (q < q_end) { - code = get_vlc2(&pwd->gb, pwd->exp_vlc.table, EXPVLCBITS, EXPMAX); + code = get_vlc(&pwd->gb, pwd->exp_vlc.table, EXPVLCBITS, EXPMAX); if (code < 0) return -1; /* NOTE: this offset is the same as MPEG4 AAC ! */ @@ -752,10 +731,10 @@ static int wma_decode_block(struct private_wmadec_data *pwd) return -E_INCOHERENT_BLOCK_LEN; if (pwd->ahi.channels == 2) - pwd->ms_stereo = get_bits1(&pwd->gb); + pwd->ms_stereo = get_bit(&pwd->gb); v = 0; for (ch = 0; ch < pwd->ahi.channels; ch++) { - int a = get_bits1(&pwd->gb); + int a = get_bit(&pwd->gb); pwd->channel_coded[ch] = a; v |= a; } @@ -791,7 +770,7 @@ static int wma_decode_block(struct private_wmadec_data *pwd) int i, m, a; m = pwd->exponent_high_sizes[bsize]; for (i = 0; i < m; i++) { - a = get_bits1(&pwd->gb); + a = get_bit(&pwd->gb); pwd->high_band_coded[ch][i] = a; /* if noise coding, the coefficients are not transmitted */ if (a) @@ -816,7 +795,7 @@ static int wma_decode_block(struct private_wmadec_data *pwd) 7) - 19; } else { code = - get_vlc2(&pwd->gb, + get_vlc(&pwd->gb, pwd-> hgain_vlc. table, @@ -835,7 +814,7 @@ static int wma_decode_block(struct private_wmadec_data *pwd) } /* exponents can be reused in short blocks. */ - if ((pwd->block_len_bits == pwd->frame_len_bits) || get_bits1(&pwd->gb)) { + if ((pwd->block_len_bits == pwd->frame_len_bits) || get_bit(&pwd->gb)) { for (ch = 0; ch < pwd->ahi.channels; ch++) { if (pwd->channel_coded[ch]) { if (pwd->use_exp_vlc) { @@ -869,7 +848,7 @@ static int wma_decode_block(struct private_wmadec_data *pwd) memset(ptr, 0, pwd->block_len * sizeof(int16_t)); for (;;) { code = - get_vlc2(&pwd->gb, coef_vlc->table, VLCBITS, + get_vlc(&pwd->gb, coef_vlc->table, VLCBITS, VLCMAX); if (code < 0) return -1; @@ -888,7 +867,7 @@ static int wma_decode_block(struct private_wmadec_data *pwd) run = run_table[code]; level = level_table[code]; } - sign = get_bits1(&pwd->gb); + sign = get_bit(&pwd->gb); if (!sign) level = -level; ptr += run; @@ -1178,7 +1157,7 @@ static int wma_decode_superframe(struct private_wmadec_data *pwd, void *data, return 0; buf_size = pwd->ahi.block_align; samples = data; - init_get_bits(&pwd->gb, buf, buf_size * 8); + init_get_bits(&pwd->gb, buf, buf_size); if (pwd->use_bit_reservoir) { /* read super frame header */ skip_bits(&pwd->gb, 4); /* super frame index */ @@ -1208,7 +1187,7 @@ static int wma_decode_superframe(struct private_wmadec_data *pwd, void *data, /* XXX: bit_offset bits into last frame */ init_get_bits(&pwd->gb, pwd->last_superframe, - MAX_CODED_SUPERFRAME_SIZE * 8); + MAX_CODED_SUPERFRAME_SIZE); /* skip unused bits */ if (pwd->last_bitoffset > 0) skip_bits(&pwd->gb, pwd->last_bitoffset); @@ -1226,7 +1205,7 @@ static int wma_decode_superframe(struct private_wmadec_data *pwd, void *data, /* read each frame starting from bit_offset */ pos = bit_offset + 4 + 4 + pwd->byte_offset_bits + 3; init_get_bits(&pwd->gb, buf + (pos >> 3), - (MAX_CODED_SUPERFRAME_SIZE - (pos >> 3)) * 8); + (MAX_CODED_SUPERFRAME_SIZE - (pos >> 3))); len = pos & 7; if (len > 0) skip_bits(&pwd->gb, len);