annotate liba52/srfftp.h @ 23572:a00685941686

demux_mkv very long seek fix The seek code searching for the closest position in the index used "int64_t min_diff=0xFFFFFFFL" as the initial "further from the goal than any real alternative" value. The unit is milliseconds so seeks more than about 75 hours past the end of the file would fail to recognize the last index position as the best match. This was triggered in practice by chapter seek code which apparently uses a seek of 1000000000 seconds forward to mean "seek to the end". The practical effect was that trying to seek to the next chapter in a file without chapters made MPlayer block until it finished reading the file from the current position to the end. Fixed by increasing the initial value from FFFFFFF to FFFFFFFFFFFFFFF.
author uau
date Wed, 20 Jun 2007 18:19:03 +0000
parents 0410677eda4a
children e83eef58b30a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
2 /*
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
3 * srfftp.h
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
4 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
5 * Copyright (C) Yuqing Deng <Yuqing_Deng@brown.edu> - April 2000
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
6 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
7 * 64 and 128 point split radix fft for ac3dec
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
8 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
9 * The algorithm is desribed in the book:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
10 * "Computational Frameworks of the Fast Fourier Transform".
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
11 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
12 * The ideas and the the organization of code borrowed from djbfft written by
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
13 * D. J. Bernstein <djb@cr.py.to>. djbff can be found at
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
14 * http://cr.yp.to/djbfft.html.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
15 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
16 * srfftp.h is free software; you can redistribute it and/or modify
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
17 * it under the terms of the GNU General Public License as published by
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
18 * the Free Software Foundation; either version 2, or (at your option)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
19 * any later version.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
20 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
21 * srfftp.h is distributed in the hope that it will be useful,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
24 * GNU General Public License for more details.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
25 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
26 * You should have received a copy of the GNU General Public License
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
27 * along with GNU Make; see the file COPYING. If not, write to
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
28 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
29 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
30 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
31
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
32 #ifndef SRFFTP_H__
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
33 #define SRFFTP_H__
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
34
920
deeaad5bf1d7 libac3 now is full 3dnow! optimized
nickols_k
parents: 1
diff changeset
35 static complex_t delta16[4] __attribute__((aligned(16))) =
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
36 { {1.00000000000000, 0.00000000000000},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
37 {0.92387953251129, -0.38268343236509},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
38 {0.70710678118655, -0.70710678118655},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
39 {0.38268343236509, -0.92387953251129}};
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
40
920
deeaad5bf1d7 libac3 now is full 3dnow! optimized
nickols_k
parents: 1
diff changeset
41 static complex_t delta16_3[4] __attribute__((aligned(16))) =
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
42 { {1.00000000000000, 0.00000000000000},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
43 {0.38268343236509, -0.92387953251129},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
44 {-0.70710678118655, -0.70710678118655},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
45 {-0.92387953251129, 0.38268343236509}};
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
46
920
deeaad5bf1d7 libac3 now is full 3dnow! optimized
nickols_k
parents: 1
diff changeset
47 static complex_t delta32[8] __attribute__((aligned(16))) =
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
48 { {1.00000000000000, 0.00000000000000},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
49 {0.98078528040323, -0.19509032201613},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
50 {0.92387953251129, -0.38268343236509},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51 {0.83146961230255, -0.55557023301960},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52 {0.70710678118655, -0.70710678118655},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53 {0.55557023301960, -0.83146961230255},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
54 {0.38268343236509, -0.92387953251129},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
55 {0.19509032201613, -0.98078528040323}};
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56
920
deeaad5bf1d7 libac3 now is full 3dnow! optimized
nickols_k
parents: 1
diff changeset
57 static complex_t delta32_3[8] __attribute__((aligned(16))) =
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58 { {1.00000000000000, 0.00000000000000},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
59 {0.83146961230255, -0.55557023301960},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
60 {0.38268343236509, -0.92387953251129},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
61 {-0.19509032201613, -0.98078528040323},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
62 {-0.70710678118655, -0.70710678118655},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
63 {-0.98078528040323, -0.19509032201613},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
64 {-0.92387953251129, 0.38268343236509},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
65 {-0.55557023301960, 0.83146961230255}};
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
66
920
deeaad5bf1d7 libac3 now is full 3dnow! optimized
nickols_k
parents: 1
diff changeset
67 static complex_t delta64[16] __attribute__((aligned(16))) =
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
68 { {1.00000000000000, 0.00000000000000},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
69 {0.99518472667220, -0.09801714032956},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
70 {0.98078528040323, -0.19509032201613},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
71 {0.95694033573221, -0.29028467725446},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
72 {0.92387953251129, -0.38268343236509},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
73 {0.88192126434836, -0.47139673682600},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
74 {0.83146961230255, -0.55557023301960},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
75 {0.77301045336274, -0.63439328416365},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
76 {0.70710678118655, -0.70710678118655},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
77 {0.63439328416365, -0.77301045336274},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
78 {0.55557023301960, -0.83146961230255},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
79 {0.47139673682600, -0.88192126434835},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
80 {0.38268343236509, -0.92387953251129},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
81 {0.29028467725446, -0.95694033573221},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
82 {0.19509032201613, -0.98078528040323},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
83 {0.09801714032956, -0.99518472667220}};
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
84
920
deeaad5bf1d7 libac3 now is full 3dnow! optimized
nickols_k
parents: 1
diff changeset
85 static complex_t delta64_3[16] __attribute__((aligned(16))) =
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
86 { {1.00000000000000, 0.00000000000000},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
87 {0.95694033573221, -0.29028467725446},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
88 {0.83146961230255, -0.55557023301960},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
89 {0.63439328416365, -0.77301045336274},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
90 {0.38268343236509, -0.92387953251129},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
91 {0.09801714032956, -0.99518472667220},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
92 {-0.19509032201613, -0.98078528040323},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
93 {-0.47139673682600, -0.88192126434836},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
94 {-0.70710678118655, -0.70710678118655},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
95 {-0.88192126434835, -0.47139673682600},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
96 {-0.98078528040323, -0.19509032201613},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
97 {-0.99518472667220, 0.09801714032956},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
98 {-0.92387953251129, 0.38268343236509},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
99 {-0.77301045336274, 0.63439328416365},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
100 {-0.55557023301960, 0.83146961230255},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
101 {-0.29028467725446, 0.95694033573221}};
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
102
920
deeaad5bf1d7 libac3 now is full 3dnow! optimized
nickols_k
parents: 1
diff changeset
103 static complex_t delta128[32] __attribute__((aligned(16))) =
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
104 { {1.00000000000000, 0.00000000000000},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
105 {0.99879545620517, -0.04906767432742},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
106 {0.99518472667220, -0.09801714032956},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
107 {0.98917650996478, -0.14673047445536},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
108 {0.98078528040323, -0.19509032201613},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
109 {0.97003125319454, -0.24298017990326},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
110 {0.95694033573221, -0.29028467725446},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
111 {0.94154406518302, -0.33688985339222},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
112 {0.92387953251129, -0.38268343236509},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
113 {0.90398929312344, -0.42755509343028},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
114 {0.88192126434836, -0.47139673682600},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
115 {0.85772861000027, -0.51410274419322},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
116 {0.83146961230255, -0.55557023301960},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
117 {0.80320753148064, -0.59569930449243},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
118 {0.77301045336274, -0.63439328416365},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
119 {0.74095112535496, -0.67155895484702},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
120 {0.70710678118655, -0.70710678118655},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
121 {0.67155895484702, -0.74095112535496},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
122 {0.63439328416365, -0.77301045336274},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
123 {0.59569930449243, -0.80320753148064},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
124 {0.55557023301960, -0.83146961230255},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
125 {0.51410274419322, -0.85772861000027},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
126 {0.47139673682600, -0.88192126434835},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
127 {0.42755509343028, -0.90398929312344},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
128 {0.38268343236509, -0.92387953251129},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
129 {0.33688985339222, -0.94154406518302},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
130 {0.29028467725446, -0.95694033573221},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
131 {0.24298017990326, -0.97003125319454},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
132 {0.19509032201613, -0.98078528040323},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
133 {0.14673047445536, -0.98917650996478},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
134 {0.09801714032956, -0.99518472667220},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
135 {0.04906767432742, -0.99879545620517}};
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
136
920
deeaad5bf1d7 libac3 now is full 3dnow! optimized
nickols_k
parents: 1
diff changeset
137 static complex_t delta128_3[32] __attribute__((aligned(16))) =
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
138 { {1.00000000000000, 0.00000000000000},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
139 {0.98917650996478, -0.14673047445536},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
140 {0.95694033573221, -0.29028467725446},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
141 {0.90398929312344, -0.42755509343028},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
142 {0.83146961230255, -0.55557023301960},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
143 {0.74095112535496, -0.67155895484702},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
144 {0.63439328416365, -0.77301045336274},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
145 {0.51410274419322, -0.85772861000027},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
146 {0.38268343236509, -0.92387953251129},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
147 {0.24298017990326, -0.97003125319454},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
148 {0.09801714032956, -0.99518472667220},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
149 {-0.04906767432742, -0.99879545620517},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
150 {-0.19509032201613, -0.98078528040323},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
151 {-0.33688985339222, -0.94154406518302},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
152 {-0.47139673682600, -0.88192126434836},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
153 {-0.59569930449243, -0.80320753148065},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
154 {-0.70710678118655, -0.70710678118655},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
155 {-0.80320753148065, -0.59569930449243},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
156 {-0.88192126434835, -0.47139673682600},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
157 {-0.94154406518302, -0.33688985339222},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
158 {-0.98078528040323, -0.19509032201613},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
159 {-0.99879545620517, -0.04906767432742},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
160 {-0.99518472667220, 0.09801714032956},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
161 {-0.97003125319454, 0.24298017990326},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
162 {-0.92387953251129, 0.38268343236509},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
163 {-0.85772861000027, 0.51410274419322},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
164 {-0.77301045336274, 0.63439328416365},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
165 {-0.67155895484702, 0.74095112535496},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
166 {-0.55557023301960, 0.83146961230255},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
167 {-0.42755509343028, 0.90398929312344},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
168 {-0.29028467725446, 0.95694033573221},
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
169 {-0.14673047445536, 0.98917650996478}};
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
170
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
171 #define HSQRT2 0.707106781188;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
172
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
173 #define TRANSZERO(A0,A4,A8,A12) { \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
174 u_r = wTB[0].real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
175 v_i = u_r - wTB[k*2].real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
176 u_r += wTB[k*2].real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
177 u_i = wTB[0].imag; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
178 v_r = wTB[k*2].imag - u_i; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
179 u_i += wTB[k*2].imag; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
180 a_r = A0.real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
181 a_i = A0.imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
182 a1_r = a_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
183 a1_r += u_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
184 A0.real = a1_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
185 a_r -= u_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
186 A8.real = a_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
187 a1_i = a_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
188 a1_i += u_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
189 A0.imag = a1_i; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
190 a_i -= u_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
191 A8.imag = a_i; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
192 a1_r = A4.real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
193 a1_i = A4.imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
194 a_r = a1_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
195 a_r -= v_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
196 A4.real = a_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
197 a1_r += v_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
198 A12.real = a1_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
199 a_i = a1_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
200 a_i -= v_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
201 A4.imag = a_i; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
202 a1_i += v_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
203 A12.imag = a1_i; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
204 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
205
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
206 #define TRANSHALF_16(A2,A6,A10,A14) {\
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
207 u_r = wTB[2].real; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
208 a_r = u_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
209 u_i = wTB[2].imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
210 u_r += u_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
211 u_i -= a_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
212 a_r = wTB[6].real; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
213 a1_r = a_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
214 a_i = wTB[6].imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
215 a_r = a_i - a_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
216 a_i += a1_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
217 v_i = u_r - a_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
218 u_r += a_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
219 v_r = u_i + a_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
220 u_i -= a_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
221 v_i *= HSQRT2; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
222 v_r *= HSQRT2; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
223 u_r *= HSQRT2; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
224 u_i *= HSQRT2; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
225 a_r = A2.real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
226 a_i = A2.imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
227 a1_r = a_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
228 a1_r += u_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
229 A2.real = a1_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
230 a_r -= u_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
231 A10.real = a_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
232 a1_i = a_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
233 a1_i += u_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
234 A2.imag = a1_i; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
235 a_i -= u_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
236 A10.imag = a_i; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
237 a1_r = A6.real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
238 a1_i = A6.imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
239 a_r = a1_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
240 a1_r += v_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
241 A6.real = a1_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
242 a_r -= v_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
243 A14.real = a_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
244 a_i = a1_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
245 a1_i -= v_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
246 A6.imag = a1_i; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
247 a_i += v_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
248 A14.imag = a_i; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
249 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
250
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
251 #define TRANS(A1,A5,A9,A13,WT,WB,D,D3) { \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
252 u_r = WT.real; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
253 a_r = u_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
254 a_r *= D.imag; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
255 u_r *= D.real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
256 a_i = WT.imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
257 a1_i = a_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
258 a1_i *= D.real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
259 a_i *= D.imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
260 u_r -= a_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
261 u_i = a_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
262 u_i += a1_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
263 a_r = WB.real; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
264 a1_r = a_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
265 a1_r *= D3.real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
266 a_r *= D3.imag; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
267 a_i = WB.imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
268 a1_i = a_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
269 a_i *= D3.real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
270 a1_i *= D3.imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
271 a1_r -= a1_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
272 a_r += a_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
273 v_i = u_r - a1_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
274 u_r += a1_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
275 v_r = a_r - u_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
276 u_i += a_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
277 a_r = A1.real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
278 a_i = A1.imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
279 a1_r = a_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
280 a1_r += u_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
281 A1.real = a1_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
282 a_r -= u_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
283 A9.real = a_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
284 a1_i = a_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
285 a1_i += u_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
286 A1.imag = a1_i; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
287 a_i -= u_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
288 A9.imag = a_i; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
289 a1_r = A5.real; \
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
290 a1_i = A5.imag; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
291 a_r = a1_r; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
292 a1_r -= v_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
293 A5.real = a1_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
294 a_r += v_r; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
295 A13.real = a_r; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
296 a_i = a1_i; \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
297 a1_i -= v_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
298 A5.imag = a1_i; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
299 a_i += v_i; \
3884
0410677eda4a ported 3dnow(ex) optimizations from libac3
michael
parents: 920
diff changeset
300 A13.imag = a_i; \
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
301 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
302
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
303 #endif