3 * Copyright (c) 2007 SmartJog S.A., Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
5 * This file is part of FFmpeg.
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 #include "dnxhddata.h"
24 #include "libavutil/common.h"
26 /* The quantization tables below are in zigzag order! */
28 /* Used in CID 1235, 1256 */
29 static const uint8_t dnxhd_1235_luma_weight[] = {
30 0, 32, 32, 32, 33, 32, 32, 32,
31 32, 31, 32, 33, 33, 33, 33, 35,
32 36, 36, 34, 34, 36, 37, 37, 36,
33 36, 35, 36, 38, 39, 39, 37, 36,
34 37, 37, 39, 41, 42, 41, 39, 39,
35 40, 41, 42, 43, 42, 42, 41, 41,
36 41, 44, 47, 46, 46, 48, 51, 51,
37 50, 50, 53, 55, 55, 56, 60, 60,
40 static const uint8_t dnxhd_1235_chroma_weight[] = {
41 0, 32, 33, 34, 34, 33, 34, 35,
42 37, 40, 43, 42, 39, 38, 39, 41,
43 43, 44, 47, 50, 55, 61, 63, 56,
44 48, 46, 49, 54, 59, 58, 55, 58,
45 63, 65, 67, 74, 84, 82, 75, 72,
46 70, 74, 84, 87, 87, 94, 93, 81,
47 75, 78, 83, 89, 91, 86, 82, 85,
48 90, 90, 85, 79, 73, 73, 73, 73,
51 /* Used in CID 1237, 1253 */
52 static const uint8_t dnxhd_1237_luma_weight[] = {
53 0, 32, 33, 34, 34, 36, 37, 36,
54 36, 37, 38, 38, 38, 39, 41, 44,
55 43, 41, 40, 41, 46, 49, 47, 46,
56 47, 49, 51, 54, 60, 62, 59, 55,
57 54, 56, 58, 61, 65, 66, 64, 63,
58 66, 73, 78, 79, 80, 79, 78, 78,
59 82, 87, 89, 90, 93, 95, 96, 97,
60 97, 100, 104, 102, 98, 98, 99, 99,
63 /* Used in CID 1237, 1253 */
64 static const uint8_t dnxhd_1237_chroma_weight[] = {
65 0, 32, 36, 39, 39, 38, 39, 41,
66 45, 51, 57, 58, 53, 48, 47, 51,
67 55, 58, 66, 75, 81, 83, 82, 78,
68 73, 72, 74, 77, 83, 85, 83, 82,
69 89, 99, 96, 90, 94, 97, 99, 105,
70 109, 105, 95, 89, 92, 95, 94, 93,
71 92, 88, 89, 90, 93, 95, 96, 97,
72 97, 100, 104, 102, 98, 98, 99, 99,
75 static const uint8_t dnxhd_1238_luma_weight[] = {
76 0, 32, 32, 33, 34, 33, 33, 33,
77 33, 33, 33, 33, 33, 35, 37, 37,
78 36, 36, 35, 36, 38, 38, 36, 35,
79 36, 37, 38, 41, 42, 41, 39, 38,
80 38, 38, 39, 41, 42, 41, 39, 39,
81 40, 41, 43, 44, 44, 44, 44, 44,
82 45, 47, 47, 47, 49, 50, 51, 51,
83 51, 53, 55, 57, 58, 59, 57, 57,
86 static const uint8_t dnxhd_1238_chroma_weight[] = {
87 0, 32, 35, 35, 35, 34, 34, 35,
88 39, 43, 45, 45, 41, 39, 40, 41,
89 42, 44, 48, 55, 59, 63, 65, 59,
90 53, 52, 52, 55, 61, 62, 58, 58,
91 63, 66, 66, 65, 70, 74, 70, 66,
92 65, 68, 75, 77, 74, 74, 77, 76,
93 73, 73, 73, 73, 76, 80, 89, 90,
94 82, 77, 80, 86, 84, 82, 82, 82,
97 static const uint8_t dnxhd_1241_luma_weight[] = {
98 0, 32, 33, 34, 34, 35, 36, 37,
99 36, 37, 38, 38, 38, 39, 39, 40,
100 40, 38, 38, 39, 38, 37, 39, 41,
101 41, 42, 43, 45, 45, 46, 47, 46,
102 45, 43, 39, 37, 37, 40, 44, 45,
103 45, 46, 46, 46, 47, 47, 46, 44,
104 42, 43, 45, 47, 48, 49, 50, 49,
105 48, 46, 47, 48, 48, 49, 49, 49,
108 static const uint8_t dnxhd_1241_chroma_weight[] = {
109 0, 32, 36, 38, 37, 37, 40, 41,
110 40, 40, 42, 42, 41, 41, 41, 41,
111 42, 43, 44, 44, 45, 46, 46, 45,
112 44, 45, 45, 45, 45, 46, 47, 46,
113 45, 44, 42, 41, 43, 45, 45, 47,
114 48, 48, 48, 46, 47, 47, 46, 47,
115 46, 45, 45, 47, 48, 49, 50, 49,
116 48, 46, 48, 49, 48, 49, 49, 49,
119 static const uint8_t dnxhd_1242_luma_weight[] = {
120 0, 32, 33, 33, 34, 35, 36, 35,
121 33, 33, 35, 36, 37, 37, 38, 37,
122 37, 37, 36, 37, 37, 37, 38, 39,
123 37, 36, 37, 40, 42, 45, 46, 44,
124 41, 42, 44, 45, 47, 49, 50, 48,
125 46, 48, 49, 50, 52, 52, 50, 49,
126 47, 48, 50, 50, 51, 51, 50, 49,
127 49, 51, 52, 51, 49, 47, 47, 47,
130 static const uint8_t dnxhd_1242_chroma_weight[] = {
131 0, 32, 37, 42, 45, 45, 45, 44,
132 38, 37, 40, 42, 44, 49, 51, 47,
133 41, 40, 43, 44, 46, 48, 51, 54,
134 51, 47, 47, 45, 47, 50, 51, 49,
135 46, 47, 49, 47, 50, 55, 55, 51,
136 48, 49, 51, 51, 52, 52, 54, 54,
137 49, 49, 52, 53, 54, 54, 53, 53,
138 55, 59, 63, 62, 60, 60, 60, 60,
141 static const uint8_t dnxhd_1243_luma_weight[] = {
142 0, 32, 32, 33, 33, 35, 35, 35,
143 35, 35, 35, 35, 34, 35, 38, 40,
144 39, 37, 37, 37, 36, 35, 36, 38,
145 40, 41, 42, 44, 45, 44, 42, 41,
146 40, 38, 36, 36, 37, 38, 40, 43,
147 44, 45, 45, 45, 45, 45, 45, 41,
148 39, 41, 45, 47, 47, 48, 48, 48,
149 46, 44, 45, 47, 47, 48, 47, 47,
152 static const uint8_t dnxhd_1243_chroma_weight[] = {
153 0, 32, 36, 37, 36, 37, 39, 39,
154 41, 43, 43, 42, 41, 41, 41, 42,
155 43, 43, 43, 44, 44, 44, 46, 47,
156 46, 45, 45, 45, 45, 46, 44, 44,
157 45, 44, 42, 41, 43, 46, 45, 44,
158 45, 45, 45, 46, 46, 46, 45, 44,
159 45, 44, 45, 47, 47, 48, 49, 48,
160 46, 45, 46, 47, 47, 48, 47, 47,
163 static const uint8_t dnxhd_1250_luma_weight[] = {
164 0, 32, 32, 33, 34, 35, 35, 35,
165 34, 34, 35, 36, 36, 36, 36, 36,
166 37, 38, 38, 38, 38, 38, 39, 39,
167 38, 38, 39, 41, 43, 43, 42, 41,
168 40, 40, 39, 40, 41, 41, 39, 39,
169 40, 42, 47, 50, 47, 45, 46, 46,
170 44, 45, 46, 47, 49, 54, 58, 54,
171 48, 49, 54, 57, 60, 62, 63, 63,
174 static const uint8_t dnxhd_1250_chroma_weight[] = {
175 0, 32, 35, 36, 36, 35, 36, 39,
176 41, 43, 45, 44, 41, 39, 40, 42,
177 43, 43, 45, 48, 49, 51, 52, 50,
178 50, 51, 51, 51, 51, 52, 53, 54,
179 51, 49, 51, 52, 52, 56, 57, 55,
180 54, 54, 55, 56, 55, 58, 58, 58,
181 60, 61, 62, 62, 59, 57, 58, 58,
182 61, 59, 59, 59, 60, 62, 63, 63,
185 static const uint8_t dnxhd_1251_luma_weight[] = {
186 0, 32, 32, 34, 34, 34, 34, 35,
187 35, 35, 36, 37, 36, 36, 35, 36,
188 38, 38, 38, 38, 38, 38, 38, 38,
189 38, 38, 39, 41, 44, 43, 41, 40,
190 40, 40, 40, 39, 40, 41, 40, 39,
191 40, 43, 46, 46, 44, 44, 44, 42,
192 41, 43, 46, 48, 50, 55, 58, 53,
193 48, 50, 55, 58, 61, 62, 62, 62,
196 static const uint8_t dnxhd_1251_chroma_weight[] = {
197 0, 32, 35, 36, 36, 35, 36, 39,
198 41, 43, 45, 44, 41, 39, 40, 42,
199 43, 43, 45, 48, 48, 48, 50, 50,
200 50, 51, 51, 51, 51, 52, 53, 54,
201 51, 49, 51, 52, 52, 56, 57, 55,
202 54, 54, 55, 56, 55, 58, 58, 58,
203 60, 61, 62, 62, 59, 57, 58, 58,
204 61, 59, 59, 59, 61, 62, 62, 62,
207 static const uint8_t dnxhd_1252_luma_weight[] = {
208 0, 32, 34, 35, 36, 36, 36, 37,
209 36, 37, 39, 40, 41, 40, 40, 40,
210 41, 41, 42, 41, 41, 43, 44, 44,
211 45, 46, 48, 55, 60, 57, 52, 50,
212 49, 49, 52, 52, 53, 55, 58, 62,
213 65, 73, 82, 82, 80, 78, 73, 68,
214 71, 82, 90, 90, 88, 87, 90, 95,
215 100, 107, 103, 97, 95, 93, 99, 99,
217 static const uint8_t dnxhd_1252_chroma_weight[] = {
218 0, 32, 35, 36, 37, 37, 38, 40,
219 42, 46, 49, 50, 50, 49, 49, 53,
220 56, 56, 57, 58, 60, 62, 64, 65,
221 63, 64, 64, 65, 66, 65, 67, 71,
222 72, 74, 74, 74, 74, 77, 81, 78,
223 72, 73, 82, 85, 89, 88, 84, 80,
224 90, 100, 90, 90, 88, 87, 90, 95,
225 114, 128, 125, 129, 134, 125, 116, 116,
228 static const uint8_t dnxhd_1256_chroma_weight[] = {
229 0, 32, 32, 32, 32, 32, 32, 33,
230 32, 32, 32, 32, 32, 32, 32, 34,
231 32, 32, 32, 32, 32, 32, 33, 37,
232 32, 32, 32, 32, 32, 32, 36, 39,
233 32, 32, 32, 32, 32, 34, 39, 44,
234 32, 37, 32, 32, 35, 40, 43, 49,
235 32, 33, 36, 36, 40, 43, 50, 60,
236 34, 37, 39, 44, 51, 56, 61, 70,
239 static const uint8_t dnxhd_1258_luma_weight[] = {
240 0, 32, 36, 36, 40, 40, 55, 60,
241 34, 36, 37, 40, 41, 48, 57, 82,
242 35, 36, 41, 41, 46, 52, 73, 82,
243 37, 40, 42, 45, 50, 65, 80, 87,
244 39, 41, 44, 49, 62, 78, 88, 90,
245 41, 44, 49, 58, 73, 90, 95, 95,
246 43, 52, 55, 68, 90, 100, 97, 93,
247 52, 53, 71, 82, 107, 103, 99, 99,
250 static const uint8_t dnxhd_1258_chroma_weight[] = {
251 0, 32, 37, 38, 49, 53, 65, 66,
252 35, 37, 40, 49, 56, 64, 65, 82,
253 36, 42, 50, 56, 64, 67, 73, 85,
254 46, 50, 57, 63, 71, 72, 89, 87,
255 49, 58, 65, 72, 78, 88, 88, 90,
256 60, 64, 74, 81, 84, 90, 95, 134,
257 62, 74, 77, 80, 90, 114, 129, 125,
258 74, 74, 90, 100, 128, 125, 116, 116,
261 /* Used in CID 1235, 1241, 1250, 1256 */
262 static const uint8_t dnxhd_1235_dc_codes[14] = {
263 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
266 /* Used in CID 1235, 1241, 1250, 1256 */
267 static const uint8_t dnxhd_1235_dc_bits[14] = {
268 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
271 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258 */
272 static const uint8_t dnxhd_1237_dc_codes[12] = {
273 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
276 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258 */
277 static const uint8_t dnxhd_1237_dc_bits[12] = {
278 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
281 /* Used in CID 1237, 1242, 1253 */
282 static const uint16_t dnxhd_1237_ac_codes[257] = {
283 0, 1, 4, 5, 12, 26, 27, 56,
284 57, 58, 59, 120, 121, 244, 245, 246,
285 247, 248, 498, 499, 500, 501, 502, 1006,
286 1007, 1008, 1009, 1010, 1011, 2024, 2025, 2026,
287 2027, 2028, 2029, 2030, 2031, 4064, 4065, 4066,
288 4067, 4068, 4069, 4070, 4071, 4072, 4073, 8148,
289 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
290 8157, 8158, 16318, 16319, 16320, 16321, 16322, 16323,
291 16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
292 16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
293 32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
294 32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
295 65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
296 65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
297 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
298 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
299 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
300 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
301 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
302 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
303 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
304 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
305 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
306 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
307 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
308 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
309 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
310 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
311 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
312 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
313 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
314 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
318 /* Used in CID 1237, 1242, 1253 */
319 static const uint8_t dnxhd_1237_ac_bits[257] = {
320 2, 2, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8,
321 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
322 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
323 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
324 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
325 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 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,
334 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
335 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
339 /* Used in CID 1237, 1242, 1253 */
340 static const uint8_t dnxhd_1237_ac_level[257] = {
341 3, 3, 5, 0, 7, 9, 5, 11, 13, 15, 7, 17, 19, 21, 23, 25,
342 9, 11, 27, 29, 31, 33, 13, 35, 37, 39, 41, 43, 15, 45, 47, 49,
343 51, 53, 55, 17, 19, 57, 59, 61, 63, 65, 67, 69, 21, 23, 25, 71,
344 73, 75, 77, 79, 81, 83, 27, 29, 31, 33, 85, 87, 89, 91, 93, 95,
345 97, 99,101,103,105, 35, 37, 39, 41, 43,107,109,111,113,115,117,
346 119,121,123,129, 3, 45, 47, 49, 51, 53, 55,125,127, 5, 7, 9,
347 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41,
348 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73,
349 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
350 107,109,111,113,115,117,119,121,123,125,127,129, 57, 59, 61, 63,
351 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
352 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
353 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
354 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
355 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
356 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
360 static const uint8_t dnxhd_1237_ac_flags[257] = {
361 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0,
362 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
363 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
364 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
365 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
366 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1,
367 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
368 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
369 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
370 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
371 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
372 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
373 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
374 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
375 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
376 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
380 /* Used in CID 1237, 1242, 1253 */
381 static const uint16_t dnxhd_1237_run_codes[62] = {
382 0, 4, 10, 11, 24, 25, 26, 54,
383 55, 56, 57, 58, 118, 119, 240, 482,
384 483, 484, 485, 486, 487, 488, 489, 490,
385 491, 492, 493, 494, 990, 991, 992, 993,
386 994, 995, 996, 997, 998, 999, 1000, 1001,
387 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
388 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
389 1018, 1019, 1020, 1021, 1022, 1023,
392 /* Used in CID 1237, 1242, 1253 */
393 static const uint8_t dnxhd_1237_run_bits[62] = {
394 1, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9,
395 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
396 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
397 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
400 /* Used in CID 1237, 1242, 1253 */
401 static const uint8_t dnxhd_1237_run[62] = {
402 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
403 17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
404 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
405 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
408 /* Used in CID 1238, 1243 */
409 static const uint16_t dnxhd_1238_ac_codes[257] = {
410 0, 1, 4, 10, 11, 24, 25, 26,
411 54, 55, 56, 57, 116, 117, 118, 119,
412 240, 241, 242, 243, 244, 245, 492, 493,
413 494, 495, 496, 497, 498, 499, 1000, 1001,
414 1002, 1003, 1004, 1005, 1006, 1007, 1008, 2018,
415 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
416 2027, 4056, 4057, 4058, 4059, 4060, 4061, 4062,
417 4063, 4064, 4065, 4066, 4067, 4068, 4069, 8140,
418 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148,
419 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
420 16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
421 16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
422 16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
423 16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
424 32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
425 32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
426 32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
427 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
428 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
429 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
430 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
431 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
432 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
433 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
434 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
435 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
436 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
437 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
438 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
439 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
440 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
441 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
445 /* Used in CID 1238, 1243 */
446 static const uint8_t dnxhd_1238_ac_bits[257] = {
447 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
448 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,
449 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
450 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
451 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
452 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
453 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
454 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
455 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
456 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
457 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
458 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
459 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
460 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
461 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
462 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
466 /* Used in CID 1238, 1243 */
467 static const uint8_t dnxhd_1238_ac_level[257] = {
468 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
469 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 15, 47, 49,
470 51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 21,
471 23, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 25, 27, 29, 99,
472 101,103,105,107,109,111,113,115,117,119,121,123, 31, 33, 35, 37,
473 125,127,129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27,
474 29, 31, 33, 39, 41, 43, 45, 47, 49, 35, 37, 39, 41, 43, 45, 47,
475 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 81, 51,
476 53, 55, 57, 59, 61, 77, 79, 83, 85, 87, 89, 91, 93, 95, 97, 99,
477 101,103,105,107,109,111,113,115,117,119,121,123,125,127,129, 63,
478 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
479 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
480 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
481 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
482 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
483 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
487 static const uint8_t dnxhd_1238_ac_flags[257] = {
488 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
489 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
490 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2,
491 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0,
492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2,
493 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
494 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
495 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
496 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
497 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
498 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
499 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
500 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
501 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
502 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
503 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
507 /* Used in CID 1235, 1238, 1241, 1256 */
508 static const uint16_t dnxhd_1235_run_codes[62] = {
509 0, 4, 10, 11, 24, 25, 26, 27,
510 56, 57, 58, 59, 120, 242, 486, 487,
511 488, 489, 980, 981, 982, 983, 984, 985,
512 986, 987, 988, 989, 990, 991, 992, 993,
513 994, 995, 996, 997, 998, 999, 1000, 1001,
514 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
515 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
516 1018, 1019, 1020, 1021, 1022, 1023,
519 /* Used in CID 1235, 1238, 1241, 1243, 1256 */
520 static const uint8_t dnxhd_1235_run_bits[62] = {
521 1, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9,
522 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
523 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
524 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
527 static const uint8_t dnxhd_1238_run[62] = {
528 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
529 20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
530 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
531 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
534 /* Used in CID 1235, 1241, 1256 */
535 static const uint16_t dnxhd_1235_ac_codes[257] = {
536 0, 1, 4, 10, 11, 24, 25, 26,
537 54, 55, 56, 57, 116, 117, 118, 119,
538 240, 241, 242, 243, 244, 245, 492, 493,
539 494, 495, 496, 497, 498, 998, 999, 1000,
540 1001, 1002, 1003, 1004, 1005, 1006, 1007, 2016,
541 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
542 2025, 2026, 4054, 4055, 4056, 4057, 4058, 4059,
543 4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067,
544 4068, 4069, 8140, 8141, 8142, 8143, 8144, 8145,
545 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153,
546 8154, 8155, 8156, 8157, 16316, 16317, 16318, 16319,
547 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
548 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
549 16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
550 32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
551 32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
552 32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
553 32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
554 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
555 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
556 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
557 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
558 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
559 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
560 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
561 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
562 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
563 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
564 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
565 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
566 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
567 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
571 /* Used in CID 1235, 1241, 1256 */
572 static const uint8_t dnxhd_1235_ac_bits[257] = {
573 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
574 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
575 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
576 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
577 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
578 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
579 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
580 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
581 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
582 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
583 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
584 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
585 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
586 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
587 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
588 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
592 /* Used in CID 1235, 1241, 1256 */
593 static const uint8_t dnxhd_1235_ac_level[257] = {
594 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
595 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 15, 45, 47, 49,
596 51, 53, 55, 57, 59, 17, 19, 61, 63, 65, 67, 69, 71, 73, 75, 77,
597 21, 23, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101, 25, 27,
598 29, 31,103,105,107,109,111,113,115,117,119,121,123,125,127, 3,
599 33, 35, 37, 39,129, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25,
600 27, 29, 31, 33, 35, 41, 43, 45, 47, 49, 37, 39, 41, 43, 45, 47,
601 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
602 81, 83, 85, 51, 53, 55, 57, 59, 61, 63, 65, 87, 89, 91, 93, 95,
603 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
604 129, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
605 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
606 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
607 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
608 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
609 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
613 /* Used in CID 1235, 1241, 1256 */
614 static const uint8_t dnxhd_1235_ac_flags[257] = {
615 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
616 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0,
617 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
618 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
619 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
620 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
621 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
622 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
623 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
624 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
625 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
626 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
627 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
628 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
629 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
630 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
634 /* Used in CID 1235, 1241, 1256 */
635 static const uint8_t dnxhd_1235_run[62] = {
636 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
637 18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
638 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
639 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
642 static const uint16_t dnxhd_1250_ac_codes[257] = {
643 0, 1, 4, 10, 11, 24, 25, 26,
644 54, 55, 56, 57, 116, 117, 118, 119,
645 240, 241, 242, 243, 244, 245, 492, 493,
646 494, 495, 496, 497, 498, 998, 999, 1000,
647 1001, 1002, 1003, 1004, 1005, 1006, 2014, 2015,
648 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
649 2024, 2025, 4052, 4053, 4054, 4055, 4056, 4057,
650 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065,
651 4066, 4067, 8136, 8137, 8138, 8139, 8140, 8141,
652 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149,
653 8150, 8151, 8152, 8153, 8154, 8155, 8156, 16314,
654 16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
655 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
656 16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
657 32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
658 32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
659 32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
660 32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
661 32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
662 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
663 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
664 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
665 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
666 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
667 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
668 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
669 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
670 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
671 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
672 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
673 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
674 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
677 static const uint8_t dnxhd_1250_ac_bits[257] = {
678 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
679 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
680 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
681 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
682 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
683 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
684 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
685 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
686 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
687 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
688 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
689 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
690 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
691 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
692 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
693 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
696 static const uint8_t dnxhd_1250_ac_level[257] = {
697 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
698 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 45, 13, 47, 49, 51,
699 53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
700 19, 21, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105, 23,
701 25, 27,107,109,111,113,115,117,119,121,123,125,127,129, 3, 5,
702 7, 9, 11, 29, 31, 33, 35, 13, 15, 17, 19, 21, 23, 25, 27, 29,
703 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 37, 39, 41, 43,
704 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85,
705 87, 89, 91, 93, 95, 97, 99,101,103,105,107,111,113, 45, 47, 49,
706 51, 53, 55,109,115,117,119,121,123,125,127,129, 57, 59, 61, 63,
707 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
708 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
709 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
710 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
711 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
712 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
715 static const uint8_t dnxhd_1250_ac_flags[257] = {
716 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
717 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
718 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
719 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
720 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
721 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
722 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
723 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
724 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
725 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
726 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
727 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
728 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
729 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
730 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
731 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
734 static const uint16_t dnxhd_1250_run_codes[62] = {
735 0, 4, 5, 12, 26, 27, 28, 58,
736 118, 119, 120, 242, 486, 487, 976, 977,
737 978, 979, 980, 981, 982, 983, 984, 985,
738 986, 987, 988, 989, 990, 991, 992, 993,
739 994, 995, 996, 997, 998, 999, 1000, 1001,
740 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
741 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
742 1018, 1019, 1020, 1021, 1022, 1023
744 static const uint8_t dnxhd_1250_run_bits[62] = {
745 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
746 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
747 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
748 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
750 static const uint8_t dnxhd_1250_run[62] = {
751 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
752 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
753 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
754 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62
757 static const uint16_t dnxhd_1251_ac_codes[257] = {
758 0, 1, 4, 10, 11, 24, 25, 26,
759 54, 55, 56, 57, 116, 117, 118, 119,
760 240, 241, 242, 243, 244, 245, 492, 493,
761 494, 495, 496, 497, 996, 997, 998, 999,
762 1000, 1001, 1002, 1003, 1004, 1005, 2012, 2013,
763 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
764 2022, 2023, 2024, 2025, 4052, 4053, 4054, 4055,
765 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063,
766 4064, 4065, 4066, 8134, 8135, 8136, 8137, 8138,
767 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146,
768 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154,
769 8155, 8156, 16314, 16315, 16316, 16317, 16318, 16319,
770 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
771 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
772 16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
773 32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
774 32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
775 32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
776 32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
777 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
778 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
779 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
780 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
781 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
782 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
783 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
784 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
785 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
786 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
787 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
788 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
789 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
793 static const uint8_t dnxhd_1251_ac_bits[257] = {
794 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
795 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
796 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
797 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
798 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
799 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
800 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
801 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
802 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
803 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
804 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
805 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
806 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
807 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
808 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
809 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
813 static const uint8_t dnxhd_1251_ac_level[257] = {
814 3, 3, 5, 7, 0, 9, 11, 5, 13, 15, 17, 7, 19, 21, 23, 9,
815 25, 27, 29, 31, 33, 11, 35, 37, 39, 41, 43, 13, 45, 47, 49, 51,
816 53, 55, 57, 59, 15, 17, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
817 81, 19, 21, 23, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,
818 25, 27, 29,107,109,111,113,115,117,119,121,123,125,127,129, 3,
819 5, 7, 9, 11, 13, 15, 17, 31, 33, 35, 19, 21, 23, 25, 27, 29,
820 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 37,
821 39, 41, 43, 45, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83,
822 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,111,113,115,
823 117, 47, 49, 51, 53, 55, 57,119,121,123,125,127,129, 59, 61, 63,
824 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
825 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
826 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
827 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
828 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
829 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
833 static const uint8_t dnxhd_1251_ac_flags[257] = {
834 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2,
835 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
836 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
837 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
838 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
839 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1,
840 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
841 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
842 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
843 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2,
844 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
845 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
846 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
847 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
848 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
849 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
853 /* Used in CID 1251, 1252, 1258 */
854 static const uint16_t dnxhd_1251_run_codes[62] = {
855 0, 4, 5, 12, 26, 27, 28, 58,
856 118, 119, 120, 242, 486, 487, 976, 977,
857 978, 979, 980, 981, 982, 983, 984, 985,
858 986, 987, 988, 989, 990, 991, 992, 993,
859 994, 995, 996, 997, 998, 999, 1000, 1001,
860 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
861 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
862 1018, 1019, 1020, 1021, 1022, 1023,
865 /* Used in CID 1251, 1252, 1258 */
866 static const uint8_t dnxhd_1251_run_bits[62] = {
867 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
868 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
869 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
870 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
873 /* Used in CID 1251, 1252, 1258 */
874 static const uint8_t dnxhd_1251_run[62] = {
875 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
876 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
877 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
878 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
881 /* Used in CID 1252, 1258 */
882 static const uint16_t dnxhd_1252_ac_codes[257] = {
883 0, 1, 4, 10, 11, 12, 26, 27,
884 56, 57, 58, 118, 119, 120, 242, 243,
885 244, 245, 246, 247, 496, 497, 498, 499,
886 500, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
887 1009, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
888 2027, 2028, 2029, 4060, 4061, 4062, 4063, 4064,
889 4065, 4066, 4067, 4068, 4069, 4070, 4071, 8144,
890 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152,
891 8153, 8154, 8155, 8156, 8157, 8158, 16318, 16319,
892 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
893 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
894 32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
895 32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
896 32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
897 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
898 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
899 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
900 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
901 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
902 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
903 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
904 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
905 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
906 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
907 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
908 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
909 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
910 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
911 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
912 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
913 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
914 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
918 /* Used in CID 1252, 1258 */
919 static const uint8_t dnxhd_1252_ac_bits[257] = {
920 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
921 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
922 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
923 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
924 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
925 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
926 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
927 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
928 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
929 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
930 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
931 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
932 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
933 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
934 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
935 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
939 /* Used in CID 1252, 1258 */
940 static const uint8_t dnxhd_1252_ac_level[257] = {
941 3, 3, 5, 7, 5, 0, 9, 11, 13, 15, 7, 17, 19, 21, 23, 25,
942 27, 29, 9, 11, 31, 33, 35, 37, 13, 39, 41, 43, 45, 47, 49, 15,
943 17, 51, 53, 55, 57, 59, 61, 63, 65, 19, 21, 67, 69, 71, 73, 75,
944 77, 79, 81, 83, 23, 25, 27, 85, 87, 89, 91, 93, 95, 97, 99,101,
945 103,105,107, 29, 31, 33,109,111,113,115,117,119,121,123,125,127,
946 129, 3, 5, 7, 35, 37, 39, 41, 9, 11, 13, 15, 17, 19, 21, 23,
947 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 43, 45, 47, 49, 51, 45,
948 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
949 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99,101,103,105,107,109,
950 111,113,115,117,119,121,123,125,127,129, 53, 55, 57, 59, 61, 63,
951 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
952 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
953 129, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
954 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
955 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95,
956 97, 99,101,103,105,107,109,111,113,115,117,119,121,123,125,127,
960 static const uint8_t dnxhd_1252_ac_flags[257] = {
961 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
962 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2,
963 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0,
964 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
965 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
966 0, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
967 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1,
968 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
969 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
970 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
971 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
973 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
974 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
975 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
976 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
980 const CIDEntry ff_dnxhd_cid_table[] = {
981 { 1235, 1920, 1080, 0, 917504, 917504, 6, 10, 4,
982 dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
983 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
984 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
986 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
987 { 175, 185, 365, 440 },
988 { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
989 { 1237, 1920, 1080, 0, 606208, 606208, 4, 8, 3,
990 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
991 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
992 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
994 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
995 { 115, 120, 145, 240, 290 },
996 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
997 { 1238, 1920, 1080, 0, 917504, 917504, 4, 8, 4,
998 dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
999 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1000 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1001 dnxhd_1238_ac_flags,
1002 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1003 { 175, 185, 220, 365, 440 },
1004 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1005 { 1241, 1920, 1080, 1, 917504, 458752, 6, 10, 4,
1006 dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
1007 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1008 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1009 dnxhd_1235_ac_flags,
1010 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1012 { { 25, 1 }, { 30000, 1001 } } },
1013 { 1242, 1920, 1080, 1, 606208, 303104, 4, 8, 3,
1014 dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
1015 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1016 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1017 dnxhd_1237_ac_flags,
1018 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1020 { { 25, 1 }, { 30000, 1001 } } },
1021 { 1243, 1920, 1080, 1, 917504, 458752, 4, 8, 4,
1022 dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
1023 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1024 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1025 dnxhd_1238_ac_flags,
1026 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1028 { { 25, 1 }, { 30000, 1001 } } },
1029 { 1250, 1280, 720, 0, 458752, 458752, 6, 10, 4,
1030 dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
1031 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1032 dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_level,
1033 dnxhd_1250_ac_flags,
1034 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1035 { 90, 90, 180, 220 },
1036 { { 24000, 1001 }, { 25, 1 }, { 50, 1 }, { 60000, 1001 } } },
1037 { 1251, 1280, 720, 0, 458752, 458752, 4, 8, 4,
1038 dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
1039 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1040 dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
1041 dnxhd_1251_ac_flags,
1042 dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
1043 { 90, 90, 110, 180, 220 },
1044 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1045 { 1252, 1280, 720, 0, 303104, 303104, 4, 8, 5,
1046 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1047 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1048 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1049 dnxhd_1252_ac_flags,
1050 dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
1051 { 60, 60, 75, 120, 145 },
1052 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1053 { 1253, 1920, 1080, 0, 188416, 188416, 4, 8, 3,
1054 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1055 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1056 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1057 dnxhd_1237_ac_flags,
1058 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1059 { 36, 36, 45, 75, 90 },
1060 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1061 { 1256, 1920, 1080, 0, 1835008, 1835008, 6, 10, 4,
1062 dnxhd_1235_luma_weight, dnxhd_1256_chroma_weight,
1063 dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1064 dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1065 dnxhd_1235_ac_flags,
1066 dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1067 { 350, 390, 440, 730, 880 },
1068 { { 24000, 1001 }, { 25, 1 }, { 30000, 1001 }, { 50, 1 }, { 60000, 1001 } } },
1069 { 1258, 960, 720, 0, 212992, 212992, 4, 8, 5,
1070 dnxhd_1258_luma_weight, dnxhd_1258_chroma_weight,
1071 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1072 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1073 dnxhd_1252_ac_flags,
1074 dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
1075 { 42, 60, 75, 115 } },
1079 int ff_dnxhd_get_cid_table(int cid)
1082 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
1083 if (ff_dnxhd_cid_table[i].cid == cid)
1088 int avpriv_dnxhd_get_frame_size(int cid)
1090 int i = ff_dnxhd_get_cid_table(cid);
1093 return ff_dnxhd_cid_table[i].frame_size;
1096 int avpriv_dnxhd_get_interlaced(int cid)
1098 int i = ff_dnxhd_get_cid_table(cid);
1101 return ff_dnxhd_cid_table[i].interlaced;
1104 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
1107 int mbs = avctx->bit_rate / 1000000;
1110 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1111 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1112 if (cid->width == avctx->width && cid->height == avctx->height &&
1113 cid->interlaced == !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) &&
1114 cid->bit_depth == bit_depth) {
1115 for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1116 if (cid->bit_rates[j] == mbs)
1124 void ff_dnxhd_print_profiles(AVCodecContext *avctx, int loglevel)
1127 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1128 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1129 for (j = 0; j < FF_ARRAY_ELEMS(cid->bit_rates); j++) {
1130 if (!cid->bit_rates[j])
1133 av_log(avctx, loglevel, "Frame size: %dx%d%c; bitrate: %dMbps; pixel format: %s; framerate: %d/%d\n",
1134 cid->width, cid->height, cid->interlaced ? 'i' : 'p', cid->bit_rates[j],
1135 cid->bit_depth == 10 ? "yuv422p10" : "yuv422p", cid->frame_rates[j].num, cid->frame_rates[j].den);