summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/libwmapro/wmaprodata.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/codecs/libwmapro/wmaprodata.h')
-rw-r--r--lib/rbcodec/codecs/libwmapro/wmaprodata.h615
1 files changed, 615 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/libwmapro/wmaprodata.h b/lib/rbcodec/codecs/libwmapro/wmaprodata.h
new file mode 100644
index 0000000000..94762f7dbf
--- /dev/null
+++ b/lib/rbcodec/codecs/libwmapro/wmaprodata.h
@@ -0,0 +1,615 @@
1/*
2 * WMA 9/3/PRO compatible decoder
3 * Copyright (c) 2007 Baptiste Coudurier, Benjamin Larsson, Ulion
4 * Copyright (c) 2008 - 2009 Sascha Sommer
5 *
6 * This file is part of FFmpeg.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23/**
24 * @file libavcodec/wmaprodata.h
25 * @brief tables for wmapro decoding
26 */
27
28#ifndef AVCODEC_WMAPRODATA_H
29#define AVCODEC_WMAPRODATA_H
30
31#include <stddef.h>
32#include <stdint.h>
33
34/* rockbox: not used
35const int32_t fixed_sin64[33] = {
36 0x00000000, 0xF9B82685, 0xF3742CA3, 0xED37EF92, 0xE70747C5, 0xE0E60686,
37 0xDAD7F3A3, 0xD4E0CB16, 0xCF043AB4, 0xC945DFED, 0xC3A94591, 0xBE31E19C,
38 0xB8E3131A, 0xB3C0200D, 0xAECC336D, 0xAA0A5B2F, 0xA57D8667, 0xA1288377,
39 0x9D0DFE55, 0x99307EE1, 0x9592675D, 0x9235F2ED, 0x8F1D343B, 0x8C4A1430,
40 0x89BE50C4, 0x877B7BED, 0x8582FAA6, 0x83D60413, 0x8275A0C1, 0x8162AA05,
41 0x809DC972, 0x80277873, 0x80000001,
42};
43*/
44/**
45 * @brief frequencies to divide the frequency spectrum into scale factor bands
46 */
47static const uint16_t critical_freq[] = {
48 100, 200, 300, 400, 510, 630, 770,
49 920, 1080, 1270, 1480, 1720, 2000, 2320,
50 2700, 3150, 3700, 4400, 5300, 6400, 7700,
51 9500, 12000, 15500, 20675, 28575, 41375, 63875,
52};
53
54/**
55 * @name Huffman tables for DPCM-coded scale factors
56 * @{
57 */
58#define HUFF_SCALE_SIZE 121
59#define HUFF_SCALE_MAXBITS 19
60static const uint16_t scale_huffcodes[HUFF_SCALE_SIZE] = {
61 0xE639, 0xE6C2, 0xE6C1, 0xE6C0, 0xE63F, 0xE63E, 0xE63D, 0xE63C,
62 0xE63B, 0xE63A, 0xE638, 0xE637, 0xE636, 0xE635, 0xE634, 0xE632,
63 0xE633, 0xE620, 0x737B, 0xE610, 0xE611, 0xE612, 0xE613, 0xE614,
64 0xE615, 0xE616, 0xE617, 0xE618, 0xE619, 0xE61A, 0xE61B, 0xE61C,
65 0xE61D, 0xE61E, 0xE61F, 0xE6C3, 0xE621, 0xE622, 0xE623, 0xE624,
66 0xE625, 0xE626, 0xE627, 0xE628, 0xE629, 0xE62A, 0xE62B, 0xE62C,
67 0xE62D, 0xE62E, 0xE62F, 0xE630, 0xE631, 0x1CDF, 0x0E60, 0x0399,
68 0x00E7, 0x001D, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0006,
69 0x0002, 0x0007, 0x0006, 0x000F, 0x0038, 0x0072, 0x039A, 0xE6C4,
70 0xE6C5, 0xE6C6, 0xE6C7, 0xE6C8, 0xE6C9, 0xE6CA, 0xE6CB, 0xE6CC,
71 0xE6CD, 0xE6CE, 0xE6CF, 0xE6D0, 0xE6D1, 0xE6D2, 0xE6D3, 0xE6D4,
72 0xE6D5, 0xE6D6, 0xE6D7, 0xE6D8, 0xE6D9, 0xE6DA, 0xE6DB, 0xE6DC,
73 0xE6DD, 0xE6DE, 0xE6DF, 0xE6E0, 0xE6E1, 0xE6E2, 0xE6E3, 0xE6E4,
74 0xE6E5, 0xE6E6, 0xE6E7, 0xE6E8, 0xE6E9, 0xE6EA, 0xE6EB, 0xE6EC,
75 0xE6ED, 0xE6EE, 0xE6EF, 0xE6F0, 0xE6F1, 0xE6F2, 0xE6F3, 0xE6F4,
76 0xE6F5,
77};
78
79static const uint8_t scale_huffbits[HUFF_SCALE_SIZE] = {
80 19, 19, 19, 19, 19, 19, 19, 19,
81 19, 19, 19, 19, 19, 19, 19, 19,
82 19, 19, 18, 19, 19, 19, 19, 19,
83 19, 19, 19, 19, 19, 19, 19, 19,
84 19, 19, 19, 19, 19, 19, 19, 19,
85 19, 19, 19, 19, 19, 19, 19, 19,
86 19, 19, 19, 19, 19, 16, 15, 13,
87 11, 8, 5, 2, 1, 3, 5, 6,
88 6, 7, 7, 7, 9, 10, 13, 19,
89 19, 19, 19, 19, 19, 19, 19, 19,
90 19, 19, 19, 19, 19, 19, 19, 19,
91 19, 19, 19, 19, 19, 19, 19, 19,
92 19, 19, 19, 19, 19, 19, 19, 19,
93 19, 19, 19, 19, 19, 19, 19, 19,
94 19, 19, 19, 19, 19, 19, 19, 19,
95 19,
96};
97/** @} */
98
99
100/**
101 * @name Huffman, run and level tables for runlevel-coded scale factors
102 * @{
103 */
104#define HUFF_SCALE_RL_SIZE 120
105#define HUFF_SCALE_RL_MAXBITS 21
106static const uint32_t scale_rl_huffcodes[HUFF_SCALE_RL_SIZE] = {
107 0x00010C, 0x000001, 0x10FE2A, 0x000003, 0x000003, 0x000001, 0x000013,
108 0x000020, 0x000029, 0x000014, 0x000016, 0x000045, 0x000049, 0x00002F,
109 0x000042, 0x00008E, 0x00008F, 0x000129, 0x000009, 0x00000D, 0x0004AC,
110 0x00002C, 0x000561, 0x0002E6, 0x00087C, 0x0002E2, 0x00095C, 0x000018,
111 0x000001, 0x000016, 0x000044, 0x00002A, 0x000007, 0x000159, 0x000143,
112 0x000128, 0x00015A, 0x00012D, 0x00002B, 0x0000A0, 0x000142, 0x00012A,
113 0x0002EF, 0x0004AF, 0x00087D, 0x004AE9, 0x0043F9, 0x000067, 0x000199,
114 0x002B05, 0x001583, 0x0021FE, 0x10FE2C, 0x000004, 0x00002E, 0x00010D,
115 0x00000A, 0x000244, 0x000017, 0x000245, 0x000011, 0x00010E, 0x00012C,
116 0x00002A, 0x00002F, 0x000121, 0x000046, 0x00087E, 0x0000BA, 0x000032,
117 0x0087F0, 0x0056DC, 0x0002EC, 0x0043FA, 0x002B6F, 0x004AE8, 0x0002B7,
118 0x10FE2B, 0x000001, 0x000051, 0x000010, 0x0002EE, 0x000B9C, 0x002576,
119 0x000198, 0x0056DD, 0x0000CD, 0x000AC0, 0x000170, 0x004AEF, 0x00002D,
120 0x0004AD, 0x0021FF, 0x0005CF, 0x002B04, 0x10FE29, 0x10FE28, 0x0002ED,
121 0x002E74, 0x021FC4, 0x004AEE, 0x010FE3, 0x087F17, 0x000000, 0x000097,
122 0x0002E3, 0x000ADA, 0x002575, 0x00173B, 0x0043FB, 0x002E75, 0x10FE2D,
123 0x0015B6, 0x00056C, 0x000057, 0x000123, 0x000120, 0x00021E, 0x000172,
124 0x0002B1,
125};
126
127static const uint8_t scale_rl_huffbits[HUFF_SCALE_RL_SIZE] = {
128 9, 2, 21, 2, 4, 5, 5,
129 6, 6, 7, 7, 7, 7, 6,
130 7, 8, 8, 9, 10, 10, 11,
131 12, 11, 12, 12, 12, 12, 11,
132 4, 5, 7, 8, 9, 9, 9,
133 9, 9, 9, 8, 8, 9, 9,
134 12, 11, 12, 15, 15, 13, 15,
135 14, 13, 14, 21, 5, 6, 9,
136 10, 10, 11, 10, 11, 9, 9,
137 6, 8, 9, 7, 12, 10, 12,
138 16, 15, 12, 15, 14, 15, 10,
139 21, 6, 7, 11, 12, 14, 14,
140 15, 15, 14, 12, 11, 15, 12,
141 11, 14, 13, 14, 21, 21, 12,
142 16, 18, 15, 17, 20, 7, 8,
143 12, 12, 14, 15, 15, 16, 21,
144 13, 11, 7, 9, 9, 10, 11,
145 10,
146};
147
148
149static const uint8_t scale_rl_run[HUFF_SCALE_RL_SIZE] = {
150 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
151 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
152 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3,
153 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
154 23, 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
155 17, 18, 19, 20, 21, 22, 23, 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
156 0, 1, 0, 1, 0, 1,
157};
158
159static const uint8_t scale_rl_level[HUFF_SCALE_RL_SIZE] = {
160 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
161 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
162 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
163 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
164 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
165 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
166 7, 7, 8, 8, 9, 9,
167};
168/** @} */
169
170
171/**
172 * @name Huffman, run and level codes for runlevel-coded coefficients
173 * @{
174 */
175#define HUFF_COEF0_SIZE 272
176#define HUFF_COEF0_MAXBITS 21
177static const uint32_t coef0_huffcodes[HUFF_COEF0_SIZE] = {
178 0x00004A, 0x00002B, 0x000000, 0x000003, 0x000006, 0x000009, 0x00000F,
179 0x000010, 0x000016, 0x000011, 0x000016, 0x000028, 0x00002F, 0x000026,
180 0x000029, 0x000045, 0x000055, 0x00005D, 0x000042, 0x00004E, 0x000051,
181 0x00005E, 0x00008D, 0x0000A8, 0x0000AD, 0x000080, 0x000096, 0x00009F,
182 0x0000AA, 0x0000BE, 0x00011C, 0x000153, 0x000158, 0x000170, 0x000104,
183 0x00010D, 0x000105, 0x000103, 0x00012F, 0x000177, 0x000175, 0x000157,
184 0x000174, 0x000225, 0x00023B, 0x00020D, 0x00021F, 0x000281, 0x00027B,
185 0x000282, 0x0002AC, 0x0002FD, 0x00044F, 0x000478, 0x00044D, 0x0002EC,
186 0x00044E, 0x000564, 0x000409, 0x00040B, 0x000501, 0x000545, 0x0004F3,
187 0x000541, 0x00043B, 0x0004F1, 0x0004F4, 0x0008FD, 0x000A94, 0x000811,
188 0x000B88, 0x000B91, 0x000B93, 0x0008EA, 0x000899, 0x000B8A, 0x000972,
189 0x0009E5, 0x000A8F, 0x000A84, 0x000A8E, 0x000A00, 0x000830, 0x0008E8,
190 0x000B95, 0x000871, 0x00083A, 0x000814, 0x000873, 0x000BFE, 0x001728,
191 0x001595, 0x001712, 0x00102A, 0x001021, 0x001729, 0x00152E, 0x0013C3,
192 0x001721, 0x001597, 0x00151B, 0x0010F2, 0x001403, 0x001703, 0x001503,
193 0x001708, 0x0013C1, 0x00170E, 0x00170C, 0x0010E1, 0x0011EA, 0x001020,
194 0x001500, 0x0017FA, 0x001704, 0x001705, 0x0017F0, 0x0017FB, 0x0021E6,
195 0x002B2D, 0x0020C6, 0x002B29, 0x002E4A, 0x0023AC, 0x001519, 0x0023F3,
196 0x002B2C, 0x0021C0, 0x0017FE, 0x0023D7, 0x0017F9, 0x0012E7, 0x0013C0,
197 0x002261, 0x0023D3, 0x002057, 0x002056, 0x0021D2, 0x0020C7, 0x0023D2,
198 0x0020EC, 0x0044C0, 0x002FE2, 0x00475B, 0x002A03, 0x002FE3, 0x0021E2,
199 0x0021D0, 0x002A31, 0x002E13, 0x002E05, 0x0047E5, 0x00000E, 0x000024,
200 0x000088, 0x0000B9, 0x00010C, 0x000224, 0x0002B3, 0x000283, 0x0002ED,
201 0x00047B, 0x00041E, 0x00043D, 0x0004F5, 0x0005FD, 0x000A92, 0x000B96,
202 0x000838, 0x000971, 0x000B83, 0x000B80, 0x000BF9, 0x0011D3, 0x0011E8,
203 0x0011D7, 0x001527, 0x0011F8, 0x001073, 0x0010F0, 0x0010E4, 0x0017F8,
204 0x001062, 0x001402, 0x0017E3, 0x00151A, 0x001077, 0x00152B, 0x00170D,
205 0x0021D3, 0x002E41, 0x0013C2, 0x000029, 0x0000A9, 0x00025D, 0x000419,
206 0x000544, 0x000B8B, 0x0009E4, 0x0011D2, 0x001526, 0x001724, 0x0012E6,
207 0x00150B, 0x0017FF, 0x002E26, 0x002E4B, 0x002B28, 0x0021E3, 0x002A14,
208 0x00475A, 0x002E12, 0x000057, 0x00023E, 0x000A90, 0x000BF0, 0x001072,
209 0x001502, 0x0023D6, 0x0020ED, 0x002A30, 0x0044C7, 0x00008C, 0x00047F,
210 0x00152A, 0x002262, 0x002E04, 0x0000A1, 0x0005F9, 0x000173, 0x000875,
211 0x000171, 0x00152D, 0x0002E3, 0x0017E2, 0x0002AD, 0x0021C1, 0x000479,
212 0x0021E7, 0x00041F, 0x005C4E, 0x000543, 0x005C4F, 0x000A91, 0x00898D,
213 0x000B97, 0x008746, 0x000970, 0x008745, 0x000B85, 0x00A856, 0x00152F,
214 0x010E8E, 0x0010E5, 0x00A857, 0x00170F, 0x021D11, 0x002A58, 0x010E8F,
215 0x002E40, 0x021D13, 0x002A59, 0x043A25, 0x002A02, 0x043A21, 0x0044C1,
216 0x087448, 0x0047E4, 0x043A20, 0x00542A, 0x087449, 0x00898C,
217};
218
219static const uint8_t coef0_huffbits[HUFF_COEF0_SIZE] = {
220 8, 7, 2, 3, 3, 4, 4,
221 5, 5, 6, 6, 6, 6, 7,
222 7, 7, 7, 7, 8, 8, 8,
223 8, 8, 8, 8, 9, 9, 9,
224 9, 9, 9, 9, 9, 9, 10,
225 10, 10, 10, 10, 10, 10, 10,
226 10, 10, 10, 11, 11, 11, 11,
227 11, 11, 11, 11, 11, 11, 11,
228 11, 11, 12, 12, 12, 12, 12,
229 12, 12, 12, 12, 12, 12, 13,
230 12, 12, 12, 12, 12, 12, 13,
231 13, 13, 13, 13, 13, 13, 12,
232 12, 13, 13, 13, 13, 13, 13,
233 13, 13, 14, 14, 13, 13, 14,
234 13, 13, 14, 14, 14, 14, 14,
235 14, 14, 14, 14, 14, 13, 14,
236 14, 14, 14, 14, 14, 14, 15,
237 14, 15, 14, 14, 14, 14, 14,
238 14, 15, 14, 14, 14, 14, 14,
239 14, 14, 15, 15, 15, 15, 14,
240 15, 15, 15, 15, 15, 15, 15,
241 15, 15, 15, 15, 15, 4, 7,
242 8, 9, 10, 10, 10, 11, 11,
243 11, 12, 12, 12, 12, 12, 12,
244 13, 13, 13, 13, 13, 13, 13,
245 13, 13, 13, 14, 14, 14, 14,
246 14, 14, 14, 14, 14, 13, 14,
247 15, 14, 14, 6, 9, 11, 12,
248 12, 12, 13, 13, 13, 13, 14,
249 14, 14, 14, 14, 14, 15, 15,
250 15, 15, 7, 10, 12, 13, 14,
251 14, 14, 15, 15, 15, 8, 11,
252 13, 14, 15, 9, 12, 9, 13,
253 10, 13, 10, 14, 11, 15, 11,
254 15, 12, 15, 12, 15, 12, 16,
255 12, 17, 13, 17, 13, 17, 13,
256 18, 14, 17, 14, 19, 14, 18,
257 14, 19, 14, 20, 15, 20, 15,
258 21, 15, 20, 16, 21, 16,
259};
260
261
262#define HUFF_COEF1_SIZE 244
263#define HUFF_COEF1_MAXBITS 22
264static const uint32_t coef1_huffcodes[HUFF_COEF1_SIZE] = {
265 0x0001E2, 0x00007F, 0x000000, 0x000002, 0x000008, 0x00000E, 0x000019,
266 0x00002F, 0x000037, 0x000060, 0x00006C, 0x000095, 0x0000C6, 0x0000F0,
267 0x00012E, 0x000189, 0x0001A5, 0x0001F8, 0x000253, 0x00030A, 0x000344,
268 0x00034D, 0x0003F2, 0x0004BD, 0x0005D7, 0x00062A, 0x00068B, 0x000693,
269 0x000797, 0x00097D, 0x000BAB, 0x000C52, 0x000C5E, 0x000D21, 0x000D20,
270 0x000F1A, 0x000FCE, 0x000FD1, 0x0012F1, 0x001759, 0x0018AC, 0x0018A7,
271 0x0018BF, 0x001A2B, 0x001E52, 0x001E50, 0x001E31, 0x001FB8, 0x0025E6,
272 0x0025E7, 0x002EB4, 0x002EB7, 0x003169, 0x00315B, 0x00317C, 0x00316C,
273 0x0034CA, 0x00348D, 0x003F40, 0x003CA2, 0x003F76, 0x004BC3, 0x004BE5,
274 0x003F73, 0x004BF8, 0x004BF9, 0x006131, 0x00628B, 0x006289, 0x0062DA,
275 0x00628A, 0x0062D4, 0x006997, 0x0062B4, 0x006918, 0x00794D, 0x007E7B,
276 0x007E87, 0x007EEA, 0x00794E, 0x00699D, 0x007967, 0x00699F, 0x0062DB,
277 0x007E7A, 0x007EEB, 0x00BAC0, 0x0097C9, 0x00C537, 0x00C5AB, 0x00D233,
278 0x00D338, 0x00BAC1, 0x00D23D, 0x012F91, 0x00D339, 0x00FDC8, 0x00D23C,
279 0x00FDDC, 0x00FDC9, 0x00FDDD, 0x00D33C, 0x000003, 0x000016, 0x00003E,
280 0x0000C3, 0x0001A1, 0x000347, 0x00062E, 0x000BAA, 0x000F2D, 0x001A2A,
281 0x001E58, 0x00309B, 0x003CA3, 0x005D6A, 0x00629A, 0x006996, 0x00794F,
282 0x007EE5, 0x00BAD7, 0x00C5AA, 0x00C5F4, 0x00FDDF, 0x00FDDE, 0x018A20,
283 0x018A6D, 0x01A67B, 0x01A464, 0x025F21, 0x01F9E2, 0x01F9E3, 0x00000A,
284 0x00003D, 0x000128, 0x0003C7, 0x000C24, 0x0018A3, 0x002EB1, 0x003CB2,
285 0x00691F, 0x007E79, 0x000013, 0x0000BB, 0x00034E, 0x000D14, 0x0025FD,
286 0x004BE7, 0x000024, 0x000188, 0x0007EF, 0x000035, 0x000308, 0x0012F2,
287 0x00005C, 0x0003F6, 0x0025E0, 0x00006D, 0x000698, 0x000096, 0x000C25,
288 0x0000C7, 0x000F1B, 0x0000F3, 0x0012FF, 0x000174, 0x001A66, 0x0001A0,
289 0x003099, 0x0001E4, 0x00316B, 0x000252, 0x003F31, 0x00030B, 0x004BE6,
290 0x000346, 0x0062FB, 0x00034F, 0x007966, 0x0003F5, 0x007E86, 0x0005D4,
291 0x00C511, 0x00062C, 0x00C5F5, 0x000692, 0x00F299, 0x000795, 0x00F298,
292 0x0007E9, 0x018A21, 0x00097E, 0x0175AD, 0x000C27, 0x01A67A, 0x000C57,
293 0x02EB59, 0x000D22, 0x0314D9, 0x000F19, 0x03F3C2, 0x000FCD, 0x0348CB,
294 0x0012F8, 0x04BE41, 0x0018A0, 0x03F3C1, 0x0018A1, 0x04BE40, 0x0018B7,
295 0x0629B0, 0x001A64, 0x0D2329, 0x001E30, 0x03F3C3, 0x001F9F, 0x0BAD62,
296 0x001F99, 0x0FCF00, 0x00309A, 0x0629B1, 0x002EB6, 0x175AC3, 0x00314C,
297 0x069195, 0x003168, 0x0BAD63, 0x00348E, 0x175AC1, 0x003F30, 0x07E781,
298 0x003F41, 0x0D2328, 0x003F42, 0x1F9E03, 0x004BC2, 0x175AC2, 0x003F74,
299 0x175AC0, 0x005D61, 0x3F3C05, 0x006130, 0x3F3C04, 0x0062B5,
300};
301
302static const uint8_t coef1_huffbits[HUFF_COEF1_SIZE] = {
303 9, 7, 2, 3, 4, 4, 5,
304 6, 6, 7, 7, 8, 8, 8,
305 9, 9, 9, 9, 10, 10, 10,
306 10, 10, 11, 11, 11, 11, 11,
307 11, 12, 12, 12, 12, 12, 12,
308 12, 12, 12, 13, 13, 13, 13,
309 13, 13, 13, 13, 13, 13, 14,
310 14, 14, 14, 14, 14, 14, 14,
311 14, 14, 14, 14, 14, 15, 15,
312 14, 15, 15, 15, 15, 15, 15,
313 15, 15, 15, 15, 15, 15, 15,
314 15, 15, 15, 15, 15, 15, 15,
315 15, 15, 16, 16, 16, 16, 16,
316 16, 16, 16, 17, 16, 16, 16,
317 16, 16, 16, 16, 3, 5, 6,
318 8, 9, 10, 11, 12, 12, 13,
319 13, 14, 14, 15, 15, 15, 15,
320 15, 16, 16, 16, 16, 16, 17,
321 17, 17, 17, 18, 17, 17, 4,
322 6, 9, 10, 12, 13, 14, 14,
323 15, 15, 5, 8, 10, 12, 14,
324 15, 6, 9, 11, 6, 10, 13,
325 7, 10, 14, 7, 11, 8, 12,
326 8, 12, 8, 13, 9, 13, 9,
327 14, 9, 14, 10, 14, 10, 15,
328 10, 15, 10, 15, 10, 15, 11,
329 16, 11, 16, 11, 16, 11, 16,
330 11, 17, 12, 17, 12, 17, 12,
331 18, 12, 18, 12, 18, 12, 18,
332 13, 19, 13, 18, 13, 19, 13,
333 19, 13, 20, 13, 18, 13, 20,
334 13, 20, 14, 19, 14, 21, 14,
335 19, 14, 20, 14, 21, 14, 19,
336 14, 20, 14, 21, 15, 21, 14,
337 21, 15, 22, 15, 22, 15,
338};
339
340
341static const uint16_t coef0_run[HUFF_COEF0_SIZE] = {
342 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
343 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
344 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
345 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
346 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
347 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
348 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
349 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
350 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
351 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
352 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 0, 1,
353 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
354 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
355 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 1, 2, 3,
356 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
357 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1,
358 2, 3, 4, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
359 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
360 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
361 1, 0, 1, 0, 1, 0,
362};
363
364static const int32_t coef0_level[HUFF_COEF0_SIZE] = {
365 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
366 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
367 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
368 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
369 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
370 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
371 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
372 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
373 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
374 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
375 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
376 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
377 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
378 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
379 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
380 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5,
381 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
382 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18,
383 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25,
384 25, 26, 26, 27, 27, 28,
385};
386
387
388static const uint16_t coef1_run[HUFF_COEF1_SIZE] = {
389 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
390 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
391 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
392 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
393 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
394 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, 1, 2, 3, 4, 5,
395 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
396 24, 25, 26, 27, 28, 29, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1,
397 2, 3, 4, 5, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 0, 1, 0,
398 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
399 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
400 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
401 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
402 1, 0, 1, 0, 1, 0, 1, 0, 0, 0,
403};
404
405static const int32_t coef1_level[HUFF_COEF1_SIZE] = {
406 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
407 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
408 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
409 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
410 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
411 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
412 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
413 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4,
414 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10,
415 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19,
416 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28,
417 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37,
418 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46,
419 46, 47, 47, 48, 48, 49, 49, 50, 51, 52,
420};
421/** @} */
422
423
424/**
425 * @name Huffman and vector lookup tables for vector-coded coefficients
426 * @{
427 */
428#define HUFF_VEC4_SIZE 127
429#define HUFF_VEC4_MAXBITS 14
430static const uint16_t vec4_huffcodes[HUFF_VEC4_SIZE] = {
431 0x0019, 0x0027, 0x00F2, 0x03BA, 0x0930, 0x1267, 0x0031, 0x0030,
432 0x0097, 0x0221, 0x058B, 0x0124, 0x00EB, 0x01D4, 0x03D8, 0x0584,
433 0x0364, 0x045F, 0x0F66, 0x0931, 0x24CD, 0x002F, 0x0039, 0x00E8,
434 0x02C3, 0x078A, 0x0037, 0x0029, 0x0084, 0x01B1, 0x00ED, 0x0086,
435 0x00F9, 0x03AB, 0x01EB, 0x08BC, 0x011E, 0x00F3, 0x0220, 0x058A,
436 0x00EC, 0x008E, 0x012B, 0x01EA, 0x0119, 0x04B0, 0x04B1, 0x03B8,
437 0x0691, 0x0365, 0x01ED, 0x049A, 0x0EA9, 0x0EA8, 0x08BD, 0x24CC,
438 0x0026, 0x0035, 0x00DB, 0x02C4, 0x07B2, 0x0038, 0x002B, 0x007F,
439 0x01B3, 0x00F4, 0x0091, 0x0116, 0x03BB, 0x0215, 0x0932, 0x002D,
440 0x002A, 0x008A, 0x01DE, 0x0028, 0x0020, 0x005C, 0x0090, 0x0068,
441 0x01EE, 0x00E9, 0x008D, 0x012A, 0x0087, 0x005D, 0x0118, 0x0349,
442 0x01EF, 0x01E3, 0x08B9, 0x00F0, 0x00D3, 0x0214, 0x049B, 0x00DA,
443 0x0089, 0x0125, 0x0217, 0x012D, 0x0690, 0x0094, 0x007D, 0x011F,
444 0x007E, 0x0059, 0x0127, 0x01A5, 0x0111, 0x00F8, 0x045D, 0x03B9,
445 0x0259, 0x0580, 0x02C1, 0x01DF, 0x0585, 0x0216, 0x0163, 0x01B0,
446 0x03C4, 0x08B8, 0x078B, 0x0755, 0x0581, 0x0F67, 0x0000,
447};
448
449static const uint8_t vec4_huffbits[HUFF_VEC4_SIZE] = {
450 5, 6, 8, 10, 12, 13, 6, 6,
451 8, 10, 11, 9, 8, 9, 10, 11,
452 10, 11, 12, 12, 14, 6, 6, 8,
453 10, 11, 6, 6, 8, 9, 8, 8,
454 8, 10, 9, 12, 9, 8, 10, 11,
455 8, 8, 9, 9, 9, 11, 11, 10,
456 11, 10, 9, 11, 12, 12, 12, 14,
457 6, 6, 8, 10, 11, 6, 6, 7,
458 9, 8, 8, 9, 10, 10, 12, 6,
459 6, 8, 9, 6, 6, 7, 8, 7,
460 9, 8, 8, 9, 8, 7, 9, 10,
461 9, 9, 12, 8, 8, 10, 11, 8,
462 8, 9, 10, 9, 11, 8, 7, 9,
463 7, 7, 9, 9, 9, 8, 11, 10,
464 10, 11, 10, 9, 11, 10, 9, 9,
465 10, 12, 11, 11, 11, 12, 1,
466};
467
468
469#define HUFF_VEC2_SIZE 137
470#define HUFF_VEC2_MAXBITS 12
471static const uint16_t vec2_huffcodes[HUFF_VEC2_SIZE] = {
472 0x055, 0x01C, 0x01A, 0x02B, 0x028, 0x067, 0x08B, 0x039,
473 0x170, 0x10D, 0x2A5, 0x047, 0x464, 0x697, 0x523, 0x8CB,
474 0x01B, 0x00E, 0x000, 0x010, 0x012, 0x036, 0x048, 0x04C,
475 0x0C2, 0x09B, 0x171, 0x03B, 0x224, 0x34A, 0x2D6, 0x019,
476 0x00F, 0x002, 0x014, 0x017, 0x006, 0x05D, 0x054, 0x0C7,
477 0x0B4, 0x192, 0x10E, 0x233, 0x043, 0x02C, 0x00F, 0x013,
478 0x006, 0x02F, 0x02C, 0x068, 0x077, 0x0DF, 0x111, 0x1A4,
479 0x16A, 0x2A4, 0x027, 0x011, 0x018, 0x02D, 0x00F, 0x04A,
480 0x040, 0x097, 0x01F, 0x11B, 0x022, 0x16D, 0x066, 0x035,
481 0x005, 0x02B, 0x049, 0x009, 0x075, 0x0CB, 0x0AA, 0x187,
482 0x106, 0x08A, 0x047, 0x060, 0x06E, 0x01D, 0x074, 0x0C4,
483 0x01E, 0x118, 0x1A7, 0x038, 0x042, 0x053, 0x076, 0x0A8,
484 0x0CA, 0x082, 0x110, 0x18D, 0x12D, 0x0B9, 0x0C8, 0x0DE,
485 0x01C, 0x0AB, 0x113, 0x18C, 0x10F, 0x09A, 0x0A5, 0x0B7,
486 0x11A, 0x186, 0x1A6, 0x259, 0x153, 0x18A, 0x193, 0x020,
487 0x10C, 0x046, 0x03A, 0x107, 0x149, 0x16C, 0x2D7, 0x225,
488 0x258, 0x316, 0x696, 0x317, 0x042, 0x522, 0x290, 0x8CA,
489 0x001,
490};
491
492static const uint8_t vec2_huffbits[HUFF_VEC2_SIZE] = {
493 7, 6, 6, 6, 7, 7, 8, 9,
494 9, 10, 10, 11, 11, 11, 12, 12,
495 6, 4, 5, 5, 6, 6, 7, 8,
496 8, 9, 9, 10, 10, 10, 11, 6,
497 4, 5, 5, 6, 7, 7, 8, 8,
498 9, 9, 10, 10, 11, 6, 5, 5,
499 6, 6, 7, 7, 8, 8, 9, 9,
500 10, 10, 7, 6, 6, 6, 7, 7,
501 8, 8, 9, 9, 10, 10, 7, 6,
502 7, 7, 7, 8, 8, 8, 9, 9,
503 10, 8, 7, 7, 7, 8, 8, 8,
504 9, 9, 9, 9, 8, 8, 8, 8,
505 8, 9, 9, 9, 9, 8, 8, 8,
506 9, 9, 9, 9, 10, 9, 9, 9,
507 9, 9, 9, 10, 9, 9, 9, 10,
508 10, 11, 10, 10, 10, 10, 11, 10,
509 10, 10, 11, 10, 11, 12, 11, 12,
510 3,
511};
512
513
514#define HUFF_VEC1_SIZE 101
515#define HUFF_VEC1_MAXBITS 11
516static const uint16_t vec1_huffcodes[HUFF_VEC1_SIZE] = {
517 0x01A, 0x003, 0x017, 0x010, 0x00C, 0x009, 0x005, 0x000,
518 0x00D, 0x00A, 0x009, 0x00C, 0x00F, 0x002, 0x004, 0x007,
519 0x00B, 0x00F, 0x01C, 0x006, 0x010, 0x015, 0x01C, 0x022,
520 0x03B, 0x00E, 0x019, 0x023, 0x034, 0x036, 0x03A, 0x047,
521 0x008, 0x00A, 0x01E, 0x031, 0x037, 0x050, 0x053, 0x06B,
522 0x06F, 0x08C, 0x0E8, 0x0EA, 0x0EB, 0x016, 0x03E, 0x03F,
523 0x06C, 0x089, 0x08A, 0x0A3, 0x0A4, 0x0D4, 0x0DD, 0x0EC,
524 0x0EE, 0x11A, 0x1D2, 0x024, 0x025, 0x02E, 0x027, 0x0C2,
525 0x0C0, 0x0DA, 0x0DB, 0x111, 0x144, 0x116, 0x14A, 0x145,
526 0x1B8, 0x1AB, 0x1DA, 0x1DE, 0x1DB, 0x1DF, 0x236, 0x237,
527 0x3A6, 0x3A7, 0x04D, 0x04C, 0x05E, 0x05F, 0x183, 0x182,
528 0x186, 0x221, 0x187, 0x220, 0x22E, 0x22F, 0x296, 0x354,
529 0x297, 0x355, 0x372, 0x373, 0x016,
530};
531
532static const uint8_t vec1_huffbits[HUFF_VEC1_SIZE] = {
533 7, 6, 5, 5, 5, 5, 5, 5,
534 4, 4, 4, 4, 4, 5, 5, 5,
535 5, 5, 5, 6, 6, 6, 6, 6,
536 6, 7, 7, 7, 7, 7, 7, 7,
537 8, 8, 8, 8, 8, 8, 8, 8,
538 8, 8, 8, 8, 8, 9, 9, 9,
539 9, 9, 9, 9, 9, 9, 9, 9,
540 9, 9, 9, 10, 10, 10, 10, 10,
541 10, 10, 10, 10, 10, 10, 10, 10,
542 10, 10, 10, 10, 10, 10, 10, 10,
543 10, 10, 11, 11, 11, 11, 11, 11,
544 11, 11, 11, 11, 11, 11, 11, 11,
545 11, 11, 11, 11, 5,
546};
547
548
549static const uint16_t symbol_to_vec4[HUFF_VEC4_SIZE] = {
550 0, 1, 2, 3, 4, 5, 16, 17, 18, 19,
551 20, 32, 33, 34, 35, 48, 49, 50, 64, 65,
552 80, 256, 257, 258, 259, 260, 272, 273, 274, 275,
553 288, 289, 290, 304, 305, 320, 512, 513, 514, 515,
554 528, 529, 530, 544, 545, 560, 768, 769, 770, 784,
555 785, 800, 1024, 1025, 1040, 1280, 4096, 4097, 4098, 4099,
556 4100, 4112, 4113, 4114, 4115, 4128, 4129, 4130, 4144, 4145,
557 4160, 4352, 4353, 4354, 4355, 4368, 4369, 4370, 4384, 4385,
558 4400, 4608, 4609, 4610, 4624, 4625, 4640, 4864, 4865, 4880,
559 5120, 8192, 8193, 8194, 8195, 8208, 8209, 8210, 8224, 8225,
560 8240, 8448, 8449, 8450, 8464, 8465, 8480, 8704, 8705, 8720,
561 8960, 12288, 12289, 12290, 12304, 12305, 12320, 12544, 12545, 12560,
562 12800, 16384, 16385, 16400, 16640, 20480, 0,
563};
564
565
566static const uint8_t symbol_to_vec2[HUFF_VEC2_SIZE] = {
567 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
568 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
569 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
570 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 64, 65,
571 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84,
572 85, 86, 87, 88, 89, 90, 96, 97, 98, 99, 100, 101, 102, 103, 104,
573 105, 112, 113, 114, 115, 116, 117, 118, 119, 120, 128, 129, 130, 131, 132,
574 133, 134, 135, 144, 145, 146, 147, 148, 149, 150, 160, 161, 162, 163, 164,
575 165, 176, 177, 178, 179, 180, 192, 193, 194, 195, 208, 209, 210, 224, 225,
576 240, 0,
577};
578/** @} */
579
580
581/**
582 * @brief decorrelation matrix for multichannel streams
583 **/
584/* rockbox: not used
585static const float default_decorrelation_matrices[] = {
586 1.000000, 0.707031, -0.707031, 0.707031, 0.707031, 0.578125, 0.707031,
587 0.410156, 0.578125, -0.707031, 0.410156, 0.578125, 0.000000, -0.816406,
588 0.500000, 0.652344, 0.500000, 0.269531, 0.500000, 0.269531, -0.500000,
589 -0.652344, 0.500000, -0.269531, -0.500000, 0.652344, 0.500000, -0.652344,
590 0.500000, -0.269531, 0.445312, 0.601562, 0.511719, 0.371094, 0.195312,
591 0.445312, 0.371094, -0.195312, -0.601562, -0.511719, 0.445312, 0.000000,
592 -0.632812, 0.000000, 0.632812, 0.445312, -0.371094, -0.195312, 0.601562,
593 -0.511719, 0.445312, -0.601562, 0.511719, -0.371094, 0.195312, 0.410156,
594 0.558594, 0.500000, 0.410156, 0.289062, 0.148438, 0.410156, 0.410156,
595 0.000000, -0.410156, -0.578125, -0.410156, 0.410156, 0.148438, -0.500000,
596 -0.410156, 0.289062, 0.558594, 0.410156, -0.148438, -0.500000, 0.410156,
597 0.289062, -0.558594, 0.410156, -0.410156, 0.000000, 0.410156, -0.578125,
598 0.410156, 0.410156, -0.558594, 0.500000, -0.410156, 0.289062, -0.148438,
599};
600*/
601/**
602 * @brief default decorrelation matrix offsets
603 */
604/* rockbox: not used
605static const float * const default_decorrelation[] = {
606 NULL,
607 &default_decorrelation_matrices[0],
608 &default_decorrelation_matrices[1],
609 &default_decorrelation_matrices[5],
610 &default_decorrelation_matrices[14],
611 &default_decorrelation_matrices[30],
612 &default_decorrelation_matrices[55]
613};
614*/
615#endif /* AVCODEC_WMAPRODATA_H */