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