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