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, 1270 */
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, 1273, 1274 */
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, 1273, 1274 */
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 /* Used in CID 1238, 1272 */
77 static const uint8_t dnxhd_1238_luma_weight[] = {
78 0, 32, 32, 33, 34, 33, 33, 33,
79 33, 33, 33, 33, 33, 35, 37, 37,
80 36, 36, 35, 36, 38, 38, 36, 35,
81 36, 37, 38, 41, 42, 41, 39, 38,
82 38, 38, 39, 41, 42, 41, 39, 39,
83 40, 41, 43, 44, 44, 44, 44, 44,
84 45, 47, 47, 47, 49, 50, 51, 51,
85 51, 53, 55, 57, 58, 59, 57, 57,
88 /* Used in CID 1238, 1272 */
89 static const uint8_t dnxhd_1238_chroma_weight[] = {
90 0, 32, 35, 35, 35, 34, 34, 35,
91 39, 43, 45, 45, 41, 39, 40, 41,
92 42, 44, 48, 55, 59, 63, 65, 59,
93 53, 52, 52, 55, 61, 62, 58, 58,
94 63, 66, 66, 65, 70, 74, 70, 66,
95 65, 68, 75, 77, 74, 74, 77, 76,
96 73, 73, 73, 73, 76, 80, 89, 90,
97 82, 77, 80, 86, 84, 82, 82, 82,
100 /* Used in CID 1241, 1271 */
101 static const uint8_t dnxhd_1241_luma_weight[] = {
102 0, 32, 33, 34, 34, 35, 36, 37,
103 36, 37, 38, 38, 38, 39, 39, 40,
104 40, 38, 38, 39, 38, 37, 39, 41,
105 41, 42, 43, 45, 45, 46, 47, 46,
106 45, 43, 39, 37, 37, 40, 44, 45,
107 45, 46, 46, 46, 47, 47, 46, 44,
108 42, 43, 45, 47, 48, 49, 50, 49,
109 48, 46, 47, 48, 48, 49, 49, 49,
112 /* Used in CID 1241, 1271 */
113 static const uint8_t dnxhd_1241_chroma_weight[] = {
114 0, 32, 36, 38, 37, 37, 40, 41,
115 40, 40, 42, 42, 41, 41, 41, 41,
116 42, 43, 44, 44, 45, 46, 46, 45,
117 44, 45, 45, 45, 45, 46, 47, 46,
118 45, 44, 42, 41, 43, 45, 45, 47,
119 48, 48, 48, 46, 47, 47, 46, 47,
120 46, 45, 45, 47, 48, 49, 50, 49,
121 48, 46, 48, 49, 48, 49, 49, 49,
124 static const uint8_t dnxhd_1242_luma_weight[] = {
125 0, 32, 33, 33, 34, 35, 36, 35,
126 33, 33, 35, 36, 37, 37, 38, 37,
127 37, 37, 36, 37, 37, 37, 38, 39,
128 37, 36, 37, 40, 42, 45, 46, 44,
129 41, 42, 44, 45, 47, 49, 50, 48,
130 46, 48, 49, 50, 52, 52, 50, 49,
131 47, 48, 50, 50, 51, 51, 50, 49,
132 49, 51, 52, 51, 49, 47, 47, 47,
135 static const uint8_t dnxhd_1242_chroma_weight[] = {
136 0, 32, 37, 42, 45, 45, 45, 44,
137 38, 37, 40, 42, 44, 49, 51, 47,
138 41, 40, 43, 44, 46, 48, 51, 54,
139 51, 47, 47, 45, 47, 50, 51, 49,
140 46, 47, 49, 47, 50, 55, 55, 51,
141 48, 49, 51, 51, 52, 52, 54, 54,
142 49, 49, 52, 53, 54, 54, 53, 53,
143 55, 59, 63, 62, 60, 60, 60, 60,
146 static const uint8_t dnxhd_1243_luma_weight[] = {
147 0, 32, 32, 33, 33, 35, 35, 35,
148 35, 35, 35, 35, 34, 35, 38, 40,
149 39, 37, 37, 37, 36, 35, 36, 38,
150 40, 41, 42, 44, 45, 44, 42, 41,
151 40, 38, 36, 36, 37, 38, 40, 43,
152 44, 45, 45, 45, 45, 45, 45, 41,
153 39, 41, 45, 47, 47, 48, 48, 48,
154 46, 44, 45, 47, 47, 48, 47, 47,
157 static const uint8_t dnxhd_1243_chroma_weight[] = {
158 0, 32, 36, 37, 36, 37, 39, 39,
159 41, 43, 43, 42, 41, 41, 41, 42,
160 43, 43, 43, 44, 44, 44, 46, 47,
161 46, 45, 45, 45, 45, 46, 44, 44,
162 45, 44, 42, 41, 43, 46, 45, 44,
163 45, 45, 45, 46, 46, 46, 45, 44,
164 45, 44, 45, 47, 47, 48, 49, 48,
165 46, 45, 46, 47, 47, 48, 47, 47,
168 static const uint8_t dnxhd_1250_luma_weight[] = {
169 0, 32, 32, 33, 34, 35, 35, 35,
170 34, 34, 35, 36, 36, 36, 36, 36,
171 37, 38, 38, 38, 38, 38, 39, 39,
172 38, 38, 39, 41, 43, 43, 42, 41,
173 40, 40, 39, 40, 41, 41, 39, 39,
174 40, 42, 47, 50, 47, 45, 46, 46,
175 44, 45, 46, 47, 49, 54, 58, 54,
176 48, 49, 54, 57, 60, 62, 63, 63,
179 static const uint8_t dnxhd_1250_chroma_weight[] = {
180 0, 32, 35, 36, 36, 35, 36, 39,
181 41, 43, 45, 44, 41, 39, 40, 42,
182 43, 43, 45, 48, 49, 51, 52, 50,
183 50, 51, 51, 51, 51, 52, 53, 54,
184 51, 49, 51, 52, 52, 56, 57, 55,
185 54, 54, 55, 56, 55, 58, 58, 58,
186 60, 61, 62, 62, 59, 57, 58, 58,
187 61, 59, 59, 59, 60, 62, 63, 63,
190 static const uint8_t dnxhd_1251_luma_weight[] = {
191 0, 32, 32, 34, 34, 34, 34, 35,
192 35, 35, 36, 37, 36, 36, 35, 36,
193 38, 38, 38, 38, 38, 38, 38, 38,
194 38, 38, 39, 41, 44, 43, 41, 40,
195 40, 40, 40, 39, 40, 41, 40, 39,
196 40, 43, 46, 46, 44, 44, 44, 42,
197 41, 43, 46, 48, 50, 55, 58, 53,
198 48, 50, 55, 58, 61, 62, 62, 62,
201 static const uint8_t dnxhd_1251_chroma_weight[] = {
202 0, 32, 35, 36, 36, 35, 36, 39,
203 41, 43, 45, 44, 41, 39, 40, 42,
204 43, 43, 45, 48, 48, 48, 50, 50,
205 50, 51, 51, 51, 51, 52, 53, 54,
206 51, 49, 51, 52, 52, 56, 57, 55,
207 54, 54, 55, 56, 55, 58, 58, 58,
208 60, 61, 62, 62, 59, 57, 58, 58,
209 61, 59, 59, 59, 61, 62, 62, 62,
212 /* Used in CID 1252, 1258 */
213 static const uint8_t dnxhd_1252_luma_weight[] = {
214 0, 32, 34, 35, 36, 36, 36, 37,
215 36, 37, 39, 40, 41, 40, 40, 40,
216 41, 41, 42, 41, 41, 43, 44, 44,
217 45, 46, 48, 55, 60, 57, 52, 50,
218 49, 49, 52, 52, 53, 55, 58, 62,
219 65, 73, 82, 82, 80, 78, 73, 68,
220 71, 82, 90, 90, 88, 87, 90, 95,
221 100, 107, 103, 97, 95, 93, 99, 99,
224 /* Used in CID 1252, 1258 */
225 static const uint8_t dnxhd_1252_chroma_weight[] = {
226 0, 32, 35, 36, 37, 37, 38, 40,
227 42, 46, 49, 50, 50, 49, 49, 53,
228 56, 56, 57, 58, 60, 62, 64, 65,
229 63, 64, 64, 65, 66, 65, 67, 71,
230 72, 74, 74, 74, 74, 77, 81, 78,
231 72, 73, 82, 85, 89, 88, 84, 80,
232 90, 100, 90, 90, 88, 87, 90, 95,
233 114, 128, 125, 129, 134, 125, 116, 116,
236 static const uint8_t dnxhd_1260_luma_weight[] = {
237 0, 32, 33, 34, 36, 37, 37, 36,
238 34, 33, 34, 35, 37, 38, 40, 41,
239 40, 39, 38, 37, 34, 33, 34, 37,
240 40, 44, 48, 52, 53, 49, 47, 45,
241 42, 38, 36, 36, 38, 41, 43, 44,
242 46, 49, 52, 54, 54, 49, 44, 44,
243 44, 47, 51, 51, 52, 51, 48, 50,
244 52, 53, 53, 50, 50, 54, 54, 54,
247 static const uint8_t dnxhd_1260_chroma_weight[] = {
248 0, 32, 34, 38, 42, 40, 38, 36,
249 35, 35, 38, 42, 43, 43, 42, 40,
250 38, 39, 43, 43, 42, 41, 43, 43,
251 42, 44, 46, 45, 45, 46, 47, 46,
252 44, 44, 45, 46, 46, 46, 50, 50,
253 47, 47, 49, 49, 49, 49, 51, 53,
254 51, 49, 53, 57, 56, 52, 50, 52,
255 56, 56, 53, 53, 53, 54, 58, 58,
258 /* Used in CID 1235, 1236, 1241, 1250, 1256, 1257, 1270, 1271 */
259 static const uint8_t dnxhd_1235_dc_codes[14] = {
260 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
263 /* Used in CID 1235, 1236, 1241, 1250, 1256, 1257, 1270, 1271 */
264 static const uint8_t dnxhd_1235_dc_bits[14] = {
265 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
268 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260, 1272, 1273, 1274 */
269 static const uint8_t dnxhd_1237_dc_codes[12] = {
270 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
273 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260, 1272, 1273, 1274 */
274 static const uint8_t dnxhd_1237_dc_bits[12] = {
275 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
278 /* Used in CID 1237, 1242, 1253, 1259, 1260, 1273, 1274 */
279 static const uint16_t dnxhd_1237_ac_codes[257] = {
280 0, 1, 4, 5, 12, 26, 27, 56,
281 57, 58, 59, 120, 121, 244, 245, 246,
282 247, 248, 498, 499, 500, 501, 502, 1006,
283 1007, 1008, 1009, 1010, 1011, 2024, 2025, 2026,
284 2027, 2028, 2029, 2030, 2031, 4064, 4065, 4066,
285 4067, 4068, 4069, 4070, 4071, 4072, 4073, 8148,
286 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
287 8157, 8158, 16318, 16319, 16320, 16321, 16322, 16323,
288 16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
289 16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
290 32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
291 32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
292 65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
293 65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
294 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
295 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
296 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
297 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
298 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
299 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
300 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
301 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
302 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
303 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
304 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
305 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
306 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
307 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
308 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
309 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
310 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
311 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
315 /* Used in CID 1237, 1242, 1253, 1259, 1260, 1273, 1274 */
316 static const uint8_t dnxhd_1237_ac_bits[257] = {
317 2, 2, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8,
318 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
319 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
320 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
321 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
322 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 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,
329 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
330 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
331 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
332 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
336 /* Used in CID 1237, 1242, 1253, 1259, 1260, 1273, 1274 */
337 static const uint8_t dnxhd_1237_ac_level[257] = {
338 3, 3, 5, 0, 7, 9, 5, 11, 13, 15, 7, 17, 19, 21, 23, 25,
339 9, 11, 27, 29, 31, 33, 13, 35, 37, 39, 41, 43, 15, 45, 47, 49,
340 51, 53, 55, 17, 19, 57, 59, 61, 63, 65, 67, 69, 21, 23, 25, 71,
341 73, 75, 77, 79, 81, 83, 27, 29, 31, 33, 85, 87, 89, 91, 93, 95,
342 97, 99,101,103,105, 35, 37, 39, 41, 43,107,109,111,113,115,117,
343 119,121,123,129, 3, 45, 47, 49, 51, 53, 55,125,127, 5, 7, 9,
344 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41,
345 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73,
346 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
347 107,109,111,113,115,117,119,121,123,125,127,129, 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,
350 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
351 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
352 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
353 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
357 /* Used in CID 1237, 1242, 1253, 1259, 1260, 1273, 1274 */
358 static const uint8_t dnxhd_1237_ac_flags[257] = {
359 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0,
360 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
361 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
362 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
363 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
364 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1,
365 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
366 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
367 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
368 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
369 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
370 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
371 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
372 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
373 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
374 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
378 /* Used in CID 1238, 1240, 1243, 1272 */
379 static const uint16_t dnxhd_1238_ac_codes[257] = {
380 0, 1, 4, 10, 11, 24, 25, 26,
381 54, 55, 56, 57, 116, 117, 118, 119,
382 240, 241, 242, 243, 244, 245, 492, 493,
383 494, 495, 496, 497, 498, 499, 1000, 1001,
384 1002, 1003, 1004, 1005, 1006, 1007, 1008, 2018,
385 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
386 2027, 4056, 4057, 4058, 4059, 4060, 4061, 4062,
387 4063, 4064, 4065, 4066, 4067, 4068, 4069, 8140,
388 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148,
389 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
390 16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
391 16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
392 16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
393 16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
394 32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
395 32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
396 32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
397 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
398 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
399 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
400 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
401 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
402 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
403 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
404 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
405 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
406 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
407 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
408 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
409 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
410 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
411 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
415 /* Used in CID 1238, 1240, 1243, 1272 */
416 static const uint8_t dnxhd_1238_ac_bits[257] = {
417 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
418 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,
419 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
420 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
421 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
422 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
423 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
424 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
425 15, 15, 15, 15, 15, 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,
429 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
430 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
431 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
432 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
436 /* Used in CID 1238, 1240, 1243, 1272 */
437 static const uint8_t dnxhd_1238_ac_level[257] = {
438 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
439 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 15, 47, 49,
440 51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 21,
441 23, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 25, 27, 29, 99,
442 101,103,105,107,109,111,113,115,117,119,121,123, 31, 33, 35, 37,
443 125,127,129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27,
444 29, 31, 33, 39, 41, 43, 45, 47, 49, 35, 37, 39, 41, 43, 45, 47,
445 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 81, 51,
446 53, 55, 57, 59, 61, 77, 79, 83, 85, 87, 89, 91, 93, 95, 97, 99,
447 101,103,105,107,109,111,113,115,117,119,121,123,125,127,129, 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,
450 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
451 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
452 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
453 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
457 /* Used in CID 1238, 1243, 1272 */
458 static const uint8_t dnxhd_1238_ac_flags[257] = {
459 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
460 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
461 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2,
462 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2,
464 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
465 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
466 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
467 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
468 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
469 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
470 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
471 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
472 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
473 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
474 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
478 /* Used in CID 1235, 1236, 1241, 1256, 1257, 1270, 1271 */
479 static const uint16_t dnxhd_1235_ac_codes[257] = {
480 0, 1, 4, 10, 11, 24, 25, 26,
481 54, 55, 56, 57, 116, 117, 118, 119,
482 240, 241, 242, 243, 244, 245, 492, 493,
483 494, 495, 496, 497, 498, 998, 999, 1000,
484 1001, 1002, 1003, 1004, 1005, 1006, 1007, 2016,
485 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
486 2025, 2026, 4054, 4055, 4056, 4057, 4058, 4059,
487 4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067,
488 4068, 4069, 8140, 8141, 8142, 8143, 8144, 8145,
489 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153,
490 8154, 8155, 8156, 8157, 16316, 16317, 16318, 16319,
491 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
492 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
493 16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
494 32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
495 32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
496 32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
497 32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
498 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
499 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
500 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
501 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
502 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
503 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
504 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
505 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
506 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
507 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
508 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
509 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
510 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
511 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
515 /* Used in CID 1235, 1236, 1241, 1256, 1257, 1270, 1271 */
516 static const uint8_t dnxhd_1235_ac_bits[257] = {
517 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
518 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
519 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
520 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
521 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
522 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
523 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
524 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
525 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 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,
528 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
529 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
530 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
531 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
532 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
536 /* Used in CID 1235, 1241, 1256, 1270, 1271 */
537 static const uint8_t dnxhd_1235_ac_level[257] = {
538 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
539 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 15, 45, 47, 49,
540 51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 77,
541 21, 23, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101, 25, 27,
542 29, 31,103,105,107,109,111,113,115,117,119,121,123,125,127, 3,
543 33, 35, 37, 39,129, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25,
544 27, 29, 31, 33, 35, 41, 43, 45, 47, 49, 37, 39, 41, 43, 45, 47,
545 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
546 81, 83, 85, 51, 53, 55, 57, 59, 61, 63, 65, 87, 89, 91, 93, 95,
547 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
548 129, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
549 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
550 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
551 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
552 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
553 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
557 /* Used in CID 1235, 1241, 1256, 1270, 1271 */
558 static const uint8_t dnxhd_1235_ac_flags[257] = {
559 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
560 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
561 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
562 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
563 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
564 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
565 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
566 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
567 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
568 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
569 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
571 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
572 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
573 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
574 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
578 static const uint16_t dnxhd_1250_ac_codes[257] = {
579 0, 1, 4, 10, 11, 24, 25, 26,
580 54, 55, 56, 57, 116, 117, 118, 119,
581 240, 241, 242, 243, 244, 245, 492, 493,
582 494, 495, 496, 497, 498, 998, 999, 1000,
583 1001, 1002, 1003, 1004, 1005, 1006, 2014, 2015,
584 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
585 2024, 2025, 4052, 4053, 4054, 4055, 4056, 4057,
586 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065,
587 4066, 4067, 8136, 8137, 8138, 8139, 8140, 8141,
588 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149,
589 8150, 8151, 8152, 8153, 8154, 8155, 8156, 16314,
590 16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
591 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
592 16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
593 32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
594 32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
595 32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
596 32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
597 32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
598 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
599 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
600 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
601 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
602 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
603 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
604 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
605 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
606 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
607 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
608 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
609 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
610 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
613 static const uint8_t dnxhd_1250_ac_bits[257] = {
614 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
615 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
616 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
617 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
618 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
619 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
620 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
621 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
622 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
623 15, 15, 15, 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,
625 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
626 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
627 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
628 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
629 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
632 static const uint8_t dnxhd_1250_ac_level[257] = {
633 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
634 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 47, 49, 51,
635 53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
636 19, 21, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105, 23,
637 25, 27,107,109,111,113,115,117,119,121,123,125,127,129, 3, 5,
638 7, 9, 11, 29, 31, 33, 35, 13, 15, 17, 19, 21, 23, 25, 27, 29,
639 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 37, 39, 41, 43,
640 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85,
641 87, 89, 91, 93, 95, 97, 99,101,103,105,107,111,113, 45, 47, 49,
642 51, 53, 55,109,115,117,119,121,123,125,127,129, 57, 59, 61, 63,
643 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
644 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
645 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
646 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
647 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
648 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
651 static const uint8_t dnxhd_1250_ac_flags[257] = {
652 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
653 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
654 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
655 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
656 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
657 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
658 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
659 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
660 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
661 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
662 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
663 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
664 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
665 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
666 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
667 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
671 static const uint16_t dnxhd_1251_ac_codes[257] = {
672 0, 1, 4, 10, 11, 24, 25, 26,
673 54, 55, 56, 57, 116, 117, 118, 119,
674 240, 241, 242, 243, 244, 245, 492, 493,
675 494, 495, 496, 497, 996, 997, 998, 999,
676 1000, 1001, 1002, 1003, 1004, 1005, 2012, 2013,
677 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
678 2022, 2023, 2024, 2025, 4052, 4053, 4054, 4055,
679 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063,
680 4064, 4065, 4066, 8134, 8135, 8136, 8137, 8138,
681 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146,
682 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154,
683 8155, 8156, 16314, 16315, 16316, 16317, 16318, 16319,
684 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
685 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
686 16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
687 32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
688 32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
689 32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
690 32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
691 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
692 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
693 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
694 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
695 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
696 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
697 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
698 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
699 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
700 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
701 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
702 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
703 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
707 static const uint8_t dnxhd_1251_ac_bits[257] = {
708 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
709 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
710 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
711 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
712 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
713 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
714 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
715 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
716 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
717 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
718 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
719 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
720 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
721 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
722 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
723 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
727 static const uint8_t dnxhd_1251_ac_level[257] = {
728 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
729 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 45, 47, 49, 51,
730 53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
731 81, 19, 21, 23, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
732 25, 27, 29,107,109,111,113,115,117,119,121,123,125,127,129, 3,
733 5, 7, 9, 11, 13, 15, 17, 31, 33, 35, 19, 21, 23, 25, 27, 29,
734 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 37,
735 39, 41, 43, 45, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83,
736 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,111,113,115,
737 117, 47, 49, 51, 53, 55, 57,119,121,123,125,127,129, 59, 61, 63,
738 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
739 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
740 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
741 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
742 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
743 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
747 static const uint8_t dnxhd_1251_ac_flags[257] = {
748 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
749 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
750 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
751 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
752 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
753 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1,
754 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
755 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
756 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
757 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2,
758 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
759 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
760 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
761 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
762 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
763 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
767 /* Used in CID 1252, 1258 */
768 static const uint16_t dnxhd_1252_ac_codes[257] = {
769 0, 1, 4, 10, 11, 12, 26, 27,
770 56, 57, 58, 118, 119, 120, 242, 243,
771 244, 245, 246, 247, 496, 497, 498, 499,
772 500, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
773 1009, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
774 2027, 2028, 2029, 4060, 4061, 4062, 4063, 4064,
775 4065, 4066, 4067, 4068, 4069, 4070, 4071, 8144,
776 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152,
777 8153, 8154, 8155, 8156, 8157, 8158, 16318, 16319,
778 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
779 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
780 32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
781 32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
782 32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
783 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
784 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
785 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
786 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
787 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
788 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
789 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
790 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
791 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
792 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
793 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
794 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
795 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
796 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
797 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
798 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
799 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
800 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
804 /* Used in CID 1252, 1258 */
805 static const uint8_t dnxhd_1252_ac_bits[257] = {
806 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
807 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
808 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
809 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
810 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
811 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
812 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 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,
817 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
818 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
819 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
820 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
821 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
825 /* Used in CID 1252, 1258 */
826 static const uint8_t dnxhd_1252_ac_level[257] = {
827 3, 3, 5, 7, 5, 0, 9, 11, 13, 15, 7, 17, 19, 21, 23, 25,
828 27, 29, 9, 11, 31, 33, 35, 37, 13, 39, 41, 43, 45, 47, 49, 15,
829 17, 51, 53, 55, 57, 59, 61, 63, 65, 19, 21, 67, 69, 71, 73, 75,
830 77, 79, 81, 83, 23, 25, 27, 85, 87, 89, 91, 93, 95, 97, 99,101,
831 103,105,107, 29, 31, 33,109,111,113,115,117,119,121,123,125,127,
832 129, 3, 5, 7, 35, 37, 39, 41, 9, 11, 13, 15, 17, 19, 21, 23,
833 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 43, 45, 47, 49, 51, 45,
834 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
835 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,
836 111,113,115,117,119,121,123,125,127,129, 53, 55, 57, 59, 61, 63,
837 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
838 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
839 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
840 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
841 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
842 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
846 static const uint8_t dnxhd_1252_ac_flags[257] = {
847 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
848 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2,
849 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0,
850 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
851 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
852 0, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
853 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1,
854 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
855 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
856 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
857 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
858 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
859 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
860 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
861 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
862 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
866 /* Used in CID 1235, 1238, 1241, 1243, 1256, 1270, 1271, 1272 */
867 static const uint16_t dnxhd_1235_run_codes[62] = {
868 0, 4, 10, 11, 24, 25, 26, 27,
869 56, 57, 58, 59, 120, 242, 486, 487,
870 488, 489, 980, 981, 982, 983, 984, 985,
871 986, 987, 988, 989, 990, 991, 992, 993,
872 994, 995, 996, 997, 998, 999, 1000, 1001,
873 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
874 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
875 1018, 1019, 1020, 1021, 1022, 1023,
878 /* Used in CID 1235, 1238, 1241, 1243, 1256, 1270, 1271, 1272 */
879 static const uint8_t dnxhd_1235_run_bits[62] = {
880 1, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9,
881 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
882 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
883 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
886 /* Used in CID 1235, 1241, 1256, 1270, 1271 */
887 static const uint8_t dnxhd_1235_run[62] = {
888 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
889 18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
890 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
891 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
894 /* Used in CID 1237, 1242, 1253, 1259, 1260, 1273, 1274 */
895 static const uint16_t dnxhd_1237_run_codes[62] = {
896 0, 4, 10, 11, 24, 25, 26, 54,
897 55, 56, 57, 58, 118, 119, 240, 482,
898 483, 484, 485, 486, 487, 488, 489, 490,
899 491, 492, 493, 494, 990, 991, 992, 993,
900 994, 995, 996, 997, 998, 999, 1000, 1001,
901 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
902 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
903 1018, 1019, 1020, 1021, 1022, 1023,
906 /* Used in CID 1237, 1242, 1253, 1259, 1260, 1273, 1274 */
907 static const uint8_t dnxhd_1237_run_bits[62] = {
908 1, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9,
909 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
910 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
911 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
914 /* Used in CID 1237, 1242, 1253, 1259, 1260, 1273, 1274 */
915 static const uint8_t dnxhd_1237_run[62] = {
916 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
917 17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
918 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
919 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
922 /* Used in CID 1238, 1243, 1272 */
923 static const uint8_t dnxhd_1238_run[62] = {
924 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
925 20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
926 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
927 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
930 /* Used in CID 1250, 1251, 1252, 1258 */
931 static const uint16_t dnxhd_1250_run_codes[62] = {
932 0, 4, 5, 12, 26, 27, 28, 58,
933 118, 119, 120, 242, 486, 487, 976, 977,
934 978, 979, 980, 981, 982, 983, 984, 985,
935 986, 987, 988, 989, 990, 991, 992, 993,
936 994, 995, 996, 997, 998, 999, 1000, 1001,
937 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
938 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
939 1018, 1019, 1020, 1021, 1022, 1023,
942 /* Used in CID 1250, 1251, 1252, 1258 */
943 static const uint8_t dnxhd_1250_run_bits[62] = {
944 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
945 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
946 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
947 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
950 /* Used in CID 1250, 1251, 1252, 1258 */
951 static const uint8_t dnxhd_1250_run[62] = {
952 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
953 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
954 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
955 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
958 const CIDEntry ff_dnxhd_cid_table[] = {
959 { 1235, 1920, 1080, 917504, 917504,
961 dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
962 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
963 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
965 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
966 { 175, 185, 365, 440 },
967 { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
968 { 1237, 1920, 1080, 606208, 606208,
970 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
971 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
972 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
974 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
975 { 115, 120, 145, 240, 290 },
976 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
977 { 1238, 1920, 1080, 917504, 917504,
979 dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
980 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
981 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
983 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
984 { 175, 185, 220, 365, 440 },
985 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
986 { 1241, 1920, 1080, 917504, 458752,
987 DNXHD_INTERLACED, 6, 10, 4,
988 dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
989 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
990 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
992 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
994 { { 25, 1 }, { 30000, 1001 } } },
995 { 1242, 1920, 1080, 606208, 303104,
996 DNXHD_INTERLACED, 4, 8, 3,
997 dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
998 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
999 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1000 dnxhd_1237_ac_flags,
1001 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1003 { { 25, 1 }, { 30000, 1001 } } },
1004 { 1243, 1920, 1080, 917504, 458752,
1005 DNXHD_INTERLACED, 4, 8, 4,
1006 dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
1007 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1008 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1009 dnxhd_1238_ac_flags,
1010 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1012 { { 25, 1 }, { 30000, 1001 } } },
1013 { 1250, 1280, 720, 458752, 458752,
1015 dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
1016 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1017 dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_level,
1018 dnxhd_1250_ac_flags,
1019 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1020 { 90, 90, 180, 220 },
1021 { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
1022 { 1251, 1280, 720, 458752, 458752,
1024 dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
1025 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1026 dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
1027 dnxhd_1251_ac_flags,
1028 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1029 { 90, 90, 110, 180, 220 },
1030 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1031 { 1252, 1280, 720, 303104, 303104,
1033 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1034 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1035 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1036 dnxhd_1252_ac_flags,
1037 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1038 { 60, 60, 75, 120, 145 },
1039 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1040 { 1253, 1920, 1080, 188416, 188416,
1042 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1043 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1044 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1045 dnxhd_1237_ac_flags,
1046 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1047 { 36, 36, 45, 75, 90 },
1048 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1049 { 1256, 1920, 1080, 1835008, 1835008,
1050 DNXHD_444, 6, 10, 4,
1051 dnxhd_1235_luma_weight, dnxhd_1235_luma_weight,
1052 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1053 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1054 dnxhd_1235_ac_flags,
1055 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1056 { 350, 390, 440, 730, 880 },
1057 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1058 { 1258, 960, 720, 212992, 212992,
1060 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1061 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1062 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1063 dnxhd_1252_ac_flags,
1064 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1065 { 42, 60, 75, 115 } },
1066 { 1259, 1440, 1080, 417792, 417792,
1068 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1069 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1070 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1071 dnxhd_1237_ac_flags,
1072 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1073 { 63, 84, 100, 110 } },
1074 { 1260, 1440, 1080, 835584, 417792,
1075 DNXHD_INTERLACED | DNXHD_MBAFF, 4, 8, 3,
1076 dnxhd_1260_luma_weight, dnxhd_1260_chroma_weight,
1077 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1078 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1079 dnxhd_1237_ac_flags,
1080 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1081 { 80, 90, 100, 110 } },
1082 { 1270, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE,
1083 DNXHD_444, 6, DNXHD_VARIABLE, 4,
1084 dnxhd_1235_luma_weight, dnxhd_1235_luma_weight,
1085 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1086 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1087 dnxhd_1235_ac_flags,
1088 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1090 { 1271, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE,
1091 0, 6, DNXHD_VARIABLE, 4,
1092 dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
1093 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1094 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1095 dnxhd_1235_ac_flags,
1096 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1098 { 1272, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE,
1100 dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
1101 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1102 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1103 dnxhd_1238_ac_flags,
1104 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1106 { 1273, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE,
1108 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1109 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1110 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1111 dnxhd_1237_ac_flags,
1112 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1114 { 1274, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE,
1116 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1117 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1118 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1119 dnxhd_1237_ac_flags,
1120 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1124 int ff_dnxhd_get_cid_table(int cid)
1127 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
1128 if (ff_dnxhd_cid_table[i].cid == cid)
1133 int avpriv_dnxhd_get_frame_size(int cid)
1135 int i = ff_dnxhd_get_cid_table(cid);
1138 return ff_dnxhd_cid_table[i].frame_size;
1141 int avpriv_dnxhd_get_interlaced(int cid)
1143 int i = ff_dnxhd_get_cid_table(cid);
1146 return ff_dnxhd_cid_table[i].flags & DNXHD_INTERLACED ? 1 : 0;
1149 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
1152 int mbs = avctx->bit_rate / 1000000;
1155 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1156 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1157 int interlaced = cid->flags & DNXHD_INTERLACED ? 1 : 0;
1158 if (cid->width == avctx->width && cid->height == avctx->height &&
1159 interlaced == !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) &&
1160 !(cid->flags & DNXHD_444) && cid->bit_depth == bit_depth) {
1161 if (avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL &&
1162 cid->flags & DNXHD_MBAFF) {
1163 av_log(avctx, AV_LOG_WARNING, "Profile selected is experimental\n");
1166 for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1167 if (cid->bit_rates[j] == mbs)
1175 void ff_dnxhd_print_profiles(AVCodecContext *avctx, int loglevel)
1178 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1179 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1180 for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1181 if (!cid->bit_rates[j])
1184 av_log(avctx, loglevel, "Frame size: %dx%d%c; bitrate: %dMbps; pixel format: %s; framerate: %d/%d\n",
1185 cid->width, cid->height, cid->flags & DNXHD_INTERLACED ? 'i' : 'p', cid->bit_rates[j],
1186 cid->bit_depth == 10 ? "yuv422p10" : "yuv422p", cid->frame_rates[j].num, cid->frame_rates[j].den);