]> git.sesse.net Git - vlc/blob - modules/codec/a52old/imdct.h
* ./modules/audio_output/oss.c: compilation fixes.
[vlc] / modules / codec / a52old / imdct.h
1 /*****************************************************************************
2  * imdct.h : A52 IMDCT types
3  *****************************************************************************
4  * Copyright (C) 1999, 2000 VideoLAN
5  * $Id: imdct.h,v 1.3 2002/08/08 00:35:11 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 typedef struct complex_t
26 {
27     float real;
28     float imag;
29
30 } complex_t;
31
32 #define N 512
33
34 typedef struct imdct_t imdct_t;
35
36 struct imdct_t
37 {
38     VLC_COMMON_MEMBERS
39
40     complex_t * buf;
41     void *      buf_orig;                         /* pointer before memalign */
42
43     /* Delay buffer for time domain interleaving */
44     float * delay;
45     void *  delay_orig;                           /* pointer before memalign */
46     float * delay1;
47     void *  delay1_orig;                          /* pointer before memalign */
48
49     /* Twiddle factors for IMDCT */
50     float * xcos1;
51     void *  xcos1_orig;                           /* pointer before memalign */
52     float * xsin1;
53     void *  xsin1_orig;                           /* pointer before memalign */
54     float * xcos2;
55     void *  xcos2_orig;                           /* pointer before memalign */
56     float * xsin2;
57     void *  xsin2_orig;                           /* pointer before memalign */
58     float * xcos_sin_sse;
59     void *  xcos_sin_sse_orig;                    /* pointer before memalign */
60    
61     /* Twiddle factor LUT */
62     complex_t * w_2;
63     void *      w_2_orig;                         /* pointer before memalign */
64     complex_t * w_4;
65     void *      w_4_orig;                         /* pointer before memalign */
66     complex_t * w_8;
67     void *      w_8_orig;                         /* pointer before memalign */
68     complex_t * w_16;
69     void *      w_16_orig;                        /* pointer before memalign */
70     complex_t * w_32;
71     void *      w_32_orig;                        /* pointer before memalign */
72     complex_t * w_64;
73     void *      w_64_orig;                        /* pointer before memalign */
74     complex_t * w_1;
75     void *      w_1_orig;                         /* pointer before memalign */
76     
77     /* Module used and shortcuts */
78     module_t * p_module;
79     void (*pf_imdct_init)    ( imdct_t * );
80 #if 0
81     void (*pf_fft_64p) (complex_t *a);
82 #endif
83     void (*pf_imdct_256)     ( imdct_t *, float [], float [] );
84     void (*pf_imdct_256_nol) ( imdct_t *, float [], float [] );
85     void (*pf_imdct_512)     ( imdct_t *, float [], float [] );
86     void (*pf_imdct_512_nol) ( imdct_t *, float [], float [] );
87
88 };
89