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