struct private_wmadec_data {
struct asf_header_info ahi;
struct getbit_context gb;
+ /** Whether to use the bit reservoir. */
int use_bit_reservoir;
+ /** Whether to use variable block length. */
int use_variable_block_len;
- int use_exp_vlc; ///< exponent coding: 0 = lsp, 1 = vlc + delta
- int use_noise_coding; ///< true if perceptual noise is added
+ /** Whether to use exponent coding. */
+ int use_exp_vlc;
+ /** Whether perceptual noise is added. */
+ int use_noise_coding;
int byte_offset_bits;
struct vlc exp_vlc;
int exponent_sizes[BLOCK_NB_SIZES];
uint16_t exponent_bands[BLOCK_NB_SIZES][25];
- int high_band_start[BLOCK_NB_SIZES]; ///< index of first coef in high band
- int coefs_start; ///< first coded coef
+ /** The index of the first coef in high band. */
+ int high_band_start[BLOCK_NB_SIZES];
int coefs_end[BLOCK_NB_SIZES]; ///< max number of coded coefficients
int exponent_high_sizes[BLOCK_NB_SIZES];
int exponent_high_bands[BLOCK_NB_SIZES][HIGH_BAND_MAX_SIZE];
int a, b, pos, lpos, k, block_len, i, j, n;
const uint8_t *table;
- pwd->coefs_start = 0;
for (k = 0; k < pwd->nb_block_sizes; k++) {
block_len = pwd->frame_len >> k;
coefs = pwd->coefs[ch];
if (!pwd->use_noise_coding) {
/* XXX: optimize more */
- for (i = 0; i < pwd->coefs_start; i++)
- *coefs++ = 0.0;
n = nb_coefs[ch];
for (i = 0; i < n; i++)
*coefs++ = coefs1[i] *
continue;
}
mult1 = mult;
- /* very low freqs: noise */
- for (i = 0; i < pwd->coefs_start; i++) {
- *coefs++ = pwd->noise_table[pwd->noise_index] *
- exponents[i << bsize >> esize] * mult1;
- pwd->noise_index = (pwd->noise_index + 1) &
- (NOISE_TAB_SIZE - 1);
- }
n1 = pwd->exponent_high_sizes[bsize];
/* compute power of high bands */
exponents = pwd->exponents[ch] +
exponents += n << bsize;
}
/* main freqs and high freqs */
- exponents = pwd->exponents[ch] + (pwd->coefs_start << bsize);
+ exponents = pwd->exponents[ch];
for (j = -1; j < n1; j++) {
if (j < 0)
- n = pwd->high_band_start[bsize]
- - pwd->coefs_start;
+ n = pwd->high_band_start[bsize];
else
n = pwd->exponent_high_bands[pwd->frame_len_bits
- pwd->block_len_bits][j];
if (!v)
goto next;
- /* read total gain and extract corresponding number of bits for
- coef escape coding */
+ /*
+ * Read total gain and extract corresponding number of bits for coef
+ * escape coding.
+ */
total_gain = 1;
for (;;) {
int a = get_bits(&pwd->gb, 7);
coef_nb_bits = wma_total_gain_to_bits(total_gain);
/* compute number of coefficients */
- n = pwd->coefs_end[bsize] - pwd->coefs_start;
+ n = pwd->coefs_end[bsize];
for (ch = 0; ch < pwd->ahi.channels; ch++)
nb_coefs[ch] = n;
break;
}
}
-
compute_mdct_coefficients(pwd, bsize, total_gain, nb_coefs);
-
if (pwd->ms_stereo && pwd->channel_coded[1]) {
float a, b;
int i;
-
/*
* Nominal case for ms stereo: we do it before mdct.
*
pwd->coefs[1][i] = a - b;
}
}
-
next:
for (ch = 0; ch < pwd->ahi.channels; ch++) {
int n4, index;