00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "avcodec.h"
00023 #include "dnxhddata.h"
00024
00025 static const uint8_t dnxhd_1235_luma_weight[] = {
00026 0, 32, 32, 32, 33, 35, 38, 39,
00027 32, 33, 32, 33, 36, 36, 39, 42,
00028 32, 32, 33, 36, 35, 37, 41, 43,
00029 31, 33, 34, 36, 36, 40, 42, 48,
00030 32, 34, 36, 37, 39, 42, 46, 51,
00031 36, 37, 37, 39, 41, 46, 51, 55,
00032 37, 39, 41, 41, 47, 50, 55, 56,
00033 41, 42, 41, 44, 50, 53, 60, 60
00034 };
00035
00036 static const uint8_t dnxhd_1235_chroma_weight[] = {
00037 0, 32, 33, 34, 39, 41, 54, 59,
00038 33, 34, 35, 38, 43, 49, 58, 84,
00039 34, 37, 39, 44, 46, 55, 74, 87,
00040 40, 42, 47, 48, 58, 70, 87, 86,
00041 43, 50, 56, 63, 72, 94, 91, 82,
00042 55, 63, 65, 75, 93, 89, 85, 73,
00043 61, 67, 82, 81, 83, 90, 79, 73,
00044 74, 84, 75, 78, 90, 85, 73, 73
00045 };
00046
00047 static const uint8_t dnxhd_1237_luma_weight[] = {
00048 0, 32, 33, 34, 34, 36, 37, 36,
00049 36, 37, 38, 38, 38, 39, 41, 44,
00050 43, 41, 40, 41, 46, 49, 47, 46,
00051 47, 49, 51, 54, 60, 62, 59, 55,
00052 54, 56, 58, 61, 65, 66, 64, 63,
00053 66, 73, 78, 79, 80, 79, 78, 78,
00054 82, 87, 89, 90, 93, 95, 96, 97,
00055 97, 100, 104, 102, 98, 98, 99, 99,
00056 };
00057
00058 static const uint8_t dnxhd_1237_chroma_weight[] = {
00059 0, 32, 36, 39, 39, 38, 39, 41,
00060 45, 51, 57, 58, 53, 48, 47, 51,
00061 55, 58, 66, 75, 81, 83, 82, 78,
00062 73, 72, 74, 77, 83, 85, 83, 82,
00063 89, 99, 96, 90, 94, 97, 99, 105,
00064 109, 105, 95, 89, 92, 95, 94, 93,
00065 92, 88, 89, 90, 93, 95, 96, 97,
00066 97, 100, 104, 102, 98, 98, 99, 99,
00067 };
00068
00069 static const uint8_t dnxhd_1238_luma_weight[] = {
00070 0, 32, 32, 33, 34, 33, 33, 33,
00071 33, 33, 33, 33, 33, 35, 37, 37,
00072 36, 36, 35, 36, 38, 38, 36, 35,
00073 36, 37, 38, 41, 42, 41, 39, 38,
00074 38, 38, 39, 41, 42, 41, 39, 39,
00075 40, 41, 43, 44, 44, 44, 44, 44,
00076 45, 47, 47, 47, 49, 50, 51, 51,
00077 51, 53, 55, 57, 58, 59, 57, 57,
00078 };
00079
00080 static const uint8_t dnxhd_1238_chroma_weight[] = {
00081 0, 32, 35, 35, 35, 34, 34, 35,
00082 39, 43, 45, 45, 41, 39, 40, 41,
00083 42, 44, 48, 55, 59, 63, 65, 59,
00084 53, 52, 52, 55, 61, 62, 58, 58,
00085 63, 66, 66, 65, 70, 74, 70, 66,
00086 65, 68, 75, 77, 74, 74, 77, 76,
00087 73, 73, 73, 73, 76, 80, 89, 90,
00088 82, 77, 80, 86, 84, 82, 82, 82,
00089 };
00090
00091 static const uint8_t dnxhd_1241_luma_weight[] = {
00092 0, 32, 33, 34, 34, 35, 36, 37,
00093 36, 37, 38, 38, 38, 39, 39, 40,
00094 40, 38, 38, 39, 38, 37, 39, 41,
00095 41, 42, 43, 45, 45, 46, 47, 46,
00096 45, 43, 39, 37, 37, 40, 44, 45,
00097 45, 46, 46, 46, 47, 47, 46, 44,
00098 42, 43, 45, 47, 48, 49, 50, 49,
00099 48, 46, 47, 48, 48, 49, 49, 49,
00100 };
00101
00102 static const uint8_t dnxhd_1241_chroma_weight[] = {
00103 0, 32, 36, 38, 37, 37, 40, 41,
00104 40, 40, 42, 42, 41, 41, 41, 41,
00105 42, 43, 44, 44, 45, 46, 46, 45,
00106 44, 45, 45, 45, 45, 46, 47, 46,
00107 45, 44, 42, 41, 43, 45, 45, 47,
00108 48, 48, 48, 46, 47, 47, 46, 47,
00109 46, 45, 45, 47, 48, 49, 50, 49,
00110 48, 46, 48, 49, 48, 49, 49, 49,
00111 };
00112
00113 static const uint8_t dnxhd_1242_luma_weight[] = {
00114 0, 32, 33, 33, 34, 35, 36, 35,
00115 33, 33, 35, 36, 37, 37, 38, 37,
00116 37, 37, 36, 37, 37, 37, 38, 39,
00117 37, 36, 37, 40, 42, 45, 46, 44,
00118 41, 42, 44, 45, 47, 49, 50, 48,
00119 46, 48, 49, 50, 52, 52, 50, 49,
00120 47, 48, 50, 50, 51, 51, 50, 49,
00121 49, 51, 52, 51, 49, 47, 47, 47,
00122 };
00123
00124 static const uint8_t dnxhd_1242_chroma_weight[] = {
00125 0, 32, 37, 42, 45, 45, 45, 44,
00126 38, 37, 40, 42, 44, 49, 51, 47,
00127 41, 40, 43, 44, 46, 48, 51, 54,
00128 51, 47, 47, 45, 47, 50, 51, 49,
00129 46, 47, 49, 47, 50, 55, 55, 51,
00130 48, 49, 51, 51, 52, 52, 54, 54,
00131 49, 49, 52, 53, 54, 54, 53, 53,
00132 55, 59, 63, 62, 60, 60, 60, 60,
00133 };
00134
00135 static const uint8_t dnxhd_1243_luma_weight[] = {
00136 0, 32, 32, 33, 33, 35, 35, 35,
00137 35, 35, 35, 35, 34, 35, 38, 40,
00138 39, 37, 37, 37, 36, 35, 36, 38,
00139 40, 41, 42, 44, 45, 44, 42, 41,
00140 40, 38, 36, 36, 37, 38, 40, 43,
00141 44, 45, 45, 45, 45, 45, 45, 41,
00142 39, 41, 45, 47, 47, 48, 48, 48,
00143 46, 44, 45, 47, 47, 48, 47, 47,
00144 };
00145
00146 static const uint8_t dnxhd_1243_chroma_weight[] = {
00147 0, 32, 36, 37, 36, 37, 39, 39,
00148 41, 43, 43, 42, 41, 41, 41, 42,
00149 43, 43, 43, 44, 44, 44, 46, 47,
00150 46, 45, 45, 45, 45, 46, 44, 44,
00151 45, 44, 42, 41, 43, 46, 45, 44,
00152 45, 45, 45, 46, 46, 46, 45, 44,
00153 45, 44, 45, 47, 47, 48, 49, 48,
00154 46, 45, 46, 47, 47, 48, 47, 47,
00155 };
00156
00157 static const uint8_t dnxhd_1250_luma_weight[] = {
00158 0, 32, 35, 35, 36, 36, 41, 43,
00159 32, 34, 35, 36, 37, 39, 43, 47,
00160 33, 34, 36, 38, 38, 42, 42, 50,
00161 34, 36, 38, 38, 41, 40, 47, 54,
00162 35, 38, 39, 40, 39, 45, 49, 58,
00163 38, 39, 40, 39, 46, 47, 54, 60,
00164 38, 39, 41, 46, 46, 48, 57, 62,
00165 40, 41, 44, 45, 49, 54, 63, 63
00166 };
00167
00168 static const uint8_t dnxhd_1250_chroma_weight[] = {
00169 0, 32, 35, 36, 40, 42, 51, 51,
00170 35, 36, 39, 39, 43, 51, 52, 55,
00171 36, 41, 41, 43, 51, 53, 54, 56,
00172 43, 44, 45, 50, 54, 54, 55, 57,
00173 45, 48, 50, 51, 55, 58, 59, 58,
00174 49, 52, 49, 57, 58, 62, 58, 60,
00175 51, 51, 56, 58, 62, 61, 59, 62,
00176 52, 52, 60, 61, 59, 59, 63, 63
00177 };
00178
00179 static const uint8_t dnxhd_1251_luma_weight[] = {
00180 0, 32, 32, 34, 34, 34, 34, 35,
00181 35, 35, 36, 37, 36, 36, 35, 36,
00182 38, 38, 38, 38, 38, 38, 38, 38,
00183 38, 38, 39, 41, 44, 43, 41, 40,
00184 40, 40, 40, 39, 40, 41, 40, 39,
00185 40, 43, 46, 46, 44, 44, 44, 42,
00186 41, 43, 46, 48, 50, 55, 58, 53,
00187 48, 50, 55, 58, 61, 62, 62, 62,
00188 };
00189
00190 static const uint8_t dnxhd_1251_chroma_weight[] = {
00191 0, 32, 35, 36, 36, 35, 36, 39,
00192 41, 43, 45, 44, 41, 39, 40, 42,
00193 43, 43, 45, 48, 48, 48, 50, 50,
00194 50, 51, 51, 51, 51, 52, 53, 54,
00195 51, 49, 51, 52, 52, 56, 57, 55,
00196 54, 54, 55, 56, 55, 58, 58, 58,
00197 60, 61, 62, 62, 59, 57, 58, 58,
00198 61, 59, 59, 59, 61, 62, 62, 62,
00199 };
00200
00201 static const uint8_t dnxhd_1252_luma_weight[] = {
00202 0, 32, 34, 35, 36, 36, 36, 37,
00203 36, 37, 39, 40, 41, 40, 40, 40,
00204 41, 41, 42, 41, 41, 43, 44, 44,
00205 45, 46, 48, 55, 60, 57, 52, 50,
00206 49, 49, 52, 52, 53, 55, 58, 62,
00207 65, 73, 82, 82, 80, 78, 73, 68,
00208 71, 82, 90, 90, 88, 87, 90, 95,
00209 100, 107, 103, 97, 95, 93, 99, 99,
00210 };
00211 static const uint8_t dnxhd_1252_chroma_weight[] = {
00212 0, 32, 35, 36, 37, 37, 38, 40,
00213 42, 46, 49, 50, 50, 49, 49, 53,
00214 56, 56, 57, 58, 60, 62, 64, 65,
00215 63, 64, 64, 65, 66, 65, 67, 71,
00216 72, 74, 74, 74, 74, 77, 81, 78,
00217 72, 73, 82, 85, 89, 88, 84, 80,
00218 90, 100, 90, 90, 88, 87, 90, 95,
00219 114, 128, 125, 129, 134, 125, 116, 116,
00220 };
00221
00222 static const uint8_t dnxhd_1237_dc_codes[12] = {
00223 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
00224 };
00225
00226 static const uint8_t dnxhd_1237_dc_bits[12] = {
00227 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
00228 };
00229
00230 static const uint16_t dnxhd_1237_ac_codes[257] = {
00231 0, 1, 4, 5, 12, 26, 27, 56,
00232 57, 58, 59, 120, 121, 244, 245, 246,
00233 247, 248, 498, 499, 500, 501, 502, 1006,
00234 1007, 1008, 1009, 1010, 1011, 2024, 2025, 2026,
00235 2027, 2028, 2029, 2030, 2031, 4064, 4065, 4066,
00236 4067, 4068, 4069, 4070, 4071, 4072, 4073, 8148,
00237 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
00238 8157, 8158, 16318, 16319, 16320, 16321, 16322, 16323,
00239 16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331,
00240 16332, 16333, 32668, 32669, 32670, 32671, 32672, 32673,
00241 32674, 32675, 32676, 32677, 32678, 32679, 32680, 32681,
00242 32682, 32683, 32684, 65370, 65371, 65372, 65373, 65374,
00243 65375, 65376, 65377, 65378, 65379, 65380, 65381, 65382,
00244 65383, 65384, 65385, 65386, 65387, 65388, 65389, 65390,
00245 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
00246 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
00247 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
00248 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
00249 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
00250 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00251 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00252 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00253 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00254 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00255 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00256 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00257 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00258 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00259 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00260 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00261 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00262 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00263 65535,
00264 };
00265
00266 static const uint8_t dnxhd_1237_ac_bits[257] = {
00267 2, 2, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8,
00268 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
00269 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
00270 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
00271 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
00272 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
00273 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00274 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00275 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00276 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00277 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00278 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00279 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00280 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00281 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00282 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00283 16,
00284 };
00285
00286 static const uint8_t dnxhd_1237_ac_level[257] = {
00287 1, 1, 2, 0, 3, 4, 2, 5, 6, 7, 3, 8, 9, 10, 11, 12,
00288 4, 5, 13, 14, 15, 16, 6, 17, 18, 19, 20, 21, 7, 22, 23, 24,
00289 25, 26, 27, 8, 9, 28, 29, 30, 31, 32, 33, 34, 10, 11, 12, 35,
00290 36, 37, 38, 39, 40, 41, 13, 14, 15, 16, 42, 43, 44, 45, 46, 47,
00291 48, 49, 50, 51, 52, 17, 18, 19, 20, 21, 53, 54, 55, 56, 57, 58,
00292 59, 60, 61, 64, 1, 22, 23, 24, 25, 26, 27, 62, 63, 2, 3, 4,
00293 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
00294 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
00295 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
00296 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
00297 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00298 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00299 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
00300 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00301 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00302 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00303 64,
00304 };
00305
00306 static const uint8_t dnxhd_1237_ac_run_flag[257] = {
00307 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
00308 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
00309 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
00310 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
00311 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
00312 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
00313 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
00317 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00318 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00319 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00320 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00321 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00322 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00323 1,
00324 };
00325
00326 static const uint8_t dnxhd_1237_ac_index_flag[257] = {
00327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00329 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00332 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
00333 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00334 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00335 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00336 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
00337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00339 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00340 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00341 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00342 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00343 1,
00344 };
00345
00346 static const uint16_t dnxhd_1237_run_codes[62] = {
00347 0, 4, 10, 11, 24, 25, 26, 54,
00348 55, 56, 57, 58, 118, 119, 240, 482,
00349 483, 484, 485, 486, 487, 488, 489, 490,
00350 491, 492, 493, 494, 990, 991, 992, 993,
00351 994, 995, 996, 997, 998, 999, 1000, 1001,
00352 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
00353 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
00354 1018, 1019, 1020, 1021, 1022, 1023,
00355 };
00356
00357 static const uint8_t dnxhd_1237_run_bits[62] = {
00358 1, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9,
00359 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
00360 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00361 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00362 };
00363
00364 static const uint8_t dnxhd_1237_run[62] = {
00365 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
00366 17, 18, 19, 20, 21, 53, 57, 58, 59, 60, 61, 62, 22, 23, 24, 25,
00367 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
00368 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56,
00369 };
00370
00371 static const uint8_t dnxhd_1238_dc_codes[12] = {
00372 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
00373 };
00374
00375 static const uint8_t dnxhd_1238_dc_bits[12] = {
00376 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
00377 };
00378
00379 static const uint16_t dnxhd_1238_ac_codes[257] = {
00380 0, 1, 4, 10, 11, 24, 25, 26,
00381 54, 55, 56, 57, 116, 117, 118, 119,
00382 240, 241, 242, 243, 244, 245, 492, 493,
00383 494, 495, 496, 497, 498, 499, 1000, 1001,
00384 1002, 1003, 1004, 1005, 1006, 1007, 1008, 2018,
00385 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
00386 2027, 4056, 4057, 4058, 4059, 4060, 4061, 4062,
00387 4063, 4064, 4065, 4066, 4067, 4068, 4069, 8140,
00388 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148,
00389 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156,
00390 16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
00391 16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329,
00392 16330, 16331, 16332, 16333, 16334, 16335, 16336, 16337,
00393 16338, 32678, 32679, 32680, 32681, 32682, 32683, 32684,
00394 32685, 32686, 32687, 32688, 32689, 32690, 32691, 32692,
00395 32693, 32694, 32695, 32696, 32697, 32698, 32699, 32700,
00396 32701, 32702, 32703, 32704, 32705, 65412, 65413, 65414,
00397 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
00398 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
00399 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00400 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00401 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00402 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00403 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00404 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00405 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00406 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00407 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00408 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00409 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00410 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00411 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00412 65535,
00413 };
00414
00415 static const uint8_t dnxhd_1238_ac_bits[257] = {
00416 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
00417 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,
00418 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
00419 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
00420 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
00421 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00422 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15,
00423 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00424 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00425 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00426 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00427 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00428 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00429 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00430 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00431 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00432 16,
00433 };
00434
00435 static const uint8_t dnxhd_1238_ac_level[257] = {
00436 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
00437 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 22, 6, 7, 23, 24,
00438 25, 26, 27, 28, 29, 8, 9, 30, 31, 32, 33, 34, 35, 36, 37, 10,
00439 11, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 12, 13, 14, 49,
00440 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 15, 16, 17, 18,
00441 62, 63, 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
00442 14, 15, 16, 19, 20, 21, 22, 23, 24, 17, 18, 19, 20, 21, 22, 23,
00443 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 25,
00444 26, 27, 28, 29, 30, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49,
00445 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 31,
00446 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00447 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00448 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
00449 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00450 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00451 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00452 64,
00453 };
00454
00455 static const uint8_t dnxhd_1238_ac_run_flag[257] = {
00456 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
00457 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
00458 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00459 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
00460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
00461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00462 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
00463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00464 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00466 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00467 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00468 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00469 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00470 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00471 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00472 1,
00473 };
00474
00475 static const uint8_t dnxhd_1238_ac_index_flag[257] = {
00476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00478 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00481 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00482 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
00483 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
00484 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00485 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
00486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00487 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00488 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00489 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00490 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00491 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00492 1,
00493 };
00494
00495 static const uint16_t dnxhd_1235_1238_1241_run_codes[62] = {
00496 0, 4, 10, 11, 24, 25, 26, 27,
00497 56, 57, 58, 59, 120, 242, 486, 487,
00498 488, 489, 980, 981, 982, 983, 984, 985,
00499 986, 987, 988, 989, 990, 991, 992, 993,
00500 994, 995, 996, 997, 998, 999, 1000, 1001,
00501 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
00502 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
00503 1018, 1019, 1020, 1021, 1022, 1023,
00504 };
00505
00506 static const uint8_t dnxhd_1235_1238_1241_run_bits[62] = {
00507 1, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 8, 9, 9,
00508 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00509 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00510 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00511 };
00512
00513 static const uint8_t dnxhd_1238_run[62] = {
00514 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
00515 20, 21, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
00516 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
00517 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
00518 };
00519
00520 static const uint8_t dnxhd_1235_1241_dc_codes[14] = {
00521 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127,
00522 };
00523
00524 static const uint8_t dnxhd_1235_1241_dc_bits[14] = {
00525 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7,
00526 };
00527
00528 static const uint16_t dnxhd_1235_1241_ac_codes[257] = {
00529 0, 1, 4, 10, 11, 24, 25, 26,
00530 54, 55, 56, 57, 116, 117, 118, 119,
00531 240, 241, 242, 243, 244, 245, 492, 493,
00532 494, 495, 496, 497, 498, 998, 999, 1000,
00533 1001, 1002, 1003, 1004, 1005, 1006, 1007, 2016,
00534 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
00535 2025, 2026, 4054, 4055, 4056, 4057, 4058, 4059,
00536 4060, 4061, 4062, 4063, 4064, 4065, 4066, 4067,
00537 4068, 4069, 8140, 8141, 8142, 8143, 8144, 8145,
00538 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153,
00539 8154, 8155, 8156, 8157, 16316, 16317, 16318, 16319,
00540 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
00541 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
00542 16336, 16337, 32676, 32677, 32678, 32679, 32680, 32681,
00543 32682, 32683, 32684, 32685, 32686, 32687, 32688, 32689,
00544 32690, 32691, 32692, 32693, 32694, 32695, 32696, 32697,
00545 32698, 32699, 32700, 32701, 32702, 32703, 32704, 32705,
00546 32706, 32707, 32708, 65418, 65419, 65420, 65421, 65422,
00547 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
00548 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00549 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00550 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00551 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00552 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00553 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00554 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00555 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00556 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00557 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00558 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00559 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00560 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00561 65535,
00562 };
00563
00564 static const uint8_t dnxhd_1235_1241_ac_bits[257] = {
00565 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
00566 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
00567 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
00568 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
00569 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
00570 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00571 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
00572 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00573 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16,
00574 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00575 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00576 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00577 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00578 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00579 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00580 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00581 16,
00582 };
00583
00584 static const uint8_t dnxhd_1235_1241_ac_level[257] = {
00585 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
00586 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 6, 7, 22, 23, 24,
00587 25, 26, 27, 28, 29, 8, 9, 30, 31, 32, 33, 34, 35, 36, 37, 38,
00588 10, 11, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 12, 13,
00589 14, 15, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 1,
00590 16, 17, 18, 19, 64, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
00591 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 18, 19, 20, 21, 22, 23,
00592 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
00593 40, 41, 42, 25, 26, 27, 28, 29, 30, 31, 32, 43, 44, 45, 46, 47,
00594 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00595 64, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00596 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00597 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
00598 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00599 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00600 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00601 64,
00602 };
00603
00604 static const uint8_t dnxhd_1235_1241_ac_run_flag[257] = {
00605 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
00606 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
00607 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00608 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
00609 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00610 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00611 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
00612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00613 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
00614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00615 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00616 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00617 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00618 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00619 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00620 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00621 1,
00622 };
00623
00624 static const uint8_t dnxhd_1235_1241_ac_index_flag[257] = {
00625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00628 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00630 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00631 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
00632 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00633 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
00634 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00635 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00636 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00637 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00638 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00639 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00640 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00641 1,
00642 };
00643
00644 static const uint8_t dnxhd_1235_1241_run[62] = {
00645 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
00646 18, 20, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
00647 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
00648 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
00649 };
00650
00651 static const uint8_t dnxhd_1250_dc_codes[14] = {
00652 10, 62, 11, 12, 13, 0, 1, 2, 3, 4, 14, 30, 126, 127
00653 };
00654 static const uint8_t dnxhd_1250_dc_bits[14] = {
00655 4, 6, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 7, 7
00656 };
00657 static const uint16_t dnxhd_1250_ac_codes[257] = {
00658 0, 1, 4, 10, 11, 24, 25, 26,
00659 54, 55, 56, 57, 116, 117, 118, 119,
00660 240, 241, 242, 243, 244, 245, 492, 493,
00661 494, 495, 496, 497, 498, 998, 999, 1000,
00662 1001, 1002, 1003, 1004, 1005, 1006, 2014, 2015,
00663 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
00664 2024, 2025, 4052, 4053, 4054, 4055, 4056, 4057,
00665 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065,
00666 4066, 4067, 8136, 8137, 8138, 8139, 8140, 8141,
00667 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149,
00668 8150, 8151, 8152, 8153, 8154, 8155, 8156, 16314,
00669 16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
00670 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330,
00671 16331, 16332, 16333, 16334, 16335, 16336, 16337, 16338,
00672 32678, 32679, 32680, 32681, 32682, 32683, 32684, 32685,
00673 32686, 32687, 32688, 32689, 32690, 32691, 32692, 32693,
00674 32694, 32695, 32696, 32697, 32698, 32699, 32700, 32701,
00675 32702, 32703, 32704, 32705, 32706, 32707, 32708, 32709,
00676 32710, 32711, 32712, 65426, 65427, 65428, 65429, 65430,
00677 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00678 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00679 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00680 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00681 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00682 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00683 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00684 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00685 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00686 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00687 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00688 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00689 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00690 65535
00691 };
00692 static const uint8_t dnxhd_1250_ac_bits[257] = {
00693 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
00694 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10,
00695 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
00696 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
00697 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
00698 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00699 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00700 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00701 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00702 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00703 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00704 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00705 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00706 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00707 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00708 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00709 16
00710 };
00711 static const uint8_t dnxhd_1250_ac_level[257] = {
00712 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
00713 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 22, 6, 23, 24, 25,
00714 26, 27, 28, 29, 7, 8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
00715 9, 10, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 11,
00716 12, 13, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 1, 2,
00717 3, 4, 5, 14, 15, 16, 17, 6, 7, 8, 9, 10, 11, 12, 13, 14,
00718 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 18, 19, 20, 21,
00719 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
00720 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 22, 23, 24,
00721 25, 26, 27, 54, 57, 58, 59, 60, 61, 62, 63, 64, 28, 29, 30, 31,
00722 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00723 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00724 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
00725 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00726 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00727 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00728 64
00729 };
00730 static const uint8_t dnxhd_1250_ac_run_flag[257] = {
00731 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
00732 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
00733 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00734 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00735 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00736 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
00738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
00740 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
00741 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00742 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00743 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00744 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00745 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00746 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00747 1
00748 };
00749 static const uint8_t dnxhd_1250_ac_index_flag[257] = {
00750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
00755 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00756 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
00757 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00758 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
00759 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
00760 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00761 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00762 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00763 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00764 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00765 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00766 1
00767 };
00768 static const uint16_t dnxhd_1250_run_codes[62] = {
00769 0, 4, 5, 12, 26, 27, 28, 58,
00770 118, 119, 120, 242, 486, 487, 976, 977,
00771 978, 979, 980, 981, 982, 983, 984, 985,
00772 986, 987, 988, 989, 990, 991, 992, 993,
00773 994, 995, 996, 997, 998, 999, 1000, 1001,
00774 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
00775 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
00776 1018, 1019, 1020, 1021, 1022, 1023
00777 };
00778 static const uint8_t dnxhd_1250_run_bits[62] = {
00779 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
00780 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00781 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00782 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
00783 };
00784 static const uint8_t dnxhd_1250_run[62] = {
00785 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
00786 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
00787 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
00788 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62
00789 };
00790
00791 static const uint8_t dnxhd_1251_dc_codes[12] = {
00792 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
00793 };
00794
00795 static const uint8_t dnxhd_1251_dc_bits[12] = {
00796 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
00797 };
00798
00799 static const uint16_t dnxhd_1251_ac_codes[257] = {
00800 0, 1, 4, 10, 11, 24, 25, 26,
00801 54, 55, 56, 57, 116, 117, 118, 119,
00802 240, 241, 242, 243, 244, 245, 492, 493,
00803 494, 495, 496, 497, 996, 997, 998, 999,
00804 1000, 1001, 1002, 1003, 1004, 1005, 2012, 2013,
00805 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021,
00806 2022, 2023, 2024, 2025, 4052, 4053, 4054, 4055,
00807 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063,
00808 4064, 4065, 4066, 8134, 8135, 8136, 8137, 8138,
00809 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146,
00810 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154,
00811 8155, 8156, 16314, 16315, 16316, 16317, 16318, 16319,
00812 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
00813 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
00814 16336, 16337, 16338, 16339, 32680, 32681, 32682, 32683,
00815 32684, 32685, 32686, 32687, 32688, 32689, 32690, 32691,
00816 32692, 32693, 32694, 32695, 32696, 32697, 32698, 32699,
00817 32700, 32701, 32702, 32703, 32704, 32705, 32706, 32707,
00818 32708, 32709, 32710, 32711, 32712, 32713, 32714, 65430,
00819 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00820 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00821 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00822 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00823 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00824 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00825 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00826 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00827 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00828 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00829 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00830 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00831 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00832 65535,
00833 };
00834
00835 static const uint8_t dnxhd_1251_ac_bits[257] = {
00836 2, 2, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
00837 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
00838 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
00839 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
00840 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
00841 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14,
00842 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00843 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00844 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
00845 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00846 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00847 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00848 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00849 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00850 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00851 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00852 16,
00853 };
00854
00855 static const uint8_t dnxhd_1251_ac_level[257] = {
00856 1, 1, 2, 3, 0, 4, 5, 2, 6, 7, 8, 3, 9, 10, 11, 4,
00857 12, 13, 14, 15, 16, 5, 17, 18, 19, 20, 21, 6, 22, 23, 24, 25,
00858 26, 27, 28, 29, 7, 8, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
00859 40, 9, 10, 11, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
00860 12, 13, 14, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 1,
00861 2, 3, 4, 5, 6, 7, 8, 15, 16, 17, 9, 10, 11, 12, 13, 14,
00862 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 18,
00863 19, 20, 21, 22, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
00864 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
00865 58, 23, 24, 25, 26, 27, 28, 59, 60, 61, 62, 63, 64, 29, 30, 31,
00866 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00867 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00868 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
00869 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
00870 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00871 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
00872 64,
00873 };
00874
00875 static const uint8_t dnxhd_1251_ac_run_flag[257] = {
00876 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
00877 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
00878 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00879 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00880 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00881 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
00882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00883 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00885 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1,
00886 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00887 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00888 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00889 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00890 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00891 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00892 1,
00893 };
00894
00895 static const uint8_t dnxhd_1251_ac_index_flag[257] = {
00896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
00901 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
00902 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
00903 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00904 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00905 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
00906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00908 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00909 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00910 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00911 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00912 1,
00913 };
00914
00915 static const uint16_t dnxhd_1251_run_codes[62] = {
00916 0, 4, 5, 12, 26, 27, 28, 58,
00917 118, 119, 120, 242, 486, 487, 976, 977,
00918 978, 979, 980, 981, 982, 983, 984, 985,
00919 986, 987, 988, 989, 990, 991, 992, 993,
00920 994, 995, 996, 997, 998, 999, 1000, 1001,
00921 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
00922 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
00923 1018, 1019, 1020, 1021, 1022, 1023,
00924 };
00925
00926 static const uint8_t dnxhd_1251_run_bits[62] = {
00927 1, 3, 3, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 9, 10, 10,
00928 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00929 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00930 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
00931 };
00932
00933 static const uint8_t dnxhd_1251_run[62] = {
00934 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
00935 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
00936 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
00937 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
00938 };
00939
00940 static const uint8_t dnxhd_1252_dc_codes[12] = {
00941 0, 12, 13, 1, 2, 3, 4, 5, 14, 30, 62, 63,
00942 };
00943
00944 static const uint8_t dnxhd_1252_dc_bits[12] = {
00945 3, 4, 4, 3, 3, 3, 3, 3, 4, 5, 6, 6,
00946 };
00947
00948 static const uint16_t dnxhd_1252_ac_codes[257] = {
00949 0, 1, 4, 10, 11, 12, 26, 27,
00950 56, 57, 58, 118, 119, 120, 242, 243,
00951 244, 245, 246, 247, 496, 497, 498, 499,
00952 500, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
00953 1009, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
00954 2027, 2028, 2029, 4060, 4061, 4062, 4063, 4064,
00955 4065, 4066, 4067, 4068, 4069, 4070, 4071, 8144,
00956 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152,
00957 8153, 8154, 8155, 8156, 8157, 8158, 16318, 16319,
00958 16320, 16321, 16322, 16323, 16324, 16325, 16326, 16327,
00959 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
00960 32672, 32673, 32674, 32675, 32676, 32677, 32678, 32679,
00961 32680, 32681, 32682, 32683, 32684, 32685, 32686, 32687,
00962 32688, 32689, 32690, 32691, 32692, 32693, 32694, 65390,
00963 65391, 65392, 65393, 65394, 65395, 65396, 65397, 65398,
00964 65399, 65400, 65401, 65402, 65403, 65404, 65405, 65406,
00965 65407, 65408, 65409, 65410, 65411, 65412, 65413, 65414,
00966 65415, 65416, 65417, 65418, 65419, 65420, 65421, 65422,
00967 65423, 65424, 65425, 65426, 65427, 65428, 65429, 65430,
00968 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438,
00969 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446,
00970 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454,
00971 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462,
00972 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470,
00973 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478,
00974 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486,
00975 65487, 65488, 65489, 65490, 65491, 65492, 65493, 65494,
00976 65495, 65496, 65497, 65498, 65499, 65500, 65501, 65502,
00977 65503, 65504, 65505, 65506, 65507, 65508, 65509, 65510,
00978 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518,
00979 65519, 65520, 65521, 65522, 65523, 65524, 65525, 65526,
00980 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534,
00981 65535,
00982 };
00983
00984 static const uint8_t dnxhd_1252_ac_bits[257] = {
00985 2, 2, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
00986 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10,
00987 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
00988 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
00989 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
00990 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
00991 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
00992 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00993 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00994 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00995 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00996 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00997 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00998 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
00999 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
01000 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
01001 16,
01002 };
01003
01004 static const uint8_t dnxhd_1252_ac_level[257] = {
01005 1, 1, 2, 3, 2, 0, 4, 5, 6, 7, 3, 8, 9, 10, 11, 12,
01006 13, 14, 4, 5, 15, 16, 17, 18, 6, 19, 20, 21, 22, 23, 24, 7,
01007 8, 25, 26, 27, 28, 29, 30, 31, 32, 9, 10, 33, 34, 35, 36, 37,
01008 38, 39, 40, 41, 11, 12, 13, 42, 43, 44, 45, 46, 47, 48, 49, 50,
01009 51, 52, 53, 14, 15, 16, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
01010 64, 1, 2, 3, 17, 18, 19, 20, 4, 5, 6, 7, 8, 9, 10, 11,
01011 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 22,
01012 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
01013 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
01014 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 26, 27, 28, 29, 30, 31,
01015 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
01016 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
01017 64, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
01018 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
01019 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
01020 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
01021 64,
01022 };
01023
01024 static const uint8_t dnxhd_1252_ac_run_flag[257] = {
01025 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
01026 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,
01027 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
01028 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01029 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01030 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
01031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
01032 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
01035 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01036 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01037 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01038 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01039 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01040 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01041 1,
01042 };
01043
01044 static const uint8_t dnxhd_1252_ac_index_flag[257] = {
01045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01050 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
01051 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1,
01052 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01053 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01054 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
01055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01056 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01057 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01058 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01059 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01060 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
01061 1,
01062 };
01063
01064 const CIDEntry ff_dnxhd_cid_table[] = {
01065 { 1235, 1920, 1080, 0, 917504, 917504, 6, 10,
01066 dnxhd_1235_luma_weight, dnxhd_1235_chroma_weight,
01067 dnxhd_1235_1241_dc_codes, dnxhd_1235_1241_dc_bits,
01068 dnxhd_1235_1241_ac_codes, dnxhd_1235_1241_ac_bits, dnxhd_1235_1241_ac_level,
01069 dnxhd_1235_1241_ac_run_flag, dnxhd_1235_1241_ac_index_flag,
01070 dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1235_1241_run,
01071 { 175, 185, 365, 440 } },
01072 { 1237, 1920, 1080, 0, 606208, 606208, 4, 8,
01073 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
01074 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
01075 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
01076 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
01077 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
01078 { 115, 120, 145, 240, 290 } },
01079 { 1238, 1920, 1080, 0, 917504, 917504, 4, 8,
01080 dnxhd_1238_luma_weight, dnxhd_1238_chroma_weight,
01081 dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
01082 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
01083 dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
01084 dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1238_run,
01085 { 175, 185, 220, 365, 440 } },
01086 { 1241, 1920, 1080, 1, 917504, 458752, 6, 10,
01087 dnxhd_1241_luma_weight, dnxhd_1241_chroma_weight,
01088 dnxhd_1235_1241_dc_codes, dnxhd_1235_1241_dc_bits,
01089 dnxhd_1235_1241_ac_codes, dnxhd_1235_1241_ac_bits, dnxhd_1235_1241_ac_level,
01090 dnxhd_1235_1241_ac_run_flag, dnxhd_1235_1241_ac_index_flag,
01091 dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1235_1241_run,
01092 { 185, 220 } },
01093 { 1242, 1920, 1080, 1, 606208, 303104, 4, 8,
01094 dnxhd_1242_luma_weight, dnxhd_1242_chroma_weight,
01095 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
01096 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
01097 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
01098 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
01099 { 120, 145 } },
01100 { 1243, 1920, 1080, 1, 917504, 458752, 4, 8,
01101 dnxhd_1243_luma_weight, dnxhd_1243_chroma_weight,
01102 dnxhd_1238_dc_codes, dnxhd_1238_dc_bits,
01103 dnxhd_1238_ac_codes, dnxhd_1238_ac_bits, dnxhd_1238_ac_level,
01104 dnxhd_1238_ac_run_flag, dnxhd_1238_ac_index_flag,
01105 dnxhd_1235_1238_1241_run_codes, dnxhd_1235_1238_1241_run_bits, dnxhd_1238_run,
01106 { 185, 220 } },
01107 { 1250, 1280, 720, 0, 458752, 458752, 6, 10,
01108 dnxhd_1250_luma_weight, dnxhd_1250_chroma_weight,
01109 dnxhd_1250_dc_codes, dnxhd_1250_dc_bits,
01110 dnxhd_1250_ac_codes, dnxhd_1250_ac_bits, dnxhd_1250_ac_level,
01111 dnxhd_1250_ac_run_flag, dnxhd_1250_ac_index_flag,
01112 dnxhd_1250_run_codes, dnxhd_1250_run_bits, dnxhd_1250_run,
01113 { 90, 180, 220 } },
01114 { 1251, 1280, 720, 0, 458752, 458752, 4, 8,
01115 dnxhd_1251_luma_weight, dnxhd_1251_chroma_weight,
01116 dnxhd_1251_dc_codes, dnxhd_1251_dc_bits,
01117 dnxhd_1251_ac_codes, dnxhd_1251_ac_bits, dnxhd_1251_ac_level,
01118 dnxhd_1251_ac_run_flag, dnxhd_1251_ac_index_flag,
01119 dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
01120 { 90, 110, 175, 220 } },
01121 { 1252, 1280, 720, 0, 303104, 303104, 4, 8,
01122 dnxhd_1252_luma_weight, dnxhd_1252_chroma_weight,
01123 dnxhd_1252_dc_codes, dnxhd_1252_dc_bits,
01124 dnxhd_1252_ac_codes, dnxhd_1252_ac_bits, dnxhd_1252_ac_level,
01125 dnxhd_1252_ac_run_flag, dnxhd_1252_ac_index_flag,
01126 dnxhd_1251_run_codes, dnxhd_1251_run_bits, dnxhd_1251_run,
01127 { 60, 75, 115, 145 } },
01128 { 1253, 1920, 1080, 0, 188416, 188416, 4, 8,
01129 dnxhd_1237_luma_weight, dnxhd_1237_chroma_weight,
01130 dnxhd_1237_dc_codes, dnxhd_1237_dc_bits,
01131 dnxhd_1237_ac_codes, dnxhd_1237_ac_bits, dnxhd_1237_ac_level,
01132 dnxhd_1237_ac_run_flag, dnxhd_1237_ac_index_flag,
01133 dnxhd_1237_run_codes, dnxhd_1237_run_bits, dnxhd_1237_run,
01134 { 36, 45, 75, 90 } },
01135 };
01136
01137 int ff_dnxhd_get_cid_table(int cid)
01138 {
01139 int i;
01140 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++)
01141 if (ff_dnxhd_cid_table[i].cid == cid)
01142 return i;
01143 return -1;
01144 }
01145
01146 int ff_dnxhd_find_cid(AVCodecContext *avctx, int bit_depth)
01147 {
01148 int i, j;
01149 int mbs = avctx->bit_rate/1000000;
01150 if (!mbs)
01151 return 0;
01152 for (i = 0; i < FF_ARRAY_ELEMS(ff_dnxhd_cid_table); i++) {
01153 const CIDEntry *cid = &ff_dnxhd_cid_table[i];
01154 if (cid->width == avctx->width && cid->height == avctx->height &&
01155 cid->interlaced == !!(avctx->flags & CODEC_FLAG_INTERLACED_DCT) &&
01156 cid->bit_depth == bit_depth) {
01157 for (j = 0; j < sizeof(cid->bit_rates); j++) {
01158 if (cid->bit_rates[j] == mbs)
01159 return cid->cid;
01160 }
01161 }
01162 }
01163 return 0;
01164 }