|
|
@@ -981,10 +981,13 @@ static void inverse_channel_transform(WMAProDecodeCtx *s) |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (s->num_channels == 2) { |
|
|
|
for (y = sfb[0]; y < FFMIN(sfb[1], s->subframe_len); y++) { |
|
|
|
ch_data[0][y] *= 181.0 / 128; |
|
|
|
ch_data[1][y] *= 181.0 / 128; |
|
|
|
} |
|
|
|
int len = FFMIN(sfb[1], s->subframe_len) - sfb[0]; |
|
|
|
s->dsp.vector_fmul_scalar(ch_data[0] + sfb[0], |
|
|
|
ch_data[0] + sfb[0], |
|
|
|
181.0 / 128, len); |
|
|
|
s->dsp.vector_fmul_scalar(ch_data[1] + sfb[0], |
|
|
|
ch_data[1] + sfb[0], |
|
|
|
181.0 / 128, len); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@@ -1214,10 +1217,10 @@ static int decode_subframe(WMAProDecodeCtx *s) |
|
|
|
(s->channel[c].max_scale_factor - *sf++) * |
|
|
|
s->channel[c].scale_factor_step; |
|
|
|
const float quant = pow(10.0, exp / 20.0); |
|
|
|
int start; |
|
|
|
|
|
|
|
for (start = s->cur_sfb_offsets[b]; start < end; start++) |
|
|
|
s->tmp[start] = s->channel[c].coeffs[start] * quant; |
|
|
|
int start = s->cur_sfb_offsets[b]; |
|
|
|
s->dsp.vector_fmul_scalar(s->tmp + start, |
|
|
|
s->channel[c].coeffs + start, |
|
|
|
quant, end - start); |
|
|
|
} |
|
|
|
|
|
|
|
/** apply imdct (ff_imdct_half == DCTIV with reverse) */ |
|
|
|