X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=wmadec_filter.c;h=d40cc3eb201d808be4d98e4665038e86f221ff70;hb=6e3e6ad58782bbd5b6249700e6c52fc8e2a16809;hp=ca5e22a40ccfd1bd00f564d51113981d0efa1106;hpb=6137d1bba3738e9ef165990ea25bdb40d72a765d;p=paraslash.git diff --git a/wmadec_filter.c b/wmadec_filter.c index ca5e22a4..d40cc3eb 100644 --- a/wmadec_filter.c +++ b/wmadec_filter.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "para.h" #include "error.h" @@ -130,12 +131,14 @@ 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]); +#define SINE_WINDOW(x) float ff_sine_ ## x[x] __aligned(16) + +SINE_WINDOW(128); +SINE_WINDOW(256); +SINE_WINDOW(512); +SINE_WINDOW(1024); +SINE_WINDOW(2048); +SINE_WINDOW(4096); static float *ff_sine_windows[6] = { ff_sine_128, ff_sine_256, ff_sine_512, ff_sine_1024, @@ -1231,7 +1234,7 @@ static int wma_decode_superframe(struct private_wmadec_data *pwd, void *data, samples += pwd->ahi.channels * pwd->frame_len; } PARA_DEBUG_LOG("frame_count: %d frame_len: %d, block_len: %d, " - "outbytes: %d, eaten: %d\n", + "outbytes: %zd, eaten: %d\n", frame_count, pwd->frame_len, pwd->block_len, (int8_t *) samples - (int8_t *) data, pwd->ahi.block_align); *data_size = (int8_t *)samples - (int8_t *)data; @@ -1250,6 +1253,8 @@ static ssize_t wmadec_convert(char *inbuffer, size_t len, if (out_size < 128 * 1024) return 0; + if (len <= WMA_FRAME_SKIP) + return 0; if (!pwd) { ret = wma_decode_init(inbuffer, len, &pwd); if (ret <= 0)