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