aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2023-09-09 12:00:42 +0200
committerPaul B Mahol <onemda@gmail.com>2023-09-09 12:09:30 +0200
commite6923e06c20d42f08b929fbfb4cad9c58d2e71e7 (patch)
treeb7b2009138bead048e44c43cd60f1cc2c2902f42
parentdcd92aa01ad67c9d63078cb97e47d570f986041e (diff)
downloadffmpeg-e6923e06c20d42f08b929fbfb4cad9c58d2e71e7.tar.gz
avcodec/hcadec: small refactoring
-rw-r--r--libavcodec/hcadec.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/libavcodec/hcadec.c b/libavcodec/hcadec.c
index c6dfa19c60..ebc9d8a8cd 100644
--- a/libavcodec/hcadec.c
+++ b/libavcodec/hcadec.c
@@ -31,7 +31,8 @@
#define MAX_CHANNELS 16
typedef struct ChannelContext {
- float base[128];
+ DECLARE_ALIGNED(32, float, base)[128];
+ DECLARE_ALIGNED(32, float, factors)[128];
DECLARE_ALIGNED(32, float, imdct_in)[128];
DECLARE_ALIGNED(32, float, imdct_out)[128];
DECLARE_ALIGNED(32, float, imdct_prev)[128];
@@ -294,8 +295,8 @@ static void apply_intensity_stereo(HCAContext *s, ChannelContext *ch1, ChannelCo
return;
for (int i = 0; i < band_count; i++) {
- *(c2++) = *c1 * ratio_r;
- *(c1++) *= ratio_l;
+ c2[i] = c1[i] * ratio_r;
+ c1[i] *= ratio_l;
}
}
@@ -320,6 +321,10 @@ static void reconstruct_hfr(HCAContext *s, ChannelContext *ch,
static void dequantize_coefficients(HCAContext *c, ChannelContext *ch,
GetBitContext *gb)
{
+ const float *base = ch->base;
+ float *factors = ch->factors;
+ float *out = ch->imdct_in;
+
for (int i = 0; i < ch->count; i++) {
unsigned scale = ch->scale[i];
int nb_bits = max_bits_table[scale];
@@ -336,10 +341,11 @@ static void dequantize_coefficients(HCAContext *c, ChannelContext *ch,
skip_bits_long(gb, quant_spectrum_bits[value] - nb_bits);
factor = quant_spectrum_value[value];
}
- ch->imdct_in[i] = factor * ch->base[i];
+ factors[i] = factor;
}
- memset(ch->imdct_in + ch->count, 0, sizeof(ch->imdct_in) - ch->count * sizeof(ch->imdct_in[0]));
+ memset(factors + ch->count, 0, 512 - ch->count * sizeof(*factors));
+ c->fdsp->vector_fmul(out, factors, base, 128);
}
static void unpack(HCAContext *c, ChannelContext *ch,