annotate ffmpeg/libavcodec/dnxhddata.c @ 13:844d341cf643 tip

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