]> git.sesse.net Git - ffmpeg/blob - libavcodec/dnxhddata.c
vc1: remove disabled code
[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
25 static const uint8_t dnxhd_1237_luma_weight[] = {
26      0,  32,  33,  34, 34, 36, 37, 36,
27     36,  37,  38,  38, 38, 39, 41, 44,
28     43,  41,  40,  41, 46, 49, 47, 46,
29     47,  49,  51,  54, 60, 62, 59, 55,
30     54,  56,  58,  61, 65, 66, 64, 63,
31     66,  73,  78,  79, 80, 79, 78, 78,
32     82,  87,  89,  90, 93, 95, 96, 97,
33     97, 100, 104, 102, 98, 98, 99, 99,
34 };
35
36 static const uint8_t dnxhd_1237_chroma_weight[] = {
37      0,  32,  36,  39, 39, 38, 39,  41,
38     45,  51,  57,  58, 53, 48, 47,  51,
39     55,  58,  66,  75, 81, 83, 82,  78,
40     73,  72,  74,  77, 83, 85, 83,  82,
41     89,  99,  96,  90, 94, 97, 99, 105,
42    109, 105,  95,  89, 92, 95, 94,  93,
43     92,  88,  89,  90, 93, 95, 96,  97,
44     97, 100, 104, 102, 98, 98, 99,  99,
45 };
46
47 static const uint8_t dnxhd_1238_luma_weight[] = {
48      0, 32, 32, 33, 34, 33, 33, 33,
49     33, 33, 33, 33, 33, 35, 37, 37,
50     36, 36, 35, 36, 38, 38, 36, 35,
51     36, 37, 38, 41, 42, 41, 39, 38,
52     38, 38, 39, 41, 42, 41, 39, 39,
53     40, 41, 43, 44, 44, 44, 44, 44,
54     45, 47, 47, 47, 49, 50, 51, 51,
55     51, 53, 55, 57, 58, 59, 57, 57,
56 };
57
58 static const uint8_t dnxhd_1238_chroma_weight[] = {
59      0, 32, 35, 35, 35, 34, 34, 35,
60     39, 43, 45, 45, 41, 39, 40, 41,
61     42, 44, 48, 55, 59, 63, 65, 59,
62     53, 52, 52, 55, 61, 62, 58, 58,
63     63, 66, 66, 65, 70, 74, 70, 66,
64     65, 68, 75, 77, 74, 74, 77, 76,
65     73, 73, 73, 73, 76, 80, 89, 90,
66     82, 77, 80, 86, 84, 82, 82, 82,
67 };
68
69 static const uint8_t dnxhd_1241_luma_weight[] = {
70      0, 32, 33, 34, 34, 35, 36, 37,
71     36, 37, 38, 38, 38, 39, 39, 40,
72     40, 38, 38, 39, 38, 37, 39, 41,
73     41, 42, 43, 45, 45, 46, 47, 46,
74     45, 43, 39, 37, 37, 40, 44, 45,
75     45, 46, 46, 46, 47, 47, 46, 44,
76     42, 43, 45, 47, 48, 49, 50, 49,
77     48, 46, 47, 48, 48, 49, 49, 49,
78 };
79
80 static const uint8_t dnxhd_1241_chroma_weight[] = {
81      0, 32, 36, 38, 37, 37, 40, 41,
82     40, 40, 42, 42, 41, 41, 41, 41,
83     42, 43, 44, 44, 45, 46, 46, 45,
84     44, 45, 45, 45, 45, 46, 47, 46,
85     45, 44, 42, 41, 43, 45, 45, 47,
86     48, 48, 48, 46, 47, 47, 46, 47,
87     46, 45, 45, 47, 48, 49, 50, 49,
88     48, 46, 48, 49, 48, 49, 49, 49,
89 };
90
91 static const uint8_t dnxhd_1242_luma_weight[] = {
92      0, 32, 33, 33, 34, 35, 36, 35,
93     33, 33, 35, 36, 37, 37, 38, 37,
94     37, 37, 36, 37, 37, 37, 38, 39,
95     37, 36, 37, 40, 42, 45, 46, 44,
96     41, 42, 44, 45, 47, 49, 50, 48,
97     46, 48, 49, 50, 52, 52, 50, 49,
98     47, 48, 50, 50, 51, 51, 50, 49,
99     49, 51, 52, 51, 49, 47, 47, 47,
100 };
101
102 static const uint8_t dnxhd_1242_chroma_weight[] = {
103      0, 32, 37, 42, 45, 45, 45, 44,
104     38, 37, 40, 42, 44, 49, 51, 47,
105     41, 40, 43, 44, 46, 48, 51, 54,
106     51, 47, 47, 45, 47, 50, 51, 49,
107     46, 47, 49, 47, 50, 55, 55, 51,
108     48, 49, 51, 51, 52, 52, 54, 54,
109     49, 49, 52, 53, 54, 54, 53, 53,
110     55, 59, 63, 62, 60, 60, 60, 60,
111 };
112
113 static const uint8_t dnxhd_1243_luma_weight[] = {
114      0, 32, 32, 33, 33, 35, 35, 35,
115     35, 35, 35, 35, 34, 35, 38, 40,
116     39, 37, 37, 37, 36, 35, 36, 38,
117     40, 41, 42, 44, 45, 44, 42, 41,
118     40, 38, 36, 36, 37, 38, 40, 43,
119     44, 45, 45, 45, 45, 45, 45, 41,
120     39, 41, 45, 47, 47, 48, 48, 48,
121     46, 44, 45, 47, 47, 48, 47, 47,
122 };
123
124 static const uint8_t dnxhd_1243_chroma_weight[] = {
125      0, 32, 36, 37, 36, 37, 39, 39,
126     41, 43, 43, 42, 41, 41, 41, 42,
127     43, 43, 43, 44, 44, 44, 46, 47,
128     46, 45, 45, 45, 45, 46, 44, 44,
129     45, 44, 42, 41, 43, 46, 45, 44,
130     45, 45, 45, 46, 46, 46, 45, 44,
131     45, 44, 45, 47, 47, 48, 49, 48,
132     46, 45, 46, 47, 47, 48, 47, 47,
133 };
134
135 static const uint8_t dnxhd_1251_luma_weight[] = {
136      0, 32, 32, 34, 34, 34, 34, 35,
137     35, 35, 36, 37, 36, 36, 35, 36,
138     38, 38, 38, 38, 38, 38, 38, 38,
139     38, 38, 39, 41, 44, 43, 41, 40,
140     40, 40, 40, 39, 40, 41, 40, 39,
141     40, 43, 46, 46, 44, 44, 44, 42,
142     41, 43, 46, 48, 50, 55, 58, 53,
143     48, 50, 55, 58, 61, 62, 62, 62,
144 };
145
146 static const uint8_t dnxhd_1251_chroma_weight[] = {
147      0, 32, 35, 36, 36, 35, 36, 39,
148     41, 43, 45, 44, 41, 39, 40, 42,
149     43, 43, 45, 48, 48, 48, 50, 50,
150     50, 51, 51, 51, 51, 52, 53, 54,
151     51, 49, 51, 52, 52, 56, 57, 55,
152     54, 54, 55, 56, 55, 58, 58, 58,
153     60, 61, 62, 62, 59, 57, 58, 58,
154     61, 59, 59, 59, 61, 62, 62, 62,
155 };
156
157 static const uint8_t dnxhd_1252_luma_weight[] = {
158       0,  32,  34, 35, 36, 36, 36, 37,
159      36,  37,  39, 40, 41, 40, 40, 40,
160      41,  41,  42, 41, 41, 43, 44, 44,
161      45,  46,  48, 55, 60, 57, 52, 50,
162      49,  49,  52, 52, 53, 55, 58, 62,
163      65,  73,  82, 82, 80, 78, 73, 68,
164      71,  82,  90, 90, 88, 87, 90, 95,
165     100, 107, 103, 97, 95, 93, 99, 99,
166 };
167 static const uint8_t dnxhd_1252_chroma_weight[] = {
168       0,  32,  35,  36,  37,  37,  38,  40,
169      42,  46,  49,  50,  50,  49,  49,  53,
170      56,  56,  57,  58,  60,  62,  64,  65,
171      63,  64,  64,  65,  66,  65,  67,  71,
172      72,  74,  74,  74,  74,  77,  81,  78,
173      72,  73,  82,  85,  89,  88,  84,  80,
174      90, 100,  90,  90,  88,  87,  90,  95,
175     114, 128, 125, 129, 134, 125, 116, 116,
176 };
177
178 static const uint8_t dnxhd_1237_dc_codes[12] = {
179     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
180 };
181
182 static const uint8_t dnxhd_1237_dc_bits[12] = {
183     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
184 };
185
186 static const uint16_t dnxhd_1237_ac_codes[257] = {
187         0,     1,     4,     5,    12,    26,    27,    56,
188        57,    58,    59,   120,   121,   244,   245,   246,
189       247,   248,   498,   499,   500,   501,   502,  1006,
190      1007,  1008,  1009,  1010,  1011,  2024,  2025,  2026,
191      2027,  2028,  2029,  2030,  2031,  4064,  4065,  4066,
192      4067,  4068,  4069,  4070,  4071,  4072,  4073,  8148,
193      8149,  8150,  8151,  8152,  8153,  8154,  8155,  8156,
194      8157,  8158, 16318, 16319, 16320, 16321, 16322, 16323,
195     16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
196     16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
197     32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
198     32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
199     65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
200     65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
201     65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
202     65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
203     65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
204     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
205     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
206     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
207     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
208     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
209     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
210     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
211     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
212     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
213     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
214     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
215     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
216     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
217     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
218     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
219     65535,
220 };
221
222 static const uint8_t dnxhd_1237_ac_bits[257] = {
223      2,  2,  3,  3,  4,  5,  5,  6,  6,  6,  6,  7,  7,  8,  8,  8,
224      8,  8,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
225     11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
226     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
227     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
228     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
229     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
230     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
231     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
232     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
233     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
234     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
235     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
236     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
237     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
238     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
239     16,
240 };
241
242 static const uint8_t dnxhd_1237_ac_level[257] = {
243      1,  1,  2,  0,  3,  4,  2,  5,  6,  7,  3,  8,  9, 10, 11, 12,
244      4,  5, 13, 14, 15, 16,  6, 17, 18, 19, 20, 21,  7, 22, 23, 24,
245     25, 26, 27,  8,  9, 28, 29, 30, 31, 32, 33, 34, 10, 11, 12, 35,
246     36, 37, 38, 39, 40, 41, 13, 14, 15, 16, 42, 43, 44, 45, 46, 47,
247     48, 49, 50, 51, 52, 17, 18, 19, 20, 21, 53, 54, 55, 56, 57, 58,
248     59, 60, 61, 64,  1, 22, 23, 24, 25, 26, 27, 62, 63,  2,  3,  4,
249      5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
250     21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
251     37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
252     53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
253     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
254     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
255     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
256     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
257     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
258     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
259     64,
260 };
261
262 static const uint8_t dnxhd_1237_ac_run_flag[257] = {
263     0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
264     1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
265     0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
266     0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
267     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
268     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
269     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
270     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
271     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
272     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
273     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
274     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
275     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
276     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
277     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
278     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
279     1,
280 };
281
282 static const uint8_t dnxhd_1237_ac_index_flag[257] = {
283     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
284     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
285     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
286     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
287     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
288     0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
289     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
290     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
291     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
292     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
293     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
294     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
295     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
296     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
297     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
298     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
299     1,
300 };
301
302 static const uint16_t dnxhd_1237_run_codes[62] = {
303        0,    4,   10,   11,   24,   25,   26,   54,
304       55,   56,   57,   58,  118,  119,  240,  482,
305      483,  484,  485,  486,  487,  488,  489,  490,
306      491,  492,  493,  494,  990,  991,  992,  993,
307      994,  995,  996,  997,  998,  999, 1000, 1001,
308     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
309     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
310     1018, 1019, 1020, 1021, 1022, 1023,
311 };
312
313 static const uint8_t dnxhd_1237_run_bits[62] = {
314      1,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  6,  7,  7,  8,  9,
315      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10,
316     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
317     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
318 };
319
320 static const uint8_t dnxhd_1237_run[62] = {
321      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
322     17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
323     26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
324     42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
325 };
326
327 static const uint8_t dnxhd_1238_dc_codes[12] = {
328     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
329 };
330
331 static const uint8_t dnxhd_1238_dc_bits[12] = {
332     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
333 };
334
335 static const uint16_t dnxhd_1238_ac_codes[257] = {
336         0,     1,     4,    10,    11,    24,    25,    26,
337        54,    55,    56,    57,   116,   117,   118,   119,
338       240,   241,   242,   243,   244,   245,   492,   493,
339       494,   495,   496,   497,   498,   499,  1000,  1001,
340      1002,  1003,  1004,  1005,  1006,  1007,  1008,  2018,
341      2019,  2020,  2021,  2022,  2023,  2024,  2025,  2026,
342      2027,  4056,  4057,  4058,  4059,  4060,  4061,  4062,
343      4063,  4064,  4065,  4066,  4067,  4068,  4069,  8140,
344      8141,  8142,  8143,  8144,  8145,  8146,  8147,  8148,
345      8149,  8150,  8151,  8152,  8153,  8154,  8155,  8156,
346     16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
347     16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
348     16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
349     16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
350     32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
351     32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
352     32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
353     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
354     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
355     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
356     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
357     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
358     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
359     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
360     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
361     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
362     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
363     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
364     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
365     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
366     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
367     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
368     65535,
369 };
370
371 static const uint8_t dnxhd_1238_ac_bits[257] = {
372      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
373      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10,
374     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
375     11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
376     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
377     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
378     14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
379     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
380     15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
381     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
382     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
383     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
384     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
385     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
386     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
387     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
388     16,
389 };
390
391 static const uint8_t dnxhd_1238_ac_level[257] = {
392      1,  1,  2,  3,  0,  4,  5,  2,  6,  7,  8,  3,  9, 10, 11,  4,
393     12, 13, 14, 15, 16,  5, 17, 18, 19, 20, 21, 22,  6,  7, 23, 24,
394     25, 26, 27, 28, 29,  8,  9, 30, 31, 32, 33, 34, 35, 36, 37, 10,
395     11, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 12, 13, 14, 49,
396     50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 15, 16, 17, 18,
397     62, 63, 64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13,
398     14, 15, 16, 19, 20, 21, 22, 23, 24, 17, 18, 19, 20, 21, 22, 23,
399     24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 25,
400     26, 27, 28, 29, 30, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49,
401     50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 31,
402     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
403     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
404     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
405     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
406     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
407     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
408     64,
409 }; /* 0 is EOB */
410
411 static const uint8_t dnxhd_1238_ac_run_flag[257] = {
412     0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
413     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
414     0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
415     1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
416     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
417     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
418     0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
419     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
420     1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
421     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
422     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
423     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
424     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
425     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
426     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
427     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
428     1,
429 };
430
431 static const uint8_t dnxhd_1238_ac_index_flag[257] = {
432     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
433     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
434     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
438     1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
439     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
440     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
441     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
442     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
443     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
444     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
445     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
446     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
447     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
448     1,
449 };
450
451 static const uint16_t dnxhd_1238_run_codes[62] = {
452        0,    4,   10,   11,   24,   25,   26,   27,
453       56,   57,   58,   59,  120,  242,  486,  487,
454      488,  489,  980,  981,  982,  983,  984,  985,
455      986,  987,  988,  989,  990,  991,  992,  993,
456      994,  995,  996,  997,  998,  999, 1000, 1001,
457     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
458     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
459     1018, 1019, 1020, 1021, 1022, 1023,
460 };
461
462 static const uint8_t dnxhd_1238_run_bits[62] = {
463      1,  3,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  8,  9,  9,
464      9,  9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
465     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
466     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
467 };
468
469 static const uint8_t dnxhd_1238_run[62] = {
470      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
471     20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
472     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
473     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
474 };
475
476 static const uint8_t dnxhd_1241_dc_codes[14] = {
477     10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
478 };
479
480 static const uint8_t dnxhd_1241_dc_bits[14] = {
481     4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
482 };
483
484 static const uint16_t dnxhd_1241_ac_codes[257] = {
485         0,     1,     4,    10,    11,    24,    25,    26,
486        54,    55,    56,    57,   116,   117,   118,   119,
487       240,   241,   242,   243,   244,   245,   492,   493,
488       494,   495,   496,   497,   498,   998,   999,  1000,
489      1001,  1002,  1003,  1004,  1005,  1006,  1007,  2016,
490      2017,  2018,  2019,  2020,  2021,  2022,  2023,  2024,
491      2025,  2026,  4054,  4055,  4056,  4057,  4058,  4059,
492      4060,  4061,  4062,  4063,  4064,  4065,  4066,  4067,
493      4068,  4069,  8140,  8141,  8142,  8143,  8144,  8145,
494      8146,  8147,  8148,  8149,  8150,  8151,  8152,  8153,
495      8154,  8155,  8156,  8157, 16316, 16317, 16318, 16319,
496     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
497     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
498     16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
499     32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
500     32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
501     32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
502     32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
503     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
504     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
505     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
506     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
507     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
508     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
509     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
510     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
511     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
512     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
513     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
514     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
515     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
516     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
517     65535,
518 };
519
520 static const uint8_t dnxhd_1241_ac_bits[257] = {
521      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
522      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10,
523     10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
524     11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
525     12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
526     13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
527     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
528     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
529     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
530     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
531     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
532     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
533     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
534     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
535     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
536     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
537     16,
538 };
539
540 static const uint8_t dnxhd_1241_ac_level[257] = {
541      1,  1,  2,  3,  0,  4,  5,  2,  6,  7,  8,  3,  9, 10, 11,  4,
542     12, 13, 14, 15, 16,  5, 17, 18, 19, 20, 21,  6,  7, 22, 23, 24,
543     25, 26, 27, 28, 29,  8,  9, 30, 31, 32, 33, 34, 35, 36, 37, 38,
544     10, 11, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 12, 13,
545     14, 15, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,  1,
546     16, 17, 18, 19, 64,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12,
547     13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 18, 19, 20, 21, 22, 23,
548     24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
549     40, 41, 42, 25, 26, 27, 28, 29, 30, 31, 32, 43, 44, 45, 46, 47,
550     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
551     64, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
552     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
553     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
554     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
555     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
556     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
557     64,
558 };
559
560 static const uint8_t dnxhd_1241_ac_run_flag[257] = {
561     0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
562     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
563     0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
564     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
565     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
566     1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
567     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
568     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
569     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
570     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
572     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
573     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
574     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
575     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
576     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
577     1,
578 };
579
580 static const uint8_t dnxhd_1241_ac_index_flag[257] = {
581     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
582     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
583     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
584     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
585     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
586     0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
587     1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
588     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
589     1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
590     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
591     1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
592     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
593     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
594     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
595     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
596     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
597     1,
598 };
599
600 static const uint8_t dnxhd_1241_run[62] = {
601      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
602     18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
603     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
604     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
605 };
606
607 static const uint8_t dnxhd_1251_dc_codes[12] = {
608     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
609 };
610
611 static const uint8_t dnxhd_1251_dc_bits[12] = {
612     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
613 };
614
615 static const uint16_t dnxhd_1251_ac_codes[257] = {
616         0,     1,     4,    10,    11,    24,    25,    26,
617        54,    55,    56,    57,   116,   117,   118,   119,
618       240,   241,   242,   243,   244,   245,   492,   493,
619       494,   495,   496,   497,   996,   997,   998,   999,
620      1000,  1001,  1002,  1003,  1004,  1005,  2012,  2013,
621      2014,  2015,  2016,  2017,  2018,  2019,  2020,  2021,
622      2022,  2023,  2024,  2025,  4052,  4053,  4054,  4055,
623      4056,  4057,  4058,  4059,  4060,  4061,  4062,  4063,
624      4064,  4065,  4066,  8134,  8135,  8136,  8137,  8138,
625      8139,  8140,  8141,  8142,  8143,  8144,  8145,  8146,
626      8147,  8148,  8149,  8150,  8151,  8152,  8153,  8154,
627      8155,  8156, 16314, 16315, 16316, 16317, 16318, 16319,
628     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
629     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
630     16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
631     32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
632     32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
633     32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
634     32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
635     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
636     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
637     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
638     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
639     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
640     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
641     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
642     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
643     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
644     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
645     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
646     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
647     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
648     65535,
649 };
650
651 static const uint8_t dnxhd_1251_ac_bits[257] = {
652      2,  2,  3,  4,  4,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
653      8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10,
654     10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
655     11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
656     12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
657     13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
658     14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
659     14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
660     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
661     15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
662     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
663     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
664     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
665     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
666     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
667     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
668     16,
669 };
670
671 static const uint8_t dnxhd_1251_ac_level[257] = {
672      1,  1,  2,  3,  0,  4,  5,  2,  6,  7,  8,  3,  9, 10, 11,  4,
673     12, 13, 14, 15, 16,  5, 17, 18, 19, 20, 21,  6, 22, 23, 24, 25,
674     26, 27, 28, 29,  7,  8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
675     40,  9, 10, 11, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
676     12, 13, 14, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,  1,
677      2,  3,  4,  5,  6,  7,  8, 15, 16, 17,  9, 10, 11, 12, 13, 14,
678     15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 18,
679     19, 20, 21, 22, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
680     42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
681     58, 23, 24, 25, 26, 27, 28, 59, 60, 61, 62, 63, 64, 29, 30, 31,
682     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
683     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
684     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
685     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
686     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
687     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
688     64,
689 };
690
691 static const uint8_t dnxhd_1251_ac_run_flag[257] = {
692     0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
693     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
694     0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
695     0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
696     1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
697     0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
698     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
699     1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
700     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
701     0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
702     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
703     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
704     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
705     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
706     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
707     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
708     1,
709 };
710
711 static const uint8_t dnxhd_1251_ac_index_flag[257] = {
712     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
713     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
714     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
715     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
716     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
717     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
718     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
719     0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
720     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
721     1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
722     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
723     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
724     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
725     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
726     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
727     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
728     1,
729 };
730
731 static const uint16_t dnxhd_1251_run_codes[62] = {
732        0,    4,    5,   12,   26,   27,   28,   58,
733      118,  119,  120,  242,  486,  487,  976,  977,
734      978,  979,  980,  981,  982,  983,  984,  985,
735      986,  987,  988,  989,  990,  991,  992,  993,
736      994,  995,  996,  997,  998,  999, 1000, 1001,
737     1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
738     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
739     1018, 1019, 1020, 1021, 1022, 1023,
740 };
741
742 static const uint8_t dnxhd_1251_run_bits[62] = {
743      1,  3,  3,  4,  5,  5,  5,  6,  7,  7,  7,  8,  9,  9, 10, 10,
744     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
745     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
746     10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
747 };
748
749 static const uint8_t dnxhd_1251_run[62] = {
750      1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
751     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
752     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
753     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
754 };
755
756 static const uint8_t dnxhd_1252_dc_codes[12] = {
757     0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
758 };
759
760 static const uint8_t dnxhd_1252_dc_bits[12] = {
761     3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
762 };
763
764 static const uint16_t dnxhd_1252_ac_codes[257] = {
765         0,     1,     4,    10,    11,    12,    26,    27,
766        56,    57,    58,   118,   119,   120,   242,   243,
767       244,   245,   246,   247,   496,   497,   498,   499,
768       500,  1002,  1003,  1004,  1005,  1006,  1007,  1008,
769      1009,  2020,  2021,  2022,  2023,  2024,  2025,  2026,
770      2027,  2028,  2029,  4060,  4061,  4062,  4063,  4064,
771      4065,  4066,  4067,  4068,  4069,  4070,  4071,  8144,
772      8145,  8146,  8147,  8148,  8149,  8150,  8151,  8152,
773      8153,  8154,  8155,  8156,  8157,  8158, 16318, 16319,
774     16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
775     16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
776     32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
777     32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
778     32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
779     65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
780     65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
781     65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
782     65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
783     65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
784     65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
785     65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
786     65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
787     65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
788     65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
789     65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
790     65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
791     65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
792     65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
793     65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
794     65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
795     65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
796     65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
797     65535,
798 };
799
800 static const uint8_t dnxhd_1252_ac_bits[257] = {
801      2,  2,  3,  4,  4,  4,  5,  5,  6,  6,  6,  7,  7,  7,  8,  8,
802      8,  8,  8,  8,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 10,
803     10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
804     12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
805     13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
806     14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
807     15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 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,
810     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
811     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
812     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
813     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
814     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
815     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
816     16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
817     16,
818 };
819
820 static const uint8_t dnxhd_1252_ac_level[257] = {
821      1,  1,  2,  3,  2,  0,  4,  5,  6,  7,  3,  8,  9, 10, 11, 12,
822     13, 14,  4,  5, 15, 16, 17, 18,  6, 19, 20, 21, 22, 23, 24,  7,
823      8, 25, 26, 27, 28, 29, 30, 31, 32,  9, 10, 33, 34, 35, 36, 37,
824     38, 39, 40, 41, 11, 12, 13, 42, 43, 44, 45, 46, 47, 48, 49, 50,
825     51, 52, 53, 14, 15, 16, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
826     64,  1,  2,  3, 17, 18, 19, 20,  4,  5,  6,  7,  8,  9, 10, 11,
827     12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 22,
828     23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
829     39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
830     55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 26, 27, 28, 29, 30, 31,
831     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
832     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
833     64,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
834     16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
835     32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
836     48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
837     64,
838 };
839
840 static const uint8_t dnxhd_1252_ac_run_flag[257] = {
841     0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
842     0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,
843     1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
844     0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
845     0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
846     0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
847     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
848     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
849     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
850     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
851     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
852     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
853     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
854     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
855     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
856     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
857     1,
858 };
859
860 static const uint8_t dnxhd_1252_ac_index_flag[257] = {
861     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
862     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
863     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
864     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
865     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
866     0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
867     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1,
868     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
869     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
870     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
871     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
872     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
873     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
874     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
875     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
876     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
877     1,
878 };
879
880 const CIDEntry ff_dnxhd_cid_table[] = {
881     { 1237, 1920, 1080, 0, 606208, 606208, 4, 8,
882       dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
883       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
884       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
885       dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
886       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
887       { 115, 120, 145, 240, 290 } },
888     { 1238, 1920, 1080, 0, 917504, 917504, 4, 8,
889       dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
890       dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
891       dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
892       dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
893       dnxhd_1238_run_codes, dnxhd_1238_run_bits, dnxhd_1238_run,
894       { 175, 185, 220, 365, 440 } },
895     { 1241, 1920, 1080, 1, 917504, 458752, 6, 10,
896       dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
897       dnxhd_1241_dc_codes, dnxhd_1241_dc_bits,
898       dnxhd_1241_ac_codes, dnxhd_1241_ac_bits, dnxhd_1241_ac_level,
899       dnxhd_1241_ac_run_flag, dnxhd_1241_ac_index_flag,
900       dnxhd_1238_run_codes, dnxhd_1238_run_bits, dnxhd_1241_run,
901       { 185, 220 } },
902     { 1242, 1920, 1080, 1, 606208, 303104, 4, 8,
903       dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
904       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
905       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
906       dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
907       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
908       { 120, 145 } },
909     { 1243, 1920, 1080, 1, 917504, 458752, 4, 8,
910       dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
911       dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
912       dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
913       dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
914       dnxhd_1238_run_codes, dnxhd_1238_run_bits, dnxhd_1238_run,
915       { 185, 220 } },
916     { 1251, 1280,  720, 0, 458752, 458752, 4, 8,
917       dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
918       dnxhd_1251_dc_codes, dnxhd_1251_dc_bits,
919       dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
920       dnxhd_1251_ac_run_flag, dnxhd_1251_ac_index_flag,
921       dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
922       { 90, 110, 175, 220 } },
923     { 1252, 1280,  720, 0, 303104, 303104, 4, 8,
924       dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
925       dnxhd_1252_dc_codes, dnxhd_1252_dc_bits,
926       dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
927       dnxhd_1252_ac_run_flag, dnxhd_1252_ac_index_flag,
928       dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
929       { 60, 75, 115, 145 } },
930     { 1253, 1920, 1080, 0, 188416, 188416, 4, 8,
931       dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
932       dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
933       dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
934       dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
935       dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
936       { 36, 45, 75, 90 } },
937 };
938
939 int ff_dnxhd_get_cid_table(int cid)
940 {
941     int i;
942     for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
943         if (ff_dnxhd_cid_table[i].cid == cid)
944             return i;
945     return -1;
946 }
947
948 int ff_dnxhd_find_cid(AVCodecContext *avctx)
949 {
950     int i, j;
951     int mbs = avctx->bit_rate/1000000;
952     if (!mbs)
953         return 0;
954     for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
955         const CIDEntry *cid = &ff_dnxhd_cid_table[i];
956         if (cid->width == avctx->width && cid->height == avctx->height &&
957             cid->interlaced == !!(avctx->flags & CODEC_FLAG_INTERLACED_DCT) &&
958             cid->bit_depth == 8) { // until 10 bit is supported
959             for (j = 0; j < sizeof(cid->bit_rates); j++) {
960                 if (cid->bit_rates[j] == mbs)
961                     return cid->cid;
962             }
963         }
964     }
965     return 0;
966 }