3 * Copyright (c) 2007 SmartJog S.A., Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
5 * This file is part of Libav.
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.
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.
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
23 #include "dnxhddata.h"
24 #include "libavutil/common.h"
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
37 static const uint8_t dnxhd_1235_chroma_weight[] = {
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
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,
59 static const uint8_t dnxhd_1237_chroma_weight[] = {
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,
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,
81 static const uint8_t dnxhd_1238_chroma_weight[] = {
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,
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,
103 static const uint8_t dnxhd_1241_chroma_weight[] = {
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,
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,
125 static const uint8_t dnxhd_1242_chroma_weight[] = {
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,
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,
147 static const uint8_t dnxhd_1243_chroma_weight[] = {
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,
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
169 static const uint8_t dnxhd_1250_chroma_weight[] = {
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
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,
191 static const uint8_t dnxhd_1251_chroma_weight[] = {
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,
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,
212 static const uint8_t dnxhd_1252_chroma_weight[] = {
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,
223 static const uint8_t dnxhd_1256_chroma_weight[] = {
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,
234 static const uint8_t dnxhd_1258_luma_weight[] = {
235 0, 32, 36, 36, 40, 40, 55, 60,
236 34, 36, 37, 40, 41, 48, 57, 82,
237 35, 36, 41, 41, 46, 52, 73, 82,
238 37, 40, 42, 45, 50, 65, 80, 87,
239 39, 41, 44, 49, 62, 78, 88, 90,
240 41, 44, 49, 58, 73, 90, 95, 95,
241 43, 52, 55, 68, 90, 100, 97, 93,
242 52, 53, 71, 82, 107, 103, 99, 99,
245 static const uint8_t dnxhd_1258_chroma_weight[] = {
246 0, 32, 37, 38, 49, 53, 65, 66,
247 35, 37, 40, 49, 56, 64, 65, 82,
248 36, 42, 50, 56, 64, 67, 73, 85,
249 46, 50, 57, 63, 71, 72, 89, 87,
250 49, 58, 65, 72, 78, 88, 88, 90,
251 60, 64, 74, 81, 84, 90, 95, 134,
252 62, 74, 77, 80, 90, 114, 129, 125,
253 74, 74, 90, 100, 128, 125, 116, 116,
256 static const uint8_t dnxhd_1237_dc_codes[12] = {
257 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
260 static const uint8_t dnxhd_1237_dc_bits[12] = {
261 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
264 static const uint16_t dnxhd_1237_ac_codes[257] = {
265 0, 1, 4, 5, 12, 26, 27, 56,
266 57, 58, 59, 120, 121, 244, 245, 246,
267 247, 248, 498, 499, 500, 501, 502, 1006,
268 1007, 1008, 1009, 1010, 1011, 2024, 2025, 2026,
269 2027, 2028, 2029, 2030, 2031, 4064, 4065, 4066,
270 4067, 4068, 4069, 4070, 4071, 4072, 4073, 8148,
271 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
272 8157, 8158, 16318, 16319, 16320, 16321, 16322, 16323,
273 16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
274 16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
275 32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
276 32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
277 65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
278 65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
279 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
280 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
281 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
282 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
283 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
284 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
285 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
286 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
287 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
288 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
289 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
290 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
291 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
292 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
293 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
294 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
295 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
296 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
300 static const uint8_t dnxhd_1237_ac_bits[257] = {
301 2, 2, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8,
302 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
303 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
304 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
305 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
306 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
307 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
308 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
309 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
310 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
311 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
312 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
313 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
314 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
315 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
316 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
320 static const uint8_t dnxhd_1237_ac_level[257] = {
321 1, 1, 2, 0, 3, 4, 2, 5, 6, 7, 3, 8, 9, 10, 11, 12,
322 4, 5, 13, 14, 15, 16, 6, 17, 18, 19, 20, 21, 7, 22, 23, 24,
323 25, 26, 27, 8, 9, 28, 29, 30, 31, 32, 33, 34, 10, 11, 12, 35,
324 36, 37, 38, 39, 40, 41, 13, 14, 15, 16, 42, 43, 44, 45, 46, 47,
325 48, 49, 50, 51, 52, 17, 18, 19, 20, 21, 53, 54, 55, 56, 57, 58,
326 59, 60, 61, 64, 1, 22, 23, 24, 25, 26, 27, 62, 63, 2, 3, 4,
327 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
328 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
329 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
330 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
331 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
332 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
333 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
334 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
335 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
336 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
340 static const uint8_t dnxhd_1237_ac_run_flag[257] = {
341 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
342 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
343 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
344 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
345 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
346 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 1, 1,
351 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
356 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
360 static const uint8_t dnxhd_1237_ac_index_flag[257] = {
361 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
363 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
366 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
367 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
368 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
369 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
370 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
373 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
374 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
375 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
376 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
380 static const uint16_t dnxhd_1237_run_codes[62] = {
381 0, 4, 10, 11, 24, 25, 26, 54,
382 55, 56, 57, 58, 118, 119, 240, 482,
383 483, 484, 485, 486, 487, 488, 489, 490,
384 491, 492, 493, 494, 990, 991, 992, 993,
385 994, 995, 996, 997, 998, 999, 1000, 1001,
386 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
387 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
388 1018, 1019, 1020, 1021, 1022, 1023,
391 static const uint8_t dnxhd_1237_run_bits[62] = {
392 1, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9,
393 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
394 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
395 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
398 static const uint8_t dnxhd_1237_run[62] = {
399 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
400 17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
401 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
402 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
405 static const uint8_t dnxhd_1238_dc_codes[12] = {
406 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
409 static const uint8_t dnxhd_1238_dc_bits[12] = {
410 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
413 static const uint16_t dnxhd_1238_ac_codes[257] = {
414 0, 1, 4, 10, 11, 24, 25, 26,
415 54, 55, 56, 57, 116, 117, 118, 119,
416 240, 241, 242, 243, 244, 245, 492, 493,
417 494, 495, 496, 497, 498, 499, 1000, 1001,
418 1002, 1003, 1004, 1005, 1006, 1007, 1008, 2018,
419 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
420 2027, 4056, 4057, 4058, 4059, 4060, 4061, 4062,
421 4063, 4064, 4065, 4066, 4067, 4068, 4069, 8140,
422 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148,
423 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
424 16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
425 16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
426 16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
427 16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
428 32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
429 32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
430 32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
431 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
432 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
433 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
434 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
435 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
436 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
437 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
438 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
439 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
440 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
441 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
442 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
443 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
444 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
445 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
449 static const uint8_t dnxhd_1238_ac_bits[257] = {
450 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
451 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,
452 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
453 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
454 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
455 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
456 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
457 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
458 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
459 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
460 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
461 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
462 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
463 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
464 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
465 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
469 static const uint8_t dnxhd_1238_ac_level[257] = {
470 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
471 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 22, 6, 7, 23, 24,
472 25, 26, 27, 28, 29, 8, 9, 30, 31, 32, 33, 34, 35, 36, 37, 10,
473 11, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 12, 13, 14, 49,
474 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 15, 16, 17, 18,
475 62, 63, 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
476 14, 15, 16, 19, 20, 21, 22, 23, 24, 17, 18, 19, 20, 21, 22, 23,
477 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 25,
478 26, 27, 28, 29, 30, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49,
479 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 31,
480 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
481 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
482 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
483 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
484 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
485 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
489 static const uint8_t dnxhd_1238_ac_run_flag[257] = {
490 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
491 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
492 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
493 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
496 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
498 1, 1, 1, 1, 1, 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, 1,
500 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
505 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
509 static const uint8_t dnxhd_1238_ac_index_flag[257] = {
510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
515 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
516 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
517 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
518 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
519 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
522 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
523 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
524 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
525 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
529 static const uint16_t dnxhd_1235_1238_1241_run_codes[62] = {
530 0, 4, 10, 11, 24, 25, 26, 27,
531 56, 57, 58, 59, 120, 242, 486, 487,
532 488, 489, 980, 981, 982, 983, 984, 985,
533 986, 987, 988, 989, 990, 991, 992, 993,
534 994, 995, 996, 997, 998, 999, 1000, 1001,
535 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
536 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
537 1018, 1019, 1020, 1021, 1022, 1023,
540 static const uint8_t dnxhd_1235_1238_1241_run_bits[62] = {
541 1, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9,
542 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
543 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
544 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
547 static const uint8_t dnxhd_1238_run[62] = {
548 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
549 20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
550 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
551 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
554 static const uint8_t dnxhd_1235_1241_dc_codes[14] = {
555 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
558 static const uint8_t dnxhd_1235_1241_dc_bits[14] = {
559 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
562 static const uint16_t dnxhd_1235_1241_ac_codes[257] = {
563 0, 1, 4, 10, 11, 24, 25, 26,
564 54, 55, 56, 57, 116, 117, 118, 119,
565 240, 241, 242, 243, 244, 245, 492, 493,
566 494, 495, 496, 497, 498, 998, 999, 1000,
567 1001, 1002, 1003, 1004, 1005, 1006, 1007, 2016,
568 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
569 2025, 2026, 4054, 4055, 4056, 4057, 4058, 4059,
570 4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067,
571 4068, 4069, 8140, 8141, 8142, 8143, 8144, 8145,
572 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153,
573 8154, 8155, 8156, 8157, 16316, 16317, 16318, 16319,
574 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
575 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
576 16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
577 32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
578 32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
579 32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
580 32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
581 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
582 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
583 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
584 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
585 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
586 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
587 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
588 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
589 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
590 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
591 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
592 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
593 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
594 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
598 static const uint8_t dnxhd_1235_1241_ac_bits[257] = {
599 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
600 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
601 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
602 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
603 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
604 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
605 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
606 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
607 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
608 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
609 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
610 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
611 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
612 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
613 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
614 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
618 static const uint8_t dnxhd_1235_1241_ac_level[257] = {
619 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
620 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 6, 7, 22, 23, 24,
621 25, 26, 27, 28, 29, 8, 9, 30, 31, 32, 33, 34, 35, 36, 37, 38,
622 10, 11, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 12, 13,
623 14, 15, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 1,
624 16, 17, 18, 19, 64, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
625 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 18, 19, 20, 21, 22, 23,
626 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
627 40, 41, 42, 25, 26, 27, 28, 29, 30, 31, 32, 43, 44, 45, 46, 47,
628 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
629 64, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
630 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
631 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
632 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
633 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
634 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
638 static const uint8_t dnxhd_1235_1241_ac_run_flag[257] = {
639 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
640 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
641 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
642 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
643 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
644 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
645 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
647 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
654 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
658 static const uint8_t dnxhd_1235_1241_ac_index_flag[257] = {
659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
664 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
665 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
666 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
667 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
668 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
669 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
671 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
672 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
673 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
674 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
678 static const uint8_t dnxhd_1235_1241_run[62] = {
679 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
680 18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
681 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
682 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
685 static const uint8_t dnxhd_1250_dc_codes[14] = {
686 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127
688 static const uint8_t dnxhd_1250_dc_bits[14] = {
689 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7
691 static const uint16_t dnxhd_1250_ac_codes[257] = {
692 0, 1, 4, 10, 11, 24, 25, 26,
693 54, 55, 56, 57, 116, 117, 118, 119,
694 240, 241, 242, 243, 244, 245, 492, 493,
695 494, 495, 496, 497, 498, 998, 999, 1000,
696 1001, 1002, 1003, 1004, 1005, 1006, 2014, 2015,
697 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
698 2024, 2025, 4052, 4053, 4054, 4055, 4056, 4057,
699 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065,
700 4066, 4067, 8136, 8137, 8138, 8139, 8140, 8141,
701 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149,
702 8150, 8151, 8152, 8153, 8154, 8155, 8156, 16314,
703 16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
704 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
705 16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
706 32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
707 32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
708 32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
709 32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
710 32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
711 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
712 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
713 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
714 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
715 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
716 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
717 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
718 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
719 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
720 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
721 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
722 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
723 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
726 static const uint8_t dnxhd_1250_ac_bits[257] = {
727 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
728 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
729 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
730 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
731 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
732 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
733 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
734 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
735 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
736 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
737 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
738 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
739 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
740 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
741 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
742 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
745 static const uint8_t dnxhd_1250_ac_level[257] = {
746 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
747 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 22, 6, 23, 24, 25,
748 26, 27, 28, 29, 7, 8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
749 9, 10, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 11,
750 12, 13, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 1, 2,
751 3, 4, 5, 14, 15, 16, 17, 6, 7, 8, 9, 10, 11, 12, 13, 14,
752 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 18, 19, 20, 21,
753 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
754 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 22, 23, 24,
755 25, 26, 27, 54, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
756 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
757 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
758 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
759 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
760 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
761 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
764 static const uint8_t dnxhd_1250_ac_run_flag[257] = {
765 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
766 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
767 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
768 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
769 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
770 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
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, 1, 1, 1,
774 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
779 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
780 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
783 static const uint8_t dnxhd_1250_ac_index_flag[257] = {
784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
785 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
786 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
789 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
790 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
791 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
792 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
793 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
796 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
797 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
798 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
799 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
802 static const uint16_t dnxhd_1250_run_codes[62] = {
803 0, 4, 5, 12, 26, 27, 28, 58,
804 118, 119, 120, 242, 486, 487, 976, 977,
805 978, 979, 980, 981, 982, 983, 984, 985,
806 986, 987, 988, 989, 990, 991, 992, 993,
807 994, 995, 996, 997, 998, 999, 1000, 1001,
808 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
809 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
810 1018, 1019, 1020, 1021, 1022, 1023
812 static const uint8_t dnxhd_1250_run_bits[62] = {
813 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
814 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
815 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
816 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
818 static const uint8_t dnxhd_1250_run[62] = {
819 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
820 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
821 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
822 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62
825 static const uint8_t dnxhd_1251_dc_codes[12] = {
826 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
829 static const uint8_t dnxhd_1251_dc_bits[12] = {
830 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
833 static const uint16_t dnxhd_1251_ac_codes[257] = {
834 0, 1, 4, 10, 11, 24, 25, 26,
835 54, 55, 56, 57, 116, 117, 118, 119,
836 240, 241, 242, 243, 244, 245, 492, 493,
837 494, 495, 496, 497, 996, 997, 998, 999,
838 1000, 1001, 1002, 1003, 1004, 1005, 2012, 2013,
839 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
840 2022, 2023, 2024, 2025, 4052, 4053, 4054, 4055,
841 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063,
842 4064, 4065, 4066, 8134, 8135, 8136, 8137, 8138,
843 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146,
844 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154,
845 8155, 8156, 16314, 16315, 16316, 16317, 16318, 16319,
846 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
847 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
848 16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
849 32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
850 32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
851 32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
852 32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
853 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
854 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
855 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
856 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
857 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
858 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
859 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
860 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
861 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
862 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
863 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
864 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
865 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
869 static const uint8_t dnxhd_1251_ac_bits[257] = {
870 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
871 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
872 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
873 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
874 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
875 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
876 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
877 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
878 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
879 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
880 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
881 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
882 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
883 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
884 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
885 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
889 static const uint8_t dnxhd_1251_ac_level[257] = {
890 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
891 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 6, 22, 23, 24, 25,
892 26, 27, 28, 29, 7, 8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
893 40, 9, 10, 11, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
894 12, 13, 14, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 1,
895 2, 3, 4, 5, 6, 7, 8, 15, 16, 17, 9, 10, 11, 12, 13, 14,
896 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 18,
897 19, 20, 21, 22, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
898 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
899 58, 23, 24, 25, 26, 27, 28, 59, 60, 61, 62, 63, 64, 29, 30, 31,
900 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
901 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
902 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
903 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
904 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
905 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
909 static const uint8_t dnxhd_1251_ac_run_flag[257] = {
910 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
911 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
912 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
913 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
914 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
915 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
916 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
917 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
919 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
920 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
925 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
929 static const uint8_t dnxhd_1251_ac_index_flag[257] = {
930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
935 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
936 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
937 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
938 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
939 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
942 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
943 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
944 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
945 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
949 static const uint16_t dnxhd_1251_run_codes[62] = {
950 0, 4, 5, 12, 26, 27, 28, 58,
951 118, 119, 120, 242, 486, 487, 976, 977,
952 978, 979, 980, 981, 982, 983, 984, 985,
953 986, 987, 988, 989, 990, 991, 992, 993,
954 994, 995, 996, 997, 998, 999, 1000, 1001,
955 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
956 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
957 1018, 1019, 1020, 1021, 1022, 1023,
960 static const uint8_t dnxhd_1251_run_bits[62] = {
961 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
962 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
963 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
964 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
967 static const uint8_t dnxhd_1251_run[62] = {
968 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
969 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
970 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
971 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
974 static const uint8_t dnxhd_1252_dc_codes[12] = {
975 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
978 static const uint8_t dnxhd_1252_dc_bits[12] = {
979 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
982 static const uint16_t dnxhd_1252_ac_codes[257] = {
983 0, 1, 4, 10, 11, 12, 26, 27,
984 56, 57, 58, 118, 119, 120, 242, 243,
985 244, 245, 246, 247, 496, 497, 498, 499,
986 500, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
987 1009, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
988 2027, 2028, 2029, 4060, 4061, 4062, 4063, 4064,
989 4065, 4066, 4067, 4068, 4069, 4070, 4071, 8144,
990 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152,
991 8153, 8154, 8155, 8156, 8157, 8158, 16318, 16319,
992 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
993 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
994 32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
995 32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
996 32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
997 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
998 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
999 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
1000 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
1001 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
1002 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
1003 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
1004 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
1005 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
1006 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
1007 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
1008 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
1009 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
1010 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
1011 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
1012 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
1013 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
1014 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
1018 static const uint8_t dnxhd_1252_ac_bits[257] = {
1019 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
1020 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
1021 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
1022 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1023 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1024 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
1025 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
1026 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1027 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1028 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1029 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1030 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1031 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1032 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1033 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1034 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1038 static const uint8_t dnxhd_1252_ac_level[257] = {
1039 1, 1, 2, 3, 2, 0, 4, 5, 6, 7, 3, 8, 9, 10, 11, 12,
1040 13, 14, 4, 5, 15, 16, 17, 18, 6, 19, 20, 21, 22, 23, 24, 7,
1041 8, 25, 26, 27, 28, 29, 30, 31, 32, 9, 10, 33, 34, 35, 36, 37,
1042 38, 39, 40, 41, 11, 12, 13, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1043 51, 52, 53, 14, 15, 16, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1044 64, 1, 2, 3, 17, 18, 19, 20, 4, 5, 6, 7, 8, 9, 10, 11,
1045 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 22,
1046 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
1047 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1048 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 26, 27, 28, 29, 30, 31,
1049 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1050 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1051 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1052 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1053 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1054 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1058 static const uint8_t dnxhd_1252_ac_run_flag[257] = {
1059 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
1060 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,
1061 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
1062 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1063 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1064 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
1065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
1066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 1, 1, 1, 1,
1069 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1074 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1078 static const uint8_t dnxhd_1252_ac_index_flag[257] = {
1079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1083 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1084 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1085 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1,
1086 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1087 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1088 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
1089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1091 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1092 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1093 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1094 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1098 static const uint8_t dnxhd_1258_dc_codes[14] = {
1099 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63, 0, 0,
1102 static const uint8_t dnxhd_1258_dc_bits[14] = {
1103 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6, 0, 0,
1106 const CIDEntry ff_dnxhd_cid_table[] = {
1107 { 1235, 1920, 1080, 0, 917504, 917504, 6, 10,
1108 dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
1109 dnxhd_1235_1241_dc_codes, dnxhd_1235_1241_dc_bits,
1110 dnxhd_1235_1241_ac_codes, dnxhd_1235_1241_ac_bits, dnxhd_1235_1241_ac_level,
1111 dnxhd_1235_1241_ac_run_flag, dnxhd_1235_1241_ac_index_flag,
1112 dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1235_1241_run,
1113 { 175, 185, 365, 440 } },
1114 { 1237, 1920, 1080, 0, 606208, 606208, 4, 8,
1115 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1116 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1117 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1118 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1119 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1120 { 115, 120, 145, 240, 290 } },
1121 { 1238, 1920, 1080, 0, 917504, 917504, 4, 8,
1122 dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
1123 dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
1124 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1125 dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
1126 dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1238_run,
1127 { 175, 185, 220, 365, 440 } },
1128 { 1241, 1920, 1080, 1, 917504, 458752, 6, 10,
1129 dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
1130 dnxhd_1235_1241_dc_codes, dnxhd_1235_1241_dc_bits,
1131 dnxhd_1235_1241_ac_codes, dnxhd_1235_1241_ac_bits, dnxhd_1235_1241_ac_level,
1132 dnxhd_1235_1241_ac_run_flag, dnxhd_1235_1241_ac_index_flag,
1133 dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1235_1241_run,
1135 { 1242, 1920, 1080, 1, 606208, 303104, 4, 8,
1136 dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
1137 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1138 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1139 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1140 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1142 { 1243, 1920, 1080, 1, 917504, 458752, 4, 8,
1143 dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
1144 dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
1145 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1146 dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
1147 dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1238_run,
1149 { 1250, 1280, 720, 0, 458752, 458752, 6, 10,
1150 dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
1151 dnxhd_1250_dc_codes, dnxhd_1250_dc_bits,
1152 dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_level,
1153 dnxhd_1250_ac_run_flag, dnxhd_1250_ac_index_flag,
1154 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1156 { 1251, 1280, 720, 0, 458752, 458752, 4, 8,
1157 dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
1158 dnxhd_1251_dc_codes, dnxhd_1251_dc_bits,
1159 dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
1160 dnxhd_1251_ac_run_flag, dnxhd_1251_ac_index_flag,
1161 dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
1162 { 90, 110, 175, 220 } },
1163 { 1252, 1280, 720, 0, 303104, 303104, 4, 8,
1164 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1165 dnxhd_1252_dc_codes, dnxhd_1252_dc_bits,
1166 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1167 dnxhd_1252_ac_run_flag, dnxhd_1252_ac_index_flag,
1168 dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
1169 { 60, 75, 115, 145 } },
1170 { 1253, 1920, 1080, 0, 188416, 188416, 4, 8,
1171 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1172 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1173 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1174 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1175 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1176 { 36, 45, 75, 90 } },
1177 { 1256, 1920, 1080, 0, 1835008, 1835008, 6, 10,
1178 dnxhd_1235_luma_weight, dnxhd_1256_chroma_weight,
1179 dnxhd_1235_1241_dc_codes, dnxhd_1235_1241_dc_bits,
1180 dnxhd_1235_1241_ac_codes, dnxhd_1235_1241_ac_bits, dnxhd_1235_1241_ac_level,
1181 dnxhd_1235_1241_ac_run_flag, dnxhd_1235_1241_ac_index_flag,
1182 dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1235_1241_run,
1183 { 350, 390, 440, 730, 880 } },
1184 { 1258, 960, 720, 0, 212992, 212992, 4, 8,
1185 dnxhd_1258_luma_weight, dnxhd_1258_chroma_weight,
1186 dnxhd_1258_dc_codes, dnxhd_1258_dc_bits,
1187 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1188 dnxhd_1252_ac_run_flag, dnxhd_1252_ac_index_flag,
1189 dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
1190 { 42, 60, 75, 115 } },
1193 int ff_dnxhd_get_cid_table(int cid)
1196 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
1197 if (ff_dnxhd_cid_table[i].cid == cid)
1202 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
1205 int mbs = avctx->bit_rate / 1000000;
1208 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1209 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1210 if (cid->width == avctx->width && cid->height == avctx->height &&
1211 cid->interlaced == !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) &&
1212 cid->bit_depth == bit_depth) {
1213 for (j = 0; j < sizeof(cid->bit_rates); j++) {
1214 if (cid->bit_rates[j] == mbs)