]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/x86/fft_sse.c
Extradata length checks for Huffyuv.
[ffmpeg] / libavcodec / x86 / fft_sse.c
index deced3b92945515935b92e80e4389d95c435086a..a4cce69db142ff079a0a5c47b599dfd5386b2d46 100644 (file)
@@ -21,8 +21,9 @@
 
 #include "libavutil/x86_cpu.h"
 #include "libavcodec/dsputil.h"
+#include "fft.h"
 
-static const int m1m1m1m1[4] __attribute__((aligned(16))) =
+DECLARE_ALIGNED(16, static const int, m1m1m1m1)[4] =
     { 1 << 31, 1 << 31, 1 << 31, 1 << 31 };
 
 void ff_fft_dispatch_sse(FFTComplex *z, int nbits);
@@ -70,14 +71,14 @@ void ff_fft_permute_sse(FFTContext *s, FFTComplex *z)
     memcpy(z, s->tmp_buf, n*sizeof(FFTComplex));
 }
 
-void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input)
+void ff_imdct_half_sse(FFTContext *s, FFTSample *output, const FFTSample *input)
 {
     av_unused x86_reg i, j, k, l;
-    long n = 1 << s->nbits;
+    long n = 1 << s->mdct_bits;
     long n2 = n >> 1;
     long n4 = n >> 2;
     long n8 = n >> 3;
-    const uint16_t *revtab = s->fft.revtab + n8;
+    const uint16_t *revtab = s->revtab + n8;
     const FFTSample *tcos = s->tcos;
     const FFTSample *tsin = s->tsin;
     FFTComplex *z = (FFTComplex *)output;
@@ -108,7 +109,7 @@ void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input
             ::"r"(-4*k), "r"(4*k),
               "r"(input+n4), "r"(tcos+n8), "r"(tsin+n8)
         );
-#ifdef ARCH_X86_64
+#if ARCH_X86_64
         // if we have enough regs, don't let gcc make the luts latency-bound
         // but if not, latency is faster than spilling
         __asm__("movlps %%xmm0, %0 \n"
@@ -128,7 +129,7 @@ void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input
 #endif
     }
 
-    ff_fft_dispatch_sse(z, s->fft.nbits);
+    ff_fft_dispatch_sse(z, s->nbits);
 
     /* post rotation + reinterleave + reorder */
 
@@ -171,10 +172,10 @@ void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input
     );
 }
 
-void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, const FFTSample *input)
+void ff_imdct_calc_sse(FFTContext *s, FFTSample *output, const FFTSample *input)
 {
     x86_reg j, k;
-    long n = 1 << s->nbits;
+    long n = 1 << s->mdct_bits;
     long n4 = n >> 2;
 
     ff_imdct_half_sse(s, output+n4, input);