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