1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/media/libvpx/vp9/common/vp9_common_data.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,146 @@ 1.4 +/* 1.5 + * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 1.6 + * 1.7 + * Use of this source code is governed by a BSD-style license 1.8 + * that can be found in the LICENSE file in the root of the source 1.9 + * tree. An additional intellectual property rights grant can be found 1.10 + * in the file PATENTS. All contributing project authors may 1.11 + * be found in the AUTHORS file in the root of the source tree. 1.12 + */ 1.13 + 1.14 + 1.15 +#include "vp9/common/vp9_blockd.h" 1.16 +#include "vp9/common/vp9_common_data.h" 1.17 + 1.18 +// Log 2 conversion lookup tables for block width and height 1.19 +const int b_width_log2_lookup[BLOCK_SIZES] = 1.20 + {0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4}; 1.21 +const int b_height_log2_lookup[BLOCK_SIZES] = 1.22 + {0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4}; 1.23 +const int num_4x4_blocks_wide_lookup[BLOCK_SIZES] = 1.24 + {1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16}; 1.25 +const int num_4x4_blocks_high_lookup[BLOCK_SIZES] = 1.26 + {1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16}; 1.27 +// Log 2 conversion lookup tables for modeinfo width and height 1.28 +const int mi_width_log2_lookup[BLOCK_SIZES] = 1.29 + {0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3}; 1.30 +const int num_8x8_blocks_wide_lookup[BLOCK_SIZES] = 1.31 + {1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8}; 1.32 +const int mi_height_log2_lookup[BLOCK_SIZES] = 1.33 + {0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3}; 1.34 +const int num_8x8_blocks_high_lookup[BLOCK_SIZES] = 1.35 + {1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8}; 1.36 + 1.37 +// MIN(3, MIN(b_width_log2(bsize), b_height_log2(bsize))) 1.38 +const int size_group_lookup[BLOCK_SIZES] = 1.39 + {0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3}; 1.40 + 1.41 +const int num_pels_log2_lookup[BLOCK_SIZES] = 1.42 + {4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12}; 1.43 + 1.44 + 1.45 +const PARTITION_TYPE partition_lookup[][BLOCK_SIZES] = { 1.46 + { // 4X4 1.47 + // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64 1.48 + PARTITION_NONE, PARTITION_INVALID, PARTITION_INVALID, 1.49 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 1.50 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 1.51 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 1.52 + PARTITION_INVALID 1.53 + }, { // 8X8 1.54 + // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64 1.55 + PARTITION_SPLIT, PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, 1.56 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 1.57 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 1.58 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID 1.59 + }, { // 16X16 1.60 + // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64 1.61 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, 1.62 + PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, PARTITION_INVALID, 1.63 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 1.64 + PARTITION_INVALID, PARTITION_INVALID 1.65 + }, { // 32X32 1.66 + // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64 1.67 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, 1.68 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_VERT, 1.69 + PARTITION_HORZ, PARTITION_NONE, PARTITION_INVALID, 1.70 + PARTITION_INVALID, PARTITION_INVALID 1.71 + }, { // 64X64 1.72 + // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64 1.73 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, 1.74 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, 1.75 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_VERT, PARTITION_HORZ, 1.76 + PARTITION_NONE 1.77 + } 1.78 +}; 1.79 + 1.80 +const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = { 1.81 + { // PARTITION_NONE 1.82 + BLOCK_4X4, BLOCK_4X8, BLOCK_8X4, 1.83 + BLOCK_8X8, BLOCK_8X16, BLOCK_16X8, 1.84 + BLOCK_16X16, BLOCK_16X32, BLOCK_32X16, 1.85 + BLOCK_32X32, BLOCK_32X64, BLOCK_64X32, 1.86 + BLOCK_64X64, 1.87 + }, { // PARTITION_HORZ 1.88 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, 1.89 + BLOCK_8X4, BLOCK_INVALID, BLOCK_INVALID, 1.90 + BLOCK_16X8, BLOCK_INVALID, BLOCK_INVALID, 1.91 + BLOCK_32X16, BLOCK_INVALID, BLOCK_INVALID, 1.92 + BLOCK_64X32, 1.93 + }, { // PARTITION_VERT 1.94 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, 1.95 + BLOCK_4X8, BLOCK_INVALID, BLOCK_INVALID, 1.96 + BLOCK_8X16, BLOCK_INVALID, BLOCK_INVALID, 1.97 + BLOCK_16X32, BLOCK_INVALID, BLOCK_INVALID, 1.98 + BLOCK_32X64, 1.99 + }, { // PARTITION_SPLIT 1.100 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, 1.101 + BLOCK_4X4, BLOCK_INVALID, BLOCK_INVALID, 1.102 + BLOCK_8X8, BLOCK_INVALID, BLOCK_INVALID, 1.103 + BLOCK_16X16, BLOCK_INVALID, BLOCK_INVALID, 1.104 + BLOCK_32X32, 1.105 + } 1.106 +}; 1.107 + 1.108 +const TX_SIZE max_txsize_lookup[BLOCK_SIZES] = { 1.109 + TX_4X4, TX_4X4, TX_4X4, 1.110 + TX_8X8, TX_8X8, TX_8X8, 1.111 + TX_16X16, TX_16X16, TX_16X16, 1.112 + TX_32X32, TX_32X32, TX_32X32, TX_32X32 1.113 +}; 1.114 +const TX_SIZE max_uv_txsize_lookup[BLOCK_SIZES] = { 1.115 + TX_4X4, TX_4X4, TX_4X4, 1.116 + TX_4X4, TX_4X4, TX_4X4, 1.117 + TX_8X8, TX_8X8, TX_8X8, 1.118 + TX_16X16, TX_16X16, TX_16X16, TX_32X32 1.119 +}; 1.120 + 1.121 +const TX_SIZE tx_mode_to_biggest_tx_size[TX_MODES] = { 1.122 + TX_4X4, // ONLY_4X4 1.123 + TX_8X8, // ALLOW_8X8 1.124 + TX_16X16, // ALLOW_16X16 1.125 + TX_32X32, // ALLOW_32X32 1.126 + TX_32X32, // TX_MODE_SELECT 1.127 +}; 1.128 + 1.129 + 1.130 + 1.131 +const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES][2][2] = { 1.132 +// ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 1.133 +// ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 1.134 + {{BLOCK_4X4, BLOCK_INVALID}, {BLOCK_INVALID, BLOCK_INVALID}}, 1.135 + {{BLOCK_4X8, BLOCK_4X4}, {BLOCK_INVALID, BLOCK_INVALID}}, 1.136 + {{BLOCK_8X4, BLOCK_INVALID}, {BLOCK_4X4, BLOCK_INVALID}}, 1.137 + {{BLOCK_8X8, BLOCK_8X4}, {BLOCK_4X8, BLOCK_4X4}}, 1.138 + {{BLOCK_8X16, BLOCK_8X8}, {BLOCK_INVALID, BLOCK_4X8}}, 1.139 + {{BLOCK_16X8, BLOCK_INVALID}, {BLOCK_8X8, BLOCK_8X4}}, 1.140 + {{BLOCK_16X16, BLOCK_16X8}, {BLOCK_8X16, BLOCK_8X8}}, 1.141 + {{BLOCK_16X32, BLOCK_16X16}, {BLOCK_INVALID, BLOCK_8X16}}, 1.142 + {{BLOCK_32X16, BLOCK_INVALID}, {BLOCK_16X16, BLOCK_16X8}}, 1.143 + {{BLOCK_32X32, BLOCK_32X16}, {BLOCK_16X32, BLOCK_16X16}}, 1.144 + {{BLOCK_32X64, BLOCK_32X32}, {BLOCK_INVALID, BLOCK_16X32}}, 1.145 + {{BLOCK_64X32, BLOCK_INVALID}, {BLOCK_32X32, BLOCK_32X16}}, 1.146 + {{BLOCK_64X64, BLOCK_64X32}, {BLOCK_32X64, BLOCK_32X32}}, 1.147 +}; 1.148 + 1.149 +