#define VLCBITS 9
#define VLCMAX ((22+VLCBITS-1)/VLCBITS)
+DECLARE_ALIGNED(16, float, ff_sine_128[128]);
+DECLARE_ALIGNED(16, float, ff_sine_256[256]);
+DECLARE_ALIGNED(16, float, ff_sine_512[512]);
+DECLARE_ALIGNED(16, float, ff_sine_1024[1024]);
+DECLARE_ALIGNED(16, float, ff_sine_2048[2048]);
+DECLARE_ALIGNED(16, float, ff_sine_4096[4096]);
+
+static float *ff_sine_windows[6] = {
+ ff_sine_128, ff_sine_256, ff_sine_512, ff_sine_1024,
+ ff_sine_2048, ff_sine_4096
+};
+
+/* Generate a sine window. */
+static void sine_window_init(float *window, int n)
+{
+ int i;
+
+ for (i = 0; i < n; i++)
+ window[i] = sinf((i + 0.5) * (M_PI / (2.0 * n)));
+}
+
static int wmadec_cleanup(struct private_wmadec_data *s)
{
int i;
return ret;
/* init MDCT */
for (i = 0; i < s->nb_block_sizes; i++) {
- ret = imdct_init(s->frame_len_bits - i + 1, 1, &s->mdct_ctx[i]);
+ ret = imdct_init(s->frame_len_bits - i + 1, &s->mdct_ctx[i]);
if (ret < 0)
return ret;
}
}
static void vector_fmul_add(float *dst, const float *src0, const float *src1,
- const float *src2, int src3, int len, int step)
+ const float *src2, int len)
{
int i;
for (i = 0; i < len; i++)
- dst[i * step] = src0[i] * src1[i] + src2[i] + src3;
+ dst[i] = src0[i] * src1[i] + src2[i];
}
static void vector_fmul_reverse_c(float *dst, const float *src0,
block_len = s->block_len;
bsize = s->frame_len_bits - s->block_len_bits;
- vector_fmul_add(out, in, s->windows[bsize],
- out, 0, block_len, 1);
+ vector_fmul_add(out, in, s->windows[bsize], out, block_len);
} else {
block_len = 1 << s->prev_block_len_bits;
n = (s->block_len - block_len) / 2;
bsize = s->frame_len_bits - s->prev_block_len_bits;
- vector_fmul_add(out + n, in + n, s->windows[bsize],
- out + n, 0, block_len, 1);
+ vector_fmul_add(out + n, in + n, s->windows[bsize], out + n,
+ block_len);
memcpy(out + n + block_len, in + n + block_len,
n * sizeof(float));