]> git.sesse.net Git - vlc/blob - include/ac3_imdct.h
Added HAVE_GPE_INIT_H define for autodetection of libgpewidget and GPE headerfiles.
[vlc] / include / ac3_imdct.h
1 /*****************************************************************************
2  * ac3_imdct.h : AC3 IMDCT types
3  *****************************************************************************
4  * Copyright (C) 1999, 2000 VideoLAN
5  * $Id: ac3_imdct.h,v 1.7 2002/04/05 01:05:22 gbazin Exp $
6  *
7  * Authors: Michel Kaempf <maxx@via.ecp.fr>
8  *          Renaud Dartus <reno@videolan.org>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  * 
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
23  *****************************************************************************/
24
25 typedef struct complex_s {
26     float real;
27     float imag;
28 } complex_t;
29
30 #define N 512
31
32 typedef struct imdct_s
33 {
34     complex_t * buf;
35     void *      buf_orig;                         /* pointer before memalign */
36
37     /* Delay buffer for time domain interleaving */
38     float * delay;
39     void *  delay_orig;                           /* pointer before memalign */
40     float * delay1;
41     void *  delay1_orig;                          /* pointer before memalign */
42
43     /* Twiddle factors for IMDCT */
44     float * xcos1;
45     void *  xcos1_orig;                           /* pointer before memalign */
46     float * xsin1;
47     void *  xsin1_orig;                           /* pointer before memalign */
48     float * xcos2;
49     void *  xcos2_orig;                           /* pointer before memalign */
50     float * xsin2;
51     void *  xsin2_orig;                           /* pointer before memalign */
52     float * xcos_sin_sse;
53     void *  xcos_sin_sse_orig;                    /* pointer before memalign */
54    
55     /* Twiddle factor LUT */
56     complex_t * w_2;
57     void *      w_2_orig;                         /* pointer before memalign */
58     complex_t * w_4;
59     void *      w_4_orig;                         /* pointer before memalign */
60     complex_t * w_8;
61     void *      w_8_orig;                         /* pointer before memalign */
62     complex_t * w_16;
63     void *      w_16_orig;                        /* pointer before memalign */
64     complex_t * w_32;
65     void *      w_32_orig;                        /* pointer before memalign */
66     complex_t * w_64;
67     void *      w_64_orig;                        /* pointer before memalign */
68     complex_t * w_1;
69     void *      w_1_orig;                         /* pointer before memalign */
70     
71     /* Module used and shortcuts */
72     struct module_s * p_module;
73     void (*pf_imdct_init) (struct imdct_s *);
74     //void (*pf_fft_64p) (complex_t *a);
75     void (*pf_imdct_256)(struct imdct_s *, float data[], float delay[]);
76     void (*pf_imdct_256_nol)(struct imdct_s *, float data[], float delay[]);
77     void (*pf_imdct_512)(struct imdct_s *, float data[], float delay[]);
78     void (*pf_imdct_512_nol)(struct imdct_s *, float data[], float delay[]);
79
80 } imdct_t;
81