uint16_t *run_table, *level_table, *int_table;
int i, l, j, k, level;
- init_vlc(vlc, VLCBITS, n, table_bits, 1, 1, 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));
}
}
-static int wma_init(struct private_wmadec_data *pwd, int flags2, struct asf_header_info *ahi)
+static int wma_init(struct private_wmadec_data *pwd)
{
int i;
float bps1, high_freq;
volatile float bps;
int sample_rate1;
int coef_vlc_table;
+ struct asf_header_info *ahi = &pwd->ahi;
+ int flags2 = ahi->flags2;
if (ahi->sample_rate <= 0 || ahi->sample_rate > 50000
|| ahi->channels <= 0 || ahi->channels > 8
pwd->use_bit_reservoir = pwd->ahi.flags2 & 0x0002;
pwd->use_variable_block_len = pwd->ahi.flags2 & 0x0004;
- ret = wma_init(pwd, pwd->ahi.flags2, &pwd->ahi);
+ ret = wma_init(pwd);
if (ret < 0)
return ret;
/* init MDCT */
PARA_INFO_LOG("using noise coding\n");
init_vlc(&pwd->hgain_vlc, HGAINVLCBITS,
sizeof(ff_wma_hgain_huffbits), ff_wma_hgain_huffbits,
- 1, 1, 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,
- 1, 1, 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);
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)
{
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 ! */
7) - 19;
} else {
code =
- get_vlc2(&pwd->gb,
+ get_vlc(&pwd->gb,
pwd->
hgain_vlc.
table,
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;
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 */
/* 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);
/* 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);