Mercurial > libavcodec.hg
annotate qdm2data.h @ 4040:9eaea06c5ba6 libavcodec
optimize sign decoding code in decode_residual()
x86 is 4% faster on P3
C sign stuff + x86 code for everything else is also faster then before (sorry forgot to test pure C)
... and if i replace the second occurance of the sign decoding in decode_residual by the asm too then everything gets slower iam starting to think that it might be best to write the whole function in asm, playing this avoid random deoptimizations game with gcc is not fun at all
author | michael |
---|---|
date | Thu, 19 Oct 2006 01:19:03 +0000 |
parents | c8c591fe26f8 |
children | 4394344397d8 |
rev | line source |
---|---|
2914 | 1 /* |
2 * QDM2 compatible decoder | |
3 * Copyright (c) 2003 Ewald Snel | |
4 * Copyright (c) 2005 Benjamin Larsson | |
5 * Copyright (c) 2005 Alex Beregszaszi | |
6 * Copyright (c) 2005 Roberto Togni | |
7 * | |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3411
diff
changeset
|
8 * This file is part of FFmpeg. |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3411
diff
changeset
|
9 * |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3411
diff
changeset
|
10 * FFmpeg is free software; you can redistribute it and/or |
2914 | 11 * modify it under the terms of the GNU Lesser General Public |
12 * License as published by the Free Software Foundation; either | |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3411
diff
changeset
|
13 * version 2.1 of the License, or (at your option) any later version. |
2914 | 14 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3411
diff
changeset
|
15 * FFmpeg is distributed in the hope that it will be useful, |
2914 | 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
18 * Lesser General Public License for more details. | |
19 * | |
20 * You should have received a copy of the GNU Lesser General Public | |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3411
diff
changeset
|
21 * License along with FFmpeg; if not, write to the Free Software |
3036
0b546eab515d
Update licensing information: The FSF changed postal address.
diego
parents:
2967
diff
changeset
|
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
2914 | 23 * |
24 */ | |
2967 | 25 |
2914 | 26 /** |
27 * @file qdm2data.h | |
28 * Various QDM2 tables. | |
29 */ | |
30 | |
31 #ifndef QDM2DATA_H | |
32 #define QDM2DATA_H | |
33 | |
34 /** VLC TABLES **/ | |
35 | |
36 /* values in this table range from -1..23; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
37 static const uint16_t vlc_tab_level_huffcodes[24] = { |
2914 | 38 0x037c, 0x0004, 0x003c, 0x004c, 0x003a, 0x002c, 0x001c, 0x001a, |
39 0x0024, 0x0014, 0x0001, 0x0002, 0x0000, 0x0003, 0x0007, 0x0005, | |
40 0x0006, 0x0008, 0x0009, 0x000a, 0x000c, 0x00fc, 0x007c, 0x017c | |
41 }; | |
42 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
43 static const uint8_t vlc_tab_level_huffbits[24] = { |
2914 | 44 10, 6, 7, 7, 6, 6, 6, 6, 6, 5, 4, 4, 4, 3, 3, 3, 3, 4, 4, 5, 7, 8, 9, 10 |
45 }; | |
46 | |
47 /* values in this table range from -1..36; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
48 static const uint16_t vlc_tab_diff_huffcodes[37] = { |
2914 | 49 0x1c57, 0x0004, 0x0000, 0x0001, 0x0003, 0x0002, 0x000f, 0x000e, |
50 0x0007, 0x0016, 0x0037, 0x0027, 0x0026, 0x0066, 0x0006, 0x0097, | |
51 0x0046, 0x01c6, 0x0017, 0x0786, 0x0086, 0x0257, 0x00d7, 0x0357, | |
52 0x00c6, 0x0386, 0x0186, 0x0000, 0x0157, 0x0c57, 0x0057, 0x0000, | |
53 0x0b86, 0x0000, 0x1457, 0x0000, 0x0457 | |
54 }; | |
55 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
56 static const uint8_t vlc_tab_diff_huffbits[37] = { |
2914 | 57 13, 3, 3, 2, 3, 3, 4, 4, 6, 5, 6, 6, 7, 7, 8, 8, |
58 8, 9, 8, 11, 9, 10, 8, 10, 9, 12, 10, 0, 10, 13, 11, 0, | |
59 12, 0, 13, 0, 13 | |
60 }; | |
61 | |
62 /* values in this table range from -1..5; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
63 static const uint8_t vlc_tab_run_huffcodes[6] = { |
2914 | 64 0x1f, 0x00, 0x01, 0x03, 0x07, 0x0f |
65 }; | |
66 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
67 static const uint8_t vlc_tab_run_huffbits[6] = { |
2914 | 68 5, 1, 2, 3, 4, 5 |
69 }; | |
70 | |
71 /* values in this table range from -1..19; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
72 static const uint16_t vlc_tab_tone_level_idx_hi1_huffcodes[20] = { |
2914 | 73 0x5714, 0x000c, 0x0002, 0x0001, 0x0000, 0x0004, 0x0034, 0x0054, |
74 0x0094, 0x0014, 0x0114, 0x0214, 0x0314, 0x0614, 0x0e14, 0x0f14, | |
75 0x2714, 0x0714, 0x1714, 0x3714 | |
76 }; | |
77 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
78 static const uint8_t vlc_tab_tone_level_idx_hi1_huffbits[20] = { |
2914 | 79 15, 4, 2, 1, 3, 5, 6, 7, 8, 10, 10, 11, 11, 12, 12, 12, 14, 14, 15, 14 |
80 }; | |
81 | |
82 /* values in this table range from -1..23; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
83 static const uint16_t vlc_tab_tone_level_idx_mid_huffcodes[24] = { |
2914 | 84 0x0fea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
85 0x0000, 0x0000, 0x0000, 0x0000, 0x03ea, 0x00ea, 0x002a, 0x001a, | |
86 0x0006, 0x0001, 0x0000, 0x0002, 0x000a, 0x006a, 0x01ea, 0x07ea | |
87 }; | |
88 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
89 static const uint8_t vlc_tab_tone_level_idx_mid_huffbits[24] = { |
2914 | 90 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 9, 7, 5, 3, 1, 2, 4, 6, 8, 10, 12 |
91 }; | |
92 | |
93 /* values in this table range from -1..23; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
94 static const uint16_t vlc_tab_tone_level_idx_hi2_huffcodes[24] = { |
2914 | 95 0x0664, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0064, 0x00e4, |
96 0x00a4, 0x0068, 0x0004, 0x0008, 0x0014, 0x0018, 0x0000, 0x0001, | |
97 0x0002, 0x0003, 0x000c, 0x0028, 0x0024, 0x0164, 0x0000, 0x0264 | |
98 }; | |
99 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
100 static const uint8_t vlc_tab_tone_level_idx_hi2_huffbits[24] = { |
2914 | 101 11, 0, 0, 0, 0, 0, 10, 8, 8, 7, 6, 6, 5, 5, 4, 2, 2, 2, 4, 7, 8, 9, 0, 11 |
102 }; | |
103 | |
104 /* values in this table range from -1..8; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
105 static const uint8_t vlc_tab_type30_huffcodes[9] = { |
2914 | 106 0x3c, 0x06, 0x00, 0x01, 0x03, 0x02, 0x04, 0x0c, 0x1c |
107 }; | |
108 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
109 static const uint8_t vlc_tab_type30_huffbits[9] = { |
2914 | 110 6, 3, 3, 2, 2, 3, 4, 5, 6 |
111 }; | |
112 | |
113 /* values in this table range from -1..9; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
114 static const uint8_t vlc_tab_type34_huffcodes[10] = { |
2914 | 115 0x18, 0x00, 0x01, 0x04, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08 |
116 }; | |
117 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
118 static const uint8_t vlc_tab_type34_huffbits[10] = { |
2914 | 119 5, 4, 3, 3, 3, 3, 3, 3, 3, 5 |
120 }; | |
121 | |
122 /* values in this table range from -1..22; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
123 static const uint16_t vlc_tab_fft_tone_offset_0_huffcodes[23] = { |
2914 | 124 0x038e, 0x0001, 0x0000, 0x0022, 0x000a, 0x0006, 0x0012, 0x0002, |
125 0x001e, 0x003e, 0x0056, 0x0016, 0x000e, 0x0032, 0x0072, 0x0042, | |
126 0x008e, 0x004e, 0x00f2, 0x002e, 0x0036, 0x00c2, 0x018e | |
127 }; | |
128 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
129 static const uint8_t vlc_tab_fft_tone_offset_0_huffbits[23] = { |
2914 | 130 10, 1, 2, 6, 4, 5, 6, 7, 6, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 6, 6, 8, 10 |
131 }; | |
132 | |
133 /* values in this table range from -1..27; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
134 static const uint16_t vlc_tab_fft_tone_offset_1_huffcodes[28] = { |
2914 | 135 0x07a4, 0x0001, 0x0020, 0x0012, 0x001c, 0x0008, 0x0006, 0x0010, |
136 0x0000, 0x0014, 0x0004, 0x0032, 0x0070, 0x000c, 0x0002, 0x003a, | |
137 0x001a, 0x002c, 0x002a, 0x0022, 0x0024, 0x000a, 0x0064, 0x0030, | |
138 0x0062, 0x00a4, 0x01a4, 0x03a4 | |
139 }; | |
140 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
141 static const uint8_t vlc_tab_fft_tone_offset_1_huffbits[28] = { |
2914 | 142 11, 1, 6, 6, 5, 4, 3, 6, 6, 5, 6, 6, 7, 6, 6, 6, |
143 6, 6, 6, 7, 8, 6, 7, 7, 7, 9, 10, 11 | |
144 }; | |
145 | |
146 /* values in this table range from -1..31; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
147 static const uint16_t vlc_tab_fft_tone_offset_2_huffcodes[32] = { |
2914 | 148 0x1760, 0x0001, 0x0000, 0x0082, 0x000c, 0x0006, 0x0003, 0x0007, |
149 0x0008, 0x0004, 0x0010, 0x0012, 0x0022, 0x001a, 0x0000, 0x0020, | |
150 0x000a, 0x0040, 0x004a, 0x006a, 0x002a, 0x0042, 0x0002, 0x0060, | |
151 0x00aa, 0x00e0, 0x00c2, 0x01c2, 0x0160, 0x0360, 0x0760, 0x0f60 | |
152 }; | |
153 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
154 static const uint8_t vlc_tab_fft_tone_offset_2_huffbits[32] = { |
2914 | 155 13, 2, 0, 8, 4, 3, 3, 3, 4, 4, 5, 5, 6, 5, 7, 7, |
156 7, 7, 7, 7, 8, 8, 8, 9, 8, 8, 9, 9, 10, 11, 13, 12 | |
157 }; | |
158 | |
159 /* values in this table range from -1..34; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
160 static const uint16_t vlc_tab_fft_tone_offset_3_huffcodes[35] = { |
2914 | 161 0x33ea, 0x0005, 0x0000, 0x000c, 0x0000, 0x0006, 0x0003, 0x0008, |
162 0x0002, 0x0001, 0x0004, 0x0007, 0x001a, 0x000f, 0x001c, 0x002c, | |
163 0x000a, 0x001d, 0x002d, 0x002a, 0x000d, 0x004c, 0x008c, 0x006a, | |
164 0x00cd, 0x004d, 0x00ea, 0x020c, 0x030c, 0x010c, 0x01ea, 0x07ea, | |
165 0x0bea, 0x03ea, 0x13ea | |
166 }; | |
167 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
168 static const uint8_t vlc_tab_fft_tone_offset_3_huffbits[35] = { |
2914 | 169 14, 4, 0, 10, 4, 3, 3, 4, 4, 3, 4, 4, 5, 4, 5, 6, |
170 6, 5, 6, 7, 7, 7, 8, 8, 8, 8, 9, 10, 10, 10, 10, 11, | |
171 12, 13, 14 | |
172 }; | |
173 | |
174 /* values in this table range from -1..37; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
175 static const uint16_t vlc_tab_fft_tone_offset_4_huffcodes[38] = { |
2914 | 176 0x5282, 0x0016, 0x0000, 0x0136, 0x0004, 0x0000, 0x0007, 0x000a, |
177 0x000e, 0x0003, 0x0001, 0x000d, 0x0006, 0x0009, 0x0012, 0x0005, | |
178 0x0025, 0x0022, 0x0015, 0x0002, 0x0076, 0x0035, 0x0042, 0x00c2, | |
179 0x0182, 0x00b6, 0x0036, 0x03c2, 0x0482, 0x01c2, 0x0682, 0x0882, | |
180 0x0a82, 0x0082, 0x0282, 0x1282, 0x3282, 0x2282 | |
181 }; | |
182 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
183 static const uint8_t vlc_tab_fft_tone_offset_4_huffbits[38] = { |
2914 | 184 15, 6, 0, 9, 3, 3, 3, 4, 4, 3, 4, 4, 5, 4, 5, 6, |
185 6, 6, 6, 8, 7, 6, 8, 9, 9, 8, 9, 10, 11, 10, 11, 12, | |
186 12, 12, 14, 15, 14, 14 | |
187 }; | |
188 | |
189 /** FFT TABLES **/ | |
190 | |
191 /* values in this table range from -1..27; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
192 static const uint16_t fft_level_exp_alt_huffcodes[28] = { |
2914 | 193 0x1ec6, 0x0006, 0x00c2, 0x0142, 0x0242, 0x0246, 0x00c6, 0x0046, |
194 0x0042, 0x0146, 0x00a2, 0x0062, 0x0026, 0x0016, 0x000e, 0x0005, | |
195 0x0004, 0x0003, 0x0000, 0x0001, 0x000a, 0x0012, 0x0002, 0x0022, | |
196 0x01c6, 0x02c6, 0x06c6, 0x0ec6 | |
197 }; | |
198 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
199 static const uint8_t fft_level_exp_alt_huffbits[28] = { |
2914 | 200 13, 7, 8, 9, 10, 10, 10, 10, 10, 9, 8, 7, 6, 5, 4, 3, |
201 3, 2, 3, 3, 4, 5, 7, 8, 9, 11, 12, 13 | |
202 }; | |
203 | |
204 /* values in this table range from -1..19; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
205 static const uint16_t fft_level_exp_huffcodes[20] = { |
2914 | 206 0x0f24, 0x0001, 0x0002, 0x0000, 0x0006, 0x0005, 0x0007, 0x000c, |
207 0x000b, 0x0014, 0x0013, 0x0004, 0x0003, 0x0023, 0x0064, 0x00a4, | |
208 0x0024, 0x0124, 0x0324, 0x0724 | |
209 }; | |
210 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
211 static const uint8_t fft_level_exp_huffbits[20] = { |
2914 | 212 12, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 8, 9, 10, 11, 12 |
213 }; | |
214 | |
215 /* values in this table range from -1..6; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
216 static const uint8_t fft_stereo_exp_huffcodes[7] = { |
2914 | 217 0x3e, 0x01, 0x00, 0x02, 0x06, 0x0e, 0x1e |
218 }; | |
219 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
220 static const uint8_t fft_stereo_exp_huffbits[7] = { |
2914 | 221 6, 1, 2, 3, 4, 5, 6 |
222 }; | |
223 | |
224 /* values in this table range from -1..8; adjust retrieved value by -1 */ | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
225 static const uint8_t fft_stereo_phase_huffcodes[9] = { |
2914 | 226 0x35, 0x02, 0x00, 0x01, 0x0d, 0x15, 0x05, 0x09, 0x03 |
227 }; | |
228 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
229 static const uint8_t fft_stereo_phase_huffbits[9] = { |
2914 | 230 6, 2, 2, 4, 4, 6, 5, 4, 2 |
231 }; | |
232 | |
233 static const int fft_cutoff_index_table[4][2] = { | |
234 { 1, 2 }, {-1, 0 }, {-1,-2 }, { 0, 0 } | |
235 }; | |
236 | |
237 static const int16_t fft_level_index_table[256] = { | |
238 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, | |
239 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
240 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, | |
241 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, | |
242 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, | |
243 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, | |
244 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, | |
245 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, | |
246 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, | |
247 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, | |
248 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, | |
249 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, | |
250 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, | |
251 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, | |
252 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, | |
253 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, | |
254 }; | |
255 | |
256 static uint8_t last_coeff[3] = { | |
257 4, 7, 10 | |
258 }; | |
259 | |
260 static uint8_t coeff_per_sb_for_avg[3][30] = { | |
261 { 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, | |
262 { 0, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, | |
263 { 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9 } | |
264 }; | |
265 | |
266 static uint32_t dequant_table[3][10][30] = { | |
267 { { 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
268 { 0, 256, 256, 205, 154, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
269 { 0, 0, 0, 51, 102, 154, 205, 256, 238, 219, 201, 183, 165, 146, 128, 110, 91, 73, 55, 37, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
270 { 0, 0, 0, 0, 0, 0, 0, 0, 18, 37, 55, 73, 91, 110, 128, 146, 165, 183, 201, 219, 238, 256, 228, 199, 171, 142, 114, 85, 57, 28 }, | |
271 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
272 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
273 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
274 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
275 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
276 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, | |
277 { { 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
278 { 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
279 { 0, 0, 256, 171, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
280 { 0, 0, 0, 85, 171, 256, 171, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
281 { 0, 0, 0, 0, 0, 0, 85, 171, 256, 219, 183, 146, 110, 73, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
282 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 73, 110, 146, 183, 219, 256, 228, 199, 171, 142, 114, 85, 57, 28, 0, 0, 0, 0, 0, 0 }, | |
283 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 57, 85, 114, 142, 171, 199, 228, 256, 213, 171, 128, 85, 43 }, | |
284 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
285 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
286 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, | |
287 { { 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
288 { 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
289 { 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
290 { 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
291 { 0, 0, 0, 0, 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
292 { 0, 0, 0, 0, 0, 0, 256, 171, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
293 { 0, 0, 0, 0, 0, 0, 0, 85, 171, 256, 192, 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
294 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 128, 192, 256, 205, 154, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, | |
295 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 102, 154, 205, 256, 213, 171, 128, 85, 43, 0, 0, 0, 0, 0, 0 }, | |
296 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 85, 128, 171, 213, 256, 213, 171, 128, 85, 43 } } | |
297 }; | |
298 | |
299 static uint8_t coeff_per_sb_for_dequant[3][30] = { | |
300 { 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, | |
301 { 0, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6 }, | |
302 { 0, 1, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9 } | |
303 }; | |
304 | |
305 /* first index is subband, 2nd index is 0, 1 or 3 (2 is unused) */ | |
306 static int8_t tone_level_idx_offset_table[30][4] = { | |
307 { -50, -50, 0, -50 }, | |
308 { -50, -50, 0, -50 }, | |
309 { -50, -9, 0, -19 }, | |
310 { -16, -6, 0, -12 }, | |
311 { -11, -4, 0, -8 }, | |
312 { -8, -3, 0, -6 }, | |
313 { -7, -3, 0, -5 }, | |
314 { -6, -2, 0, -4 }, | |
315 { -5, -2, 0, -3 }, | |
316 { -4, -1, 0, -3 }, | |
317 { -4, -1, 0, -2 }, | |
318 { -3, -1, 0, -2 }, | |
319 { -3, -1, 0, -2 }, | |
320 { -3, -1, 0, -2 }, | |
321 { -2, -1, 0, -1 }, | |
322 { -2, -1, 0, -1 }, | |
323 { -2, -1, 0, -1 }, | |
324 { -2, 0, 0, -1 }, | |
325 { -2, 0, 0, -1 }, | |
326 { -1, 0, 0, -1 }, | |
327 { -1, 0, 0, -1 }, | |
328 { -1, 0, 0, -1 }, | |
329 { -1, 0, 0, -1 }, | |
330 { -1, 0, 0, -1 }, | |
331 { -1, 0, 0, -1 }, | |
332 { -1, 0, 0, -1 }, | |
333 { -1, 0, 0, 0 }, | |
334 { -1, 0, 0, 0 }, | |
335 { -1, 0, 0, 0 }, | |
336 { -1, 0, 0, 0 } | |
337 }; | |
338 | |
339 /* all my samples have 1st index 0 or 1 */ | |
340 /* second index is subband, only indexes 0-29 seem to be used */ | |
341 static int8_t coding_method_table[5][30] = { | |
342 { 34, 30, 24, 24, 16, 16, 16, 16, 10, 10, 10, 10, 10, 10, 10, | |
343 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 | |
344 }, | |
345 { 34, 30, 24, 24, 16, 16, 16, 16, 10, 10, 10, 10, 10, 10, 10, | |
346 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 | |
347 }, | |
348 { 34, 30, 30, 30, 24, 24, 16, 16, 16, 16, 16, 16, 10, 10, 10, | |
349 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 | |
350 }, | |
351 { 34, 34, 30, 30, 24, 24, 24, 24, 16, 16, 16, 16, 16, 16, 16, | |
352 16, 16, 16, 16, 16, 16, 16, 10, 10, 10, 10, 10, 10, 10, 10 | |
353 }, | |
354 { 34, 34, 30, 30, 30, 30, 30, 30, 24, 24, 24, 24, 24, 24, 24, | |
355 24, 24, 24, 24, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 | |
356 }, | |
357 }; | |
358 | |
359 static const int vlc_stage3_values[60] = { | |
360 0, 1, 2, 3, 4, 6, 8, 10, 12, 16, 20, 24, | |
361 28, 36, 44, 52, 60, 76, 92, 108, 124, 156, 188, 220, | |
362 252, 316, 380, 444, 508, 636, 764, 892, 1020, 1276, 1532, 1788, | |
363 2044, 2556, 3068, 3580, 4092, 5116, 6140, 7164, 8188, 10236, 12284, 14332, | |
364 16380, 20476, 24572, 28668, 32764, 40956, 49148, 57340, 65532, 81916, 98300,114684 | |
365 }; | |
366 | |
367 static const float fft_tone_sample_table[4][16][5] = { | |
368 { { .0100000000f,-.0037037037f,-.0020000000f,-.0069444444f,-.0018416207f }, | |
369 { .0416666667f, .0000000000f, .0000000000f,-.0208333333f,-.0123456791f }, | |
370 { .1250000000f, .0558035709f, .0330687836f,-.0164473690f,-.0097465888f }, | |
371 { .1562500000f, .0625000000f, .0370370370f,-.0062500000f,-.0037037037f }, | |
372 { .1996007860f, .0781250000f, .0462962948f, .0022727272f, .0013468013f }, | |
373 { .2000000000f, .0625000000f, .0370370373f, .0208333333f, .0074074073f }, | |
374 { .2127659619f, .0555555556f, .0329218097f, .0208333333f, .0123456791f }, | |
375 { .2173913121f, .0473484844f, .0280583613f, .0347222239f, .0205761325f }, | |
376 { .2173913121f, .0347222239f, .0205761325f, .0473484844f, .0280583613f }, | |
377 { .2127659619f, .0208333333f, .0123456791f, .0555555556f, .0329218097f }, | |
378 { .2000000000f, .0208333333f, .0074074073f, .0625000000f, .0370370370f }, | |
379 { .1996007860f, .0022727272f, .0013468013f, .0781250000f, .0462962948f }, | |
380 { .1562500000f,-.0062500000f,-.0037037037f, .0625000000f, .0370370370f }, | |
381 { .1250000000f,-.0164473690f,-.0097465888f, .0558035709f, .0330687836f }, | |
382 { .0416666667f,-.0208333333f,-.0123456791f, .0000000000f, .0000000000f }, | |
383 { .0100000000f,-.0069444444f,-.0018416207f,-.0037037037f,-.0020000000f } }, | |
2967 | 384 |
2914 | 385 { { .0050000000f,-.0200000000f, .0125000000f,-.3030303030f, .0020000000f }, |
386 { .1041666642f, .0400000000f,-.0250000000f, .0333333333f,-.0200000000f }, | |
387 { .1250000000f, .0100000000f, .0142857144f,-.0500000007f,-.0200000000f }, | |
388 { .1562500000f,-.0006250000f,-.00049382716f,-.000625000f,-.00049382716f }, | |
389 { .1562500000f,-.0006250000f,-.00049382716f,-.000625000f,-.00049382716f }, | |
390 { .1250000000f,-.0500000000f,-.0200000000f, .0100000000f, .0142857144f }, | |
391 { .1041666667f, .0333333333f,-.0200000000f, .0400000000f,-.0250000000f }, | |
392 { .0050000000f,-.3030303030f, .0020000001f,-.0200000000f, .0125000000f }, | |
393 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
394 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
395 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
396 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
397 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
398 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
399 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
400 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f } }, | |
2967 | 401 |
2914 | 402 { { .1428571492f, .1250000000f,-.0285714287f,-.0357142873f, .0208333333f }, |
403 { .1818181818f, .0588235296f, .0333333333f, .0212765951f, .0100000000f }, | |
404 { .1818181818f, .0212765951f, .0100000000f, .0588235296f, .0333333333f }, | |
405 { .1428571492f,-.0357142873f, .0208333333f, .1250000000f,-.0285714287f }, | |
406 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
407 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
408 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
409 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
410 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
411 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
412 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
413 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
414 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
415 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
416 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
417 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f } }, | |
2967 | 418 |
2914 | 419 { { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, |
420 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
421 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
422 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
423 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
424 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
425 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
426 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
427 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
428 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
429 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
430 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
431 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
432 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
433 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f }, | |
434 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f } } | |
435 }; | |
436 | |
437 static const float fft_tone_level_table[2][64] = { { | |
438 /* pow ~ (i > 46) ? 0 : (((((i & 1) ? 431 : 304) << (i >> 1))) / 1024.0); */ | |
439 0.17677669f, 0.42677650f, 0.60355347f, 0.85355347f, | |
440 1.20710683f, 1.68359375f, 2.37500000f, 3.36718750f, | |
441 4.75000000f, 6.73437500f, 9.50000000f, 13.4687500f, | |
442 19.0000000f, 26.9375000f, 38.0000000f, 53.8750000f, | |
443 76.0000000f, 107.750000f, 152.000000f, 215.500000f, | |
444 304.000000f, 431.000000f, 608.000000f, 862.000000f, | |
445 1216.00000f, 1724.00000f, 2432.00000f, 3448.00000f, | |
446 4864.00000f, 6896.00000f, 9728.00000f, 13792.0000f, | |
447 19456.0000f, 27584.0000f, 38912.0000f, 55168.0000f, | |
448 77824.0000f, 110336.000f, 155648.000f, 220672.000f, | |
449 311296.000f, 441344.000f, 622592.000f, 882688.000f, | |
450 1245184.00f, 1765376.00f, 2490368.00f, 0.00000000f, | |
451 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, | |
452 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, | |
453 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, | |
454 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, | |
455 }, { | |
456 /* pow = (i > 45) ? 0 : ((((i & 1) ? 431 : 304) << (i >> 1)) / 512.0); */ | |
457 0.59375000f, 0.84179688f, 1.18750000f, 1.68359375f, | |
458 2.37500000f, 3.36718750f, 4.75000000f, 6.73437500f, | |
459 9.50000000f, 13.4687500f, 19.0000000f, 26.9375000f, | |
460 38.0000000f, 53.8750000f, 76.0000000f, 107.750000f, | |
461 152.000000f, 215.500000f, 304.000000f, 431.000000f, | |
462 608.000000f, 862.000000f, 1216.00000f, 1724.00000f, | |
463 2432.00000f, 3448.00000f, 4864.00000f, 6896.00000f, | |
464 9728.00000f, 13792.0000f, 19456.0000f, 27584.0000f, | |
465 38912.0000f, 55168.0000f, 77824.0000f, 110336.000f, | |
466 155648.000f, 220672.000f, 311296.000f, 441344.000f, | |
467 622592.000f, 882688.000f, 1245184.00f, 1765376.00f, | |
468 2490368.00f, 3530752.00f, 0.00000000f, 0.00000000f, | |
469 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, | |
470 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, | |
471 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, | |
472 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f | |
473 } }; | |
474 | |
475 static const float fft_tone_envelope_table[4][31] = { | |
476 { .009607375f, .038060248f, .084265202f, .146446645f, .222214907f, .308658302f, | |
477 .402454883f, .500000060f, .597545207f, .691341758f, .777785182f, .853553414f, | |
478 .915734828f, .961939812f, .990392685f, 1.00000000f, .990392625f, .961939752f, | |
479 .915734768f, .853553295f, .777785063f, .691341639f, .597545087f, .500000000f, | |
480 .402454853f, .308658272f, .222214878f, .146446615f, .084265172f, .038060218f, | |
481 .009607345f }, | |
482 { .038060248f, .146446645f, .308658302f, .500000060f, .691341758f, .853553414f, | |
483 .961939812f, 1.00000000f, .961939752f, .853553295f, .691341639f, .500000000f, | |
484 .308658272f, .146446615f, .038060218f, .000000000f, .000000000f, .000000000f, | |
485 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
486 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
487 .000000000f }, | |
488 { .146446645f, .500000060f, .853553414f, 1.00000000f, .853553295f, .500000000f, | |
489 .146446615f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
490 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
491 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
492 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
493 .000000000f }, | |
494 { .500000060f, 1.00000000f, .500000000f, .000000000f, .000000000f, .000000000f, | |
495 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
496 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
497 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
498 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
499 .000000000f } | |
500 }; | |
501 | |
502 static const float sb_noise_attenuation[32] = { | |
503 0.0f, 0.0f, 0.3f, 0.4f, 0.5f, 0.7f, 1.0f, 1.0f, | |
504 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, | |
505 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, | |
506 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, | |
507 }; | |
508 | |
509 static const uint8_t fft_subpackets[32] = { | |
510 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, | |
511 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0 | |
512 }; | |
513 | |
514 /* first index is joined_stereo, second index is 0 or 2 (1 is unused) */ | |
515 static float dequant_1bit[2][3] = { | |
516 {-0.920000f, 0.000000f, 0.920000f }, | |
517 {-0.890000f, 0.000000f, 0.890000f } | |
518 }; | |
519 | |
520 static const float type30_dequant[8] = { | |
521 -1.0f,-0.625f,-0.291666656732559f,0.0f, | |
522 0.25f,0.5f,0.75f,1.0f, | |
523 }; | |
524 | |
525 static const float type34_delta[10] = { // FIXME: covers 8 entries.. | |
526 -1.0f,-0.60947573184967f,-0.333333343267441f,-0.138071194291115f,0.0f, | |
527 0.138071194291115f,0.333333343267441f,0.60947573184967f,1.0f,0.0f, | |
528 }; | |
529 | |
530 #endif /* QDM2DATA_H */ |