]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - wmadec_filter.c
use free() instead of pointless freep() in imdct_end().
[paraslash.git] / wmadec_filter.c
index 15bb39253672dae4e4dd39e2d105c7ab41e026ba..fdf312b981abe0fee30e92856a58dd87fee90250 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;
        }