FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
dnxhddata.c
Go to the documentation of this file.
1 /*
2  * VC3/DNxHD data.
3  * Copyright (c) 2007 SmartJog S.A., Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
4  *
5  * This file is part of FFmpeg.
6  *
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.
11  *
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.
16  *
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
20  */
21 
22 #include "avcodec.h"
23 #include "dnxhddata.h"
24 #include "libavutil/common.h"
25 
26 /* The quantization tables below are in zigzag order! */
27 
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,
38 };
39 
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,
49 };
50 
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,
61 };
62 
63 /* Used in CID 1237, 1253 */
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,
73 };
74 
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,
84 };
85 
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,
95 };
96 
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,
106 };
107 
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,
117 };
118 
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,
128 };
129 
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,
139 };
140 
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,
150 };
151 
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,
161 };
162 
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,
172 };
173 
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,
183 };
184 
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,
194 };
195 
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,
205 };
206 
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,
216 };
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,
226 };
227 
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,
237 };
238 
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,
248 };
249 
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,
259 };
260 
261 static const uint8_t dnxhd_1259_luma_weight[] = {
262  0, 32, 36, 37, 41, 44, 54, 60,
263  33, 34, 36, 39, 43, 51, 62, 78,
264  34, 36, 38, 41, 49, 59, 73, 79,
265  37, 38, 40, 47, 55, 66, 80, 95,
266  38, 41, 46, 54, 63, 79, 93, 96,
267  46, 47, 56, 64, 78, 90, 97, 98,
268  49, 58, 66, 78, 89, 97, 102, 98,
269  61, 65, 82, 87, 100, 104, 99, 99,
270 };
271 
273  0, 32, 38, 39, 47, 51, 77, 83,
274  36, 39, 41, 48, 55, 74, 85, 95,
275  39, 45, 53, 58, 72, 83, 105, 89,
276  51, 58, 66, 73, 82, 109, 92, 95,
277  57, 75, 78, 89, 105, 95, 93, 96,
278  81, 82, 99, 99, 94, 90, 97, 98,
279  83, 96, 97, 93, 89, 97, 102, 98,
280  90, 94, 92, 88, 100, 104, 99, 99,
281 };
282 
283 static const uint8_t dnxhd_1260_luma_weight[] = {
284  0, 32, 37, 37, 40, 41, 52, 53,
285  33, 36, 36, 38, 40, 48, 49, 52,
286  34, 34, 37, 39, 44, 47, 49, 54,
287  33, 35, 38, 40, 45, 46, 54, 51,
288  34, 37, 37, 42, 44, 49, 52, 48,
289  34, 34, 38, 43, 44, 51, 50, 50,
290  33, 36, 41, 44, 51, 52, 50, 54,
291  36, 38, 44, 47, 53, 53, 54, 54,
292 };
293 
295  0, 32, 40, 38, 42, 40, 45, 45,
296  34, 42, 36, 43, 38, 46, 46, 49,
297  38, 35, 43, 39, 44, 47, 47, 49,
298  35, 42, 43, 42, 46, 47, 49, 52,
299  38, 43, 43, 44, 50, 49, 56, 50,
300  42, 43, 44, 50, 51, 57, 52, 53,
301  41, 45, 46, 53, 53, 56, 53, 54,
302  46, 46, 51, 49, 56, 53, 58, 58,
303 };
304 
305 /* Used in CID 1235, 1241, 1250, 1256 */
306 static const uint8_t dnxhd_1235_dc_codes[14] = {
307  10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
308 };
309 
310 /* Used in CID 1235, 1241, 1250, 1256 */
311 static const uint8_t dnxhd_1235_dc_bits[14] = {
312  4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
313 };
314 
315 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */
316 static const uint8_t dnxhd_1237_dc_codes[12] = {
317  0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
318 };
319 
320 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */
321 static const uint8_t dnxhd_1237_dc_bits[12] = {
322  3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
323 };
324 
325 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
326 static const uint16_t dnxhd_1237_ac_codes[257] = {
327  0, 1, 4, 5, 12, 26, 27, 56,
328  57, 58, 59, 120, 121, 244, 245, 246,
329  247, 248, 498, 499, 500, 501, 502, 1006,
330  1007, 1008, 1009, 1010, 1011, 2024, 2025, 2026,
331  2027, 2028, 2029, 2030, 2031, 4064, 4065, 4066,
332  4067, 4068, 4069, 4070, 4071, 4072, 4073, 8148,
333  8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
334  8157, 8158, 16318, 16319, 16320, 16321, 16322, 16323,
335  16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
336  16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
337  32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
338  32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
339  65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
340  65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
341  65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
342  65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
343  65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
344  65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
345  65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
346  65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
347  65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
348  65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
349  65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
350  65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
351  65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
352  65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
353  65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
354  65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
355  65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
356  65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
357  65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
358  65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
359  65535,
360 };
361 
362 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
363 static const uint8_t dnxhd_1237_ac_bits[257] = {
364  2, 2, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8,
365  8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
366  11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
367  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
368  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
369  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 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,
378  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
379  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
380  16,
381 };
382 
383 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
384 static const uint8_t dnxhd_1237_ac_level[257] = {
385  3, 3, 5, 0, 7, 9, 5, 11, 13, 15, 7, 17, 19, 21, 23, 25,
386  9, 11, 27, 29, 31, 33, 13, 35, 37, 39, 41, 43, 15, 45, 47, 49,
387  51, 53, 55, 17, 19, 57, 59, 61, 63, 65, 67, 69, 21, 23, 25, 71,
388  73, 75, 77, 79, 81, 83, 27, 29, 31, 33, 85, 87, 89, 91, 93, 95,
389  97, 99,101,103,105, 35, 37, 39, 41, 43,107,109,111,113,115,117,
390  119,121,123,129, 3, 45, 47, 49, 51, 53, 55,125,127, 5, 7, 9,
391  11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41,
392  43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73,
393  75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
394  107,109,111,113,115,117,119,121,123,125,127,129, 57, 59, 61, 63,
395  65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
396  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
397  129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
398  33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
399  65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
400  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
401  129,
402 };
403 
404 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
405 static const uint8_t dnxhd_1237_ac_flags[257] = {
406  0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0,
407  2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
408  0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
409  0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
410  0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
411  0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1,
412  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
413  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 2,
416  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
417  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
418  2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
419  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
420  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
421  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
422  3,
423 };
424 
425 /* Used in CID 1238, 1243 */
426 static const uint16_t dnxhd_1238_ac_codes[257] = {
427  0, 1, 4, 10, 11, 24, 25, 26,
428  54, 55, 56, 57, 116, 117, 118, 119,
429  240, 241, 242, 243, 244, 245, 492, 493,
430  494, 495, 496, 497, 498, 499, 1000, 1001,
431  1002, 1003, 1004, 1005, 1006, 1007, 1008, 2018,
432  2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
433  2027, 4056, 4057, 4058, 4059, 4060, 4061, 4062,
434  4063, 4064, 4065, 4066, 4067, 4068, 4069, 8140,
435  8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148,
436  8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
437  16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
438  16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
439  16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
440  16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
441  32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
442  32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
443  32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
444  65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
445  65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
446  65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
447  65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
448  65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
449  65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
450  65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
451  65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
452  65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
453  65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
454  65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
455  65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
456  65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
457  65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
458  65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
459  65535,
460 };
461 
462 /* Used in CID 1238, 1243 */
463 static const uint8_t dnxhd_1238_ac_bits[257] = {
464  2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
465  8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,
466  10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
467  11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
468  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
469  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
470  14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
471  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
472  15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
473  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
474  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
475  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
476  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
477  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
478  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
479  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
480  16,
481 };
482 
483 /* Used in CID 1238, 1243 */
484 static const uint8_t dnxhd_1238_ac_level[257] = {
485  3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
486  25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 15, 47, 49,
487  51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 21,
488  23, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 25, 27, 29, 99,
489  101,103,105,107,109,111,113,115,117,119,121,123, 31, 33, 35, 37,
490  125,127,129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27,
491  29, 31, 33, 39, 41, 43, 45, 47, 49, 35, 37, 39, 41, 43, 45, 47,
492  49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 81, 51,
493  53, 55, 57, 59, 61, 77, 79, 83, 85, 87, 89, 91, 93, 95, 97, 99,
494  101,103,105,107,109,111,113,115,117,119,121,123,125,127,129, 63,
495  65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
496  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
497  129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
498  33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
499  65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
500  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
501  129,
502 }; /* 0 is EOB */
503 
504 static const uint8_t dnxhd_1238_ac_flags[257] = {
505  0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
506  0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
507  0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2,
508  2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
509  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2,
510  0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
511  1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
512  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
513  2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
514  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
515  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
516  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
517  2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
518  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
519  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
520  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
521  3,
522 };
523 
524 /* Used in CID 1235, 1241, 1256 */
525 static const uint16_t dnxhd_1235_ac_codes[257] = {
526  0, 1, 4, 10, 11, 24, 25, 26,
527  54, 55, 56, 57, 116, 117, 118, 119,
528  240, 241, 242, 243, 244, 245, 492, 493,
529  494, 495, 496, 497, 498, 998, 999, 1000,
530  1001, 1002, 1003, 1004, 1005, 1006, 1007, 2016,
531  2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
532  2025, 2026, 4054, 4055, 4056, 4057, 4058, 4059,
533  4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067,
534  4068, 4069, 8140, 8141, 8142, 8143, 8144, 8145,
535  8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153,
536  8154, 8155, 8156, 8157, 16316, 16317, 16318, 16319,
537  16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
538  16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
539  16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
540  32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
541  32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
542  32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
543  32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
544  65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
545  65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
546  65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
547  65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
548  65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
549  65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
550  65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
551  65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
552  65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
553  65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
554  65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
555  65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
556  65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
557  65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
558  65535,
559 };
560 
561 /* Used in CID 1235, 1241, 1256 */
562 static const uint8_t dnxhd_1235_ac_bits[257] = {
563  2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
564  8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
565  10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
566  11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
567  12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
568  13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
569  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
570  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
571  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
572  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
573  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
574  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
575  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
576  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
577  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
578  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
579  16,
580 };
581 
582 /* Used in CID 1235, 1241, 1256 */
583 static const uint8_t dnxhd_1235_ac_level[257] = {
584  3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
585  25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 15, 45, 47, 49,
586  51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 77,
587  21, 23, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101, 25, 27,
588  29, 31,103,105,107,109,111,113,115,117,119,121,123,125,127, 3,
589  33, 35, 37, 39,129, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25,
590  27, 29, 31, 33, 35, 41, 43, 45, 47, 49, 37, 39, 41, 43, 45, 47,
591  49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
592  81, 83, 85, 51, 53, 55, 57, 59, 61, 63, 65, 87, 89, 91, 93, 95,
593  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
594  129, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
595  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
596  129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
597  33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
598  65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
599  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
600  129,
601 };
602 
603 /* Used in CID 1235, 1241, 1256 */
604 static const uint8_t dnxhd_1235_ac_flags[257] = {
605  0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
606  0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
607  0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
608  2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
609  2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
610  2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
611  1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
612  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
613  1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
614  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
615  1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
616  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
617  2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
618  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
619  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
620  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
621  3,
622 };
623 
624 static const uint16_t dnxhd_1250_ac_codes[257] = {
625  0, 1, 4, 10, 11, 24, 25, 26,
626  54, 55, 56, 57, 116, 117, 118, 119,
627  240, 241, 242, 243, 244, 245, 492, 493,
628  494, 495, 496, 497, 498, 998, 999, 1000,
629  1001, 1002, 1003, 1004, 1005, 1006, 2014, 2015,
630  2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
631  2024, 2025, 4052, 4053, 4054, 4055, 4056, 4057,
632  4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065,
633  4066, 4067, 8136, 8137, 8138, 8139, 8140, 8141,
634  8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149,
635  8150, 8151, 8152, 8153, 8154, 8155, 8156, 16314,
636  16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
637  16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
638  16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
639  32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
640  32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
641  32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
642  32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
643  32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
644  65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
645  65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
646  65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
647  65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
648  65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
649  65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
650  65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
651  65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
652  65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
653  65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
654  65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
655  65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
656  65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
657  65535
658 };
659 static const uint8_t dnxhd_1250_ac_bits[257] = {
660  2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
661  8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
662  10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
663  11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
664  12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
665  13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
666  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
667  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
668  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
669  15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
670  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
671  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
672  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
673  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
674  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
675  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
676  16
677 };
678 static const uint8_t dnxhd_1250_ac_level[257] = {
679  3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
680  25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 47, 49, 51,
681  53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
682  19, 21, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105, 23,
683  25, 27,107,109,111,113,115,117,119,121,123,125,127,129, 3, 5,
684  7, 9, 11, 29, 31, 33, 35, 13, 15, 17, 19, 21, 23, 25, 27, 29,
685  31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 37, 39, 41, 43,
686  55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85,
687  87, 89, 91, 93, 95, 97, 99,101,103,105,107,111,113, 45, 47, 49,
688  51, 53, 55,109,115,117,119,121,123,125,127,129, 57, 59, 61, 63,
689  65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
690  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
691  129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
692  33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
693  65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
694  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
695  129
696 };
697 static const uint8_t dnxhd_1250_ac_flags[257] = {
698  0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
699  0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
700  0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
701  2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
702  2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
703  1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
704  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
705  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
706  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
707  2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
708  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
709  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
710  2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
711  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
712  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
713  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
714  3,
715 };
716 
717 static const uint16_t dnxhd_1251_ac_codes[257] = {
718  0, 1, 4, 10, 11, 24, 25, 26,
719  54, 55, 56, 57, 116, 117, 118, 119,
720  240, 241, 242, 243, 244, 245, 492, 493,
721  494, 495, 496, 497, 996, 997, 998, 999,
722  1000, 1001, 1002, 1003, 1004, 1005, 2012, 2013,
723  2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
724  2022, 2023, 2024, 2025, 4052, 4053, 4054, 4055,
725  4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063,
726  4064, 4065, 4066, 8134, 8135, 8136, 8137, 8138,
727  8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146,
728  8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154,
729  8155, 8156, 16314, 16315, 16316, 16317, 16318, 16319,
730  16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
731  16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
732  16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
733  32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
734  32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
735  32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
736  32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
737  65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
738  65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
739  65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
740  65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
741  65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
742  65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
743  65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
744  65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
745  65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
746  65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
747  65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
748  65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
749  65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
750  65535,
751 };
752 
753 static const uint8_t dnxhd_1251_ac_bits[257] = {
754  2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
755  8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
756  10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
757  11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
758  12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
759  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
760  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
761  14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
762  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
763  15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
764  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
765  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
766  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
767  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
768  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
769  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
770  16,
771 };
772 
773 static const uint8_t dnxhd_1251_ac_level[257] = {
774  3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
775  25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 45, 47, 49, 51,
776  53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
777  81, 19, 21, 23, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
778  25, 27, 29,107,109,111,113,115,117,119,121,123,125,127,129, 3,
779  5, 7, 9, 11, 13, 15, 17, 31, 33, 35, 19, 21, 23, 25, 27, 29,
780  31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 37,
781  39, 41, 43, 45, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83,
782  85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,111,113,115,
783  117, 47, 49, 51, 53, 55, 57,119,121,123,125,127,129, 59, 61, 63,
784  65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
785  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
786  129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
787  33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
788  65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
789  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
790  129,
791 };
792 
793 static const uint8_t dnxhd_1251_ac_flags[257] = {
794  0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
795  0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
796  0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
797  0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
798  2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
799  1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1,
800  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
801  2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
802  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
803  1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2,
804  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
805  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
806  2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
807  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
808  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
809  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
810  3,
811 };
812 
813 /* Used in CID 1252, 1258 */
814 static const uint16_t dnxhd_1252_ac_codes[257] = {
815  0, 1, 4, 10, 11, 12, 26, 27,
816  56, 57, 58, 118, 119, 120, 242, 243,
817  244, 245, 246, 247, 496, 497, 498, 499,
818  500, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
819  1009, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
820  2027, 2028, 2029, 4060, 4061, 4062, 4063, 4064,
821  4065, 4066, 4067, 4068, 4069, 4070, 4071, 8144,
822  8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152,
823  8153, 8154, 8155, 8156, 8157, 8158, 16318, 16319,
824  16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
825  16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
826  32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
827  32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
828  32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
829  65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
830  65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
831  65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
832  65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
833  65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
834  65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
835  65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
836  65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
837  65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
838  65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
839  65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
840  65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
841  65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
842  65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
843  65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
844  65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
845  65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
846  65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
847  65535,
848 };
849 
850 /* Used in CID 1252, 1258 */
851 static const uint8_t dnxhd_1252_ac_bits[257] = {
852  2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
853  8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
854  10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
855  12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
856  13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
857  14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
858  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
859  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
860  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
861  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
862  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
863  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
864  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
865  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
866  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
867  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
868  16,
869 };
870 
871 /* Used in CID 1252, 1258 */
872 static const uint8_t dnxhd_1252_ac_level[257] = {
873  3, 3, 5, 7, 5, 0, 9, 11, 13, 15, 7, 17, 19, 21, 23, 25,
874  27, 29, 9, 11, 31, 33, 35, 37, 13, 39, 41, 43, 45, 47, 49, 15,
875  17, 51, 53, 55, 57, 59, 61, 63, 65, 19, 21, 67, 69, 71, 73, 75,
876  77, 79, 81, 83, 23, 25, 27, 85, 87, 89, 91, 93, 95, 97, 99,101,
877  103,105,107, 29, 31, 33,109,111,113,115,117,119,121,123,125,127,
878  129, 3, 5, 7, 35, 37, 39, 41, 9, 11, 13, 15, 17, 19, 21, 23,
879  25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 43, 45, 47, 49, 51, 45,
880  47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
881  79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,
882  111,113,115,117,119,121,123,125,127,129, 53, 55, 57, 59, 61, 63,
883  65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
884  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
885  129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
886  33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
887  65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
888  97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
889  129,
890 };
891 
892 static const uint8_t dnxhd_1252_ac_flags[257] = {
893  0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
894  0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2,
895  2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0,
896  0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
897  0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
898  0, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
899  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1,
900  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
901  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
902  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
903  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
904  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
905  2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
906  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
907  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
908  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
909  3,
910 };
911 
912 /* Used in CID 1235, 1238, 1241, 1256 */
913 static const uint16_t dnxhd_1235_run_codes[62] = {
914  0, 4, 10, 11, 24, 25, 26, 27,
915  56, 57, 58, 59, 120, 242, 486, 487,
916  488, 489, 980, 981, 982, 983, 984, 985,
917  986, 987, 988, 989, 990, 991, 992, 993,
918  994, 995, 996, 997, 998, 999, 1000, 1001,
919  1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
920  1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
921  1018, 1019, 1020, 1021, 1022, 1023,
922 };
923 
924 /* Used in CID 1235, 1238, 1241, 1243, 1256 */
925 static const uint8_t dnxhd_1235_run_bits[62] = {
926  1, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9,
927  9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
928  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
929  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
930 };
931 
932 /* Used in CID 1235, 1241, 1256 */
933 static const uint8_t dnxhd_1235_run[62] = {
934  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
935  18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
936  33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
937  49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
938 };
939 
940 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
941 static const uint16_t dnxhd_1237_run_codes[62] = {
942  0, 4, 10, 11, 24, 25, 26, 54,
943  55, 56, 57, 58, 118, 119, 240, 482,
944  483, 484, 485, 486, 487, 488, 489, 490,
945  491, 492, 493, 494, 990, 991, 992, 993,
946  994, 995, 996, 997, 998, 999, 1000, 1001,
947  1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
948  1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
949  1018, 1019, 1020, 1021, 1022, 1023,
950 };
951 
952 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
953 static const uint8_t dnxhd_1237_run_bits[62] = {
954  1, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9,
955  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
956  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
957  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
958 };
959 
960 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
961 static const uint8_t dnxhd_1237_run[62] = {
962  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
963  17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
964  26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
965  42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
966 };
967 
968 static const uint8_t dnxhd_1238_run[62] = {
969  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
970  20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
971  33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
972  49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
973 };
974 
975 /* Used in CID 1250, 1251, 1252, 1258 */
976 static const uint16_t dnxhd_1250_run_codes[62] = {
977  0, 4, 5, 12, 26, 27, 28, 58,
978  118, 119, 120, 242, 486, 487, 976, 977,
979  978, 979, 980, 981, 982, 983, 984, 985,
980  986, 987, 988, 989, 990, 991, 992, 993,
981  994, 995, 996, 997, 998, 999, 1000, 1001,
982  1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
983  1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
984  1018, 1019, 1020, 1021, 1022, 1023,
985 };
986 
987 /* Used in CID 1250, 1251, 1252, 1258 */
988 static const uint8_t dnxhd_1250_run_bits[62] = {
989  1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
990  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
991  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
992  10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
993 };
994 
995 /* Used in CID 1250, 1251, 1252, 1258 */
996 static const uint8_t dnxhd_1250_run[62] = {
997  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
998  17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
999  33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1000  49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1001 };
1002 
1004  { 1235, 1920, 1080, 0, 917504, 917504, 6, 10, 4,
1010  { 175, 185, 365, 440 },
1011  { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
1012  { 1237, 1920, 1080, 0, 606208, 606208, 4, 8, 3,
1018  { 115, 120, 145, 240, 290 },
1019  { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1020  { 1238, 1920, 1080, 0, 917504, 917504, 4, 8, 4,
1026  { 175, 185, 220, 365, 440 },
1027  { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1028  { 1241, 1920, 1080, 1, 917504, 458752, 6, 10, 4,
1034  { 185, 220 },
1035  { { 25, 1 }, { 30000, 1001 } } },
1036  { 1242, 1920, 1080, 1, 606208, 303104, 4, 8, 3,
1042  { 120, 145 },
1043  { { 25, 1 }, { 30000, 1001 } } },
1044  { 1243, 1920, 1080, 1, 917504, 458752, 4, 8, 4,
1050  { 185, 220 },
1051  { { 25, 1 }, { 30000, 1001 } } },
1052  { 1250, 1280, 720, 0, 458752, 458752, 6, 10, 4,
1058  { 90, 90, 180, 220 },
1059  { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
1060  { 1251, 1280, 720, 0, 458752, 458752, 4, 8, 4,
1066  { 90, 90, 110, 180, 220 },
1067  { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1068  { 1252, 1280, 720, 0, 303104, 303104, 4, 8, 5,
1074  { 60, 60, 75, 120, 145 },
1075  { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1076  { 1253, 1920, 1080, 0, 188416, 188416, 4, 8, 3,
1082  { 36, 36, 45, 75, 90 },
1083  { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1084  { 1256, 1920, 1080, 0, 1835008, 1835008, 6, 10, 4,
1090  { 350, 390, 440, 730, 880 },
1091  { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1092  { 1258, 960, 720, 0, 212992, 212992, 4, 8, 5,
1098  { 42, 60, 75, 115 } },
1099  { 1259, 1440, 1080, 0, 417792, 417792, 4, 8, 3,
1105  { 63, 84, 100, 110 } },
1106  { 1260, 1440, 1080, 1, 835584, 417792, 4, 8, 3,
1112  { 80, 90, 100, 110 } },
1113 };
1114 
1116 {
1117  int i;
1118  for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
1119  if (ff_dnxhd_cid_table[i].cid == cid)
1120  return i;
1121  return -1;
1122 }
1123 
1125 {
1126  int i = ff_dnxhd_get_cid_table(cid);
1127  if (i<0)
1128  return i;
1129  return ff_dnxhd_cid_table[i].frame_size;
1130 }
1131 
1133 {
1134  int i = ff_dnxhd_get_cid_table(cid);
1135  if (i < 0)
1136  return i;
1137  return ff_dnxhd_cid_table[i].interlaced;
1138 }
1139 
1141 {
1142  int i, j;
1143  int mbs = avctx->bit_rate / 1000000;
1144  if (!mbs)
1145  return 0;
1146  for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1147  const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1148  if (cid->width == avctx->width && cid->height == avctx->height &&
1149  cid->interlaced == !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) &&
1150  cid->bit_depth == bit_depth) {
1151  for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1152  if (cid->bit_rates[j] == mbs)
1153  return cid->cid;
1154  }
1155  }
1156  }
1157  return 0;
1158 }
1159 
1160 void ff_dnxhd_print_profiles(AVCodecContext *avctx, int loglevel)
1161 {
1162  int i, j;
1163  for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1164  const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1165  for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1166  if (!cid->bit_rates[j])
1167  break;
1168 
1169  av_log(avctx, loglevel, "Frame size: %dx%d%c; bitrate: %dMbps; pixel format: %s; framerate: %d/%d\n",
1170  cid->width, cid->height, cid->interlaced ? 'i' : 'p', cid->bit_rates[j],
1171  cid->bit_depth == 10 ? "yuv422p10" : "yuv422p", cid->frame_rates[j].num, cid->frame_rates[j].den);
1172  }
1173  }
1174 }
static const uint8_t dnxhd_1237_ac_flags[257]
Definition: dnxhddata.c:405
static const uint8_t dnxhd_1252_ac_flags[257]
Definition: dnxhddata.c:892
static const uint8_t dnxhd_1237_run_bits[62]
Definition: dnxhddata.c:953
AVRational frame_rates[5]
Definition: dnxhddata.h:46
static const uint8_t dnxhd_1238_chroma_weight[]
Definition: dnxhddata.c:86
static const uint8_t dnxhd_1251_ac_flags[257]
Definition: dnxhddata.c:793
#define AV_CODEC_FLAG_INTERLACED_DCT
Use interlaced DCT.
Definition: avcodec.h:776
static const uint8_t dnxhd_1242_luma_weight[]
Definition: dnxhddata.c:119
static const uint8_t dnxhd_1250_luma_weight[]
Definition: dnxhddata.c:163
static const uint8_t dnxhd_1250_run_bits[62]
Definition: dnxhddata.c:988
int num
numerator
Definition: rational.h:44
static const uint8_t dnxhd_1259_luma_weight[]
Definition: dnxhddata.c:261
static const uint8_t dnxhd_1259_chroma_weight[]
Definition: dnxhddata.c:272
const CIDEntry ff_dnxhd_cid_table[]
Definition: dnxhddata.c:1003
static const uint8_t dnxhd_1237_ac_level[257]
Definition: dnxhddata.c:384
static const uint8_t dnxhd_1250_ac_level[257]
Definition: dnxhddata.c:678
static const uint8_t dnxhd_1251_ac_level[257]
Definition: dnxhddata.c:773
int avpriv_dnxhd_get_interlaced(int cid)
Definition: dnxhddata.c:1132
static const uint8_t dnxhd_1242_chroma_weight[]
Definition: dnxhddata.c:130
static const uint16_t dnxhd_1238_ac_codes[257]
Definition: dnxhddata.c:426
static const uint8_t dnxhd_1237_run[62]
Definition: dnxhddata.c:961
static const uint8_t dnxhd_1251_ac_bits[257]
Definition: dnxhddata.c:753
static const uint8_t dnxhd_1243_chroma_weight[]
Definition: dnxhddata.c:152
int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
Definition: dnxhddata.c:1140
int interlaced
Definition: dnxhddata.h:32
uint8_t
int avpriv_dnxhd_get_frame_size(int cid)
Definition: dnxhddata.c:1124
static const uint8_t dnxhd_1252_ac_bits[257]
Definition: dnxhddata.c:851
static const uint8_t dnxhd_1251_chroma_weight[]
Definition: dnxhddata.c:196
static const uint16_t dnxhd_1251_ac_codes[257]
Definition: dnxhddata.c:717
static const uint16_t dnxhd_1250_run_codes[62]
Definition: dnxhddata.c:976
#define av_log(a,...)
static const uint8_t dnxhd_1238_ac_level[257]
Definition: dnxhddata.c:484
int ff_dnxhd_get_cid_table(int cid)
Definition: dnxhddata.c:1115
unsigned int width
Definition: dnxhddata.h:31
static const uint8_t dnxhd_1238_ac_bits[257]
Definition: dnxhddata.c:463
static const uint8_t dnxhd_1252_ac_level[257]
Definition: dnxhddata.c:872
static const uint8_t dnxhd_1235_ac_flags[257]
Definition: dnxhddata.c:604
static const uint16_t dnxhd_1237_run_codes[62]
Definition: dnxhddata.c:941
int flags
AV_CODEC_FLAG_*.
Definition: avcodec.h:1597
static const uint8_t dnxhd_1241_chroma_weight[]
Definition: dnxhddata.c:108
static const uint8_t dnxhd_1258_luma_weight[]
Definition: dnxhddata.c:239
static const uint16_t dnxhd_1250_ac_codes[257]
Definition: dnxhddata.c:624
Libavcodec external API header.
static const uint8_t dnxhd_1237_dc_codes[12]
Definition: dnxhddata.c:316
static const uint8_t dnxhd_1237_luma_weight[]
Definition: dnxhddata.c:52
static const uint8_t dnxhd_1237_dc_bits[12]
Definition: dnxhddata.c:321
int bit_rate
the average bitrate
Definition: avcodec.h:1567
static const uint8_t dnxhd_1258_chroma_weight[]
Definition: dnxhddata.c:250
static const uint16_t dnxhd_1237_ac_codes[257]
Definition: dnxhddata.c:326
int width
picture width / height.
Definition: avcodec.h:1681
static const uint16_t dnxhd_1252_ac_codes[257]
Definition: dnxhddata.c:814
static const uint8_t dnxhd_1238_luma_weight[]
Definition: dnxhddata.c:75
static const uint8_t dnxhd_1250_ac_flags[257]
Definition: dnxhddata.c:697
static const uint8_t dnxhd_1235_ac_level[257]
Definition: dnxhddata.c:583
static const uint8_t dnxhd_1243_luma_weight[]
Definition: dnxhddata.c:141
void ff_dnxhd_print_profiles(AVCodecContext *avctx, int loglevel)
Definition: dnxhddata.c:1160
static const uint8_t dnxhd_1250_chroma_weight[]
Definition: dnxhddata.c:174
#define FF_ARRAY_ELEMS(a)
static const uint8_t dnxhd_1250_run[62]
Definition: dnxhddata.c:996
int bit_depth
Definition: dnxhddata.h:36
static const uint8_t dnxhd_1235_run[62]
Definition: dnxhddata.c:933
static const uint8_t dnxhd_1260_luma_weight[]
Definition: dnxhddata.c:283
main external API structure.
Definition: avcodec.h:1502
static const uint8_t dnxhd_1252_luma_weight[]
Definition: dnxhddata.c:207
static const uint8_t dnxhd_1238_ac_flags[257]
Definition: dnxhddata.c:504
unsigned int height
Definition: dnxhddata.h:31
static const uint16_t dnxhd_1235_ac_codes[257]
Definition: dnxhddata.c:525
unsigned int frame_size
Definition: dnxhddata.h:33
static const uint8_t dnxhd_1260_chroma_weight[]
Definition: dnxhddata.c:294
static const uint8_t dnxhd_1235_dc_codes[14]
Definition: dnxhddata.c:306
static const uint8_t dnxhd_1235_ac_bits[257]
Definition: dnxhddata.c:562
common internal and external API header
static const uint8_t dnxhd_1235_dc_bits[14]
Definition: dnxhddata.c:311
static unsigned bit_depth(uint64_t mask)
Definition: af_astats.c:128
int den
denominator
Definition: rational.h:45
static const uint8_t dnxhd_1237_ac_bits[257]
Definition: dnxhddata.c:363
static const uint8_t dnxhd_1251_luma_weight[]
Definition: dnxhddata.c:185
static const uint8_t dnxhd_1250_ac_bits[257]
Definition: dnxhddata.c:659
int bit_rates[5]
Helper to choose variants, rounded to nearest 5Mb/s.
Definition: dnxhddata.h:45
static const uint8_t dnxhd_1256_chroma_weight[]
Definition: dnxhddata.c:228
static const uint8_t dnxhd_1241_luma_weight[]
Definition: dnxhddata.c:97
static const uint8_t dnxhd_1237_chroma_weight[]
Definition: dnxhddata.c:64
int cid
Definition: dnxhddata.h:30
static const uint8_t dnxhd_1235_chroma_weight[]
Definition: dnxhddata.c:40
static const uint8_t dnxhd_1238_run[62]
Definition: dnxhddata.c:968
static const uint8_t dnxhd_1235_run_bits[62]
Definition: dnxhddata.c:925
static const uint8_t dnxhd_1252_chroma_weight[]
Definition: dnxhddata.c:217
static const uint16_t dnxhd_1235_run_codes[62]
Definition: dnxhddata.c:913
static const uint8_t dnxhd_1235_luma_weight[]
Definition: dnxhddata.c:29