remove src3 parameter from vector_fmul_add().
[paraslash.git] / wmadec_filter.c
index 15bb39253672dae4e4dd39e2d105c7ab41e026ba..e8388c0377db4e01923e0fa58bccd0ac3fa480d3 100644 (file)
@@ -131,6 +131,27 @@ struct private_wmadec_data {
 #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;
@@ -461,7 +482,7 @@ static int wma_decode_init(char *initial_buf, int len, struct private_wmadec_dat
                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;
        }
@@ -609,11 +630,11 @@ static int decode_exp_vlc(struct private_wmadec_data *s, int ch)
 }
 
 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,
@@ -641,16 +662,15 @@ static void wma_window(struct private_wmadec_data *s, float *out)
                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));