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