1*fb1b10abSAndroid Build Coastguard Worker /* 2*fb1b10abSAndroid Build Coastguard Worker * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker * 4*fb1b10abSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker */ 10*fb1b10abSAndroid Build Coastguard Worker 11*fb1b10abSAndroid Build Coastguard Worker #include "vp9/common/vp9_common_data.h" 12*fb1b10abSAndroid Build Coastguard Worker #include "vpx_dsp/vpx_dsp_common.h" 13*fb1b10abSAndroid Build Coastguard Worker 14*fb1b10abSAndroid Build Coastguard Worker // Log 2 conversion lookup tables for block width and height 15*fb1b10abSAndroid Build Coastguard Worker const uint8_t b_width_log2_lookup[BLOCK_SIZES] = { 0, 0, 1, 1, 1, 2, 2, 16*fb1b10abSAndroid Build Coastguard Worker 2, 3, 3, 3, 4, 4 }; 17*fb1b10abSAndroid Build Coastguard Worker const uint8_t b_height_log2_lookup[BLOCK_SIZES] = { 0, 1, 0, 1, 2, 1, 2, 18*fb1b10abSAndroid Build Coastguard Worker 3, 2, 3, 4, 3, 4 }; 19*fb1b10abSAndroid Build Coastguard Worker const uint8_t num_4x4_blocks_wide_lookup[BLOCK_SIZES] = { 1, 1, 2, 2, 2, 4, 4, 20*fb1b10abSAndroid Build Coastguard Worker 4, 8, 8, 8, 16, 16 }; 21*fb1b10abSAndroid Build Coastguard Worker const uint8_t num_4x4_blocks_high_lookup[BLOCK_SIZES] = { 1, 2, 1, 2, 4, 2, 4, 22*fb1b10abSAndroid Build Coastguard Worker 8, 4, 8, 16, 8, 16 }; 23*fb1b10abSAndroid Build Coastguard Worker // Log 2 conversion lookup tables for modeinfo width and height 24*fb1b10abSAndroid Build Coastguard Worker const uint8_t mi_width_log2_lookup[BLOCK_SIZES] = { 0, 0, 0, 0, 0, 1, 1, 25*fb1b10abSAndroid Build Coastguard Worker 1, 2, 2, 2, 3, 3 }; 26*fb1b10abSAndroid Build Coastguard Worker const uint8_t num_8x8_blocks_wide_lookup[BLOCK_SIZES] = { 1, 1, 1, 1, 1, 2, 2, 27*fb1b10abSAndroid Build Coastguard Worker 2, 4, 4, 4, 8, 8 }; 28*fb1b10abSAndroid Build Coastguard Worker const uint8_t num_8x8_blocks_high_lookup[BLOCK_SIZES] = { 1, 1, 1, 1, 2, 1, 2, 29*fb1b10abSAndroid Build Coastguard Worker 4, 2, 4, 8, 4, 8 }; 30*fb1b10abSAndroid Build Coastguard Worker 31*fb1b10abSAndroid Build Coastguard Worker // VPXMIN(3, VPXMIN(b_width_log2_lookup(bsize), b_height_log2_lookup(bsize))) 32*fb1b10abSAndroid Build Coastguard Worker const uint8_t size_group_lookup[BLOCK_SIZES] = { 0, 0, 0, 1, 1, 1, 2, 33*fb1b10abSAndroid Build Coastguard Worker 2, 2, 3, 3, 3, 3 }; 34*fb1b10abSAndroid Build Coastguard Worker 35*fb1b10abSAndroid Build Coastguard Worker const uint8_t num_pels_log2_lookup[BLOCK_SIZES] = { 4, 5, 5, 6, 7, 7, 8, 36*fb1b10abSAndroid Build Coastguard Worker 9, 9, 10, 11, 11, 12 }; 37*fb1b10abSAndroid Build Coastguard Worker 38*fb1b10abSAndroid Build Coastguard Worker const PARTITION_TYPE partition_lookup[][BLOCK_SIZES] = { 39*fb1b10abSAndroid Build Coastguard Worker { // 4X4 40*fb1b10abSAndroid Build Coastguard Worker // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64 41*fb1b10abSAndroid Build Coastguard Worker PARTITION_NONE, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 42*fb1b10abSAndroid Build Coastguard Worker PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 43*fb1b10abSAndroid Build Coastguard Worker PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 44*fb1b10abSAndroid Build Coastguard Worker PARTITION_INVALID }, 45*fb1b10abSAndroid Build Coastguard Worker { // 8X8 46*fb1b10abSAndroid Build Coastguard Worker // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64 47*fb1b10abSAndroid Build Coastguard Worker PARTITION_SPLIT, PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, 48*fb1b10abSAndroid Build Coastguard Worker PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 49*fb1b10abSAndroid Build Coastguard Worker PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 50*fb1b10abSAndroid Build Coastguard Worker PARTITION_INVALID }, 51*fb1b10abSAndroid Build Coastguard Worker { // 16X16 52*fb1b10abSAndroid Build Coastguard Worker // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64 53*fb1b10abSAndroid Build Coastguard Worker PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, 54*fb1b10abSAndroid Build Coastguard Worker PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, PARTITION_INVALID, 55*fb1b10abSAndroid Build Coastguard Worker PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, 56*fb1b10abSAndroid Build Coastguard Worker PARTITION_INVALID }, 57*fb1b10abSAndroid Build Coastguard Worker { // 32X32 58*fb1b10abSAndroid Build Coastguard Worker // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64 59*fb1b10abSAndroid Build Coastguard Worker PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, 60*fb1b10abSAndroid Build Coastguard Worker PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_VERT, 61*fb1b10abSAndroid Build Coastguard Worker PARTITION_HORZ, PARTITION_NONE, PARTITION_INVALID, PARTITION_INVALID, 62*fb1b10abSAndroid Build Coastguard Worker PARTITION_INVALID }, 63*fb1b10abSAndroid Build Coastguard Worker { // 64X64 64*fb1b10abSAndroid Build Coastguard Worker // 4X4, 4X8,8X4,8X8,8X16,16X8,16X16,16X32,32X16,32X32,32X64,64X32,64X64 65*fb1b10abSAndroid Build Coastguard Worker PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, 66*fb1b10abSAndroid Build Coastguard Worker PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, 67*fb1b10abSAndroid Build Coastguard Worker PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_VERT, PARTITION_HORZ, 68*fb1b10abSAndroid Build Coastguard Worker PARTITION_NONE } 69*fb1b10abSAndroid Build Coastguard Worker }; 70*fb1b10abSAndroid Build Coastguard Worker 71*fb1b10abSAndroid Build Coastguard Worker const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = { 72*fb1b10abSAndroid Build Coastguard Worker { // PARTITION_NONE 73*fb1b10abSAndroid Build Coastguard Worker BLOCK_4X4, BLOCK_4X8, BLOCK_8X4, BLOCK_8X8, BLOCK_8X16, BLOCK_16X8, 74*fb1b10abSAndroid Build Coastguard Worker BLOCK_16X16, BLOCK_16X32, BLOCK_32X16, BLOCK_32X32, BLOCK_32X64, 75*fb1b10abSAndroid Build Coastguard Worker BLOCK_64X32, BLOCK_64X64 }, 76*fb1b10abSAndroid Build Coastguard Worker { // PARTITION_HORZ 77*fb1b10abSAndroid Build Coastguard Worker BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X4, BLOCK_INVALID, 78*fb1b10abSAndroid Build Coastguard Worker BLOCK_INVALID, BLOCK_16X8, BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X16, 79*fb1b10abSAndroid Build Coastguard Worker BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X32 }, 80*fb1b10abSAndroid Build Coastguard Worker { // PARTITION_VERT 81*fb1b10abSAndroid Build Coastguard Worker BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X8, BLOCK_INVALID, 82*fb1b10abSAndroid Build Coastguard Worker BLOCK_INVALID, BLOCK_8X16, BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X32, 83*fb1b10abSAndroid Build Coastguard Worker BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X64 }, 84*fb1b10abSAndroid Build Coastguard Worker { // PARTITION_SPLIT 85*fb1b10abSAndroid Build Coastguard Worker BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X4, BLOCK_INVALID, 86*fb1b10abSAndroid Build Coastguard Worker BLOCK_INVALID, BLOCK_8X8, BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X16, 87*fb1b10abSAndroid Build Coastguard Worker BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X32 } 88*fb1b10abSAndroid Build Coastguard Worker }; 89*fb1b10abSAndroid Build Coastguard Worker 90*fb1b10abSAndroid Build Coastguard Worker const TX_SIZE max_txsize_lookup[BLOCK_SIZES] = { 91*fb1b10abSAndroid Build Coastguard Worker TX_4X4, TX_4X4, TX_4X4, TX_8X8, TX_8X8, TX_8X8, TX_16X16, 92*fb1b10abSAndroid Build Coastguard Worker TX_16X16, TX_16X16, TX_32X32, TX_32X32, TX_32X32, TX_32X32 93*fb1b10abSAndroid Build Coastguard Worker }; 94*fb1b10abSAndroid Build Coastguard Worker 95*fb1b10abSAndroid Build Coastguard Worker const BLOCK_SIZE txsize_to_bsize[TX_SIZES] = { 96*fb1b10abSAndroid Build Coastguard Worker BLOCK_4X4, // TX_4X4 97*fb1b10abSAndroid Build Coastguard Worker BLOCK_8X8, // TX_8X8 98*fb1b10abSAndroid Build Coastguard Worker BLOCK_16X16, // TX_16X16 99*fb1b10abSAndroid Build Coastguard Worker BLOCK_32X32, // TX_32X32 100*fb1b10abSAndroid Build Coastguard Worker }; 101*fb1b10abSAndroid Build Coastguard Worker 102*fb1b10abSAndroid Build Coastguard Worker const TX_SIZE tx_mode_to_biggest_tx_size[TX_MODES] = { 103*fb1b10abSAndroid Build Coastguard Worker TX_4X4, // ONLY_4X4 104*fb1b10abSAndroid Build Coastguard Worker TX_8X8, // ALLOW_8X8 105*fb1b10abSAndroid Build Coastguard Worker TX_16X16, // ALLOW_16X16 106*fb1b10abSAndroid Build Coastguard Worker TX_32X32, // ALLOW_32X32 107*fb1b10abSAndroid Build Coastguard Worker TX_32X32, // TX_MODE_SELECT 108*fb1b10abSAndroid Build Coastguard Worker }; 109*fb1b10abSAndroid Build Coastguard Worker 110*fb1b10abSAndroid Build Coastguard Worker const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES][2][2] = { 111*fb1b10abSAndroid Build Coastguard Worker // ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 112*fb1b10abSAndroid Build Coastguard Worker // ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 113*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_4X4, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, 114*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_INVALID } }, 115*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_8X4, BLOCK_INVALID }, { BLOCK_4X4, BLOCK_INVALID } }, 116*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_8X8, BLOCK_8X4 }, { BLOCK_4X8, BLOCK_4X4 } }, 117*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_8X16, BLOCK_8X8 }, { BLOCK_INVALID, BLOCK_4X8 } }, 118*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_16X8, BLOCK_INVALID }, { BLOCK_8X8, BLOCK_8X4 } }, 119*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_16X16, BLOCK_16X8 }, { BLOCK_8X16, BLOCK_8X8 } }, 120*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_16X32, BLOCK_16X16 }, { BLOCK_INVALID, BLOCK_8X16 } }, 121*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_32X16, BLOCK_INVALID }, { BLOCK_16X16, BLOCK_16X8 } }, 122*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_32X32, BLOCK_32X16 }, { BLOCK_16X32, BLOCK_16X16 } }, 123*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_32X64, BLOCK_32X32 }, { BLOCK_INVALID, BLOCK_16X32 } }, 124*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_64X32, BLOCK_INVALID }, { BLOCK_32X32, BLOCK_32X16 } }, 125*fb1b10abSAndroid Build Coastguard Worker { { BLOCK_64X64, BLOCK_64X32 }, { BLOCK_32X64, BLOCK_32X32 } }, 126*fb1b10abSAndroid Build Coastguard Worker }; 127*fb1b10abSAndroid Build Coastguard Worker 128*fb1b10abSAndroid Build Coastguard Worker const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES][2][2] = { 129*fb1b10abSAndroid Build Coastguard Worker // ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 130*fb1b10abSAndroid Build Coastguard Worker // ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 131*fb1b10abSAndroid Build Coastguard Worker { 132*fb1b10abSAndroid Build Coastguard Worker // BLOCK_4X4 133*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 134*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 135*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 136*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 137*fb1b10abSAndroid Build Coastguard Worker }, 138*fb1b10abSAndroid Build Coastguard Worker { 139*fb1b10abSAndroid Build Coastguard Worker // BLOCK_4X8 140*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 141*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 142*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 143*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 144*fb1b10abSAndroid Build Coastguard Worker }, 145*fb1b10abSAndroid Build Coastguard Worker { 146*fb1b10abSAndroid Build Coastguard Worker // BLOCK_8X4 147*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 148*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 149*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 150*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 151*fb1b10abSAndroid Build Coastguard Worker }, 152*fb1b10abSAndroid Build Coastguard Worker { 153*fb1b10abSAndroid Build Coastguard Worker // BLOCK_8X8 154*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 155*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, 156*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, 157*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, 158*fb1b10abSAndroid Build Coastguard Worker }, 159*fb1b10abSAndroid Build Coastguard Worker { 160*fb1b10abSAndroid Build Coastguard Worker // BLOCK_8X16 161*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 162*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, 163*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, 164*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, 165*fb1b10abSAndroid Build Coastguard Worker }, 166*fb1b10abSAndroid Build Coastguard Worker { 167*fb1b10abSAndroid Build Coastguard Worker // BLOCK_16X8 168*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 169*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, 170*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_4X4 }, { TX_8X8, TX_8X8 } }, 171*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_4X4 }, { TX_8X8, TX_8X8 } }, 172*fb1b10abSAndroid Build Coastguard Worker }, 173*fb1b10abSAndroid Build Coastguard Worker { 174*fb1b10abSAndroid Build Coastguard Worker // BLOCK_16X16 175*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 176*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, 177*fb1b10abSAndroid Build Coastguard Worker { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, 178*fb1b10abSAndroid Build Coastguard Worker { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, 179*fb1b10abSAndroid Build Coastguard Worker }, 180*fb1b10abSAndroid Build Coastguard Worker { 181*fb1b10abSAndroid Build Coastguard Worker // BLOCK_16X32 182*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 183*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, 184*fb1b10abSAndroid Build Coastguard Worker { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, 185*fb1b10abSAndroid Build Coastguard Worker { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, 186*fb1b10abSAndroid Build Coastguard Worker }, 187*fb1b10abSAndroid Build Coastguard Worker { 188*fb1b10abSAndroid Build Coastguard Worker // BLOCK_32X16 189*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 190*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, 191*fb1b10abSAndroid Build Coastguard Worker { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, 192*fb1b10abSAndroid Build Coastguard Worker { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, 193*fb1b10abSAndroid Build Coastguard Worker }, 194*fb1b10abSAndroid Build Coastguard Worker { 195*fb1b10abSAndroid Build Coastguard Worker // BLOCK_32X32 196*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 197*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, 198*fb1b10abSAndroid Build Coastguard Worker { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, 199*fb1b10abSAndroid Build Coastguard Worker { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } }, 200*fb1b10abSAndroid Build Coastguard Worker }, 201*fb1b10abSAndroid Build Coastguard Worker { 202*fb1b10abSAndroid Build Coastguard Worker // BLOCK_32X64 203*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 204*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, 205*fb1b10abSAndroid Build Coastguard Worker { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, 206*fb1b10abSAndroid Build Coastguard Worker { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } }, 207*fb1b10abSAndroid Build Coastguard Worker }, 208*fb1b10abSAndroid Build Coastguard Worker { 209*fb1b10abSAndroid Build Coastguard Worker // BLOCK_64X32 210*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 211*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, 212*fb1b10abSAndroid Build Coastguard Worker { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, 213*fb1b10abSAndroid Build Coastguard Worker { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, 214*fb1b10abSAndroid Build Coastguard Worker }, 215*fb1b10abSAndroid Build Coastguard Worker { 216*fb1b10abSAndroid Build Coastguard Worker // BLOCK_64X64 217*fb1b10abSAndroid Build Coastguard Worker { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, 218*fb1b10abSAndroid Build Coastguard Worker { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, 219*fb1b10abSAndroid Build Coastguard Worker { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, 220*fb1b10abSAndroid Build Coastguard Worker { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, 221*fb1b10abSAndroid Build Coastguard Worker }, 222*fb1b10abSAndroid Build Coastguard Worker }; 223*fb1b10abSAndroid Build Coastguard Worker 224*fb1b10abSAndroid Build Coastguard Worker // Generates 4 bit field in which each bit set to 1 represents 225*fb1b10abSAndroid Build Coastguard Worker // a blocksize partition 1111 means we split 64x64, 32x32, 16x16 226*fb1b10abSAndroid Build Coastguard Worker // and 8x8. 1000 means we just split the 64x64 to 32x32 227*fb1b10abSAndroid Build Coastguard Worker const struct { 228*fb1b10abSAndroid Build Coastguard Worker PARTITION_CONTEXT above; 229*fb1b10abSAndroid Build Coastguard Worker PARTITION_CONTEXT left; 230*fb1b10abSAndroid Build Coastguard Worker } partition_context_lookup[BLOCK_SIZES] = { 231*fb1b10abSAndroid Build Coastguard Worker { 15, 15 }, // 4X4 - {0b1111, 0b1111} 232*fb1b10abSAndroid Build Coastguard Worker { 15, 14 }, // 4X8 - {0b1111, 0b1110} 233*fb1b10abSAndroid Build Coastguard Worker { 14, 15 }, // 8X4 - {0b1110, 0b1111} 234*fb1b10abSAndroid Build Coastguard Worker { 14, 14 }, // 8X8 - {0b1110, 0b1110} 235*fb1b10abSAndroid Build Coastguard Worker { 14, 12 }, // 8X16 - {0b1110, 0b1100} 236*fb1b10abSAndroid Build Coastguard Worker { 12, 14 }, // 16X8 - {0b1100, 0b1110} 237*fb1b10abSAndroid Build Coastguard Worker { 12, 12 }, // 16X16 - {0b1100, 0b1100} 238*fb1b10abSAndroid Build Coastguard Worker { 12, 8 }, // 16X32 - {0b1100, 0b1000} 239*fb1b10abSAndroid Build Coastguard Worker { 8, 12 }, // 32X16 - {0b1000, 0b1100} 240*fb1b10abSAndroid Build Coastguard Worker { 8, 8 }, // 32X32 - {0b1000, 0b1000} 241*fb1b10abSAndroid Build Coastguard Worker { 8, 0 }, // 32X64 - {0b1000, 0b0000} 242*fb1b10abSAndroid Build Coastguard Worker { 0, 8 }, // 64X32 - {0b0000, 0b1000} 243*fb1b10abSAndroid Build Coastguard Worker { 0, 0 }, // 64X64 - {0b0000, 0b0000} 244*fb1b10abSAndroid Build Coastguard Worker }; 245*fb1b10abSAndroid Build Coastguard Worker 246*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_BETTER_HW_COMPATIBILITY && CONFIG_VP9_HIGHBITDEPTH 247*fb1b10abSAndroid Build Coastguard Worker const uint8_t need_top_left[INTRA_MODES] = { 248*fb1b10abSAndroid Build Coastguard Worker 0, // DC_PRED 249*fb1b10abSAndroid Build Coastguard Worker 0, // V_PRED 250*fb1b10abSAndroid Build Coastguard Worker 0, // H_PRED 251*fb1b10abSAndroid Build Coastguard Worker 0, // D45_PRED 252*fb1b10abSAndroid Build Coastguard Worker 1, // D135_PRED 253*fb1b10abSAndroid Build Coastguard Worker 1, // D117_PRED 254*fb1b10abSAndroid Build Coastguard Worker 1, // D153_PRED 255*fb1b10abSAndroid Build Coastguard Worker 0, // D207_PRED 256*fb1b10abSAndroid Build Coastguard Worker 0, // D63_PRED 257*fb1b10abSAndroid Build Coastguard Worker 1, // TM_PRED 258*fb1b10abSAndroid Build Coastguard Worker }; 259*fb1b10abSAndroid Build Coastguard Worker #endif // CONFIG_BETTER_HW_COMPATIBILITY && CONFIG_VP9_HIGHBITDEPTH 260