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