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