3 * Copyright (c) 2007 SmartJog S.A., Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
5 * This file is part of Libav.
7 * Libav is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * Libav is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with Libav; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 #include "dnxhddata.h"
24 #include "libavutil/common.h"
26 /* The quantization tables below are in zigzag order! */
28 /* Used in CID 1235, 1256 */
29 static const uint8_t dnxhd_1235_luma_weight[] = {
30 0, 32, 32, 32, 33, 32, 32, 32,
31 32, 31, 32, 33, 33, 33, 33, 35,
32 36, 36, 34, 34, 36, 37, 37, 36,
33 36, 35, 36, 38, 39, 39, 37, 36,
34 37, 37, 39, 41, 42, 41, 39, 39,
35 40, 41, 42, 43, 42, 42, 41, 41,
36 41, 44, 47, 46, 46, 48, 51, 51,
37 50, 50, 53, 55, 55, 56, 60, 60,
40 /* Used in CID 1235, 1256 */
41 static const uint8_t dnxhd_1235_chroma_weight[] = {
42 0, 32, 33, 34, 34, 33, 34, 35,
43 37, 40, 43, 42, 39, 38, 39, 41,
44 43, 44, 47, 50, 55, 61, 63, 56,
45 48, 46, 49, 54, 59, 58, 55, 58,
46 63, 65, 67, 74, 84, 82, 75, 72,
47 70, 74, 84, 87, 87, 94, 93, 81,
48 75, 78, 83, 89, 91, 86, 82, 85,
49 90, 90, 85, 79, 73, 73, 73, 73,
52 /* Used in CID 1237, 1253, 1259 */
53 static const uint8_t dnxhd_1237_luma_weight[] = {
54 0, 32, 33, 34, 34, 36, 37, 36,
55 36, 37, 38, 38, 38, 39, 41, 44,
56 43, 41, 40, 41, 46, 49, 47, 46,
57 47, 49, 51, 54, 60, 62, 59, 55,
58 54, 56, 58, 61, 65, 66, 64, 63,
59 66, 73, 78, 79, 80, 79, 78, 78,
60 82, 87, 89, 90, 93, 95, 96, 97,
61 97, 100, 104, 102, 98, 98, 99, 99,
64 /* Used in CID 1237, 1253, 1259 */
65 static const uint8_t dnxhd_1237_chroma_weight[] = {
66 0, 32, 36, 39, 39, 38, 39, 41,
67 45, 51, 57, 58, 53, 48, 47, 51,
68 55, 58, 66, 75, 81, 83, 82, 78,
69 73, 72, 74, 77, 83, 85, 83, 82,
70 89, 99, 96, 90, 94, 97, 99, 105,
71 109, 105, 95, 89, 92, 95, 94, 93,
72 92, 88, 89, 90, 93, 95, 96, 97,
73 97, 100, 104, 102, 98, 98, 99, 99,
76 static const uint8_t dnxhd_1238_luma_weight[] = {
77 0, 32, 32, 33, 34, 33, 33, 33,
78 33, 33, 33, 33, 33, 35, 37, 37,
79 36, 36, 35, 36, 38, 38, 36, 35,
80 36, 37, 38, 41, 42, 41, 39, 38,
81 38, 38, 39, 41, 42, 41, 39, 39,
82 40, 41, 43, 44, 44, 44, 44, 44,
83 45, 47, 47, 47, 49, 50, 51, 51,
84 51, 53, 55, 57, 58, 59, 57, 57,
87 static const uint8_t dnxhd_1238_chroma_weight[] = {
88 0, 32, 35, 35, 35, 34, 34, 35,
89 39, 43, 45, 45, 41, 39, 40, 41,
90 42, 44, 48, 55, 59, 63, 65, 59,
91 53, 52, 52, 55, 61, 62, 58, 58,
92 63, 66, 66, 65, 70, 74, 70, 66,
93 65, 68, 75, 77, 74, 74, 77, 76,
94 73, 73, 73, 73, 76, 80, 89, 90,
95 82, 77, 80, 86, 84, 82, 82, 82,
98 static const uint8_t dnxhd_1241_luma_weight[] = {
99 0, 32, 33, 34, 34, 35, 36, 37,
100 36, 37, 38, 38, 38, 39, 39, 40,
101 40, 38, 38, 39, 38, 37, 39, 41,
102 41, 42, 43, 45, 45, 46, 47, 46,
103 45, 43, 39, 37, 37, 40, 44, 45,
104 45, 46, 46, 46, 47, 47, 46, 44,
105 42, 43, 45, 47, 48, 49, 50, 49,
106 48, 46, 47, 48, 48, 49, 49, 49,
109 static const uint8_t dnxhd_1241_chroma_weight[] = {
110 0, 32, 36, 38, 37, 37, 40, 41,
111 40, 40, 42, 42, 41, 41, 41, 41,
112 42, 43, 44, 44, 45, 46, 46, 45,
113 44, 45, 45, 45, 45, 46, 47, 46,
114 45, 44, 42, 41, 43, 45, 45, 47,
115 48, 48, 48, 46, 47, 47, 46, 47,
116 46, 45, 45, 47, 48, 49, 50, 49,
117 48, 46, 48, 49, 48, 49, 49, 49,
120 static const uint8_t dnxhd_1242_luma_weight[] = {
121 0, 32, 33, 33, 34, 35, 36, 35,
122 33, 33, 35, 36, 37, 37, 38, 37,
123 37, 37, 36, 37, 37, 37, 38, 39,
124 37, 36, 37, 40, 42, 45, 46, 44,
125 41, 42, 44, 45, 47, 49, 50, 48,
126 46, 48, 49, 50, 52, 52, 50, 49,
127 47, 48, 50, 50, 51, 51, 50, 49,
128 49, 51, 52, 51, 49, 47, 47, 47,
131 static const uint8_t dnxhd_1242_chroma_weight[] = {
132 0, 32, 37, 42, 45, 45, 45, 44,
133 38, 37, 40, 42, 44, 49, 51, 47,
134 41, 40, 43, 44, 46, 48, 51, 54,
135 51, 47, 47, 45, 47, 50, 51, 49,
136 46, 47, 49, 47, 50, 55, 55, 51,
137 48, 49, 51, 51, 52, 52, 54, 54,
138 49, 49, 52, 53, 54, 54, 53, 53,
139 55, 59, 63, 62, 60, 60, 60, 60,
142 static const uint8_t dnxhd_1243_luma_weight[] = {
143 0, 32, 32, 33, 33, 35, 35, 35,
144 35, 35, 35, 35, 34, 35, 38, 40,
145 39, 37, 37, 37, 36, 35, 36, 38,
146 40, 41, 42, 44, 45, 44, 42, 41,
147 40, 38, 36, 36, 37, 38, 40, 43,
148 44, 45, 45, 45, 45, 45, 45, 41,
149 39, 41, 45, 47, 47, 48, 48, 48,
150 46, 44, 45, 47, 47, 48, 47, 47,
153 static const uint8_t dnxhd_1243_chroma_weight[] = {
154 0, 32, 36, 37, 36, 37, 39, 39,
155 41, 43, 43, 42, 41, 41, 41, 42,
156 43, 43, 43, 44, 44, 44, 46, 47,
157 46, 45, 45, 45, 45, 46, 44, 44,
158 45, 44, 42, 41, 43, 46, 45, 44,
159 45, 45, 45, 46, 46, 46, 45, 44,
160 45, 44, 45, 47, 47, 48, 49, 48,
161 46, 45, 46, 47, 47, 48, 47, 47,
164 static const uint8_t dnxhd_1250_luma_weight[] = {
165 0, 32, 32, 33, 34, 35, 35, 35,
166 34, 34, 35, 36, 36, 36, 36, 36,
167 37, 38, 38, 38, 38, 38, 39, 39,
168 38, 38, 39, 41, 43, 43, 42, 41,
169 40, 40, 39, 40, 41, 41, 39, 39,
170 40, 42, 47, 50, 47, 45, 46, 46,
171 44, 45, 46, 47, 49, 54, 58, 54,
172 48, 49, 54, 57, 60, 62, 63, 63,
175 static const uint8_t dnxhd_1250_chroma_weight[] = {
176 0, 32, 35, 36, 36, 35, 36, 39,
177 41, 43, 45, 44, 41, 39, 40, 42,
178 43, 43, 45, 48, 49, 51, 52, 50,
179 50, 51, 51, 51, 51, 52, 53, 54,
180 51, 49, 51, 52, 52, 56, 57, 55,
181 54, 54, 55, 56, 55, 58, 58, 58,
182 60, 61, 62, 62, 59, 57, 58, 58,
183 61, 59, 59, 59, 60, 62, 63, 63,
186 static const uint8_t dnxhd_1251_luma_weight[] = {
187 0, 32, 32, 34, 34, 34, 34, 35,
188 35, 35, 36, 37, 36, 36, 35, 36,
189 38, 38, 38, 38, 38, 38, 38, 38,
190 38, 38, 39, 41, 44, 43, 41, 40,
191 40, 40, 40, 39, 40, 41, 40, 39,
192 40, 43, 46, 46, 44, 44, 44, 42,
193 41, 43, 46, 48, 50, 55, 58, 53,
194 48, 50, 55, 58, 61, 62, 62, 62,
197 static const uint8_t dnxhd_1251_chroma_weight[] = {
198 0, 32, 35, 36, 36, 35, 36, 39,
199 41, 43, 45, 44, 41, 39, 40, 42,
200 43, 43, 45, 48, 48, 48, 50, 50,
201 50, 51, 51, 51, 51, 52, 53, 54,
202 51, 49, 51, 52, 52, 56, 57, 55,
203 54, 54, 55, 56, 55, 58, 58, 58,
204 60, 61, 62, 62, 59, 57, 58, 58,
205 61, 59, 59, 59, 61, 62, 62, 62,
208 /* Used in CID 1252, 1258 */
209 static const uint8_t dnxhd_1252_luma_weight[] = {
210 0, 32, 34, 35, 36, 36, 36, 37,
211 36, 37, 39, 40, 41, 40, 40, 40,
212 41, 41, 42, 41, 41, 43, 44, 44,
213 45, 46, 48, 55, 60, 57, 52, 50,
214 49, 49, 52, 52, 53, 55, 58, 62,
215 65, 73, 82, 82, 80, 78, 73, 68,
216 71, 82, 90, 90, 88, 87, 90, 95,
217 100, 107, 103, 97, 95, 93, 99, 99,
220 /* Used in CID 1252, 1258 */
221 static const uint8_t dnxhd_1252_chroma_weight[] = {
222 0, 32, 35, 36, 37, 37, 38, 40,
223 42, 46, 49, 50, 50, 49, 49, 53,
224 56, 56, 57, 58, 60, 62, 64, 65,
225 63, 64, 64, 65, 66, 65, 67, 71,
226 72, 74, 74, 74, 74, 77, 81, 78,
227 72, 73, 82, 85, 89, 88, 84, 80,
228 90, 100, 90, 90, 88, 87, 90, 95,
229 114, 128, 125, 129, 134, 125, 116, 116,
232 static const uint8_t dnxhd_1260_luma_weight[] = {
233 0, 32, 33, 34, 36, 37, 37, 36,
234 34, 33, 34, 35, 37, 38, 40, 41,
235 40, 39, 38, 37, 34, 33, 34, 37,
236 40, 44, 48, 52, 53, 49, 47, 45,
237 42, 38, 36, 36, 38, 41, 43, 44,
238 46, 49, 52, 54, 54, 49, 44, 44,
239 44, 47, 51, 51, 52, 51, 48, 50,
240 52, 53, 53, 50, 50, 54, 54, 54,
243 static const uint8_t dnxhd_1260_chroma_weight[] = {
244 0, 32, 34, 38, 42, 40, 38, 36,
245 35, 35, 38, 42, 43, 43, 42, 40,
246 38, 39, 43, 43, 42, 41, 43, 43,
247 42, 44, 46, 45, 45, 46, 47, 46,
248 44, 44, 45, 46, 46, 46, 50, 50,
249 47, 47, 49, 49, 49, 49, 51, 53,
250 51, 49, 53, 57, 56, 52, 50, 52,
251 56, 56, 53, 53, 53, 54, 58, 58,
254 /* Used in CID 1235, 1241, 1250, 1256 */
255 static const uint8_t dnxhd_1235_dc_codes[14] = {
256 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
259 /* Used in CID 1235, 1241, 1250, 1256 */
260 static const uint8_t dnxhd_1235_dc_bits[14] = {
261 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
264 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */
265 static const uint8_t dnxhd_1237_dc_codes[12] = {
266 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
269 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */
270 static const uint8_t dnxhd_1237_dc_bits[12] = {
271 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
274 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
275 static const uint16_t dnxhd_1237_ac_codes[257] = {
276 0, 1, 4, 5, 12, 26, 27, 56,
277 57, 58, 59, 120, 121, 244, 245, 246,
278 247, 248, 498, 499, 500, 501, 502, 1006,
279 1007, 1008, 1009, 1010, 1011, 2024, 2025, 2026,
280 2027, 2028, 2029, 2030, 2031, 4064, 4065, 4066,
281 4067, 4068, 4069, 4070, 4071, 4072, 4073, 8148,
282 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
283 8157, 8158, 16318, 16319, 16320, 16321, 16322, 16323,
284 16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
285 16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
286 32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
287 32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
288 65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
289 65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
290 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
291 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
292 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
293 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
294 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
295 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
296 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
297 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
298 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
299 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
300 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
301 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
302 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
303 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
304 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
305 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
306 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
307 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
311 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
312 static const uint8_t dnxhd_1237_ac_bits[257] = {
313 2, 2, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8,
314 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
315 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
316 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
317 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
318 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
319 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
320 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
321 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
322 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
323 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
324 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
325 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
326 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
327 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
328 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
332 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
333 static const uint8_t dnxhd_1237_ac_level[257] = {
334 1, 1, 2, 0, 3, 4, 2, 5, 6, 7, 3, 8, 9, 10, 11, 12,
335 4, 5, 13, 14, 15, 16, 6, 17, 18, 19, 20, 21, 7, 22, 23, 24,
336 25, 26, 27, 8, 9, 28, 29, 30, 31, 32, 33, 34, 10, 11, 12, 35,
337 36, 37, 38, 39, 40, 41, 13, 14, 15, 16, 42, 43, 44, 45, 46, 47,
338 48, 49, 50, 51, 52, 17, 18, 19, 20, 21, 53, 54, 55, 56, 57, 58,
339 59, 60, 61, 64, 1, 22, 23, 24, 25, 26, 27, 62, 63, 2, 3, 4,
340 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
341 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
342 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
343 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
344 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
345 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
346 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
347 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
348 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
349 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
353 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
354 static const uint8_t dnxhd_1237_ac_run_flag[257] = {
355 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
356 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
357 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
358 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
359 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
360 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
361 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
363 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
365 1, 1, 1, 1, 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, 1, 1,
367 1, 1, 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, 1, 1,
369 1, 1, 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, 1, 1,
374 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
375 static const uint8_t dnxhd_1237_ac_index_flag[257] = {
376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
377 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
381 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
382 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
383 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
384 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
385 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
388 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
389 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
390 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
391 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
395 /* Used in CID 1238, 1243 */
396 static const uint16_t dnxhd_1238_ac_codes[257] = {
397 0, 1, 4, 10, 11, 24, 25, 26,
398 54, 55, 56, 57, 116, 117, 118, 119,
399 240, 241, 242, 243, 244, 245, 492, 493,
400 494, 495, 496, 497, 498, 499, 1000, 1001,
401 1002, 1003, 1004, 1005, 1006, 1007, 1008, 2018,
402 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
403 2027, 4056, 4057, 4058, 4059, 4060, 4061, 4062,
404 4063, 4064, 4065, 4066, 4067, 4068, 4069, 8140,
405 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148,
406 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
407 16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
408 16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
409 16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
410 16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
411 32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
412 32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
413 32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
414 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
415 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
416 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
417 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
418 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
419 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
420 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
421 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
422 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
423 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
424 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
425 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
426 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
427 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
428 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
432 /* Used in CID 1238, 1243 */
433 static const uint8_t dnxhd_1238_ac_bits[257] = {
434 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
435 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,
436 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
437 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
438 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
439 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
440 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
441 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
442 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
443 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
444 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
445 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
446 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
447 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
448 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
449 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
453 /* Used in CID 1238, 1243 */
454 static const uint8_t dnxhd_1238_ac_level[257] = {
455 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
456 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 22, 6, 7, 23, 24,
457 25, 26, 27, 28, 29, 8, 9, 30, 31, 32, 33, 34, 35, 36, 37, 10,
458 11, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 12, 13, 14, 49,
459 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 15, 16, 17, 18,
460 62, 63, 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
461 14, 15, 16, 19, 20, 21, 22, 23, 24, 17, 18, 19, 20, 21, 22, 23,
462 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 25,
463 26, 27, 28, 29, 30, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49,
464 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 31,
465 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
466 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
467 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
468 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
469 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
470 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
474 /* Used in CID 1238, 1243 */
475 static const uint8_t dnxhd_1238_ac_run_flag[257] = {
476 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
477 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
478 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
479 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
482 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
483 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
484 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
486 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
487 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
488 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
489 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
490 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
491 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
495 /* Used in CID 1238, 1243 */
496 static const uint8_t dnxhd_1238_ac_index_flag[257] = {
497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
500 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
502 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
503 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
504 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
505 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
506 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
509 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
510 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
511 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
512 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
516 /* Used in CID 1235, 1241, 1256 */
517 static const uint16_t dnxhd_1235_ac_codes[257] = {
518 0, 1, 4, 10, 11, 24, 25, 26,
519 54, 55, 56, 57, 116, 117, 118, 119,
520 240, 241, 242, 243, 244, 245, 492, 493,
521 494, 495, 496, 497, 498, 998, 999, 1000,
522 1001, 1002, 1003, 1004, 1005, 1006, 1007, 2016,
523 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
524 2025, 2026, 4054, 4055, 4056, 4057, 4058, 4059,
525 4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067,
526 4068, 4069, 8140, 8141, 8142, 8143, 8144, 8145,
527 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153,
528 8154, 8155, 8156, 8157, 16316, 16317, 16318, 16319,
529 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
530 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
531 16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
532 32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
533 32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
534 32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
535 32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
536 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
537 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
538 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
539 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
540 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
541 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
542 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
543 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
544 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
545 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
546 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
547 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
548 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
549 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
553 /* Used in CID 1235, 1241, 1256 */
554 static const uint8_t dnxhd_1235_ac_bits[257] = {
555 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
556 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
557 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
558 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
559 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
560 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
561 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
562 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
563 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
564 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
565 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
566 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
567 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
568 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
569 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
570 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
574 /* Used in CID 1235, 1241, 1256 */
575 static const uint8_t dnxhd_1235_ac_level[257] = {
576 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
577 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 6, 7, 22, 23, 24,
578 25, 26, 27, 28, 29, 8, 9, 30, 31, 32, 33, 34, 35, 36, 37, 38,
579 10, 11, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 12, 13,
580 14, 15, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 1,
581 16, 17, 18, 19, 64, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
582 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 18, 19, 20, 21, 22, 23,
583 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
584 40, 41, 42, 25, 26, 27, 28, 29, 30, 31, 32, 43, 44, 45, 46, 47,
585 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
586 64, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
587 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
588 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
589 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
590 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
591 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
595 /* Used in CID 1235, 1241, 1256 */
596 static const uint8_t dnxhd_1235_ac_run_flag[257] = {
597 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
598 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
599 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
600 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
601 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
602 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
603 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
605 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
607 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
608 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
609 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
610 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
611 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
612 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
616 /* Used in CID 1235, 1241, 1256 */
617 static const uint8_t dnxhd_1235_ac_index_flag[257] = {
618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
623 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
624 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
625 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
626 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
627 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
628 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
630 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
631 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
632 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
633 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
637 static const uint16_t dnxhd_1250_ac_codes[257] = {
638 0, 1, 4, 10, 11, 24, 25, 26,
639 54, 55, 56, 57, 116, 117, 118, 119,
640 240, 241, 242, 243, 244, 245, 492, 493,
641 494, 495, 496, 497, 498, 998, 999, 1000,
642 1001, 1002, 1003, 1004, 1005, 1006, 2014, 2015,
643 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
644 2024, 2025, 4052, 4053, 4054, 4055, 4056, 4057,
645 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065,
646 4066, 4067, 8136, 8137, 8138, 8139, 8140, 8141,
647 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149,
648 8150, 8151, 8152, 8153, 8154, 8155, 8156, 16314,
649 16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
650 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
651 16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
652 32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
653 32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
654 32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
655 32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
656 32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
657 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
658 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
659 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
660 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
661 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
662 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
663 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
664 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
665 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
666 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
667 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
668 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
669 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
672 static const uint8_t dnxhd_1250_ac_bits[257] = {
673 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
674 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
675 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
676 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
677 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
678 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
679 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
680 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
681 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
682 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
683 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
684 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
685 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
686 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
687 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
688 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
691 static const uint8_t dnxhd_1250_ac_level[257] = {
692 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
693 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 22, 6, 23, 24, 25,
694 26, 27, 28, 29, 7, 8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
695 9, 10, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 11,
696 12, 13, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 1, 2,
697 3, 4, 5, 14, 15, 16, 17, 6, 7, 8, 9, 10, 11, 12, 13, 14,
698 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 18, 19, 20, 21,
699 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
700 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 22, 23, 24,
701 25, 26, 27, 54, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
702 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
703 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
704 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
705 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
706 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
707 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
710 static const uint8_t dnxhd_1250_ac_run_flag[257] = {
711 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
712 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
713 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
714 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
715 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
716 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
717 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
720 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
721 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
722 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
723 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
724 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
725 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
726 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
729 static const uint8_t dnxhd_1250_ac_index_flag[257] = {
730 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
732 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
733 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
735 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
736 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
737 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
738 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
739 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
740 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
742 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
743 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
744 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
745 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
749 static const uint16_t dnxhd_1251_ac_codes[257] = {
750 0, 1, 4, 10, 11, 24, 25, 26,
751 54, 55, 56, 57, 116, 117, 118, 119,
752 240, 241, 242, 243, 244, 245, 492, 493,
753 494, 495, 496, 497, 996, 997, 998, 999,
754 1000, 1001, 1002, 1003, 1004, 1005, 2012, 2013,
755 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
756 2022, 2023, 2024, 2025, 4052, 4053, 4054, 4055,
757 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063,
758 4064, 4065, 4066, 8134, 8135, 8136, 8137, 8138,
759 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146,
760 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154,
761 8155, 8156, 16314, 16315, 16316, 16317, 16318, 16319,
762 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
763 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
764 16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
765 32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
766 32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
767 32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
768 32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
769 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
770 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
771 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
772 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
773 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
774 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
775 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
776 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
777 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
778 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
779 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
780 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
781 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
785 static const uint8_t dnxhd_1251_ac_bits[257] = {
786 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
787 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
788 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
789 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
790 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
791 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
792 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
793 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
794 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
795 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
796 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
797 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
798 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
799 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
800 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
801 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
805 static const uint8_t dnxhd_1251_ac_level[257] = {
806 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
807 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 6, 22, 23, 24, 25,
808 26, 27, 28, 29, 7, 8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
809 40, 9, 10, 11, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
810 12, 13, 14, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 1,
811 2, 3, 4, 5, 6, 7, 8, 15, 16, 17, 9, 10, 11, 12, 13, 14,
812 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 18,
813 19, 20, 21, 22, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
814 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
815 58, 23, 24, 25, 26, 27, 28, 59, 60, 61, 62, 63, 64, 29, 30, 31,
816 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
817 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
818 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
819 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
820 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
821 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
825 static const uint8_t dnxhd_1251_ac_run_flag[257] = {
826 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
827 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
828 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
829 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
830 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
831 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
832 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
833 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
835 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
836 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
837 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
838 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
839 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
840 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
841 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
845 static const uint8_t dnxhd_1251_ac_index_flag[257] = {
846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
850 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
851 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
852 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
853 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
854 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
855 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
858 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
859 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
860 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
861 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
865 /* Used in CID 1252, 1258 */
866 static const uint16_t dnxhd_1252_ac_codes[257] = {
867 0, 1, 4, 10, 11, 12, 26, 27,
868 56, 57, 58, 118, 119, 120, 242, 243,
869 244, 245, 246, 247, 496, 497, 498, 499,
870 500, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
871 1009, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
872 2027, 2028, 2029, 4060, 4061, 4062, 4063, 4064,
873 4065, 4066, 4067, 4068, 4069, 4070, 4071, 8144,
874 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152,
875 8153, 8154, 8155, 8156, 8157, 8158, 16318, 16319,
876 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
877 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
878 32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
879 32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
880 32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
881 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
882 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
883 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
884 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
885 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
886 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
887 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
888 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
889 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
890 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
891 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
892 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
893 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
894 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
895 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
896 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
897 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
898 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
902 /* Used in CID 1252, 1258 */
903 static const uint8_t dnxhd_1252_ac_bits[257] = {
904 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
905 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
906 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
907 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
908 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
909 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
910 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
911 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
912 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
913 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
914 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
915 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
916 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
917 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
918 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
919 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
923 /* Used in CID 1252, 1258 */
924 static const uint8_t dnxhd_1252_ac_level[257] = {
925 1, 1, 2, 3, 2, 0, 4, 5, 6, 7, 3, 8, 9, 10, 11, 12,
926 13, 14, 4, 5, 15, 16, 17, 18, 6, 19, 20, 21, 22, 23, 24, 7,
927 8, 25, 26, 27, 28, 29, 30, 31, 32, 9, 10, 33, 34, 35, 36, 37,
928 38, 39, 40, 41, 11, 12, 13, 42, 43, 44, 45, 46, 47, 48, 49, 50,
929 51, 52, 53, 14, 15, 16, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
930 64, 1, 2, 3, 17, 18, 19, 20, 4, 5, 6, 7, 8, 9, 10, 11,
931 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 22,
932 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
933 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
934 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 26, 27, 28, 29, 30, 31,
935 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
936 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
937 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
938 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
939 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
940 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
944 /* Used in CID 1252, 1258 */
945 static const uint8_t dnxhd_1252_ac_run_flag[257] = {
946 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
947 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,
948 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
949 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
950 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
951 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
956 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
957 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
958 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
959 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
960 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
961 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
965 /* Used in CID 1252, 1258 */
966 static const uint8_t dnxhd_1252_ac_index_flag[257] = {
967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
972 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
973 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1,
974 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
975 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
976 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
978 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
979 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
980 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
981 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
982 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
986 /* Used in CID 1235, 1238, 1241, 1256 */
987 static const uint16_t dnxhd_1235_run_codes[62] = {
988 0, 4, 10, 11, 24, 25, 26, 27,
989 56, 57, 58, 59, 120, 242, 486, 487,
990 488, 489, 980, 981, 982, 983, 984, 985,
991 986, 987, 988, 989, 990, 991, 992, 993,
992 994, 995, 996, 997, 998, 999, 1000, 1001,
993 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
994 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
995 1018, 1019, 1020, 1021, 1022, 1023,
998 /* Used in CID 1235, 1238, 1241, 1243, 1256 */
999 static const uint8_t dnxhd_1235_run_bits[62] = {
1000 1, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9,
1001 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1002 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1003 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1006 /* Used in CID 1235, 1241, 1256 */
1007 static const uint8_t dnxhd_1235_run[62] = {
1008 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1009 18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1010 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1011 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1014 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
1015 static const uint16_t dnxhd_1237_run_codes[62] = {
1016 0, 4, 10, 11, 24, 25, 26, 54,
1017 55, 56, 57, 58, 118, 119, 240, 482,
1018 483, 484, 485, 486, 487, 488, 489, 490,
1019 491, 492, 493, 494, 990, 991, 992, 993,
1020 994, 995, 996, 997, 998, 999, 1000, 1001,
1021 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
1022 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
1023 1018, 1019, 1020, 1021, 1022, 1023,
1026 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
1027 static const uint8_t dnxhd_1237_run_bits[62] = {
1028 1, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9,
1029 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
1030 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1031 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1034 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
1035 static const uint8_t dnxhd_1237_run[62] = {
1036 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1037 17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
1038 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
1039 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
1042 static const uint8_t dnxhd_1238_run[62] = {
1043 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1044 20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1045 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1046 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1049 /* Used in CID 1250, 1251, 1252, 1258 */
1050 static const uint16_t dnxhd_1250_run_codes[62] = {
1051 0, 4, 5, 12, 26, 27, 28, 58,
1052 118, 119, 120, 242, 486, 487, 976, 977,
1053 978, 979, 980, 981, 982, 983, 984, 985,
1054 986, 987, 988, 989, 990, 991, 992, 993,
1055 994, 995, 996, 997, 998, 999, 1000, 1001,
1056 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
1057 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
1058 1018, 1019, 1020, 1021, 1022, 1023,
1061 /* Used in CID 1250, 1251, 1252, 1258 */
1062 static const uint8_t dnxhd_1250_run_bits[62] = {
1063 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
1064 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1065 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1066 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1069 /* Used in CID 1250, 1251, 1252, 1258 */
1070 static const uint8_t dnxhd_1250_run[62] = {
1071 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1072 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1073 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1074 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1077 const CIDEntry ff_dnxhd_cid_table[] = {
1078 { 1235, 1920, 1080, 0, 917504, 917504, 6, 10,
1079 dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
1080 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1081 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1082 dnxhd_1235_ac_run_flag, dnxhd_1235_ac_index_flag,
1083 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1084 { 175, 185, 365, 440 } },
1085 { 1237, 1920, 1080, 0, 606208, 606208, 4, 8,
1086 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1087 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1088 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1089 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1090 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1091 { 115, 120, 145, 240, 290 } },
1092 { 1238, 1920, 1080, 0, 917504, 917504, 4, 8,
1093 dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
1094 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1095 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1096 dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
1097 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1098 { 175, 185, 220, 365, 440 } },
1099 { 1241, 1920, 1080, 1, 917504, 458752, 6, 10,
1100 dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
1101 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1102 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1103 dnxhd_1235_ac_run_flag, dnxhd_1235_ac_index_flag,
1104 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1106 { 1242, 1920, 1080, 1, 606208, 303104, 4, 8,
1107 dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
1108 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1109 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1110 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1111 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1113 { 1243, 1920, 1080, 1, 917504, 458752, 4, 8,
1114 dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
1115 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1116 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1117 dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
1118 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1120 { 1250, 1280, 720, 0, 458752, 458752, 6, 10,
1121 dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
1122 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1123 dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_level,
1124 dnxhd_1250_ac_run_flag, dnxhd_1250_ac_index_flag,
1125 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1127 { 1251, 1280, 720, 0, 458752, 458752, 4, 8,
1128 dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
1129 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1130 dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
1131 dnxhd_1251_ac_run_flag, dnxhd_1251_ac_index_flag,
1132 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1133 { 90, 110, 175, 220 } },
1134 { 1252, 1280, 720, 0, 303104, 303104, 4, 8,
1135 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1136 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1137 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1138 dnxhd_1252_ac_run_flag, dnxhd_1252_ac_index_flag,
1139 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1140 { 60, 75, 115, 145 } },
1141 { 1253, 1920, 1080, 0, 188416, 188416, 4, 8,
1142 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1143 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1144 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1145 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1146 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1147 { 36, 45, 75, 90 } },
1148 { 1256, 1920, 1080, 0, 1835008, 1835008, 6, 10,
1149 dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
1150 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1151 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1152 dnxhd_1235_ac_run_flag, dnxhd_1235_ac_index_flag,
1153 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1154 { 350, 390, 440, 730, 880 } },
1155 { 1258, 960, 720, 0, 212992, 212992, 4, 8,
1156 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1157 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1158 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1159 dnxhd_1252_ac_run_flag, dnxhd_1252_ac_index_flag,
1160 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1161 { 42, 60, 75, 115 } },
1162 { 1259, 1440, 1080, 0, 417792, 417792, 4, 8,
1163 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1164 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1165 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1166 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1167 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1168 { 63, 84, 100, 110 } },
1169 { 1260, 1440, 1080, 1, 835584, 417792, 4, 8,
1170 dnxhd_1260_luma_weight, dnxhd_1260_chroma_weight,
1171 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1172 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1173 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1174 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1175 { 80, 90, 100, 110 } },
1178 int ff_dnxhd_get_cid_table(int cid)
1181 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
1182 if (ff_dnxhd_cid_table[i].cid == cid)
1187 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
1190 int mbs = avctx->bit_rate / 1000000;
1193 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1194 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1195 if (cid->width == avctx->width && cid->height == avctx->height &&
1196 cid->interlaced == !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) &&
1197 cid->bit_depth == bit_depth) {
1198 for (j = 0; j < sizeof(cid->bit_rates); j++) {
1199 if (cid->bit_rates[j] == mbs)
1207 void ff_dnxhd_list_cid(AVCodecContext *avctx)
1211 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1212 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1213 av_log(avctx, AV_LOG_INFO,
1214 "cid %d %ux%u %dbits %s bit rates",
1216 cid->width, cid->height,
1218 cid->interlaced ? "interlaced " :
1220 for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1221 if (!cid->bit_rates[j])
1223 av_log(avctx, AV_LOG_INFO, " %dM",
1226 av_log(avctx, AV_LOG_INFO, "\n");