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