]> git.sesse.net Git - vlc/blob - include/ac3_imdct.h
* ALL: new module API. Makes a few things a lot simpler, and we gain
[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.10 2002/07/31 20:56:50 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     VLC_COMMON_MEMBERS
36
37     complex_t * buf;
38     void *      buf_orig;                         /* pointer before memalign */
39
40     /* Delay buffer for time domain interleaving */
41     float * delay;
42     void *  delay_orig;                           /* pointer before memalign */
43     float * delay1;
44     void *  delay1_orig;                          /* pointer before memalign */
45
46     /* Twiddle factors for IMDCT */
47     float * xcos1;
48     void *  xcos1_orig;                           /* pointer before memalign */
49     float * xsin1;
50     void *  xsin1_orig;                           /* pointer before memalign */
51     float * xcos2;
52     void *  xcos2_orig;                           /* pointer before memalign */
53     float * xsin2;
54     void *  xsin2_orig;                           /* pointer before memalign */
55     float * xcos_sin_sse;
56     void *  xcos_sin_sse_orig;                    /* pointer before memalign */
57    
58     /* Twiddle factor LUT */
59     complex_t * w_2;
60     void *      w_2_orig;                         /* pointer before memalign */
61     complex_t * w_4;
62     void *      w_4_orig;                         /* pointer before memalign */
63     complex_t * w_8;
64     void *      w_8_orig;                         /* pointer before memalign */
65     complex_t * w_16;
66     void *      w_16_orig;                        /* pointer before memalign */
67     complex_t * w_32;
68     void *      w_32_orig;                        /* pointer before memalign */
69     complex_t * w_64;
70     void *      w_64_orig;                        /* pointer before memalign */
71     complex_t * w_1;
72     void *      w_1_orig;                         /* pointer before memalign */
73     
74     /* Module used and shortcuts */
75     module_t * p_module;
76     void (*pf_imdct_init)    ( imdct_t * );
77     //void (*pf_fft_64p) (complex_t *a);
78     void (*pf_imdct_256)     ( imdct_t *, float [], float [] );
79     void (*pf_imdct_256_nol) ( imdct_t *, float [], float [] );
80     void (*pf_imdct_512)     ( imdct_t *, float [], float [] );
81     void (*pf_imdct_512_nol) ( imdct_t *, float [], float [] );
82 };
83