]> git.sesse.net Git - vlc/blobdiff - include/ac3_imdct.h
* ALL: new module API. Makes a few things a lot simpler, and we gain
[vlc] / include / ac3_imdct.h
index 4720653c15a96a50708bff19ae3da3e1df0d2ddb..e6e101c859712a1057b86edd07c8946efb8209e0 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_imdct.h : AC3 IMDCT types
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: ac3_imdct.h,v 1.3 2001/05/15 16:19:42 sam Exp $
+ * $Id: ac3_imdct.h,v 1.10 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Renaud Dartus <reno@videolan.org>
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
-typedef struct complex_s {
+struct complex_t
+{
     float real;
     float imag;
-} complex_t;
+};
 
 #define N 512
 
-typedef struct imdct_s
+struct imdct_t
 {
-    complex_t buf[N/4];
+    VLC_COMMON_MEMBERS
+
+    complex_t * buf;
+    void *      buf_orig;                         /* pointer before memalign */
 
     /* Delay buffer for time domain interleaving */
-    float delay[6][256];
-    float delay1[6][256];
+    float * delay;
+    void *  delay_orig;                           /* pointer before memalign */
+    float * delay1;
+    void *  delay1_orig;                          /* pointer before memalign */
 
     /* Twiddle factors for IMDCT */
-    float xcos1[N/4];
-    float xsin1[N/4];
-    float xcos2[N/8];
-    float xsin2[N/8];
+    float * xcos1;
+    void *  xcos1_orig;                           /* pointer before memalign */
+    float * xsin1;
+    void *  xsin1_orig;                           /* pointer before memalign */
+    float * xcos2;
+    void *  xcos2_orig;                           /* pointer before memalign */
+    float * xsin2;
+    void *  xsin2_orig;                           /* pointer before memalign */
+    float * xcos_sin_sse;
+    void *  xcos_sin_sse_orig;                    /* pointer before memalign */
    
     /* Twiddle factor LUT */
-    complex_t *w[7];
-    complex_t w_1[1];
-    complex_t w_2[2];
-    complex_t w_4[4];
-    complex_t w_8[8];
-    complex_t w_16[16];
-    complex_t w_32[32];
-    complex_t w_64[64];
-
-    float xcos_sin_sse[128 * 4] __attribute__((aligned(16)));
+    complex_t * w_2;
+    void *      w_2_orig;                         /* pointer before memalign */
+    complex_t * w_4;
+    void *      w_4_orig;                         /* pointer before memalign */
+    complex_t * w_8;
+    void *      w_8_orig;                         /* pointer before memalign */
+    complex_t * w_16;
+    void *      w_16_orig;                        /* pointer before memalign */
+    complex_t * w_32;
+    void *      w_32_orig;                        /* pointer before memalign */
+    complex_t * w_64;
+    void *      w_64_orig;                        /* pointer before memalign */
+    complex_t * w_1;
+    void *      w_1_orig;                         /* pointer before memalign */
     
     /* Module used and shortcuts */
-    struct module_s * p_module;
-    void (*pf_imdct_init) (struct imdct_s *);
+    module_t * p_module;
+    void (*pf_imdct_init)    ( imdct_t * );
     //void (*pf_fft_64p) (complex_t *a);
-    void (*pf_imdct_256)(struct imdct_s *, float data[], float delay[]);
-    void (*pf_imdct_256_nol)(struct imdct_s *, float data[], float delay[]);
-    void (*pf_imdct_512)(struct imdct_s *, float data[], float delay[]);
-    void (*pf_imdct_512_nol)(struct imdct_s *, float data[], float delay[]);
-
-} imdct_t;
+    void (*pf_imdct_256)     ( imdct_t *, float [], float [] );
+    void (*pf_imdct_256_nol) ( imdct_t *, float [], float [] );
+    void (*pf_imdct_512)     ( imdct_t *, float [], float [] );
+    void (*pf_imdct_512_nol) ( imdct_t *, float [], float [] );
+};