Directory: | ../../../ffmpeg/ |
---|---|
File: | src/libavcodec/dcahuff.c |
Date: | 2022-07-05 19:52:29 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 49 | 59 | 83.1% |
Branches: | 18 | 24 | 75.0% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | /* | ||
2 | * DCA compatible decoder - huffman tables | ||
3 | * Copyright (C) 2004 Gildas Bazin | ||
4 | * Copyright (C) 2007 Konstantin Shishkov | ||
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 | #include <stddef.h> | ||
24 | |||
25 | #include "libavutil/avassert.h" | ||
26 | #include "libavutil/macros.h" | ||
27 | |||
28 | #include "dcahuff.h" | ||
29 | #include "put_bits.h" | ||
30 | |||
31 | #define TMODE_COUNT 4 | ||
32 | static const uint8_t tmode_vlc_bits[TMODE_COUNT] = { 3, 3, 3, 2 }; | ||
33 | static const uint16_t tmode_codes[TMODE_COUNT][4] = { | ||
34 | { 0x0000, 0x0002, 0x0006, 0x0007 }, | ||
35 | { 0x0002, 0x0006, 0x0007, 0x0000 }, | ||
36 | { 0x0006, 0x0007, 0x0000, 0x0002 }, | ||
37 | { 0x0000, 0x0001, 0x0002, 0x0003 } | ||
38 | }; | ||
39 | |||
40 | static const uint8_t tmode_bits[TMODE_COUNT][4] = { | ||
41 | { 1, 2, 3, 3 }, | ||
42 | { 2, 3, 3, 1 }, | ||
43 | { 3, 3, 1, 2 }, | ||
44 | { 2, 2, 2, 2 } | ||
45 | }; | ||
46 | |||
47 | #define BITALLOC_12_VLC_BITS 9 | ||
48 | static const uint8_t bitalloc_12_vlc_bits[DCA_BITALLOC_12_COUNT] = { | ||
49 | 9, 7, 7, 9, 9 | ||
50 | }; | ||
51 | |||
52 | static const uint16_t bitalloc_12_codes[DCA_BITALLOC_12_COUNT][12] = { | ||
53 | { 0x0000, 0x0002, 0x0006, 0x000E, 0x001E, 0x003E, 0x00FF, 0x00FE, | ||
54 | 0x01FB, 0x01FA, 0x01F9, 0x01F8, }, | ||
55 | { 0x0001, 0x0000, 0x0002, 0x000F, 0x000C, 0x001D, 0x0039, 0x0038, | ||
56 | 0x0037, 0x0036, 0x0035, 0x0034, }, | ||
57 | { 0x0000, 0x0007, 0x0005, 0x0004, 0x0002, 0x000D, 0x000C, 0x0006, | ||
58 | 0x000F, 0x001D, 0x0039, 0x0038, }, | ||
59 | { 0x0003, 0x0002, 0x0000, 0x0002, 0x0006, 0x000E, 0x001E, 0x003E, | ||
60 | 0x007E, 0x00FE, 0x01FF, 0x01FE, }, | ||
61 | { 0x0001, 0x0000, 0x0002, 0x0006, 0x000E, 0x003F, 0x003D, 0x007C, | ||
62 | 0x0079, 0x0078, 0x00FB, 0x00FA, } | ||
63 | }; | ||
64 | |||
65 | static const uint8_t bitalloc_12_bits[DCA_BITALLOC_12_COUNT][12] = { | ||
66 | { 1, 2, 3, 4, 5, 6, 8, 8, 9, 9, 9, 9 }, | ||
67 | { 1, 2, 3, 5, 5, 6, 7, 7, 7, 7, 7, 7 }, | ||
68 | { 2, 3, 3, 3, 3, 4, 4, 4, 5, 6, 7, 7 }, | ||
69 | { 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10 }, | ||
70 | { 1, 2, 3, 4, 5, 7, 7, 8, 8, 8, 9, 9 } | ||
71 | }; | ||
72 | |||
73 | #define SCALES_COUNT 5 | ||
74 | #define SCALES_VLC_BITS 9 | ||
75 | static const uint16_t scales_codes[SCALES_COUNT][129] = { | ||
76 | { 0x3AB0, 0x3AB2, 0x3AB4, 0x3AB6, 0x3AB8, 0x3ABA, 0x3ABC, 0x3ABE, | ||
77 | 0x3AC0, 0x3AC2, 0x3AC4, 0x3AC6, 0x3AC8, 0x3ACA, 0x3ACC, 0x3ACE, | ||
78 | 0x3AD0, 0x3AD2, 0x3AD4, 0x3AD6, 0x3AD8, 0x3ADA, 0x3ADC, 0x3ADE, | ||
79 | 0x3AE0, 0x3AE2, 0x3AE4, 0x3AE6, 0x3AE8, 0x3AEA, 0x3AEC, 0x3AEE, | ||
80 | 0x3AF0, 0x3AF2, 0x3AF4, 0x3AF6, 0x3AF8, 0x3AFA, 0x3AFC, 0x3AFE, | ||
81 | 0x0540, 0x0542, 0x0544, 0x0546, 0x0548, 0x054A, 0x054C, 0x054E, | ||
82 | 0x0558, 0x055E, 0x02AD, 0x0154, 0x0754, 0x03A8, 0x0056, 0x0028, | ||
83 | 0x00E8, 0x004A, 0x000B, 0x003B, 0x0013, 0x0003, 0x000F, 0x0005, | ||
84 | 0x0001, 0x0006, 0x0000, 0x0008, 0x001C, 0x0004, 0x0024, 0x004B, | ||
85 | 0x00E9, 0x0029, 0x0057, 0x03A9, 0x0755, 0x0155, 0x02AE, 0x055F, | ||
86 | 0x0559, 0x054F, 0x054D, 0x054B, 0x0549, 0x0547, 0x0545, 0x0543, | ||
87 | 0x0541, 0x3AFF, 0x3AFD, 0x3AFB, 0x3AF9, 0x3AF7, 0x3AF5, 0x3AF3, | ||
88 | 0x3AF1, 0x3AEF, 0x3AED, 0x3AEB, 0x3AE9, 0x3AE7, 0x3AE5, 0x3AE3, | ||
89 | 0x3AE1, 0x3ADF, 0x3ADD, 0x3ADB, 0x3AD9, 0x3AD7, 0x3AD5, 0x3AD3, | ||
90 | 0x3AD1, 0x3ACF, 0x3ACD, 0x3ACB, 0x3AC9, 0x3AC7, 0x3AC5, 0x3AC3, | ||
91 | 0x3AC1, 0x3ABF, 0x3ABD, 0x3ABB, 0x3AB9, 0x3AB7, 0x3AB5, 0x3AB3, | ||
92 | 0x3AB1, }, | ||
93 | { 0x0F60, 0x0F62, 0x0F64, 0x0F66, 0x0F68, 0x0F6A, 0x0F6C, 0x0F6E, | ||
94 | 0x0F70, 0x0F72, 0x0F74, 0x0F76, 0x0F78, 0x0F7A, 0x0F7C, 0x0F7E, | ||
95 | 0x0F80, 0x0F82, 0x0F84, 0x0F86, 0x0F88, 0x0F8A, 0x0F8C, 0x0F8E, | ||
96 | 0x0F90, 0x0F92, 0x0F94, 0x0F96, 0x0F98, 0x0F9A, 0x0F9C, 0x0F9E, | ||
97 | 0x0FA0, 0x0FA2, 0x0FA4, 0x0FA6, 0x0FA8, 0x0FAA, 0x0FAC, 0x0FAE, | ||
98 | 0x0FB0, 0x0FB2, 0x0FB4, 0x0FB6, 0x0FB8, 0x0FBA, 0x0FBC, 0x0FBE, | ||
99 | 0x07A0, 0x07A2, 0x03D2, 0x01EA, 0x00FC, 0x007F, 0x001C, 0x000C, | ||
100 | 0x0004, 0x0034, 0x0010, 0x001B, 0x0009, 0x000B, 0x000E, 0x0001, | ||
101 | 0x0003, 0x0002, 0x000F, 0x000C, 0x000A, 0x0000, 0x0011, 0x0035, | ||
102 | 0x0005, 0x000D, 0x001D, 0x003C, 0x00FD, 0x01EB, 0x03D3, 0x07A3, | ||
103 | 0x07A1, 0x0FBF, 0x0FBD, 0x0FBB, 0x0FB9, 0x0FB7, 0x0FB5, 0x0FB3, | ||
104 | 0x0FB1, 0x0FAF, 0x0FAD, 0x0FAB, 0x0FA9, 0x0FA7, 0x0FA5, 0x0FA3, | ||
105 | 0x0FA1, 0x0F9F, 0x0F9D, 0x0F9B, 0x0F99, 0x0F97, 0x0F95, 0x0F93, | ||
106 | 0x0F91, 0x0F8F, 0x0F8D, 0x0F8B, 0x0F89, 0x0F87, 0x0F85, 0x0F83, | ||
107 | 0x0F81, 0x0F7F, 0x0F7D, 0x0F7B, 0x0F79, 0x0F77, 0x0F75, 0x0F73, | ||
108 | 0x0F71, 0x0F6F, 0x0F6D, 0x0F6B, 0x0F69, 0x0F67, 0x0F65, 0x0F63, | ||
109 | 0x0F61, }, | ||
110 | { 0x51D0, 0x51D2, 0x51D4, 0x51D6, 0x51D8, 0x51DA, 0x51DC, 0x51DE, | ||
111 | 0x51E0, 0x51E2, 0x51E4, 0x51E6, 0x51E8, 0x51EA, 0x51EC, 0x51EE, | ||
112 | 0x51F0, 0x51F2, 0x51F4, 0x51F6, 0x51F8, 0x51FA, 0x51FC, 0x51FE, | ||
113 | 0x70C0, 0x70C2, 0x70C4, 0x70C6, 0x70C8, 0x70CA, 0x70CC, 0x70CE, | ||
114 | 0x70EC, 0x10EA, 0x3868, 0x3877, 0x0876, 0x1C35, 0x0434, 0x0A34, | ||
115 | 0x0E1B, 0x021B, 0x051B, 0x070F, 0x010F, 0x0380, 0x0080, 0x0140, | ||
116 | 0x01C1, 0x0041, 0x00A1, 0x00E2, 0x0022, 0x0052, 0x0072, 0x0012, | ||
117 | 0x002A, 0x003A, 0x000A, 0x0016, 0x001E, 0x0006, 0x000C, 0x0000, | ||
118 | 0x0004, 0x0001, 0x000D, 0x0007, 0x001F, 0x0017, 0x000B, 0x003B, | ||
119 | 0x002B, 0x0013, 0x0073, 0x0053, 0x0023, 0x00E3, 0x00A2, 0x0042, | ||
120 | 0x01C2, 0x0141, 0x0081, 0x0381, 0x028C, 0x010C, 0x051C, 0x021C, | ||
121 | 0x0E1C, 0x0A35, 0x0435, 0x1C3A, 0x0877, 0x0874, 0x3869, 0x10EB, | ||
122 | 0x70ED, 0x70CF, 0x70CD, 0x70CB, 0x70C9, 0x70C7, 0x70C5, 0x70C3, | ||
123 | 0x70C1, 0x51FF, 0x51FD, 0x51FB, 0x51F9, 0x51F7, 0x51F5, 0x51F3, | ||
124 | 0x51F1, 0x51EF, 0x51ED, 0x51EB, 0x51E9, 0x51E7, 0x51E5, 0x51E3, | ||
125 | 0x51E1, 0x51DF, 0x51DD, 0x51DB, 0x51D9, 0x51D7, 0x51D5, 0x51D3, | ||
126 | 0x51D1, }, | ||
127 | { 0x6F64, 0x6F66, 0x6F68, 0x6F6A, 0x6F6C, 0x6F6E, 0x6F70, 0x6F72, | ||
128 | 0x6F74, 0x6F76, 0x6F78, 0x6F7A, 0x6F7C, 0x6F7E, 0x6F80, 0x6F82, | ||
129 | 0x6F84, 0x6F86, 0x6F88, 0x6F8A, 0x6F8C, 0x6F8E, 0x6F90, 0x6F92, | ||
130 | 0x6F94, 0x6F96, 0x6F98, 0x6F9A, 0x6F9C, 0x6F9E, 0x6FA0, 0x6FA2, | ||
131 | 0x6FA4, 0x6FA6, 0x6FA8, 0x6FAA, 0x6FAC, 0x6FAE, 0x6FB0, 0x6FB2, | ||
132 | 0x6FB4, 0x6FB6, 0x17B4, 0x37DC, 0x0BDB, 0x1BEF, 0x05EE, 0x0DF8, | ||
133 | 0x02F8, 0x06FD, 0x017D, 0x037F, 0x00BF, 0x0040, 0x00C0, 0x0021, | ||
134 | 0x0061, 0x0011, 0x0031, 0x0009, 0x0019, 0x0006, 0x000E, 0x0004, | ||
135 | 0x0000, 0x0005, 0x000F, 0x0007, 0x001A, 0x000A, 0x0036, 0x0016, | ||
136 | 0x006E, 0x002E, 0x00C1, 0x0041, 0x01BC, 0x00BC, 0x037A, 0x017A, | ||
137 | 0x02F9, 0x0DF9, 0x05EF, 0x05EC, 0x1BD8, 0x37DD, 0x17B5, 0x6FB7, | ||
138 | 0x6FB5, 0x6FB3, 0x6FB1, 0x6FAF, 0x6FAD, 0x6FAB, 0x6FA9, 0x6FA7, | ||
139 | 0x6FA5, 0x6FA3, 0x6FA1, 0x6F9F, 0x6F9D, 0x6F9B, 0x6F99, 0x6F97, | ||
140 | 0x6F95, 0x6F93, 0x6F91, 0x6F8F, 0x6F8D, 0x6F8B, 0x6F89, 0x6F87, | ||
141 | 0x6F85, 0x6F83, 0x6F81, 0x6F7F, 0x6F7D, 0x6F7B, 0x6F79, 0x6F77, | ||
142 | 0x6F75, 0x6F73, 0x6F71, 0x6F6F, 0x6F6D, 0x6F6B, 0x6F69, 0x6F67, | ||
143 | 0x6F65, }, | ||
144 | { 0xDF54, 0xDF56, 0xDFC8, 0xDFCA, 0xDFCC, 0xDFCE, 0xDFD0, 0xDFD2, | ||
145 | 0xDFD4, 0xDFD6, 0xDFD8, 0xDFDA, 0xDFDC, 0xDFDE, 0xDFE0, 0xDFE2, | ||
146 | 0x0FE8, 0x2FEA, 0x6FA8, 0x6FF6, 0x07F5, 0x07F7, 0x37D2, 0x37F9, | ||
147 | 0x03F8, 0x0BF8, 0x0BFB, 0x1BEB, 0x01FA, 0x05FA, 0x09FA, 0x0DFA, | ||
148 | 0x0DFF, 0x00FF, 0x02FF, 0x06FB, 0x007C, 0x017C, 0x027C, 0x027F, | ||
149 | 0x003C, 0x00BC, 0x013C, 0x01BC, 0x001C, 0x005C, 0x009C, 0x00DC, | ||
150 | 0x000C, 0x002C, 0x004C, 0x006C, 0x0004, 0x0014, 0x0024, 0x0034, | ||
151 | 0x0000, 0x0008, 0x0010, 0x0018, 0x001E, 0x0002, 0x0006, 0x000A, | ||
152 | 0x000E, 0x000B, 0x0007, 0x0003, 0x001F, 0x0019, 0x0011, 0x0009, | ||
153 | 0x0001, 0x0035, 0x0025, 0x0015, 0x0005, 0x006D, 0x004D, 0x002D, | ||
154 | 0x000D, 0x00DD, 0x009D, 0x005D, 0x001D, 0x01BD, 0x013D, 0x00BD, | ||
155 | 0x003D, 0x037C, 0x027D, 0x017D, 0x007D, 0x06FC, 0x04FC, 0x02FC, | ||
156 | 0x00FC, 0x0DFB, 0x09FB, 0x05FB, 0x01FB, 0x1BF8, 0x1BE8, 0x0BF9, | ||
157 | 0x03F9, 0x37FA, 0x37D3, 0x17F4, 0x07F6, 0x6FF7, 0x6FA9, 0x2FEB, | ||
158 | 0x0FE9, 0xDFE3, 0xDFE1, 0xDFDF, 0xDFDD, 0xDFDB, 0xDFD9, 0xDFD7, | ||
159 | 0xDFD5, 0xDFD3, 0xDFD1, 0xDFCF, 0xDFCD, 0xDFCB, 0xDFC9, 0xDF57, | ||
160 | 0xDF55, } | ||
161 | }; | ||
162 | |||
163 | static const uint8_t scales_bits[SCALES_COUNT][129] = { | ||
164 | { 14, 14, 14, 14, 14, 14, 14, 14, | ||
165 | 14, 14, 14, 14, 14, 14, 14, 14, | ||
166 | 14, 14, 14, 14, 14, 14, 14, 14, | ||
167 | 14, 14, 14, 14, 14, 14, 14, 14, | ||
168 | 14, 14, 14, 14, 14, 14, 14, 14, | ||
169 | 13, 13, 13, 13, 13, 13, 13, 13, | ||
170 | 13, 13, 12, 11, 11, 10, 9, 8, | ||
171 | 8, 7, 6, 6, 5, 4, 4, 3, | ||
172 | 2, 3, 3, 4, 5, 5, 6, 7, | ||
173 | 8, 8, 9, 10, 11, 11, 12, 13, | ||
174 | 13, 13, 13, 13, 13, 13, 13, 13, | ||
175 | 13, 14, 14, 14, 14, 14, 14, 14, | ||
176 | 14, 14, 14, 14, 14, 14, 14, 14, | ||
177 | 14, 14, 14, 14, 14, 14, 14, 14, | ||
178 | 14, 14, 14, 14, 14, 14, 14, 14, | ||
179 | 14, 14, 14, 14, 14, 14, 14, 14, | ||
180 | 14, }, | ||
181 | { 15, 15, 15, 15, 15, 15, 15, 15, | ||
182 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
183 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
184 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
185 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
186 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
187 | 14, 14, 13, 12, 11, 10, 8, 7, | ||
188 | 6, 6, 5, 5, 4, 4, 4, 3, | ||
189 | 3, 3, 4, 4, 4, 4, 5, 6, | ||
190 | 6, 7, 8, 9, 11, 12, 13, 14, | ||
191 | 14, 15, 15, 15, 15, 15, 15, 15, | ||
192 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
193 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
194 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
195 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
196 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
197 | 15, }, | ||
198 | { 15, 15, 15, 15, 15, 15, 15, 15, | ||
199 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
200 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
201 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
202 | 15, 14, 14, 14, 13, 13, 12, 12, | ||
203 | 12, 11, 11, 11, 10, 10, 9, 9, | ||
204 | 9, 8, 8, 8, 7, 7, 7, 6, | ||
205 | 6, 6, 5, 5, 5, 4, 4, 3, | ||
206 | 3, 3, 4, 4, 5, 5, 5, 6, | ||
207 | 6, 6, 7, 7, 7, 8, 8, 8, | ||
208 | 9, 9, 9, 10, 10, 10, 11, 11, | ||
209 | 12, 12, 12, 13, 13, 13, 14, 14, | ||
210 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
211 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
212 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
213 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
214 | 15, }, | ||
215 | { 15, 15, 15, 15, 15, 15, 15, 15, | ||
216 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
217 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
218 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
219 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
220 | 15, 15, 14, 14, 13, 13, 12, 12, | ||
221 | 11, 11, 10, 10, 9, 8, 8, 7, | ||
222 | 7, 6, 6, 5, 5, 4, 4, 3, | ||
223 | 2, 3, 4, 4, 5, 5, 6, 6, | ||
224 | 7, 7, 8, 8, 9, 9, 10, 10, | ||
225 | 11, 12, 12, 12, 13, 14, 14, 15, | ||
226 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
227 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
228 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
229 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
230 | 15, 15, 15, 15, 15, 15, 15, 15, | ||
231 | 15, }, | ||
232 | { 16, 16, 16, 16, 16, 16, 16, 16, | ||
233 | 16, 16, 16, 16, 16, 16, 16, 16, | ||
234 | 15, 15, 15, 15, 14, 14, 14, 14, | ||
235 | 13, 13, 13, 13, 12, 12, 12, 12, | ||
236 | 12, 11, 11, 11, 10, 10, 10, 10, | ||
237 | 9, 9, 9, 9, 8, 8, 8, 8, | ||
238 | 7, 7, 7, 7, 6, 6, 6, 6, | ||
239 | 5, 5, 5, 5, 5, 4, 4, 4, | ||
240 | 4, 4, 4, 4, 5, 5, 5, 5, | ||
241 | 5, 6, 6, 6, 6, 7, 7, 7, | ||
242 | 7, 8, 8, 8, 8, 9, 9, 9, | ||
243 | 9, 10, 10, 10, 10, 11, 11, 11, | ||
244 | 11, 12, 12, 12, 12, 13, 13, 13, | ||
245 | 13, 14, 14, 14, 14, 15, 15, 15, | ||
246 | 15, 16, 16, 16, 16, 16, 16, 16, | ||
247 | 16, 16, 16, 16, 16, 16, 16, 16, | ||
248 | 16, | ||
249 | } | ||
250 | }; | ||
251 | |||
252 | static const uint16_t bitalloc_3_codes[3] = { | ||
253 | 0x0003, 0x0000, 0x0002, | ||
254 | }; | ||
255 | |||
256 | static const uint8_t bitalloc_3_bits[3] = { | ||
257 | 2, 1, 2, | ||
258 | }; | ||
259 | |||
260 | static const uint16_t bitalloc_5_codes_a[5] = { | ||
261 | 0x000F, 0x0006, 0x0000, 0x0002, 0x000E, | ||
262 | }; | ||
263 | |||
264 | static const uint16_t bitalloc_5_codes_b[5] = { | ||
265 | 0x0007, 0x0001, 0x0002, 0x0000, 0x0006, | ||
266 | }; | ||
267 | |||
268 | static const uint16_t bitalloc_5_codes_c[5] = { | ||
269 | 0x0007, 0x0005, 0x0000, 0x0004, 0x0006, | ||
270 | }; | ||
271 | |||
272 | static const uint8_t bitalloc_5_bits_a[5] = { | ||
273 | 4, 3, 1, 2, 4, | ||
274 | }; | ||
275 | |||
276 | static const uint8_t bitalloc_5_bits_b[5] = { | ||
277 | 3, 2, 2, 2, 3, | ||
278 | }; | ||
279 | |||
280 | static const uint8_t bitalloc_5_bits_c[5] = { | ||
281 | 3, 3, 1, 3, 3, | ||
282 | }; | ||
283 | |||
284 | static const uint16_t bitalloc_7_codes_a[7] = { | ||
285 | 0x001E, 0x000E, 0x0005, 0x0000, 0x0006, 0x0004, 0x001F, | ||
286 | }; | ||
287 | |||
288 | static const uint16_t bitalloc_7_codes_b[7] = { | ||
289 | 0x0014, 0x000B, 0x0000, 0x0003, 0x0001, 0x0004, 0x0015, | ||
290 | }; | ||
291 | |||
292 | static const uint16_t bitalloc_7_codes_c[7] = { | ||
293 | 0x0000, 0x0002, 0x0001, 0x0003, 0x0002, 0x0003, 0x0001, | ||
294 | }; | ||
295 | |||
296 | static const uint8_t bitalloc_7_bits_a[7] = { | ||
297 | 5, 4, 3, 1, 3, 3, 5, | ||
298 | }; | ||
299 | |||
300 | static const uint8_t bitalloc_7_bits_b[7] = { | ||
301 | 5, 4, 2, 2, 2, 3, 5, | ||
302 | }; | ||
303 | |||
304 | static const uint8_t bitalloc_7_bits_c[7] = { | ||
305 | 4, 4, 2, 2, 2, 4, 4, | ||
306 | }; | ||
307 | |||
308 | static const uint16_t bitalloc_9_codes_a[9] = { | ||
309 | 0x0030, 0x0019, 0x0009, 0x0005, 0x0000, 0x0007, 0x000D, 0x0008, | ||
310 | 0x0031, | ||
311 | }; | ||
312 | |||
313 | static const uint16_t bitalloc_9_codes_b[9] = { | ||
314 | 0x0018, 0x001A, 0x0002, 0x0007, 0x0002, 0x0000, 0x0003, 0x001B, | ||
315 | 0x0019, | ||
316 | }; | ||
317 | |||
318 | static const uint16_t bitalloc_9_codes_c[9] = { | ||
319 | 0x001C, 0x000F, 0x0002, 0x0007, 0x0002, 0x0000, 0x0006, 0x0006, | ||
320 | 0x001D, | ||
321 | }; | ||
322 | |||
323 | static const uint8_t bitalloc_9_bits_a[9] = { | ||
324 | 6, 5, 4, 3, 1, 3, 4, 4, 6, | ||
325 | }; | ||
326 | |||
327 | static const uint8_t bitalloc_9_bits_b[9] = { | ||
328 | 5, 5, 3, 3, 2, 2, 3, 5, 5, | ||
329 | }; | ||
330 | |||
331 | static const uint8_t bitalloc_9_bits_c[9] = { | ||
332 | 6, 5, 3, 3, 2, 2, 3, 4, 6, | ||
333 | }; | ||
334 | |||
335 | static const uint16_t bitalloc_13_codes_a[13] = { | ||
336 | 0x0070, 0x002E, 0x0039, 0x001D, 0x000C, 0x000F, 0x0000, 0x0004, | ||
337 | 0x000D, 0x000A, 0x0016, 0x002F, 0x0071, | ||
338 | }; | ||
339 | |||
340 | static const uint16_t bitalloc_13_codes_b[13] = { | ||
341 | 0x0038, 0x0010, 0x001D, 0x0007, 0x000F, 0x0005, 0x0000, 0x0006, | ||
342 | 0x0002, 0x0009, 0x0006, 0x0011, 0x0039, | ||
343 | }; | ||
344 | |||
345 | static const uint16_t bitalloc_13_codes_c[13] = { | ||
346 | 0x0004, 0x001A, 0x0003, 0x000E, 0x0000, 0x0003, 0x0005, 0x0004, | ||
347 | 0x0002, 0x000F, 0x000C, 0x001B, 0x0005, | ||
348 | }; | ||
349 | |||
350 | static const uint8_t bitalloc_13_bits_a[13] = { | ||
351 | 7, 6, 6, 5, 4, 4, 1, 3, 4, 4, 5, 6, 7, | ||
352 | }; | ||
353 | |||
354 | static const uint8_t bitalloc_13_bits_b[13] = { | ||
355 | 6, 5, 5, 4, 4, 3, 2, 3, 3, 4, 4, 5, 6, | ||
356 | }; | ||
357 | |||
358 | static const uint8_t bitalloc_13_bits_c[13] = { | ||
359 | 5, 5, 4, 4, 3, 3, 3, 3, 3, 4, 4, 5, 5, | ||
360 | }; | ||
361 | |||
362 | static const uint16_t bitalloc_17_codes_a[17] = { | ||
363 | 0x0154, 0x00AB, 0x002B, 0x000B, 0x0003, 0x000A, 0x0001, 0x0006, | ||
364 | 0x0001, 0x0007, 0x0004, 0x000B, 0x0000, 0x0004, 0x0014, 0x0054, | ||
365 | 0x0155, | ||
366 | }; | ||
367 | |||
368 | static const uint16_t bitalloc_17_codes_b[17] = { | ||
369 | 0x007C, 0x003F, 0x0019, 0x000D, 0x001C, 0x0008, 0x000F, 0x0005, | ||
370 | 0x0000, 0x0006, 0x0002, 0x0009, 0x001D, 0x000E, 0x001E, 0x0018, | ||
371 | 0x007D, | ||
372 | }; | ||
373 | |||
374 | static const uint16_t bitalloc_17_codes_c[17] = { | ||
375 | 0x002C, 0x0017, 0x0005, 0x001C, 0x0003, 0x000A, 0x000F, 0x0003, | ||
376 | 0x0006, 0x0004, 0x0000, 0x000B, 0x0004, 0x001D, 0x000A, 0x0004, | ||
377 | 0x002D, | ||
378 | }; | ||
379 | |||
380 | static const uint16_t bitalloc_17_codes_d[17] = { | ||
381 | 0x0100, 0x0102, 0x0082, 0x0042, 0x0022, 0x0012, 0x000A, 0x0006, | ||
382 | 0x0000, 0x0007, 0x000B, 0x0013, 0x0023, 0x0043, 0x0083, 0x0103, | ||
383 | 0x0101, | ||
384 | }; | ||
385 | |||
386 | static const uint16_t bitalloc_17_codes_e[17] = { | ||
387 | 0x00E8, 0x00F6, 0x0075, 0x0034, 0x003B, 0x001B, 0x001F, 0x0004, | ||
388 | 0x0000, 0x0005, 0x000C, 0x001C, 0x003C, 0x0035, 0x007A, 0x00F7, | ||
389 | 0x00E9, | ||
390 | }; | ||
391 | |||
392 | static const uint16_t bitalloc_17_codes_f[17] = { | ||
393 | 0x0004, 0x0003, 0x001E, 0x0001, 0x0001, 0x000E, 0x0001, 0x0004, | ||
394 | 0x0006, 0x0005, 0x0002, 0x000F, 0x0006, 0x000E, 0x001F, 0x0000, | ||
395 | 0x0005, | ||
396 | }; | ||
397 | |||
398 | static const uint16_t bitalloc_17_codes_g[17] = { | ||
399 | 0x0060, 0x007E, 0x0031, 0x0019, 0x000D, 0x0004, 0x0000, 0x0006, | ||
400 | 0x0002, 0x0007, 0x0001, 0x0005, 0x000E, 0x001E, 0x003E, 0x007F, | ||
401 | 0x0061, | ||
402 | }; | ||
403 | |||
404 | static const uint8_t bitalloc_17_bits_a[17] = { | ||
405 | 12, 11, 9, 7, 5, 4, 3, 3, 2, 3, 3, 4, 4, 6, 8, 10, | ||
406 | 12, | ||
407 | }; | ||
408 | |||
409 | static const uint8_t bitalloc_17_bits_b[17] = { | ||
410 | 8, 7, 6, 5, 5, 4, 4, 3, 2, 3, 3, 4, 5, 5, 6, 6, | ||
411 | 8, | ||
412 | }; | ||
413 | |||
414 | static const uint8_t bitalloc_17_bits_c[17] = { | ||
415 | 7, 6, 5, 5, 4, 4, 4, 3, 3, 3, 3, 4, 4, 5, 5, 5, | ||
416 | 7, | ||
417 | }; | ||
418 | |||
419 | static const uint8_t bitalloc_17_bits_d[17] = { | ||
420 | 9, 9, 8, 7, 6, 5, 4, 3, 1, 3, 4, 5, 6, 7, 8, 9, | ||
421 | 9, | ||
422 | }; | ||
423 | |||
424 | static const uint8_t bitalloc_17_bits_e[17] = { | ||
425 | 8, 8, 7, 6, 6, 5, 5, 3, 1, 3, 4, 5, 6, 6, 7, 8, | ||
426 | 8, | ||
427 | }; | ||
428 | |||
429 | static const uint8_t bitalloc_17_bits_f[17] = { | ||
430 | 8, 7, 6, 5, 4, 4, 3, 3, 3, 3, 3, 4, 4, 5, 6, 6, | ||
431 | 8, | ||
432 | }; | ||
433 | |||
434 | static const uint8_t bitalloc_17_bits_g[17] = { | ||
435 | 8, 8, 7, 6, 5, 4, 3, 3, 2, 3, 3, 4, 5, 6, 7, 8, | ||
436 | 8, | ||
437 | }; | ||
438 | |||
439 | static const uint16_t bitalloc_25_codes_a[25] = { | ||
440 | 0x2854, 0x142B, 0x050B, 0x0143, 0x00A2, 0x0052, 0x002E, 0x0015, | ||
441 | 0x0004, 0x000E, 0x0000, 0x0003, 0x0006, 0x0004, 0x0001, 0x000F, | ||
442 | 0x0005, 0x0016, 0x002F, 0x0053, 0x00A3, 0x00A0, 0x0284, 0x0A14, | ||
443 | 0x2855, | ||
444 | }; | ||
445 | |||
446 | static const uint16_t bitalloc_25_codes_b[25] = { | ||
447 | 0x001C, 0x000F, 0x0005, 0x0000, 0x0030, 0x0036, 0x000E, 0x0019, | ||
448 | 0x0001, 0x0008, 0x000E, 0x0001, 0x0005, 0x0002, 0x000F, 0x0009, | ||
449 | 0x0006, 0x001A, 0x000F, 0x0037, 0x0031, 0x0001, 0x0006, 0x0004, | ||
450 | 0x001D, | ||
451 | }; | ||
452 | |||
453 | static const uint16_t bitalloc_25_codes_c[25] = { | ||
454 | 0x004C, 0x0027, 0x006D, 0x0028, 0x0037, 0x000E, 0x0015, 0x0000, | ||
455 | 0x0005, 0x0008, 0x000B, 0x000E, 0x0001, 0x000F, 0x000C, 0x0009, | ||
456 | 0x0006, 0x0001, 0x001A, 0x000F, 0x0008, 0x0029, 0x0012, 0x006C, | ||
457 | 0x004D, | ||
458 | }; | ||
459 | |||
460 | static const uint16_t bitalloc_25_codes_d[25] = { | ||
461 | 0x0780, 0x0782, 0x03C2, 0x01E2, 0x00FE, 0x0079, 0x003D, 0x001C, | ||
462 | 0x000C, 0x0004, 0x0000, 0x0006, 0x0002, 0x0007, 0x0001, 0x0005, | ||
463 | 0x000D, 0x001D, 0x003E, 0x007E, 0x00FF, 0x01E3, 0x03C3, 0x0783, | ||
464 | 0x0781, | ||
465 | }; | ||
466 | |||
467 | static const uint16_t bitalloc_25_codes_e[25] = { | ||
468 | 0x003C, 0x0092, 0x0018, 0x001F, 0x004E, 0x000D, 0x0025, 0x0004, | ||
469 | 0x0010, 0x0000, 0x000A, 0x0002, 0x0003, 0x0003, 0x000B, 0x0001, | ||
470 | 0x0011, 0x0005, 0x0026, 0x000E, 0x004F, 0x0048, 0x0019, 0x0093, | ||
471 | 0x003D, | ||
472 | }; | ||
473 | |||
474 | static const uint16_t bitalloc_25_codes_f[25] = { | ||
475 | 0x0324, 0x0193, 0x00CE, 0x0065, 0x0024, 0x000C, 0x0013, 0x0004, | ||
476 | 0x0007, 0x000A, 0x000D, 0x000F, 0x0001, 0x0000, 0x000E, 0x000B, | ||
477 | 0x0008, 0x0005, 0x0018, 0x000D, 0x0025, 0x0066, 0x00CF, 0x00C8, | ||
478 | 0x0325, | ||
479 | }; | ||
480 | |||
481 | static const uint16_t bitalloc_25_codes_g[25] = { | ||
482 | 0x03A8, 0x03AE, 0x01D5, 0x0094, 0x0014, 0x004B, 0x000B, 0x003B, | ||
483 | 0x0013, 0x0003, 0x000F, 0x0005, 0x0001, 0x0006, 0x0000, 0x0008, | ||
484 | 0x001C, 0x0004, 0x0024, 0x0074, 0x0015, 0x0095, 0x01D6, 0x03AF, | ||
485 | 0x03A9, | ||
486 | }; | ||
487 | |||
488 | static const uint8_t bitalloc_25_bits_a[25] = { | ||
489 | 14, 13, 11, 9, 8, 7, 6, 5, 4, 4, 3, 3, 3, 3, 3, 4, | ||
490 | 4, 5, 6, 7, 8, 8, 10, 12, 14, | ||
491 | }; | ||
492 | |||
493 | static const uint8_t bitalloc_25_bits_b[25] = { | ||
494 | 9, 8, 7, 6, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 4, 4, | ||
495 | 4, 5, 5, 6, 6, 6, 7, 7, 9, | ||
496 | }; | ||
497 | |||
498 | static const uint8_t bitalloc_25_bits_c[25] = { | ||
499 | 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 4, 4, 3, 4, 4, 4, | ||
500 | 4, 4, 5, 5, 5, 6, 6, 7, 8, | ||
501 | }; | ||
502 | |||
503 | static const uint8_t bitalloc_25_bits_d[25] = { | ||
504 | 12, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 3, 2, 3, 3, 4, | ||
505 | 5, 6, 7, 8, 9, 10, 11, 12, 12, | ||
506 | }; | ||
507 | |||
508 | static const uint8_t bitalloc_25_bits_e[25] = { | ||
509 | 8, 8, 7, 7, 7, 6, 6, 5, 5, 4, 4, 3, 2, 3, 4, 4, | ||
510 | 5, 5, 6, 6, 7, 7, 7, 8, 8, | ||
511 | }; | ||
512 | |||
513 | static const uint8_t bitalloc_25_bits_f[25] = { | ||
514 | 10, 9, 8, 7, 6, 5, 5, 4, 4, 4, 4, 4, 3, 3, 4, 4, | ||
515 | 4, 4, 5, 5, 6, 7, 8, 8, 10, | ||
516 | }; | ||
517 | |||
518 | static const uint8_t bitalloc_25_bits_g[25] = { | ||
519 | 10, 10, 9, 8, 7, 7, 6, 6, 5, 4, 4, 3, 2, 3, 3, 4, | ||
520 | 5, 5, 6, 7, 7, 8, 9, 10, 10, | ||
521 | }; | ||
522 | |||
523 | static const uint16_t bitalloc_33_codes_a[33] = { | ||
524 | 0x1580, 0x1582, 0x0AC2, 0x0562, 0x02B2, 0x015E, 0x00AD, 0x0054, | ||
525 | 0x001C, 0x003C, 0x000F, 0x001F, 0x0008, 0x000B, 0x000D, 0x0000, | ||
526 | 0x0002, 0x0001, 0x000E, 0x000C, 0x0009, 0x0006, 0x0014, 0x003D, | ||
527 | 0x001D, 0x0055, 0x00AE, 0x015F, 0x02B3, 0x0563, 0x0AC3, 0x1583, | ||
528 | 0x1581, | ||
529 | }; | ||
530 | |||
531 | static const uint16_t bitalloc_33_codes_b[33] = { | ||
532 | 0x030C, 0x0187, 0x006D, 0x0028, 0x0037, 0x0066, 0x0015, 0x0031, | ||
533 | 0x0000, 0x000B, 0x0012, 0x001A, 0x0001, 0x0007, 0x000A, 0x000E, | ||
534 | 0x0001, 0x000F, 0x000B, 0x0008, 0x0004, 0x001B, 0x0013, 0x000C, | ||
535 | 0x0001, 0x0032, 0x001A, 0x0067, 0x0060, 0x0029, 0x00C2, 0x006C, | ||
536 | 0x030D, | ||
537 | }; | ||
538 | |||
539 | static const uint16_t bitalloc_33_codes_c[33] = { | ||
540 | 0x00CC, 0x0067, 0x0005, 0x0070, 0x0003, 0x001A, 0x0039, 0x003F, | ||
541 | 0x000A, 0x0012, 0x0018, 0x001D, 0x0001, 0x0003, 0x0007, 0x000A, | ||
542 | 0x000D, 0x000B, 0x0008, 0x0004, 0x0002, 0x001E, 0x0019, 0x0013, | ||
543 | 0x000B, 0x0000, 0x003E, 0x001B, 0x0018, 0x0071, 0x0032, 0x0004, | ||
544 | 0x00CD, | ||
545 | }; | ||
546 | |||
547 | static const uint16_t bitalloc_33_codes_d[33] = { | ||
548 | 0x3AF8, 0x3AFA, 0x1D7E, 0x0EBC, 0x075C, 0x03AC, 0x01D4, 0x0094, | ||
549 | 0x0014, 0x004B, 0x000B, 0x003B, 0x0013, 0x0003, 0x000F, 0x0005, | ||
550 | 0x0001, 0x0006, 0x0000, 0x0008, 0x001C, 0x0004, 0x0024, 0x0074, | ||
551 | 0x0015, 0x0095, 0x01D5, 0x03AD, 0x075D, 0x0EBD, 0x1D7F, 0x3AFB, | ||
552 | 0x3AF9, | ||
553 | }; | ||
554 | |||
555 | static const uint16_t bitalloc_33_codes_e[33] = { | ||
556 | 0x01C8, 0x01E6, 0x0064, 0x00E2, 0x00E5, 0x0030, 0x0033, 0x0073, | ||
557 | 0x007A, 0x001A, 0x003A, 0x0002, 0x001A, 0x001F, 0x0007, 0x0001, | ||
558 | 0x0002, 0x0002, 0x000C, 0x0000, 0x001B, 0x0003, 0x003B, 0x001B, | ||
559 | 0x007B, 0x0078, 0x0070, 0x0031, 0x00F2, 0x00E3, 0x0065, 0x01E7, | ||
560 | 0x01C9, | ||
561 | }; | ||
562 | |||
563 | static const uint16_t bitalloc_33_codes_f[33] = { | ||
564 | 0x0724, 0x0393, 0x01CE, 0x00E5, 0x002C, 0x0008, 0x0017, 0x003E, | ||
565 | 0x0005, 0x0014, 0x001D, 0x0000, 0x0003, 0x0006, 0x0008, 0x000B, | ||
566 | 0x000D, 0x000C, 0x0009, 0x0007, 0x0004, 0x0001, 0x001E, 0x0015, | ||
567 | 0x000A, 0x003F, 0x0038, 0x0009, 0x002D, 0x00E6, 0x01CF, 0x01C8, | ||
568 | 0x0725, | ||
569 | }; | ||
570 | |||
571 | static const uint16_t bitalloc_33_codes_g[33] = { | ||
572 | 0x0284, 0x0042, 0x0140, 0x0143, 0x003E, 0x00BE, 0x0011, 0x0051, | ||
573 | 0x0009, 0x0029, 0x0005, 0x0015, 0x0000, 0x0008, 0x000E, 0x0002, | ||
574 | 0x0006, 0x0003, 0x000F, 0x0009, 0x0001, 0x0016, 0x0006, 0x002E, | ||
575 | 0x000E, 0x005E, 0x001E, 0x00BF, 0x003F, 0x0020, 0x0141, 0x0043, | ||
576 | 0x0285, | ||
577 | }; | ||
578 | |||
579 | static const uint8_t bitalloc_33_bits_a[33] = { | ||
580 | 13, 13, 12, 11, 10, 9, 8, 7, 6, 6, 5, 5, 4, 4, 4, 3, | ||
581 | 3, 3, 4, 4, 4, 4, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, | ||
582 | 13, | ||
583 | }; | ||
584 | |||
585 | static const uint8_t bitalloc_33_bits_b[33] = { | ||
586 | 10, 9, 8, 7, 7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, | ||
587 | 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8, | ||
588 | 10, | ||
589 | }; | ||
590 | |||
591 | static const uint8_t bitalloc_33_bits_c[33] = { | ||
592 | 9, 8, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, | ||
593 | 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 7, 7, 7, | ||
594 | 9, | ||
595 | }; | ||
596 | |||
597 | static const uint8_t bitalloc_33_bits_d[33] = { | ||
598 | 14, 14, 13, 12, 11, 10, 9, 8, 7, 7, 6, 6, 5, 4, 4, 3, | ||
599 | 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, | ||
600 | 14, | ||
601 | }; | ||
602 | |||
603 | static const uint8_t bitalloc_33_bits_e[33] = { | ||
604 | 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 5, 5, 5, 4, 3, | ||
605 | 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, | ||
606 | 9, | ||
607 | }; | ||
608 | |||
609 | static const uint8_t bitalloc_33_bits_f[33] = { | ||
610 | 11, 10, 9, 8, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 4, | ||
611 | 4, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 8, 9, 9, | ||
612 | 11, | ||
613 | }; | ||
614 | |||
615 | static const uint8_t bitalloc_33_bits_g[33] = { | ||
616 | 10, 9, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, | ||
617 | 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, | ||
618 | 10, | ||
619 | }; | ||
620 | |||
621 | static const uint16_t bitalloc_65_codes_a[65] = { | ||
622 | 0x9E5C, 0x9E5E, 0x4F2C, 0x2794, 0x13C4, 0x1E44, 0x09E3, 0x0F23, | ||
623 | 0x04F3, 0x0792, 0x027E, 0x03CE, 0x013D, 0x01E5, 0x009C, 0x00CC, | ||
624 | 0x0040, 0x0058, 0x0067, 0x001E, 0x0021, 0x002D, 0x003D, 0x0007, | ||
625 | 0x0011, 0x0014, 0x0017, 0x001A, 0x001C, 0x001F, 0x0001, 0x0004, | ||
626 | 0x0006, 0x0005, 0x0002, 0x0000, 0x001D, 0x001B, 0x0018, 0x0015, | ||
627 | 0x0012, 0x000E, 0x0006, 0x0032, 0x0026, 0x001F, 0x0078, 0x0059, | ||
628 | 0x0041, 0x00CD, 0x009D, 0x01E6, 0x013E, 0x03CF, 0x027F, 0x0793, | ||
629 | 0x0790, 0x04F0, 0x09E4, 0x1E45, 0x13C5, 0x2795, 0x4F2D, 0x9E5F, | ||
630 | 0x9E5D, | ||
631 | }; | ||
632 | |||
633 | static const uint16_t bitalloc_65_codes_b[65] = { | ||
634 | 0x0A8C, 0x0547, 0x01B5, 0x0008, 0x00DB, 0x0152, 0x0005, 0x000B, | ||
635 | 0x008E, 0x00AE, 0x00E4, 0x0003, 0x0037, 0x0039, 0x0055, 0x006C, | ||
636 | 0x0073, 0x0003, 0x0015, 0x001D, 0x0028, 0x0030, 0x0037, 0x003E, | ||
637 | 0x0006, 0x000B, 0x000F, 0x0012, 0x0016, 0x0019, 0x001D, 0x0001, | ||
638 | 0x0004, 0x0002, 0x001E, 0x001A, 0x0017, 0x0013, 0x0010, 0x000C, | ||
639 | 0x0007, 0x003F, 0x0038, 0x0031, 0x0029, 0x0022, 0x001A, 0x0014, | ||
640 | 0x0000, 0x006D, 0x0056, 0x0046, 0x0038, 0x0004, 0x00E5, 0x00AF, | ||
641 | 0x008F, 0x006C, 0x000A, 0x0153, 0x0150, 0x0009, 0x02A2, 0x01B4, | ||
642 | 0x0A8D, | ||
643 | }; | ||
644 | |||
645 | static const uint16_t bitalloc_65_codes_c[65] = { | ||
646 | 0x045C, 0x022F, 0x03F5, 0x01BC, 0x01FB, 0x0059, 0x00D0, 0x00DF, | ||
647 | 0x000A, 0x002D, 0x002F, 0x0052, 0x0069, 0x0078, 0x007F, 0x000A, | ||
648 | 0x0010, 0x001C, 0x0023, 0x002A, 0x0035, 0x003A, 0x003D, 0x0000, | ||
649 | 0x0003, 0x0006, 0x0009, 0x000C, 0x000F, 0x0012, 0x0016, 0x0018, | ||
650 | 0x001C, 0x0019, 0x0017, 0x0013, 0x0010, 0x000D, 0x000A, 0x0007, | ||
651 | 0x0004, 0x0001, 0x003E, 0x003B, 0x0036, 0x002B, 0x0028, 0x001D, | ||
652 | 0x0011, 0x000B, 0x0004, 0x0079, 0x006E, 0x0053, 0x0044, 0x002E, | ||
653 | 0x000B, 0x00FC, 0x00D1, 0x008A, 0x0058, 0x01BD, 0x0116, 0x03F4, | ||
654 | 0x045D, | ||
655 | }; | ||
656 | |||
657 | static const uint16_t bitalloc_65_codes_d[65] = { | ||
658 | 0x70B0, 0x70B2, 0x70B4, 0x2852, 0x385B, 0x142E, 0x1C2E, 0x0A15, | ||
659 | 0x0E14, 0x0214, 0x0704, 0x0104, 0x010B, 0x0383, 0x0083, 0x0143, | ||
660 | 0x01C3, 0x0043, 0x00A2, 0x00E2, 0x0022, 0x0052, 0x0072, 0x0012, | ||
661 | 0x002A, 0x003A, 0x000A, 0x0016, 0x001E, 0x0006, 0x000C, 0x0000, | ||
662 | 0x0004, 0x0001, 0x000D, 0x0007, 0x001F, 0x0017, 0x000B, 0x003B, | ||
663 | 0x002B, 0x0013, 0x0073, 0x0053, 0x0023, 0x00E3, 0x00A3, 0x00A0, | ||
664 | 0x0040, 0x01C0, 0x0084, 0x0384, 0x0284, 0x0105, 0x0705, 0x0215, | ||
665 | 0x0E15, 0x0A16, 0x1C2F, 0x142F, 0x1428, 0x2853, 0x70B5, 0x70B3, | ||
666 | 0x70B1, | ||
667 | }; | ||
668 | |||
669 | static const uint16_t bitalloc_65_codes_e[65] = { | ||
670 | 0x032C, 0x0332, 0x0378, 0x037E, 0x008C, 0x014A, 0x0188, 0x0197, | ||
671 | 0x019E, 0x01BD, 0x0044, 0x0047, 0x00AA, 0x00C5, 0x00CD, 0x00DC, | ||
672 | 0x001C, 0x002C, 0x0053, 0x0063, 0x0068, 0x0008, 0x000F, 0x0017, | ||
673 | 0x002B, 0x0035, 0x0005, 0x0009, 0x0016, 0x001C, 0x0006, 0x000F, | ||
674 | 0x0004, 0x0000, 0x0007, 0x001D, 0x0017, 0x000A, 0x0006, 0x0036, | ||
675 | 0x0030, 0x0028, 0x0010, 0x0009, 0x0069, 0x0064, 0x0054, 0x002D, | ||
676 | 0x001D, 0x00DD, 0x00CE, 0x00CA, 0x00AB, 0x00A4, 0x0045, 0x01BE, | ||
677 | 0x019F, 0x0198, 0x0189, 0x014B, 0x008D, 0x037F, 0x0379, 0x0333, | ||
678 | 0x032D, | ||
679 | }; | ||
680 | |||
681 | static const uint16_t bitalloc_65_codes_f[65] = { | ||
682 | 0x0FE0, 0x0FE2, 0x0FE8, 0x0FEA, 0x0FEC, 0x0FEE, 0x0FF0, 0x0FF2, | ||
683 | 0x0FF4, 0x2FF2, 0x07F2, 0x07FB, 0x03F6, 0x0BFA, 0x0BFD, 0x01FF, | ||
684 | 0x05FF, 0x02FC, 0x007C, 0x017C, 0x003C, 0x00BC, 0x001C, 0x005C, | ||
685 | 0x000C, 0x002C, 0x0004, 0x0014, 0x0000, 0x0008, 0x000E, 0x0002, | ||
686 | 0x0006, 0x0003, 0x000F, 0x0009, 0x0001, 0x0015, 0x0005, 0x002D, | ||
687 | 0x000D, 0x005D, 0x001D, 0x00BD, 0x003D, 0x017D, 0x007D, 0x02FD, | ||
688 | 0x00FC, 0x05FC, 0x01FA, 0x0BFB, 0x03F7, 0x17F8, 0x07F3, 0x2FF3, | ||
689 | 0x0FF5, 0x0FF3, 0x0FF1, 0x0FEF, 0x0FED, 0x0FEB, 0x0FE9, 0x0FE3, | ||
690 | 0x0FE1, | ||
691 | }; | ||
692 | |||
693 | static const uint16_t bitalloc_65_codes_g[65] = { | ||
694 | 0x010C, 0x038A, 0x0608, 0x0786, 0x0084, 0x0087, 0x0302, 0x0305, | ||
695 | 0x0040, 0x00E0, 0x00E3, 0x0183, 0x001E, 0x005E, 0x009E, 0x00DE, | ||
696 | 0x00F1, 0x0011, 0x0039, 0x0061, 0x0079, 0x0009, 0x001D, 0x0031, | ||
697 | 0x003D, 0x0005, 0x000F, 0x0019, 0x001F, 0x0003, 0x0006, 0x000A, | ||
698 | 0x000E, 0x000B, 0x0008, 0x0004, 0x0000, 0x001A, 0x0012, 0x000A, | ||
699 | 0x0002, 0x0036, 0x0026, 0x0016, 0x0006, 0x006E, 0x004E, 0x002E, | ||
700 | 0x000E, 0x00DF, 0x009F, 0x005F, 0x001F, 0x01E0, 0x0180, 0x00E1, | ||
701 | 0x0041, 0x03C2, 0x0303, 0x01C4, 0x0085, 0x0787, 0x0609, 0x038B, | ||
702 | 0x010D, | ||
703 | }; | ||
704 | |||
705 | static const uint8_t bitalloc_65_bits_a[65] = { | ||
706 | 16, 16, 15, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, | ||
707 | 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4, 4, | ||
708 | 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 7, 7, | ||
709 | 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 13, 13, 14, 15, 16, | ||
710 | 16, | ||
711 | }; | ||
712 | |||
713 | static const uint8_t bitalloc_65_bits_b[65] = { | ||
714 | 12, 11, 10, 9, 9, 9, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, | ||
715 | 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4, | ||
716 | 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, | ||
717 | 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 10, 10, | ||
718 | 12, | ||
719 | }; | ||
720 | |||
721 | static const uint8_t bitalloc_65_bits_c[65] = { | ||
722 | 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, | ||
723 | 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, | ||
724 | 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, | ||
725 | 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 10, | ||
726 | 11, | ||
727 | }; | ||
728 | |||
729 | static const uint8_t bitalloc_65_bits_d[65] = { | ||
730 | 15, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, | ||
731 | 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 3, | ||
732 | 3, 3, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, | ||
733 | 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 15, 15, | ||
734 | 15, | ||
735 | }; | ||
736 | |||
737 | static const uint8_t bitalloc_65_bits_e[65] = { | ||
738 | 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, | ||
739 | 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, | ||
740 | 3, 3, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, | ||
741 | 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, | ||
742 | 10, | ||
743 | }; | ||
744 | |||
745 | static const uint8_t bitalloc_65_bits_f[65] = { | ||
746 | 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 12, 12, 12, 11, | ||
747 | 11, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, | ||
748 | 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, | ||
749 | 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, | ||
750 | 14, | ||
751 | }; | ||
752 | |||
753 | static const uint8_t bitalloc_65_bits_g[65] = { | ||
754 | 11, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, | ||
755 | 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, | ||
756 | 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, | ||
757 | 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, | ||
758 | 11, | ||
759 | }; | ||
760 | |||
761 | static const uint16_t bitalloc_129_codes_a[129] = { | ||
762 | 0x0660, 0x0666, 0x06EC, 0x0722, 0x0760, 0x076E, 0x004C, 0x004E, | ||
763 | 0x00F4, 0x010A, 0x0148, 0x0156, 0x01D4, 0x01F2, 0x0331, 0x0370, | ||
764 | 0x0377, 0x0396, 0x03B1, 0x0024, 0x0064, 0x007B, 0x008A, 0x00A5, | ||
765 | 0x00D4, 0x00EB, 0x00FA, 0x019A, 0x01B9, 0x01C9, 0x01D9, 0x0010, | ||
766 | 0x0030, 0x0033, 0x0043, 0x0053, 0x006B, 0x007A, 0x00CA, 0x00D2, | ||
767 | 0x00DE, 0x00E6, 0x00F6, 0x000E, 0x001F, 0x0023, 0x002B, 0x003B, | ||
768 | 0x003F, 0x0067, 0x0070, 0x0077, 0x0005, 0x000D, 0x0012, 0x001B, | ||
769 | 0x002C, 0x0035, 0x003A, 0x0004, 0x000B, 0x0017, 0x001F, 0x0009, | ||
770 | 0x0008, 0x000A, 0x0000, 0x0018, 0x000C, 0x0005, 0x003C, 0x0036, | ||
771 | 0x002D, 0x001C, 0x0013, 0x000E, 0x0006, 0x007A, 0x0071, 0x0068, | ||
772 | 0x0064, 0x003C, 0x0034, 0x0028, 0x0020, 0x000F, 0x00F7, 0x00E7, | ||
773 | 0x00DF, 0x00D3, 0x00CB, 0x007B, 0x0074, 0x0054, 0x0044, 0x003C, | ||
774 | 0x0031, 0x0011, 0x01DA, 0x01CA, 0x01BA, 0x019B, 0x00FB, 0x00F8, | ||
775 | 0x00D5, 0x00AA, 0x008B, 0x0084, 0x0065, 0x0025, 0x03B6, 0x0397, | ||
776 | 0x0390, 0x0371, 0x0332, 0x01F3, 0x01D5, 0x0157, 0x0149, 0x010B, | ||
777 | 0x00F5, 0x004F, 0x004D, 0x076F, 0x0761, 0x0723, 0x06ED, 0x0667, | ||
778 | 0x0661, | ||
779 | }; | ||
780 | |||
781 | static const uint16_t bitalloc_129_codes_b[129] = { | ||
782 | 0x29DC, 0x14EF, 0x0455, 0x0E9C, 0x022B, 0x0489, 0x0740, 0x074F, | ||
783 | 0x0172, 0x0245, 0x0247, 0x030A, 0x03A1, 0x001C, 0x008B, 0x00D6, | ||
784 | 0x010C, 0x0148, 0x014F, 0x0186, 0x01D1, 0x0008, 0x000F, 0x0046, | ||
785 | 0x005D, 0x0078, 0x0087, 0x0096, 0x00A5, 0x00BC, 0x00D8, 0x00DE, | ||
786 | 0x00F6, 0x0005, 0x0014, 0x0024, 0x002F, 0x003A, 0x003D, 0x0049, | ||
787 | 0x0050, 0x0058, 0x005F, 0x0066, 0x006D, 0x0075, 0x007C, 0x0004, | ||
788 | 0x000B, 0x0013, 0x0018, 0x001B, 0x001F, 0x0022, 0x0026, 0x002A, | ||
789 | 0x002D, 0x0031, 0x0034, 0x0038, 0x003B, 0x003F, 0x0003, 0x0006, | ||
790 | 0x000A, 0x0007, 0x0004, 0x0000, 0x003C, 0x0039, 0x0035, 0x0032, | ||
791 | 0x002E, 0x002B, 0x0027, 0x0023, 0x0020, 0x001C, 0x0019, 0x0016, | ||
792 | 0x0010, 0x0005, 0x007D, 0x007A, 0x006E, 0x0067, 0x0060, 0x0059, | ||
793 | 0x0051, 0x004A, 0x0042, 0x003B, 0x0034, 0x0025, 0x0015, 0x0006, | ||
794 | 0x00F7, 0x00DF, 0x00D9, 0x00BD, 0x00A6, 0x0097, 0x0090, 0x0079, | ||
795 | 0x006A, 0x0047, 0x0044, 0x0009, 0x01D2, 0x0187, 0x0184, 0x0149, | ||
796 | 0x010D, 0x00D7, 0x00B8, 0x001D, 0x03A6, 0x030B, 0x029C, 0x0246, | ||
797 | 0x0173, 0x0114, 0x0741, 0x053A, 0x0488, 0x0E9D, 0x0A76, 0x0454, | ||
798 | 0x29DD, | ||
799 | }; | ||
800 | |||
801 | static const uint16_t bitalloc_129_codes_c[129] = { | ||
802 | 0x0E5C, 0x072F, 0x001D, 0x0724, 0x000F, 0x010D, 0x0324, 0x0393, | ||
803 | 0x03E9, 0x0080, 0x0087, 0x00FA, 0x0164, 0x0193, 0x01DE, 0x01F5, | ||
804 | 0x0010, 0x002A, 0x0041, 0x0064, 0x0073, 0x008E, 0x00A4, 0x00B3, | ||
805 | 0x00D6, 0x00E5, 0x00F4, 0x00FB, 0x0002, 0x0009, 0x0013, 0x001E, | ||
806 | 0x0026, 0x002C, 0x0033, 0x003F, 0x0041, 0x004C, 0x0053, 0x005E, | ||
807 | 0x0065, 0x0070, 0x0073, 0x0078, 0x007B, 0x007E, 0x0002, 0x0005, | ||
808 | 0x0007, 0x000B, 0x000D, 0x0011, 0x0014, 0x0017, 0x001A, 0x001D, | ||
809 | 0x0021, 0x0024, 0x0027, 0x002A, 0x002D, 0x0030, 0x0033, 0x0036, | ||
810 | 0x003A, 0x0037, 0x0034, 0x0031, 0x002E, 0x002B, 0x0028, 0x0025, | ||
811 | 0x0022, 0x001E, 0x001B, 0x0018, 0x0015, 0x0012, 0x000E, 0x000C, | ||
812 | 0x0008, 0x0006, 0x0003, 0x007F, 0x007C, 0x0079, 0x0076, 0x0071, | ||
813 | 0x006A, 0x005F, 0x0058, 0x004D, 0x0046, 0x0040, 0x0038, 0x002D, | ||
814 | 0x0027, 0x001F, 0x0014, 0x0012, 0x0003, 0x0000, 0x00F5, 0x00EE, | ||
815 | 0x00D7, 0x00C8, 0x00A5, 0x008F, 0x007C, 0x0065, 0x0042, 0x002B, | ||
816 | 0x0011, 0x0002, 0x01DF, 0x01C8, 0x0165, 0x00FB, 0x00E4, 0x0081, | ||
817 | 0x0006, 0x03E8, 0x0325, 0x01CA, 0x010C, 0x0725, 0x0396, 0x001C, | ||
818 | 0x0E5D, | ||
819 | }; | ||
820 | |||
821 | static const uint16_t bitalloc_129_codes_d[129] = { | ||
822 | 0xA598, 0xA59A, 0xA59C, 0xA59E, 0xC598, 0xE586, 0x3ACC, 0x52CA, | ||
823 | 0x62CD, 0x0D48, 0x1D67, 0x2978, 0x3167, 0x3966, 0x06A5, 0x0EBC, | ||
824 | 0x14BD, 0x1CB1, 0x0350, 0x0353, 0x075F, 0x0A5F, 0x0C5E, 0x0E5E, | ||
825 | 0x01AE, 0x03AD, 0x052D, 0x062D, 0x072D, 0x00D5, 0x01D4, 0x0294, | ||
826 | 0x0314, 0x0394, 0x0014, 0x0094, 0x0114, 0x0174, 0x01B4, 0x01F4, | ||
827 | 0x000B, 0x004B, 0x008B, 0x00BB, 0x00DB, 0x00FB, 0x001B, 0x003B, | ||
828 | 0x0053, 0x0063, 0x0073, 0x0003, 0x0013, 0x0023, 0x002F, 0x0037, | ||
829 | 0x003F, 0x0007, 0x000F, 0x0015, 0x0019, 0x001D, 0x0001, 0x0005, | ||
830 | 0x0009, 0x0006, 0x0002, 0x001E, 0x001A, 0x0016, 0x0010, 0x0008, | ||
831 | 0x0000, 0x0038, 0x0030, 0x0028, 0x001C, 0x000C, 0x007C, 0x006C, | ||
832 | 0x005C, 0x0044, 0x0024, 0x0004, 0x00E4, 0x00C4, 0x00A4, 0x0074, | ||
833 | 0x0034, 0x01F5, 0x01B5, 0x0175, 0x0115, 0x0095, 0x0015, 0x0395, | ||
834 | 0x0315, 0x0295, 0x01D5, 0x00D6, 0x072E, 0x062E, 0x052E, 0x03AE, | ||
835 | 0x01AF, 0x0E5F, 0x0C5F, 0x0C58, 0x0A58, 0x0758, 0x0351, 0x1CB2, | ||
836 | 0x18B2, 0x0EBD, 0x0EB2, 0x3967, 0x3960, 0x2979, 0x2964, 0x0D49, | ||
837 | 0x72C2, 0x52CB, 0x3ACD, 0xE587, 0xC599, 0xA59F, 0xA59D, 0xA59B, | ||
838 | 0xA599, | ||
839 | }; | ||
840 | |||
841 | static const uint16_t bitalloc_129_codes_e[129] = { | ||
842 | 0xA13C, 0xC720, 0xA13F, 0xA13E, 0xA13D, 0xE722, 0x5090, 0x6393, | ||
843 | 0x7392, 0x2849, 0x31CE, 0x39CE, 0x1425, 0x18E5, 0x1CE5, 0x0844, | ||
844 | 0x0A1C, 0x0C7C, 0x036C, 0x0423, 0x050F, 0x063F, 0x01B7, 0x0216, | ||
845 | 0x0285, 0x031D, 0x039D, 0x0109, 0x0140, 0x0180, 0x01C8, 0x01CF, | ||
846 | 0x007A, 0x008A, 0x00A2, 0x00C1, 0x00E5, 0x0014, 0x0037, 0x0043, | ||
847 | 0x004E, 0x0056, 0x0061, 0x006C, 0x007C, 0x000B, 0x001C, 0x001F, | ||
848 | 0x0023, 0x0025, 0x0029, 0x002C, 0x002E, 0x0032, 0x0034, 0x0037, | ||
849 | 0x003A, 0x003C, 0x003F, 0x0001, 0x0003, 0x0006, 0x0008, 0x000A, | ||
850 | 0x000C, 0x000B, 0x0009, 0x0007, 0x0004, 0x0002, 0x0000, 0x003D, | ||
851 | 0x003B, 0x0038, 0x0035, 0x0033, 0x002F, 0x002D, 0x002A, 0x0026, | ||
852 | 0x0024, 0x0020, 0x001D, 0x001A, 0x007D, 0x006D, 0x0062, 0x0057, | ||
853 | 0x004F, 0x0044, 0x003C, 0x0015, 0x00E6, 0x00C6, 0x00A3, 0x008B, | ||
854 | 0x007B, 0x006C, 0x01C9, 0x0181, 0x0141, 0x010A, 0x00DA, 0x031E, | ||
855 | 0x0286, 0x0217, 0x0210, 0x0738, 0x0638, 0x0508, 0x036D, 0x0C7D, | ||
856 | 0x0A1D, 0x0845, 0x1CE6, 0x18E6, 0x1426, 0x39CF, 0x31CF, 0x284E, | ||
857 | 0x7393, 0x7390, 0x5091, 0xE723, 0xC724, 0xC725, 0xC722, 0xC723, | ||
858 | 0xC721, | ||
859 | }; | ||
860 | |||
861 | static const uint16_t bitalloc_129_codes_f[129] = { | ||
862 | 0x762C, 0x3B17, 0x1555, 0x0608, 0x0AAB, 0x0FF2, 0x0305, 0x0307, | ||
863 | 0x0763, 0x0046, 0x010C, 0x01BC, 0x02AB, 0x03B6, 0x03FD, 0x0080, | ||
864 | 0x0087, 0x00DF, 0x0156, 0x01D9, 0x01F8, 0x01FF, 0x002A, 0x0041, | ||
865 | 0x0061, 0x0094, 0x00D4, 0x00EA, 0x00F2, 0x00FD, 0x0009, 0x000B, | ||
866 | 0x001A, 0x0026, 0x0031, 0x0040, 0x004B, 0x006B, 0x0073, 0x0077, | ||
867 | 0x007A, 0x007C, 0x0000, 0x0002, 0x0006, 0x0008, 0x000B, 0x000E, | ||
868 | 0x0011, 0x0014, 0x0016, 0x0019, 0x001C, 0x001E, 0x0021, 0x0023, | ||
869 | 0x0026, 0x0028, 0x002B, 0x002D, 0x002F, 0x0031, 0x0033, 0x0036, | ||
870 | 0x0038, 0x0037, 0x0034, 0x0032, 0x0030, 0x002E, 0x002C, 0x0029, | ||
871 | 0x0027, 0x0024, 0x0022, 0x001F, 0x001D, 0x001A, 0x0017, 0x0015, | ||
872 | 0x0012, 0x000F, 0x000C, 0x0009, 0x0007, 0x0003, 0x0001, 0x007D, | ||
873 | 0x007B, 0x0078, 0x0074, 0x0072, 0x0054, 0x0041, 0x0036, 0x0027, | ||
874 | 0x001B, 0x0014, 0x000A, 0x00FE, 0x00F3, 0x00EB, 0x00D5, 0x0095, | ||
875 | 0x006E, 0x0042, 0x002B, 0x0010, 0x01F9, 0x01DA, 0x0157, 0x0154, | ||
876 | 0x00C0, 0x0081, 0x0022, 0x03B7, 0x03B0, 0x01BD, 0x010D, 0x0047, | ||
877 | 0x07F8, 0x0554, 0x0306, 0x0FF3, 0x0EC4, 0x0609, 0x1D8A, 0x1554, | ||
878 | 0x762D, | ||
879 | }; | ||
880 | |||
881 | static const uint16_t bitalloc_129_codes_g[129] = { | ||
882 | 0x1E20, 0x1E5E, 0x031C, 0x051A, 0x0718, 0x0916, 0x0B14, 0x0D12, | ||
883 | 0x0F11, 0x0090, 0x018F, 0x028E, 0x038D, 0x048C, 0x058B, 0x068A, | ||
884 | 0x0789, 0x0049, 0x00C8, 0x0148, 0x01C7, 0x0247, 0x02C6, 0x0346, | ||
885 | 0x03C5, 0x0025, 0x0065, 0x00A5, 0x00E4, 0x0124, 0x0164, 0x01A4, | ||
886 | 0x01E3, 0x0013, 0x0033, 0x0053, 0x0073, 0x0093, 0x00B3, 0x00D3, | ||
887 | 0x00F3, 0x000A, 0x001A, 0x002A, 0x003A, 0x004A, 0x005A, 0x006A, | ||
888 | 0x007A, 0x0006, 0x000E, 0x0016, 0x001E, 0x0026, 0x002E, 0x0036, | ||
889 | 0x003E, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C, | ||
890 | 0x0000, 0x001D, 0x0019, 0x0015, 0x0011, 0x000D, 0x0009, 0x0005, | ||
891 | 0x003F, 0x0037, 0x002F, 0x0027, 0x001F, 0x0017, 0x000F, 0x0007, | ||
892 | 0x007B, 0x006B, 0x005B, 0x004B, 0x003B, 0x002B, 0x001B, 0x000B, | ||
893 | 0x0008, 0x00F0, 0x00D0, 0x00B0, 0x0090, 0x0070, 0x0050, 0x0030, | ||
894 | 0x01E4, 0x01A5, 0x0165, 0x0125, 0x00E5, 0x00E2, 0x00A2, 0x0062, | ||
895 | 0x03CA, 0x0347, 0x02C7, 0x02C4, 0x0244, 0x0149, 0x00C9, 0x00C6, | ||
896 | 0x0796, 0x068B, 0x0688, 0x048D, 0x048A, 0x028F, 0x028C, 0x0091, | ||
897 | 0x0F2E, 0x0D13, 0x0B15, 0x0917, 0x0719, 0x051B, 0x031D, 0x1E5F, | ||
898 | 0x1E21, | ||
899 | }; | ||
900 | |||
901 | static const uint8_t bitalloc_129_bits_a[129] = { | ||
902 | 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, | ||
903 | 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, | ||
904 | 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, | ||
905 | 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, | ||
906 | 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, | ||
907 | 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, | ||
908 | 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, | ||
909 | 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, | ||
910 | 11, | ||
911 | }; | ||
912 | |||
913 | static const uint8_t bitalloc_129_bits_b[129] = { | ||
914 | 14, 13, 12, 12, 11, 11, 11, 11, 10, 10, 10, 10, 10, 9, 9, 9, | ||
915 | 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, | ||
916 | 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, | ||
917 | 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, | ||
918 | 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, | ||
919 | 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, | ||
920 | 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, | ||
921 | 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, | ||
922 | 14, | ||
923 | }; | ||
924 | |||
925 | static const uint8_t bitalloc_129_bits_c[129] = { | ||
926 | 13, 12, 11, 11, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, | ||
927 | 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, | ||
928 | 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, | ||
929 | 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, | ||
930 | 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, | ||
931 | 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, | ||
932 | 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, | ||
933 | 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, | ||
934 | 13, | ||
935 | }; | ||
936 | |||
937 | static const uint8_t bitalloc_129_bits_d[129] = { | ||
938 | 16, 16, 16, 16, 16, 16, 15, 15, 15, 14, 14, 14, 14, 14, 13, 13, | ||
939 | 13, 13, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 10, 10, 10, | ||
940 | 10, 10, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 7, 7, | ||
941 | 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, | ||
942 | 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, | ||
943 | 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, | ||
944 | 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, | ||
945 | 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 16, 16, | ||
946 | 16, | ||
947 | }; | ||
948 | |||
949 | static const uint8_t bitalloc_129_bits_e[129] = { | ||
950 | 16, 16, 16, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, | ||
951 | 12, 12, 11, 11, 11, 11, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, | ||
952 | 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, | ||
953 | 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, | ||
954 | 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, | ||
955 | 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, | ||
956 | 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, | ||
957 | 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 16, 16, | ||
958 | 16, | ||
959 | }; | ||
960 | |||
961 | static const uint8_t bitalloc_129_bits_f[129] = { | ||
962 | 15, 14, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 10, 10, 9, | ||
963 | 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, | ||
964 | 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, | ||
965 | 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, | ||
966 | 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, | ||
967 | 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, | ||
968 | 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, | ||
969 | 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, | ||
970 | 15, | ||
971 | }; | ||
972 | |||
973 | static const uint8_t bitalloc_129_bits_g[129] = { | ||
974 | 13, 13, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, | ||
975 | 11, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, | ||
976 | 9, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, | ||
977 | 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, | ||
978 | 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, | ||
979 | 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, | ||
980 | 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, | ||
981 | 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 13, | ||
982 | 13, | ||
983 | }; | ||
984 | |||
985 | static const uint8_t bitalloc_sizes[DCA_CODE_BOOKS] = { | ||
986 | 3, 5, 7, 9, 13, 17, 25, 33, 65, 129 | ||
987 | }; | ||
988 | |||
989 | static const int8_t bitalloc_offsets[DCA_CODE_BOOKS] = { | ||
990 | -1, -2, -3, -4, -6, -8, -12, -16, -32, -64 | ||
991 | }; | ||
992 | |||
993 | static const uint8_t bitalloc_maxbits[DCA_CODE_BOOKS][7] = { | ||
994 | { 2 }, | ||
995 | { 4, 3, 3 }, | ||
996 | { 5, 5, 4 }, | ||
997 | { 6, 5, 6 }, | ||
998 | { 7, 6, 5 }, | ||
999 | { 9, 8, 7, 9, 8, 8, 8 }, | ||
1000 | { 9, 9, 8, 9, 8, 9, 9 }, | ||
1001 | { 9, 9, 9, 9, 9, 9, 9 }, | ||
1002 | { 9, 9, 9, 9, 9, 9, 9 }, | ||
1003 | { 9, 9, 9, 9, 9, 9, 9 } | ||
1004 | }; | ||
1005 | |||
1006 | static const uint16_t *const bitalloc_codes[DCA_CODE_BOOKS][8] = { | ||
1007 | { bitalloc_3_codes, NULL }, | ||
1008 | { bitalloc_5_codes_a, bitalloc_5_codes_b, bitalloc_5_codes_c, NULL }, | ||
1009 | { bitalloc_7_codes_a, bitalloc_7_codes_b, bitalloc_7_codes_c, NULL }, | ||
1010 | { bitalloc_9_codes_a, bitalloc_9_codes_b, bitalloc_9_codes_c, NULL }, | ||
1011 | { bitalloc_13_codes_a, bitalloc_13_codes_b, bitalloc_13_codes_c, NULL }, | ||
1012 | { bitalloc_17_codes_a, bitalloc_17_codes_b, bitalloc_17_codes_c, bitalloc_17_codes_d, | ||
1013 | bitalloc_17_codes_e, bitalloc_17_codes_f, bitalloc_17_codes_g, NULL }, | ||
1014 | { bitalloc_25_codes_a, bitalloc_25_codes_b, bitalloc_25_codes_c, bitalloc_25_codes_d, | ||
1015 | bitalloc_25_codes_e, bitalloc_25_codes_f, bitalloc_25_codes_g, NULL }, | ||
1016 | { bitalloc_33_codes_a, bitalloc_33_codes_b, bitalloc_33_codes_c, bitalloc_33_codes_d, | ||
1017 | bitalloc_33_codes_e, bitalloc_33_codes_f, bitalloc_33_codes_g, NULL }, | ||
1018 | { bitalloc_65_codes_a, bitalloc_65_codes_b, bitalloc_65_codes_c, bitalloc_65_codes_d, | ||
1019 | bitalloc_65_codes_e, bitalloc_65_codes_f, bitalloc_65_codes_g, NULL }, | ||
1020 | { bitalloc_129_codes_a, bitalloc_129_codes_b, bitalloc_129_codes_c, bitalloc_129_codes_d, | ||
1021 | bitalloc_129_codes_e, bitalloc_129_codes_f, bitalloc_129_codes_g, NULL } | ||
1022 | }; | ||
1023 | |||
1024 | static const uint8_t *const bitalloc_bits[DCA_CODE_BOOKS][8] = { | ||
1025 | { bitalloc_3_bits, NULL }, | ||
1026 | { bitalloc_5_bits_a, bitalloc_5_bits_b, bitalloc_5_bits_c, NULL }, | ||
1027 | { bitalloc_7_bits_a, bitalloc_7_bits_b, bitalloc_7_bits_c, NULL }, | ||
1028 | { bitalloc_9_bits_a, bitalloc_9_bits_b, bitalloc_9_bits_c, NULL }, | ||
1029 | { bitalloc_13_bits_a, bitalloc_13_bits_b, bitalloc_13_bits_c, NULL }, | ||
1030 | { bitalloc_17_bits_a, bitalloc_17_bits_b, bitalloc_17_bits_c, bitalloc_17_bits_d, | ||
1031 | bitalloc_17_bits_e, bitalloc_17_bits_f, bitalloc_17_bits_g, NULL }, | ||
1032 | { bitalloc_25_bits_a, bitalloc_25_bits_b, bitalloc_25_bits_c, bitalloc_25_bits_d, | ||
1033 | bitalloc_25_bits_e, bitalloc_25_bits_f, bitalloc_25_bits_g, NULL }, | ||
1034 | { bitalloc_33_bits_a, bitalloc_33_bits_b, bitalloc_33_bits_c, bitalloc_33_bits_d, | ||
1035 | bitalloc_33_bits_e, bitalloc_33_bits_f, bitalloc_33_bits_g, NULL }, | ||
1036 | { bitalloc_65_bits_a, bitalloc_65_bits_b, bitalloc_65_bits_c, bitalloc_65_bits_d, | ||
1037 | bitalloc_65_bits_e, bitalloc_65_bits_f, bitalloc_65_bits_g, NULL }, | ||
1038 | { bitalloc_129_bits_a, bitalloc_129_bits_b, bitalloc_129_bits_c, bitalloc_129_bits_d, | ||
1039 | bitalloc_129_bits_e, bitalloc_129_bits_f, bitalloc_129_bits_g, NULL } | ||
1040 | }; | ||
1041 | |||
1042 | static const uint16_t tnl_grp_0_codes[37] = { | ||
1043 | 0x0000, 0x0003, 0x0004, 0x0007, 0x0001, 0x0009, 0x000a, 0x000d, | ||
1044 | 0x000e, 0x0006, 0x0012, 0x0005, 0x0015, 0x0016, 0x0022, 0x0025, | ||
1045 | 0x0035, 0x0076, 0x0002, 0x0042, 0x00b6, 0x0036, 0x00c2, 0x0136, | ||
1046 | 0x0182, 0x01c2, 0x03c2, 0x0482, 0x0682, 0x0082, 0x0882, 0x0a82, | ||
1047 | 0x0282, 0x2282, 0x3282, 0x1282, 0x5282, | ||
1048 | }; | ||
1049 | |||
1050 | static const uint16_t tnl_grp_1_codes[34] = { | ||
1051 | 0x0001, 0x0003, 0x0006, 0x0000, 0x0002, 0x0004, 0x0005, 0x0007, | ||
1052 | 0x0008, 0x000f, 0x001a, 0x001c, 0x001d, 0x000a, 0x002c, 0x002d, | ||
1053 | 0x000d, 0x002a, 0x004c, 0x004d, 0x006a, 0x008c, 0x00cd, 0x00ea, | ||
1054 | 0x000c, 0x010c, 0x01ea, 0x020c, 0x030c, 0x07ea, 0x0bea, 0x03ea, | ||
1055 | 0x13ea, 0x33ea, | ||
1056 | }; | ||
1057 | |||
1058 | static const uint16_t tnl_grp_2_codes[31] = { | ||
1059 | 0x0001, 0x0003, 0x0006, 0x0007, 0x0004, 0x0008, 0x000c, 0x0010, | ||
1060 | 0x0012, 0x001a, 0x0022, 0x0000, 0x000a, 0x0020, 0x0040, 0x004a, | ||
1061 | 0x006a, 0x0002, 0x002a, 0x0042, 0x0082, 0x00aa, 0x00e0, 0x0060, | ||
1062 | 0x00c2, 0x01c2, 0x0160, 0x0360, 0x0f60, 0x0760, 0x1760, | ||
1063 | }; | ||
1064 | |||
1065 | static const uint16_t tnl_grp_3_codes[28] = { | ||
1066 | 0x0001, 0x0006, 0x0008, 0x0014, 0x001c, 0x0000, 0x0002, 0x0004, | ||
1067 | 0x000a, 0x000c, 0x0010, 0x0012, 0x001a, 0x0020, 0x002a, 0x002c, | ||
1068 | 0x0032, 0x003a, 0x0022, 0x0030, 0x0062, 0x0064, 0x0070, 0x0024, | ||
1069 | 0x00a4, 0x01a4, 0x03a4, 0x07a4, | ||
1070 | }; | ||
1071 | |||
1072 | static const uint16_t tnl_grp_4_codes[23] = { | ||
1073 | 0x0001, 0x0000, 0x000a, 0x0006, 0x0012, 0x001e, 0x0022, 0x002e, | ||
1074 | 0x0036, 0x003e, 0x0002, 0x0016, 0x0032, 0x004e, 0x0056, 0x000e, | ||
1075 | 0x0042, 0x0072, 0x00c2, 0x00f2, 0x008e, 0x018e, 0x038e, | ||
1076 | }; | ||
1077 | |||
1078 | static const uint16_t tnl_scf_codes[20] = { | ||
1079 | 0x0000, 0x0001, 0x0002, 0x0005, 0x0006, 0x0007, 0x000b, 0x000c, | ||
1080 | 0x0013, 0x0014, 0x0003, 0x0004, 0x0023, 0x0064, 0x00a4, 0x0024, | ||
1081 | 0x0124, 0x0324, 0x0724, 0x0f24, | ||
1082 | }; | ||
1083 | |||
1084 | static const uint16_t damp_codes[7] = { | ||
1085 | 0x0001, 0x0000, 0x0002, 0x0006, 0x000e, 0x001e, 0x003e, | ||
1086 | }; | ||
1087 | |||
1088 | static const uint16_t dph_codes[9] = { | ||
1089 | 0x0000, 0x0002, 0x0003, 0x0001, 0x0009, 0x000d, 0x0005, 0x0015, | ||
1090 | 0x0035, | ||
1091 | }; | ||
1092 | |||
1093 | static const uint16_t fst_rsd_amp_codes[24] = { | ||
1094 | 0x0003, 0x0005, 0x0006, 0x0007, 0x0000, 0x0001, 0x0002, 0x0008, | ||
1095 | 0x0009, 0x000a, 0x0014, 0x0004, 0x001a, 0x001c, 0x0024, 0x002c, | ||
1096 | 0x003a, 0x000c, 0x003c, 0x004c, 0x00fc, 0x007c, 0x017c, 0x037c, | ||
1097 | }; | ||
1098 | |||
1099 | static const uint16_t rsd_apprx_codes[6] = { | ||
1100 | 0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, | ||
1101 | }; | ||
1102 | |||
1103 | static const uint16_t rsd_amp_codes[33] = { | ||
1104 | 0x0001, 0x0000, 0x0002, 0x0003, 0x0004, 0x000e, 0x000f, 0x0016, | ||
1105 | 0x0007, 0x0027, 0x0037, 0x0026, 0x0066, 0x0006, 0x0017, 0x0046, | ||
1106 | 0x0097, 0x00d7, 0x0086, 0x00c6, 0x01c6, 0x0157, 0x0186, 0x0257, | ||
1107 | 0x0357, 0x0057, 0x0786, 0x0386, 0x0b86, 0x0457, 0x0c57, 0x1457, | ||
1108 | 0x1c57, | ||
1109 | }; | ||
1110 | |||
1111 | static const uint16_t avg_g3_codes[18] = { | ||
1112 | 0x0001, 0x0002, 0x0003, 0x0000, 0x000c, 0x0014, 0x0018, 0x0004, | ||
1113 | 0x0008, 0x0028, 0x0068, 0x0024, 0x00a4, 0x00e4, 0x0164, 0x0064, | ||
1114 | 0x0264, 0x0664, | ||
1115 | }; | ||
1116 | |||
1117 | static const uint16_t st_grid_codes[22] = { | ||
1118 | 0x0001, 0x0002, 0x0000, 0x0004, 0x0008, 0x001c, 0x004c, 0x006c, | ||
1119 | 0x000c, 0x002c, 0x008c, 0x00ac, 0x012c, 0x018c, 0x01ac, 0x038c, | ||
1120 | 0x03ac, 0x032c, 0x072c, 0x0f2c, 0x172c, 0x1f2c, | ||
1121 | }; | ||
1122 | |||
1123 | static const uint16_t grid_2_codes[20] = { | ||
1124 | 0x0000, 0x0002, 0x0003, 0x0001, 0x0005, 0x000d, 0x003d, 0x005d, | ||
1125 | 0x009d, 0x011d, 0x001d, 0x061d, 0x041d, 0x0c1d, 0x0a1d, 0x121d, | ||
1126 | 0x021d, 0x1a1d, 0x221d, 0x3a1d, | ||
1127 | }; | ||
1128 | |||
1129 | static const uint16_t grid_3_codes[13] = { | ||
1130 | 0x0001, 0x0002, 0x0000, 0x0004, 0x000c, 0x001c, 0x007c, 0x003c, | ||
1131 | 0x01bc, 0x00bc, 0x06bc, 0x02bc, 0x0abc, | ||
1132 | }; | ||
1133 | |||
1134 | static const uint16_t rsd_codes[9] = { | ||
1135 | 0x0001, 0x0003, 0x0000, 0x0002, 0x0006, 0x0004, 0x000c, 0x001c, | ||
1136 | 0x003c, | ||
1137 | }; | ||
1138 | |||
1139 | static const uint8_t tnl_grp_0_bitvals[74] = { | ||
1140 | 3, 5, 3, 9, 3, 4, 3, 6, 4, 10, 4, 13, 4, 7, 4, 11, | ||
1141 | 4, 8, 5, 12, 5, 14, 6, 15, 6, 18, 6, 1, 6, 17, 6, 16, | ||
1142 | 6, 21, 7, 20, 8, 19, 8, 22, 8, 25, 9, 26, 9, 23, 9, 3, | ||
1143 | 9, 24, 10, 29, 10, 27, 11, 28, 11, 30, 12, 33, 12, 31, 12, 32, | ||
1144 | 14, 34, 14, 37, 14, 36, 15, 35, 15, 0, | ||
1145 | }; | ||
1146 | |||
1147 | static const uint8_t tnl_grp_1_bitvals[68] = { | ||
1148 | 3, 9, 3, 6, 3, 5, 4, 4, 4, 8, 4, 10, 4, 1, 4, 11, | ||
1149 | 4, 7, 4, 13, 5, 12, 5, 14, 5, 17, 6, 16, 6, 15, 6, 18, | ||
1150 | 7, 20, 7, 19, 7, 21, 8, 25, 8, 23, 8, 22, 8, 24, 9, 26, | ||
1151 | 10, 3, 10, 29, 10, 30, 10, 27, 10, 28, 11, 31, 12, 32, 13, 33, | ||
1152 | 14, 34, 14, 0, | ||
1153 | }; | ||
1154 | |||
1155 | static const uint8_t tnl_grp_2_bitvals[62] = { | ||
1156 | 2, 1, 3, 6, 3, 5, 3, 7, 4, 9, 4, 8, 4, 4, 5, 10, | ||
1157 | 5, 11, 5, 13, 6, 12, 7, 14, 7, 16, 7, 15, 7, 17, 7, 18, | ||
1158 | 7, 19, 8, 22, 8, 20, 8, 21, 8, 3, 8, 24, 8, 25, 9, 23, | ||
1159 | 9, 26, 9, 27, 10, 28, 11, 29, 12, 31, 13, 30, 13, 0, | ||
1160 | }; | ||
1161 | |||
1162 | static const uint8_t tnl_grp_3_bitvals[56] = { | ||
1163 | 1, 1, 3, 6, 4, 5, 5, 9, 5, 4, 6, 8, 6, 14, 6, 10, | ||
1164 | 6, 21, 6, 13, 6, 7, 6, 3, 6, 16, 6, 2, 6, 18, 6, 17, | ||
1165 | 6, 11, 6, 15, 7, 19, 7, 23, 7, 24, 7, 22, 7, 12, 8, 20, | ||
1166 | 9, 25, 10, 26, 11, 27, 11, 0, | ||
1167 | }; | ||
1168 | |||
1169 | static const uint8_t tnl_grp_4_bitvals[46] = { | ||
1170 | 1, 1, 2, 2, 4, 4, 5, 5, 6, 6, 6, 8, 6, 3, 6, 19, | ||
1171 | 6, 20, 6, 9, 7, 7, 7, 11, 7, 13, 7, 17, 7, 10, 8, 12, | ||
1172 | 8, 15, 8, 14, 8, 21, 8, 18, 9, 16, 10, 22, 10, 0, | ||
1173 | }; | ||
1174 | |||
1175 | static const uint8_t tnl_scf_bitvals[40] = { | ||
1176 | 3, 3, 3, 1, 3, 2, 3, 5, 3, 4, 3, 6, 4, 8, 4, 7, | ||
1177 | 5, 10, 5, 9, 6, 12, 6, 11, 6, 13, 7, 14, 8, 15, 9, 16, | ||
1178 | 10, 17, 11, 18, 12, 19, 12, 0, | ||
1179 | }; | ||
1180 | |||
1181 | static const uint8_t damp_bitvals[14] = { | ||
1182 | 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 0, | ||
1183 | }; | ||
1184 | |||
1185 | static const uint8_t dph_bitvals[18] = { | ||
1186 | 2, 2, 2, 1, 2, 8, 4, 3, 4, 7, 4, 4, 5, 6, 6, 5, | ||
1187 | 6, 0, | ||
1188 | }; | ||
1189 | |||
1190 | static const uint8_t fst_rsd_amp_bitvals[48] = { | ||
1191 | 3, 13, 3, 15, 3, 16, 3, 14, 4, 12, 4, 10, 4, 11, 4, 17, | ||
1192 | 4, 18, 5, 19, 5, 9, 6, 1, 6, 7, 6, 6, 6, 8, 6, 5, | ||
1193 | 6, 4, 7, 20, 7, 2, 7, 3, 8, 21, 9, 22, 10, 23, 10, 0, | ||
1194 | }; | ||
1195 | |||
1196 | static const uint8_t rsd_apprx_bitvals[12] = { | ||
1197 | 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 0, | ||
1198 | }; | ||
1199 | |||
1200 | static const uint8_t rsd_amp_bitvals[66] = { | ||
1201 | 2, 3, 3, 2, 3, 5, 3, 4, 3, 1, 4, 7, 4, 6, 5, 9, | ||
1202 | 6, 8, 6, 11, 6, 10, 7, 12, 7, 13, 8, 14, 8, 18, 8, 16, | ||
1203 | 8, 15, 8, 22, 9, 20, 9, 24, 9, 17, 10, 28, 10, 26, 10, 21, | ||
1204 | 10, 23, 11, 30, 11, 19, 12, 25, 12, 32, 13, 36, 13, 29, 13, 34, | ||
1205 | 13, 0, | ||
1206 | }; | ||
1207 | |||
1208 | static const uint8_t avg_g3_bitvals[36] = { | ||
1209 | 2, 15, 2, 16, 2, 17, 4, 14, 4, 18, 5, 12, 5, 13, 6, 10, | ||
1210 | 6, 11, 7, 19, 7, 9, 8, 20, 8, 8, 8, 7, 9, 21, 10, 6, | ||
1211 | 11, 23, 11, 0, | ||
1212 | }; | ||
1213 | |||
1214 | static const uint8_t st_grid_bitvals[44] = { | ||
1215 | 1, 6, 2, 1, 4, 4, 4, 8, 4, 3, 5, 10, 7, 12, 7, 5, | ||
1216 | 8, 14, 9, 16, 9, 7, 9, 18, 10, 11, 10, 9, 10, 20, 10, 22, | ||
1217 | 10, 2, 11, 13, 13, 17, 13, 24, 13, 15, 13, 0, | ||
1218 | }; | ||
1219 | |||
1220 | static const uint8_t grid_2_bitvals[40] = { | ||
1221 | 2, 3, 2, 2, 2, 1, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, | ||
1222 | 8, 9, 9, 10, 11, 11, 11, 12, 12, 13, 12, 17, 13, 15, 13, 18, | ||
1223 | 14, 19, 14, 16, 14, 14, 14, 0, | ||
1224 | }; | ||
1225 | |||
1226 | static const uint8_t grid_3_bitvals[26] = { | ||
1227 | 1, 17, 2, 16, 3, 18, 4, 15, 5, 19, 6, 14, 7, 20, 8, 13, | ||
1228 | 9, 21, 10, 12, 11, 22, 12, 11, 12, 0, | ||
1229 | }; | ||
1230 | |||
1231 | static const uint8_t rsd_bitvals[18] = { | ||
1232 | 2, 2, 2, 3, 3, 1, 3, 4, 3, 0, 4, 5, 5, 6, 6, 7, | ||
1233 | 6, 4, | ||
1234 | }; | ||
1235 | |||
1236 | static const uint16_t vlc_offs[80] = { | ||
1237 | 0, 512, 640, 768, 1282, 1794, 2436, 3080, 3770, 4454, 5364, | ||
1238 | 5372, 5380, 5388, 5392, 5396, 5412, 5420, 5428, 5460, 5492, 5508, | ||
1239 | 5572, 5604, 5668, 5796, 5860, 5892, 6412, 6668, 6796, 7308, 7564, | ||
1240 | 7820, 8076, 8620, 9132, 9388, 9910, 10166, 10680, 11196, 11726, 12240, | ||
1241 | 12752, 13298, 13810, 14326, 14840, 15500, 16022, 16540, 17158, 17678, 18264, | ||
1242 | 18796, 19352, 19926, 20468, 21472, 22398, 23014, 23622, 24200, 24748, 25276, | ||
1243 | 25792, 26306, 26826, 26890, 26954, 27468, 27500, 28038, 28554, 29086, 29630, | ||
1244 | 30150, 30214 | ||
1245 | }; | ||
1246 | |||
1247 | DCAVLC ff_dca_vlc_bit_allocation; | ||
1248 | DCAVLC ff_dca_vlc_transition_mode; | ||
1249 | DCAVLC ff_dca_vlc_scale_factor; | ||
1250 | DCAVLC ff_dca_vlc_quant_index[DCA_CODE_BOOKS]; | ||
1251 | |||
1252 | VLC ff_dca_vlc_tnl_grp[5]; | ||
1253 | VLC ff_dca_vlc_tnl_scf; | ||
1254 | VLC ff_dca_vlc_damp; | ||
1255 | VLC ff_dca_vlc_dph; | ||
1256 | VLC ff_dca_vlc_fst_rsd_amp; | ||
1257 | VLC ff_dca_vlc_rsd_apprx; | ||
1258 | VLC ff_dca_vlc_rsd_amp; | ||
1259 | VLC ff_dca_vlc_avg_g3; | ||
1260 | VLC ff_dca_vlc_st_grid; | ||
1261 | VLC ff_dca_vlc_grid_2; | ||
1262 | VLC ff_dca_vlc_grid_3; | ||
1263 | VLC ff_dca_vlc_rsd; | ||
1264 | |||
1265 | 47 | av_cold void ff_dca_init_vlcs(void) | |
1266 | { | ||
1267 | static VLCElem dca_table[30214]; | ||
1268 | 47 | int i, j, k = 0; | |
1269 | |||
1270 | #define DCA_INIT_VLC(vlc, a, b, c, d) \ | ||
1271 | do { \ | ||
1272 | vlc.table = &dca_table[vlc_offs[k]]; \ | ||
1273 | vlc.table_allocated = vlc_offs[k + 1] - vlc_offs[k]; \ | ||
1274 | init_vlc(&vlc, a, b, c, 1, 1, d, 2, 2, INIT_VLC_USE_NEW_STATIC); \ | ||
1275 | k++; \ | ||
1276 | } while (0) | ||
1277 | |||
1278 | 47 | ff_dca_vlc_bit_allocation.offset = 1; | |
1279 | 47 | ff_dca_vlc_bit_allocation.max_depth = 2; | |
1280 |
2/2✓ Branch 0 taken 235 times.
✓ Branch 1 taken 47 times.
|
282 | for (i = 0; i < 5; i++) |
1281 | 235 | DCA_INIT_VLC(ff_dca_vlc_bit_allocation.vlc[i], bitalloc_12_vlc_bits[i], 12, | |
1282 | bitalloc_12_bits[i], bitalloc_12_codes[i]); | ||
1283 | |||
1284 | 47 | ff_dca_vlc_scale_factor.offset = -64; | |
1285 | 47 | ff_dca_vlc_scale_factor.max_depth = 2; | |
1286 |
2/2✓ Branch 0 taken 235 times.
✓ Branch 1 taken 47 times.
|
282 | for (i = 0; i < 5; i++) |
1287 | 235 | DCA_INIT_VLC(ff_dca_vlc_scale_factor.vlc[i], SCALES_VLC_BITS, 129, | |
1288 | scales_bits[i], scales_codes[i]); | ||
1289 | |||
1290 | 47 | ff_dca_vlc_transition_mode.offset = 0; | |
1291 | 47 | ff_dca_vlc_transition_mode.max_depth = 1; | |
1292 |
2/2✓ Branch 0 taken 188 times.
✓ Branch 1 taken 47 times.
|
235 | for (i = 0; i < 4; i++) |
1293 | 188 | DCA_INIT_VLC(ff_dca_vlc_transition_mode.vlc[i], tmode_vlc_bits[i], 4, | |
1294 | tmode_bits[i], tmode_codes[i]); | ||
1295 | |||
1296 |
2/2✓ Branch 0 taken 470 times.
✓ Branch 1 taken 47 times.
|
517 | for (i = 0; i < DCA_CODE_BOOKS; i++) { |
1297 | 470 | ff_dca_vlc_quant_index[i].offset = bitalloc_offsets[i]; | |
1298 |
2/2✓ Branch 0 taken 235 times.
✓ Branch 1 taken 235 times.
|
470 | ff_dca_vlc_quant_index[i].max_depth = 1 + (i > 4); |
1299 |
2/2✓ Branch 0 taken 2256 times.
✓ Branch 1 taken 470 times.
|
2726 | for (j = 0; bitalloc_codes[i][j]; j++) |
1300 | 2256 | DCA_INIT_VLC(ff_dca_vlc_quant_index[i].vlc[j], bitalloc_maxbits[i][j], | |
1301 | bitalloc_sizes[i], bitalloc_bits[i][j], bitalloc_codes[i][j]); | ||
1302 | } | ||
1303 | |||
1304 | #define LBR_INIT_VLC(vlc, tab, nb_bits) \ | ||
1305 | do { \ | ||
1306 | vlc.table = &dca_table[vlc_offs[k]]; \ | ||
1307 | vlc.table_allocated = vlc_offs[k + 1] - vlc_offs[k]; \ | ||
1308 | ff_init_vlc_sparse(&vlc, nb_bits, FF_ARRAY_ELEMS(tab##_codes), \ | ||
1309 | &tab##_bitvals[0], 2, 1, \ | ||
1310 | tab##_codes, 2, 2, \ | ||
1311 | &tab##_bitvals[1], 2, 1, \ | ||
1312 | INIT_VLC_LE | INIT_VLC_USE_NEW_STATIC); \ | ||
1313 | k++; \ | ||
1314 | } while (0) | ||
1315 | |||
1316 | 47 | LBR_INIT_VLC(ff_dca_vlc_tnl_grp[0], tnl_grp_0, 9); | |
1317 | 47 | LBR_INIT_VLC(ff_dca_vlc_tnl_grp[1], tnl_grp_1, 9); | |
1318 | 47 | LBR_INIT_VLC(ff_dca_vlc_tnl_grp[2], tnl_grp_2, 9); | |
1319 | 47 | LBR_INIT_VLC(ff_dca_vlc_tnl_grp[3], tnl_grp_3, 9); | |
1320 | 47 | LBR_INIT_VLC(ff_dca_vlc_tnl_grp[4], tnl_grp_4, 9); | |
1321 | 47 | LBR_INIT_VLC(ff_dca_vlc_tnl_scf, tnl_scf, 9); | |
1322 | 47 | LBR_INIT_VLC(ff_dca_vlc_damp, damp, 6); | |
1323 | 47 | LBR_INIT_VLC(ff_dca_vlc_dph, dph, 6); | |
1324 | 47 | LBR_INIT_VLC(ff_dca_vlc_fst_rsd_amp, fst_rsd_amp, 9); | |
1325 | 47 | LBR_INIT_VLC(ff_dca_vlc_rsd_apprx, rsd_apprx, 5); | |
1326 | 47 | LBR_INIT_VLC(ff_dca_vlc_rsd_amp, rsd_amp, 9); | |
1327 | 47 | LBR_INIT_VLC(ff_dca_vlc_avg_g3, avg_g3, 9); | |
1328 | 47 | LBR_INIT_VLC(ff_dca_vlc_st_grid, st_grid, 9); | |
1329 | 47 | LBR_INIT_VLC(ff_dca_vlc_grid_2, grid_2, 9); | |
1330 | 47 | LBR_INIT_VLC(ff_dca_vlc_grid_3, grid_3, 9); | |
1331 | 47 | LBR_INIT_VLC(ff_dca_vlc_rsd, rsd, 6); | |
1332 | 47 | } | |
1333 | |||
1334 | 374950 | uint32_t ff_dca_vlc_calc_quant_bits(int *values, uint8_t n, uint8_t sel, uint8_t table) | |
1335 | { | ||
1336 | uint8_t i, id; | ||
1337 | 374950 | uint32_t sum = 0; | |
1338 |
2/2✓ Branch 0 taken 5999200 times.
✓ Branch 1 taken 374950 times.
|
6374150 | for (i = 0; i < n; i++) { |
1339 | 5999200 | id = values[i] - bitalloc_offsets[table]; | |
1340 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 5999200 times.
|
5999200 | av_assert0(id < bitalloc_sizes[table]); |
1341 | 5999200 | sum += bitalloc_bits[table][sel][id]; | |
1342 | } | ||
1343 | 374950 | return sum; | |
1344 | } | ||
1345 | |||
1346 | 16068 | void ff_dca_vlc_enc_quant(PutBitContext *pb, int *values, uint8_t n, uint8_t sel, uint8_t table) | |
1347 | { | ||
1348 | uint8_t i, id; | ||
1349 |
2/2✓ Branch 0 taken 128544 times.
✓ Branch 1 taken 16068 times.
|
144612 | for (i = 0; i < n; i++) { |
1350 | 128544 | id = values[i] - bitalloc_offsets[table]; | |
1351 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 128544 times.
|
128544 | av_assert0(id < bitalloc_sizes[table]); |
1352 | 128544 | put_bits(pb, bitalloc_bits[table][sel][id], bitalloc_codes[table][sel][id]); | |
1353 | } | ||
1354 | 16068 | } | |
1355 | |||
1356 | ✗ | uint32_t ff_dca_vlc_calc_alloc_bits(int *values, uint8_t n, uint8_t sel) | |
1357 | { | ||
1358 | uint8_t i, id; | ||
1359 | ✗ | uint32_t sum = 0; | |
1360 | ✗ | for (i = 0; i < n; i++) { | |
1361 | ✗ | id = values[i] - 1; | |
1362 | ✗ | sum += bitalloc_12_bits[sel][id]; | |
1363 | } | ||
1364 | ✗ | return sum; | |
1365 | } | ||
1366 | |||
1367 | ✗ | void ff_dca_vlc_enc_alloc(PutBitContext *pb, int *values, uint8_t n, uint8_t sel) | |
1368 | { | ||
1369 | uint8_t i, id; | ||
1370 | ✗ | for (i = 0; i < n; i++) { | |
1371 | ✗ | id = values[i] - 1; | |
1372 | ✗ | put_bits(pb, bitalloc_12_bits[sel][id], bitalloc_12_codes[sel][id]); | |
1373 | } | ||
1374 | } | ||
1375 |