annotate liba52/imdct.c @ 2463:9baa47d8297b libavcodec

check norm6 vlc validity as there are some bit sequences which dont corespond to any codeword, the other vlc tables all seem to be huffman tables though
author michael
date Tue, 25 Jan 2005 01:29:10 +0000
parents e101d1cffec6
children ef2149182f1c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
1 /*
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
2 * imdct.c
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
3 * Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org>
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
4 * Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
5 *
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
6 * The ifft algorithms in this file have been largely inspired by Dan
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
7 * Bernstein's work, djbfft, available at http://cr.yp.to/djbfft.html
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
8 *
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
9 * This file is part of a52dec, a free ATSC A-52 stream decoder.
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
10 * See http://liba52.sourceforge.net/ for updates.
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
11 *
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
12 * a52dec is free software; you can redistribute it and/or modify
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
15 * (at your option) any later version.
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
16 *
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
17 * a52dec is distributed in the hope that it will be useful,
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
20 * GNU General Public License for more details.
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
21 *
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
25 */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
26
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
27 #include "a52.h"
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
28 #include "a52_internal.h"
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
29 #include "mm_accel.h"
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
30
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
31 typedef struct complex_s {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
32 sample_t real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
33 sample_t imag;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
34 } complex_t;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
35
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
36 static uint8_t fftorder[] = {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
37 0,128, 64,192, 32,160,224, 96, 16,144, 80,208,240,112, 48,176,
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
38 8,136, 72,200, 40,168,232,104,248,120, 56,184, 24,152,216, 88,
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
39 4,132, 68,196, 36,164,228,100, 20,148, 84,212,244,116, 52,180,
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
40 252,124, 60,188, 28,156,220, 92, 12,140, 76,204,236,108, 44,172,
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
41 2,130, 66,194, 34,162,226, 98, 18,146, 82,210,242,114, 50,178,
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
42 10,138, 74,202, 42,170,234,106,250,122, 58,186, 26,154,218, 90,
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
43 254,126, 62,190, 30,158,222, 94, 14,142, 78,206,238,110, 46,174,
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
44 6,134, 70,198, 38,166,230,102,246,118, 54,182, 22,150,214, 86
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
45 };
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
46
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
47 /* Root values for IFFT */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
48 static sample_t roots16[3];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
49 static sample_t roots32[7];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
50 static sample_t roots64[15];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
51 static sample_t roots128[31];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
52
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
53 /* Twiddle factors for IMDCT */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
54 static complex_t pre1[128];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
55 static complex_t post1[64];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
56 static complex_t pre2[64];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
57 static complex_t post2[32];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
58
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
59 static sample_t a52_imdct_window[256];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
60
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
61 static void (* ifft128) (complex_t * buf);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
62 static void (* ifft64) (complex_t * buf);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
63
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
64 static inline void ifft2 (complex_t * buf)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
65 {
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
66 sample_t r, i;
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
67
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
68 r = buf[0].real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
69 i = buf[0].imag;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
70 buf[0].real += buf[1].real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
71 buf[0].imag += buf[1].imag;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
72 buf[1].real = r - buf[1].real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
73 buf[1].imag = i - buf[1].imag;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
74 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
75
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
76 static inline void ifft4 (complex_t * buf)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
77 {
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
78 sample_t tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8;
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
79
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
80 tmp1 = buf[0].real + buf[1].real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
81 tmp2 = buf[3].real + buf[2].real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
82 tmp3 = buf[0].imag + buf[1].imag;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
83 tmp4 = buf[2].imag + buf[3].imag;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
84 tmp5 = buf[0].real - buf[1].real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
85 tmp6 = buf[0].imag - buf[1].imag;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
86 tmp7 = buf[2].imag - buf[3].imag;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
87 tmp8 = buf[3].real - buf[2].real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
88
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
89 buf[0].real = tmp1 + tmp2;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
90 buf[0].imag = tmp3 + tmp4;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
91 buf[2].real = tmp1 - tmp2;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
92 buf[2].imag = tmp3 - tmp4;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
93 buf[1].real = tmp5 + tmp7;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
94 buf[1].imag = tmp6 + tmp8;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
95 buf[3].real = tmp5 - tmp7;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
96 buf[3].imag = tmp6 - tmp8;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
97 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
98
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
99 /* basic radix-2 ifft butterfly */
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
100
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
101 #define BUTTERFLY_0(t0,t1,W0,W1,d0,d1) do { \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
102 t0 = MUL (W1, d1) + MUL (W0, d0); \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
103 t1 = MUL (W0, d1) - MUL (W1, d0); \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
104 } while (0)
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
105
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
106 /* radix-2 ifft butterfly with bias */
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
107
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
108 #define BUTTERFLY_B(t0,t1,W0,W1,d0,d1) do { \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
109 t0 = BIAS (MUL (d1, W1) + MUL (d0, W0)); \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
110 t1 = BIAS (MUL (d1, W0) - MUL (d0, W1)); \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
111 } while (0)
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
112
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
113 /* the basic split-radix ifft butterfly */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
114
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
115 #define BUTTERFLY(a0,a1,a2,a3,wr,wi) do { \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
116 BUTTERFLY_0 (tmp5, tmp6, wr, wi, a2.real, a2.imag); \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
117 BUTTERFLY_0 (tmp8, tmp7, wr, wi, a3.imag, a3.real); \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
118 tmp1 = tmp5 + tmp7; \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
119 tmp2 = tmp6 + tmp8; \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
120 tmp3 = tmp6 - tmp8; \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
121 tmp4 = tmp7 - tmp5; \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
122 a2.real = a0.real - tmp1; \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
123 a2.imag = a0.imag - tmp2; \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
124 a3.real = a1.real - tmp3; \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
125 a3.imag = a1.imag - tmp4; \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
126 a0.real += tmp1; \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
127 a0.imag += tmp2; \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
128 a1.real += tmp3; \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
129 a1.imag += tmp4; \
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
130 } while (0)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
131
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
132 /* split-radix ifft butterfly, specialized for wr=1 wi=0 */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
133
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
134 #define BUTTERFLY_ZERO(a0,a1,a2,a3) do { \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
135 tmp1 = a2.real + a3.real; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
136 tmp2 = a2.imag + a3.imag; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
137 tmp3 = a2.imag - a3.imag; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
138 tmp4 = a3.real - a2.real; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
139 a2.real = a0.real - tmp1; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
140 a2.imag = a0.imag - tmp2; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
141 a3.real = a1.real - tmp3; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
142 a3.imag = a1.imag - tmp4; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
143 a0.real += tmp1; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
144 a0.imag += tmp2; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
145 a1.real += tmp3; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
146 a1.imag += tmp4; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
147 } while (0)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
148
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
149 /* split-radix ifft butterfly, specialized for wr=wi */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
150
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
151 #define BUTTERFLY_HALF(a0,a1,a2,a3,w) do { \
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
152 tmp5 = MUL (a2.real + a2.imag, w); \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
153 tmp6 = MUL (a2.imag - a2.real, w); \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
154 tmp7 = MUL (a3.real - a3.imag, w); \
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
155 tmp8 = MUL (a3.imag + a3.real, w); \
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
156 tmp1 = tmp5 + tmp7; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
157 tmp2 = tmp6 + tmp8; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
158 tmp3 = tmp6 - tmp8; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
159 tmp4 = tmp7 - tmp5; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
160 a2.real = a0.real - tmp1; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
161 a2.imag = a0.imag - tmp2; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
162 a3.real = a1.real - tmp3; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
163 a3.imag = a1.imag - tmp4; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
164 a0.real += tmp1; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
165 a0.imag += tmp2; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
166 a1.real += tmp3; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
167 a1.imag += tmp4; \
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
168 } while (0)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
169
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
170 static inline void ifft8 (complex_t * buf)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
171 {
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
172 sample_t tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8;
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
173
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
174 ifft4 (buf);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
175 ifft2 (buf + 4);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
176 ifft2 (buf + 6);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
177 BUTTERFLY_ZERO (buf[0], buf[2], buf[4], buf[6]);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
178 BUTTERFLY_HALF (buf[1], buf[3], buf[5], buf[7], roots16[1]);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
179 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
180
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
181 static void ifft_pass (complex_t * buf, sample_t * weight, int n)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
182 {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
183 complex_t * buf1;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
184 complex_t * buf2;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
185 complex_t * buf3;
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
186 sample_t tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8;
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
187 int i;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
188
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
189 buf++;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
190 buf1 = buf + n;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
191 buf2 = buf + 2 * n;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
192 buf3 = buf + 3 * n;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
193
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
194 BUTTERFLY_ZERO (buf[-1], buf1[-1], buf2[-1], buf3[-1]);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
195
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
196 i = n - 1;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
197
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
198 do {
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
199 BUTTERFLY (buf[0], buf1[0], buf2[0], buf3[0],
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
200 weight[0], weight[2*i-n]);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
201 buf++;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
202 buf1++;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
203 buf2++;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
204 buf3++;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
205 weight++;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
206 } while (--i);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
207 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
208
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
209 static void ifft16 (complex_t * buf)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
210 {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
211 ifft8 (buf);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
212 ifft4 (buf + 8);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
213 ifft4 (buf + 12);
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
214 ifft_pass (buf, roots16, 4);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
215 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
216
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
217 static void ifft32 (complex_t * buf)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
218 {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
219 ifft16 (buf);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
220 ifft8 (buf + 16);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
221 ifft8 (buf + 24);
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
222 ifft_pass (buf, roots32, 8);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
223 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
224
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
225 static void ifft64_c (complex_t * buf)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
226 {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
227 ifft32 (buf);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
228 ifft16 (buf + 32);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
229 ifft16 (buf + 48);
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
230 ifft_pass (buf, roots64, 16);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
231 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
232
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
233 static void ifft128_c (complex_t * buf)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
234 {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
235 ifft32 (buf);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
236 ifft16 (buf + 32);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
237 ifft16 (buf + 48);
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
238 ifft_pass (buf, roots64, 16);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
239
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
240 ifft32 (buf + 64);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
241 ifft32 (buf + 96);
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
242 ifft_pass (buf, roots128, 32);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
243 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
244
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
245 void a52_imdct_512 (sample_t * data, sample_t * delay, sample_t bias)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
246 {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
247 int i, k;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
248 sample_t t_r, t_i, a_r, a_i, b_r, b_i, w_1, w_2;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
249 const sample_t * window = a52_imdct_window;
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
250 complex_t buf[128];
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
251
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
252 for (i = 0; i < 128; i++) {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
253 k = fftorder[i];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
254 t_r = pre1[i].real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
255 t_i = pre1[i].imag;
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
256 BUTTERFLY_0 (buf[i].real, buf[i].imag, t_r, t_i, data[k], data[255-k]);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
257 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
258
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
259 ifft128 (buf);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
260
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
261 /* Post IFFT complex multiply plus IFFT complex conjugate*/
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
262 /* Window and convert to real valued signal */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
263 for (i = 0; i < 64; i++) {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
264 /* y[n] = z[n] * (xcos1[n] + j * xsin1[n]) ; */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
265 t_r = post1[i].real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
266 t_i = post1[i].imag;
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
267 BUTTERFLY_0 (a_r, a_i, t_i, t_r, buf[i].imag, buf[i].real);
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
268 BUTTERFLY_0 (b_r, b_i, t_r, t_i, buf[127-i].imag, buf[127-i].real);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
269
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
270 w_1 = window[2*i];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
271 w_2 = window[255-2*i];
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
272 BUTTERFLY_B (data[255-2*i], data[2*i], w_2, w_1, a_r, delay[2*i]);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
273 delay[2*i] = a_i;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
274
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
275 w_1 = window[2*i+1];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
276 w_2 = window[254-2*i];
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
277 BUTTERFLY_B (data[2*i+1], data[254-2*i], w_1, w_2, b_r, delay[2*i+1]);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
278 delay[2*i+1] = b_i;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
279 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
280 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
281
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
282 void a52_imdct_256 (sample_t * data, sample_t * delay, sample_t bias)
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
283 {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
284 int i, k;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
285 sample_t t_r, t_i, a_r, a_i, b_r, b_i, c_r, c_i, d_r, d_i, w_1, w_2;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
286 const sample_t * window = a52_imdct_window;
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
287 complex_t buf1[64], buf2[64];
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
288
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
289 /* Pre IFFT complex multiply plus IFFT cmplx conjugate */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
290 for (i = 0; i < 64; i++) {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
291 k = fftorder[i];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
292 t_r = pre2[i].real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
293 t_i = pre2[i].imag;
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
294 BUTTERFLY_0 (buf1[i].real, buf1[i].imag, t_r, t_i, data[k], data[254-k]);
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
295 BUTTERFLY_0 (buf2[i].real, buf2[i].imag, t_r, t_i, data[k+1], data[255-k]);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
296 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
297
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
298 ifft64 (buf1);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
299 ifft64 (buf2);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
300
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
301 /* Post IFFT complex multiply */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
302 /* Window and convert to real valued signal */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
303 for (i = 0; i < 32; i++) {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
304 /* y1[n] = z1[n] * (xcos2[n] + j * xs in2[n]) ; */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
305 t_r = post2[i].real;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
306 t_i = post2[i].imag;
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
307 BUTTERFLY_0 (a_r, a_i, t_i, t_r, buf1[i].imag, buf1[i].real);
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
308 BUTTERFLY_0 (b_r, b_i, t_r, t_i, buf1[63-i].imag, buf1[63-i].real);
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
309 BUTTERFLY_0 (c_r, c_i, t_i, t_r, buf2[i].imag, buf2[i].real);
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
310 BUTTERFLY_0 (d_r, d_i, t_r, t_i, buf2[63-i].imag, buf2[63-i].real);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
311
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
312 w_1 = window[2*i];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
313 w_2 = window[255-2*i];
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
314 BUTTERFLY_B (data[255-2*i], data[2*i], w_2, w_1, a_r, delay[2*i]);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
315 delay[2*i] = c_i;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
316
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
317 w_1 = window[128+2*i];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
318 w_2 = window[127-2*i];
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
319 BUTTERFLY_B (data[128+2*i], data[127-2*i], w_1, w_2, a_i, delay[127-2*i]);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
320 delay[127-2*i] = c_r;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
321
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
322 w_1 = window[2*i+1];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
323 w_2 = window[254-2*i];
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
324 BUTTERFLY_B (data[254-2*i], data[2*i+1], w_2, w_1, b_i, delay[2*i+1]);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
325 delay[2*i+1] = d_r;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
326
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
327 w_1 = window[129+2*i];
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
328 w_2 = window[126-2*i];
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
329 BUTTERFLY_B (data[129+2*i], data[126-2*i], w_1, w_2, b_r, delay[126-2*i]);
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
330 delay[126-2*i] = d_i;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
331 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
332 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
333
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
334 static double besselI0 (double x)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
335 {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
336 double bessel = 1;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
337 int i = 100;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
338
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
339 do
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
340 bessel = bessel * x / (i * i) + 1;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
341 while (--i);
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
342 return bessel;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
343 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
344
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
345 void a52_imdct_init (uint32_t mm_accel)
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
346 {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
347 int i, k;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
348 double sum;
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
349 double local_imdct_window[256];
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
350
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
351 /* compute imdct window - kaiser-bessel derived window, alpha = 5.0 */
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
352 sum = 0;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
353 for (i = 0; i < 256; i++) {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
354 sum += besselI0 (i * (256 - i) * (5 * M_PI / 256) * (5 * M_PI / 256));
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
355 local_imdct_window[i] = sum;
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
356 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
357 sum++;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
358 for (i = 0; i < 256; i++)
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
359 a52_imdct_window[i] = SAMPLE (sqrt (local_imdct_window[i] / sum));
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
360
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
361 for (i = 0; i < 3; i++)
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
362 roots16[i] = SAMPLE (cos ((M_PI / 8) * (i + 1)));
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
363
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
364 for (i = 0; i < 7; i++)
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
365 roots32[i] = SAMPLE (cos ((M_PI / 16) * (i + 1)));
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
366
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
367 for (i = 0; i < 15; i++)
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
368 roots64[i] = SAMPLE (cos ((M_PI / 32) * (i + 1)));
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
369
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
370 for (i = 0; i < 31; i++)
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
371 roots128[i] = SAMPLE (cos ((M_PI / 64) * (i + 1)));
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
372
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
373 for (i = 0; i < 64; i++) {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
374 k = fftorder[i] / 2 + 64;
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
375 pre1[i].real = SAMPLE (cos ((M_PI / 256) * (k - 0.25)));
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
376 pre1[i].imag = SAMPLE (sin ((M_PI / 256) * (k - 0.25)));
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
377 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
378
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
379 for (i = 64; i < 128; i++) {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
380 k = fftorder[i] / 2 + 64;
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
381 pre1[i].real = SAMPLE (-cos ((M_PI / 256) * (k - 0.25)));
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
382 pre1[i].imag = SAMPLE (-sin ((M_PI / 256) * (k - 0.25)));
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
383 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
384
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
385 for (i = 0; i < 64; i++) {
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
386 post1[i].real = SAMPLE (cos ((M_PI / 256) * (i + 0.5)));
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
387 post1[i].imag = SAMPLE (sin ((M_PI / 256) * (i + 0.5)));
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
388 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
389
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
390 for (i = 0; i < 64; i++) {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
391 k = fftorder[i] / 4;
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
392 pre2[i].real = SAMPLE (cos ((M_PI / 128) * (k - 0.25)));
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
393 pre2[i].imag = SAMPLE (sin ((M_PI / 128) * (k - 0.25)));
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
394 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
395
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
396 for (i = 0; i < 32; i++) {
1072
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
397 post2[i].real = SAMPLE (cos ((M_PI / 128) * (i + 0.5)));
68d0a38bd802 * sync with main liba52 sources
kabi
parents: 428
diff changeset
398 post2[i].imag = SAMPLE (sin ((M_PI / 128) * (i + 0.5)));
332
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
399 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
400
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
401 #ifdef LIBA52_DJBFFT
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
402 if (mm_accel & MM_ACCEL_DJBFFT) {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
403 ifft128 = (void (*) (complex_t *)) fftc4_un128;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
404 ifft64 = (void (*) (complex_t *)) fftc4_un64;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
405 } else
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
406 #endif
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
407 {
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
408 ifft128 = ifft128_c;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
409 ifft64 = ifft64_c;
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
410 }
207cc56d18f8 * add support for liba52
kabi
parents:
diff changeset
411 }