1/* 2 * Copyright (C) 2010 David Conrad 3 * Copyright (C) 2010 Ronald S. Bultje 4 * 5 * This file is part of Libav. 6 * 7 * Libav is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * Libav is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with Libav; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22/** 23 * @file 24 * VP8 compatible video decoder 25 */ 26 27#ifndef AVCODEC_VP8DATA_H 28#define AVCODEC_VP8DATA_H 29 30#include "vp8.h" 31#include "h264pred.h" 32 33static const uint8_t vp8_pred4x4_mode[] = 34{ 35 [DC_PRED8x8] = DC_PRED, 36 [VERT_PRED8x8] = VERT_PRED, 37 [HOR_PRED8x8] = HOR_PRED, 38 [PLANE_PRED8x8] = TM_VP8_PRED, 39}; 40 41static const int8_t vp8_pred16x16_tree_intra[4][2] = 42{ 43 { -MODE_I4x4, 1 }, // '0' 44 { 2, 3 }, 45 { -DC_PRED8x8, -VERT_PRED8x8 }, // '100', '101' 46 { -HOR_PRED8x8, -PLANE_PRED8x8 }, // '110', '111' 47}; 48 49static const int8_t vp8_pred16x16_tree_inter[4][2] = 50{ 51 { -DC_PRED8x8, 1 }, // '0' 52 { 2, 3 }, 53 { -VERT_PRED8x8, -HOR_PRED8x8 }, // '100', '101' 54 { -PLANE_PRED8x8, -MODE_I4x4 }, // '110', '111' 55}; 56 57static const int vp8_mode_contexts[6][4] = { 58 { 7, 1, 1, 143 }, 59 { 14, 18, 14, 107 }, 60 { 135, 64, 57, 68 }, 61 { 60, 56, 128, 65 }, 62 { 159, 134, 128, 34 }, 63 { 234, 188, 128, 28 }, 64}; 65 66static const uint8_t vp8_mbsplits[5][16] = { 67 { 0, 0, 0, 0, 0, 0, 0, 0, 68 1, 1, 1, 1, 1, 1, 1, 1 }, 69 { 0, 0, 1, 1, 0, 0, 1, 1, 70 0, 0, 1, 1, 0, 0, 1, 1 }, 71 { 0, 0, 1, 1, 0, 0, 1, 1, 72 2, 2, 3, 3, 2, 2, 3, 3 }, 73 { 0, 1, 2, 3, 4, 5, 6, 7, 74 8, 9, 10, 11, 12, 13, 14, 15 }, 75 { 0, 0, 0, 0, 0, 0, 0, 0, 76 0, 0, 0, 0, 0, 0, 0, 0 } 77}; 78 79static const uint8_t vp8_mbfirstidx[4][16] = { 80 { 0, 8 }, { 0, 2 }, { 0, 2, 8, 10 }, 81 { 0, 1, 2, 3, 4, 5, 6, 7, 82 8, 9, 10, 11, 12, 13, 14, 15 } 83}; 84 85static const uint8_t vp8_mbsplit_count[4] = { 2, 2, 4, 16 }; 86static const uint8_t vp8_mbsplit_prob[3] = { 110, 111, 150 }; 87 88static const uint8_t vp8_submv_prob[5][3] = { 89 { 147, 136, 18 }, 90 { 106, 145, 1 }, 91 { 179, 121, 1 }, 92 { 223, 1, 34 }, 93 { 208, 1, 1 } 94}; 95 96static const uint8_t vp8_pred16x16_prob_intra[4] = { 145, 156, 163, 128 }; 97static const uint8_t vp8_pred16x16_prob_inter[4] = { 112, 86, 140, 37 }; 98 99static const int8_t vp8_pred4x4_tree[9][2] = 100{ 101 { -DC_PRED, 1 }, // '0' 102 { -TM_VP8_PRED, 2 }, // '10' 103 { -VERT_PRED, 3 }, // '110' 104 { 4, 6 }, 105 { -HOR_PRED, 5 }, // '11100' 106 { -DIAG_DOWN_RIGHT_PRED, -VERT_RIGHT_PRED }, // '111010', '111011' 107 { -DIAG_DOWN_LEFT_PRED, 7 }, // '11110' 108 { -VERT_LEFT_PRED, 8 }, // '111110' 109 { -HOR_DOWN_PRED, -HOR_UP_PRED }, // '1111110', '1111111' 110}; 111 112static const int8_t vp8_pred8x8c_tree[3][2] = 113{ 114 { -DC_PRED8x8, 1 }, // '0' 115 { -VERT_PRED8x8, 2 }, // '10 116 { -HOR_PRED8x8, -PLANE_PRED8x8 }, // '110', '111' 117}; 118 119static const uint8_t vp8_pred8x8c_prob_intra[3] = { 142, 114, 183 }; 120static const uint8_t vp8_pred8x8c_prob_inter[3] = { 162, 101, 204 }; 121 122static const uint8_t vp8_pred4x4_prob_inter[9] = 123{ 124 120, 90, 79, 133, 87, 85, 80, 111, 151 125}; 126 127static const uint8_t vp8_pred4x4_prob_intra[10][10][9] = 128{ 129 { 130 { 39, 53, 200, 87, 26, 21, 43, 232, 171 }, 131 { 56, 34, 51, 104, 114, 102, 29, 93, 77 }, 132 { 88, 88, 147, 150, 42, 46, 45, 196, 205 }, 133 { 107, 54, 32, 26, 51, 1, 81, 43, 31 }, 134 { 39, 28, 85, 171, 58, 165, 90, 98, 64 }, 135 { 34, 22, 116, 206, 23, 34, 43, 166, 73 }, 136 { 34, 19, 21, 102, 132, 188, 16, 76, 124 }, 137 { 68, 25, 106, 22, 64, 171, 36, 225, 114 }, 138 { 62, 18, 78, 95, 85, 57, 50, 48, 51 }, 139 { 43, 97, 183, 117, 85, 38, 35, 179, 61 }, 140 }, 141 { 142 { 112, 113, 77, 85, 179, 255, 38, 120, 114 }, 143 { 40, 42, 1, 196, 245, 209, 10, 25, 109 }, 144 { 193, 101, 35, 159, 215, 111, 89, 46, 111 }, 145 { 100, 80, 8, 43, 154, 1, 51, 26, 71 }, 146 { 88, 43, 29, 140, 166, 213, 37, 43, 154 }, 147 { 61, 63, 30, 155, 67, 45, 68, 1, 209 }, 148 { 41, 40, 5, 102, 211, 183, 4, 1, 221 }, 149 { 142, 78, 78, 16, 255, 128, 34, 197, 171 }, 150 { 51, 50, 17, 168, 209, 192, 23, 25, 82 }, 151 { 60, 148, 31, 172, 219, 228, 21, 18, 111 }, 152 }, 153 { 154 { 175, 69, 143, 80, 85, 82, 72, 155, 103 }, 155 { 56, 58, 10, 171, 218, 189, 17, 13, 152 }, 156 { 231, 120, 48, 89, 115, 113, 120, 152, 112 }, 157 { 144, 71, 10, 38, 171, 213, 144, 34, 26 }, 158 { 114, 26, 17, 163, 44, 195, 21, 10, 173 }, 159 { 121, 24, 80, 195, 26, 62, 44, 64, 85 }, 160 { 63, 20, 8, 114, 114, 208, 12, 9, 226 }, 161 { 170, 46, 55, 19, 136, 160, 33, 206, 71 }, 162 { 81, 40, 11, 96, 182, 84, 29, 16, 36 }, 163 { 152, 179, 64, 126, 170, 118, 46, 70, 95 }, 164 }, 165 { 166 { 75, 79, 123, 47, 51, 128, 81, 171, 1 }, 167 { 57, 17, 5, 71, 102, 57, 53, 41, 49 }, 168 { 125, 98, 42, 88, 104, 85, 117, 175, 82 }, 169 { 115, 21, 2, 10, 102, 255, 166, 23, 6 }, 170 { 38, 33, 13, 121, 57, 73, 26, 1, 85 }, 171 { 41, 10, 67, 138, 77, 110, 90, 47, 114 }, 172 { 57, 18, 10, 102, 102, 213, 34, 20, 43 }, 173 { 101, 29, 16, 10, 85, 128, 101, 196, 26 }, 174 { 117, 20, 15, 36, 163, 128, 68, 1, 26 }, 175 { 95, 84, 53, 89, 128, 100, 113, 101, 45 }, 176 }, 177 { 178 { 63, 59, 90, 180, 59, 166, 93, 73, 154 }, 179 { 40, 40, 21, 116, 143, 209, 34, 39, 175 }, 180 { 138, 31, 36, 171, 27, 166, 38, 44, 229 }, 181 { 57, 46, 22, 24, 128, 1, 54, 17, 37 }, 182 { 47, 15, 16, 183, 34, 223, 49, 45, 183 }, 183 { 46, 17, 33, 183, 6, 98, 15, 32, 183 }, 184 { 40, 3, 9, 115, 51, 192, 18, 6, 223 }, 185 { 65, 32, 73, 115, 28, 128, 23, 128, 205 }, 186 { 87, 37, 9, 115, 59, 77, 64, 21, 47 }, 187 { 67, 87, 58, 169, 82, 115, 26, 59, 179 }, 188 }, 189 { 190 { 54, 57, 112, 184, 5, 41, 38, 166, 213 }, 191 { 30, 34, 26, 133, 152, 116, 10, 32, 134 }, 192 { 104, 55, 44, 218, 9, 54, 53, 130, 226 }, 193 { 75, 32, 12, 51, 192, 255, 160, 43, 51 }, 194 { 39, 19, 53, 221, 26, 114, 32, 73, 255 }, 195 { 31, 9, 65, 234, 2, 15, 1, 118, 73 }, 196 { 56, 21, 23, 111, 59, 205, 45, 37, 192 }, 197 { 88, 31, 35, 67, 102, 85, 55, 186, 85 }, 198 { 55, 38, 70, 124, 73, 102, 1, 34, 98 }, 199 { 64, 90, 70, 205, 40, 41, 23, 26, 57 }, 200 }, 201 { 202 { 86, 40, 64, 135, 148, 224, 45, 183, 128 }, 203 { 22, 26, 17, 131, 240, 154, 14, 1, 209 }, 204 { 164, 50, 31, 137, 154, 133, 25, 35, 218 }, 205 { 83, 12, 13, 54, 192, 255, 68, 47, 28 }, 206 { 45, 16, 21, 91, 64, 222, 7, 1, 197 }, 207 { 56, 21, 39, 155, 60, 138, 23, 102, 213 }, 208 { 18, 11, 7, 63, 144, 171, 4, 4, 246 }, 209 { 85, 26, 85, 85, 128, 128, 32, 146, 171 }, 210 { 35, 27, 10, 146, 174, 171, 12, 26, 128 }, 211 { 51, 103, 44, 131, 131, 123, 31, 6, 158 }, 212 }, 213 { 214 { 68, 45, 128, 34, 1, 47, 11, 245, 171 }, 215 { 62, 17, 19, 70, 146, 85, 55, 62, 70 }, 216 { 102, 61, 71, 37, 34, 53, 31, 243, 192 }, 217 { 75, 15, 9, 9, 64, 255, 184, 119, 16 }, 218 { 37, 43, 37, 154, 100, 163, 85, 160, 1 }, 219 { 63, 9, 92, 136, 28, 64, 32, 201, 85 }, 220 { 56, 8, 17, 132, 137, 255, 55, 116, 128 }, 221 { 86, 6, 28, 5, 64, 255, 25, 248, 1 }, 222 { 58, 15, 20, 82, 135, 57, 26, 121, 40 }, 223 { 69, 60, 71, 38, 73, 119, 28, 222, 37 }, 224 }, 225 { 226 { 101, 75, 128, 139, 118, 146, 116, 128, 85 }, 227 { 56, 41, 15, 176, 236, 85, 37, 9, 62 }, 228 { 190, 80, 35, 99, 180, 80, 126, 54, 45 }, 229 { 146, 36, 19, 30, 171, 255, 97, 27, 20 }, 230 { 71, 30, 17, 119, 118, 255, 17, 18, 138 }, 231 { 101, 38, 60, 138, 55, 70, 43, 26, 142 }, 232 { 32, 41, 20, 117, 151, 142, 20, 21, 163 }, 233 { 138, 45, 61, 62, 219, 1, 81, 188, 64 }, 234 { 112, 19, 12, 61, 195, 128, 48, 4, 24 }, 235 { 85, 126, 47, 87, 176, 51, 41, 20, 32 }, 236 }, 237 { 238 { 66, 102, 167, 99, 74, 62, 40, 234, 128 }, 239 { 41, 53, 9, 178, 241, 141, 26, 8, 107 }, 240 { 134, 183, 89, 137, 98, 101, 106, 165, 148 }, 241 { 104, 79, 12, 27, 217, 255, 87, 17, 7 }, 242 { 74, 43, 26, 146, 73, 166, 49, 23, 157 }, 243 { 65, 38, 105, 160, 51, 52, 31, 115, 128 }, 244 { 47, 41, 14, 110, 182, 183, 21, 17, 194 }, 245 { 87, 68, 71, 44, 114, 51, 15, 186, 23 }, 246 { 66, 45, 25, 102, 197, 189, 23, 18, 22 }, 247 { 72, 187, 100, 130, 157, 111, 32, 75, 80 }, 248 }, 249}; 250 251static const int8_t vp8_segmentid_tree[][2] = 252{ 253 { 1, 2 }, 254 { -0, -1 }, // '00', '01' 255 { -2, -3 }, // '10', '11' 256}; 257 258static const uint8_t vp8_coeff_band[16] = 259{ 260 0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7 261}; 262 263/* Inverse of vp8_coeff_band: mappings of bands to coefficient indexes. 264 * Each list is -1-terminated. */ 265static const int8_t vp8_coeff_band_indexes[8][10] = 266{ 267 {0, -1}, 268 {1, -1}, 269 {2, -1}, 270 {3, -1}, 271 {5, -1}, 272 {6, -1}, 273 {4, 7, 8, 9, 10, 11, 12, 13, 14, -1}, 274 {15, -1} 275}; 276 277static const uint8_t vp8_dct_cat1_prob[] = { 159, 0 }; 278static const uint8_t vp8_dct_cat2_prob[] = { 165, 145, 0 }; 279static const uint8_t vp8_dct_cat3_prob[] = { 173, 148, 140, 0 }; 280static const uint8_t vp8_dct_cat4_prob[] = { 176, 155, 140, 135, 0 }; 281static const uint8_t vp8_dct_cat5_prob[] = { 180, 157, 141, 134, 130, 0 }; 282static const uint8_t vp8_dct_cat6_prob[] = { 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0 }; 283 284// only used for cat3 and above; cat 1 and 2 are referenced directly 285const uint8_t * const ff_vp8_dct_cat_prob[] = 286{ 287 vp8_dct_cat3_prob, 288 vp8_dct_cat4_prob, 289 vp8_dct_cat5_prob, 290 vp8_dct_cat6_prob, 291}; 292 293static const uint8_t vp8_token_default_probs[4][8][3][NUM_DCT_TOKENS-1] = 294{ 295 { 296 { 297 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }, 298 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }, 299 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }, 300 }, 301 { 302 { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 }, 303 { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 }, 304 { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 }, 305 }, 306 { 307 { 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 }, 308 { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 }, 309 { 78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 }, 310 }, 311 { 312 { 1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 }, 313 { 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 }, 314 { 77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 }, 315 }, 316 { 317 { 1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 }, 318 { 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 }, 319 { 37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 }, 320 }, 321 { 322 { 1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 }, 323 { 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 }, 324 { 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 }, 325 }, 326 { 327 { 1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 }, 328 { 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 }, 329 { 80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 }, 330 }, 331 { 332 { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }, 333 { 246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }, 334 { 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }, 335 }, 336 }, 337 { 338 { 339 { 198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62 }, 340 { 131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1 }, 341 { 68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128 }, 342 }, 343 { 344 { 1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 }, 345 { 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 }, 346 { 81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128 }, 347 }, 348 { 349 { 1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 }, 350 { 99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 }, 351 { 23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128 }, 352 }, 353 { 354 { 1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 }, 355 { 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 }, 356 { 44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 }, 357 }, 358 { 359 { 1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 }, 360 { 94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 }, 361 { 22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 }, 362 }, 363 { 364 { 1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 }, 365 { 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 }, 366 { 35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128 }, 367 }, 368 { 369 { 1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 }, 370 { 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 }, 371 { 45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128 }, 372 }, 373 { 374 { 1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128 }, 375 { 203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128 }, 376 { 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 }, 377 }, 378 }, 379 { 380 { 381 { 253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128 }, 382 { 175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128 }, 383 { 73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 }, 384 }, 385 { 386 { 1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128 }, 387 { 239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128 }, 388 { 155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128 }, 389 }, 390 { 391 { 1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128 }, 392 { 201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128 }, 393 { 69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128 }, 394 }, 395 { 396 { 1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 }, 397 { 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 }, 398 { 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 }, 399 }, 400 { 401 { 1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128 }, 402 { 190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128 }, 403 { 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }, 404 }, 405 { 406 { 1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 }, 407 { 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 }, 408 { 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 }, 409 }, 410 { 411 { 1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 }, 412 { 213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128 }, 413 { 55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128 }, 414 }, 415 { 416 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }, 417 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }, 418 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }, 419 }, 420 }, 421 { 422 { 423 { 202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255 }, 424 { 126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128 }, 425 { 61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128 }, 426 }, 427 { 428 { 1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 }, 429 { 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 }, 430 { 39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128 }, 431 }, 432 { 433 { 1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128 }, 434 { 124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128 }, 435 { 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 }, 436 }, 437 { 438 { 1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 }, 439 { 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 }, 440 { 28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 }, 441 }, 442 { 443 { 1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128 }, 444 { 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 }, 445 { 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 }, 446 }, 447 { 448 { 1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 }, 449 { 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 }, 450 { 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 }, 451 }, 452 { 453 { 1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 }, 454 { 141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128 }, 455 { 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 }, 456 }, 457 { 458 { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }, 459 { 244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }, 460 { 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }, 461 }, 462 }, 463}; 464 465static const uint8_t vp8_token_update_probs[4][8][3][NUM_DCT_TOKENS-1] = 466{ 467 { 468 { 469 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 470 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 471 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 472 }, 473 { 474 { 176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 475 { 223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255 }, 476 { 249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 }, 477 }, 478 { 479 { 255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255 }, 480 { 234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 481 { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 482 }, 483 { 484 { 255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 485 { 239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 486 { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 487 }, 488 { 489 { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 490 { 251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 491 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 492 }, 493 { 494 { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 495 { 251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 496 { 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 497 }, 498 { 499 { 255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255 }, 500 { 250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255 }, 501 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 502 }, 503 { 504 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 505 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 506 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 507 }, 508 }, 509 { 510 { 511 { 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 512 { 225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255 }, 513 { 234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255 }, 514 }, 515 { 516 { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 517 { 223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 518 { 238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255 }, 519 }, 520 { 521 { 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 522 { 249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 523 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 524 }, 525 { 526 { 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 527 { 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 528 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 529 }, 530 { 531 { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 532 { 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 533 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 534 }, 535 { 536 { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 537 { 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 538 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 539 }, 540 { 541 { 255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 }, 542 { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 543 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 544 }, 545 { 546 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 547 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 548 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 549 }, 550 }, 551 { 552 { 553 { 186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255 }, 554 { 234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255 }, 555 { 251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255 }, 556 }, 557 { 558 { 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 559 { 236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 560 { 251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255 }, 561 }, 562 { 563 { 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 564 { 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 565 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 566 }, 567 { 568 { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 569 { 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 570 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 571 }, 572 { 573 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 574 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 575 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 576 }, 577 { 578 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 579 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 580 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 581 }, 582 { 583 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 584 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 585 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 586 }, 587 { 588 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 589 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 590 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 591 }, 592 }, 593 { 594 { 595 { 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 596 { 250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255 }, 597 { 248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255 }, 598 }, 599 { 600 { 255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 }, 601 { 246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 }, 602 { 252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255 }, 603 }, 604 { 605 { 255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255 }, 606 { 248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 }, 607 { 253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255 }, 608 }, 609 { 610 { 255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 611 { 245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 612 { 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 613 }, 614 { 615 { 255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255 }, 616 { 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 617 { 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 618 }, 619 { 620 { 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 621 { 249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 622 { 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 }, 623 }, 624 { 625 { 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255 }, 626 { 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 627 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 628 }, 629 { 630 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 631 { 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 632 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 633 }, 634 }, 635}; 636 637// fixme: copied from h264data.h 638static const uint8_t zigzag_scan[16]={ 639 0+0*4, 1+0*4, 0+1*4, 0+2*4, 640 1+1*4, 2+0*4, 3+0*4, 2+1*4, 641 1+2*4, 0+3*4, 1+3*4, 2+2*4, 642 3+1*4, 3+2*4, 2+3*4, 3+3*4, 643}; 644 645static const uint8_t vp8_dc_qlookup[VP8_MAX_QUANT+1] = 646{ 647 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17, 648 18, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28, 649 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43, 650 44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 651 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 652 75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 653 91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118, 654 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157, 655}; 656 657static const uint16_t vp8_ac_qlookup[VP8_MAX_QUANT+1] = 658{ 659 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 660 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 661 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 662 52, 53, 54, 55, 56, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 663 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 664 110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152, 665 155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 666 213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284, 667}; 668 669static const uint8_t vp8_mv_update_prob[2][19] = { 670 { 237, 671 246, 672 253, 253, 254, 254, 254, 254, 254, 673 254, 254, 254, 254, 254, 250, 250, 252, 254, 254 }, 674 { 231, 675 243, 676 245, 253, 254, 254, 254, 254, 254, 677 254, 254, 254, 254, 254, 251, 251, 254, 254, 254 } 678}; 679 680static const uint8_t vp8_mv_default_prob[2][19] = { 681 { 162, 682 128, 683 225, 146, 172, 147, 214, 39, 156, 684 128, 129, 132, 75, 145, 178, 206, 239, 254, 254 }, 685 { 164, 686 128, 687 204, 170, 119, 235, 140, 230, 228, 688 128, 130, 130, 74, 148, 180, 203, 236, 254, 254 } 689}; 690 691#endif /* AVCODEC_VP8DATA_H */ 692