mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-30 23:10:32 +00:00
Merge commit '26ffcc7de1d98f77400a2ebe4e75055515c54587'
* commit '26ffcc7de1d98f77400a2ebe4e75055515c54587': dcadec: Use int32_to_float_fmul_array8 Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
1573274b91
@ -1306,7 +1306,7 @@ static int dca_subsubframe(DCAContext *s, int base_channel, int block_index)
|
||||
|
||||
/* FIXME */
|
||||
float (*subband_samples)[DCA_SUBBANDS][8] = s->subband_samples[block_index];
|
||||
LOCAL_ALIGNED_16(int32_t, block, [8]);
|
||||
LOCAL_ALIGNED_16(int32_t, block, [8 * DCA_SUBBANDS]);
|
||||
|
||||
/*
|
||||
* Audio data
|
||||
@ -1319,6 +1319,8 @@ static int dca_subsubframe(DCAContext *s, int base_channel, int block_index)
|
||||
quant_step_table = lossy_quant_d;
|
||||
|
||||
for (k = base_channel; k < s->prim_channels; k++) {
|
||||
float rscale[DCA_SUBBANDS];
|
||||
|
||||
if (get_bits_left(&s->gb) < 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
@ -1341,11 +1343,12 @@ static int dca_subsubframe(DCAContext *s, int base_channel, int block_index)
|
||||
* Extract bits from the bit stream
|
||||
*/
|
||||
if (!abits) {
|
||||
memset(subband_samples[k][l], 0, 8 * sizeof(subband_samples[0][0][0]));
|
||||
rscale[l] = 0;
|
||||
memset(block + 8 * l, 0, 8 * sizeof(block[0]));
|
||||
} else {
|
||||
/* Deal with transients */
|
||||
int sfi = s->transition_mode[k][l] && subsubframe >= s->transition_mode[k][l];
|
||||
float rscale = quant_step_size * s->scale_factor[k][l][sfi] *
|
||||
rscale[l] = quant_step_size * s->scale_factor[k][l][sfi] *
|
||||
s->scalefactor_adj[k][sel];
|
||||
|
||||
if (abits >= 11 || !dca_smpl_bitalloc[abits].vlc[sel].table) {
|
||||
@ -1359,7 +1362,7 @@ static int dca_subsubframe(DCAContext *s, int base_channel, int block_index)
|
||||
block_code1 = get_bits(&s->gb, size);
|
||||
block_code2 = get_bits(&s->gb, size);
|
||||
err = decode_blockcodes(block_code1, block_code2,
|
||||
levels, block);
|
||||
levels, block + 8 * l);
|
||||
if (err) {
|
||||
av_log(s->avctx, AV_LOG_ERROR,
|
||||
"ERROR: block code look-up failed\n");
|
||||
@ -1368,19 +1371,23 @@ static int dca_subsubframe(DCAContext *s, int base_channel, int block_index)
|
||||
} else {
|
||||
/* no coding */
|
||||
for (m = 0; m < 8; m++)
|
||||
block[m] = get_sbits(&s->gb, abits - 3);
|
||||
block[8 * l + m] = get_sbits(&s->gb, abits - 3);
|
||||
}
|
||||
} else {
|
||||
/* Huffman coded */
|
||||
for (m = 0; m < 8; m++)
|
||||
block[m] = get_bitalloc(&s->gb,
|
||||
block[8 * l + m] = get_bitalloc(&s->gb,
|
||||
&dca_smpl_bitalloc[abits], sel);
|
||||
}
|
||||
|
||||
s->fmt_conv.int32_to_float_fmul_scalar(subband_samples[k][l],
|
||||
block, rscale, 8);
|
||||
}
|
||||
}
|
||||
|
||||
s->fmt_conv.int32_to_float_fmul_array8(&s->fmt_conv, subband_samples[k][0],
|
||||
block, rscale, 8 * s->vq_start_subband[k]);
|
||||
|
||||
for (l = 0; l < s->vq_start_subband[k]; l++) {
|
||||
int m;
|
||||
/*
|
||||
* Inverse ADPCM if in prediction mode
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user