3 * Copyright (c) 2007 SmartJog S.A., Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
5 * This file is part of FFmpeg.
7 * FFmpeg 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 * FFmpeg 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 FFmpeg; 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 static const uint8_t dnxhd_1235_chroma_weight[] = {
41 0, 32, 33, 34, 34, 33, 34, 35,
42 37, 40, 43, 42, 39, 38, 39, 41,
43 43, 44, 47, 50, 55, 61, 63, 56,
44 48, 46, 49, 54, 59, 58, 55, 58,
45 63, 65, 67, 74, 84, 82, 75, 72,
46 70, 74, 84, 87, 87, 94, 93, 81,
47 75, 78, 83, 89, 91, 86, 82, 85,
48 90, 90, 85, 79, 73, 73, 73, 73,
51 /* Used in CID 1237, 1253 */
52 static const uint8_t dnxhd_1237_luma_weight[] = {
53 0, 32, 33, 34, 34, 36, 37, 36,
54 36, 37, 38, 38, 38, 39, 41, 44,
55 43, 41, 40, 41, 46, 49, 47, 46,
56 47, 49, 51, 54, 60, 62, 59, 55,
57 54, 56, 58, 61, 65, 66, 64, 63,
58 66, 73, 78, 79, 80, 79, 78, 78,
59 82, 87, 89, 90, 93, 95, 96, 97,
60 97, 100, 104, 102, 98, 98, 99, 99,
63 /* Used in CID 1237, 1253 */
64 static const uint8_t dnxhd_1237_chroma_weight[] = {
65 0, 32, 36, 39, 39, 38, 39, 41,
66 45, 51, 57, 58, 53, 48, 47, 51,
67 55, 58, 66, 75, 81, 83, 82, 78,
68 73, 72, 74, 77, 83, 85, 83, 82,
69 89, 99, 96, 90, 94, 97, 99, 105,
70 109, 105, 95, 89, 92, 95, 94, 93,
71 92, 88, 89, 90, 93, 95, 96, 97,
72 97, 100, 104, 102, 98, 98, 99, 99,
75 static const uint8_t dnxhd_1238_luma_weight[] = {
76 0, 32, 32, 33, 34, 33, 33, 33,
77 33, 33, 33, 33, 33, 35, 37, 37,
78 36, 36, 35, 36, 38, 38, 36, 35,
79 36, 37, 38, 41, 42, 41, 39, 38,
80 38, 38, 39, 41, 42, 41, 39, 39,
81 40, 41, 43, 44, 44, 44, 44, 44,
82 45, 47, 47, 47, 49, 50, 51, 51,
83 51, 53, 55, 57, 58, 59, 57, 57,
86 static const uint8_t dnxhd_1238_chroma_weight[] = {
87 0, 32, 35, 35, 35, 34, 34, 35,
88 39, 43, 45, 45, 41, 39, 40, 41,
89 42, 44, 48, 55, 59, 63, 65, 59,
90 53, 52, 52, 55, 61, 62, 58, 58,
91 63, 66, 66, 65, 70, 74, 70, 66,
92 65, 68, 75, 77, 74, 74, 77, 76,
93 73, 73, 73, 73, 76, 80, 89, 90,
94 82, 77, 80, 86, 84, 82, 82, 82,
97 static const uint8_t dnxhd_1241_luma_weight[] = {
98 0, 32, 33, 34, 34, 35, 36, 37,
99 36, 37, 38, 38, 38, 39, 39, 40,
100 40, 38, 38, 39, 38, 37, 39, 41,
101 41, 42, 43, 45, 45, 46, 47, 46,
102 45, 43, 39, 37, 37, 40, 44, 45,
103 45, 46, 46, 46, 47, 47, 46, 44,
104 42, 43, 45, 47, 48, 49, 50, 49,
105 48, 46, 47, 48, 48, 49, 49, 49,
108 static const uint8_t dnxhd_1241_chroma_weight[] = {
109 0, 32, 36, 38, 37, 37, 40, 41,
110 40, 40, 42, 42, 41, 41, 41, 41,
111 42, 43, 44, 44, 45, 46, 46, 45,
112 44, 45, 45, 45, 45, 46, 47, 46,
113 45, 44, 42, 41, 43, 45, 45, 47,
114 48, 48, 48, 46, 47, 47, 46, 47,
115 46, 45, 45, 47, 48, 49, 50, 49,
116 48, 46, 48, 49, 48, 49, 49, 49,
119 static const uint8_t dnxhd_1242_luma_weight[] = {
120 0, 32, 33, 33, 34, 35, 36, 35,
121 33, 33, 35, 36, 37, 37, 38, 37,
122 37, 37, 36, 37, 37, 37, 38, 39,
123 37, 36, 37, 40, 42, 45, 46, 44,
124 41, 42, 44, 45, 47, 49, 50, 48,
125 46, 48, 49, 50, 52, 52, 50, 49,
126 47, 48, 50, 50, 51, 51, 50, 49,
127 49, 51, 52, 51, 49, 47, 47, 47,
130 static const uint8_t dnxhd_1242_chroma_weight[] = {
131 0, 32, 37, 42, 45, 45, 45, 44,
132 38, 37, 40, 42, 44, 49, 51, 47,
133 41, 40, 43, 44, 46, 48, 51, 54,
134 51, 47, 47, 45, 47, 50, 51, 49,
135 46, 47, 49, 47, 50, 55, 55, 51,
136 48, 49, 51, 51, 52, 52, 54, 54,
137 49, 49, 52, 53, 54, 54, 53, 53,
138 55, 59, 63, 62, 60, 60, 60, 60,
141 static const uint8_t dnxhd_1243_luma_weight[] = {
142 0, 32, 32, 33, 33, 35, 35, 35,
143 35, 35, 35, 35, 34, 35, 38, 40,
144 39, 37, 37, 37, 36, 35, 36, 38,
145 40, 41, 42, 44, 45, 44, 42, 41,
146 40, 38, 36, 36, 37, 38, 40, 43,
147 44, 45, 45, 45, 45, 45, 45, 41,
148 39, 41, 45, 47, 47, 48, 48, 48,
149 46, 44, 45, 47, 47, 48, 47, 47,
152 static const uint8_t dnxhd_1243_chroma_weight[] = {
153 0, 32, 36, 37, 36, 37, 39, 39,
154 41, 43, 43, 42, 41, 41, 41, 42,
155 43, 43, 43, 44, 44, 44, 46, 47,
156 46, 45, 45, 45, 45, 46, 44, 44,
157 45, 44, 42, 41, 43, 46, 45, 44,
158 45, 45, 45, 46, 46, 46, 45, 44,
159 45, 44, 45, 47, 47, 48, 49, 48,
160 46, 45, 46, 47, 47, 48, 47, 47,
163 static const uint8_t dnxhd_1250_luma_weight[] = {
164 0, 32, 32, 33, 34, 35, 35, 35,
165 34, 34, 35, 36, 36, 36, 36, 36,
166 37, 38, 38, 38, 38, 38, 39, 39,
167 38, 38, 39, 41, 43, 43, 42, 41,
168 40, 40, 39, 40, 41, 41, 39, 39,
169 40, 42, 47, 50, 47, 45, 46, 46,
170 44, 45, 46, 47, 49, 54, 58, 54,
171 48, 49, 54, 57, 60, 62, 63, 63,
174 static const uint8_t dnxhd_1250_chroma_weight[] = {
175 0, 32, 35, 36, 36, 35, 36, 39,
176 41, 43, 45, 44, 41, 39, 40, 42,
177 43, 43, 45, 48, 49, 51, 52, 50,
178 50, 51, 51, 51, 51, 52, 53, 54,
179 51, 49, 51, 52, 52, 56, 57, 55,
180 54, 54, 55, 56, 55, 58, 58, 58,
181 60, 61, 62, 62, 59, 57, 58, 58,
182 61, 59, 59, 59, 60, 62, 63, 63,
185 static const uint8_t dnxhd_1251_luma_weight[] = {
186 0, 32, 32, 34, 34, 34, 34, 35,
187 35, 35, 36, 37, 36, 36, 35, 36,
188 38, 38, 38, 38, 38, 38, 38, 38,
189 38, 38, 39, 41, 44, 43, 41, 40,
190 40, 40, 40, 39, 40, 41, 40, 39,
191 40, 43, 46, 46, 44, 44, 44, 42,
192 41, 43, 46, 48, 50, 55, 58, 53,
193 48, 50, 55, 58, 61, 62, 62, 62,
196 static const uint8_t dnxhd_1251_chroma_weight[] = {
197 0, 32, 35, 36, 36, 35, 36, 39,
198 41, 43, 45, 44, 41, 39, 40, 42,
199 43, 43, 45, 48, 48, 48, 50, 50,
200 50, 51, 51, 51, 51, 52, 53, 54,
201 51, 49, 51, 52, 52, 56, 57, 55,
202 54, 54, 55, 56, 55, 58, 58, 58,
203 60, 61, 62, 62, 59, 57, 58, 58,
204 61, 59, 59, 59, 61, 62, 62, 62,
207 static const uint8_t dnxhd_1252_luma_weight[] = {
208 0, 32, 34, 35, 36, 36, 36, 37,
209 36, 37, 39, 40, 41, 40, 40, 40,
210 41, 41, 42, 41, 41, 43, 44, 44,
211 45, 46, 48, 55, 60, 57, 52, 50,
212 49, 49, 52, 52, 53, 55, 58, 62,
213 65, 73, 82, 82, 80, 78, 73, 68,
214 71, 82, 90, 90, 88, 87, 90, 95,
215 100, 107, 103, 97, 95, 93, 99, 99,
217 static const uint8_t dnxhd_1252_chroma_weight[] = {
218 0, 32, 35, 36, 37, 37, 38, 40,
219 42, 46, 49, 50, 50, 49, 49, 53,
220 56, 56, 57, 58, 60, 62, 64, 65,
221 63, 64, 64, 65, 66, 65, 67, 71,
222 72, 74, 74, 74, 74, 77, 81, 78,
223 72, 73, 82, 85, 89, 88, 84, 80,
224 90, 100, 90, 90, 88, 87, 90, 95,
225 114, 128, 125, 129, 134, 125, 116, 116,
228 static const uint8_t dnxhd_1256_chroma_weight[] = {
229 0, 32, 32, 32, 32, 32, 32, 33,
230 32, 32, 32, 32, 32, 32, 32, 34,
231 32, 32, 32, 32, 32, 32, 33, 37,
232 32, 32, 32, 32, 32, 32, 36, 39,
233 32, 32, 32, 32, 32, 34, 39, 44,
234 32, 37, 32, 32, 35, 40, 43, 49,
235 32, 33, 36, 36, 40, 43, 50, 60,
236 34, 37, 39, 44, 51, 56, 61, 70,
239 static const uint8_t dnxhd_1258_luma_weight[] = {
240 0, 32, 36, 36, 40, 40, 55, 60,
241 34, 36, 37, 40, 41, 48, 57, 82,
242 35, 36, 41, 41, 46, 52, 73, 82,
243 37, 40, 42, 45, 50, 65, 80, 87,
244 39, 41, 44, 49, 62, 78, 88, 90,
245 41, 44, 49, 58, 73, 90, 95, 95,
246 43, 52, 55, 68, 90, 100, 97, 93,
247 52, 53, 71, 82, 107, 103, 99, 99,
250 static const uint8_t dnxhd_1258_chroma_weight[] = {
251 0, 32, 37, 38, 49, 53, 65, 66,
252 35, 37, 40, 49, 56, 64, 65, 82,
253 36, 42, 50, 56, 64, 67, 73, 85,
254 46, 50, 57, 63, 71, 72, 89, 87,
255 49, 58, 65, 72, 78, 88, 88, 90,
256 60, 64, 74, 81, 84, 90, 95, 134,
257 62, 74, 77, 80, 90, 114, 129, 125,
258 74, 74, 90, 100, 128, 125, 116, 116,
261 /* Used in CID 1235, 1241, 1256 */
262 static const uint8_t dnxhd_1235_dc_codes[14] = {
263 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
266 /* Used in CID 1235, 1241, 1256 */
267 static const uint8_t dnxhd_1235_dc_bits[14] = {
268 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
271 /* Used in CID 1237, 1242, 1253 */
272 static const uint8_t dnxhd_1237_dc_codes[12] = {
273 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
276 /* Used in CID 1237, 1242, 1253 */
277 static const uint8_t dnxhd_1237_dc_bits[12] = {
278 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
281 /* Used in CID 1238, 1243 */
282 static const uint8_t dnxhd_1238_dc_codes[12] = {
283 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
286 /* Used in CID 1238, 1243 */
287 static const uint8_t dnxhd_1238_dc_bits[12] = {
288 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
291 static const uint8_t dnxhd_1250_dc_codes[14] = {
292 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127
295 static const uint8_t dnxhd_1250_dc_bits[14] = {
296 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7
299 static const uint8_t dnxhd_1251_dc_codes[12] = {
300 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
303 static const uint8_t dnxhd_1251_dc_bits[12] = {
304 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
307 static const uint8_t dnxhd_1252_dc_codes[12] = {
308 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
311 static const uint8_t dnxhd_1252_dc_bits[12] = {
312 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
315 static const uint8_t dnxhd_1258_dc_codes[14] = {
316 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63, 0, 0,
319 static const uint8_t dnxhd_1258_dc_bits[14] = {
320 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6, 0, 0,
323 /* Used in CID 1237, 1242, 1253 */
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 */
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 */
382 static const uint8_t dnxhd_1237_ac_level[257] = {
383 3, 3, 5, 0, 7, 9, 5, 11, 13, 15, 7, 17, 19, 21, 23, 25,
384 9, 11, 27, 29, 31, 33, 13, 35, 37, 39, 41, 43, 15, 45, 47, 49,
385 51, 53, 55, 17, 19, 57, 59, 61, 63, 65, 67, 69, 21, 23, 25, 71,
386 73, 75, 77, 79, 81, 83, 27, 29, 31, 33, 85, 87, 89, 91, 93, 95,
387 97, 99,101,103,105, 35, 37, 39, 41, 43,107,109,111,113,115,117,
388 119,121,123,129, 3, 45, 47, 49, 51, 53, 55,125,127, 5, 7, 9,
389 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41,
390 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73,
391 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
392 107,109,111,113,115,117,119,121,123,125,127,129, 57, 59, 61, 63,
393 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
394 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
395 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
396 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
397 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
398 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
402 static const uint8_t dnxhd_1237_ac_flags[257] = {
403 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0,
404 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
405 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
406 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
407 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
408 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1,
409 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
410 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
411 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
412 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
413 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
414 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
415 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
416 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
417 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
418 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
422 /* Used in CID 1237, 1242, 1253 */
423 static const uint16_t dnxhd_1237_run_codes[62] = {
424 0, 4, 10, 11, 24, 25, 26, 54,
425 55, 56, 57, 58, 118, 119, 240, 482,
426 483, 484, 485, 486, 487, 488, 489, 490,
427 491, 492, 493, 494, 990, 991, 992, 993,
428 994, 995, 996, 997, 998, 999, 1000, 1001,
429 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
430 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
431 1018, 1019, 1020, 1021, 1022, 1023,
434 /* Used in CID 1237, 1242, 1253 */
435 static const uint8_t dnxhd_1237_run_bits[62] = {
436 1, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9,
437 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
438 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
439 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
442 /* Used in CID 1237, 1242, 1253 */
443 static const uint8_t dnxhd_1237_run[62] = {
444 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
445 17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
446 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
447 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
450 /* Used in CID 1238, 1243 */
451 static const uint16_t dnxhd_1238_ac_codes[257] = {
452 0, 1, 4, 10, 11, 24, 25, 26,
453 54, 55, 56, 57, 116, 117, 118, 119,
454 240, 241, 242, 243, 244, 245, 492, 493,
455 494, 495, 496, 497, 498, 499, 1000, 1001,
456 1002, 1003, 1004, 1005, 1006, 1007, 1008, 2018,
457 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
458 2027, 4056, 4057, 4058, 4059, 4060, 4061, 4062,
459 4063, 4064, 4065, 4066, 4067, 4068, 4069, 8140,
460 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148,
461 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
462 16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
463 16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
464 16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
465 16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
466 32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
467 32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
468 32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
469 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
470 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
471 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
472 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
473 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
474 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
475 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
476 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
477 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
478 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
479 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
480 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
481 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
482 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
483 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
487 /* Used in CID 1238, 1243 */
488 static const uint8_t dnxhd_1238_ac_bits[257] = {
489 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
490 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,
491 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
492 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
493 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
494 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
495 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
496 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
497 15, 15, 15, 15, 15, 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,
499 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
500 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
501 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
502 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
503 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
504 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
508 /* Used in CID 1238, 1243 */
509 static const uint8_t dnxhd_1238_ac_level[257] = {
510 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
511 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 15, 47, 49,
512 51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 21,
513 23, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 25, 27, 29, 99,
514 101,103,105,107,109,111,113,115,117,119,121,123, 31, 33, 35, 37,
515 125,127,129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27,
516 29, 31, 33, 39, 41, 43, 45, 47, 49, 35, 37, 39, 41, 43, 45, 47,
517 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 81, 51,
518 53, 55, 57, 59, 61, 77, 79, 83, 85, 87, 89, 91, 93, 95, 97, 99,
519 101,103,105,107,109,111,113,115,117,119,121,123,125,127,129, 63,
520 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
521 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
522 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
523 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
524 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
525 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
529 static const uint8_t dnxhd_1238_ac_flags[257] = {
530 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
531 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
532 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2,
533 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2,
535 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
536 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
537 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
538 2, 2, 2, 2, 2, 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, 2,
540 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
541 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
542 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
543 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
544 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
545 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
549 /* Used in CID 1235, 1238, 1241, 1256 */
550 static const uint16_t dnxhd_1235_run_codes[62] = {
551 0, 4, 10, 11, 24, 25, 26, 27,
552 56, 57, 58, 59, 120, 242, 486, 487,
553 488, 489, 980, 981, 982, 983, 984, 985,
554 986, 987, 988, 989, 990, 991, 992, 993,
555 994, 995, 996, 997, 998, 999, 1000, 1001,
556 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
557 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
558 1018, 1019, 1020, 1021, 1022, 1023,
561 /* Used in CID 1235, 1238, 1241, 1243, 1256 */
562 static const uint8_t dnxhd_1235_run_bits[62] = {
563 1, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9,
564 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
565 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
566 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
569 static const uint8_t dnxhd_1238_run[62] = {
570 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
571 20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
572 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
573 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
576 /* Used in CID 1235, 1241, 1256 */
577 static const uint16_t dnxhd_1235_ac_codes[257] = {
578 0, 1, 4, 10, 11, 24, 25, 26,
579 54, 55, 56, 57, 116, 117, 118, 119,
580 240, 241, 242, 243, 244, 245, 492, 493,
581 494, 495, 496, 497, 498, 998, 999, 1000,
582 1001, 1002, 1003, 1004, 1005, 1006, 1007, 2016,
583 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
584 2025, 2026, 4054, 4055, 4056, 4057, 4058, 4059,
585 4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067,
586 4068, 4069, 8140, 8141, 8142, 8143, 8144, 8145,
587 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153,
588 8154, 8155, 8156, 8157, 16316, 16317, 16318, 16319,
589 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
590 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
591 16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
592 32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
593 32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
594 32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
595 32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
596 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
597 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
598 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
599 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
600 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
601 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
602 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
603 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
604 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
605 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
606 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
607 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
608 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
609 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
613 /* Used in CID 1235, 1241, 1256 */
614 static const uint8_t dnxhd_1235_ac_bits[257] = {
615 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
616 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
617 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
618 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
619 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
620 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
621 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
622 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
623 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
624 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
625 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
626 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
627 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
628 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
629 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
630 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
634 /* Used in CID 1235, 1241, 1256 */
635 static const uint8_t dnxhd_1235_ac_level[257] = {
636 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
637 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 15, 45, 47, 49,
638 51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 77,
639 21, 23, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101, 25, 27,
640 29, 31,103,105,107,109,111,113,115,117,119,121,123,125,127, 3,
641 33, 35, 37, 39,129, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25,
642 27, 29, 31, 33, 35, 41, 43, 45, 47, 49, 37, 39, 41, 43, 45, 47,
643 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
644 81, 83, 85, 51, 53, 55, 57, 59, 61, 63, 65, 87, 89, 91, 93, 95,
645 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
646 129, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
647 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
648 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
649 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
650 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
651 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
655 /* Used in CID 1235, 1241, 1256 */
656 static const uint8_t dnxhd_1235_ac_flags[257] = {
657 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
658 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
659 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
660 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
661 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
662 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
663 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
664 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
665 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
666 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
667 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
668 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
669 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
670 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
671 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
672 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
676 /* Used in CID 1235, 1241, 1256 */
677 static const uint8_t dnxhd_1235_run[62] = {
678 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
679 18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
680 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
681 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
684 static const uint16_t dnxhd_1250_ac_codes[257] = {
685 0, 1, 4, 10, 11, 24, 25, 26,
686 54, 55, 56, 57, 116, 117, 118, 119,
687 240, 241, 242, 243, 244, 245, 492, 493,
688 494, 495, 496, 497, 498, 998, 999, 1000,
689 1001, 1002, 1003, 1004, 1005, 1006, 2014, 2015,
690 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
691 2024, 2025, 4052, 4053, 4054, 4055, 4056, 4057,
692 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065,
693 4066, 4067, 8136, 8137, 8138, 8139, 8140, 8141,
694 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149,
695 8150, 8151, 8152, 8153, 8154, 8155, 8156, 16314,
696 16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
697 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
698 16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
699 32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
700 32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
701 32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
702 32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
703 32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
704 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
705 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
706 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
707 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
708 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
709 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
710 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
711 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
712 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
713 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
714 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
715 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
716 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
719 static const uint8_t dnxhd_1250_ac_bits[257] = {
720 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
721 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
722 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
723 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
724 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
725 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
726 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
727 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
728 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
729 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
730 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
731 16, 16, 16, 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,
738 static const uint8_t dnxhd_1250_ac_level[257] = {
739 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
740 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 47, 49, 51,
741 53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
742 19, 21, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105, 23,
743 25, 27,107,109,111,113,115,117,119,121,123,125,127,129, 3, 5,
744 7, 9, 11, 29, 31, 33, 35, 13, 15, 17, 19, 21, 23, 25, 27, 29,
745 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 37, 39, 41, 43,
746 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85,
747 87, 89, 91, 93, 95, 97, 99,101,103,105,107,111,113, 45, 47, 49,
748 51, 53, 55,109,115,117,119,121,123,125,127,129, 57, 59, 61, 63,
749 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
750 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
751 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
752 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
753 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
754 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
757 static const uint8_t dnxhd_1250_ac_flags[257] = {
758 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
759 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
760 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
761 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
762 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
763 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
764 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
765 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
766 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
767 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
768 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
769 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
770 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
771 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
772 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
773 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
776 static const uint16_t dnxhd_1250_run_codes[62] = {
777 0, 4, 5, 12, 26, 27, 28, 58,
778 118, 119, 120, 242, 486, 487, 976, 977,
779 978, 979, 980, 981, 982, 983, 984, 985,
780 986, 987, 988, 989, 990, 991, 992, 993,
781 994, 995, 996, 997, 998, 999, 1000, 1001,
782 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
783 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
784 1018, 1019, 1020, 1021, 1022, 1023
786 static const uint8_t dnxhd_1250_run_bits[62] = {
787 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
788 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
789 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
790 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
792 static const uint8_t dnxhd_1250_run[62] = {
793 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
794 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
795 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
796 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62
799 static const uint16_t dnxhd_1251_ac_codes[257] = {
800 0, 1, 4, 10, 11, 24, 25, 26,
801 54, 55, 56, 57, 116, 117, 118, 119,
802 240, 241, 242, 243, 244, 245, 492, 493,
803 494, 495, 496, 497, 996, 997, 998, 999,
804 1000, 1001, 1002, 1003, 1004, 1005, 2012, 2013,
805 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
806 2022, 2023, 2024, 2025, 4052, 4053, 4054, 4055,
807 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063,
808 4064, 4065, 4066, 8134, 8135, 8136, 8137, 8138,
809 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146,
810 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154,
811 8155, 8156, 16314, 16315, 16316, 16317, 16318, 16319,
812 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
813 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
814 16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
815 32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
816 32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
817 32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
818 32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
819 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
820 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
821 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
822 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
823 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
824 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
825 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
826 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
827 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
828 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
829 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
830 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
831 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
835 static const uint8_t dnxhd_1251_ac_bits[257] = {
836 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
837 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
838 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
839 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
840 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
841 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
842 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
843 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
844 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
845 15, 15, 15, 15, 15, 15, 15, 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,
851 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
855 static const uint8_t dnxhd_1251_ac_level[257] = {
856 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
857 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 45, 47, 49, 51,
858 53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
859 81, 19, 21, 23, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
860 25, 27, 29,107,109,111,113,115,117,119,121,123,125,127,129, 3,
861 5, 7, 9, 11, 13, 15, 17, 31, 33, 35, 19, 21, 23, 25, 27, 29,
862 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 37,
863 39, 41, 43, 45, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83,
864 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,111,113,115,
865 117, 47, 49, 51, 53, 55, 57,119,121,123,125,127,129, 59, 61, 63,
866 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
867 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
868 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
869 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
870 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
871 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
875 static const uint8_t dnxhd_1251_ac_flags[257] = {
876 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
877 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
878 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
879 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
880 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
881 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1,
882 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
883 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
884 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
885 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2,
886 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
887 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
888 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
889 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
890 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
891 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
895 /* Used in CID 1251, 1252, 1258 */
896 static const uint16_t dnxhd_1251_run_codes[62] = {
897 0, 4, 5, 12, 26, 27, 28, 58,
898 118, 119, 120, 242, 486, 487, 976, 977,
899 978, 979, 980, 981, 982, 983, 984, 985,
900 986, 987, 988, 989, 990, 991, 992, 993,
901 994, 995, 996, 997, 998, 999, 1000, 1001,
902 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
903 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
904 1018, 1019, 1020, 1021, 1022, 1023,
907 /* Used in CID 1251, 1252, 1258 */
908 static const uint8_t dnxhd_1251_run_bits[62] = {
909 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
910 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
911 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
912 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
915 /* Used in CID 1251, 1252, 1258 */
916 static const uint8_t dnxhd_1251_run[62] = {
917 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
918 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
919 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
920 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
923 /* Used in CID 1252, 1258 */
924 static const uint16_t dnxhd_1252_ac_codes[257] = {
925 0, 1, 4, 10, 11, 12, 26, 27,
926 56, 57, 58, 118, 119, 120, 242, 243,
927 244, 245, 246, 247, 496, 497, 498, 499,
928 500, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
929 1009, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
930 2027, 2028, 2029, 4060, 4061, 4062, 4063, 4064,
931 4065, 4066, 4067, 4068, 4069, 4070, 4071, 8144,
932 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152,
933 8153, 8154, 8155, 8156, 8157, 8158, 16318, 16319,
934 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
935 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
936 32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
937 32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
938 32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
939 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
940 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
941 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
942 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
943 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
944 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
945 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
946 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
947 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
948 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
949 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
950 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
951 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
952 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
953 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
954 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
955 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
956 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
960 /* Used in CID 1252, 1258 */
961 static const uint8_t dnxhd_1252_ac_bits[257] = {
962 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
963 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
964 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
965 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
966 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
967 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
968 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
969 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
970 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
971 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
972 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
973 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
974 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
975 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
976 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
977 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
981 /* Used in CID 1252, 1258 */
982 static const uint8_t dnxhd_1252_ac_level[257] = {
983 3, 3, 5, 7, 5, 0, 9, 11, 13, 15, 7, 17, 19, 21, 23, 25,
984 27, 29, 9, 11, 31, 33, 35, 37, 13, 39, 41, 43, 45, 47, 49, 15,
985 17, 51, 53, 55, 57, 59, 61, 63, 65, 19, 21, 67, 69, 71, 73, 75,
986 77, 79, 81, 83, 23, 25, 27, 85, 87, 89, 91, 93, 95, 97, 99,101,
987 103,105,107, 29, 31, 33,109,111,113,115,117,119,121,123,125,127,
988 129, 3, 5, 7, 35, 37, 39, 41, 9, 11, 13, 15, 17, 19, 21, 23,
989 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 43, 45, 47, 49, 51, 45,
990 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
991 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,
992 111,113,115,117,119,121,123,125,127,129, 53, 55, 57, 59, 61, 63,
993 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
994 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
995 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
996 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
997 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
998 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
1002 static const uint8_t dnxhd_1252_ac_flags[257] = {
1003 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
1004 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2,
1005 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0,
1006 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1007 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1008 0, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1009 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1,
1010 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1011 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1012 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
1013 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1014 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1015 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1016 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1017 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1018 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1022 const CIDEntry ff_dnxhd_cid_table[] = {
1023 { 1235, 1920, 1080, 0, 917504, 917504, 6, 10, 4,
1024 dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
1025 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1026 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1027 dnxhd_1235_ac_flags,
1028 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1029 { 175, 185, 365, 440 },
1030 { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
1031 { 1237, 1920, 1080, 0, 606208, 606208, 4, 8, 3,
1032 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1033 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1034 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1035 dnxhd_1237_ac_flags,
1036 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1037 { 115, 120, 145, 240, 290 },
1038 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1039 { 1238, 1920, 1080, 0, 917504, 917504, 4, 8, 4,
1040 dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
1041 dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
1042 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1043 dnxhd_1238_ac_flags,
1044 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1045 { 175, 185, 220, 365, 440 },
1046 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1047 { 1241, 1920, 1080, 1, 917504, 458752, 6, 10, 4,
1048 dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
1049 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1050 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1051 dnxhd_1235_ac_flags,
1052 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1054 { { 25, 1 }, { 30000, 1001 } } },
1055 { 1242, 1920, 1080, 1, 606208, 303104, 4, 8, 3,
1056 dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
1057 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1058 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1059 dnxhd_1237_ac_flags,
1060 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1062 { { 25, 1 }, { 30000, 1001 } } },
1063 { 1243, 1920, 1080, 1, 917504, 458752, 4, 8, 4,
1064 dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
1065 dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
1066 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1067 dnxhd_1238_ac_flags,
1068 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1070 { { 25, 1 }, { 30000, 1001 } } },
1071 { 1250, 1280, 720, 0, 458752, 458752, 6, 10, 4,
1072 dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
1073 dnxhd_1250_dc_codes, dnxhd_1250_dc_bits,
1074 dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_level,
1075 dnxhd_1250_ac_flags,
1076 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1077 { 90, 90, 180, 220 },
1078 { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
1079 { 1251, 1280, 720, 0, 458752, 458752, 4, 8, 4,
1080 dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
1081 dnxhd_1251_dc_codes, dnxhd_1251_dc_bits,
1082 dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
1083 dnxhd_1251_ac_flags,
1084 dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
1085 { 90, 90, 110, 180, 220 },
1086 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1087 { 1252, 1280, 720, 0, 303104, 303104, 4, 8, 5,
1088 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1089 dnxhd_1252_dc_codes, dnxhd_1252_dc_bits,
1090 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1091 dnxhd_1252_ac_flags,
1092 dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
1093 { 60, 60, 75, 120, 145 },
1094 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1095 { 1253, 1920, 1080, 0, 188416, 188416, 4, 8, 3,
1096 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1097 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1098 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1099 dnxhd_1237_ac_flags,
1100 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1101 { 36, 36, 45, 75, 90 },
1102 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1103 { 1256, 1920, 1080, 0, 1835008, 1835008, 6, 10, 4,
1104 dnxhd_1235_luma_weight, dnxhd_1256_chroma_weight,
1105 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1106 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1107 dnxhd_1235_ac_flags,
1108 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1109 { 350, 390, 440, 730, 880 },
1110 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1111 { 1258, 960, 720, 0, 212992, 212992, 4, 8, 5,
1112 dnxhd_1258_luma_weight, dnxhd_1258_chroma_weight,
1113 dnxhd_1258_dc_codes, dnxhd_1258_dc_bits,
1114 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1115 dnxhd_1252_ac_flags,
1116 dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
1117 { 42, 60, 75, 115 } },
1121 int ff_dnxhd_get_cid_table(int cid)
1124 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
1125 if (ff_dnxhd_cid_table[i].cid == cid)
1130 int avpriv_dnxhd_get_frame_size(int cid)
1132 int i = ff_dnxhd_get_cid_table(cid);
1135 return ff_dnxhd_cid_table[i].frame_size;
1138 int avpriv_dnxhd_get_interlaced(int cid)
1140 int i = ff_dnxhd_get_cid_table(cid);
1143 return ff_dnxhd_cid_table[i].interlaced;
1146 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
1149 int mbs = avctx->bit_rate / 1000000;
1152 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1153 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1154 if (cid->width == avctx->width && cid->height == avctx->height &&
1155 cid->interlaced == !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) &&
1156 cid->bit_depth == bit_depth) {
1157 for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1158 if (cid->bit_rates[j] == mbs)
1166 void ff_dnxhd_print_profiles(AVCodecContext *avctx, int loglevel)
1169 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1170 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1171 for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1172 if (!cid->bit_rates[j])
1175 av_log(avctx, loglevel, "Frame size: %dx%d%c; bitrate: %dMbps; pixel format: %s; framerate: %d/%d\n",
1176 cid->width, cid->height, cid->interlaced ? 'i' : 'p', cid->bit_rates[j],
1177 cid->bit_depth == 10 ? "yuv422p10" : "yuv422p", cid->frame_rates[j].num, cid->frame_rates[j].den);