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