Mercurial > libavcodec.hg
annotate qdm2data.h @ 12266:48d6738904a9 libavcodec
Fix SPLATB_REG mess. Used to be a if/elseif/elseif/elseif spaghetti, so this
splits it into small optimization-specific macros which are selected for each
DSP function. The advantage of this approach is that the sse4 functions now
use the ssse3 codepath also without needing an explicit sse4 codepath.
author | rbultje |
---|---|
date | Sat, 24 Jul 2010 19:33:05 +0000 |
parents | 7dd2a45249a9 |
children |
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 */ |
2967 | 24 |
2914 | 25 /** |
11644
7dd2a45249a9
Remove explicit filename from Doxygen @file commands.
diego
parents:
8718
diff
changeset
|
26 * @file |
2914 | 27 * Various QDM2 tables. |
28 */ | |
29 | |
7760 | 30 #ifndef AVCODEC_QDM2DATA_H |
31 #define AVCODEC_QDM2DATA_H | |
2914 | 32 |
5162 | 33 #include <stdint.h> |
34 | |
2914 | 35 /** VLC TABLES **/ |
36 | |
37 /* 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
|
38 static const uint16_t vlc_tab_level_huffcodes[24] = { |
2914 | 39 0x037c, 0x0004, 0x003c, 0x004c, 0x003a, 0x002c, 0x001c, 0x001a, |
40 0x0024, 0x0014, 0x0001, 0x0002, 0x0000, 0x0003, 0x0007, 0x0005, | |
41 0x0006, 0x0008, 0x0009, 0x000a, 0x000c, 0x00fc, 0x007c, 0x017c | |
42 }; | |
43 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
44 static const uint8_t vlc_tab_level_huffbits[24] = { |
2914 | 45 10, 6, 7, 7, 6, 6, 6, 6, 6, 5, 4, 4, 4, 3, 3, 3, 3, 4, 4, 5, 7, 8, 9, 10 |
46 }; | |
47 | |
48 /* 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
|
49 static const uint16_t vlc_tab_diff_huffcodes[37] = { |
2914 | 50 0x1c57, 0x0004, 0x0000, 0x0001, 0x0003, 0x0002, 0x000f, 0x000e, |
51 0x0007, 0x0016, 0x0037, 0x0027, 0x0026, 0x0066, 0x0006, 0x0097, | |
52 0x0046, 0x01c6, 0x0017, 0x0786, 0x0086, 0x0257, 0x00d7, 0x0357, | |
53 0x00c6, 0x0386, 0x0186, 0x0000, 0x0157, 0x0c57, 0x0057, 0x0000, | |
54 0x0b86, 0x0000, 0x1457, 0x0000, 0x0457 | |
55 }; | |
56 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
57 static const uint8_t vlc_tab_diff_huffbits[37] = { |
2914 | 58 13, 3, 3, 2, 3, 3, 4, 4, 6, 5, 6, 6, 7, 7, 8, 8, |
59 8, 9, 8, 11, 9, 10, 8, 10, 9, 12, 10, 0, 10, 13, 11, 0, | |
60 12, 0, 13, 0, 13 | |
61 }; | |
62 | |
63 /* 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
|
64 static const uint8_t vlc_tab_run_huffcodes[6] = { |
2914 | 65 0x1f, 0x00, 0x01, 0x03, 0x07, 0x0f |
66 }; | |
67 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
68 static const uint8_t vlc_tab_run_huffbits[6] = { |
2914 | 69 5, 1, 2, 3, 4, 5 |
70 }; | |
71 | |
72 /* 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
|
73 static const uint16_t vlc_tab_tone_level_idx_hi1_huffcodes[20] = { |
2914 | 74 0x5714, 0x000c, 0x0002, 0x0001, 0x0000, 0x0004, 0x0034, 0x0054, |
75 0x0094, 0x0014, 0x0114, 0x0214, 0x0314, 0x0614, 0x0e14, 0x0f14, | |
76 0x2714, 0x0714, 0x1714, 0x3714 | |
77 }; | |
78 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
79 static const uint8_t vlc_tab_tone_level_idx_hi1_huffbits[20] = { |
2914 | 80 15, 4, 2, 1, 3, 5, 6, 7, 8, 10, 10, 11, 11, 12, 12, 12, 14, 14, 15, 14 |
81 }; | |
82 | |
83 /* 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
|
84 static const uint16_t vlc_tab_tone_level_idx_mid_huffcodes[24] = { |
2914 | 85 0x0fea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, |
86 0x0000, 0x0000, 0x0000, 0x0000, 0x03ea, 0x00ea, 0x002a, 0x001a, | |
87 0x0006, 0x0001, 0x0000, 0x0002, 0x000a, 0x006a, 0x01ea, 0x07ea | |
88 }; | |
89 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
90 static const uint8_t vlc_tab_tone_level_idx_mid_huffbits[24] = { |
2914 | 91 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 9, 7, 5, 3, 1, 2, 4, 6, 8, 10, 12 |
92 }; | |
93 | |
94 /* 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
|
95 static const uint16_t vlc_tab_tone_level_idx_hi2_huffcodes[24] = { |
2914 | 96 0x0664, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0064, 0x00e4, |
97 0x00a4, 0x0068, 0x0004, 0x0008, 0x0014, 0x0018, 0x0000, 0x0001, | |
98 0x0002, 0x0003, 0x000c, 0x0028, 0x0024, 0x0164, 0x0000, 0x0264 | |
99 }; | |
100 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
101 static const uint8_t vlc_tab_tone_level_idx_hi2_huffbits[24] = { |
2914 | 102 11, 0, 0, 0, 0, 0, 10, 8, 8, 7, 6, 6, 5, 5, 4, 2, 2, 2, 4, 7, 8, 9, 0, 11 |
103 }; | |
104 | |
105 /* 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
|
106 static const uint8_t vlc_tab_type30_huffcodes[9] = { |
2914 | 107 0x3c, 0x06, 0x00, 0x01, 0x03, 0x02, 0x04, 0x0c, 0x1c |
108 }; | |
109 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
110 static const uint8_t vlc_tab_type30_huffbits[9] = { |
2914 | 111 6, 3, 3, 2, 2, 3, 4, 5, 6 |
112 }; | |
113 | |
114 /* 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
|
115 static const uint8_t vlc_tab_type34_huffcodes[10] = { |
2914 | 116 0x18, 0x00, 0x01, 0x04, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08 |
117 }; | |
118 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
119 static const uint8_t vlc_tab_type34_huffbits[10] = { |
2914 | 120 5, 4, 3, 3, 3, 3, 3, 3, 3, 5 |
121 }; | |
122 | |
123 /* 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
|
124 static const uint16_t vlc_tab_fft_tone_offset_0_huffcodes[23] = { |
2914 | 125 0x038e, 0x0001, 0x0000, 0x0022, 0x000a, 0x0006, 0x0012, 0x0002, |
126 0x001e, 0x003e, 0x0056, 0x0016, 0x000e, 0x0032, 0x0072, 0x0042, | |
127 0x008e, 0x004e, 0x00f2, 0x002e, 0x0036, 0x00c2, 0x018e | |
128 }; | |
129 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
130 static const uint8_t vlc_tab_fft_tone_offset_0_huffbits[23] = { |
2914 | 131 10, 1, 2, 6, 4, 5, 6, 7, 6, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 6, 6, 8, 10 |
132 }; | |
133 | |
134 /* 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
|
135 static const uint16_t vlc_tab_fft_tone_offset_1_huffcodes[28] = { |
2914 | 136 0x07a4, 0x0001, 0x0020, 0x0012, 0x001c, 0x0008, 0x0006, 0x0010, |
137 0x0000, 0x0014, 0x0004, 0x0032, 0x0070, 0x000c, 0x0002, 0x003a, | |
138 0x001a, 0x002c, 0x002a, 0x0022, 0x0024, 0x000a, 0x0064, 0x0030, | |
139 0x0062, 0x00a4, 0x01a4, 0x03a4 | |
140 }; | |
141 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
142 static const uint8_t vlc_tab_fft_tone_offset_1_huffbits[28] = { |
2914 | 143 11, 1, 6, 6, 5, 4, 3, 6, 6, 5, 6, 6, 7, 6, 6, 6, |
144 6, 6, 6, 7, 8, 6, 7, 7, 7, 9, 10, 11 | |
145 }; | |
146 | |
147 /* 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
|
148 static const uint16_t vlc_tab_fft_tone_offset_2_huffcodes[32] = { |
2914 | 149 0x1760, 0x0001, 0x0000, 0x0082, 0x000c, 0x0006, 0x0003, 0x0007, |
150 0x0008, 0x0004, 0x0010, 0x0012, 0x0022, 0x001a, 0x0000, 0x0020, | |
151 0x000a, 0x0040, 0x004a, 0x006a, 0x002a, 0x0042, 0x0002, 0x0060, | |
152 0x00aa, 0x00e0, 0x00c2, 0x01c2, 0x0160, 0x0360, 0x0760, 0x0f60 | |
153 }; | |
154 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
155 static const uint8_t vlc_tab_fft_tone_offset_2_huffbits[32] = { |
2914 | 156 13, 2, 0, 8, 4, 3, 3, 3, 4, 4, 5, 5, 6, 5, 7, 7, |
157 7, 7, 7, 7, 8, 8, 8, 9, 8, 8, 9, 9, 10, 11, 13, 12 | |
158 }; | |
159 | |
160 /* 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
|
161 static const uint16_t vlc_tab_fft_tone_offset_3_huffcodes[35] = { |
2914 | 162 0x33ea, 0x0005, 0x0000, 0x000c, 0x0000, 0x0006, 0x0003, 0x0008, |
163 0x0002, 0x0001, 0x0004, 0x0007, 0x001a, 0x000f, 0x001c, 0x002c, | |
164 0x000a, 0x001d, 0x002d, 0x002a, 0x000d, 0x004c, 0x008c, 0x006a, | |
165 0x00cd, 0x004d, 0x00ea, 0x020c, 0x030c, 0x010c, 0x01ea, 0x07ea, | |
166 0x0bea, 0x03ea, 0x13ea | |
167 }; | |
168 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
169 static const uint8_t vlc_tab_fft_tone_offset_3_huffbits[35] = { |
2914 | 170 14, 4, 0, 10, 4, 3, 3, 4, 4, 3, 4, 4, 5, 4, 5, 6, |
171 6, 5, 6, 7, 7, 7, 8, 8, 8, 8, 9, 10, 10, 10, 10, 11, | |
172 12, 13, 14 | |
173 }; | |
174 | |
175 /* 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
|
176 static const uint16_t vlc_tab_fft_tone_offset_4_huffcodes[38] = { |
2914 | 177 0x5282, 0x0016, 0x0000, 0x0136, 0x0004, 0x0000, 0x0007, 0x000a, |
178 0x000e, 0x0003, 0x0001, 0x000d, 0x0006, 0x0009, 0x0012, 0x0005, | |
179 0x0025, 0x0022, 0x0015, 0x0002, 0x0076, 0x0035, 0x0042, 0x00c2, | |
180 0x0182, 0x00b6, 0x0036, 0x03c2, 0x0482, 0x01c2, 0x0682, 0x0882, | |
181 0x0a82, 0x0082, 0x0282, 0x1282, 0x3282, 0x2282 | |
182 }; | |
183 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
184 static const uint8_t vlc_tab_fft_tone_offset_4_huffbits[38] = { |
2914 | 185 15, 6, 0, 9, 3, 3, 3, 4, 4, 3, 4, 4, 5, 4, 5, 6, |
186 6, 6, 6, 8, 7, 6, 8, 9, 9, 8, 9, 10, 11, 10, 11, 12, | |
187 12, 12, 14, 15, 14, 14 | |
188 }; | |
189 | |
190 /** FFT TABLES **/ | |
191 | |
192 /* 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
|
193 static const uint16_t fft_level_exp_alt_huffcodes[28] = { |
2914 | 194 0x1ec6, 0x0006, 0x00c2, 0x0142, 0x0242, 0x0246, 0x00c6, 0x0046, |
195 0x0042, 0x0146, 0x00a2, 0x0062, 0x0026, 0x0016, 0x000e, 0x0005, | |
196 0x0004, 0x0003, 0x0000, 0x0001, 0x000a, 0x0012, 0x0002, 0x0022, | |
197 0x01c6, 0x02c6, 0x06c6, 0x0ec6 | |
198 }; | |
199 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
200 static const uint8_t fft_level_exp_alt_huffbits[28] = { |
2914 | 201 13, 7, 8, 9, 10, 10, 10, 10, 10, 9, 8, 7, 6, 5, 4, 3, |
202 3, 2, 3, 3, 4, 5, 7, 8, 9, 11, 12, 13 | |
203 }; | |
204 | |
205 /* 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
|
206 static const uint16_t fft_level_exp_huffcodes[20] = { |
2914 | 207 0x0f24, 0x0001, 0x0002, 0x0000, 0x0006, 0x0005, 0x0007, 0x000c, |
208 0x000b, 0x0014, 0x0013, 0x0004, 0x0003, 0x0023, 0x0064, 0x00a4, | |
209 0x0024, 0x0124, 0x0324, 0x0724 | |
210 }; | |
211 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
212 static const uint8_t fft_level_exp_huffbits[20] = { |
2914 | 213 12, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 8, 9, 10, 11, 12 |
214 }; | |
215 | |
216 /* 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
|
217 static const uint8_t fft_stereo_exp_huffcodes[7] = { |
2914 | 218 0x3e, 0x01, 0x00, 0x02, 0x06, 0x0e, 0x1e |
219 }; | |
220 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
221 static const uint8_t fft_stereo_exp_huffbits[7] = { |
2914 | 222 6, 1, 2, 3, 4, 5, 6 |
223 }; | |
224 | |
225 /* 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
|
226 static const uint8_t fft_stereo_phase_huffcodes[9] = { |
2914 | 227 0x35, 0x02, 0x00, 0x01, 0x0d, 0x15, 0x05, 0x09, 0x03 |
228 }; | |
229 | |
3411
5d17415fb535
Mark read-only data as const. Patch by stefan huehner org.
banan
parents:
3036
diff
changeset
|
230 static const uint8_t fft_stereo_phase_huffbits[9] = { |
2914 | 231 6, 2, 2, 4, 4, 6, 5, 4, 2 |
232 }; | |
233 | |
234 static const int fft_cutoff_index_table[4][2] = { | |
235 { 1, 2 }, {-1, 0 }, {-1,-2 }, { 0, 0 } | |
236 }; | |
237 | |
238 static const int16_t fft_level_index_table[256] = { | |
239 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, | |
240 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, | |
241 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, | |
242 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, | |
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 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, | |
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 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, | |
255 }; | |
256 | |
7129 | 257 static const uint8_t last_coeff[3] = { |
2914 | 258 4, 7, 10 |
259 }; | |
260 | |
7129 | 261 static const uint8_t coeff_per_sb_for_avg[3][30] = { |
2914 | 262 { 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 }, |
263 { 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 }, | |
264 { 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 } | |
265 }; | |
266 | |
7129 | 267 static const uint32_t dequant_table[3][10][30] = { |
2914 | 268 { { 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 }, |
269 { 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 }, | |
270 { 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 }, | |
271 { 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 }, | |
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 { 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 } }, | |
278 { { 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 }, | |
279 { 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 }, | |
280 { 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 }, | |
281 { 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 }, | |
282 { 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 }, | |
283 { 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 }, | |
284 { 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 }, | |
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 { 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 } }, | |
288 { { 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 }, | |
289 { 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 }, | |
290 { 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 }, | |
291 { 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 }, | |
292 { 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 }, | |
293 { 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 }, | |
294 { 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 }, | |
295 { 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 }, | |
296 { 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 }, | |
297 { 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 } } | |
298 }; | |
299 | |
7129 | 300 static const uint8_t coeff_per_sb_for_dequant[3][30] = { |
2914 | 301 { 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 }, |
302 { 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 }, | |
303 { 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 } | |
304 }; | |
305 | |
306 /* first index is subband, 2nd index is 0, 1 or 3 (2 is unused) */ | |
7129 | 307 static const int8_t tone_level_idx_offset_table[30][4] = { |
2914 | 308 { -50, -50, 0, -50 }, |
309 { -50, -50, 0, -50 }, | |
310 { -50, -9, 0, -19 }, | |
311 { -16, -6, 0, -12 }, | |
312 { -11, -4, 0, -8 }, | |
313 { -8, -3, 0, -6 }, | |
314 { -7, -3, 0, -5 }, | |
315 { -6, -2, 0, -4 }, | |
316 { -5, -2, 0, -3 }, | |
317 { -4, -1, 0, -3 }, | |
318 { -4, -1, 0, -2 }, | |
319 { -3, -1, 0, -2 }, | |
320 { -3, -1, 0, -2 }, | |
321 { -3, -1, 0, -2 }, | |
322 { -2, -1, 0, -1 }, | |
323 { -2, -1, 0, -1 }, | |
324 { -2, -1, 0, -1 }, | |
325 { -2, 0, 0, -1 }, | |
326 { -2, 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, -1 }, | |
334 { -1, 0, 0, 0 }, | |
335 { -1, 0, 0, 0 }, | |
336 { -1, 0, 0, 0 }, | |
337 { -1, 0, 0, 0 } | |
338 }; | |
339 | |
340 /* all my samples have 1st index 0 or 1 */ | |
341 /* second index is subband, only indexes 0-29 seem to be used */ | |
7129 | 342 static const int8_t coding_method_table[5][30] = { |
2914 | 343 { 34, 30, 24, 24, 16, 16, 16, 16, 10, 10, 10, 10, 10, 10, 10, |
344 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 | |
345 }, | |
346 { 34, 30, 24, 24, 16, 16, 16, 16, 10, 10, 10, 10, 10, 10, 10, | |
347 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 | |
348 }, | |
349 { 34, 30, 30, 30, 24, 24, 16, 16, 16, 16, 16, 16, 10, 10, 10, | |
350 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 | |
351 }, | |
352 { 34, 34, 30, 30, 24, 24, 24, 24, 16, 16, 16, 16, 16, 16, 16, | |
353 16, 16, 16, 16, 16, 16, 16, 10, 10, 10, 10, 10, 10, 10, 10 | |
354 }, | |
355 { 34, 34, 30, 30, 30, 30, 30, 30, 24, 24, 24, 24, 24, 24, 24, | |
356 24, 24, 24, 24, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 | |
357 }, | |
358 }; | |
359 | |
360 static const int vlc_stage3_values[60] = { | |
361 0, 1, 2, 3, 4, 6, 8, 10, 12, 16, 20, 24, | |
362 28, 36, 44, 52, 60, 76, 92, 108, 124, 156, 188, 220, | |
363 252, 316, 380, 444, 508, 636, 764, 892, 1020, 1276, 1532, 1788, | |
364 2044, 2556, 3068, 3580, 4092, 5116, 6140, 7164, 8188, 10236, 12284, 14332, | |
365 16380, 20476, 24572, 28668, 32764, 40956, 49148, 57340, 65532, 81916, 98300,114684 | |
366 }; | |
367 | |
368 static const float fft_tone_sample_table[4][16][5] = { | |
369 { { .0100000000f,-.0037037037f,-.0020000000f,-.0069444444f,-.0018416207f }, | |
370 { .0416666667f, .0000000000f, .0000000000f,-.0208333333f,-.0123456791f }, | |
371 { .1250000000f, .0558035709f, .0330687836f,-.0164473690f,-.0097465888f }, | |
372 { .1562500000f, .0625000000f, .0370370370f,-.0062500000f,-.0037037037f }, | |
373 { .1996007860f, .0781250000f, .0462962948f, .0022727272f, .0013468013f }, | |
374 { .2000000000f, .0625000000f, .0370370373f, .0208333333f, .0074074073f }, | |
375 { .2127659619f, .0555555556f, .0329218097f, .0208333333f, .0123456791f }, | |
376 { .2173913121f, .0473484844f, .0280583613f, .0347222239f, .0205761325f }, | |
377 { .2173913121f, .0347222239f, .0205761325f, .0473484844f, .0280583613f }, | |
378 { .2127659619f, .0208333333f, .0123456791f, .0555555556f, .0329218097f }, | |
379 { .2000000000f, .0208333333f, .0074074073f, .0625000000f, .0370370370f }, | |
380 { .1996007860f, .0022727272f, .0013468013f, .0781250000f, .0462962948f }, | |
381 { .1562500000f,-.0062500000f,-.0037037037f, .0625000000f, .0370370370f }, | |
382 { .1250000000f,-.0164473690f,-.0097465888f, .0558035709f, .0330687836f }, | |
383 { .0416666667f,-.0208333333f,-.0123456791f, .0000000000f, .0000000000f }, | |
384 { .0100000000f,-.0069444444f,-.0018416207f,-.0037037037f,-.0020000000f } }, | |
2967 | 385 |
2914 | 386 { { .0050000000f,-.0200000000f, .0125000000f,-.3030303030f, .0020000000f }, |
387 { .1041666642f, .0400000000f,-.0250000000f, .0333333333f,-.0200000000f }, | |
388 { .1250000000f, .0100000000f, .0142857144f,-.0500000007f,-.0200000000f }, | |
389 { .1562500000f,-.0006250000f,-.00049382716f,-.000625000f,-.00049382716f }, | |
390 { .1562500000f,-.0006250000f,-.00049382716f,-.000625000f,-.00049382716f }, | |
391 { .1250000000f,-.0500000000f,-.0200000000f, .0100000000f, .0142857144f }, | |
392 { .1041666667f, .0333333333f,-.0200000000f, .0400000000f,-.0250000000f }, | |
393 { .0050000000f,-.3030303030f, .0020000001f,-.0200000000f, .0125000000f }, | |
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 }, | |
401 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f } }, | |
2967 | 402 |
2914 | 403 { { .1428571492f, .1250000000f,-.0285714287f,-.0357142873f, .0208333333f }, |
404 { .1818181818f, .0588235296f, .0333333333f, .0212765951f, .0100000000f }, | |
405 { .1818181818f, .0212765951f, .0100000000f, .0588235296f, .0333333333f }, | |
406 { .1428571492f,-.0357142873f, .0208333333f, .1250000000f,-.0285714287f }, | |
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 }, | |
418 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f } }, | |
2967 | 419 |
2914 | 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 { .0000000000f, .0000000000f, .0000000000f, .0000000000f, .0000000000f } } | |
436 }; | |
437 | |
438 static const float fft_tone_level_table[2][64] = { { | |
439 /* pow ~ (i > 46) ? 0 : (((((i & 1) ? 431 : 304) << (i >> 1))) / 1024.0); */ | |
440 0.17677669f, 0.42677650f, 0.60355347f, 0.85355347f, | |
441 1.20710683f, 1.68359375f, 2.37500000f, 3.36718750f, | |
442 4.75000000f, 6.73437500f, 9.50000000f, 13.4687500f, | |
443 19.0000000f, 26.9375000f, 38.0000000f, 53.8750000f, | |
444 76.0000000f, 107.750000f, 152.000000f, 215.500000f, | |
445 304.000000f, 431.000000f, 608.000000f, 862.000000f, | |
446 1216.00000f, 1724.00000f, 2432.00000f, 3448.00000f, | |
447 4864.00000f, 6896.00000f, 9728.00000f, 13792.0000f, | |
448 19456.0000f, 27584.0000f, 38912.0000f, 55168.0000f, | |
449 77824.0000f, 110336.000f, 155648.000f, 220672.000f, | |
450 311296.000f, 441344.000f, 622592.000f, 882688.000f, | |
451 1245184.00f, 1765376.00f, 2490368.00f, 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 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f, | |
456 }, { | |
457 /* pow = (i > 45) ? 0 : ((((i & 1) ? 431 : 304) << (i >> 1)) / 512.0); */ | |
458 0.59375000f, 0.84179688f, 1.18750000f, 1.68359375f, | |
459 2.37500000f, 3.36718750f, 4.75000000f, 6.73437500f, | |
460 9.50000000f, 13.4687500f, 19.0000000f, 26.9375000f, | |
461 38.0000000f, 53.8750000f, 76.0000000f, 107.750000f, | |
462 152.000000f, 215.500000f, 304.000000f, 431.000000f, | |
463 608.000000f, 862.000000f, 1216.00000f, 1724.00000f, | |
464 2432.00000f, 3448.00000f, 4864.00000f, 6896.00000f, | |
465 9728.00000f, 13792.0000f, 19456.0000f, 27584.0000f, | |
466 38912.0000f, 55168.0000f, 77824.0000f, 110336.000f, | |
467 155648.000f, 220672.000f, 311296.000f, 441344.000f, | |
468 622592.000f, 882688.000f, 1245184.00f, 1765376.00f, | |
469 2490368.00f, 3530752.00f, 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 0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f | |
474 } }; | |
475 | |
476 static const float fft_tone_envelope_table[4][31] = { | |
477 { .009607375f, .038060248f, .084265202f, .146446645f, .222214907f, .308658302f, | |
478 .402454883f, .500000060f, .597545207f, .691341758f, .777785182f, .853553414f, | |
479 .915734828f, .961939812f, .990392685f, 1.00000000f, .990392625f, .961939752f, | |
480 .915734768f, .853553295f, .777785063f, .691341639f, .597545087f, .500000000f, | |
481 .402454853f, .308658272f, .222214878f, .146446615f, .084265172f, .038060218f, | |
482 .009607345f }, | |
483 { .038060248f, .146446645f, .308658302f, .500000060f, .691341758f, .853553414f, | |
484 .961939812f, 1.00000000f, .961939752f, .853553295f, .691341639f, .500000000f, | |
485 .308658272f, .146446615f, .038060218f, .000000000f, .000000000f, .000000000f, | |
486 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
487 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
488 .000000000f }, | |
489 { .146446645f, .500000060f, .853553414f, 1.00000000f, .853553295f, .500000000f, | |
490 .146446615f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
491 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
492 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
493 .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
494 .000000000f }, | |
495 { .500000060f, 1.00000000f, .500000000f, .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, .000000000f, .000000000f, .000000000f, .000000000f, .000000000f, | |
500 .000000000f } | |
501 }; | |
502 | |
503 static const float sb_noise_attenuation[32] = { | |
504 0.0f, 0.0f, 0.3f, 0.4f, 0.5f, 0.7f, 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 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, | |
508 }; | |
509 | |
510 static const uint8_t fft_subpackets[32] = { | |
511 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, | |
512 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0 | |
513 }; | |
514 | |
515 /* first index is joined_stereo, second index is 0 or 2 (1 is unused) */ | |
7129 | 516 static const float dequant_1bit[2][3] = { |
2914 | 517 {-0.920000f, 0.000000f, 0.920000f }, |
518 {-0.890000f, 0.000000f, 0.890000f } | |
519 }; | |
520 | |
521 static const float type30_dequant[8] = { | |
522 -1.0f,-0.625f,-0.291666656732559f,0.0f, | |
523 0.25f,0.5f,0.75f,1.0f, | |
524 }; | |
525 | |
526 static const float type34_delta[10] = { // FIXME: covers 8 entries.. | |
527 -1.0f,-0.60947573184967f,-0.333333343267441f,-0.138071194291115f,0.0f, | |
528 0.138071194291115f,0.333333343267441f,0.60947573184967f,1.0f,0.0f, | |
529 }; | |
530 | |
7760 | 531 #endif /* AVCODEC_QDM2DATA_H */ |