* 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 [] );
+};