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 /* Used in CID 1235, 1256 */
27 static const uint8_t dnxhd_1235_luma_weight[] = {
28 0, 32, 32, 32, 33, 35, 38, 39,
29 32, 33, 32, 33, 36, 36, 39, 42,
30 32, 32, 33, 36, 35, 37, 41, 43,
31 31, 33, 34, 36, 36, 40, 42, 48,
32 32, 34, 36, 37, 39, 42, 46, 51,
33 36, 37, 37, 39, 41, 46, 51, 55,
34 37, 39, 41, 41, 47, 50, 55, 56,
35 41, 42, 41, 44, 50, 53, 60, 60
38 static const uint8_t dnxhd_1235_chroma_weight[] = {
39 0, 32, 33, 34, 39, 41, 54, 59,
40 33, 34, 35, 38, 43, 49, 58, 84,
41 34, 37, 39, 44, 46, 55, 74, 87,
42 40, 42, 47, 48, 58, 70, 87, 86,
43 43, 50, 56, 63, 72, 94, 91, 82,
44 55, 63, 65, 75, 93, 89, 85, 73,
45 61, 67, 82, 81, 83, 90, 79, 73,
46 74, 84, 75, 78, 90, 85, 73, 73
49 /* Used in CID 1237, 1253 */
50 static const uint8_t dnxhd_1237_luma_weight[] = {
51 0, 32, 33, 34, 34, 36, 37, 36,
52 36, 37, 38, 38, 38, 39, 41, 44,
53 43, 41, 40, 41, 46, 49, 47, 46,
54 47, 49, 51, 54, 60, 62, 59, 55,
55 54, 56, 58, 61, 65, 66, 64, 63,
56 66, 73, 78, 79, 80, 79, 78, 78,
57 82, 87, 89, 90, 93, 95, 96, 97,
58 97, 100, 104, 102, 98, 98, 99, 99,
61 /* Used in CID 1237, 1253 */
62 static const uint8_t dnxhd_1237_chroma_weight[] = {
63 0, 32, 36, 39, 39, 38, 39, 41,
64 45, 51, 57, 58, 53, 48, 47, 51,
65 55, 58, 66, 75, 81, 83, 82, 78,
66 73, 72, 74, 77, 83, 85, 83, 82,
67 89, 99, 96, 90, 94, 97, 99, 105,
68 109, 105, 95, 89, 92, 95, 94, 93,
69 92, 88, 89, 90, 93, 95, 96, 97,
70 97, 100, 104, 102, 98, 98, 99, 99,
73 static const uint8_t dnxhd_1238_luma_weight[] = {
74 0, 32, 32, 33, 34, 33, 33, 33,
75 33, 33, 33, 33, 33, 35, 37, 37,
76 36, 36, 35, 36, 38, 38, 36, 35,
77 36, 37, 38, 41, 42, 41, 39, 38,
78 38, 38, 39, 41, 42, 41, 39, 39,
79 40, 41, 43, 44, 44, 44, 44, 44,
80 45, 47, 47, 47, 49, 50, 51, 51,
81 51, 53, 55, 57, 58, 59, 57, 57,
84 static const uint8_t dnxhd_1238_chroma_weight[] = {
85 0, 32, 35, 35, 35, 34, 34, 35,
86 39, 43, 45, 45, 41, 39, 40, 41,
87 42, 44, 48, 55, 59, 63, 65, 59,
88 53, 52, 52, 55, 61, 62, 58, 58,
89 63, 66, 66, 65, 70, 74, 70, 66,
90 65, 68, 75, 77, 74, 74, 77, 76,
91 73, 73, 73, 73, 76, 80, 89, 90,
92 82, 77, 80, 86, 84, 82, 82, 82,
95 static const uint8_t dnxhd_1241_luma_weight[] = {
96 0, 32, 33, 34, 34, 35, 36, 37,
97 36, 37, 38, 38, 38, 39, 39, 40,
98 40, 38, 38, 39, 38, 37, 39, 41,
99 41, 42, 43, 45, 45, 46, 47, 46,
100 45, 43, 39, 37, 37, 40, 44, 45,
101 45, 46, 46, 46, 47, 47, 46, 44,
102 42, 43, 45, 47, 48, 49, 50, 49,
103 48, 46, 47, 48, 48, 49, 49, 49,
106 static const uint8_t dnxhd_1241_chroma_weight[] = {
107 0, 32, 36, 38, 37, 37, 40, 41,
108 40, 40, 42, 42, 41, 41, 41, 41,
109 42, 43, 44, 44, 45, 46, 46, 45,
110 44, 45, 45, 45, 45, 46, 47, 46,
111 45, 44, 42, 41, 43, 45, 45, 47,
112 48, 48, 48, 46, 47, 47, 46, 47,
113 46, 45, 45, 47, 48, 49, 50, 49,
114 48, 46, 48, 49, 48, 49, 49, 49,
117 static const uint8_t dnxhd_1242_luma_weight[] = {
118 0, 32, 33, 33, 34, 35, 36, 35,
119 33, 33, 35, 36, 37, 37, 38, 37,
120 37, 37, 36, 37, 37, 37, 38, 39,
121 37, 36, 37, 40, 42, 45, 46, 44,
122 41, 42, 44, 45, 47, 49, 50, 48,
123 46, 48, 49, 50, 52, 52, 50, 49,
124 47, 48, 50, 50, 51, 51, 50, 49,
125 49, 51, 52, 51, 49, 47, 47, 47,
128 static const uint8_t dnxhd_1242_chroma_weight[] = {
129 0, 32, 37, 42, 45, 45, 45, 44,
130 38, 37, 40, 42, 44, 49, 51, 47,
131 41, 40, 43, 44, 46, 48, 51, 54,
132 51, 47, 47, 45, 47, 50, 51, 49,
133 46, 47, 49, 47, 50, 55, 55, 51,
134 48, 49, 51, 51, 52, 52, 54, 54,
135 49, 49, 52, 53, 54, 54, 53, 53,
136 55, 59, 63, 62, 60, 60, 60, 60,
139 static const uint8_t dnxhd_1243_luma_weight[] = {
140 0, 32, 32, 33, 33, 35, 35, 35,
141 35, 35, 35, 35, 34, 35, 38, 40,
142 39, 37, 37, 37, 36, 35, 36, 38,
143 40, 41, 42, 44, 45, 44, 42, 41,
144 40, 38, 36, 36, 37, 38, 40, 43,
145 44, 45, 45, 45, 45, 45, 45, 41,
146 39, 41, 45, 47, 47, 48, 48, 48,
147 46, 44, 45, 47, 47, 48, 47, 47,
150 static const uint8_t dnxhd_1243_chroma_weight[] = {
151 0, 32, 36, 37, 36, 37, 39, 39,
152 41, 43, 43, 42, 41, 41, 41, 42,
153 43, 43, 43, 44, 44, 44, 46, 47,
154 46, 45, 45, 45, 45, 46, 44, 44,
155 45, 44, 42, 41, 43, 46, 45, 44,
156 45, 45, 45, 46, 46, 46, 45, 44,
157 45, 44, 45, 47, 47, 48, 49, 48,
158 46, 45, 46, 47, 47, 48, 47, 47,
161 static const uint8_t dnxhd_1250_luma_weight[] = {
162 0, 32, 35, 35, 36, 36, 41, 43,
163 32, 34, 35, 36, 37, 39, 43, 47,
164 33, 34, 36, 38, 38, 42, 42, 50,
165 34, 36, 38, 38, 41, 40, 47, 54,
166 35, 38, 39, 40, 39, 45, 49, 58,
167 38, 39, 40, 39, 46, 47, 54, 60,
168 38, 39, 41, 46, 46, 48, 57, 62,
169 40, 41, 44, 45, 49, 54, 63, 63
172 static const uint8_t dnxhd_1250_chroma_weight[] = {
173 0, 32, 35, 36, 40, 42, 51, 51,
174 35, 36, 39, 39, 43, 51, 52, 55,
175 36, 41, 41, 43, 51, 53, 54, 56,
176 43, 44, 45, 50, 54, 54, 55, 57,
177 45, 48, 50, 51, 55, 58, 59, 58,
178 49, 52, 49, 57, 58, 62, 58, 60,
179 51, 51, 56, 58, 62, 61, 59, 62,
180 52, 52, 60, 61, 59, 59, 63, 63
183 static const uint8_t dnxhd_1251_luma_weight[] = {
184 0, 32, 32, 34, 34, 34, 34, 35,
185 35, 35, 36, 37, 36, 36, 35, 36,
186 38, 38, 38, 38, 38, 38, 38, 38,
187 38, 38, 39, 41, 44, 43, 41, 40,
188 40, 40, 40, 39, 40, 41, 40, 39,
189 40, 43, 46, 46, 44, 44, 44, 42,
190 41, 43, 46, 48, 50, 55, 58, 53,
191 48, 50, 55, 58, 61, 62, 62, 62,
194 static const uint8_t dnxhd_1251_chroma_weight[] = {
195 0, 32, 35, 36, 36, 35, 36, 39,
196 41, 43, 45, 44, 41, 39, 40, 42,
197 43, 43, 45, 48, 48, 48, 50, 50,
198 50, 51, 51, 51, 51, 52, 53, 54,
199 51, 49, 51, 52, 52, 56, 57, 55,
200 54, 54, 55, 56, 55, 58, 58, 58,
201 60, 61, 62, 62, 59, 57, 58, 58,
202 61, 59, 59, 59, 61, 62, 62, 62,
205 static const uint8_t dnxhd_1252_luma_weight[] = {
206 0, 32, 34, 35, 36, 36, 36, 37,
207 36, 37, 39, 40, 41, 40, 40, 40,
208 41, 41, 42, 41, 41, 43, 44, 44,
209 45, 46, 48, 55, 60, 57, 52, 50,
210 49, 49, 52, 52, 53, 55, 58, 62,
211 65, 73, 82, 82, 80, 78, 73, 68,
212 71, 82, 90, 90, 88, 87, 90, 95,
213 100, 107, 103, 97, 95, 93, 99, 99,
215 static const uint8_t dnxhd_1252_chroma_weight[] = {
216 0, 32, 35, 36, 37, 37, 38, 40,
217 42, 46, 49, 50, 50, 49, 49, 53,
218 56, 56, 57, 58, 60, 62, 64, 65,
219 63, 64, 64, 65, 66, 65, 67, 71,
220 72, 74, 74, 74, 74, 77, 81, 78,
221 72, 73, 82, 85, 89, 88, 84, 80,
222 90, 100, 90, 90, 88, 87, 90, 95,
223 114, 128, 125, 129, 134, 125, 116, 116,
226 static const uint8_t dnxhd_1256_chroma_weight[] = {
227 0, 32, 32, 32, 32, 32, 32, 33,
228 32, 32, 32, 32, 32, 32, 32, 34,
229 32, 32, 32, 32, 32, 32, 33, 37,
230 32, 32, 32, 32, 32, 32, 36, 39,
231 32, 32, 32, 32, 32, 34, 39, 44,
232 32, 37, 32, 32, 35, 40, 43, 49,
233 32, 33, 36, 36, 40, 43, 50, 60,
234 34, 37, 39, 44, 51, 56, 61, 70,
237 static const uint8_t dnxhd_1258_luma_weight[] = {
238 0, 32, 36, 36, 40, 40, 55, 60,
239 34, 36, 37, 40, 41, 48, 57, 82,
240 35, 36, 41, 41, 46, 52, 73, 82,
241 37, 40, 42, 45, 50, 65, 80, 87,
242 39, 41, 44, 49, 62, 78, 88, 90,
243 41, 44, 49, 58, 73, 90, 95, 95,
244 43, 52, 55, 68, 90, 100, 97, 93,
245 52, 53, 71, 82, 107, 103, 99, 99,
248 static const uint8_t dnxhd_1258_chroma_weight[] = {
249 0, 32, 37, 38, 49, 53, 65, 66,
250 35, 37, 40, 49, 56, 64, 65, 82,
251 36, 42, 50, 56, 64, 67, 73, 85,
252 46, 50, 57, 63, 71, 72, 89, 87,
253 49, 58, 65, 72, 78, 88, 88, 90,
254 60, 64, 74, 81, 84, 90, 95, 134,
255 62, 74, 77, 80, 90, 114, 129, 125,
256 74, 74, 90, 100, 128, 125, 116, 116,
259 static const uint8_t dnxhd_1259_luma_weight[] = {
260 0, 32, 36, 37, 41, 44, 54, 60,
261 33, 34, 36, 39, 43, 51, 62, 78,
262 34, 36, 38, 41, 49, 59, 73, 79,
263 37, 38, 40, 47, 55, 66, 80, 95,
264 38, 41, 46, 54, 63, 79, 93, 96,
265 46, 47, 56, 64, 78, 90, 97, 98,
266 49, 58, 66, 78, 89, 97, 102, 98,
267 61, 65, 82, 87, 100, 104, 99, 99,
270 static const uint8_t dnxhd_1259_chroma_weight[] = {
271 0, 32, 38, 39, 47, 51, 77, 83,
272 36, 39, 41, 48, 55, 74, 85, 95,
273 39, 45, 53, 58, 72, 83, 105, 89,
274 51, 58, 66, 73, 82, 109, 92, 95,
275 57, 75, 78, 89, 105, 95, 93, 96,
276 81, 82, 99, 99, 94, 90, 97, 98,
277 83, 96, 97, 93, 89, 97, 102, 98,
278 90, 94, 92, 88, 100, 104, 99, 99,
281 static const uint8_t dnxhd_1260_luma_weight[] = {
282 0, 32, 37, 37, 40, 41, 52, 53,
283 33, 36, 36, 38, 40, 48, 49, 52,
284 34, 34, 37, 39, 44, 47, 49, 54,
285 33, 35, 38, 40, 45, 46, 54, 51,
286 34, 37, 37, 42, 44, 49, 52, 48,
287 34, 34, 38, 43, 44, 51, 50, 50,
288 33, 36, 41, 44, 51, 52, 50, 54,
289 36, 38, 44, 47, 53, 53, 54, 54,
292 static const uint8_t dnxhd_1260_chroma_weight[] = {
293 0, 32, 40, 38, 42, 40, 45, 45,
294 34, 42, 36, 43, 38, 46, 46, 49,
295 38, 35, 43, 39, 44, 47, 47, 49,
296 35, 42, 43, 42, 46, 47, 49, 52,
297 38, 43, 43, 44, 50, 49, 56, 50,
298 42, 43, 44, 50, 51, 57, 52, 53,
299 41, 45, 46, 53, 53, 56, 53, 54,
300 46, 46, 51, 49, 56, 53, 58, 58,
303 /* Used in CID 1235, 1241, 1250, 1256 */
304 static const uint8_t dnxhd_1235_dc_codes[14] = {
305 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
308 /* Used in CID 1235, 1241, 1250, 1256 */
309 static const uint8_t dnxhd_1235_dc_bits[14] = {
310 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
313 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */
314 static const uint8_t dnxhd_1237_dc_codes[12] = {
315 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
318 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */
319 static const uint8_t dnxhd_1237_dc_bits[12] = {
320 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
323 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
324 static const uint16_t dnxhd_1237_ac_codes[257] = {
325 0, 1, 4, 5, 12, 26, 27, 56,
326 57, 58, 59, 120, 121, 244, 245, 246,
327 247, 248, 498, 499, 500, 501, 502, 1006,
328 1007, 1008, 1009, 1010, 1011, 2024, 2025, 2026,
329 2027, 2028, 2029, 2030, 2031, 4064, 4065, 4066,
330 4067, 4068, 4069, 4070, 4071, 4072, 4073, 8148,
331 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
332 8157, 8158, 16318, 16319, 16320, 16321, 16322, 16323,
333 16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
334 16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
335 32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
336 32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
337 65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
338 65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
339 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
340 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
341 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
342 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
343 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
344 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
345 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
346 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
347 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
348 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
349 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
350 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
351 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
352 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
353 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
354 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
355 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
356 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
360 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
361 static const uint8_t dnxhd_1237_ac_bits[257] = {
362 2, 2, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8,
363 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
364 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
365 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
366 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
367 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
368 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
369 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
370 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
371 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
372 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
373 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
374 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
375 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
376 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
377 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
381 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
382 static const uint8_t dnxhd_1237_ac_level[257] = {
383 1, 1, 2, 0, 3, 4, 2, 5, 6, 7, 3, 8, 9, 10, 11, 12,
384 4, 5, 13, 14, 15, 16, 6, 17, 18, 19, 20, 21, 7, 22, 23, 24,
385 25, 26, 27, 8, 9, 28, 29, 30, 31, 32, 33, 34, 10, 11, 12, 35,
386 36, 37, 38, 39, 40, 41, 13, 14, 15, 16, 42, 43, 44, 45, 46, 47,
387 48, 49, 50, 51, 52, 17, 18, 19, 20, 21, 53, 54, 55, 56, 57, 58,
388 59, 60, 61, 64, 1, 22, 23, 24, 25, 26, 27, 62, 63, 2, 3, 4,
389 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
390 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
391 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
392 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
393 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
394 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
395 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
396 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
397 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
398 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
402 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
403 static const uint8_t dnxhd_1237_ac_run_flag[257] = {
404 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
405 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
406 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
407 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
408 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
409 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
414 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
415 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
416 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
417 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
418 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
419 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
423 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
424 static const uint8_t dnxhd_1237_ac_index_flag[257] = {
425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
430 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
431 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
432 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
433 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
434 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
437 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
438 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
439 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
440 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
444 /* Used in CID 1238, 1243 */
445 static const uint16_t dnxhd_1238_ac_codes[257] = {
446 0, 1, 4, 10, 11, 24, 25, 26,
447 54, 55, 56, 57, 116, 117, 118, 119,
448 240, 241, 242, 243, 244, 245, 492, 493,
449 494, 495, 496, 497, 498, 499, 1000, 1001,
450 1002, 1003, 1004, 1005, 1006, 1007, 1008, 2018,
451 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
452 2027, 4056, 4057, 4058, 4059, 4060, 4061, 4062,
453 4063, 4064, 4065, 4066, 4067, 4068, 4069, 8140,
454 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148,
455 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
456 16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
457 16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
458 16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
459 16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
460 32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
461 32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
462 32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
463 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
464 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
465 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
466 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
467 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
468 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
469 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
470 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
471 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
472 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
473 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
474 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
475 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
476 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
477 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
481 /* Used in CID 1238, 1243 */
482 static const uint8_t dnxhd_1238_ac_bits[257] = {
483 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
484 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,
485 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
486 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
487 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
488 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
489 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
490 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
491 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
492 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
493 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
494 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
495 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
496 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
497 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
498 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
502 /* Used in CID 1238, 1243 */
503 static const uint8_t dnxhd_1238_ac_level[257] = {
504 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
505 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 22, 6, 7, 23, 24,
506 25, 26, 27, 28, 29, 8, 9, 30, 31, 32, 33, 34, 35, 36, 37, 10,
507 11, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 12, 13, 14, 49,
508 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 15, 16, 17, 18,
509 62, 63, 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
510 14, 15, 16, 19, 20, 21, 22, 23, 24, 17, 18, 19, 20, 21, 22, 23,
511 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 25,
512 26, 27, 28, 29, 30, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49,
513 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 31,
514 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
515 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
516 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
517 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
518 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
519 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
523 /* Used in CID 1238, 1243 */
524 static const uint8_t dnxhd_1238_ac_run_flag[257] = {
525 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
526 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
527 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
528 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
529 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
531 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
533 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
535 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
536 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
537 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
538 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
539 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
540 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
544 /* Used in CID 1238, 1243 */
545 static const uint8_t dnxhd_1238_ac_index_flag[257] = {
546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
551 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
552 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
553 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
554 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
555 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
558 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
559 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
560 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
561 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
565 /* Used in CID 1235, 1241, 1256 */
566 static const uint16_t dnxhd_1235_ac_codes[257] = {
567 0, 1, 4, 10, 11, 24, 25, 26,
568 54, 55, 56, 57, 116, 117, 118, 119,
569 240, 241, 242, 243, 244, 245, 492, 493,
570 494, 495, 496, 497, 498, 998, 999, 1000,
571 1001, 1002, 1003, 1004, 1005, 1006, 1007, 2016,
572 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
573 2025, 2026, 4054, 4055, 4056, 4057, 4058, 4059,
574 4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067,
575 4068, 4069, 8140, 8141, 8142, 8143, 8144, 8145,
576 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153,
577 8154, 8155, 8156, 8157, 16316, 16317, 16318, 16319,
578 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
579 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
580 16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
581 32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
582 32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
583 32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
584 32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
585 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
586 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
587 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
588 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
589 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
590 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
591 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
592 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
593 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
594 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
595 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
596 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
597 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
598 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
602 /* Used in CID 1235, 1241, 1256 */
603 static const uint8_t dnxhd_1235_ac_bits[257] = {
604 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
605 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
606 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
607 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
608 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
609 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
610 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
611 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
612 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
613 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
614 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
615 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
616 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
617 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
618 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
619 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
623 /* Used in CID 1235, 1241, 1256 */
624 static const uint8_t dnxhd_1235_ac_level[257] = {
625 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
626 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 6, 7, 22, 23, 24,
627 25, 26, 27, 28, 29, 8, 9, 30, 31, 32, 33, 34, 35, 36, 37, 38,
628 10, 11, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 12, 13,
629 14, 15, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 1,
630 16, 17, 18, 19, 64, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
631 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 18, 19, 20, 21, 22, 23,
632 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
633 40, 41, 42, 25, 26, 27, 28, 29, 30, 31, 32, 43, 44, 45, 46, 47,
634 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
635 64, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
636 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
637 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
638 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
639 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
640 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
644 /* Used in CID 1235, 1241, 1256 */
645 static const uint8_t dnxhd_1235_ac_run_flag[257] = {
646 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
647 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
648 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
649 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
650 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
651 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
652 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
654 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
656 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
657 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
658 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
659 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
660 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
661 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
665 /* Used in CID 1235, 1241, 1256 */
666 static const uint8_t dnxhd_1235_ac_index_flag[257] = {
667 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
669 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
672 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
673 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
674 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
675 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
676 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
677 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
679 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
680 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
681 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
682 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
686 static const uint16_t dnxhd_1250_ac_codes[257] = {
687 0, 1, 4, 10, 11, 24, 25, 26,
688 54, 55, 56, 57, 116, 117, 118, 119,
689 240, 241, 242, 243, 244, 245, 492, 493,
690 494, 495, 496, 497, 498, 998, 999, 1000,
691 1001, 1002, 1003, 1004, 1005, 1006, 2014, 2015,
692 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
693 2024, 2025, 4052, 4053, 4054, 4055, 4056, 4057,
694 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065,
695 4066, 4067, 8136, 8137, 8138, 8139, 8140, 8141,
696 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149,
697 8150, 8151, 8152, 8153, 8154, 8155, 8156, 16314,
698 16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
699 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
700 16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
701 32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
702 32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
703 32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
704 32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
705 32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
706 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
707 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
708 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
709 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
710 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
711 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
712 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
713 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
714 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
715 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
716 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
717 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
718 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
721 static const uint8_t dnxhd_1250_ac_bits[257] = {
722 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
723 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
724 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
725 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
726 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
727 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
728 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
729 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
730 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
731 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
732 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
733 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
734 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
735 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
736 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
737 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
740 static const uint8_t dnxhd_1250_ac_level[257] = {
741 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
742 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 22, 6, 23, 24, 25,
743 26, 27, 28, 29, 7, 8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
744 9, 10, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 11,
745 12, 13, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 1, 2,
746 3, 4, 5, 14, 15, 16, 17, 6, 7, 8, 9, 10, 11, 12, 13, 14,
747 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 18, 19, 20, 21,
748 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
749 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 22, 23, 24,
750 25, 26, 27, 54, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
751 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
752 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
753 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
754 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
755 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
756 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
759 static const uint8_t dnxhd_1250_ac_run_flag[257] = {
760 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
761 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
762 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
763 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
764 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
765 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
766 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
768 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
769 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
770 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
771 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
772 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
773 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
774 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
775 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
778 static const uint8_t dnxhd_1250_ac_index_flag[257] = {
779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
781 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
782 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
784 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
785 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
786 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
787 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
788 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
791 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
792 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
793 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
794 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
798 static const uint16_t dnxhd_1251_ac_codes[257] = {
799 0, 1, 4, 10, 11, 24, 25, 26,
800 54, 55, 56, 57, 116, 117, 118, 119,
801 240, 241, 242, 243, 244, 245, 492, 493,
802 494, 495, 496, 497, 996, 997, 998, 999,
803 1000, 1001, 1002, 1003, 1004, 1005, 2012, 2013,
804 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
805 2022, 2023, 2024, 2025, 4052, 4053, 4054, 4055,
806 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063,
807 4064, 4065, 4066, 8134, 8135, 8136, 8137, 8138,
808 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146,
809 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154,
810 8155, 8156, 16314, 16315, 16316, 16317, 16318, 16319,
811 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
812 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
813 16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
814 32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
815 32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
816 32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
817 32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
818 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
819 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
820 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
821 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
822 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
823 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
824 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
825 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
826 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
827 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
828 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
829 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
830 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
834 static const uint8_t dnxhd_1251_ac_bits[257] = {
835 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
836 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
837 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
838 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
839 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
840 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
841 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
842 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
843 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
844 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
845 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
846 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
847 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
848 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
849 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
850 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
854 static const uint8_t dnxhd_1251_ac_level[257] = {
855 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
856 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 6, 22, 23, 24, 25,
857 26, 27, 28, 29, 7, 8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
858 40, 9, 10, 11, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
859 12, 13, 14, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 1,
860 2, 3, 4, 5, 6, 7, 8, 15, 16, 17, 9, 10, 11, 12, 13, 14,
861 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 18,
862 19, 20, 21, 22, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
863 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
864 58, 23, 24, 25, 26, 27, 28, 59, 60, 61, 62, 63, 64, 29, 30, 31,
865 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
866 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
867 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
868 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
869 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
870 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
874 static const uint8_t dnxhd_1251_ac_run_flag[257] = {
875 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
876 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
877 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
878 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
879 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
880 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
882 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
883 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
884 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
885 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
886 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
887 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
888 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
889 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
890 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
894 static const uint8_t dnxhd_1251_ac_index_flag[257] = {
895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
900 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
901 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
902 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
903 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
904 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
907 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
908 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
909 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
910 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
914 /* Used in CID 1252, 1258 */
915 static const uint16_t dnxhd_1252_ac_codes[257] = {
916 0, 1, 4, 10, 11, 12, 26, 27,
917 56, 57, 58, 118, 119, 120, 242, 243,
918 244, 245, 246, 247, 496, 497, 498, 499,
919 500, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
920 1009, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
921 2027, 2028, 2029, 4060, 4061, 4062, 4063, 4064,
922 4065, 4066, 4067, 4068, 4069, 4070, 4071, 8144,
923 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152,
924 8153, 8154, 8155, 8156, 8157, 8158, 16318, 16319,
925 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
926 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
927 32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
928 32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
929 32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
930 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
931 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
932 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
933 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
934 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
935 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
936 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
937 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
938 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
939 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
940 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
941 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
942 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
943 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
944 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
945 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
946 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
947 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
951 /* Used in CID 1252, 1258 */
952 static const uint8_t dnxhd_1252_ac_bits[257] = {
953 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
954 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
955 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
956 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
957 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
958 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
959 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
960 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
961 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
962 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
963 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
964 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
965 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
966 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
967 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
968 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
972 /* Used in CID 1252, 1258 */
973 static const uint8_t dnxhd_1252_ac_level[257] = {
974 1, 1, 2, 3, 2, 0, 4, 5, 6, 7, 3, 8, 9, 10, 11, 12,
975 13, 14, 4, 5, 15, 16, 17, 18, 6, 19, 20, 21, 22, 23, 24, 7,
976 8, 25, 26, 27, 28, 29, 30, 31, 32, 9, 10, 33, 34, 35, 36, 37,
977 38, 39, 40, 41, 11, 12, 13, 42, 43, 44, 45, 46, 47, 48, 49, 50,
978 51, 52, 53, 14, 15, 16, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
979 64, 1, 2, 3, 17, 18, 19, 20, 4, 5, 6, 7, 8, 9, 10, 11,
980 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 22,
981 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
982 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
983 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 26, 27, 28, 29, 30, 31,
984 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
985 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
986 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
987 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
988 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
989 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
993 /* Used in CID 1252, 1258 */
994 static const uint8_t dnxhd_1252_ac_run_flag[257] = {
995 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
996 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,
997 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
998 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
999 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1000 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
1001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
1002 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
1005 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1006 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1007 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1008 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1009 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1010 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1014 /* Used in CID 1252, 1258 */
1015 static const uint8_t dnxhd_1252_ac_index_flag[257] = {
1016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1021 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1022 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1,
1023 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1024 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1025 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
1026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1028 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1029 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1030 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1031 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1035 /* Used in CID 1235, 1238, 1241, 1256 */
1036 static const uint16_t dnxhd_1235_run_codes[62] = {
1037 0, 4, 10, 11, 24, 25, 26, 27,
1038 56, 57, 58, 59, 120, 242, 486, 487,
1039 488, 489, 980, 981, 982, 983, 984, 985,
1040 986, 987, 988, 989, 990, 991, 992, 993,
1041 994, 995, 996, 997, 998, 999, 1000, 1001,
1042 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
1043 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
1044 1018, 1019, 1020, 1021, 1022, 1023,
1047 /* Used in CID 1235, 1238, 1241, 1243, 1256 */
1048 static const uint8_t dnxhd_1235_run_bits[62] = {
1049 1, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9,
1050 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1051 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1052 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1055 /* Used in CID 1235, 1241, 1256 */
1056 static const uint8_t dnxhd_1235_run[62] = {
1057 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1058 18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1059 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1060 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1063 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
1064 static const uint16_t dnxhd_1237_run_codes[62] = {
1065 0, 4, 10, 11, 24, 25, 26, 54,
1066 55, 56, 57, 58, 118, 119, 240, 482,
1067 483, 484, 485, 486, 487, 488, 489, 490,
1068 491, 492, 493, 494, 990, 991, 992, 993,
1069 994, 995, 996, 997, 998, 999, 1000, 1001,
1070 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
1071 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
1072 1018, 1019, 1020, 1021, 1022, 1023,
1075 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
1076 static const uint8_t dnxhd_1237_run_bits[62] = {
1077 1, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9,
1078 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
1079 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1080 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1083 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
1084 static const uint8_t dnxhd_1237_run[62] = {
1085 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1086 17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
1087 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
1088 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
1091 static const uint8_t dnxhd_1238_run[62] = {
1092 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1093 20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1094 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1095 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1098 /* Used in CID 1250, 1251, 1252, 1258 */
1099 static const uint16_t dnxhd_1250_run_codes[62] = {
1100 0, 4, 5, 12, 26, 27, 28, 58,
1101 118, 119, 120, 242, 486, 487, 976, 977,
1102 978, 979, 980, 981, 982, 983, 984, 985,
1103 986, 987, 988, 989, 990, 991, 992, 993,
1104 994, 995, 996, 997, 998, 999, 1000, 1001,
1105 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
1106 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
1107 1018, 1019, 1020, 1021, 1022, 1023,
1110 /* Used in CID 1250, 1251, 1252, 1258 */
1111 static const uint8_t dnxhd_1250_run_bits[62] = {
1112 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
1113 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1114 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1115 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1118 /* Used in CID 1250, 1251, 1252, 1258 */
1119 static const uint8_t dnxhd_1250_run[62] = {
1120 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1121 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1122 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1123 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1126 const CIDEntry ff_dnxhd_cid_table[] = {
1127 { 1235, 1920, 1080, 0, 917504, 917504, 6, 10,
1128 dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
1129 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1130 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1131 dnxhd_1235_ac_run_flag, dnxhd_1235_ac_index_flag,
1132 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1133 { 175, 185, 365, 440 } },
1134 { 1237, 1920, 1080, 0, 606208, 606208, 4, 8,
1135 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1136 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1137 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1138 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1139 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1140 { 115, 120, 145, 240, 290 } },
1141 { 1238, 1920, 1080, 0, 917504, 917504, 4, 8,
1142 dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
1143 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1144 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1145 dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
1146 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1147 { 175, 185, 220, 365, 440 } },
1148 { 1241, 1920, 1080, 1, 917504, 458752, 6, 10,
1149 dnxhd_1241_luma_weight, dnxhd_1241_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,
1155 { 1242, 1920, 1080, 1, 606208, 303104, 4, 8,
1156 dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
1157 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1158 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1159 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1160 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1162 { 1243, 1920, 1080, 1, 917504, 458752, 4, 8,
1163 dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
1164 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1165 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1166 dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
1167 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1169 { 1250, 1280, 720, 0, 458752, 458752, 6, 10,
1170 dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
1171 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1172 dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_level,
1173 dnxhd_1250_ac_run_flag, dnxhd_1250_ac_index_flag,
1174 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1176 { 1251, 1280, 720, 0, 458752, 458752, 4, 8,
1177 dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
1178 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1179 dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
1180 dnxhd_1251_ac_run_flag, dnxhd_1251_ac_index_flag,
1181 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1182 { 90, 110, 175, 220 } },
1183 { 1252, 1280, 720, 0, 303104, 303104, 4, 8,
1184 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1185 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1186 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1187 dnxhd_1252_ac_run_flag, dnxhd_1252_ac_index_flag,
1188 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1189 { 60, 75, 115, 145 } },
1190 { 1253, 1920, 1080, 0, 188416, 188416, 4, 8,
1191 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1192 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1193 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1194 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1195 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1196 { 36, 45, 75, 90 } },
1197 { 1256, 1920, 1080, 0, 1835008, 1835008, 6, 10,
1198 dnxhd_1235_luma_weight, dnxhd_1256_chroma_weight,
1199 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1200 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1201 dnxhd_1235_ac_run_flag, dnxhd_1235_ac_index_flag,
1202 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1203 { 350, 390, 440, 730, 880 } },
1204 { 1258, 960, 720, 0, 212992, 212992, 4, 8,
1205 dnxhd_1258_luma_weight, dnxhd_1258_chroma_weight,
1206 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1207 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1208 dnxhd_1252_ac_run_flag, dnxhd_1252_ac_index_flag,
1209 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1210 { 42, 60, 75, 115 } },
1211 { 1259, 1440, 1080, 0, 417792, 417792, 4, 8,
1212 dnxhd_1259_luma_weight, dnxhd_1259_chroma_weight,
1213 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1214 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1215 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1216 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1217 { 63, 84, 100, 110 } },
1218 { 1260, 1440, 1080, 1, 417792, 417792, 4, 8,
1219 dnxhd_1260_luma_weight, dnxhd_1260_chroma_weight,
1220 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1221 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1222 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1223 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1224 { 80, 90, 100, 110 } },
1227 int ff_dnxhd_get_cid_table(int cid)
1230 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
1231 if (ff_dnxhd_cid_table[i].cid == cid)
1236 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
1239 int mbs = avctx->bit_rate / 1000000;
1242 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1243 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1244 if (cid->width == avctx->width && cid->height == avctx->height &&
1245 cid->interlaced == !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) &&
1246 cid->bit_depth == bit_depth) {
1247 for (j = 0; j < sizeof(cid->bit_rates); j++) {
1248 if (cid->bit_rates[j] == mbs)