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