]> git.sesse.net Git - vlc/blob - include/ac3_imdct.h
* ALL: changed "struct foo_s" into "struct foo_t" to make greppers happy.
[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.9 2002/07/20 18:01:41 sam 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 struct complex_t
26 {
27     float real;
28     float imag;
29 };
30
31 #define N 512
32
33 struct imdct_t
34 {
35     complex_t * buf;
36     void *      buf_orig;                         /* pointer before memalign */
37
38     /* Delay buffer for time domain interleaving */
39     float * delay;
40     void *  delay_orig;                           /* pointer before memalign */
41     float * delay1;
42     void *  delay1_orig;                          /* pointer before memalign */
43
44     /* Twiddle factors for IMDCT */
45     float * xcos1;
46     void *  xcos1_orig;                           /* pointer before memalign */
47     float * xsin1;
48     void *  xsin1_orig;                           /* pointer before memalign */
49     float * xcos2;
50     void *  xcos2_orig;                           /* pointer before memalign */
51     float * xsin2;
52     void *  xsin2_orig;                           /* pointer before memalign */
53     float * xcos_sin_sse;
54     void *  xcos_sin_sse_orig;                    /* pointer before memalign */
55    
56     /* Twiddle factor LUT */
57     complex_t * w_2;
58     void *      w_2_orig;                         /* pointer before memalign */
59     complex_t * w_4;
60     void *      w_4_orig;                         /* pointer before memalign */
61     complex_t * w_8;
62     void *      w_8_orig;                         /* pointer before memalign */
63     complex_t * w_16;
64     void *      w_16_orig;                        /* pointer before memalign */
65     complex_t * w_32;
66     void *      w_32_orig;                        /* pointer before memalign */
67     complex_t * w_64;
68     void *      w_64_orig;                        /* pointer before memalign */
69     complex_t * w_1;
70     void *      w_1_orig;                         /* pointer before memalign */
71     
72     /* Module used and shortcuts */
73     module_t * p_module;
74     void (*pf_imdct_init)    ( imdct_t * );
75     //void (*pf_fft_64p) (complex_t *a);
76     void (*pf_imdct_256)     ( imdct_t *, float [], float [] );
77     void (*pf_imdct_256_nol) ( imdct_t *, float [], float [] );
78     void (*pf_imdct_512)     ( imdct_t *, float [], float [] );
79     void (*pf_imdct_512_nol) ( imdct_t *, float [], float [] );
80 };
81