]> git.sesse.net Git - ffmpeg/blob - libavcodec/dnxhddata.c
5ce6667d1afd8ce3b77bef7a83da0b1136950565
[ffmpeg] / libavcodec / dnxhddata.c
1 /*
2  * VC3/DNxHD data.
3  * Copyright (c) 2007 SmartJog S.A., Baptiste Coudurier <baptiste dot coudurier at smartjog dot com>
4  *
5  * This file is part of Libav.
6  *
7  * Libav 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.
11  *
12  * Libav 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.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with Libav; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21
22 #include "avcodec.h"
23 #include "dnxhddata.h"
24 #include "libavutil/common.h"
25
26 /* Used in CID 1235, 1256 */
27 static const uint8_t dnxhd_1235_luma_weight[] = {
28      0, 32, 32, 32, 33, 35, 38, 39,
29     32, 33, 32, 33, 36, 36, 39, 42,
30     32, 32, 33, 36, 35, 37, 41, 43,
31     31, 33, 34, 36, 36, 40, 42, 48,
32     32, 34, 36, 37, 39, 42, 46, 51,
33     36, 37, 37, 39, 41, 46, 51, 55,
34     37, 39, 41, 41, 47, 50, 55, 56,
35     41, 42, 41, 44, 50, 53, 60, 60
36 };
37
38 static const uint8_t dnxhd_1235_chroma_weight[] = {
39      0, 32, 33, 34, 39, 41, 54, 59,
40     33, 34, 35, 38, 43, 49, 58, 84,
41     34, 37, 39, 44, 46, 55, 74, 87,
42     40, 42, 47, 48, 58, 70, 87, 86,
43     43, 50, 56, 63, 72, 94, 91, 82,
44     55, 63, 65, 75, 93, 89, 85, 73,
45     61, 67, 82, 81, 83, 90, 79, 73,
46     74, 84, 75, 78, 90, 85, 73, 73
47 };
48
49 /* Used in CID 1237, 1253 */
50 static const uint8_t dnxhd_1237_luma_weight[] = {
51      0,  32,  33,  34, 34, 36, 37, 36,
52     36,  37,  38,  38, 38, 39, 41, 44,
53     43,  41,  40,  41, 46, 49, 47, 46,
54     47,  49,  51,  54, 60, 62, 59, 55,
55     54,  56,  58,  61, 65, 66, 64, 63,
56     66,  73,  78,  79, 80, 79, 78, 78,
57     82,  87,  89,  90, 93, 95, 96, 97,
58     97, 100, 104, 102, 98, 98, 99, 99,
59 };
60
61 /* Used in CID 1237, 1253 */
62 static const uint8_t dnxhd_1237_chroma_weight[] = {
63      0,  32,  36,  39, 39, 38, 39,  41,
64     45,  51,  57,  58, 53, 48, 47,  51,
65     55,  58,  66,  75, 81, 83, 82,  78,
66     73,  72,  74,  77, 83, 85, 83,  82,
67     89,  99,  96,  90, 94, 97, 99, 105,
68    109, 105,  95,  89, 92, 95, 94,  93,
69     92,  88,  89,  90, 93, 95, 96,  97,
70     97, 100, 104, 102, 98, 98, 99,  99,
71 };
72
73 static const uint8_t dnxhd_1238_luma_weight[] = {
74      0, 32, 32, 33, 34, 33, 33, 33,
75     33, 33, 33, 33, 33, 35, 37, 37,
76     36, 36, 35, 36, 38, 38, 36, 35,
77     36, 37, 38, 41, 42, 41, 39, 38,
78     38, 38, 39, 41, 42, 41, 39, 39,
79     40, 41, 43, 44, 44, 44, 44, 44,
80     45, 47, 47, 47, 49, 50, 51, 51,
81     51, 53, 55, 57, 58, 59, 57, 57,
82 };
83
84 static const uint8_t dnxhd_1238_chroma_weight[] = {
85      0, 32, 35, 35, 35, 34, 34, 35,
86     39, 43, 45, 45, 41, 39, 40, 41,
87     42, 44, 48, 55, 59, 63, 65, 59,
88     53, 52, 52, 55, 61, 62, 58, 58,
89     63, 66, 66, 65, 70, 74, 70, 66,
90     65, 68, 75, 77, 74, 74, 77, 76,
91     73, 73, 73, 73, 76, 80, 89, 90,
92     82, 77, 80, 86, 84, 82, 82, 82,
93 };
94
95 static const uint8_t dnxhd_1241_luma_weight[] = {
96      0, 32, 33, 34, 34, 35, 36, 37,
97     36, 37, 38, 38, 38, 39, 39, 40,
98     40, 38, 38, 39, 38, 37, 39, 41,
99     41, 42, 43, 45, 45, 46, 47, 46,
100     45, 43, 39, 37, 37, 40, 44, 45,
101     45, 46, 46, 46, 47, 47, 46, 44,
102     42, 43, 45, 47, 48, 49, 50, 49,
103     48, 46, 47, 48, 48, 49, 49, 49,
104 };
105
106 static const uint8_t dnxhd_1241_chroma_weight[] = {
107      0, 32, 36, 38, 37, 37, 40, 41,
108     40, 40, 42, 42, 41, 41, 41, 41,
109     42, 43, 44, 44, 45, 46, 46, 45,
110     44, 45, 45, 45, 45, 46, 47, 46,
111     45, 44, 42, 41, 43, 45, 45, 47,
112     48, 48, 48, 46, 47, 47, 46, 47,
113     46, 45, 45, 47, 48, 49, 50, 49,
114     48, 46, 48, 49, 48, 49, 49, 49,
115 };
116
117 static const uint8_t dnxhd_1242_luma_weight[] = {
118      0, 32, 33, 33, 34, 35, 36, 35,
119     33, 33, 35, 36, 37, 37, 38, 37,
120     37, 37, 36, 37, 37, 37, 38, 39,
121     37, 36, 37, 40, 42, 45, 46, 44,
122     41, 42, 44, 45, 47, 49, 50, 48,
123     46, 48, 49, 50, 52, 52, 50, 49,
124     47, 48, 50, 50, 51, 51, 50, 49,
125     49, 51, 52, 51, 49, 47, 47, 47,
126 };
127
128 static const uint8_t dnxhd_1242_chroma_weight[] = {
129      0, 32, 37, 42, 45, 45, 45, 44,
130     38, 37, 40, 42, 44, 49, 51, 47,
131     41, 40, 43, 44, 46, 48, 51, 54,
132     51, 47, 47, 45, 47, 50, 51, 49,
133     46, 47, 49, 47, 50, 55, 55, 51,
134     48, 49, 51, 51, 52, 52, 54, 54,
135     49, 49, 52, 53, 54, 54, 53, 53,
136     55, 59, 63, 62, 60, 60, 60, 60,
137 };
138
139 static const uint8_t dnxhd_1243_luma_weight[] = {
140      0, 32, 32, 33, 33, 35, 35, 35,
141     35, 35, 35, 35, 34, 35, 38, 40,
142     39, 37, 37, 37, 36, 35, 36, 38,
143     40, 41, 42, 44, 45, 44, 42, 41,
144     40, 38, 36, 36, 37, 38, 40, 43,
145     44, 45, 45, 45, 45, 45, 45, 41,
146     39, 41, 45, 47, 47, 48, 48, 48,
147     46, 44, 45, 47, 47, 48, 47, 47,
148 };
149
150 static const uint8_t dnxhd_1243_chroma_weight[] = {
151      0, 32, 36, 37, 36, 37, 39, 39,
152     41, 43, 43, 42, 41, 41, 41, 42,
153     43, 43, 43, 44, 44, 44, 46, 47,
154     46, 45, 45, 45, 45, 46, 44, 44,
155     45, 44, 42, 41, 43, 46, 45, 44,
156     45, 45, 45, 46, 46, 46, 45, 44,
157     45, 44, 45, 47, 47, 48, 49, 48,
158     46, 45, 46, 47, 47, 48, 47, 47,
159 };
160
161 static const uint8_t dnxhd_1250_luma_weight[] = {
162      0, 32, 35, 35, 36, 36, 41, 43,
163     32, 34, 35, 36, 37, 39, 43, 47,
164     33, 34, 36, 38, 38, 42, 42, 50,
165     34, 36, 38, 38, 41, 40, 47, 54,
166     35, 38, 39, 40, 39, 45, 49, 58,
167     38, 39, 40, 39, 46, 47, 54, 60,
168     38, 39, 41, 46, 46, 48, 57, 62,
169     40, 41, 44, 45, 49, 54, 63, 63
170 };
171
172 static const uint8_t dnxhd_1250_chroma_weight[] = {
173      0, 32, 35, 36, 40, 42, 51, 51,
174     35, 36, 39, 39, 43, 51, 52, 55,
175     36, 41, 41, 43, 51, 53, 54, 56,
176     43, 44, 45, 50, 54, 54, 55, 57,
177     45, 48, 50, 51, 55, 58, 59, 58,
178     49, 52, 49, 57, 58, 62, 58, 60,
179     51, 51, 56, 58, 62, 61, 59, 62,
180     52, 52, 60, 61, 59, 59, 63, 63
181 };
182
183 static const uint8_t dnxhd_1251_luma_weight[] = {
184      0, 32, 32, 34, 34, 34, 34, 35,
185     35, 35, 36, 37, 36, 36, 35, 36,
186     38, 38, 38, 38, 38, 38, 38, 38,
187     38, 38, 39, 41, 44, 43, 41, 40,
188     40, 40, 40, 39, 40, 41, 40, 39,
189     40, 43, 46, 46, 44, 44, 44, 42,
190     41, 43, 46, 48, 50, 55, 58, 53,
191     48, 50, 55, 58, 61, 62, 62, 62,
192 };
193
194 static const uint8_t dnxhd_1251_chroma_weight[] = {
195      0, 32, 35, 36, 36, 35, 36, 39,
196     41, 43, 45, 44, 41, 39, 40, 42,
197     43, 43, 45, 48, 48, 48, 50, 50,
198     50, 51, 51, 51, 51, 52, 53, 54,
199     51, 49, 51, 52, 52, 56, 57, 55,
200     54, 54, 55, 56, 55, 58, 58, 58,
201     60, 61, 62, 62, 59, 57, 58, 58,
202     61, 59, 59, 59, 61, 62, 62, 62,
203 };
204
205 static const uint8_t dnxhd_1252_luma_weight[] = {
206       0,  32,  34, 35, 36, 36, 36, 37,
207      36,  37,  39, 40, 41, 40, 40, 40,
208      41,  41,  42, 41, 41, 43, 44, 44,
209      45,  46,  48, 55, 60, 57, 52, 50,
210      49,  49,  52, 52, 53, 55, 58, 62,
211      65,  73,  82, 82, 80, 78, 73, 68,
212      71,  82,  90, 90, 88, 87, 90, 95,
213     100, 107, 103, 97, 95, 93, 99, 99,
214 };
215 static const uint8_t dnxhd_1252_chroma_weight[] = {
216       0,  32,  35,  36,  37,  37,  38,  40,
217      42,  46,  49,  50,  50,  49,  49,  53,
218      56,  56,  57,  58,  60,  62,  64,  65,
219      63,  64,  64,  65,  66,  65,  67,  71,
220      72,  74,  74,  74,  74,  77,  81,  78,
221      72,  73,  82,  85,  89,  88,  84,  80,
222      90, 100,  90,  90,  88,  87,  90,  95,
223     114, 128, 125, 129, 134, 125, 116, 116,
224 };
225
226 static const uint8_t dnxhd_1256_chroma_weight[] = {
227      0, 32, 32, 32, 32, 32, 32, 33,
228     32, 32, 32, 32, 32, 32, 32, 34,
229     32, 32, 32, 32, 32, 32, 33, 37,
230     32, 32, 32, 32, 32, 32, 36, 39,
231     32, 32, 32, 32, 32, 34, 39, 44,
232     32, 37, 32, 32, 35, 40, 43, 49,
233     32, 33, 36, 36, 40, 43, 50, 60,
234     34, 37, 39, 44, 51, 56, 61, 70,
235 };
236
237 static const uint8_t dnxhd_1258_luma_weight[] = {
238      0, 32, 36, 36,  40,  40, 55, 60,
239     34, 36, 37, 40,  41,  48, 57, 82,
240     35, 36, 41, 41,  46,  52, 73, 82,
241     37, 40, 42, 45,  50,  65, 80, 87,
242     39, 41, 44, 49,  62,  78, 88, 90,
243     41, 44, 49, 58,  73,  90, 95, 95,
244     43, 52, 55, 68,  90, 100, 97, 93,
245     52, 53, 71, 82, 107, 103, 99, 99,
246 };
247
248 static const uint8_t dnxhd_1258_chroma_weight[] = {
249      0, 32, 37,  38,  49,  53,  65,  66,
250     35, 37, 40,  49,  56,  64,  65,  82,
251     36, 42, 50,  56,  64,  67,  73,  85,
252     46, 50, 57,  63,  71,  72,  89,  87,
253     49, 58, 65,  72,  78,  88,  88,  90,
254     60, 64, 74,  81,  84,  90,  95, 134,
255     62, 74, 77,  80,  90, 114, 129, 125,
256     74, 74, 90, 100, 128, 125, 116, 116,
257 };
258
259 static const uint8_t dnxhd_1259_luma_weight[] = {
260      0, 32, 36, 37,  41,  44,  54, 60,
261     33, 34, 36, 39,  43,  51,  62, 78,
262     34, 36, 38, 41,  49,  59,  73, 79,
263     37, 38, 40, 47,  55,  66,  80, 95,
264     38, 41, 46, 54,  63,  79,  93, 96,
265     46, 47, 56, 64,  78,  90,  97, 98,
266     49, 58, 66, 78,  89,  97, 102, 98,
267     61, 65, 82, 87, 100, 104,  99, 99,
268 };
269
270 static const uint8_t dnxhd_1259_chroma_weight[] = {
271      0, 32, 38, 39,  47,  51,  77, 83,
272     36, 39, 41, 48,  55,  74,  85, 95,
273     39, 45, 53, 58,  72,  83, 105, 89,
274     51, 58, 66, 73,  82, 109,  92, 95,
275     57, 75, 78, 89, 105,  95,  93, 96,
276     81, 82, 99, 99,  94,  90,  97, 98,
277     83, 96, 97, 93,  89,  97, 102, 98,
278     90, 94, 92, 88, 100, 104,  99, 99,
279 };
280
281 static const uint8_t dnxhd_1260_luma_weight[] = {
282      0, 32, 37, 37, 40, 41, 52, 53,
283     33, 36, 36, 38, 40, 48, 49, 52,
284     34, 34, 37, 39, 44, 47, 49, 54,
285     33, 35, 38, 40, 45, 46, 54, 51,
286     34, 37, 37, 42, 44, 49, 52, 48,
287     34, 34, 38, 43, 44, 51, 50, 50,
288     33, 36, 41, 44, 51, 52, 50, 54,
289     36, 38, 44, 47, 53, 53, 54, 54,
290 };
291
292 static const uint8_t dnxhd_1260_chroma_weight[] = {
293      0, 32, 40, 38, 42, 40, 45, 45,
294     34, 42, 36, 43, 38, 46, 46, 49,
295     38, 35, 43, 39, 44, 47, 47, 49,
296     35, 42, 43, 42, 46, 47, 49, 52,
297     38, 43, 43, 44, 50, 49, 56, 50,
298     42, 43, 44, 50, 51, 57, 52, 53,
299     41, 45, 46, 53, 53, 56, 53, 54,
300     46, 46, 51, 49, 56, 53, 58, 58,
301 };
302
303 /* Used in CID 1235, 1241, 1250, 1256 */
304 static const uint8_t dnxhd_1235_dc_codes[14] = {
305     10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
306 };
307
308 /* Used in CID 1235, 1241, 1250, 1256 */
309 static const uint8_t dnxhd_1235_dc_bits[14] = {
310     4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
311 };
312
313 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */
314 static const uint8_t dnxhd_1237_dc_codes[12] = {
315     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
316 };
317
318 /* Used in CID 1237, 1238, 1242, 1243, 1251, 1252, 1253, 1258, 1259, 1260 */
319 static const uint8_t dnxhd_1237_dc_bits[12] = {
320     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
321 };
322
323 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
324 static const uint16_t dnxhd_1237_ac_codes[257] = {
325         0,     1,     4,     5,    12,    26,    27,    56,
326        57,    58,    59,   120,   121,   244,   245,   246,
327       247,   248,   498,   499,   500,   501,   502,  1006,
328      1007,  1008,  1009,  1010,  1011,  2024,  2025,  2026,
329      2027,  2028,  2029,  2030,  2031,  4064,  4065,  4066,
330      4067,  4068,  4069,  4070,  4071,  4072,  4073,  8148,
331      8149,  8150,  8151,  8152,  8153,  8154,  8155,  8156,
332      8157,  8158, 16318, 16319, 16320, 16321, 16322, 16323,
333     16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
334     16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
335     32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
336     32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
337     65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
338     65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
339     65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
340     65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
341     65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
342     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
343     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
344     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
345     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
346     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
347     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
348     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
349     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
350     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
351     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
352     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
353     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
354     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
355     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
356     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
357     65535,
358 };
359
360 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
361 static const uint8_t dnxhd_1237_ac_bits[257] = {
362      2,  2,  3,  3,  4,  5,  5,  6,  6,  6,  6,  7,  7,  8,  8,  8,
363      8,  8,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
364     11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
365     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
366     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
367     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
368     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
369     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
370     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
371     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
372     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
373     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
374     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
375     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
376     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
377     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
378     16,
379 };
380
381 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
382 static const uint8_t dnxhd_1237_ac_level[257] = {
383      1,  1,  2,  0,  3,  4,  2,  5,  6,  7,  3,  8,  9, 10, 11, 12,
384      4,  5, 13, 14, 15, 16,  6, 17, 18, 19, 20, 21,  7, 22, 23, 24,
385     25, 26, 27,  8,  9, 28, 29, 30, 31, 32, 33, 34, 10, 11, 12, 35,
386     36, 37, 38, 39, 40, 41, 13, 14, 15, 16, 42, 43, 44, 45, 46, 47,
387     48, 49, 50, 51, 52, 17, 18, 19, 20, 21, 53, 54, 55, 56, 57, 58,
388     59, 60, 61, 64,  1, 22, 23, 24, 25, 26, 27, 62, 63,  2,  3,  4,
389      5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
390     21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
391     37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
392     53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
393     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
394     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
395     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
396     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
397     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
398     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
399     64,
400 };
401
402 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
403 static const uint8_t dnxhd_1237_ac_run_flag[257] = {
404     0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
405     1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
406     0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
407     0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
408     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
409     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
410     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
411     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
412     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
413     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
414     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
415     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
416     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
417     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
418     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
419     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
420     1,
421 };
422
423 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
424 static const uint8_t dnxhd_1237_ac_index_flag[257] = {
425     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
426     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
427     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
428     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
429     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
430     0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
431     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
432     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
433     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
434     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
435     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
436     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
437     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
438     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
439     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
440     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
441     1,
442 };
443
444 /* Used in CID 1238, 1243 */
445 static const uint16_t dnxhd_1238_ac_codes[257] = {
446         0,     1,     4,    10,    11,    24,    25,    26,
447        54,    55,    56,    57,   116,   117,   118,   119,
448       240,   241,   242,   243,   244,   245,   492,   493,
449       494,   495,   496,   497,   498,   499,  1000,  1001,
450      1002,  1003,  1004,  1005,  1006,  1007,  1008,  2018,
451      2019,  2020,  2021,  2022,  2023,  2024,  2025,  2026,
452      2027,  4056,  4057,  4058,  4059,  4060,  4061,  4062,
453      4063,  4064,  4065,  4066,  4067,  4068,  4069,  8140,
454      8141,  8142,  8143,  8144,  8145,  8146,  8147,  8148,
455      8149,  8150,  8151,  8152,  8153,  8154,  8155,  8156,
456     16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
457     16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
458     16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
459     16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
460     32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
461     32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
462     32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
463     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
464     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
465     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
466     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
467     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
468     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
469     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
470     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
471     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
472     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
473     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
474     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
475     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
476     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
477     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
478     65535,
479 };
480
481 /* Used in CID 1238, 1243 */
482 static const uint8_t dnxhd_1238_ac_bits[257] = {
483      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
484      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10,
485     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
486     11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
487     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
488     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
489     14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
490     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
491     15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
492     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
493     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
494     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
495     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
496     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
497     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
498     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
499     16,
500 };
501
502 /* Used in CID 1238, 1243 */
503 static const uint8_t dnxhd_1238_ac_level[257] = {
504      1,  1,  2,  3,  0,  4,  5,  2,  6,  7,  8,  3,  9, 10, 11,  4,
505     12, 13, 14, 15, 16,  5, 17, 18, 19, 20, 21, 22,  6,  7, 23, 24,
506     25, 26, 27, 28, 29,  8,  9, 30, 31, 32, 33, 34, 35, 36, 37, 10,
507     11, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 12, 13, 14, 49,
508     50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 15, 16, 17, 18,
509     62, 63, 64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13,
510     14, 15, 16, 19, 20, 21, 22, 23, 24, 17, 18, 19, 20, 21, 22, 23,
511     24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 25,
512     26, 27, 28, 29, 30, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49,
513     50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 31,
514     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
515     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
516     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
517     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
518     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
519     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
520     64,
521 }; /* 0 is EOB */
522
523 /* Used in CID 1238, 1243 */
524 static const uint8_t dnxhd_1238_ac_run_flag[257] = {
525     0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
526     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
527     0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
528     1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
529     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
530     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
531     0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
532     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
533     1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
534     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
535     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
536     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
537     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
538     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
539     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
540     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
541     1,
542 };
543
544 /* Used in CID 1238, 1243 */
545 static const uint8_t dnxhd_1238_ac_index_flag[257] = {
546     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
547     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
548     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
549     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
550     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
551     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
552     1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
553     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
554     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
555     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
556     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
557     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
558     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
559     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
560     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
561     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
562     1,
563 };
564
565 /* Used in CID 1235, 1241, 1256 */
566 static const uint16_t dnxhd_1235_ac_codes[257] = {
567         0,     1,     4,    10,    11,    24,    25,    26,
568        54,    55,    56,    57,   116,   117,   118,   119,
569       240,   241,   242,   243,   244,   245,   492,   493,
570       494,   495,   496,   497,   498,   998,   999,  1000,
571      1001,  1002,  1003,  1004,  1005,  1006,  1007,  2016,
572      2017,  2018,  2019,  2020,  2021,  2022,  2023,  2024,
573      2025,  2026,  4054,  4055,  4056,  4057,  4058,  4059,
574      4060,  4061,  4062,  4063,  4064,  4065,  4066,  4067,
575      4068,  4069,  8140,  8141,  8142,  8143,  8144,  8145,
576      8146,  8147,  8148,  8149,  8150,  8151,  8152,  8153,
577      8154,  8155,  8156,  8157, 16316, 16317, 16318, 16319,
578     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
579     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
580     16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
581     32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
582     32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
583     32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
584     32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
585     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
586     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
587     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
588     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
589     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
590     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
591     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
592     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
593     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
594     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
595     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
596     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
597     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
598     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
599     65535,
600 };
601
602 /* Used in CID 1235, 1241, 1256 */
603 static const uint8_t dnxhd_1235_ac_bits[257] = {
604      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
605      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10,
606     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
607     11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
608     12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
609     13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
610     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
611     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
612     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 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,
616     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
617     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
618     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
619     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
620     16,
621 };
622
623 /* Used in CID 1235, 1241, 1256 */
624 static const uint8_t dnxhd_1235_ac_level[257] = {
625      1,  1,  2,  3,  0,  4,  5,  2,  6,  7,  8,  3,  9, 10, 11,  4,
626     12, 13, 14, 15, 16,  5, 17, 18, 19, 20, 21,  6,  7, 22, 23, 24,
627     25, 26, 27, 28, 29,  8,  9, 30, 31, 32, 33, 34, 35, 36, 37, 38,
628     10, 11, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 12, 13,
629     14, 15, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,  1,
630     16, 17, 18, 19, 64,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12,
631     13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 18, 19, 20, 21, 22, 23,
632     24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
633     40, 41, 42, 25, 26, 27, 28, 29, 30, 31, 32, 43, 44, 45, 46, 47,
634     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
635     64, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
636     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
637     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
638     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
639     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
640     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
641     64,
642 };
643
644 /* Used in CID 1235, 1241, 1256 */
645 static const uint8_t dnxhd_1235_ac_run_flag[257] = {
646     0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
647     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
648     0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
649     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
650     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
651     1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
652     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
653     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
654     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
655     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
656     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
657     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
658     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
659     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
660     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
661     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
662     1,
663 };
664
665 /* Used in CID 1235, 1241, 1256 */
666 static const uint8_t dnxhd_1235_ac_index_flag[257] = {
667     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
668     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
669     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
670     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
671     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
672     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
673     1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
674     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
675     1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
676     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
677     1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
678     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
679     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
680     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
681     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
682     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
683     1,
684 };
685
686 static const uint16_t dnxhd_1250_ac_codes[257] = {
687         0,     1,     4,    10,    11,    24,    25,    26,
688        54,    55,    56,    57,   116,   117,   118,   119,
689       240,   241,   242,   243,   244,   245,   492,   493,
690       494,   495,   496,   497,   498,   998,   999,  1000,
691      1001,  1002,  1003,  1004,  1005,  1006,  2014,  2015,
692      2016,  2017,  2018,  2019,  2020,  2021,  2022,  2023,
693      2024,  2025,  4052,  4053,  4054,  4055,  4056,  4057,
694      4058,  4059,  4060,  4061,  4062,  4063,  4064,  4065,
695      4066,  4067,  8136,  8137,  8138,  8139,  8140,  8141,
696      8142,  8143,  8144,  8145,  8146,  8147,  8148,  8149,
697      8150,  8151,  8152,  8153,  8154,  8155,  8156, 16314,
698     16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
699     16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
700     16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
701     32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
702     32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
703     32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
704     32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
705     32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
706     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
707     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
708     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
709     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
710     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
711     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
712     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
713     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
714     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
715     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
716     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
717     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
718     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
719     65535
720 };
721 static const uint8_t dnxhd_1250_ac_bits[257] = {
722      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
723      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10,
724     10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
725     11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
726     12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
727     13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
728     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
729     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
730     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
731     15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
732     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
733     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
734     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
735     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
736     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
737     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
738     16
739 };
740 static const uint8_t dnxhd_1250_ac_level[257] = {
741      1,  1,  2,  3,  0,  4,  5,  2,  6,  7,  8,  3,  9, 10, 11,  4,
742     12, 13, 14, 15, 16,  5, 17, 18, 19, 20, 21, 22,  6, 23, 24, 25,
743     26, 27, 28, 29,  7,  8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
744      9, 10, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 11,
745     12, 13, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,  1,  2,
746      3,  4,  5, 14, 15, 16, 17,  6,  7,  8,  9, 10, 11, 12, 13, 14,
747     15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 18, 19, 20, 21,
748     27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
749     43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 22, 23, 24,
750     25, 26, 27, 54, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
751     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
752     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
753     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
754     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
755     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
756     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
757     64
758 };
759 static const uint8_t dnxhd_1250_ac_run_flag[257] = {
760     0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
761     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
762     0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
763     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
764     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
765     0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
766     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
767     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
768     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
769     1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
770     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
771     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
772     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
773     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
774     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
775     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
776     1
777 };
778 static const uint8_t dnxhd_1250_ac_index_flag[257] = {
779     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
780     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
781     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
782     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
783     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
784     1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
785     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
786     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
787     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
788     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
789     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
790     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
791     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
792     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
793     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
794     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
795     1
796 };
797
798 static const uint16_t dnxhd_1251_ac_codes[257] = {
799         0,     1,     4,    10,    11,    24,    25,    26,
800        54,    55,    56,    57,   116,   117,   118,   119,
801       240,   241,   242,   243,   244,   245,   492,   493,
802       494,   495,   496,   497,   996,   997,   998,   999,
803      1000,  1001,  1002,  1003,  1004,  1005,  2012,  2013,
804      2014,  2015,  2016,  2017,  2018,  2019,  2020,  2021,
805      2022,  2023,  2024,  2025,  4052,  4053,  4054,  4055,
806      4056,  4057,  4058,  4059,  4060,  4061,  4062,  4063,
807      4064,  4065,  4066,  8134,  8135,  8136,  8137,  8138,
808      8139,  8140,  8141,  8142,  8143,  8144,  8145,  8146,
809      8147,  8148,  8149,  8150,  8151,  8152,  8153,  8154,
810      8155,  8156, 16314, 16315, 16316, 16317, 16318, 16319,
811     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
812     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
813     16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
814     32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
815     32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
816     32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
817     32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
818     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
819     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
820     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
821     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
822     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
823     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
824     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
825     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
826     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
827     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
828     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
829     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
830     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
831     65535,
832 };
833
834 static const uint8_t dnxhd_1251_ac_bits[257] = {
835      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
836      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10,
837     10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
838     11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
839     12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
840     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
841     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
842     14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
843     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
844     15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
845     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
846     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
847     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
848     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
849     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
850     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
851     16,
852 };
853
854 static const uint8_t dnxhd_1251_ac_level[257] = {
855      1,  1,  2,  3,  0,  4,  5,  2,  6,  7,  8,  3,  9, 10, 11,  4,
856     12, 13, 14, 15, 16,  5, 17, 18, 19, 20, 21,  6, 22, 23, 24, 25,
857     26, 27, 28, 29,  7,  8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
858     40,  9, 10, 11, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
859     12, 13, 14, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,  1,
860      2,  3,  4,  5,  6,  7,  8, 15, 16, 17,  9, 10, 11, 12, 13, 14,
861     15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 18,
862     19, 20, 21, 22, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
863     42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
864     58, 23, 24, 25, 26, 27, 28, 59, 60, 61, 62, 63, 64, 29, 30, 31,
865     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
866     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
867     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
868     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
869     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
870     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
871     64,
872 };
873
874 static const uint8_t dnxhd_1251_ac_run_flag[257] = {
875     0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
876     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
877     0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
878     0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
879     1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
880     0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
881     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
882     1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
883     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
884     0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
885     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
886     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
887     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
888     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
889     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
890     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
891     1,
892 };
893
894 static const uint8_t dnxhd_1251_ac_index_flag[257] = {
895     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
896     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
897     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
898     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
899     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
900     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
901     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
902     0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
903     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
904     1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
905     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
906     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
907     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
908     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
909     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
910     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
911     1,
912 };
913
914 /* Used in CID 1252, 1258 */
915 static const uint16_t dnxhd_1252_ac_codes[257] = {
916         0,     1,     4,    10,    11,    12,    26,    27,
917        56,    57,    58,   118,   119,   120,   242,   243,
918       244,   245,   246,   247,   496,   497,   498,   499,
919       500,  1002,  1003,  1004,  1005,  1006,  1007,  1008,
920      1009,  2020,  2021,  2022,  2023,  2024,  2025,  2026,
921      2027,  2028,  2029,  4060,  4061,  4062,  4063,  4064,
922      4065,  4066,  4067,  4068,  4069,  4070,  4071,  8144,
923      8145,  8146,  8147,  8148,  8149,  8150,  8151,  8152,
924      8153,  8154,  8155,  8156,  8157,  8158, 16318, 16319,
925     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
926     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
927     32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
928     32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
929     32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
930     65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
931     65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
932     65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
933     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
934     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
935     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
936     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
937     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
938     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
939     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
940     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
941     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
942     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
943     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
944     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
945     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
946     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
947     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
948     65535,
949 };
950
951 /* Used in CID 1252, 1258 */
952 static const uint8_t dnxhd_1252_ac_bits[257] = {
953      2,  2,  3,  4,  4,  4,  5,  5,  6,  6,  6,  7,  7,  7,  8,  8,
954      8,  8,  8,  8,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 10,
955     10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
956     12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
957     13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
958     14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
959     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
960     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
961     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
962     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
963     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
964     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
965     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
966     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
967     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
968     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
969     16,
970 };
971
972 /* Used in CID 1252, 1258 */
973 static const uint8_t dnxhd_1252_ac_level[257] = {
974      1,  1,  2,  3,  2,  0,  4,  5,  6,  7,  3,  8,  9, 10, 11, 12,
975     13, 14,  4,  5, 15, 16, 17, 18,  6, 19, 20, 21, 22, 23, 24,  7,
976      8, 25, 26, 27, 28, 29, 30, 31, 32,  9, 10, 33, 34, 35, 36, 37,
977     38, 39, 40, 41, 11, 12, 13, 42, 43, 44, 45, 46, 47, 48, 49, 50,
978     51, 52, 53, 14, 15, 16, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
979     64,  1,  2,  3, 17, 18, 19, 20,  4,  5,  6,  7,  8,  9, 10, 11,
980     12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 22,
981     23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
982     39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
983     55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 26, 27, 28, 29, 30, 31,
984     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
985     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
986     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
987     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
988     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
989     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
990     64,
991 };
992
993 /* Used in CID 1252, 1258 */
994 static const uint8_t dnxhd_1252_ac_run_flag[257] = {
995     0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
996     0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,
997     1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
998     0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
999     0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1000     0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
1001     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
1002     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1003     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1004     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
1005     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1006     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1007     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1008     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1009     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1010     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1011     1,
1012 };
1013
1014 /* Used in CID 1252, 1258 */
1015 static const uint8_t dnxhd_1252_ac_index_flag[257] = {
1016     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1017     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1018     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1019     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1020     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1021     0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1022     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1,
1023     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1024     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1025     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
1026     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1027     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1028     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1029     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1030     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1031     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1032     1,
1033 };
1034
1035 /* Used in CID 1235, 1238, 1241, 1256 */
1036 static const uint16_t dnxhd_1235_run_codes[62] = {
1037        0,    4,   10,   11,   24,   25,   26,   27,
1038       56,   57,   58,   59,  120,  242,  486,  487,
1039      488,  489,  980,  981,  982,  983,  984,  985,
1040      986,  987,  988,  989,  990,  991,  992,  993,
1041      994,  995,  996,  997,  998,  999, 1000, 1001,
1042     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
1043     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
1044     1018, 1019, 1020, 1021, 1022, 1023,
1045 };
1046
1047 /* Used in CID 1235, 1238, 1241, 1243, 1256 */
1048 static const uint8_t dnxhd_1235_run_bits[62] = {
1049      1,  3,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  8,  9,  9,
1050      9,  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1051     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1052     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1053 };
1054
1055 /* Used in CID 1235, 1241, 1256 */
1056 static const uint8_t dnxhd_1235_run[62] = {
1057      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
1058     18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1059     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1060     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1061 };
1062
1063 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
1064 static const uint16_t dnxhd_1237_run_codes[62] = {
1065        0,    4,   10,   11,   24,   25,   26,   54,
1066       55,   56,   57,   58,  118,  119,  240,  482,
1067      483,  484,  485,  486,  487,  488,  489,  490,
1068      491,  492,  493,  494,  990,  991,  992,  993,
1069      994,  995,  996,  997,  998,  999, 1000, 1001,
1070     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
1071     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
1072     1018, 1019, 1020, 1021, 1022, 1023,
1073 };
1074
1075 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
1076 static const uint8_t dnxhd_1237_run_bits[62] = {
1077      1,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  6,  7,  7,  8,  9,
1078      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10,
1079     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1080     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1081 };
1082
1083 /* Used in CID 1237, 1242, 1253, 1259, 1260 */
1084 static const uint8_t dnxhd_1237_run[62] = {
1085      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
1086     17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
1087     26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
1088     42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
1089 };
1090
1091 static const uint8_t dnxhd_1238_run[62] = {
1092      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
1093     20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1094     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1095     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1096 };
1097
1098 /* Used in CID 1250, 1251, 1252, 1258 */
1099 static const uint16_t dnxhd_1250_run_codes[62] = {
1100        0,    4,    5,   12,   26,   27,   28,   58,
1101      118,  119,  120,  242,  486,  487,  976,  977,
1102      978,  979,  980,  981,  982,  983,  984,  985,
1103      986,  987,  988,  989,  990,  991,  992,  993,
1104      994,  995,  996,  997,  998,  999, 1000, 1001,
1105     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
1106     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
1107     1018, 1019, 1020, 1021, 1022, 1023,
1108 };
1109
1110 /* Used in CID 1250, 1251, 1252, 1258 */
1111 static const uint8_t dnxhd_1250_run_bits[62] = {
1112      1,  3,  3,  4,  5,  5,  5,  6,  7,  7,  7,  8,  9,  9, 10, 10,
1113     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1114     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1115     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1116 };
1117
1118 /* Used in CID 1250, 1251, 1252, 1258 */
1119 static const uint8_t dnxhd_1250_run[62] = {
1120      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
1121     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1122     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1123     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1124 };
1125
1126 const CIDEntry ff_dnxhd_cid_table[] = {
1127     { 1235, 1920, 1080, 0, 917504, 917504, 6, 10,
1128       dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
1129       dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1130       dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1131       dnxhd_1235_ac_run_flag, dnxhd_1235_ac_index_flag,
1132       dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1133       { 175, 185, 365, 440 } },
1134     { 1237, 1920, 1080, 0, 606208, 606208, 4, 8,
1135       dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1136       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1137       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1138       dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1139       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1140       { 115, 120, 145, 240, 290 } },
1141     { 1238, 1920, 1080, 0, 917504, 917504, 4, 8,
1142       dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
1143       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1144       dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1145       dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
1146       dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1147       { 175, 185, 220, 365, 440 } },
1148     { 1241, 1920, 1080, 1, 917504, 458752, 6, 10,
1149       dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
1150       dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1151       dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1152       dnxhd_1235_ac_run_flag, dnxhd_1235_ac_index_flag,
1153       dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1154       { 185, 220 } },
1155     { 1242, 1920, 1080, 1, 606208, 303104, 4, 8,
1156       dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
1157       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1158       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1159       dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1160       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1161       { 120, 145 } },
1162     { 1243, 1920, 1080, 1, 917504, 458752, 4, 8,
1163       dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
1164       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1165       dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
1166       dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
1167       dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1238_run,
1168       { 185, 220 } },
1169     { 1250, 1280,  720, 0, 458752, 458752, 6, 10,
1170       dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
1171       dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1172       dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_level,
1173       dnxhd_1250_ac_run_flag, dnxhd_1250_ac_index_flag,
1174       dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1175       { 90, 180, 220 } },
1176     { 1251, 1280,  720, 0, 458752, 458752, 4, 8,
1177       dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
1178       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1179       dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
1180       dnxhd_1251_ac_run_flag, dnxhd_1251_ac_index_flag,
1181       dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1182       { 90, 110, 175, 220 } },
1183     { 1252, 1280,  720, 0, 303104, 303104, 4, 8,
1184       dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
1185       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1186       dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1187       dnxhd_1252_ac_run_flag, dnxhd_1252_ac_index_flag,
1188       dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1189       { 60, 75, 115, 145 } },
1190     { 1253, 1920, 1080, 0, 188416, 188416, 4, 8,
1191       dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
1192       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1193       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1194       dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1195       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1196       { 36, 45, 75, 90 } },
1197     { 1256, 1920, 1080, 0, 1835008, 1835008, 6, 10,
1198       dnxhd_1235_luma_weight, dnxhd_1256_chroma_weight,
1199       dnxhd_1235_dc_codes, dnxhd_1235_dc_bits,
1200       dnxhd_1235_ac_codes, dnxhd_1235_ac_bits, dnxhd_1235_ac_level,
1201       dnxhd_1235_ac_run_flag, dnxhd_1235_ac_index_flag,
1202       dnxhd_1235_run_codes, dnxhd_1235_run_bits, dnxhd_1235_run,
1203       { 350, 390, 440, 730, 880 } },
1204     { 1258, 960, 720, 0, 212992, 212992, 4, 8,
1205       dnxhd_1258_luma_weight, dnxhd_1258_chroma_weight,
1206       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1207       dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
1208       dnxhd_1252_ac_run_flag, dnxhd_1252_ac_index_flag,
1209       dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
1210       { 42, 60, 75, 115 } },
1211     { 1259, 1440, 1080, 0, 417792, 417792, 4, 8,
1212       dnxhd_1259_luma_weight, dnxhd_1259_chroma_weight,
1213       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1214       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1215       dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1216       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1217       { 63, 84, 100, 110 } },
1218     { 1260, 1440, 1080, 1, 417792, 417792, 4, 8,
1219       dnxhd_1260_luma_weight, dnxhd_1260_chroma_weight,
1220       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
1221       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
1222       dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
1223       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
1224       { 80, 90, 100, 110 } },
1225 };
1226
1227 int ff_dnxhd_get_cid_table(int cid)
1228 {
1229     int i;
1230     for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
1231         if (ff_dnxhd_cid_table[i].cid == cid)
1232             return i;
1233     return -1;
1234 }
1235
1236 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
1237 {
1238     int i, j;
1239     int mbs = avctx->bit_rate / 1000000;
1240     if (!mbs)
1241         return 0;
1242     for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
1243         const CIDEntry *cid = &ff_dnxhd_cid_table[i];
1244         if (cid->width == avctx->width && cid->height == avctx->height &&
1245             cid->interlaced == !!(avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) &&
1246             cid->bit_depth == bit_depth) {
1247             for (j = 0; j < sizeof(cid->bit_rates); j++) {
1248                 if (cid->bit_rates[j] == mbs)
1249                     return cid->cid;
1250             }
1251         }
1252     }
1253     return 0;
1254 }