3 * Copyright (c) 2007 SmartJog S.A., Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
5 * This file is part of FFmpeg.
7 * FFmpeg 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 * FFmpeg 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 FFmpeg; 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 /* The quantization tables below are in zigzag order! */
28 /* Used in CID 1235, 1256 */
29 static const uint8_t dnxhd_1235_luma_weight[] = {
30 0, 32, 32, 32, 33, 32, 32, 32,
31 32, 31, 32, 33, 33, 33, 33, 35,
32 36, 36, 34, 34, 36, 37, 37, 36,
33 36, 35, 36, 38, 39, 39, 37, 36,
34 37, 37, 39, 41, 42, 41, 39, 39,
35 40, 41, 42, 43, 42, 42, 41, 41,
36 41, 44, 47, 46, 46, 48, 51, 51,
37 50, 50, 53, 55, 55, 56, 60, 60,
40 static const uint8_t dnxhd_1235_chroma_weight[] = {
41 0, 32, 33, 34, 34, 33, 34, 35,
42 37, 40, 43, 42, 39, 38, 39, 41,
43 43, 44, 47, 50, 55, 61, 63, 56,
44 48, 46, 49, 54, 59, 58, 55, 58,
45 63, 65, 67, 74, 84, 82, 75, 72,
46 70, 74, 84, 87, 87, 94, 93, 81,
47 75, 78, 83, 89, 91, 86, 82, 85,
48 90, 90, 85, 79, 73, 73, 73, 73,
51 /* Used in CID 1237, 1253, 1259 */
52 static const uint8_t dnxhd_1237_luma_weight[] = {
53 0, 32, 33, 34, 34, 36, 37, 36,
54 36, 37, 38, 38, 38, 39, 41, 44,
55 43, 41, 40, 41, 46, 49, 47, 46,
56 47, 49, 51, 54, 60, 62, 59, 55,
57 54, 56, 58, 61, 65, 66, 64, 63,
58 66, 73, 78, 79, 80, 79, 78, 78,
59 82, 87, 89, 90, 93, 95, 96, 97,
60 97, 100, 104, 102, 98, 98, 99, 99,
63 /* Used in CID 1237, 1253, 1259 */
64 static const uint8_t dnxhd_1237_chroma_weight[] = {
65 0, 32, 36, 39, 39, 38, 39, 41,
66 45, 51, 57, 58, 53, 48, 47, 51,
67 55, 58, 66, 75, 81, 83, 82, 78,
68 73, 72, 74, 77, 83, 85, 83, 82,
69 89, 99, 96, 90, 94, 97, 99, 105,
70 109, 105, 95, 89, 92, 95, 94, 93,
71 92, 88, 89, 90, 93, 95, 96, 97,
72 97, 100, 104, 102, 98, 98, 99, 99,
75 static const uint8_t dnxhd_1238_luma_weight[] = {
76 0, 32, 32, 33, 34, 33, 33, 33,
77 33, 33, 33, 33, 33, 35, 37, 37,
78 36, 36, 35, 36, 38, 38, 36, 35,
79 36, 37, 38, 41, 42, 41, 39, 38,
80 38, 38, 39, 41, 42, 41, 39, 39,
81 40, 41, 43, 44, 44, 44, 44, 44,
82 45, 47, 47, 47, 49, 50, 51, 51,
83 51, 53, 55, 57, 58, 59, 57, 57,
86 static const uint8_t dnxhd_1238_chroma_weight[] = {
87 0, 32, 35, 35, 35, 34, 34, 35,
88 39, 43, 45, 45, 41, 39, 40, 41,
89 42, 44, 48, 55, 59, 63, 65, 59,
90 53, 52, 52, 55, 61, 62, 58, 58,
91 63, 66, 66, 65, 70, 74, 70, 66,
92 65, 68, 75, 77, 74, 74, 77, 76,
93 73, 73, 73, 73, 76, 80, 89, 90,
94 82, 77, 80, 86, 84, 82, 82, 82,
97 static const uint8_t dnxhd_1241_luma_weight[] = {
98 0, 32, 33, 34, 34, 35, 36, 37,
99 36, 37, 38, 38, 38, 39, 39, 40,
100 40, 38, 38, 39, 38, 37, 39, 41,
101 41, 42, 43, 45, 45, 46, 47, 46,
102 45, 43, 39, 37, 37, 40, 44, 45,
103 45, 46, 46, 46, 47, 47, 46, 44,
104 42, 43, 45, 47, 48, 49, 50, 49,
105 48, 46, 47, 48, 48, 49, 49, 49,
108 static const uint8_t dnxhd_1241_chroma_weight[] = {
109 0, 32, 36, 38, 37, 37, 40, 41,
110 40, 40, 42, 42, 41, 41, 41, 41,
111 42, 43, 44, 44, 45, 46, 46, 45,
112 44, 45, 45, 45, 45, 46, 47, 46,
113 45, 44, 42, 41, 43, 45, 45, 47,
114 48, 48, 48, 46, 47, 47, 46, 47,
115 46, 45, 45, 47, 48, 49, 50, 49,
116 48, 46, 48, 49, 48, 49, 49, 49,
119 static const uint8_t dnxhd_1242_luma_weight[] = {
120 0, 32, 33, 33, 34, 35, 36, 35,
121 33, 33, 35, 36, 37, 37, 38, 37,
122 37, 37, 36, 37, 37, 37, 38, 39,
123 37, 36, 37, 40, 42, 45, 46, 44,
124 41, 42, 44, 45, 47, 49, 50, 48,
125 46, 48, 49, 50, 52, 52, 50, 49,
126 47, 48, 50, 50, 51, 51, 50, 49,
127 49, 51, 52, 51, 49, 47, 47, 47,
130 static const uint8_t dnxhd_1242_chroma_weight[] = {
131 0, 32, 37, 42, 45, 45, 45, 44,
132 38, 37, 40, 42, 44, 49, 51, 47,
133 41, 40, 43, 44, 46, 48, 51, 54,
134 51, 47, 47, 45, 47, 50, 51, 49,
135 46, 47, 49, 47, 50, 55, 55, 51,
136 48, 49, 51, 51, 52, 52, 54, 54,
137 49, 49, 52, 53, 54, 54, 53, 53,
138 55, 59, 63, 62, 60, 60, 60, 60,
141 static const uint8_t dnxhd_1243_luma_weight[] = {
142 0, 32, 32, 33, 33, 35, 35, 35,
143 35, 35, 35, 35, 34, 35, 38, 40,
144 39, 37, 37, 37, 36, 35, 36, 38,
145 40, 41, 42, 44, 45, 44, 42, 41,
146 40, 38, 36, 36, 37, 38, 40, 43,
147 44, 45, 45, 45, 45, 45, 45, 41,
148 39, 41, 45, 47, 47, 48, 48, 48,
149 46, 44, 45, 47, 47, 48, 47, 47,
152 static const uint8_t dnxhd_1243_chroma_weight[] = {
153 0, 32, 36, 37, 36, 37, 39, 39,
154 41, 43, 43, 42, 41, 41, 41, 42,
155 43, 43, 43, 44, 44, 44, 46, 47,
156 46, 45, 45, 45, 45, 46, 44, 44,
157 45, 44, 42, 41, 43, 46, 45, 44,
158 45, 45, 45, 46, 46, 46, 45, 44,
159 45, 44, 45, 47, 47, 48, 49, 48,
160 46, 45, 46, 47, 47, 48, 47, 47,
163 static const uint8_t dnxhd_1250_luma_weight[] = {
164 0, 32, 32, 33, 34, 35, 35, 35,
165 34, 34, 35, 36, 36, 36, 36, 36,
166 37, 38, 38, 38, 38, 38, 39, 39,
167 38, 38, 39, 41, 43, 43, 42, 41,
168 40, 40, 39, 40, 41, 41, 39, 39,
169 40, 42, 47, 50, 47, 45, 46, 46,
170 44, 45, 46, 47, 49, 54, 58, 54,
171 48, 49, 54, 57, 60, 62, 63, 63,
174 static const uint8_t dnxhd_1250_chroma_weight[] = {
175 0, 32, 35, 36, 36, 35, 36, 39,
176 41, 43, 45, 44, 41, 39, 40, 42,
177 43, 43, 45, 48, 49, 51, 52, 50,
178 50, 51, 51, 51, 51, 52, 53, 54,
179 51, 49, 51, 52, 52, 56, 57, 55,
180 54, 54, 55, 56, 55, 58, 58, 58,
181 60, 61, 62, 62, 59, 57, 58, 58,
182 61, 59, 59, 59, 60, 62, 63, 63,
185 static const uint8_t dnxhd_1251_luma_weight[] = {
186 0, 32, 32, 34, 34, 34, 34, 35,
187 35, 35, 36, 37, 36, 36, 35, 36,
188 38, 38, 38, 38, 38, 38, 38, 38,
189 38, 38, 39, 41, 44, 43, 41, 40,
190 40, 40, 40, 39, 40, 41, 40, 39,
191 40, 43, 46, 46, 44, 44, 44, 42,
192 41, 43, 46, 48, 50, 55, 58, 53,
193 48, 50, 55, 58, 61, 62, 62, 62,
196 static const uint8_t dnxhd_1251_chroma_weight[] = {
197 0, 32, 35, 36, 36, 35, 36, 39,
198 41, 43, 45, 44, 41, 39, 40, 42,
199 43, 43, 45, 48, 48, 48, 50, 50,
200 50, 51, 51, 51, 51, 52, 53, 54,
201 51, 49, 51, 52, 52, 56, 57, 55,
202 54, 54, 55, 56, 55, 58, 58, 58,
203 60, 61, 62, 62, 59, 57, 58, 58,
204 61, 59, 59, 59, 61, 62, 62, 62,
207 /* Used in CID 1252, 1258 */
208 static const uint8_t dnxhd_1252_luma_weight[] = {
209 0, 32, 34, 35, 36, 36, 36, 37,
210 36, 37, 39, 40, 41, 40, 40, 40,
211 41, 41, 42, 41, 41, 43, 44, 44,
212 45, 46, 48, 55, 60, 57, 52, 50,
213 49, 49, 52, 52, 53, 55, 58, 62,
214 65, 73, 82, 82, 80, 78, 73, 68,
215 71, 82, 90, 90, 88, 87, 90, 95,
216 100, 107, 103, 97, 95, 93, 99, 99,
219 /* Used in CID 1252, 1258 */
220 static const uint8_t dnxhd_1252_chroma_weight[] = {
221 0, 32, 35, 36, 37, 37, 38, 40,
222 42, 46, 49, 50, 50, 49, 49, 53,
223 56, 56, 57, 58, 60, 62, 64, 65,
224 63, 64, 64, 65, 66, 65, 67, 71,
225 72, 74, 74, 74, 74, 77, 81, 78,
226 72, 73, 82, 85, 89, 88, 84, 80,
227 90, 100, 90, 90, 88, 87, 90, 95,
228 114, 128, 125, 129, 134, 125, 116, 116,
231 static const uint8_t dnxhd_1256_chroma_weight[] = {
232 0, 32, 32, 32, 32, 32, 32, 32,
233 32, 32, 32, 32, 32, 32, 32, 32,
234 32, 32, 32, 32, 32, 32, 37, 32,
235 32, 32, 32, 32, 33, 32, 32, 32,
236 32, 32, 33, 34, 37, 36, 32, 32,
237 32, 33, 34, 37, 36, 34, 35, 36,
238 39, 44, 40, 40, 39, 39, 44, 43,
239 43, 51, 56, 50, 49, 60, 61, 70,
242 static const uint8_t dnxhd_1260_luma_weight[] = {
243 0, 32, 33, 34, 36, 37, 37, 36,
244 34, 33, 34, 35, 37, 38, 40, 41,
245 40, 39, 38, 37, 34, 33, 34, 37,
246 40, 44, 48, 52, 53, 49, 47, 45,
247 42, 38, 36, 36, 38, 41, 43, 44,
248 46, 49, 52, 54, 54, 49, 44, 44,
249 44, 47, 51, 51, 52, 51, 48, 50,
250 52, 53, 53, 50, 50, 54, 54, 54,
253 static const uint8_t dnxhd_1260_chroma_weight[] = {
254 0, 32, 34, 38, 42, 40, 38, 36,
255 35, 35, 38, 42, 43, 43, 42, 40,
256 38, 39, 43, 43, 42, 41, 43, 43,
257 42, 44, 46, 45, 45, 46, 47, 46,
258 44, 44, 45, 46, 46, 46, 50, 50,
259 47, 47, 49, 49, 49, 49, 51, 53,
260 51, 49, 53, 57, 56, 52, 50, 52,
261 56, 56, 53, 53, 53, 54, 58, 58,
264 /* Used in CID 1235, 1241, 1250, 1256 */
265 static const uint8_t dnxhd_1235_dc_codes[14] = {
266 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
269 /* Used in CID 1235, 1241, 1250, 1256 */
270 static const uint8_t dnxhd_1235_dc_bits[14] = {
271 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
274 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */
275 static const uint8_t dnxhd_1237_dc_codes[12] = {
276 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
279 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */
280 static const uint8_t dnxhd_1237_dc_bits[12] = {
281 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
284 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
285 static const uint16_t dnxhd_1237_ac_codes[257] = {
286 0, 1, 4, 5, 12, 26, 27, 56,
287 57, 58, 59, 120, 121, 244, 245, 246,
288 247, 248, 498, 499, 500, 501, 502, 1006,
289 1007, 1008, 1009, 1010, 1011, 2024, 2025, 2026,
290 2027, 2028, 2029, 2030, 2031, 4064, 4065, 4066,
291 4067, 4068, 4069, 4070, 4071, 4072, 4073, 8148,
292 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
293 8157, 8158, 16318, 16319, 16320, 16321, 16322, 16323,
294 16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
295 16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
296 32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
297 32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
298 65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
299 65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
300 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
301 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
302 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
303 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
304 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
305 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
306 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
307 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
308 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
309 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
310 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
311 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
312 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
313 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
314 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
315 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
316 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
317 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
321 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
322 static const uint8_t dnxhd_1237_ac_bits[257] = {
323 2, 2, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8,
324 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
325 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
326 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
327 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
328 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
329 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
330 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
331 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
332 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
333 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
334 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
335 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
336 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
337 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
338 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
342 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
343 static const uint8_t dnxhd_1237_ac_level[257] = {
344 3, 3, 5, 0, 7, 9, 5, 11, 13, 15, 7, 17, 19, 21, 23, 25,
345 9, 11, 27, 29, 31, 33, 13, 35, 37, 39, 41, 43, 15, 45, 47, 49,
346 51, 53, 55, 17, 19, 57, 59, 61, 63, 65, 67, 69, 21, 23, 25, 71,
347 73, 75, 77, 79, 81, 83, 27, 29, 31, 33, 85, 87, 89, 91, 93, 95,
348 97, 99,101,103,105, 35, 37, 39, 41, 43,107,109,111,113,115,117,
349 119,121,123,129, 3, 45, 47, 49, 51, 53, 55,125,127, 5, 7, 9,
350 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41,
351 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73,
352 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
353 107,109,111,113,115,117,119,121,123,125,127,129, 57, 59, 61, 63,
354 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
355 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
356 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
357 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
358 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
359 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
363 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
364 static const uint8_t dnxhd_1237_ac_flags[257] = {
365 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0,
366 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
367 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
368 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
369 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
370 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1,
371 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
372 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
373 1, 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, 2, 2, 2, 2,
375 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
376 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
377 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
378 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
379 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
380 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
384 /* Used in CID 1238, 1243 */
385 static const uint16_t dnxhd_1238_ac_codes[257] = {
386 0, 1, 4, 10, 11, 24, 25, 26,
387 54, 55, 56, 57, 116, 117, 118, 119,
388 240, 241, 242, 243, 244, 245, 492, 493,
389 494, 495, 496, 497, 498, 499, 1000, 1001,
390 1002, 1003, 1004, 1005, 1006, 1007, 1008, 2018,
391 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
392 2027, 4056, 4057, 4058, 4059, 4060, 4061, 4062,
393 4063, 4064, 4065, 4066, 4067, 4068, 4069, 8140,
394 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148,
395 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
396 16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
397 16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
398 16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
399 16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
400 32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
401 32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
402 32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
403 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
404 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
405 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
406 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
407 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
408 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
409 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
410 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
411 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
412 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
413 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
414 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
415 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
416 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
417 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
421 /* Used in CID 1238, 1243 */
422 static const uint8_t dnxhd_1238_ac_bits[257] = {
423 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
424 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,
425 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
426 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
427 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
428 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
429 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
430 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
431 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
432 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
433 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
434 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
435 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
436 16, 16, 16, 16, 16, 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,
442 /* Used in CID 1238, 1243 */
443 static const uint8_t dnxhd_1238_ac_level[257] = {
444 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
445 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 15, 47, 49,
446 51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 21,
447 23, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 25, 27, 29, 99,
448 101,103,105,107,109,111,113,115,117,119,121,123, 31, 33, 35, 37,
449 125,127,129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27,
450 29, 31, 33, 39, 41, 43, 45, 47, 49, 35, 37, 39, 41, 43, 45, 47,
451 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 81, 51,
452 53, 55, 57, 59, 61, 77, 79, 83, 85, 87, 89, 91, 93, 95, 97, 99,
453 101,103,105,107,109,111,113,115,117,119,121,123,125,127,129, 63,
454 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
455 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
456 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
457 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
458 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
459 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
463 static const uint8_t dnxhd_1238_ac_flags[257] = {
464 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
465 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
466 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2,
467 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2,
469 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
470 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
471 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
472 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
474 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
475 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
476 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
477 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
478 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
479 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
483 /* Used in CID 1235, 1241, 1256 */
484 static const uint16_t dnxhd_1235_ac_codes[257] = {
485 0, 1, 4, 10, 11, 24, 25, 26,
486 54, 55, 56, 57, 116, 117, 118, 119,
487 240, 241, 242, 243, 244, 245, 492, 493,
488 494, 495, 496, 497, 498, 998, 999, 1000,
489 1001, 1002, 1003, 1004, 1005, 1006, 1007, 2016,
490 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
491 2025, 2026, 4054, 4055, 4056, 4057, 4058, 4059,
492 4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067,
493 4068, 4069, 8140, 8141, 8142, 8143, 8144, 8145,
494 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153,
495 8154, 8155, 8156, 8157, 16316, 16317, 16318, 16319,
496 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
497 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
498 16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
499 32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
500 32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
501 32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
502 32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
503 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
504 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
505 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
506 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
507 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
508 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
509 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
510 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
511 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
512 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
513 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
514 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
515 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
516 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
520 /* Used in CID 1235, 1241, 1256 */
521 static const uint8_t dnxhd_1235_ac_bits[257] = {
522 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
523 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
524 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
525 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
526 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
527 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
528 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
529 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
530 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
531 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
532 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
533 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
534 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
535 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
536 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
537 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
541 /* Used in CID 1235, 1241, 1256 */
542 static const uint8_t dnxhd_1235_ac_level[257] = {
543 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
544 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 15, 45, 47, 49,
545 51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 77,
546 21, 23, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101, 25, 27,
547 29, 31,103,105,107,109,111,113,115,117,119,121,123,125,127, 3,
548 33, 35, 37, 39,129, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25,
549 27, 29, 31, 33, 35, 41, 43, 45, 47, 49, 37, 39, 41, 43, 45, 47,
550 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
551 81, 83, 85, 51, 53, 55, 57, 59, 61, 63, 65, 87, 89, 91, 93, 95,
552 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
553 129, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
554 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
555 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
556 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
557 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
558 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
562 /* Used in CID 1235, 1241, 1256 */
563 static const uint8_t dnxhd_1235_ac_flags[257] = {
564 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
565 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
566 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
567 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
568 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
569 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
570 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
571 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
572 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
573 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
574 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
575 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
576 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
577 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
578 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
579 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
583 static const uint16_t dnxhd_1250_ac_codes[257] = {
584 0, 1, 4, 10, 11, 24, 25, 26,
585 54, 55, 56, 57, 116, 117, 118, 119,
586 240, 241, 242, 243, 244, 245, 492, 493,
587 494, 495, 496, 497, 498, 998, 999, 1000,
588 1001, 1002, 1003, 1004, 1005, 1006, 2014, 2015,
589 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
590 2024, 2025, 4052, 4053, 4054, 4055, 4056, 4057,
591 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065,
592 4066, 4067, 8136, 8137, 8138, 8139, 8140, 8141,
593 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149,
594 8150, 8151, 8152, 8153, 8154, 8155, 8156, 16314,
595 16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
596 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
597 16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
598 32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
599 32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
600 32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
601 32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
602 32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
603 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
604 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
605 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
606 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
607 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
608 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
609 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
610 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
611 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
612 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
613 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
614 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
615 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
618 static const uint8_t dnxhd_1250_ac_bits[257] = {
619 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
620 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
621 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
622 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
623 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
624 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
625 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
626 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
627 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
628 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
629 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
630 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
631 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
632 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
633 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
634 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
637 static const uint8_t dnxhd_1250_ac_level[257] = {
638 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
639 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 47, 49, 51,
640 53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
641 19, 21, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105, 23,
642 25, 27,107,109,111,113,115,117,119,121,123,125,127,129, 3, 5,
643 7, 9, 11, 29, 31, 33, 35, 13, 15, 17, 19, 21, 23, 25, 27, 29,
644 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 37, 39, 41, 43,
645 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85,
646 87, 89, 91, 93, 95, 97, 99,101,103,105,107,111,113, 45, 47, 49,
647 51, 53, 55,109,115,117,119,121,123,125,127,129, 57, 59, 61, 63,
648 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
649 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
650 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
651 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
652 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
653 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
656 static const uint8_t dnxhd_1250_ac_flags[257] = {
657 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
658 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
659 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
660 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
661 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
662 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
663 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
664 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
665 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
666 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
667 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
668 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
669 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
670 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
671 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
672 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
676 static const uint16_t dnxhd_1251_ac_codes[257] = {
677 0, 1, 4, 10, 11, 24, 25, 26,
678 54, 55, 56, 57, 116, 117, 118, 119,
679 240, 241, 242, 243, 244, 245, 492, 493,
680 494, 495, 496, 497, 996, 997, 998, 999,
681 1000, 1001, 1002, 1003, 1004, 1005, 2012, 2013,
682 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
683 2022, 2023, 2024, 2025, 4052, 4053, 4054, 4055,
684 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063,
685 4064, 4065, 4066, 8134, 8135, 8136, 8137, 8138,
686 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146,
687 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154,
688 8155, 8156, 16314, 16315, 16316, 16317, 16318, 16319,
689 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
690 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
691 16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
692 32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
693 32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
694 32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
695 32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
696 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
697 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
698 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
699 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
700 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
701 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
702 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
703 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
704 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
705 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
706 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
707 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
708 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
712 static const uint8_t dnxhd_1251_ac_bits[257] = {
713 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
714 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
715 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
716 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
717 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
718 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
719 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
720 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
721 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
722 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
723 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
724 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
725 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
726 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
727 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
728 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
732 static const uint8_t dnxhd_1251_ac_level[257] = {
733 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
734 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 45, 47, 49, 51,
735 53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
736 81, 19, 21, 23, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
737 25, 27, 29,107,109,111,113,115,117,119,121,123,125,127,129, 3,
738 5, 7, 9, 11, 13, 15, 17, 31, 33, 35, 19, 21, 23, 25, 27, 29,
739 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 37,
740 39, 41, 43, 45, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83,
741 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,111,113,115,
742 117, 47, 49, 51, 53, 55, 57,119,121,123,125,127,129, 59, 61, 63,
743 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
744 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
745 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
746 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
747 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
748 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
752 static const uint8_t dnxhd_1251_ac_flags[257] = {
753 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
754 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
755 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
756 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
757 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
758 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1,
759 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
760 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
761 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
762 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2,
763 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
764 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
765 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
766 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
767 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
768 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
772 /* Used in CID 1252, 1258 */
773 static const uint16_t dnxhd_1252_ac_codes[257] = {
774 0, 1, 4, 10, 11, 12, 26, 27,
775 56, 57, 58, 118, 119, 120, 242, 243,
776 244, 245, 246, 247, 496, 497, 498, 499,
777 500, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
778 1009, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
779 2027, 2028, 2029, 4060, 4061, 4062, 4063, 4064,
780 4065, 4066, 4067, 4068, 4069, 4070, 4071, 8144,
781 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152,
782 8153, 8154, 8155, 8156, 8157, 8158, 16318, 16319,
783 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
784 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
785 32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
786 32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
787 32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
788 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
789 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
790 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
791 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
792 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
793 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
794 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
795 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
796 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
797 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
798 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
799 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
800 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
801 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
802 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
803 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
804 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
805 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
809 /* Used in CID 1252, 1258 */
810 static const uint8_t dnxhd_1252_ac_bits[257] = {
811 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
812 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
813 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
814 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
815 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
816 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
817 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
818 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
819 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
820 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
821 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
822 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
823 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
824 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
825 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
826 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
830 /* Used in CID 1252, 1258 */
831 static const uint8_t dnxhd_1252_ac_level[257] = {
832 3, 3, 5, 7, 5, 0, 9, 11, 13, 15, 7, 17, 19, 21, 23, 25,
833 27, 29, 9, 11, 31, 33, 35, 37, 13, 39, 41, 43, 45, 47, 49, 15,
834 17, 51, 53, 55, 57, 59, 61, 63, 65, 19, 21, 67, 69, 71, 73, 75,
835 77, 79, 81, 83, 23, 25, 27, 85, 87, 89, 91, 93, 95, 97, 99,101,
836 103,105,107, 29, 31, 33,109,111,113,115,117,119,121,123,125,127,
837 129, 3, 5, 7, 35, 37, 39, 41, 9, 11, 13, 15, 17, 19, 21, 23,
838 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 43, 45, 47, 49, 51, 45,
839 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
840 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,
841 111,113,115,117,119,121,123,125,127,129, 53, 55, 57, 59, 61, 63,
842 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
843 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
844 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
845 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
846 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
847 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
851 static const uint8_t dnxhd_1252_ac_flags[257] = {
852 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
853 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2,
854 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0,
855 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
856 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
857 0, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
858 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1,
859 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
860 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
861 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
862 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
863 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
864 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
865 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
866 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
867 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
871 /* Used in CID 1235, 1238, 1241, 1256 */
872 static const uint16_t dnxhd_1235_run_codes[62] = {
873 0, 4, 10, 11, 24, 25, 26, 27,
874 56, 57, 58, 59, 120, 242, 486, 487,
875 488, 489, 980, 981, 982, 983, 984, 985,
876 986, 987, 988, 989, 990, 991, 992, 993,
877 994, 995, 996, 997, 998, 999, 1000, 1001,
878 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
879 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
880 1018, 1019, 1020, 1021, 1022, 1023,
883 /* Used in CID 1235, 1238, 1241, 1243, 1256 */
884 static const uint8_t dnxhd_1235_run_bits[62] = {
885 1, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9,
886 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
887 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
888 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
891 /* Used in CID 1235, 1241, 1256 */
892 static const uint8_t dnxhd_1235_run[62] = {
893 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
894 18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
895 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
896 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
899 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
900 static const uint16_t dnxhd_1237_run_codes[62] = {
901 0, 4, 10, 11, 24, 25, 26, 54,
902 55, 56, 57, 58, 118, 119, 240, 482,
903 483, 484, 485, 486, 487, 488, 489, 490,
904 491, 492, 493, 494, 990, 991, 992, 993,
905 994, 995, 996, 997, 998, 999, 1000, 1001,
906 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
907 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
908 1018, 1019, 1020, 1021, 1022, 1023,
911 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
912 static const uint8_t dnxhd_1237_run_bits[62] = {
913 1, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9,
914 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
915 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
916 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
919 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
920 static const uint8_t dnxhd_1237_run[62] = {
921 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
922 17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
923 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
924 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
927 static const uint8_t dnxhd_1238_run[62] = {
928 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
929 20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
930 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
931 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
934 /* Used in CID 1250, 1251, 1252, 1258 */
935 static const uint16_t dnxhd_1250_run_codes[62] = {
936 0, 4, 5, 12, 26, 27, 28, 58,
937 118, 119, 120, 242, 486, 487, 976, 977,
938 978, 979, 980, 981, 982, 983, 984, 985,
939 986, 987, 988, 989, 990, 991, 992, 993,
940 994, 995, 996, 997, 998, 999, 1000, 1001,
941 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
942 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
943 1018, 1019, 1020, 1021, 1022, 1023,
946 /* Used in CID 1250, 1251, 1252, 1258 */
947 static const uint8_t dnxhd_1250_run_bits[62] = {
948 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
949 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
950 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
951 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
954 /* Used in CID 1250, 1251, 1252, 1258 */
955 static const uint8_t dnxhd_1250_run[62] = {
956 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
957 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
958 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
959 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
962 const CIDEntry ff_dnxhd_cid_table[] = {
963 { 1235, 1920, 1080, 0, 917504, 917504, 6, 10, 4,
964 dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
965 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
966 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
968 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
969 { 175, 185, 365, 440 },
970 { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
971 { 1237, 1920, 1080, 0, 606208, 606208, 4, 8, 3,
972 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
973 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
974 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
976 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
977 { 115, 120, 145, 240, 290 },
978 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
979 { 1238, 1920, 1080, 0, 917504, 917504, 4, 8, 4,
980 dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
981 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
982 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
984 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
985 { 175, 185, 220, 365, 440 },
986 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
987 { 1241, 1920, 1080, 1, 917504, 458752, 6, 10, 4,
988 dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
989 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
990 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
992 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
994 { { 25, 1 }, { 30000, 1001 } } },
995 { 1242, 1920, 1080, 1, 606208, 303104, 4, 8, 3,
996 dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
997 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
998 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1000 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1002 { { 25, 1 }, { 30000, 1001 } } },
1003 { 1243, 1920, 1080, 1, 917504, 458752, 4, 8, 4,
1004 dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
1005 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1006 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1007 dnxhd_1238_ac_flags,
1008 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1010 { { 25, 1 }, { 30000, 1001 } } },
1011 { 1250, 1280, 720, 0, 458752, 458752, 6, 10, 4,
1012 dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
1013 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1014 dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_level,
1015 dnxhd_1250_ac_flags,
1016 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1017 { 90, 90, 180, 220 },
1018 { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
1019 { 1251, 1280, 720, 0, 458752, 458752, 4, 8, 4,
1020 dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
1021 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1022 dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
1023 dnxhd_1251_ac_flags,
1024 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1025 { 90, 90, 110, 180, 220 },
1026 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1027 { 1252, 1280, 720, 0, 303104, 303104, 4, 8, 5,
1028 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1029 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1030 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1031 dnxhd_1252_ac_flags,
1032 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1033 { 60, 60, 75, 120, 145 },
1034 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1035 { 1253, 1920, 1080, 0, 188416, 188416, 4, 8, 3,
1036 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1037 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1038 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1039 dnxhd_1237_ac_flags,
1040 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1041 { 36, 36, 45, 75, 90 },
1042 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1043 { 1256, 1920, 1080, 0, 1835008, 1835008, 6, 10, 4,
1044 dnxhd_1235_luma_weight, dnxhd_1256_chroma_weight,
1045 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1046 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1047 dnxhd_1235_ac_flags,
1048 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1049 { 350, 390, 440, 730, 880 },
1050 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1051 { 1258, 960, 720, 0, 212992, 212992, 4, 8, 5,
1052 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1053 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1054 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1055 dnxhd_1252_ac_flags,
1056 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1057 { 42, 60, 75, 115 } },
1058 { 1259, 1440, 1080, 0, 417792, 417792, 4, 8, 3,
1059 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1060 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1061 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1062 dnxhd_1237_ac_flags,
1063 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1064 { 63, 84, 100, 110 } },
1065 { 1260, 1440, 1080, 1, 835584, 417792, 4, 8, 3,
1066 dnxhd_1260_luma_weight, dnxhd_1260_chroma_weight,
1067 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1068 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1069 dnxhd_1237_ac_flags,
1070 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1071 { 80, 90, 100, 110 } },
1074 int ff_dnxhd_get_cid_table(int cid)
1077 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
1078 if (ff_dnxhd_cid_table[i].cid == cid)
1083 int avpriv_dnxhd_get_frame_size(int cid)
1085 int i = ff_dnxhd_get_cid_table(cid);
1088 return ff_dnxhd_cid_table[i].frame_size;
1091 int avpriv_dnxhd_get_interlaced(int cid)
1093 int i = ff_dnxhd_get_cid_table(cid);
1096 return ff_dnxhd_cid_table[i].interlaced;
1099 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
1102 int mbs = avctx->bit_rate / 1000000;
1105 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1106 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1107 if (cid->width == avctx->width && cid->height == avctx->height &&
1108 cid->interlaced == !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) &&
1109 cid->bit_depth == bit_depth) {
1110 for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1111 if (cid->bit_rates[j] == mbs)
1119 void ff_dnxhd_print_profiles(AVCodecContext *avctx, int loglevel)
1122 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1123 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1124 for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1125 if (!cid->bit_rates[j])
1128 av_log(avctx, loglevel, "Frame size: %dx%d%c; bitrate: %dMbps; pixel format: %s; framerate: %d/%d\n",
1129 cid->width, cid->height, cid->interlaced ? 'i' : 'p', cid->bit_rates[j],
1130 cid->bit_depth == 10 ? "yuv422p10" : "yuv422p", cid->frame_rates[j].num, cid->frame_rates[j].den);