00001
00006 #ifndef VC9DATA_H
00007 #define VC9DATA_H
00008
00009
00010 const int16_t vc9_bfraction_lut[23] = {
00011 420 , 280 , 560 , 210 ,
00012 630 , 168 , 336 ,
00013 504 , 672 , 140 , 700 ,
00014 120 , 240 , 360 , 480 ,
00015 600 , 720 , 105 , 315 ,
00016 525 , 735 ,
00017 -1 , 0
00018 };
00019 const uint8_t vc9_bfraction_bits[23] = {
00020 3, 3, 3, 3,
00021 3, 3, 3,
00022 7, 7, 7, 7,
00023 7, 7, 7, 7,
00024 7, 7, 7, 7,
00025 7, 7,
00026 7, 7
00027 };
00028 const uint8_t vc9_bfraction_codes[23] = {
00029 0, 1, 2, 3,
00030 4, 5, 6,
00031 112, 113, 114, 115,
00032 116, 117, 118, 119,
00033 120, 121, 122, 123,
00034 124, 125,
00035 126, 127
00036 };
00037
00038
00039 static const AVRational vc9_pixel_aspect[16]={
00040 {0, 1},
00041 {1, 1},
00042 {12, 11},
00043 {10, 11},
00044 {16, 11},
00045 {40, 33},
00046 {24, 11},
00047 {20, 11},
00048 {32, 11},
00049 {80, 33},
00050 {18, 11},
00051 {15, 11},
00052 {64, 33},
00053 {160, 99},
00054 {0, 1},
00055 {0, 1}
00056 };
00057
00058
00059 static const uint8_t vc9_imode_codes[7] = {
00060 0, 2, 1, 3, 1, 2, 3
00061 };
00062 static const uint8_t vc9_imode_bits[7] = {
00063 4, 2, 3, 2, 4, 3, 3
00064 };
00065
00066
00067 static const uint8_t vc9_norm2_codes[4] = {
00068 0, 4, 5, 3
00069 };
00070 static const uint8_t vc9_norm2_bits[4] = {
00071 1, 3, 3, 2
00072 };
00073
00074 static const uint16_t vc9_norm6_codes[64] = {
00075 0x001, 0x002, 0x003, 0x000, 0x004, 0x001, 0x002, 0x047, 0x005, 0x003, 0x004, 0x04B, 0x005, 0x04D, 0x04E, 0x30E,
00076 0x006, 0x006, 0x007, 0x053, 0x008, 0x055, 0x056, 0x30D, 0x009, 0x059, 0x05A, 0x30C, 0x05C, 0x30B, 0x30A, 0x037,
00077 0x007, 0x00A, 0x00B, 0x043, 0x00C, 0x045, 0x046, 0x309, 0x00D, 0x049, 0x04A, 0x308, 0x04C, 0x307, 0x306, 0x036,
00078 0x00E, 0x051, 0x052, 0x305, 0x054, 0x304, 0x303, 0x035, 0x058, 0x302, 0x301, 0x034, 0x300, 0x033, 0x032, 0x007,
00079 };
00080
00081 static const uint8_t vc9_norm6_bits[64] = {
00082 1, 4, 4, 8, 4, 8, 8, 10, 4, 8, 8, 10, 8, 10, 10, 13,
00083 4, 8, 8, 10, 8, 10, 10, 13, 8, 10, 10, 13, 10, 13, 13, 9,
00084 4, 8, 8, 10, 8, 10, 10, 13, 8, 10, 10, 13, 10, 13, 13, 9,
00085 8, 10, 10, 13, 10, 13, 13, 9, 10, 13, 13, 9, 13, 9, 9, 6,
00086 };
00087
00088 static const uint8_t vc9_norm6_spec[64][5] = {
00089 { 0, 1, 1 },
00090 { 1, 2, 4 },
00091 { 2, 3, 4 },
00092 { 3, 0, 8 },
00093 { 4, 4, 4 },
00094 { 5, 1, 8 },
00095 { 6, 2, 8 },
00096 { 7, 2, 5, 7, 5 },
00097 { 8, 5, 4 },
00098 { 9, 3, 8 },
00099 {10, 4, 8 },
00100 {11, 2, 5, 11, 5 },
00101 {12, 5, 8 },
00102 {13, 2, 5, 13, 5 },
00103 {14, 2, 5, 14, 5 },
00104 {15, 3, 5, 14, 8 },
00105 {16, 6, 4 },
00106 {17, 6, 8 },
00107 {18, 7, 8 },
00108 {19, 2, 5, 19, 5 },
00109 {20, 8, 8 },
00110 {21, 2, 5, 21, 5 },
00111 {22, 2, 5, 22, 5 },
00112 {23, 3, 5, 13, 8 },
00113 {24, 9, 8 },
00114 {25, 2, 5, 25, 5 },
00115 {26, 2, 5, 26, 5 },
00116 {27, 3, 5, 12, 8 },
00117 {28, 2, 5, 28, 5 },
00118 {29, 3, 5, 11, 8 },
00119 {30, 3, 5, 10, 8 },
00120 {31, 3, 5, 7, 4 },
00121 {32, 7, 4 },
00122 {33, 10, 8 },
00123 {34, 11, 8 },
00124 {35, 2, 5, 3, 5 },
00125 {36, 12, 8 },
00126 {37, 2, 5, 5, 5 },
00127 {38, 2, 5, 6, 5 },
00128 {39, 3, 5, 9, 8 },
00129 {40, 13, 8 },
00130 {41, 2, 5, 9, 5 },
00131 {42, 2, 5, 10, 5 },
00132 {43, 3, 5, 8, 8 },
00133 {44, 2, 5, 12, 5 },
00134 {45, 3, 5, 7, 8 },
00135 {46, 3, 5, 6, 8 },
00136 {47, 3, 5, 6, 4 },
00137 {48, 14, 8 },
00138 {49, 2, 5, 17, 5 },
00139 {50, 2, 5, 18, 5 },
00140 {51, 3, 5, 5, 8 },
00141 {52, 2, 5, 20, 5 },
00142 {53, 3, 5, 4, 8 },
00143 {54, 3, 5, 3, 8 },
00144 {55, 3, 5, 5, 4 },
00145 {56, 2, 5, 24, 5 },
00146 {57, 3, 5, 2, 8 },
00147 {58, 3, 5, 1, 8 },
00148 {59, 3, 5, 4, 4 },
00149 {60, 3, 5, 0, 8 },
00150 {61, 3, 5, 3, 4 },
00151 {62, 3, 5, 2, 4 },
00152 {63, 3, 5, 1, 1 },
00153 };
00154
00155
00156 static const uint8_t vc9_4mv_block_pattern_codes[4][16] = {
00157 { 14, 58, 59, 25, 12, 26, 15, 15, 13, 24, 27, 0, 28, 1, 2, 2},
00158 { 8, 18, 19, 4, 20, 5, 30, 11, 21, 31, 6, 12, 7, 13, 14, 0},
00159 { 15, 6, 7, 2, 8, 3, 28, 9, 10, 29, 4, 11, 5, 12, 13, 0},
00160 { 0, 11, 12, 4, 13, 5, 30, 16, 14, 31, 6, 17, 7, 18, 19, 19}
00161 };
00162 static const uint8_t vc9_4mv_block_pattern_bits[4][16] = {
00163 { 5, 6, 6, 5, 5, 5, 5, 4, 5, 5, 5, 3, 5, 3, 3, 2},
00164 { 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 4, 4, 4, 4, 4, 2},
00165 { 4, 4, 4, 4, 4, 4, 5, 4, 4, 5, 4, 4, 4, 4, 4, 3},
00166 { 2, 4, 4, 4, 4, 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 4}
00167 };
00168
00169 const uint8_t wmv3_dc_scale_table[32]={
00170 0, 4, 6, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21
00171 };
00172
00173
00174 static const uint16_t vc9_cbpcy_p_codes[4][64] = {
00175 {
00176 0, 1, 1, 4, 5, 1, 12, 4, 13, 14, 10, 11, 12, 7, 13, 2,
00177 15, 1, 96, 1, 49, 97, 2, 100, 3, 4, 5, 101, 102, 52, 53, 4,
00178 6, 7, 54, 103, 8, 9, 10, 110, 11, 12, 111, 56, 114, 58, 115, 5,
00179 13, 7, 8, 9, 10, 11, 12, 30, 13, 14, 15, 118, 119, 62, 63, 3
00180 },
00181 {
00182 0, 1, 2, 1, 3, 1, 16, 17, 5, 18, 12, 19, 13, 1, 28, 58,
00183 1, 1, 1, 2, 3, 2, 3, 236, 237, 4, 5, 238, 6, 7, 239, 8,
00184 9, 240, 10, 11, 121, 122, 12, 13, 14, 15, 241, 246, 16, 17, 124, 63,
00185 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 247, 125
00186 },
00187 {
00188 0, 1, 2, 3, 2, 3, 1, 4, 5, 24, 7, 13, 16, 17, 9, 5,
00189 25, 1, 1, 1, 2, 3, 96, 194, 1, 2, 98, 99, 195, 200, 101, 26,
00190 201, 102, 412, 413, 414, 54, 220, 111, 221, 3, 224, 113, 225, 114, 230, 29,
00191 231, 415, 240, 4, 241, 484, 5, 243, 3, 244, 245, 485, 492, 493, 247, 31
00192 },
00193 {
00194 0, 1, 1, 1, 2, 2, 3, 4, 3, 5, 6, 7, 8, 9, 10, 11,
00195 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
00196 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
00197 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 28, 29, 30, 31
00198 }
00199 };
00200 static const uint8_t vc9_cbpcy_p_bits[4][64] = {
00201 {
00202 13, 6, 5, 6, 6, 7, 7, 5, 7, 7, 6, 6, 6, 5, 6, 3,
00203 7, 8, 8, 13, 7, 8, 13, 8, 13, 13, 13, 8, 8, 7, 7, 3,
00204 13, 13, 7, 8, 13, 13, 13, 8, 13, 13, 8, 7, 8, 7, 8, 3,
00205 13, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 8, 8, 7, 7, 2
00206 },
00207 {
00208 14, 3, 3, 5, 3, 4, 5, 5, 3, 5, 4, 5, 4, 6, 5, 6,
00209 8, 14, 13, 8, 8, 13, 13, 8, 8, 13, 13, 8, 13, 13, 8, 13,
00210 13, 8, 13, 13, 7, 7, 13, 13, 13, 13, 8, 8, 13, 13, 7, 6,
00211 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 8, 7
00212 },
00213 {
00214 13, 5, 5, 5, 4, 4, 6, 4, 4, 6, 4, 5, 5, 5, 4, 3,
00215 6, 8, 10, 9, 8, 8, 7, 8, 13, 13, 7, 7, 8, 8, 7, 5,
00216 8, 7, 9, 9, 9, 6, 8, 7, 8, 13, 8, 7, 8, 7, 8, 5,
00217 8, 9, 8, 13, 8, 9, 13, 8, 12, 8, 8, 9, 9, 9, 8, 5
00218 },
00219 {
00220 9, 2, 3, 9, 2, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 9,
00221 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
00222 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
00223 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8
00224 }
00225 };
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235 static const uint16_t vc9_ttmb_codes[3][16] = {
00236 {
00237 0x0003,
00238 0x002E, 0x005F, 0x0000,
00239 0x0016, 0x0015, 0x0001,
00240 0x0004, 0x0014,
00241 0x02F1, 0x0179, 0x017B,
00242 0x0BC0, 0x0BC1, 0x05E1,
00243 0x017A
00244 },
00245 {
00246 0x0006,
00247 0x0006, 0x0003, 0x0007,
00248 0x000F, 0x000E, 0x0000,
00249 0x0002, 0x0002,
00250 0x0014, 0x0011, 0x000B,
00251 0x0009, 0x0021, 0x0015,
00252 0x0020
00253 },
00254 {
00255 0x0006,
00256 0x0000, 0x000E, 0x0005,
00257 0x0002, 0x0003, 0x0003,
00258 0x000F, 0x0002,
00259 0x0081, 0x0021, 0x0009,
00260 0x0101, 0x0041, 0x0011,
00261 0x0100
00262 }
00263 };
00264
00265 static const uint8_t vc9_ttmb_bits[3][16] = {
00266 {
00267 2,
00268 6, 7, 2,
00269 5, 5, 2,
00270 3, 5,
00271 10, 9, 9,
00272 12, 12, 11,
00273 9
00274 },
00275 {
00276 3,
00277 4, 4, 4,
00278 4, 4, 3,
00279 3, 2,
00280 7, 7, 6,
00281 6, 8, 7,
00282 8
00283 },
00284 {
00285 3,
00286 3, 4, 5,
00287 3, 3, 4,
00288 4, 2,
00289 10, 8, 6,
00290 11, 9, 7,
00291 11
00292 }
00293 };
00294
00295
00296 static const uint8_t vc9_ttblk_codes[3][8] = {
00297 { 0, 1, 3, 5, 16, 17, 18, 19},
00298 { 3, 0, 1, 2, 3, 5, 8, 9},
00299 { 1, 0, 1, 4, 6, 7, 10, 11}
00300 };
00301 static const uint8_t vc9_ttblk_bits[3][8] = {
00302 { 2, 2, 2, 3, 5, 5, 5, 5},
00303 { 2, 3, 3, 3, 3, 3, 4, 4},
00304 { 2, 3, 3, 3, 3, 3, 4, 4}
00305 };
00306
00307
00308 static const uint8_t vc9_subblkpat_codes[3][15] = {
00309 { 14, 12, 7, 11, 9, 26, 2, 10, 27, 8, 0, 6, 1, 15, 1},
00310 { 14, 0, 8, 15, 10, 4, 23, 13, 5, 9, 25, 3, 24, 22, 1},
00311 { 5, 6, 2, 2, 8, 0, 28, 3, 1, 3, 29, 1, 19, 18, 15}
00312 };
00313 static const uint8_t vc9_subblkpat_bits[3][15] = {
00314 { 5, 5, 5, 5, 5, 6, 4, 5, 6, 5, 4, 5, 4, 5, 1},
00315 { 4, 3, 4, 4, 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 2},
00316 { 3, 3, 4, 3, 4, 5, 5, 3, 5, 4, 5, 4, 5, 5, 4}
00317 };
00318
00319
00320 static const uint16_t vc9_mv_diff_codes[4][73] = {
00321 {
00322 0, 2, 3, 8, 576, 3, 2, 6,
00323 5, 577, 578, 7, 8, 9, 40, 19,
00324 37, 82, 21, 22, 23, 579, 580, 166,
00325 96, 167, 49, 194, 195, 581, 582, 583,
00326 292, 293, 294, 13, 2, 7, 24, 50,
00327 102, 295, 13, 7, 8, 18, 50, 103,
00328 38, 20, 21, 22, 39, 204, 103, 23,
00329 24, 25, 104, 410, 105, 106, 107, 108,
00330 109, 220, 411, 442, 222, 443, 446, 447,
00331 7
00332 },
00333 {
00334 0, 4, 5, 3, 4, 3, 4, 5,
00335 20, 6, 21, 44, 45, 46, 3008, 95,
00336 112, 113, 57, 3009, 3010, 116, 117, 3011,
00337 118, 3012, 3013, 3014, 3015, 3016, 3017, 3018,
00338 3019, 3020, 3021, 3022, 1, 4, 15, 160,
00339 161, 41, 6, 11, 42, 162, 43, 119,
00340 56, 57, 58, 163, 236, 237, 3023, 119,
00341 120, 242, 122, 486, 1512, 487, 246, 494,
00342 1513, 495, 1514, 1515, 1516, 1517, 1518, 1519,
00343 31
00344 },
00345 {
00346 0, 512, 513, 514, 515, 2, 3, 258,
00347 259, 260, 261, 262, 263, 264, 265, 266,
00348 267, 268, 269, 270, 271, 272, 273, 274,
00349 275, 276, 277, 278, 279, 280, 281, 282,
00350 283, 284, 285, 286, 1, 5, 287, 288,
00351 289, 290, 6, 7, 291, 292, 293, 294,
00352 295, 296, 297, 298, 299, 300, 301, 302,
00353 303, 304, 305, 306, 307, 308, 309, 310,
00354 311, 312, 313, 314, 315, 316, 317, 318,
00355 319
00356 },
00357 {
00358 0, 1, 1, 2, 3, 4, 1, 5,
00359 4, 3, 5, 8, 6, 9, 10, 11,
00360 12, 7, 104, 14, 105, 4, 10, 15,
00361 11, 6, 14, 8, 106, 107, 108, 15,
00362 109, 9, 55, 10, 1, 2, 1, 2,
00363 3, 12, 6, 2, 6, 7, 28, 7,
00364 15, 8, 5, 18, 29, 152, 77, 24,
00365 25, 26, 39, 108, 13, 109, 55, 56,
00366 57, 116, 11, 153, 234, 235, 118, 119,
00367 15
00368 }
00369 };
00370 static const uint8_t vc9_mv_diff_bits[4][73] = {
00371 {
00372 6, 7, 7, 8, 14, 6, 5, 6, 7, 14, 14, 6, 6, 6, 8, 9,
00373 10, 9, 7, 7, 7, 14, 14, 10, 9, 10, 8, 10, 10, 14, 14, 14,
00374 13, 13, 13, 6, 3, 5, 6, 8, 9, 13, 5, 4, 4, 5, 7, 9,
00375 6, 5, 5, 5, 6, 9, 8, 5, 5, 5, 7, 10, 7, 7, 7, 7,
00376 7, 8, 10, 9, 8, 9, 9, 9, 3
00377 },
00378 {
00379 5, 7, 7, 6, 6, 5, 5, 6, 7, 5, 7, 8, 8, 8, 14, 9,
00380 9, 9, 8, 14, 14, 9, 9, 14, 9, 14, 14, 14, 14, 14, 14, 14,
00381 14, 14, 14, 14, 2, 3, 6, 8, 8, 6, 3, 4, 6, 8, 6, 9,
00382 6, 6, 6, 8, 8, 8, 14, 7, 7, 8, 7, 9, 13, 9, 8, 9,
00383 13, 9, 13, 13, 13, 13, 13, 13, 5
00384
00385 },
00386 {
00387 3, 12, 12, 12, 12, 3, 4, 11, 11, 11, 11, 11, 11, 11, 11, 11,
00388 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
00389 11, 11, 11, 11, 1, 5, 11, 11, 11, 11, 4, 4, 11, 11, 11, 11,
00390 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
00391 11, 11, 11, 11, 11, 11, 11, 11, 11
00392 },
00393 {
00394 15, 11, 15, 15, 15, 15, 12, 15, 12, 11, 12, 12, 15, 12, 12, 12,
00395 12, 15, 15, 12, 15, 10, 11, 12, 11, 10, 11, 10, 15, 15, 15, 11,
00396 15, 10, 14, 10, 4, 4, 5, 7, 8, 9, 5, 3, 4, 5, 6, 8,
00397 5, 4, 3, 5, 6, 8, 7, 5, 5, 5, 6, 7, 9, 7, 6, 6,
00398 6, 7, 10, 8, 8, 8, 7, 7, 4
00399 }
00400 };
00401
00402
00403
00404
00405
00406 #endif