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_info[2*257] = {
338 3, 0, 3, 2, 5, 0, 0, 0, 7, 0, 9, 0, 5, 2, 11, 0,
339 13, 0, 15, 0, 7, 2, 17, 0, 19, 0, 21, 0, 23, 0, 25, 0,
340 9, 2, 11, 2, 27, 0, 29, 0, 31, 0, 33, 0, 13, 2, 35, 0,
341 37, 0, 39, 0, 41, 0, 43, 0, 15, 2, 45, 0, 47, 0, 49, 0,
342 51, 0, 53, 0, 55, 0, 17, 2, 19, 2, 57, 0, 59, 0, 61, 0,
343 63, 0, 65, 0, 67, 0, 69, 0, 21, 2, 23, 2, 25, 2, 71, 0,
344 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 27, 2, 29, 2,
345 31, 2, 33, 2, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0,
346 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 35, 2, 37, 2, 39, 2,
347 41, 2, 43, 2, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0,
348 119, 0, 121, 0, 123, 0, 129, 0, 3, 1, 45, 2, 47, 2, 49, 2,
349 51, 2, 53, 2, 55, 2, 125, 0, 127, 0, 5, 1, 7, 1, 9, 1,
350 11, 1, 13, 1, 15, 1, 17, 1, 19, 1, 21, 1, 23, 1, 25, 1,
351 27, 1, 29, 1, 31, 1, 33, 1, 35, 1, 37, 1, 39, 1, 41, 1,
352 43, 1, 45, 1, 47, 1, 49, 1, 51, 1, 53, 1, 55, 1, 57, 1,
353 59, 1, 61, 1, 63, 1, 65, 1, 67, 1, 69, 1, 71, 1, 73, 1,
354 75, 1, 77, 1, 79, 1, 81, 1, 83, 1, 85, 1, 87, 1, 89, 1,
355 91, 1, 93, 1, 95, 1, 97, 1, 99, 1, 101, 1, 103, 1, 105, 1,
356 107, 1, 109, 1, 111, 1, 113, 1, 115, 1, 117, 1, 119, 1, 121, 1,
357 123, 1, 125, 1, 127, 1, 129, 1, 57, 2, 59, 2, 61, 2, 63, 2,
358 65, 2, 67, 2, 69, 2, 71, 2, 73, 2, 75, 2, 77, 2, 79, 2,
359 81, 2, 83, 2, 85, 2, 87, 2, 89, 2, 91, 2, 93, 2, 95, 2,
360 97, 2, 99, 2, 101, 2, 103, 2, 105, 2, 107, 2, 109, 2, 111, 2,
361 113, 2, 115, 2, 117, 2, 119, 2, 121, 2, 123, 2, 125, 2, 127, 2,
362 129, 2, 3, 3, 5, 3, 7, 3, 9, 3, 11, 3, 13, 3, 15, 3,
363 17, 3, 19, 3, 21, 3, 23, 3, 25, 3, 27, 3, 29, 3, 31, 3,
364 33, 3, 35, 3, 37, 3, 39, 3, 41, 3, 43, 3, 45, 3, 47, 3,
365 49, 3, 51, 3, 53, 3, 55, 3, 57, 3, 59, 3, 61, 3, 63, 3,
366 65, 3, 67, 3, 69, 3, 71, 3, 73, 3, 75, 3, 77, 3, 79, 3,
367 81, 3, 83, 3, 85, 3, 87, 3, 89, 3, 91, 3, 93, 3, 95, 3,
368 97, 3, 99, 3, 101, 3, 103, 3, 105, 3, 107, 3, 109, 3, 111, 3,
369 113, 3, 115, 3, 117, 3, 119, 3, 121, 3, 123, 3, 125, 3, 127, 3,
373 /* Used in CID 1238, 1240, 1243, 1272 */
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, 1240, 1243, 1272 */
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, 1240, 1243, 1272 */
432 static const uint8_t dnxhd_1238_ac_info[2*257] = {
433 3, 0, 3, 2, 5, 0, 7, 0, 0, 0, 9, 0, 11, 0, 5, 2,
434 13, 0, 15, 0, 17, 0, 7, 2, 19, 0, 21, 0, 23, 0, 9, 2,
435 25, 0, 27, 0, 29, 0, 31, 0, 33, 0, 11, 2, 35, 0, 37, 0,
436 39, 0, 41, 0, 43, 0, 45, 0, 13, 2, 15, 2, 47, 0, 49, 0,
437 51, 0, 53, 0, 55, 0, 57, 0, 59, 0, 17, 2, 19, 2, 61, 0,
438 63, 0, 65, 0, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0, 21, 2,
439 23, 2, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0,
440 91, 0, 93, 0, 95, 0, 97, 0, 25, 2, 27, 2, 29, 2, 99, 0,
441 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0,
442 117, 0, 119, 0, 121, 0, 123, 0, 31, 2, 33, 2, 35, 2, 37, 2,
443 125, 0, 127, 0, 129, 0, 3, 1, 5, 1, 7, 1, 9, 1, 11, 1,
444 13, 1, 15, 1, 17, 1, 19, 1, 21, 1, 23, 1, 25, 1, 27, 1,
445 29, 1, 31, 1, 33, 1, 39, 2, 41, 2, 43, 2, 45, 2, 47, 2,
446 49, 2, 35, 1, 37, 1, 39, 1, 41, 1, 43, 1, 45, 1, 47, 1,
447 49, 1, 51, 1, 53, 1, 55, 1, 57, 1, 59, 1, 61, 1, 63, 1,
448 65, 1, 67, 1, 69, 1, 71, 1, 73, 1, 75, 1, 81, 1, 51, 2,
449 53, 2, 55, 2, 57, 2, 59, 2, 61, 2, 77, 1, 79, 1, 83, 1,
450 85, 1, 87, 1, 89, 1, 91, 1, 93, 1, 95, 1, 97, 1, 99, 1,
451 101, 1, 103, 1, 105, 1, 107, 1, 109, 1, 111, 1, 113, 1, 115, 1,
452 117, 1, 119, 1, 121, 1, 123, 1, 125, 1, 127, 1, 129, 1, 63, 2,
453 65, 2, 67, 2, 69, 2, 71, 2, 73, 2, 75, 2, 77, 2, 79, 2,
454 81, 2, 83, 2, 85, 2, 87, 2, 89, 2, 91, 2, 93, 2, 95, 2,
455 97, 2, 99, 2, 101, 2, 103, 2, 105, 2, 107, 2, 109, 2, 111, 2,
456 113, 2, 115, 2, 117, 2, 119, 2, 121, 2, 123, 2, 125, 2, 127, 2,
457 129, 2, 3, 3, 5, 3, 7, 3, 9, 3, 11, 3, 13, 3, 15, 3,
458 17, 3, 19, 3, 21, 3, 23, 3, 25, 3, 27, 3, 29, 3, 31, 3,
459 33, 3, 35, 3, 37, 3, 39, 3, 41, 3, 43, 3, 45, 3, 47, 3,
460 49, 3, 51, 3, 53, 3, 55, 3, 57, 3, 59, 3, 61, 3, 63, 3,
461 65, 3, 67, 3, 69, 3, 71, 3, 73, 3, 75, 3, 77, 3, 79, 3,
462 81, 3, 83, 3, 85, 3, 87, 3, 89, 3, 91, 3, 93, 3, 95, 3,
463 97, 3, 99, 3, 101, 3, 103, 3, 105, 3, 107, 3, 109, 3, 111, 3,
464 113, 3, 115, 3, 117, 3, 119, 3, 121, 3, 123, 3, 125, 3, 127, 3,
468 /* Used in CID 1235, 1236, 1241, 1256, 1257, 1270, 1271 */
469 static const uint16_t dnxhd_1235_ac_codes[257] = {
470 0, 1, 4, 10, 11, 24, 25, 26,
471 54, 55, 56, 57, 116, 117, 118, 119,
472 240, 241, 242, 243, 244, 245, 492, 493,
473 494, 495, 496, 497, 498, 998, 999, 1000,
474 1001, 1002, 1003, 1004, 1005, 1006, 1007, 2016,
475 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
476 2025, 2026, 4054, 4055, 4056, 4057, 4058, 4059,
477 4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067,
478 4068, 4069, 8140, 8141, 8142, 8143, 8144, 8145,
479 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153,
480 8154, 8155, 8156, 8157, 16316, 16317, 16318, 16319,
481 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
482 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
483 16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
484 32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
485 32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
486 32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
487 32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
488 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
489 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
490 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
491 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
492 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
493 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
494 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
495 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
496 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
497 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
498 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
499 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
500 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
501 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
505 /* Used in CID 1235, 1236, 1241, 1256, 1257, 1270, 1271 */
506 static const uint8_t dnxhd_1235_ac_bits[257] = {
507 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
508 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
509 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
510 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
511 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
512 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
513 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
514 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
515 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
516 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
517 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
518 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
519 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 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,
526 /* Used in CID 1235, 1241, 1256, 1270, 1271 */
527 static const uint8_t dnxhd_1235_ac_info[2*257] = {
528 3, 0, 3, 2, 5, 0, 7, 0, 0, 0, 9, 0, 11, 0, 5, 2,
529 13, 0, 15, 0, 17, 0, 7, 2, 19, 0, 21, 0, 23, 0, 9, 2,
530 25, 0, 27, 0, 29, 0, 31, 0, 33, 0, 11, 2, 35, 0, 37, 0,
531 39, 0, 41, 0, 43, 0, 13, 2, 15, 2, 45, 0, 47, 0, 49, 0,
532 51, 0, 53, 0, 55, 0, 57, 0, 59, 0, 17, 2, 19, 2, 61, 0,
533 63, 0, 65, 0, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0, 77, 0,
534 21, 2, 23, 2, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0,
535 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 25, 2, 27, 2,
536 29, 2, 31, 2, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0,
537 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 3, 1,
538 33, 2, 35, 2, 37, 2, 39, 2, 129, 0, 5, 1, 7, 1, 9, 1,
539 11, 1, 13, 1, 15, 1, 17, 1, 19, 1, 21, 1, 23, 1, 25, 1,
540 27, 1, 29, 1, 31, 1, 33, 1, 35, 1, 41, 2, 43, 2, 45, 2,
541 47, 2, 49, 2, 37, 1, 39, 1, 41, 1, 43, 1, 45, 1, 47, 1,
542 49, 1, 51, 1, 53, 1, 55, 1, 57, 1, 59, 1, 61, 1, 63, 1,
543 65, 1, 67, 1, 69, 1, 71, 1, 73, 1, 75, 1, 77, 1, 79, 1,
544 81, 1, 83, 1, 85, 1, 51, 2, 53, 2, 55, 2, 57, 2, 59, 2,
545 61, 2, 63, 2, 65, 2, 87, 1, 89, 1, 91, 1, 93, 1, 95, 1,
546 97, 1, 99, 1, 101, 1, 103, 1, 105, 1, 107, 1, 109, 1, 111, 1,
547 113, 1, 115, 1, 117, 1, 119, 1, 121, 1, 123, 1, 125, 1, 127, 1,
548 129, 1, 67, 2, 69, 2, 71, 2, 73, 2, 75, 2, 77, 2, 79, 2,
549 81, 2, 83, 2, 85, 2, 87, 2, 89, 2, 91, 2, 93, 2, 95, 2,
550 97, 2, 99, 2, 101, 2, 103, 2, 105, 2, 107, 2, 109, 2, 111, 2,
551 113, 2, 115, 2, 117, 2, 119, 2, 121, 2, 123, 2, 125, 2, 127, 2,
552 129, 2, 3, 3, 5, 3, 7, 3, 9, 3, 11, 3, 13, 3, 15, 3,
553 17, 3, 19, 3, 21, 3, 23, 3, 25, 3, 27, 3, 29, 3, 31, 3,
554 33, 3, 35, 3, 37, 3, 39, 3, 41, 3, 43, 3, 45, 3, 47, 3,
555 49, 3, 51, 3, 53, 3, 55, 3, 57, 3, 59, 3, 61, 3, 63, 3,
556 65, 3, 67, 3, 69, 3, 71, 3, 73, 3, 75, 3, 77, 3, 79, 3,
557 81, 3, 83, 3, 85, 3, 87, 3, 89, 3, 91, 3, 93, 3, 95, 3,
558 97, 3, 99, 3, 101, 3, 103, 3, 105, 3, 107, 3, 109, 3, 111, 3,
559 113, 3, 115, 3, 117, 3, 119, 3, 121, 3, 123, 3, 125, 3, 127, 3,
563 static const uint16_t dnxhd_1250_ac_codes[257] = {
564 0, 1, 4, 10, 11, 24, 25, 26,
565 54, 55, 56, 57, 116, 117, 118, 119,
566 240, 241, 242, 243, 244, 245, 492, 493,
567 494, 495, 496, 497, 498, 998, 999, 1000,
568 1001, 1002, 1003, 1004, 1005, 1006, 2014, 2015,
569 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
570 2024, 2025, 4052, 4053, 4054, 4055, 4056, 4057,
571 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065,
572 4066, 4067, 8136, 8137, 8138, 8139, 8140, 8141,
573 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149,
574 8150, 8151, 8152, 8153, 8154, 8155, 8156, 16314,
575 16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
576 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
577 16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
578 32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
579 32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
580 32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
581 32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
582 32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
583 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
584 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
585 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
586 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
587 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
588 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
589 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
590 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
591 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
592 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
593 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
594 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
595 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
598 static const uint8_t dnxhd_1250_ac_bits[257] = {
599 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
600 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
601 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
602 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
603 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
604 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
605 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
606 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
607 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
608 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
609 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
610 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
611 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
612 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
613 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
614 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
618 static const uint8_t dnxhd_1250_ac_info[2*257] = {
619 3, 0, 3, 2, 5, 0, 7, 0, 0, 0, 9, 0, 11, 0, 5, 2,
620 13, 0, 15, 0, 17, 0, 7, 2, 19, 0, 21, 0, 23, 0, 9, 2,
621 25, 0, 27, 0, 29, 0, 31, 0, 33, 0, 11, 2, 35, 0, 37, 0,
622 39, 0, 41, 0, 43, 0, 45, 0, 13, 2, 47, 0, 49, 0, 51, 0,
623 53, 0, 55, 0, 57, 0, 59, 0, 15, 2, 17, 2, 61, 0, 63, 0,
624 65, 0, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0, 77, 0, 79, 0,
625 19, 2, 21, 2, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0,
626 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 23, 2,
627 25, 2, 27, 2, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0,
628 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 3, 1, 5, 1,
629 7, 1, 9, 1, 11, 1, 29, 2, 31, 2, 33, 2, 35, 2, 13, 1,
630 15, 1, 17, 1, 19, 1, 21, 1, 23, 1, 25, 1, 27, 1, 29, 1,
631 31, 1, 33, 1, 35, 1, 37, 1, 39, 1, 41, 1, 43, 1, 45, 1,
632 47, 1, 49, 1, 51, 1, 53, 1, 37, 2, 39, 2, 41, 2, 43, 2,
633 55, 1, 57, 1, 59, 1, 61, 1, 63, 1, 65, 1, 67, 1, 69, 1,
634 71, 1, 73, 1, 75, 1, 77, 1, 79, 1, 81, 1, 83, 1, 85, 1,
635 87, 1, 89, 1, 91, 1, 93, 1, 95, 1, 97, 1, 99, 1, 101, 1,
636 103, 1, 105, 1, 107, 1, 111, 1, 113, 1, 45, 2, 47, 2, 49, 2,
637 51, 2, 53, 2, 55, 2, 109, 1, 115, 1, 117, 1, 119, 1, 121, 1,
638 123, 1, 125, 1, 127, 1, 129, 1, 57, 2, 59, 2, 61, 2, 63, 2,
639 65, 2, 67, 2, 69, 2, 71, 2, 73, 2, 75, 2, 77, 2, 79, 2,
640 81, 2, 83, 2, 85, 2, 87, 2, 89, 2, 91, 2, 93, 2, 95, 2,
641 97, 2, 99, 2, 101, 2, 103, 2, 105, 2, 107, 2, 109, 2, 111, 2,
642 113, 2, 115, 2, 117, 2, 119, 2, 121, 2, 123, 2, 125, 2, 127, 2,
643 129, 2, 3, 3, 5, 3, 7, 3, 9, 3, 11, 3, 13, 3, 15, 3,
644 17, 3, 19, 3, 21, 3, 23, 3, 25, 3, 27, 3, 29, 3, 31, 3,
645 33, 3, 35, 3, 37, 3, 39, 3, 41, 3, 43, 3, 45, 3, 47, 3,
646 49, 3, 51, 3, 53, 3, 55, 3, 57, 3, 59, 3, 61, 3, 63, 3,
647 65, 3, 67, 3, 69, 3, 71, 3, 73, 3, 75, 3, 77, 3, 79, 3,
648 81, 3, 83, 3, 85, 3, 87, 3, 89, 3, 91, 3, 93, 3, 95, 3,
649 97, 3, 99, 3, 101, 3, 103, 3, 105, 3, 107, 3, 109, 3, 111, 3,
650 113, 3, 115, 3, 117, 3, 119, 3, 121, 3, 123, 3, 125, 3, 127, 3,
654 static const uint16_t dnxhd_1251_ac_codes[257] = {
655 0, 1, 4, 10, 11, 24, 25, 26,
656 54, 55, 56, 57, 116, 117, 118, 119,
657 240, 241, 242, 243, 244, 245, 492, 493,
658 494, 495, 496, 497, 996, 997, 998, 999,
659 1000, 1001, 1002, 1003, 1004, 1005, 2012, 2013,
660 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
661 2022, 2023, 2024, 2025, 4052, 4053, 4054, 4055,
662 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063,
663 4064, 4065, 4066, 8134, 8135, 8136, 8137, 8138,
664 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146,
665 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154,
666 8155, 8156, 16314, 16315, 16316, 16317, 16318, 16319,
667 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
668 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
669 16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
670 32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
671 32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
672 32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
673 32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
674 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
675 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
676 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
677 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
678 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
679 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
680 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
681 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
682 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
683 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
684 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
685 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
686 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
690 static const uint8_t dnxhd_1251_ac_bits[257] = {
691 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
692 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
693 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
694 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
695 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
696 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
697 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
698 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
699 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
700 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
701 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
702 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
703 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
704 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
705 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
706 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
710 static const uint8_t dnxhd_1251_ac_info[2*257] = {
711 3, 0, 3, 2, 5, 0, 7, 0, 0, 0, 9, 0, 11, 0, 5, 2,
712 13, 0, 15, 0, 17, 0, 7, 2, 19, 0, 21, 0, 23, 0, 9, 2,
713 25, 0, 27, 0, 29, 0, 31, 0, 33, 0, 11, 2, 35, 0, 37, 0,
714 39, 0, 41, 0, 43, 0, 13, 2, 45, 0, 47, 0, 49, 0, 51, 0,
715 53, 0, 55, 0, 57, 0, 59, 0, 15, 2, 17, 2, 61, 0, 63, 0,
716 65, 0, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0, 77, 0, 79, 0,
717 81, 0, 19, 2, 21, 2, 23, 2, 83, 0, 85, 0, 87, 0, 89, 0,
718 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0,
719 25, 2, 27, 2, 29, 2, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0,
720 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 3, 1,
721 5, 1, 7, 1, 9, 1, 11, 1, 13, 1, 15, 1, 17, 1, 31, 2,
722 33, 2, 35, 2, 19, 1, 21, 1, 23, 1, 25, 1, 27, 1, 29, 1,
723 31, 1, 33, 1, 35, 1, 37, 1, 39, 1, 41, 1, 43, 1, 45, 1,
724 47, 1, 49, 1, 51, 1, 53, 1, 55, 1, 57, 1, 59, 1, 37, 2,
725 39, 2, 41, 2, 43, 2, 45, 2, 61, 1, 63, 1, 65, 1, 67, 1,
726 69, 1, 71, 1, 73, 1, 75, 1, 77, 1, 79, 1, 81, 1, 83, 1,
727 85, 1, 87, 1, 89, 1, 91, 1, 93, 1, 95, 1, 97, 1, 99, 1,
728 101, 1, 103, 1, 105, 1, 107, 1, 109, 1, 111, 1, 113, 1, 115, 1,
729 117, 1, 47, 2, 49, 2, 51, 2, 53, 2, 55, 2, 57, 2, 119, 1,
730 121, 1, 123, 1, 125, 1, 127, 1, 129, 1, 59, 2, 61, 2, 63, 2,
731 65, 2, 67, 2, 69, 2, 71, 2, 73, 2, 75, 2, 77, 2, 79, 2,
732 81, 2, 83, 2, 85, 2, 87, 2, 89, 2, 91, 2, 93, 2, 95, 2,
733 97, 2, 99, 2, 101, 2, 103, 2, 105, 2, 107, 2, 109, 2, 111, 2,
734 113, 2, 115, 2, 117, 2, 119, 2, 121, 2, 123, 2, 125, 2, 127, 2,
735 129, 2, 3, 3, 5, 3, 7, 3, 9, 3, 11, 3, 13, 3, 15, 3,
736 17, 3, 19, 3, 21, 3, 23, 3, 25, 3, 27, 3, 29, 3, 31, 3,
737 33, 3, 35, 3, 37, 3, 39, 3, 41, 3, 43, 3, 45, 3, 47, 3,
738 49, 3, 51, 3, 53, 3, 55, 3, 57, 3, 59, 3, 61, 3, 63, 3,
739 65, 3, 67, 3, 69, 3, 71, 3, 73, 3, 75, 3, 77, 3, 79, 3,
740 81, 3, 83, 3, 85, 3, 87, 3, 89, 3, 91, 3, 93, 3, 95, 3,
741 97, 3, 99, 3, 101, 3, 103, 3, 105, 3, 107, 3, 109, 3, 111, 3,
742 113, 3, 115, 3, 117, 3, 119, 3, 121, 3, 123, 3, 125, 3, 127, 3,
746 /* Used in CID 1252, 1258 */
747 static const uint16_t dnxhd_1252_ac_codes[257] = {
748 0, 1, 4, 10, 11, 12, 26, 27,
749 56, 57, 58, 118, 119, 120, 242, 243,
750 244, 245, 246, 247, 496, 497, 498, 499,
751 500, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
752 1009, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
753 2027, 2028, 2029, 4060, 4061, 4062, 4063, 4064,
754 4065, 4066, 4067, 4068, 4069, 4070, 4071, 8144,
755 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152,
756 8153, 8154, 8155, 8156, 8157, 8158, 16318, 16319,
757 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
758 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
759 32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
760 32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
761 32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
762 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
763 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
764 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
765 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
766 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
767 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
768 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
769 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
770 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
771 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
772 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
773 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
774 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
775 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
776 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
777 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
778 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
779 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
783 /* Used in CID 1252, 1258 */
784 static const uint8_t dnxhd_1252_ac_bits[257] = {
785 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
786 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
787 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
788 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
789 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
790 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
791 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
792 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
793 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
794 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
795 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
796 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
797 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
798 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
799 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
800 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
804 /* Used in CID 1252, 1258 */
805 static const uint8_t dnxhd_1252_ac_info[2*257] = {
806 3, 0, 3, 2, 5, 0, 7, 0, 5, 2, 0, 0, 9, 0, 11, 0,
807 13, 0, 15, 0, 7, 2, 17, 0, 19, 0, 21, 0, 23, 0, 25, 0,
808 27, 0, 29, 0, 9, 2, 11, 2, 31, 0, 33, 0, 35, 0, 37, 0,
809 13, 2, 39, 0, 41, 0, 43, 0, 45, 0, 47, 0, 49, 0, 15, 2,
810 17, 2, 51, 0, 53, 0, 55, 0, 57, 0, 59, 0, 61, 0, 63, 0,
811 65, 0, 19, 2, 21, 2, 67, 0, 69, 0, 71, 0, 73, 0, 75, 0,
812 77, 0, 79, 0, 81, 0, 83, 0, 23, 2, 25, 2, 27, 2, 85, 0,
813 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0,
814 103, 0, 105, 0, 107, 0, 29, 2, 31, 2, 33, 2, 109, 0, 111, 0,
815 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0,
816 129, 0, 3, 1, 5, 1, 7, 1, 35, 2, 37, 2, 39, 2, 41, 2,
817 9, 1, 11, 1, 13, 1, 15, 1, 17, 1, 19, 1, 21, 1, 23, 1,
818 25, 1, 27, 1, 29, 1, 31, 1, 33, 1, 35, 1, 37, 1, 39, 1,
819 41, 1, 43, 1, 43, 2, 45, 2, 47, 2, 49, 2, 51, 2, 45, 1,
820 47, 1, 49, 1, 51, 1, 53, 1, 55, 1, 57, 1, 59, 1, 61, 1,
821 63, 1, 65, 1, 67, 1, 69, 1, 71, 1, 73, 1, 75, 1, 77, 1,
822 79, 1, 81, 1, 83, 1, 85, 1, 87, 1, 89, 1, 91, 1, 93, 1,
823 95, 1, 97, 1, 99, 1, 101, 1, 103, 1, 105, 1, 107, 1, 109, 1,
824 111, 1, 113, 1, 115, 1, 117, 1, 119, 1, 121, 1, 123, 1, 125, 1,
825 127, 1, 129, 1, 53, 2, 55, 2, 57, 2, 59, 2, 61, 2, 63, 2,
826 65, 2, 67, 2, 69, 2, 71, 2, 73, 2, 75, 2, 77, 2, 79, 2,
827 81, 2, 83, 2, 85, 2, 87, 2, 89, 2, 91, 2, 93, 2, 95, 2,
828 97, 2, 99, 2, 101, 2, 103, 2, 105, 2, 107, 2, 109, 2, 111, 2,
829 113, 2, 115, 2, 117, 2, 119, 2, 121, 2, 123, 2, 125, 2, 127, 2,
830 129, 2, 3, 3, 5, 3, 7, 3, 9, 3, 11, 3, 13, 3, 15, 3,
831 17, 3, 19, 3, 21, 3, 23, 3, 25, 3, 27, 3, 29, 3, 31, 3,
832 33, 3, 35, 3, 37, 3, 39, 3, 41, 3, 43, 3, 45, 3, 47, 3,
833 49, 3, 51, 3, 53, 3, 55, 3, 57, 3, 59, 3, 61, 3, 63, 3,
834 65, 3, 67, 3, 69, 3, 71, 3, 73, 3, 75, 3, 77, 3, 79, 3,
835 81, 3, 83, 3, 85, 3, 87, 3, 89, 3, 91, 3, 93, 3, 95, 3,
836 97, 3, 99, 3, 101, 3, 103, 3, 105, 3, 107, 3, 109, 3, 111, 3,
837 113, 3, 115, 3, 117, 3, 119, 3, 121, 3, 123, 3, 125, 3, 127, 3,
841 /* Used in CID 1235, 1238, 1241, 1243, 1256, 1270, 1271, 1272 */
842 static const uint16_t dnxhd_1235_run_codes[62] = {
843 0, 4, 10, 11, 24, 25, 26, 27,
844 56, 57, 58, 59, 120, 242, 486, 487,
845 488, 489, 980, 981, 982, 983, 984, 985,
846 986, 987, 988, 989, 990, 991, 992, 993,
847 994, 995, 996, 997, 998, 999, 1000, 1001,
848 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
849 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
850 1018, 1019, 1020, 1021, 1022, 1023,
853 /* Used in CID 1235, 1238, 1241, 1243, 1256, 1270, 1271, 1272 */
854 static const uint8_t dnxhd_1235_run_bits[62] = {
855 1, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9,
856 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
857 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
858 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
861 /* Used in CID 1235, 1241, 1256, 1270, 1271 */
862 static const uint8_t dnxhd_1235_run[62] = {
863 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
864 18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
865 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
866 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
869 /* Used in CID 1237, 1242, 1253, 1259, 1260, 1273, 1274 */
870 static const uint16_t dnxhd_1237_run_codes[62] = {
871 0, 4, 10, 11, 24, 25, 26, 54,
872 55, 56, 57, 58, 118, 119, 240, 482,
873 483, 484, 485, 486, 487, 488, 489, 490,
874 491, 492, 493, 494, 990, 991, 992, 993,
875 994, 995, 996, 997, 998, 999, 1000, 1001,
876 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
877 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
878 1018, 1019, 1020, 1021, 1022, 1023,
881 /* Used in CID 1237, 1242, 1253, 1259, 1260, 1273, 1274 */
882 static const uint8_t dnxhd_1237_run_bits[62] = {
883 1, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9,
884 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
885 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
886 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
889 /* Used in CID 1237, 1242, 1253, 1259, 1260, 1273, 1274 */
890 static const uint8_t dnxhd_1237_run[62] = {
891 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
892 17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
893 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
894 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
897 /* Used in CID 1238, 1243, 1272 */
898 static const uint8_t dnxhd_1238_run[62] = {
899 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
900 20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
901 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
902 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
905 /* Used in CID 1250, 1251, 1252, 1258 */
906 static const uint16_t dnxhd_1250_run_codes[62] = {
907 0, 4, 5, 12, 26, 27, 28, 58,
908 118, 119, 120, 242, 486, 487, 976, 977,
909 978, 979, 980, 981, 982, 983, 984, 985,
910 986, 987, 988, 989, 990, 991, 992, 993,
911 994, 995, 996, 997, 998, 999, 1000, 1001,
912 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
913 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
914 1018, 1019, 1020, 1021, 1022, 1023,
917 /* Used in CID 1250, 1251, 1252, 1258 */
918 static const uint8_t dnxhd_1250_run_bits[62] = {
919 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
920 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
921 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
922 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
925 /* Used in CID 1250, 1251, 1252, 1258 */
926 static const uint8_t dnxhd_1250_run[62] = {
927 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
928 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
929 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
930 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
933 const CIDEntry ff_dnxhd_cid_table[] = {
934 { 1235, 1920, 1080, 917504, 917504,
936 dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
937 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
938 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_info,
939 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
940 { 175, 185, 365, 440 },
941 { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
942 { 1237, 1920, 1080, 606208, 606208,
944 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
945 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
946 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_info,
947 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
948 { 115, 120, 145, 240, 290 },
949 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
950 { 1238, 1920, 1080, 917504, 917504,
952 dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
953 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
954 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_info,
955 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
956 { 175, 185, 220, 365, 440 },
957 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
958 { 1241, 1920, 1080, 917504, 458752,
959 DNXHD_INTERLACED, 6, 10, 4,
960 dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
961 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
962 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_info,
963 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
965 { { 25, 1 }, { 30000, 1001 } } },
966 { 1242, 1920, 1080, 606208, 303104,
967 DNXHD_INTERLACED, 4, 8, 3,
968 dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
969 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
970 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_info,
971 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
973 { { 25, 1 }, { 30000, 1001 } } },
974 { 1243, 1920, 1080, 917504, 458752,
975 DNXHD_INTERLACED, 4, 8, 4,
976 dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
977 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
978 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_info,
979 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
981 { { 25, 1 }, { 30000, 1001 } } },
982 { 1250, 1280, 720, 458752, 458752,
984 dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
985 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
986 dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_info,
987 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
988 { 90, 90, 180, 220 },
989 { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
990 { 1251, 1280, 720, 458752, 458752,
992 dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
993 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
994 dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_info,
995 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
996 { 90, 90, 110, 180, 220 },
997 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
998 { 1252, 1280, 720, 303104, 303104,
1000 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1001 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1002 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_info,
1003 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1004 { 60, 60, 75, 120, 145 },
1005 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1006 { 1253, 1920, 1080, 188416, 188416,
1008 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1009 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1010 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_info,
1011 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1012 { 36, 36, 45, 75, 90 },
1013 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1014 { 1256, 1920, 1080, 1835008, 1835008,
1015 DNXHD_444, 6, 10, 4,
1016 dnxhd_1235_luma_weight, dnxhd_1235_luma_weight,
1017 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1018 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_info,
1019 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1020 { 350, 390, 440, 730, 880 },
1021 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1022 { 1258, 960, 720, 212992, 212992,
1024 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1025 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1026 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_info,
1027 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1028 { 42, 60, 75, 115 } },
1029 { 1259, 1440, 1080, 417792, 417792,
1031 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1032 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1033 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_info,
1034 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1035 { 63, 84, 100, 110 } },
1036 { 1260, 1440, 1080, 835584, 417792,
1037 DNXHD_INTERLACED | DNXHD_MBAFF, 4, 8, 3,
1038 dnxhd_1260_luma_weight, dnxhd_1260_chroma_weight,
1039 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1040 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_info,
1041 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1042 { 80, 90, 100, 110 } },
1043 { 1270, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE,
1044 DNXHD_444, 6, DNXHD_VARIABLE, 4,
1045 dnxhd_1235_luma_weight, dnxhd_1235_luma_weight,
1046 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1047 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_info,
1048 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1050 { 1271, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE,
1051 0, 6, DNXHD_VARIABLE, 4,
1052 dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
1053 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1054 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_info,
1055 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1057 { 1272, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE,
1059 dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
1060 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1061 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_info,
1062 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1064 { 1273, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE,
1066 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1067 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1068 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_info,
1069 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1071 { 1274, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE, DNXHD_VARIABLE,
1073 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1074 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1075 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_info,
1076 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1080 int ff_dnxhd_get_cid_table(int cid)
1083 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
1084 if (ff_dnxhd_cid_table[i].cid == cid)
1089 int avpriv_dnxhd_get_frame_size(int cid)
1091 int i = ff_dnxhd_get_cid_table(cid);
1094 return ff_dnxhd_cid_table[i].frame_size;
1097 int avpriv_dnxhd_get_interlaced(int cid)
1099 int i = ff_dnxhd_get_cid_table(cid);
1102 return ff_dnxhd_cid_table[i].flags & DNXHD_INTERLACED ? 1 : 0;
1105 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
1108 int mbs = avctx->bit_rate / 1000000;
1111 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1112 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1113 int interlaced = cid->flags & DNXHD_INTERLACED ? 1 : 0;
1114 if (cid->width == avctx->width && cid->height == avctx->height &&
1115 interlaced == !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) &&
1116 !(cid->flags & DNXHD_444) && cid->bit_depth == bit_depth) {
1117 if (avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL &&
1118 cid->flags & DNXHD_MBAFF) {
1119 av_log(avctx, AV_LOG_WARNING, "Profile selected is experimental\n");
1122 for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1123 if (cid->bit_rates[j] == mbs)
1131 void ff_dnxhd_print_profiles(AVCodecContext *avctx, int loglevel)
1134 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1135 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1136 for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1137 if (!cid->bit_rates[j])
1140 av_log(avctx, loglevel, "Frame size: %dx%d%c; bitrate: %dMbps; pixel format: %s; framerate: %d/%d\n",
1141 cid->width, cid->height, cid->flags & DNXHD_INTERLACED ? 'i' : 'p', cid->bit_rates[j],
1142 cid->bit_depth == 10 ? "yuv422p10" : "yuv422p", cid->frame_rates[j].num, cid->frame_rates[j].den);