From 68569dee1416593955c1570d638b3d9250b33012 Mon Sep 17 00:00:00 2001 From: trav90 Date: Mon, 15 Oct 2018 21:45:30 -0500 Subject: Import aom library This is the reference implementation for the Alliance for Open Media's av1 video code. The commit used was 4d668d7feb1f8abd809d1bca0418570a7f142a36. --- third_party/aom/av1/common/common_data.h | 1405 ++++++++++++++++++++++++++++++ 1 file changed, 1405 insertions(+) create mode 100644 third_party/aom/av1/common/common_data.h (limited to 'third_party/aom/av1/common/common_data.h') diff --git a/third_party/aom/av1/common/common_data.h b/third_party/aom/av1/common/common_data.h new file mode 100644 index 000000000..415d5cf73 --- /dev/null +++ b/third_party/aom/av1/common/common_data.h @@ -0,0 +1,1405 @@ +/* + * Copyright (c) 2016, Alliance for Open Media. All rights reserved + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License + * was not distributed with this source code in the LICENSE file, you can + * obtain it at www.aomedia.org/license/software. If the Alliance for Open + * Media Patent License 1.0 was not distributed with this source code in the + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ + +#ifndef AV1_COMMON_COMMON_DATA_H_ +#define AV1_COMMON_COMMON_DATA_H_ + +#include "av1/common/enums.h" +#include "aom/aom_integer.h" +#include "aom_dsp/aom_dsp_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if CONFIG_EXT_PARTITION +#define IF_EXT_PARTITION(...) __VA_ARGS__ +#else +#define IF_EXT_PARTITION(...) +#endif + +// Log 2 conversion lookup tables for block width and height +static const uint8_t b_width_log2_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 0, 0, 0, +#endif + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5) +}; +static const uint8_t b_height_log2_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 0, 0, 0, +#endif + 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5) +}; +// Log 2 conversion lookup tables for modeinfo width and height +static const uint8_t mi_width_log2_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5) +#else + 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, IF_EXT_PARTITION(3, 4, 4) +#endif +}; +static const uint8_t mi_height_log2_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5) +#else + 0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, IF_EXT_PARTITION(4, 3, 4) +#endif +}; + +static const uint8_t mi_size_wide[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, IF_EXT_PARTITION(16, 32, 32) +#else + 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) +#endif +}; +static const uint8_t mi_size_high[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, IF_EXT_PARTITION(32, 16, 32) +#else + 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) +#endif +}; + +// Width/height lookup tables in units of various block sizes +static const uint8_t block_size_wide[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 2, 2, 4, +#endif + 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 32, 64, 64, IF_EXT_PARTITION(64, 128, 128) +}; + +static const uint8_t block_size_high[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 2, 4, 2, +#endif + 4, 8, 4, 8, 16, 8, 16, 32, 16, 32, 64, 32, 64, IF_EXT_PARTITION(128, 64, 128) +}; + +static const uint8_t num_4x4_blocks_wide_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 1, 1, 1, +#endif + 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, IF_EXT_PARTITION(16, 32, 32) +}; +static const uint8_t num_4x4_blocks_high_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 1, 1, 1, +#endif + 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, IF_EXT_PARTITION(32, 16, 32) +}; +static const uint8_t num_8x8_blocks_wide_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 1, 1, 1, +#endif + 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) +}; +static const uint8_t num_8x8_blocks_high_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 1, 1, 1, +#endif + 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) +}; +static const uint8_t num_16x16_blocks_wide_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 1, 1, 1, +#endif + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, IF_EXT_PARTITION(4, 8, 8) +}; +static const uint8_t num_16x16_blocks_high_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 1, 1, 1, +#endif + 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, IF_EXT_PARTITION(8, 4, 8) +}; + +// AOMMIN(3, AOMMIN(b_width_log2(bsize), b_height_log2(bsize))) +static const uint8_t size_group_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 0, 0, 0, +#endif + 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, IF_EXT_PARTITION(3, 3, 3) +}; + +static const uint8_t num_pels_log2_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + 2, 3, 3, +#endif + 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12, IF_EXT_PARTITION(13, 13, 14) +}; + +/* clang-format off */ +static const PARTITION_TYPE + partition_lookup[MAX_SB_SIZE_LOG2 - 1][BLOCK_SIZES] = { + { // 4X4 -> +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#endif + // 4X4 + PARTITION_NONE, + // 4X8, 8X4, 8X8 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 8X16, 16X8, 16X16 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 16X32, 32X16, 32X32 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 32X64, 64X32, 64X64 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#if CONFIG_EXT_PARTITION + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#endif // CONFIG_EXT_PARTITION + }, { // 8X8 -> +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#endif + // 4X4 + PARTITION_SPLIT, + // 4X8, 8X4, 8X8 + PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, + // 8X16, 16X8, 16X16 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 16X32, 32X16, 32X32 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 32X64, 64X32, 64X64 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#endif // CONFIG_EXT_PARTITION + }, { // 16X16 -> +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#endif + // 4X4 + PARTITION_SPLIT, + // 4X8, 8X4, 8X8 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 8X16, 16X8, 16X16 + PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, + // 16X32, 32X16, 32X32 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 32X64, 64X32, 64X64 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#endif // CONFIG_EXT_PARTITION + }, { // 32X32 -> +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#endif + // 4X4 + PARTITION_SPLIT, + // 4X8, 8X4, 8X8 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 8X16, 16X8, 16X16 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 16X32, 32X16, 32X32 + PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, + // 32X64, 64X32, 64X64 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#endif // CONFIG_EXT_PARTITION + }, { // 64X64 -> +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#endif + // 4X4 + PARTITION_SPLIT, + // 4X8, 8X4, 8X8 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 8X16, 16X8, 16X16 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 16X32, 32X16, 32X32 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 32X64, 64X32, 64X64 + PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + }, { // 128x128 -> +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#endif + // 4X4 + PARTITION_SPLIT, + // 4X8, 8X4, 8X8 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 8X16, 16X8, 16X16 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 16X32, 32X16, 32X32 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 32X64, 64X32, 64X64 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 64x128, 128x64, 128x128 + PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, +#endif // CONFIG_EXT_PARTITION + } +}; + +#if CONFIG_EXT_PARTITION_TYPES +static const BLOCK_SIZE subsize_lookup[EXT_PARTITION_TYPES][BLOCK_SIZES] = +#else +static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = +#endif // CONFIG_EXT_PARTITION_TYPES +{ + { // PARTITION_NONE +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + BLOCK_2X2, BLOCK_2X4, BLOCK_4X2, +#endif + // 4X4 + BLOCK_4X4, + // 4X8, 8X4, 8X8 + BLOCK_4X8, BLOCK_8X4, BLOCK_8X8, + // 8X16, 16X8, 16X16 + BLOCK_8X16, BLOCK_16X8, BLOCK_16X16, + // 16X32, 32X16, 32X32 + BLOCK_16X32, BLOCK_32X16, BLOCK_32X32, + // 32X64, 64X32, 64X64 + BLOCK_32X64, BLOCK_64X32, BLOCK_64X64, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + BLOCK_64X128, BLOCK_128X64, BLOCK_128X128, +#endif // CONFIG_EXT_PARTITION + }, { // PARTITION_HORZ +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 4X4 + BLOCK_4X2, +#else + // 4X4 + BLOCK_INVALID, +#endif + // 4X8, 8X4, 8X8 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X4, + // 8X16, 16X8, 16X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X8, + // 16X32, 32X16, 32X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X16, + // 32X64, 64X32, 64X64 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X32, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64, +#endif // CONFIG_EXT_PARTITION + }, { // PARTITION_VERT +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 4X4 + BLOCK_2X4, +#else + // 4X4 + BLOCK_INVALID, +#endif + // 4X8, 8X4, 8X8 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X8, + // 8X16, 16X8, 16X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X16, + // 16X32, 32X16, 32X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X32, + // 32X64, 64X32, 64X64 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X64, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128, +#endif // CONFIG_EXT_PARTITION + }, { // PARTITION_SPLIT +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#endif + // 4X4 + BLOCK_INVALID, + // 4X8, 8X4, 8X8 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X4, + // 8X16, 16X8, 16X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X8, + // 16X32, 32X16, 32X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X16, + // 32X64, 64X32, 64X64 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X32, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X64, +#endif // CONFIG_EXT_PARTITION +#if CONFIG_EXT_PARTITION_TYPES + }, { // PARTITION_HORZ_A +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#endif + // 4X4 + BLOCK_INVALID, + // 4X8, 8X4, 8X8 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X4, + // 8X16, 16X8, 16X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X8, + // 16X32, 32X16, 32X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X16, + // 32X64, 64X32, 64X64 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X32, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64, +#endif // CONFIG_EXT_PARTITION + }, { // PARTITION_HORZ_B +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#endif + // 4X4 + BLOCK_INVALID, + // 4X8, 8X4, 8X8 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X4, + // 8X16, 16X8, 16X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X8, + // 16X32, 32X16, 32X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X16, + // 32X64, 64X32, 64X64 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X32, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64, +#endif // CONFIG_EXT_PARTITION + }, { // PARTITION_VERT_A +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#endif + // 4X4 + BLOCK_INVALID, + // 4X8, 8X4, 8X8 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X8, + // 8X16, 16X8, 16X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X16, + // 16X32, 32X16, 32X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X32, + // 32X64, 64X32, 64X64 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X64, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128, +#endif // CONFIG_EXT_PARTITION + }, { // PARTITION_VERT_B +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#endif + // 4X4 + BLOCK_INVALID, + // 4X8, 8X4, 8X8 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X8, + // 8X16, 16X8, 16X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X16, + // 16X32, 32X16, 32X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X32, + // 32X64, 64X32, 64X64 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X64, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128, +#endif // CONFIG_EXT_PARTITION +#endif // CONFIG_EXT_PARTITION_TYPES + } +}; + +static const TX_SIZE max_txsize_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + TX_2X2, TX_2X2, TX_2X2, +#endif + // 4X4 + TX_4X4, + // 4X8, 8X4, 8X8 + TX_4X4, TX_4X4, TX_8X8, + // 8X16, 16X8, 16X16 + TX_8X8, TX_8X8, TX_16X16, + // 16X32, 32X16, 32X32 + TX_16X16, TX_16X16, TX_32X32, + // 32X64, 64X32, + TX_32X32, TX_32X32, +#if CONFIG_TX64X64 + // 64X64 + TX_64X64, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + TX_64X64, TX_64X64, TX_64X64, +#endif // CONFIG_EXT_PARTITION +#else + // 64X64 + TX_32X32, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + TX_32X32, TX_32X32, TX_32X32, +#endif // CONFIG_EXT_PARTITION +#endif // CONFIG_TX64X64 +}; + +#if CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) +static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + TX_2X2, TX_2X2, TX_2X2, +#endif // CONFIG_CB4X4 + // 4X4 + TX_4X4, + // 4X8, 8X4, 8X8 + TX_4X8, TX_8X4, TX_8X8, + // 8X16, 16X8, 16X16 + TX_8X16, TX_16X8, TX_16X16, + // 16X32, 32X16, 32X32 + TX_16X32, TX_32X16, TX_32X32, + // 32X64, 64X32, + TX_32X32, TX_32X32, +#if CONFIG_TX64X64 + // 64X64 + TX_64X64, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + TX_64X64, TX_64X64, TX_64X64, +#endif // CONFIG_EXT_PARTITION +#else + // 64X64 + TX_32X32, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + TX_32X32, TX_32X32, TX_32X32, +#endif // CONFIG_EXT_PARTITION +#endif // CONFIG_TX64X64 +}; +#else +#define max_txsize_rect_lookup max_txsize_lookup +#endif // CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) + +#if CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) +// Same as "max_txsize_lookup[bsize] - TX_8X8", except for rectangular +// block which may use a rectangular transform, in which case it is +// "(max_txsize_lookup[bsize] + 1) - TX_8X8", invalid for bsize < 8X8 +static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + INT32_MIN, INT32_MIN, INT32_MIN, + // 4X4, + INT32_MIN, + // 4X8, 8X4, 8X8, + TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, +#else + // 4X4 + INT32_MIN, + // 4X8, 8X4, 8X8 + INT32_MIN, INT32_MIN, TX_8X8 - TX_8X8, +#endif // CONFIG_CB4X4 + // 8X16, 16X8, 16X16 + TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, + // 16X32, 32X16, 32X32 + TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, + // 32X64, 64X32, + TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, +#if CONFIG_TX64X64 + // 64X64 + TX_64X64 - TX_8X8, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, +#endif // CONFIG_EXT_PARTITION +#else + // 64X64 + TX_32X32 - TX_8X8, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, +#endif // CONFIG_EXT_PARTITION +#endif // CONFIG_TX64X64 +}; +#else +// Same as "max_txsize_lookup[bsize] - TX_8X8", invalid for bsize < 8X8 +static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + INT32_MIN, INT32_MIN, INT32_MIN, +#endif + // 4X4 + INT32_MIN, + // 4X8, 8X4, 8X8 + INT32_MIN, INT32_MIN, TX_8X8 - TX_8X8, + // 8X16, 16X8, 16X16 + TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_16X16 - TX_8X8, + // 16X32, 32X16, 32X32 + TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, TX_32X32 - TX_8X8, + // 32X64, 64X32, + TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, +#if CONFIG_TX64X64 + // 64X64 + TX_64X64 - TX_8X8, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, +#endif // CONFIG_EXT_PARTITION +#else + // 64X64 + TX_32X32 - TX_8X8, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, +#endif // CONFIG_EXT_PARTITION +#endif // CONFIG_TX64X64 +}; +#endif // CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) + +#define inter_tx_size_cat_lookup intra_tx_size_cat_lookup + +/* clang-format on */ + +static const TX_SIZE sub_tx_size_map[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + TX_2X2, // TX_2X2 +#endif + TX_4X4, // TX_4X4 + TX_4X4, // TX_8X8 + TX_8X8, // TX_16X16 + TX_16X16, // TX_32X32 +#if CONFIG_TX64X64 + TX_32X32, // TX_64X64 +#endif // CONFIG_TX64X64 + TX_4X4, // TX_4X8 + TX_4X4, // TX_8X4 + TX_8X8, // TX_8X16 + TX_8X8, // TX_16X8 + TX_16X16, // TX_16X32 + TX_16X16, // TX_32X16 + TX_4X4, // TX_4X16 + TX_4X4, // TX_16X4 + TX_8X8, // TX_8X32 + TX_8X8, // TX_32X8 +}; + +static const TX_SIZE txsize_horz_map[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + TX_2X2, // TX_2X2 +#endif + TX_4X4, // TX_4X4 + TX_8X8, // TX_8X8 + TX_16X16, // TX_16X16 + TX_32X32, // TX_32X32 +#if CONFIG_TX64X64 + TX_64X64, // TX_64X64 +#endif // CONFIG_TX64X64 + TX_4X4, // TX_4X8 + TX_8X8, // TX_8X4 + TX_8X8, // TX_8X16 + TX_16X16, // TX_16X8 + TX_16X16, // TX_16X32 + TX_32X32, // TX_32X16 + TX_4X4, // TX_4X16 + TX_16X16, // TX_16X4 + TX_8X8, // TX_8X32 + TX_32X32, // TX_32X8 +}; + +static const TX_SIZE txsize_vert_map[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + TX_2X2, // TX_2X2 +#endif + TX_4X4, // TX_4X4 + TX_8X8, // TX_8X8 + TX_16X16, // TX_16X16 + TX_32X32, // TX_32X32 +#if CONFIG_TX64X64 + TX_64X64, // TX_64X64 +#endif // CONFIG_TX64X64 + TX_8X8, // TX_4X8 + TX_4X4, // TX_8X4 + TX_16X16, // TX_8X16 + TX_8X8, // TX_16X8 + TX_32X32, // TX_16X32 + TX_16X16, // TX_32X16 + TX_16X16, // TX_4X16 + TX_4X4, // TX_16X4 + TX_32X32, // TX_8X32 + TX_8X8, // TX_32X8 +}; + +#if CONFIG_CB4X4 +#define TX_SIZE_W_MIN 2 +#else +#define TX_SIZE_W_MIN 4 +#endif + +// Transform block width in pixels +static const int tx_size_wide[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + 2, +#endif + 4, 8, 16, 32, +#if CONFIG_TX64X64 + 64, +#endif // CONFIG_TX64X64 + 4, 8, 8, 16, 16, 32, 4, 16, 8, 32 +}; + +#if CONFIG_CB4X4 +#define TX_SIZE_H_MIN 2 +#else +#define TX_SIZE_H_MIN 4 +#endif + +// Transform block height in pixels +static const int tx_size_high[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + 2, +#endif + 4, 8, 16, 32, +#if CONFIG_TX64X64 + 64, +#endif // CONFIG_TX64X64 + 8, 4, 16, 8, 32, 16, 16, 4, 32, 8 +}; + +// Transform block width in unit +static const int tx_size_wide_unit[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + 1, 2, 4, 8, 16, +#if CONFIG_TX64X64 + 32, +#endif // CONFIG_TX64X64 + 2, 4, 4, 8, 8, 16, 2, 8, 4, 16 +#else // CONFIG_CB4X4 + 1, 2, 4, 8, +#if CONFIG_TX64X64 + 16, +#endif // CONFIG_TX64X64 + 1, 2, 2, 4, 4, 8, 1, 4, 2, 8 +#endif // CONFIG_CB4X4 +}; + +// Transform block height in unit +static const int tx_size_high_unit[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + 1, 2, 4, 8, 16, +#if CONFIG_TX64X64 + 32, +#endif // CONFIG_TX64X64 + 4, 2, 8, 4, 16, 8, 8, 2, 16, 4 +#else // CONFIG_CB4X4 + 1, 2, 4, 8, +#if CONFIG_TX64X64 + 16, +#endif // CONFIG_TX64X64 + 2, 1, 4, 2, 8, 4, 4, 1, 8, 2 +#endif // CONFIG_CB4X4 +}; + +// Transform block width in log2 +static const int tx_size_wide_log2[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + 1, +#endif + 2, 3, 4, 5, +#if CONFIG_TX64X64 + 6, +#endif // CONFIG_TX64X64 + 2, 3, 3, 4, 4, 5, 2, 4, 3, 5 +}; + +// Transform block height in log2 +static const int tx_size_high_log2[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + 1, +#endif + 2, 3, 4, 5, +#if CONFIG_TX64X64 + 6, +#endif // CONFIG_TX64X64 + 3, 2, 4, 3, 5, 4, 4, 2, 5, 3 +}; + +static const int tx_size_2d[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + 4, +#endif + 16, 64, 256, 1024, +#if CONFIG_TX64X64 + 4096, +#endif // CONFIG_TX64X64 + 32, 32, 128, 128, 512, 512, 64, 64, 256, 256 +}; + +static const BLOCK_SIZE txsize_to_bsize[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + BLOCK_2X2, // TX_2X2 +#endif + BLOCK_4X4, // TX_4X4 + BLOCK_8X8, // TX_8X8 + BLOCK_16X16, // TX_16X16 + BLOCK_32X32, // TX_32X32 +#if CONFIG_TX64X64 + BLOCK_64X64, // TX_64X64 +#endif // CONFIG_TX64X64 + BLOCK_4X8, // TX_4X8 + BLOCK_8X4, // TX_8X4 + BLOCK_8X16, // TX_8X16 + BLOCK_16X8, // TX_16X8 + BLOCK_16X32, // TX_16X32 + BLOCK_32X16, // TX_32X16 + BLOCK_INVALID, // TX_4X16 + BLOCK_INVALID, // TX_16X4 + BLOCK_INVALID, // TX_8X32 + BLOCK_INVALID, // TX_32X8 +}; + +static const TX_SIZE txsize_sqr_map[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + TX_2X2, // TX_2X2 +#endif + TX_4X4, // TX_4X4 + TX_8X8, // TX_8X8 + TX_16X16, // TX_16X16 + TX_32X32, // TX_32X32 +#if CONFIG_TX64X64 + TX_64X64, // TX_64X64 +#endif // CONFIG_TX64X64 + TX_4X4, // TX_4X8 + TX_4X4, // TX_8X4 + TX_8X8, // TX_8X16 + TX_8X8, // TX_16X8 + TX_16X16, // TX_16X32 + TX_16X16, // TX_32X16 + TX_4X4, // TX_4X16 + TX_4X4, // TX_16X4 + TX_8X8, // TX_8X32 + TX_8X8, // TX_32X8 +}; + +static const TX_SIZE txsize_sqr_up_map[TX_SIZES_ALL] = { +#if CONFIG_CB4X4 + TX_2X2, // TX_2X2 +#endif + TX_4X4, // TX_4X4 + TX_8X8, // TX_8X8 + TX_16X16, // TX_16X16 + TX_32X32, // TX_32X32 +#if CONFIG_TX64X64 + TX_64X64, // TX_64X64 +#endif // CONFIG_TX64X64 + TX_8X8, // TX_4X8 + TX_8X8, // TX_8X4 + TX_16X16, // TX_8X16 + TX_16X16, // TX_16X8 + TX_32X32, // TX_16X32 + TX_32X32, // TX_32X16 + TX_16X16, // TX_4X16 + TX_16X16, // TX_16X4 + TX_32X32, // TX_8X32 + TX_32X32, // TX_32X8 +}; + +/* clang-format off */ +static const TX_SIZE tx_mode_to_biggest_tx_size[TX_MODES] = { + TX_4X4, // ONLY_4X4 + TX_8X8, // ALLOW_8X8 + TX_16X16, // ALLOW_16X16 + TX_32X32, // ALLOW_32X32 +#if CONFIG_TX64X64 + TX_64X64, // ALLOW_64X64 + TX_64X64, // TX_MODE_SELECT +#else + TX_32X32, // TX_MODE_SELECT +#endif // CONFIG_TX64X64 +}; +/* clang-format on */ + +static const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES][2][2] = { +// ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 +// ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 +#if CONFIG_CB4X4 + { { BLOCK_2X2, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, + { { BLOCK_2X4, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, + { { BLOCK_4X2, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, + { { BLOCK_4X4, BLOCK_4X2 }, { BLOCK_2X4, BLOCK_2X2 } }, + { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_2X4 } }, + { { BLOCK_8X4, BLOCK_INVALID }, { BLOCK_4X4, BLOCK_4X2 } }, +#else + { { BLOCK_4X4, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, + { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_INVALID } }, + { { BLOCK_8X4, BLOCK_INVALID }, { BLOCK_4X4, BLOCK_INVALID } }, +#endif + { { BLOCK_8X8, BLOCK_8X4 }, { BLOCK_4X8, BLOCK_4X4 } }, + { { BLOCK_8X16, BLOCK_8X8 }, { BLOCK_INVALID, BLOCK_4X8 } }, + { { BLOCK_16X8, BLOCK_INVALID }, { BLOCK_8X8, BLOCK_8X4 } }, + { { BLOCK_16X16, BLOCK_16X8 }, { BLOCK_8X16, BLOCK_8X8 } }, + { { BLOCK_16X32, BLOCK_16X16 }, { BLOCK_INVALID, BLOCK_8X16 } }, + { { BLOCK_32X16, BLOCK_INVALID }, { BLOCK_16X16, BLOCK_16X8 } }, + { { BLOCK_32X32, BLOCK_32X16 }, { BLOCK_16X32, BLOCK_16X16 } }, + { { BLOCK_32X64, BLOCK_32X32 }, { BLOCK_INVALID, BLOCK_16X32 } }, + { { BLOCK_64X32, BLOCK_INVALID }, { BLOCK_32X32, BLOCK_32X16 } }, + { { BLOCK_64X64, BLOCK_64X32 }, { BLOCK_32X64, BLOCK_32X32 } }, +#if CONFIG_EXT_PARTITION + { { BLOCK_64X128, BLOCK_64X64 }, { BLOCK_INVALID, BLOCK_32X64 } }, + { { BLOCK_128X64, BLOCK_INVALID }, { BLOCK_64X64, BLOCK_64X32 } }, + { { BLOCK_128X128, BLOCK_128X64 }, { BLOCK_64X128, BLOCK_64X64 } }, +#endif // CONFIG_EXT_PARTITION +}; + +static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { +// ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 +// ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 +#if CONFIG_CB4X4 + { + // BLOCK_2X2 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#if CONFIG_TX64X64 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#endif // CONFIG_TX64X64 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { + // BLOCK_2X4 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#if CONFIG_TX64X64 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#endif // CONFIG_TX64X64 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { + // BLOCK_2X4 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#if CONFIG_TX64X64 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#endif // CONFIG_TX64X64 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, +#endif + { +// BLOCK_4X4 +#if CONFIG_CB4X4 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#else + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_4X8 +#if CONFIG_CB4X4 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#else + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 +#if CONFIG_CB4X4 + { { TX_4X8, TX_4X4 }, { TX_2X2, TX_2X2 } }, // used +#else + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, // used +#endif + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_8X4 +#if CONFIG_CB4X4 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#else + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_CB4X4 + { { TX_8X4, TX_2X2 }, { TX_4X4, TX_2X2 } }, // used +#else + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, // used +#endif + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_8X8 +#if CONFIG_CB4X4 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, + { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, + { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, + { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, + { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_8X16 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, // used + { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_16X8 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, + { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, // used + { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, + { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_16X16 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, +#if CONFIG_TX64X64 + { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } }, + { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_16X32 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, +#if CONFIG_TX64X64 + { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X32, TX_16X16 }, { TX_8X16, TX_8X16 } }, // used + { { TX_16X32, TX_16X16 }, { TX_8X16, TX_8X16 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_32X16 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, + { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, +#if CONFIG_TX64X64 + { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, + { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } }, + { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } }, // used + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_32X32 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, + { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } }, +#if CONFIG_TX64X64 + { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, + { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } }, + { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_32X64 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, + { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } }, +#if CONFIG_TX64X64 + { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, + { { TX_16X32, TX_16X32 }, { TX_16X16, TX_16X16 } }, + { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_64X32 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, + { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, +#if CONFIG_TX64X64 + { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, + { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } }, + { { TX_32X16, TX_16X16 }, { TX_32X16, TX_16X16 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_64X64 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, + { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, +#if CONFIG_TX64X64 + { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, + { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, + { { TX_32X16, TX_32X16 }, { TX_32X16, TX_16X16 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, +#if CONFIG_EXT_PARTITION + { +// BLOCK_64X128 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, + { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, +#if CONFIG_TX64X64 + { { TX_64X64, TX_64X64 }, { TX_32X32, TX_32X32 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, + { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, + { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_128X64 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, + { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, +#if CONFIG_TX64X64 + { { TX_64X64, TX_32X32 }, { TX_64X64, TX_32X32 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, + { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, + { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { +// BLOCK_128X128 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, + { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, +#if CONFIG_TX64X64 + { { TX_64X64, TX_64X64 }, { TX_64X64, TX_64X64 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, + { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, + { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, +#endif // CONFIG_EXT_PARTITION +}; + +// Generates 4 bit field in which each bit set to 1 represents +// a blocksize partition 1111 means we split 64x64, 32x32, 16x16 +// and 8x8. 1000 means we just split the 64x64 to 32x32 +/* clang-format off */ +static const struct { + PARTITION_CONTEXT above; + PARTITION_CONTEXT left; +} partition_context_lookup[BLOCK_SIZES] = { +#if CONFIG_EXT_PARTITION +#if CONFIG_CB4X4 + { 31, 31 }, // 2X2 - {0b11111, 0b11111} + { 31, 31 }, // 2X4 - {0b11111, 0b11111} + { 31, 31 }, // 4X2 - {0b11111, 0b11111} +#endif + { 31, 31 }, // 4X4 - {0b11111, 0b11111} + { 31, 30 }, // 4X8 - {0b11111, 0b11110} + { 30, 31 }, // 8X4 - {0b11110, 0b11111} + { 30, 30 }, // 8X8 - {0b11110, 0b11110} + { 30, 28 }, // 8X16 - {0b11110, 0b11100} + { 28, 30 }, // 16X8 - {0b11100, 0b11110} + { 28, 28 }, // 16X16 - {0b11100, 0b11100} + { 28, 24 }, // 16X32 - {0b11100, 0b11000} + { 24, 28 }, // 32X16 - {0b11000, 0b11100} + { 24, 24 }, // 32X32 - {0b11000, 0b11000} + { 24, 16 }, // 32X64 - {0b11000, 0b10000} + { 16, 24 }, // 64X32 - {0b10000, 0b11000} + { 16, 16 }, // 64X64 - {0b10000, 0b10000} + { 16, 0 }, // 64X128- {0b10000, 0b00000} + { 0, 16 }, // 128X64- {0b00000, 0b10000} + { 0, 0 }, // 128X128-{0b00000, 0b00000} +#else +#if CONFIG_CB4X4 + { 15, 15 }, // 2X2 - {0b1111, 0b1111} + { 15, 15 }, // 2X4 - {0b1111, 0b1111} + { 15, 15 }, // 4X2 - {0b1111, 0b1111} +#endif + { 15, 15 }, // 4X4 - {0b1111, 0b1111} + { 15, 14 }, // 4X8 - {0b1111, 0b1110} + { 14, 15 }, // 8X4 - {0b1110, 0b1111} + { 14, 14 }, // 8X8 - {0b1110, 0b1110} + { 14, 12 }, // 8X16 - {0b1110, 0b1100} + { 12, 14 }, // 16X8 - {0b1100, 0b1110} + { 12, 12 }, // 16X16 - {0b1100, 0b1100} + { 12, 8 }, // 16X32 - {0b1100, 0b1000} + { 8, 12 }, // 32X16 - {0b1000, 0b1100} + { 8, 8 }, // 32X32 - {0b1000, 0b1000} + { 8, 0 }, // 32X64 - {0b1000, 0b0000} + { 0, 8 }, // 64X32 - {0b0000, 0b1000} + { 0, 0 }, // 64X64 - {0b0000, 0b0000} +#endif // CONFIG_EXT_PARTITION +}; +/* clang-format on */ + +#if CONFIG_SUPERTX +static const TX_SIZE uvsupertx_size_lookup[TX_SIZES][2][2] = { +// ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 +// ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 +#if CONFIG_CB4X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } }, +#if CONFIG_TX64X64 + { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } }, +#endif // CONFIG_TX64X64 +}; + +#if CONFIG_EXT_PARTITION_TYPES +static const int partition_supertx_context_lookup[EXT_PARTITION_TYPES] = { + -1, 0, 0, 1, 0, 0, 0, 0 +}; + +#else +static const int partition_supertx_context_lookup[PARTITION_TYPES] = { -1, 0, 0, + 1 }; +#endif // CONFIG_EXT_PARTITION_TYPES +#endif // CONFIG_SUPERTX + +#if CONFIG_ADAPT_SCAN +#define EOB_THRESHOLD_NUM 2 +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // AV1_COMMON_COMMON_DATA_H_ -- cgit v1.2.3 From df9477dfa60ebb5d31bc142e58ce46535c17abce Mon Sep 17 00:00:00 2001 From: trav90 Date: Wed, 17 Oct 2018 05:59:08 -0500 Subject: Update aom to slightly newer commit ID --- third_party/aom/av1/common/common_data.h | 312 +++++++++++++++++++++---------- 1 file changed, 217 insertions(+), 95 deletions(-) (limited to 'third_party/aom/av1/common/common_data.h') diff --git a/third_party/aom/av1/common/common_data.h b/third_party/aom/av1/common/common_data.h index 415d5cf73..7eae71a4f 100644 --- a/third_party/aom/av1/common/common_data.h +++ b/third_party/aom/av1/common/common_data.h @@ -21,105 +21,117 @@ extern "C" { #endif #if CONFIG_EXT_PARTITION -#define IF_EXT_PARTITION(...) __VA_ARGS__ +#define IF_EXT_PARTITION(...) __VA_ARGS__, #else #define IF_EXT_PARTITION(...) #endif // Log 2 conversion lookup tables for block width and height -static const uint8_t b_width_log2_lookup[BLOCK_SIZES] = { +static const uint8_t b_width_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 0, 0, 0, #endif - 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5) + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5) 0, 2, 1, 3 }; -static const uint8_t b_height_log2_lookup[BLOCK_SIZES] = { +static const uint8_t b_height_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 0, 0, 0, #endif - 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5) + 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5) 2, 0, 3, 1 }; // Log 2 conversion lookup tables for modeinfo width and height -static const uint8_t mi_width_log2_lookup[BLOCK_SIZES] = { +static const uint8_t mi_width_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 - 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5) + 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5) 0, + 2, 1, 3 #else - 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, IF_EXT_PARTITION(3, 4, 4) + 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, IF_EXT_PARTITION(3, 4, 4) 0, 1, 0, 2 #endif }; -static const uint8_t mi_height_log2_lookup[BLOCK_SIZES] = { +static const uint8_t mi_height_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 - 0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5) + 0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5) 2, + 0, 3, 1 #else - 0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, IF_EXT_PARTITION(4, 3, 4) + 0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, IF_EXT_PARTITION(4, 3, 4) 1, 0, 2, 0 #endif }; -static const uint8_t mi_size_wide[BLOCK_SIZES] = { +/* clang-format off */ +static const uint8_t mi_size_wide[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 - 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, IF_EXT_PARTITION(16, 32, 32) + 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, + IF_EXT_PARTITION(16, 32, 32) 1, 4, 2, 8 #else - 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) + 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) 1, 2, 1, 4 #endif }; -static const uint8_t mi_size_high[BLOCK_SIZES] = { +static const uint8_t mi_size_high[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 - 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, IF_EXT_PARTITION(32, 16, 32) + 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, + IF_EXT_PARTITION(32, 16, 32) 4, 1, 8, 2 #else - 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) + 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) 2, 1, 4, 1 #endif }; +/* clang-format on */ // Width/height lookup tables in units of various block sizes -static const uint8_t block_size_wide[BLOCK_SIZES] = { +static const uint8_t block_size_wide[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 - 2, 2, 4, + 2, 2, 4, #endif - 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 32, 64, 64, IF_EXT_PARTITION(64, 128, 128) + 4, 4, 8, 8, 8, 16, 16, + 16, 32, 32, 32, 64, 64, IF_EXT_PARTITION(64, 128, 128) 4, + 16, 8, 32 }; -static const uint8_t block_size_high[BLOCK_SIZES] = { +static const uint8_t block_size_high[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 - 2, 4, 2, + 2, 4, 2, #endif - 4, 8, 4, 8, 16, 8, 16, 32, 16, 32, 64, 32, 64, IF_EXT_PARTITION(128, 64, 128) + 4, 8, 4, 8, 16, 8, 16, + 32, 16, 32, 64, 32, 64, IF_EXT_PARTITION(128, 64, 128) 16, + 4, 32, 8 }; -static const uint8_t num_4x4_blocks_wide_lookup[BLOCK_SIZES] = { +static const uint8_t num_4x4_blocks_wide_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 1, 1, 1, #endif - 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, IF_EXT_PARTITION(16, 32, 32) + 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, IF_EXT_PARTITION(16, 32, 32) 1, + 4, 2, 8 }; -static const uint8_t num_4x4_blocks_high_lookup[BLOCK_SIZES] = { +static const uint8_t num_4x4_blocks_high_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 1, 1, 1, #endif - 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, IF_EXT_PARTITION(32, 16, 32) + 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, IF_EXT_PARTITION(32, 16, 32) 4, + 1, 8, 2 }; -static const uint8_t num_8x8_blocks_wide_lookup[BLOCK_SIZES] = { +static const uint8_t num_8x8_blocks_wide_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 1, 1, 1, #endif - 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) + 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) 1, 2, 1, 4 }; -static const uint8_t num_8x8_blocks_high_lookup[BLOCK_SIZES] = { +static const uint8_t num_8x8_blocks_high_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 1, 1, 1, #endif - 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) + 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) 2, 1, 4, 1 }; -static const uint8_t num_16x16_blocks_wide_lookup[BLOCK_SIZES] = { +static const uint8_t num_16x16_blocks_wide_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 1, 1, 1, #endif - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, IF_EXT_PARTITION(4, 8, 8) + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, IF_EXT_PARTITION(4, 8, 8) 1, 1, 1, 2 }; -static const uint8_t num_16x16_blocks_high_lookup[BLOCK_SIZES] = { +static const uint8_t num_16x16_blocks_high_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 1, 1, 1, #endif - 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, IF_EXT_PARTITION(8, 4, 8) + 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, IF_EXT_PARTITION(8, 4, 8) 1, 1, 2, 1 }; // AOMMIN(3, AOMMIN(b_width_log2(bsize), b_height_log2(bsize))) @@ -130,11 +142,12 @@ static const uint8_t size_group_lookup[BLOCK_SIZES] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, IF_EXT_PARTITION(3, 3, 3) }; -static const uint8_t num_pels_log2_lookup[BLOCK_SIZES] = { +static const uint8_t num_pels_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 2, 3, 3, #endif - 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12, IF_EXT_PARTITION(13, 13, 14) + 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12, IF_EXT_PARTITION(13, 13, 14) 6, + 6, 8, 8 }; /* clang-format off */ @@ -424,9 +437,11 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = }; static const TX_SIZE max_txsize_lookup[BLOCK_SIZES] = { -#if CONFIG_CB4X4 // 2X2, 2X4, 4X2, +#if CONFIG_CHROMA_2X2 TX_2X2, TX_2X2, TX_2X2, +#elif CONFIG_CB4X4 + TX_4X4, TX_4X4, TX_4X4, #endif // 4X4 TX_4X4, @@ -457,10 +472,12 @@ static const TX_SIZE max_txsize_lookup[BLOCK_SIZES] = { #if CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES] = { -#if CONFIG_CB4X4 // 2X2, 2X4, 4X2, +#if CONFIG_CHROMA_2X2 TX_2X2, TX_2X2, TX_2X2, -#endif // CONFIG_CB4X4 +#elif CONFIG_CB4X4 + TX_4X4, TX_4X4, TX_4X4, +#endif // 4X4 TX_4X4, // 4X8, 8X4, 8X8 @@ -487,10 +504,49 @@ static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES] = { #endif // CONFIG_EXT_PARTITION #endif // CONFIG_TX64X64 }; + +#if CONFIG_EXT_TX && CONFIG_RECT_TX_EXT +static const TX_SIZE quarter_txsize_lookup[BLOCK_SIZES] = { +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + TX_INVALID, TX_INVALID, TX_INVALID, +#endif + // 4x4, + TX_INVALID, + // 4x8, 8x4, 8x8, + TX_INVALID, TX_INVALID, TX_INVALID, + // 8x16, 16x8, 16x16, + TX_4X16, TX_16X4, TX_INVALID, + // 16x32, 32x16, 32x32, + TX_8X32, TX_32X8, TX_INVALID, + // 32x64, 64x32, 64x64 + TX_INVALID, TX_INVALID, TX_INVALID, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + TX_INVALID, TX_INVALID, TX_INVALID, +#endif +}; +#endif // CONFIG_EXT_TX && CONFIG_RECT_TX_EXT #else #define max_txsize_rect_lookup max_txsize_lookup #endif // CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) +static const TX_TYPE_1D vtx_tab[TX_TYPES] = { + DCT_1D, ADST_1D, DCT_1D, ADST_1D, +#if CONFIG_EXT_TX + FLIPADST_1D, DCT_1D, FLIPADST_1D, ADST_1D, FLIPADST_1D, IDTX_1D, + DCT_1D, IDTX_1D, ADST_1D, IDTX_1D, FLIPADST_1D, IDTX_1D, +#endif // CONFIG_EXT_TX +}; + +static const TX_TYPE_1D htx_tab[TX_TYPES] = { + DCT_1D, DCT_1D, ADST_1D, ADST_1D, +#if CONFIG_EXT_TX + DCT_1D, FLIPADST_1D, FLIPADST_1D, FLIPADST_1D, ADST_1D, IDTX_1D, + IDTX_1D, DCT_1D, IDTX_1D, ADST_1D, IDTX_1D, FLIPADST_1D, +#endif // CONFIG_EXT_TX +}; + #if CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) // Same as "max_txsize_lookup[bsize] - TX_8X8", except for rectangular // block which may use a rectangular transform, in which case it is @@ -571,7 +627,7 @@ static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES] = { /* clang-format on */ static const TX_SIZE sub_tx_size_map[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 TX_2X2, // TX_2X2 #endif TX_4X4, // TX_4X4 @@ -594,7 +650,7 @@ static const TX_SIZE sub_tx_size_map[TX_SIZES_ALL] = { }; static const TX_SIZE txsize_horz_map[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 TX_2X2, // TX_2X2 #endif TX_4X4, // TX_4X4 @@ -617,7 +673,7 @@ static const TX_SIZE txsize_horz_map[TX_SIZES_ALL] = { }; static const TX_SIZE txsize_vert_map[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 TX_2X2, // TX_2X2 #endif TX_4X4, // TX_4X4 @@ -639,7 +695,7 @@ static const TX_SIZE txsize_vert_map[TX_SIZES_ALL] = { TX_8X8, // TX_32X8 }; -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 #define TX_SIZE_W_MIN 2 #else #define TX_SIZE_W_MIN 4 @@ -647,7 +703,7 @@ static const TX_SIZE txsize_vert_map[TX_SIZES_ALL] = { // Transform block width in pixels static const int tx_size_wide[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 2, #endif 4, 8, 16, 32, @@ -657,7 +713,7 @@ static const int tx_size_wide[TX_SIZES_ALL] = { 4, 8, 8, 16, 16, 32, 4, 16, 8, 32 }; -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 #define TX_SIZE_H_MIN 2 #else #define TX_SIZE_H_MIN 4 @@ -665,7 +721,7 @@ static const int tx_size_wide[TX_SIZES_ALL] = { // Transform block height in pixels static const int tx_size_high[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 2, #endif 4, 8, 16, 32, @@ -677,41 +733,41 @@ static const int tx_size_high[TX_SIZES_ALL] = { // Transform block width in unit static const int tx_size_wide_unit[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 1, 2, 4, 8, 16, #if CONFIG_TX64X64 32, #endif // CONFIG_TX64X64 2, 4, 4, 8, 8, 16, 2, 8, 4, 16 -#else // CONFIG_CB4X4 +#else // CONFIG_CHROMA_2X2 1, 2, 4, 8, #if CONFIG_TX64X64 16, #endif // CONFIG_TX64X64 1, 2, 2, 4, 4, 8, 1, 4, 2, 8 -#endif // CONFIG_CB4X4 +#endif // CONFIG_CHROMA_2X2 }; // Transform block height in unit static const int tx_size_high_unit[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 1, 2, 4, 8, 16, #if CONFIG_TX64X64 32, #endif // CONFIG_TX64X64 4, 2, 8, 4, 16, 8, 8, 2, 16, 4 -#else // CONFIG_CB4X4 +#else // CONFIG_CHROMA_2X2 1, 2, 4, 8, #if CONFIG_TX64X64 16, #endif // CONFIG_TX64X64 2, 1, 4, 2, 8, 4, 4, 1, 8, 2 -#endif // CONFIG_CB4X4 +#endif // CONFIG_CHROMA_2X2 }; // Transform block width in log2 static const int tx_size_wide_log2[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 1, #endif 2, 3, 4, 5, @@ -723,7 +779,7 @@ static const int tx_size_wide_log2[TX_SIZES_ALL] = { // Transform block height in log2 static const int tx_size_high_log2[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 1, #endif 2, 3, 4, 5, @@ -733,8 +789,11 @@ static const int tx_size_high_log2[TX_SIZES_ALL] = { 3, 2, 4, 3, 5, 4, 4, 2, 5, 3 }; +#define TX_UNIT_WIDE_LOG2 (MI_SIZE_LOG2 - tx_size_wide_log2[0]) +#define TX_UNIT_HIGH_LOG2 (MI_SIZE_LOG2 - tx_size_high_log2[0]) + static const int tx_size_2d[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 4, #endif 16, 64, 256, 1024, @@ -745,7 +804,7 @@ static const int tx_size_2d[TX_SIZES_ALL] = { }; static const BLOCK_SIZE txsize_to_bsize[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 BLOCK_2X2, // TX_2X2 #endif BLOCK_4X4, // TX_4X4 @@ -753,22 +812,22 @@ static const BLOCK_SIZE txsize_to_bsize[TX_SIZES_ALL] = { BLOCK_16X16, // TX_16X16 BLOCK_32X32, // TX_32X32 #if CONFIG_TX64X64 - BLOCK_64X64, // TX_64X64 -#endif // CONFIG_TX64X64 - BLOCK_4X8, // TX_4X8 - BLOCK_8X4, // TX_8X4 - BLOCK_8X16, // TX_8X16 - BLOCK_16X8, // TX_16X8 - BLOCK_16X32, // TX_16X32 - BLOCK_32X16, // TX_32X16 - BLOCK_INVALID, // TX_4X16 - BLOCK_INVALID, // TX_16X4 - BLOCK_INVALID, // TX_8X32 - BLOCK_INVALID, // TX_32X8 + BLOCK_64X64, // TX_64X64 +#endif // CONFIG_TX64X64 + BLOCK_4X8, // TX_4X8 + BLOCK_8X4, // TX_8X4 + BLOCK_8X16, // TX_8X16 + BLOCK_16X8, // TX_16X8 + BLOCK_16X32, // TX_16X32 + BLOCK_32X16, // TX_32X16 + BLOCK_4X16, // TX_4X16 + BLOCK_16X4, // TX_16X4 + BLOCK_8X32, // TX_8X32 + BLOCK_32X8, // TX_32X8 }; static const TX_SIZE txsize_sqr_map[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 TX_2X2, // TX_2X2 #endif TX_4X4, // TX_4X4 @@ -791,7 +850,7 @@ static const TX_SIZE txsize_sqr_map[TX_SIZES_ALL] = { }; static const TX_SIZE txsize_sqr_up_map[TX_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 TX_2X2, // TX_2X2 #endif TX_4X4, // TX_4X4 @@ -864,6 +923,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { // ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 // ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 #if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { // BLOCK_2X2 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, @@ -927,15 +987,77 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, }, +#else // CONFIG_CHROMA_2X2 + { + // BLOCK_2X2 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { + // BLOCK_2X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, + { + // BLOCK_2X4 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + }, +#endif // CONFIG_CHROMA_2X2 #endif { // BLOCK_4X4 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } }, #else { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_CB4X4 +#endif // CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -955,7 +1077,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { }, { // BLOCK_4X8 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } }, #else @@ -967,7 +1089,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { #if CONFIG_TX64X64 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif // CONFIG_TX64X64 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X8, TX_4X4 }, { TX_2X2, TX_2X2 } }, // used #else { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, // used @@ -984,7 +1106,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { }, { // BLOCK_8X4 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } }, #else @@ -997,7 +1119,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif // CONFIG_TX64X64 { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_8X4, TX_2X2 }, { TX_4X4, TX_2X2 } }, // used #else { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, // used @@ -1013,7 +1135,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { }, { // BLOCK_8X8 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1036,7 +1158,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { }, { // BLOCK_8X16 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1052,14 +1174,14 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, }, { // BLOCK_16X8 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1076,13 +1198,13 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, }, { // BLOCK_16X16 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1105,7 +1227,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { }, { // BLOCK_16X32 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1123,12 +1245,12 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X32, TX_16X16 }, { TX_8X16, TX_8X16 } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_8X32, TX_8X16 }, { TX_4X16, TX_4X16 } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, }, { // BLOCK_32X16 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1147,11 +1269,11 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X4 } }, }, { // BLOCK_32X32 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1174,7 +1296,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { }, { // BLOCK_32X64 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1197,7 +1319,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { }, { // BLOCK_64X32 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1220,7 +1342,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { }, { // BLOCK_64X64 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1244,7 +1366,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { #if CONFIG_EXT_PARTITION { // BLOCK_64X128 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1267,7 +1389,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { }, { // BLOCK_128X64 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1290,7 +1412,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { }, { // BLOCK_128X128 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1371,7 +1493,7 @@ static const struct { static const TX_SIZE uvsupertx_size_lookup[TX_SIZES][2][2] = { // ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 // ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, #endif { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -- cgit v1.2.3 From 7369c7d7a5eed32963d8af37658286617919f91c Mon Sep 17 00:00:00 2001 From: trav90 Date: Thu, 18 Oct 2018 06:04:57 -0500 Subject: Update aom to commit id f5bdeac22930ff4c6b219be49c843db35970b918 --- third_party/aom/av1/common/common_data.h | 611 +++++++++++++++++++++++-------- 1 file changed, 465 insertions(+), 146 deletions(-) (limited to 'third_party/aom/av1/common/common_data.h') diff --git a/third_party/aom/av1/common/common_data.h b/third_party/aom/av1/common/common_data.h index 7eae71a4f..f49c7335a 100644 --- a/third_party/aom/av1/common/common_data.h +++ b/third_party/aom/av1/common/common_data.h @@ -28,13 +28,13 @@ extern "C" { // Log 2 conversion lookup tables for block width and height static const uint8_t b_width_log2_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 0, 0, 0, #endif 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5) 0, 2, 1, 3 }; static const uint8_t b_height_log2_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 0, 0, 0, #endif 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5) 2, 0, 3, 1 @@ -42,17 +42,21 @@ static const uint8_t b_height_log2_lookup[BLOCK_SIZES_ALL] = { // Log 2 conversion lookup tables for modeinfo width and height static const uint8_t mi_width_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 - 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5) 0, - 2, 1, 3 -#else +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 + 0, 0, 0, +#endif + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5) 0, 2, 1, 3 +#else // CONFIG_CB4X4 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, IF_EXT_PARTITION(3, 4, 4) 0, 1, 0, 2 #endif }; static const uint8_t mi_height_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 - 0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5) 2, - 0, 3, 1 -#else +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 + 0, 0, 0, +#endif + 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5) 2, 0, 3, 1 +#else // CONFIG_CB4X4 0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, IF_EXT_PARTITION(4, 3, 4) 1, 0, 2, 0 #endif }; @@ -60,17 +64,23 @@ static const uint8_t mi_height_log2_lookup[BLOCK_SIZES_ALL] = { /* clang-format off */ static const uint8_t mi_size_wide[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 - 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 + 1, 1, 1, +#endif + 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, IF_EXT_PARTITION(16, 32, 32) 1, 4, 2, 8 -#else +#else // CONFIG_CB4X4 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) 1, 2, 1, 4 #endif }; static const uint8_t mi_size_high[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 - 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 + 1, 1, 1, +#endif + 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, IF_EXT_PARTITION(32, 16, 32) 4, 1, 8, 2 -#else +#else // CONFIG_CB4X4 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) 2, 1, 4, 1 #endif }; @@ -78,7 +88,7 @@ static const uint8_t mi_size_high[BLOCK_SIZES_ALL] = { // Width/height lookup tables in units of various block sizes static const uint8_t block_size_wide[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 2, 2, 4, #endif 4, 4, 8, 8, 8, 16, 16, @@ -87,7 +97,7 @@ static const uint8_t block_size_wide[BLOCK_SIZES_ALL] = { }; static const uint8_t block_size_high[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 2, 4, 2, #endif 4, 8, 4, 8, 16, 8, 16, @@ -96,54 +106,54 @@ static const uint8_t block_size_high[BLOCK_SIZES_ALL] = { }; static const uint8_t num_4x4_blocks_wide_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 1, 1, 1, #endif 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, IF_EXT_PARTITION(16, 32, 32) 1, 4, 2, 8 }; static const uint8_t num_4x4_blocks_high_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 1, 1, 1, #endif 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, IF_EXT_PARTITION(32, 16, 32) 4, 1, 8, 2 }; static const uint8_t num_8x8_blocks_wide_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 1, 1, 1, #endif 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) 1, 2, 1, 4 }; static const uint8_t num_8x8_blocks_high_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 1, 1, 1, #endif 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) 2, 1, 4, 1 }; static const uint8_t num_16x16_blocks_wide_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 1, 1, 1, #endif 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, IF_EXT_PARTITION(4, 8, 8) 1, 1, 1, 2 }; static const uint8_t num_16x16_blocks_high_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 1, 1, 1, #endif 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, IF_EXT_PARTITION(8, 4, 8) 1, 1, 2, 1 }; // AOMMIN(3, AOMMIN(b_width_log2(bsize), b_height_log2(bsize))) -static const uint8_t size_group_lookup[BLOCK_SIZES] = { -#if CONFIG_CB4X4 +static const uint8_t size_group_lookup[BLOCK_SIZES_ALL] = { +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 0, 0, 0, #endif - 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, IF_EXT_PARTITION(3, 3, 3) + 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, IF_EXT_PARTITION(3, 3, 3) 0, 0, 1, 1 }; static const uint8_t num_pels_log2_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 2, 3, 3, #endif 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12, IF_EXT_PARTITION(13, 13, 14) 6, @@ -152,9 +162,9 @@ static const uint8_t num_pels_log2_lookup[BLOCK_SIZES_ALL] = { /* clang-format off */ static const PARTITION_TYPE - partition_lookup[MAX_SB_SIZE_LOG2 - 1][BLOCK_SIZES] = { + partition_lookup[MAX_SB_SIZE_LOG2 - 1][BLOCK_SIZES_ALL] = { { // 4X4 -> -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, #endif @@ -171,8 +181,12 @@ static const PARTITION_TYPE #if CONFIG_EXT_PARTITION PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, #endif // CONFIG_EXT_PARTITION + // 4x16, 16x4, 8x32 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 32x8 + PARTITION_INVALID }, { // 8X8 -> -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, #endif @@ -190,8 +204,12 @@ static const PARTITION_TYPE // 64x128, 128x64, 128x128 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, #endif // CONFIG_EXT_PARTITION + // 4x16, 16x4, 8x32 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 32x8 + PARTITION_INVALID }, { // 16X16 -> -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, #endif @@ -209,8 +227,19 @@ static const PARTITION_TYPE // 64x128, 128x64, 128x128 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, #endif // CONFIG_EXT_PARTITION +#if CONFIG_EXT_PARTITION_TYPES + // 4x16, 16x4, 8x32 + PARTITION_VERT_4, PARTITION_HORZ_4, PARTITION_INVALID, + // 32x8 + PARTITION_INVALID +#else + // 4x16, 16x4, 8x32 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 32x8 + PARTITION_INVALID +#endif }, { // 32X32 -> -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, #endif @@ -228,8 +257,19 @@ static const PARTITION_TYPE // 64x128, 128x64, 128x128 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, #endif // CONFIG_EXT_PARTITION +#if CONFIG_EXT_PARTITION_TYPES + // 4x16, 16x4, 8x32 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_VERT_4, + // 32x8 + PARTITION_HORZ_4 +#else + // 4x16, 16x4, 8x32 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 32x8 + PARTITION_INVALID +#endif }, { // 64X64 -> -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, #endif @@ -246,8 +286,21 @@ static const PARTITION_TYPE #if CONFIG_EXT_PARTITION // 64x128, 128x64, 128x128 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, +#endif // CONFIG_EXT_PARTITION +#if CONFIG_EXT_PARTITION_TYPES + // 4x16, 16x4, 8x32 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 32x8 + PARTITION_SPLIT +#else + // 4x16, 16x4, 8x32 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 32x8 + PARTITION_INVALID +#endif // CONFIG_EXT_PARTITION_TYPES +#if CONFIG_EXT_PARTITION }, { // 128x128 -> -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, #endif @@ -263,18 +316,29 @@ static const PARTITION_TYPE PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, // 64x128, 128x64, 128x128 PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, +#if CONFIG_EXT_PARTITION_TYPES + // 4x16, 16x4, 8x32 + PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, + // 32x8 + PARTITION_SPLIT +#else + // 4x16, 16x4, 8x32 + PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, + // 32x8 + PARTITION_INVALID +#endif // CONFIG_EXT_PARTITION_TYPES #endif // CONFIG_EXT_PARTITION } }; #if CONFIG_EXT_PARTITION_TYPES -static const BLOCK_SIZE subsize_lookup[EXT_PARTITION_TYPES][BLOCK_SIZES] = +static const BLOCK_SIZE subsize_lookup[EXT_PARTITION_TYPES][BLOCK_SIZES_ALL] = #else -static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = +static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = #endif // CONFIG_EXT_PARTITION_TYPES { { // PARTITION_NONE -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, BLOCK_2X2, BLOCK_2X4, BLOCK_4X2, #endif @@ -292,8 +356,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = // 64x128, 128x64, 128x128 BLOCK_64X128, BLOCK_128X64, BLOCK_128X128, #endif // CONFIG_EXT_PARTITION + // 4X16, 16X4, 8X32 + BLOCK_4X16, BLOCK_16X4, BLOCK_8X32, + // 32X8, + BLOCK_32X8, }, { // PARTITION_HORZ -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, // 4X4 @@ -314,8 +382,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = // 64x128, 128x64, 128x128 BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64, #endif // CONFIG_EXT_PARTITION + // 4X16, 16X4, 8X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 32X8, + BLOCK_INVALID, }, { // PARTITION_VERT -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, // 4X4 @@ -336,8 +408,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = // 64x128, 128x64, 128x128 BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128, #endif // CONFIG_EXT_PARTITION + // 4X16, 16X4, 8X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 32X8, + BLOCK_INVALID, }, { // PARTITION_SPLIT -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, #endif @@ -355,9 +431,13 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = // 64x128, 128x64, 128x128 BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X64, #endif // CONFIG_EXT_PARTITION + // 4X16, 16X4, 8X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 32X8, + BLOCK_INVALID, #if CONFIG_EXT_PARTITION_TYPES }, { // PARTITION_HORZ_A -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, #endif @@ -375,8 +455,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = // 64x128, 128x64, 128x128 BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64, #endif // CONFIG_EXT_PARTITION + // 4X16, 16X4, 8X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 32X8, + BLOCK_INVALID, }, { // PARTITION_HORZ_B -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, #endif @@ -394,8 +478,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = // 64x128, 128x64, 128x128 BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64, #endif // CONFIG_EXT_PARTITION + // 4X16, 16X4, 8X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 32X8, + BLOCK_INVALID, }, { // PARTITION_VERT_A -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, #endif @@ -413,8 +501,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = // 64x128, 128x64, 128x128 BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128, #endif // CONFIG_EXT_PARTITION + // 4X16, 16X4, 8X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 32X8, + BLOCK_INVALID, }, { // PARTITION_VERT_B -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, #endif @@ -432,15 +524,71 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] = // 64x128, 128x64, 128x128 BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128, #endif // CONFIG_EXT_PARTITION + // 4X16, 16X4, 8X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 32X8, + BLOCK_INVALID, + }, { // PARTITION_HORZ_4 +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 4X4 + BLOCK_INVALID, +#else + // 4X4 + BLOCK_INVALID, +#endif + // 4X8, 8X4, 8X8 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 8X16, 16X8, 16X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X4, + // 16X32, 32X16, 32X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X8, + // 32X64, 64X32, 64X64 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#endif // CONFIG_EXT_PARTITION + // 4X16, 16X4, 8X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 32X8, + BLOCK_INVALID, + }, { // PARTITION_VERT_4 +#if CONFIG_CB4X4 + // 2X2, 2X4, 4X2, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 4X4 + BLOCK_INVALID, +#else + // 4X4 + BLOCK_INVALID, +#endif + // 4X8, 8X4, 8X8 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 8X16, 16X8, 16X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X16, + // 16X32, 32X16, 32X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X32, + // 32X64, 64X32, 64X64 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#if CONFIG_EXT_PARTITION + // 64x128, 128x64, 128x128 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#endif // CONFIG_EXT_PARTITION + // 4X16, 16X4, 8X32 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + // 32X8, + BLOCK_INVALID, #endif // CONFIG_EXT_PARTITION_TYPES } }; -static const TX_SIZE max_txsize_lookup[BLOCK_SIZES] = { +static const TX_SIZE max_txsize_lookup[BLOCK_SIZES_ALL] = { // 2X2, 2X4, 4X2, #if CONFIG_CHROMA_2X2 TX_2X2, TX_2X2, TX_2X2, -#elif CONFIG_CB4X4 +#elif CONFIG_CHROMA_SUB8X8 TX_4X4, TX_4X4, TX_4X4, #endif // 4X4 @@ -468,16 +616,20 @@ static const TX_SIZE max_txsize_lookup[BLOCK_SIZES] = { TX_32X32, TX_32X32, TX_32X32, #endif // CONFIG_EXT_PARTITION #endif // CONFIG_TX64X64 + // 4x16, 16x4, 8x32 + TX_4X4, TX_4X4, TX_8X8, + // 32x8 + TX_8X8 }; #if CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) -static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES] = { +static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES_ALL] = { // 2X2, 2X4, 4X2, #if CONFIG_CHROMA_2X2 TX_2X2, TX_2X2, TX_2X2, -#elif CONFIG_CB4X4 +#elif CONFIG_CHROMA_SUB8X8 TX_4X4, TX_4X4, TX_4X4, -#endif +#endif // CONFIG_CHROMA_SUB8X8 // 4X4 TX_4X4, // 4X8, 8X4, 8X8 @@ -503,11 +655,22 @@ static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES] = { TX_32X32, TX_32X32, TX_32X32, #endif // CONFIG_EXT_PARTITION #endif // CONFIG_TX64X64 +#if CONFIG_RECT_TX_EXT + // 4x16, 16x4, 8x32 + TX_4X16, TX_16X4, TX_8X32, + // 32x8 + TX_32X8 +#else + // 4x16, 16x4, 8x32 + TX_4X8, TX_8X4, TX_8X16, + // 32x8 + TX_16X8 +#endif }; -#if CONFIG_EXT_TX && CONFIG_RECT_TX_EXT -static const TX_SIZE quarter_txsize_lookup[BLOCK_SIZES] = { -#if CONFIG_CB4X4 +#if CONFIG_RECT_TX_EXT +static const TX_SIZE quarter_txsize_lookup[BLOCK_SIZES_ALL] = { +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, TX_INVALID, TX_INVALID, TX_INVALID, #endif @@ -525,8 +688,12 @@ static const TX_SIZE quarter_txsize_lookup[BLOCK_SIZES] = { // 64x128, 128x64, 128x128 TX_INVALID, TX_INVALID, TX_INVALID, #endif + // 4x16, 16x4, 8x32 + TX_4X16, TX_16X4, TX_8X32, + // 32x8 + TX_32X8 }; -#endif // CONFIG_EXT_TX && CONFIG_RECT_TX_EXT +#endif #else #define max_txsize_rect_lookup max_txsize_lookup #endif // CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) @@ -551,15 +718,17 @@ static const TX_TYPE_1D htx_tab[TX_TYPES] = { // Same as "max_txsize_lookup[bsize] - TX_8X8", except for rectangular // block which may use a rectangular transform, in which case it is // "(max_txsize_lookup[bsize] + 1) - TX_8X8", invalid for bsize < 8X8 -static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES] = { +static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, INT32_MIN, INT32_MIN, INT32_MIN, +#endif // 4X4, INT32_MIN, // 4X8, 8X4, 8X8, TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, -#else +#else // CONFIG_CB4X4 // 4X4 INT32_MIN, // 4X8, 8X4, 8X8 @@ -586,11 +755,17 @@ static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES] = { TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, #endif // CONFIG_EXT_PARTITION #endif // CONFIG_TX64X64 + // TODO(david.barker): Change these if we support rectangular transforms + // for 4:1 shaped partitions + // 4x16, 16x4, 8x32 + INT32_MIN, INT32_MIN, TX_8X8 - TX_8X8, + // 32x8 + TX_8X8 - TX_8X8 }; #else // Same as "max_txsize_lookup[bsize] - TX_8X8", invalid for bsize < 8X8 -static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES] = { -#if CONFIG_CB4X4 +static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES_ALL] = { +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, INT32_MIN, INT32_MIN, INT32_MIN, #endif @@ -619,6 +794,10 @@ static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES] = { TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, #endif // CONFIG_EXT_PARTITION #endif // CONFIG_TX64X64 + // 4x16, 16x4, 8x32 + INT32_MIN, INT32_MIN, TX_8X8 - TX_8X8, + // 32x8 + TX_8X8 - TX_8X8 }; #endif // CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) @@ -887,16 +1066,20 @@ static const TX_SIZE tx_mode_to_biggest_tx_size[TX_MODES] = { }; /* clang-format on */ -static const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES][2][2] = { +static const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES_ALL][2][2] = { // ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 // ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 { { BLOCK_2X2, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, { { BLOCK_2X4, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, { { BLOCK_4X2, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, { { BLOCK_4X4, BLOCK_4X2 }, { BLOCK_2X4, BLOCK_2X2 } }, { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_2X4 } }, { { BLOCK_8X4, BLOCK_INVALID }, { BLOCK_4X4, BLOCK_4X2 } }, +#elif CONFIG_CB4X4 + { { BLOCK_4X4, BLOCK_4X4 }, { BLOCK_4X4, BLOCK_4X4 } }, + { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_4X4 } }, + { { BLOCK_8X4, BLOCK_INVALID }, { BLOCK_4X4, BLOCK_4X4 } }, #else { { BLOCK_4X4, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_INVALID } }, @@ -917,12 +1100,15 @@ static const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES][2][2] = { { { BLOCK_128X64, BLOCK_INVALID }, { BLOCK_64X64, BLOCK_64X32 } }, { { BLOCK_128X128, BLOCK_128X64 }, { BLOCK_64X128, BLOCK_64X64 } }, #endif // CONFIG_EXT_PARTITION + { { BLOCK_4X16, BLOCK_4X8 }, { BLOCK_INVALID, BLOCK_INVALID } }, + { { BLOCK_16X4, BLOCK_INVALID }, { BLOCK_8X4, BLOCK_INVALID } }, + { { BLOCK_8X32, BLOCK_8X16 }, { BLOCK_INVALID, BLOCK_4X16 } }, + { { BLOCK_32X8, BLOCK_INVALID }, { BLOCK_16X8, BLOCK_16X4 } }, }; -static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { +static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { // ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 // ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 -#if CONFIG_CB4X4 #if CONFIG_CHROMA_2X2 { // BLOCK_2X2 @@ -940,10 +1126,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, }, { // BLOCK_2X4 @@ -961,10 +1147,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, }, { // BLOCK_2X4 @@ -982,12 +1168,12 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, }, -#else // CONFIG_CHROMA_2X2 +#elif CONFIG_CHROMA_SUB8X8 { // BLOCK_2X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1003,10 +1189,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, }, { // BLOCK_2X4 @@ -1023,10 +1209,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, }, { // BLOCK_2X4 @@ -1043,12 +1229,11 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, }, -#endif // CONFIG_CHROMA_2X2 #endif { // BLOCK_4X4 @@ -1070,10 +1255,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, }, { // BLOCK_4X8 @@ -1099,10 +1284,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, }, { // BLOCK_8X4 @@ -1128,10 +1313,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, }, { // BLOCK_8X8 @@ -1151,10 +1336,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, + { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, + { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, }, { // BLOCK_8X16 @@ -1175,9 +1360,9 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X16, TX_8X8 }, { TX_4X16, TX_4X8 } }, + { { TX_8X8, TX_8X8 }, { TX_4X8, TX_4X8 } }, }, { // BLOCK_16X8 @@ -1197,10 +1382,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, // used { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_8X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, + { { TX_16X8, TX_16X4 }, { TX_8X8, TX_8X4 } }, }, { // BLOCK_16X16 @@ -1220,10 +1405,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } }, { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, + { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, }, { // BLOCK_16X32 @@ -1243,10 +1428,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, { { TX_16X32, TX_16X16 }, { TX_8X16, TX_8X16 } }, // used { { TX_16X32, TX_16X16 }, { TX_8X16, TX_8X16 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_8X32, TX_8X16 }, { TX_4X16, TX_4X16 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, + { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X32, TX_8X16 }, { TX_8X32, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, }, { // BLOCK_32X16 @@ -1266,10 +1451,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } }, { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } }, // used - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X4 } }, + { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, + { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, }, { // BLOCK_32X32 @@ -1289,10 +1474,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } }, { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, + { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, }, { // BLOCK_32X64 @@ -1312,10 +1497,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X32 }, { TX_16X16, TX_16X16 } }, { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, + { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, }, { // BLOCK_64X32 @@ -1335,10 +1520,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } }, { { TX_32X16, TX_16X16 }, { TX_32X16, TX_16X16 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, + { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, }, { // BLOCK_64X64 @@ -1358,10 +1543,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, { { TX_32X16, TX_32X16 }, { TX_32X16, TX_16X16 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, + { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, }, #if CONFIG_EXT_PARTITION { @@ -1405,10 +1590,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, + { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, }, { // BLOCK_128X128 @@ -1428,12 +1613,108 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, + { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, + { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, }, #endif // CONFIG_EXT_PARTITION + { +// BLOCK_4X16 +#if CONFIG_CHROMA_2X2 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_4X4, TX_4X4 }, { TX_2X2, TX_2X2 } }, +#else + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, + { { TX_4X16, TX_4X8 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X16, TX_4X8 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, + }, + { +// BLOCK_16X4 +#if CONFIG_CHROMA_2X2 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_4X4, TX_2X2 }, { TX_4X4, TX_2X2 } }, +#else + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_16X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, + { { TX_16X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, + }, + { +// BLOCK_8X32 +#if CONFIG_CHROMA_2X2 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_CHROMA_2X2 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X16, TX_8X16 }, { TX_4X8, TX_4X8 } }, + { { TX_8X8, TX_8X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X16, TX_8X16 }, { TX_4X8, TX_4X8 } }, + { { TX_8X16, TX_8X16 }, { TX_4X8, TX_4X8 } }, + { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, + { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X32, TX_8X16 }, { TX_4X16, TX_4X16 } }, + { { TX_8X8, TX_8X8 }, { TX_4X8, TX_4X8 } }, + }, + { +// BLOCK_32X8 +#if CONFIG_CHROMA_2X2 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_CHROMA_2X2 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, +#endif // CONFIG_TX64X64 + { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, + { { TX_16X8, TX_8X4 }, { TX_16X8, TX_8X4 } }, + { { TX_16X8, TX_8X4 }, { TX_16X8, TX_8X4 } }, + { { TX_16X8, TX_8X4 }, { TX_16X8, TX_8X4 } }, + { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, + { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, + { { TX_8X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, + { { TX_32X8, TX_16X4 }, { TX_16X8, TX_16X4 } }, + } }; // Generates 4 bit field in which each bit set to 1 represents @@ -1443,9 +1724,9 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = { static const struct { PARTITION_CONTEXT above; PARTITION_CONTEXT left; -} partition_context_lookup[BLOCK_SIZES] = { +} partition_context_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_EXT_PARTITION -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 { 31, 31 }, // 2X2 - {0b11111, 0b11111} { 31, 31 }, // 2X4 - {0b11111, 0b11111} { 31, 31 }, // 4X2 - {0b11111, 0b11111} @@ -1466,8 +1747,13 @@ static const struct { { 16, 0 }, // 64X128- {0b10000, 0b00000} { 0, 16 }, // 128X64- {0b00000, 0b10000} { 0, 0 }, // 128X128-{0b00000, 0b00000} + + { 31, 28 }, // 4X16 - {0b11111, 0b11100} + { 28, 31 }, // 16X4 - {0b11100, 0b11111} + { 30, 24 }, // 8X32 - {0b11110, 0b11000} + { 24, 30 }, // 32X8 - {0b11000, 0b11110} #else -#if CONFIG_CB4X4 +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 { 15, 15 }, // 2X2 - {0b1111, 0b1111} { 15, 15 }, // 2X4 - {0b1111, 0b1111} { 15, 15 }, // 4X2 - {0b1111, 0b1111} @@ -1485,6 +1771,11 @@ static const struct { { 8, 0 }, // 32X64 - {0b1000, 0b0000} { 0, 8 }, // 64X32 - {0b0000, 0b1000} { 0, 0 }, // 64X64 - {0b0000, 0b0000} + + { 15, 12 }, // 4X16 - {0b1111, 0b1100} + { 12, 15 }, // 16X4 - {0b1100, 0b1111} + { 8, 14 }, // 8X32 - {0b1110, 0b1000} + { 14, 8 }, // 32X8 - {0b1000, 0b1110} #endif // CONFIG_EXT_PARTITION }; /* clang-format on */ @@ -1507,7 +1798,7 @@ static const TX_SIZE uvsupertx_size_lookup[TX_SIZES][2][2] = { #if CONFIG_EXT_PARTITION_TYPES static const int partition_supertx_context_lookup[EXT_PARTITION_TYPES] = { - -1, 0, 0, 1, 0, 0, 0, 0 + -1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }; #else @@ -1516,6 +1807,34 @@ static const int partition_supertx_context_lookup[PARTITION_TYPES] = { -1, 0, 0, #endif // CONFIG_EXT_PARTITION_TYPES #endif // CONFIG_SUPERTX +#if CONFIG_NCOBMC_ADAPT_WEIGHT +// NCOBMC_ADAPT_INTRPL only supports block size >= BLOCK_8X8 and <= BLOCK_64X64 +static const ADAPT_OVERLAP_BLOCK adapt_overlap_block_lookup[BLOCK_SIZES_ALL] = { +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 + ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_2X2 + ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_2X4 + ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_4X2 +#endif + ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_4X4 + ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_4X8 + ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_8X4 + + // the rest of the block sizes round to the largest squared block less than + // the given block size + ADAPT_OVERLAP_BLOCK_8X8, ADAPT_OVERLAP_BLOCK_8X8, ADAPT_OVERLAP_BLOCK_8X8, + ADAPT_OVERLAP_BLOCK_16X16, ADAPT_OVERLAP_BLOCK_16X16, + ADAPT_OVERLAP_BLOCK_16X16, ADAPT_OVERLAP_BLOCK_32X32, + ADAPT_OVERLAP_BLOCK_32X32, ADAPT_OVERLAP_BLOCK_32X32, + ADAPT_OVERLAP_BLOCK_64X64, +#if CONFIG_EXT_PARTITION + ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID, + ADAPT_OVERLAP_BLOCK_INVALID, +#endif // CONFIG_EXT_PARTITION + ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID, + ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID +}; +#endif // CONFIG_NCOBMC_ADAPT_WEIGHT + #if CONFIG_ADAPT_SCAN #define EOB_THRESHOLD_NUM 2 #endif -- cgit v1.2.3 From ec910d81405c736a4490383a250299a7837c2e64 Mon Sep 17 00:00:00 2001 From: trav90 Date: Thu, 18 Oct 2018 21:53:44 -0500 Subject: Update aom to commit id e87fb2378f01103d5d6e477a4ef6892dc714e614 --- third_party/aom/av1/common/common_data.h | 946 +++++++++++++++++++++---------- 1 file changed, 651 insertions(+), 295 deletions(-) (limited to 'third_party/aom/av1/common/common_data.h') diff --git a/third_party/aom/av1/common/common_data.h b/third_party/aom/av1/common/common_data.h index f49c7335a..1a74fe76e 100644 --- a/third_party/aom/av1/common/common_data.h +++ b/third_party/aom/av1/common/common_data.h @@ -29,35 +29,93 @@ extern "C" { // Log 2 conversion lookup tables for block width and height static const uint8_t b_width_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 0, 0, 0, -#endif - 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5) 0, 2, 1, 3 + 0, 0, + 0, +#endif + 0, 0, + 1, 1, + 1, 2, + 2, 2, + 3, 3, + 3, 4, + 4, IF_EXT_PARTITION(4, 5, 5) 0, + 2, 1, + 3, 2, + 4, IF_EXT_PARTITION(3, 5) }; static const uint8_t b_height_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 0, 0, 0, -#endif - 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5) 2, 0, 3, 1 + 0, 0, + 0, +#endif + 0, 1, + 0, 1, + 2, 1, + 2, 3, + 2, 3, + 4, 3, + 4, IF_EXT_PARTITION(5, 4, 5) 2, + 0, 3, + 1, 4, + 2, IF_EXT_PARTITION(5, 3) }; // Log 2 conversion lookup tables for modeinfo width and height static const uint8_t mi_width_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 0, 0, 0, -#endif - 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5) 0, 2, 1, 3 + 0, 0, + 0, +#endif + 0, 0, + 1, 1, + 1, 2, + 2, 2, + 3, 3, + 3, 4, + 4, IF_EXT_PARTITION(4, 5, 5) 0, + 2, 1, + 3, 2, + 4, IF_EXT_PARTITION(3, 5) #else // CONFIG_CB4X4 - 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, IF_EXT_PARTITION(3, 4, 4) 0, 1, 0, 2 + 0, 0, + 0, 0, + 0, 1, + 1, 1, + 2, 2, + 2, 3, + 3, IF_EXT_PARTITION(3, 4, 4) 0, + 1, 0, + 2, 1, + 3, IF_EXT_PARTITION(2, 4) #endif }; static const uint8_t mi_height_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CB4X4 #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 0, 0, 0, -#endif - 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5) 2, 0, 3, 1 + 0, 0, + 0, +#endif + 0, 1, + 0, 1, + 2, 1, + 2, 3, + 2, 3, + 4, 3, + 4, IF_EXT_PARTITION(5, 4, 5) 2, + 0, 3, + 1, 4, + 2, IF_EXT_PARTITION(5, 3) #else // CONFIG_CB4X4 - 0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, IF_EXT_PARTITION(4, 3, 4) 1, 0, 2, 0 + 0, 0, + 0, 0, + 1, 0, + 1, 2, + 1, 2, + 3, 2, + 3, IF_EXT_PARTITION(4, 3, 4) 1, + 0, 2, + 0, 3, + 1, IF_EXT_PARTITION(2, 4) #endif }; @@ -68,9 +126,10 @@ static const uint8_t mi_size_wide[BLOCK_SIZES_ALL] = { 1, 1, 1, #endif 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, - IF_EXT_PARTITION(16, 32, 32) 1, 4, 2, 8 + IF_EXT_PARTITION(16, 32, 32) 1, 4, 2, 8, 4, 16, IF_EXT_PARTITION(8, 32) #else // CONFIG_CB4X4 - 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) 1, 2, 1, 4 + 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) 1, 2, 1, 4, + 2, 8, IF_EXT_PARTITION(4, 16) #endif }; static const uint8_t mi_size_high[BLOCK_SIZES_ALL] = { @@ -79,9 +138,10 @@ static const uint8_t mi_size_high[BLOCK_SIZES_ALL] = { 1, 1, 1, #endif 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, - IF_EXT_PARTITION(32, 16, 32) 4, 1, 8, 2 + IF_EXT_PARTITION(32, 16, 32) 4, 1, 8, 2, 16, 4, IF_EXT_PARTITION(32, 8) #else // CONFIG_CB4X4 - 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) 2, 1, 4, 1 + 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) 2, 1, 4, 1, + 8, 2, IF_EXT_PARTITION(16, 4) #endif }; /* clang-format on */ @@ -89,248 +149,171 @@ static const uint8_t mi_size_high[BLOCK_SIZES_ALL] = { // Width/height lookup tables in units of various block sizes static const uint8_t block_size_wide[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 2, 2, 4, + 2, 2, + 4, #endif - 4, 4, 8, 8, 8, 16, 16, - 16, 32, 32, 32, 64, 64, IF_EXT_PARTITION(64, 128, 128) 4, - 16, 8, 32 + 4, 4, + 8, 8, + 8, 16, + 16, 16, + 32, 32, + 32, 64, + 64, IF_EXT_PARTITION(64, 128, 128) 4, + 16, 8, + 32, 16, + 64, IF_EXT_PARTITION(32, 128) }; static const uint8_t block_size_high[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 2, 4, 2, + 2, 4, + 2, #endif - 4, 8, 4, 8, 16, 8, 16, - 32, 16, 32, 64, 32, 64, IF_EXT_PARTITION(128, 64, 128) 16, - 4, 32, 8 + 4, 8, + 4, 8, + 16, 8, + 16, 32, + 16, 32, + 64, 32, + 64, IF_EXT_PARTITION(128, 64, 128) 16, + 4, 32, + 8, 64, + 16, IF_EXT_PARTITION(128, 32) }; static const uint8_t num_4x4_blocks_wide_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, 1, + 1, 1, + 1, #endif - 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, IF_EXT_PARTITION(16, 32, 32) 1, - 4, 2, 8 + 1, 1, + 2, 2, + 2, 4, + 4, 4, + 8, 8, + 8, 16, + 16, IF_EXT_PARTITION(16, 32, 32) 1, + 4, 2, + 8, 4, + 16, IF_EXT_PARTITION(8, 32) }; static const uint8_t num_4x4_blocks_high_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, 1, + 1, 1, + 1, #endif - 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, IF_EXT_PARTITION(32, 16, 32) 4, - 1, 8, 2 + 1, 2, + 1, 2, + 4, 2, + 4, 8, + 4, 8, + 16, 8, + 16, IF_EXT_PARTITION(32, 16, 32) 4, + 1, 8, + 2, 16, + 4, IF_EXT_PARTITION(32, 8) }; static const uint8_t num_8x8_blocks_wide_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, 1, + 1, 1, + 1, #endif - 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) 1, 2, 1, 4 + 1, 1, + 1, 1, + 1, 2, + 2, 2, + 4, 4, + 4, 8, + 8, IF_EXT_PARTITION(8, 16, 16) 1, + 2, 1, + 4, 2, + 8, IF_EXT_PARTITION(4, 16) }; static const uint8_t num_8x8_blocks_high_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, 1, + 1, 1, + 1, #endif - 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) 2, 1, 4, 1 + 1, 1, + 1, 1, + 2, 1, + 2, 4, + 2, 4, + 8, 4, + 8, IF_EXT_PARTITION(16, 8, 16) 2, + 1, 4, + 1, 8, + 2, IF_EXT_PARTITION(16, 4) }; static const uint8_t num_16x16_blocks_wide_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, 1, + 1, 1, + 1, #endif - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, IF_EXT_PARTITION(4, 8, 8) 1, 1, 1, 2 + 1, 1, + 1, 1, + 1, 1, + 1, 1, + 2, 2, + 2, 4, + 4, IF_EXT_PARTITION(4, 8, 8) 1, + 1, 1, + 2, 2, + 4, IF_EXT_PARTITION(2, 8) }; static const uint8_t num_16x16_blocks_high_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, 1, + 1, 1, + 1, #endif - 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, IF_EXT_PARTITION(8, 4, 8) 1, 1, 2, 1 + 1, 1, + 1, 1, + 1, 1, + 1, 2, + 1, 2, + 4, 2, + 4, IF_EXT_PARTITION(8, 4, 8) 1, + 1, 2, + 1, 4, + 2, IF_EXT_PARTITION(8, 2) }; // AOMMIN(3, AOMMIN(b_width_log2(bsize), b_height_log2(bsize))) static const uint8_t size_group_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 0, 0, 0, -#endif - 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, IF_EXT_PARTITION(3, 3, 3) 0, 0, 1, 1 + 0, 0, + 0, +#endif + 0, 0, + 0, 1, + 1, 1, + 2, 2, + 2, 3, + 3, 3, + 3, IF_EXT_PARTITION(3, 3, 3) 0, + 0, 1, + 1, 2, + 2, IF_EXT_PARTITION(3, 3) }; static const uint8_t num_pels_log2_lookup[BLOCK_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 2, 3, 3, -#endif - 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12, IF_EXT_PARTITION(13, 13, 14) 6, - 6, 8, 8 + 2, 3, + 3, +#endif + 4, 5, + 5, 6, + 7, 7, + 8, 9, + 9, 10, + 11, 11, + 12, IF_EXT_PARTITION(13, 13, 14) 6, + 6, 8, + 8, 10, + 10, IF_EXT_PARTITION(12, 12) }; /* clang-format off */ -static const PARTITION_TYPE - partition_lookup[MAX_SB_SIZE_LOG2 - 1][BLOCK_SIZES_ALL] = { - { // 4X4 -> -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#endif - // 4X4 - PARTITION_NONE, - // 4X8, 8X4, 8X8 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 8X16, 16X8, 16X16 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 16X32, 32X16, 32X32 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 32X64, 64X32, 64X64 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#if CONFIG_EXT_PARTITION - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#endif // CONFIG_EXT_PARTITION - // 4x16, 16x4, 8x32 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 32x8 - PARTITION_INVALID - }, { // 8X8 -> -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#endif - // 4X4 - PARTITION_SPLIT, - // 4X8, 8X4, 8X8 - PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, - // 8X16, 16X8, 16X16 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 16X32, 32X16, 32X32 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 32X64, 64X32, 64X64 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#endif // CONFIG_EXT_PARTITION - // 4x16, 16x4, 8x32 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 32x8 - PARTITION_INVALID - }, { // 16X16 -> -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#endif - // 4X4 - PARTITION_SPLIT, - // 4X8, 8X4, 8X8 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 8X16, 16X8, 16X16 - PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, - // 16X32, 32X16, 32X32 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 32X64, 64X32, 64X64 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#endif // CONFIG_EXT_PARTITION -#if CONFIG_EXT_PARTITION_TYPES - // 4x16, 16x4, 8x32 - PARTITION_VERT_4, PARTITION_HORZ_4, PARTITION_INVALID, - // 32x8 - PARTITION_INVALID -#else - // 4x16, 16x4, 8x32 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 32x8 - PARTITION_INVALID -#endif - }, { // 32X32 -> -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#endif - // 4X4 - PARTITION_SPLIT, - // 4X8, 8X4, 8X8 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 8X16, 16X8, 16X16 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 16X32, 32X16, 32X32 - PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, - // 32X64, 64X32, 64X64 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#endif // CONFIG_EXT_PARTITION -#if CONFIG_EXT_PARTITION_TYPES - // 4x16, 16x4, 8x32 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_VERT_4, - // 32x8 - PARTITION_HORZ_4 -#else - // 4x16, 16x4, 8x32 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 32x8 - PARTITION_INVALID -#endif - }, { // 64X64 -> -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#endif - // 4X4 - PARTITION_SPLIT, - // 4X8, 8X4, 8X8 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 8X16, 16X8, 16X16 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 16X32, 32X16, 32X32 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 32X64, 64X32, 64X64 - PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#endif // CONFIG_EXT_PARTITION -#if CONFIG_EXT_PARTITION_TYPES - // 4x16, 16x4, 8x32 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 32x8 - PARTITION_SPLIT -#else - // 4x16, 16x4, 8x32 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 32x8 - PARTITION_INVALID -#endif // CONFIG_EXT_PARTITION_TYPES -#if CONFIG_EXT_PARTITION - }, { // 128x128 -> -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, -#endif - // 4X4 - PARTITION_SPLIT, - // 4X8, 8X4, 8X8 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 8X16, 16X8, 16X16 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 16X32, 32X16, 32X32 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 32X64, 64X32, 64X64 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 64x128, 128x64, 128x128 - PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE, -#if CONFIG_EXT_PARTITION_TYPES - // 4x16, 16x4, 8x32 - PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT, - // 32x8 - PARTITION_SPLIT -#else - // 4x16, 16x4, 8x32 - PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID, - // 32x8 - PARTITION_INVALID -#endif // CONFIG_EXT_PARTITION_TYPES -#endif // CONFIG_EXT_PARTITION - } -}; - #if CONFIG_EXT_PARTITION_TYPES static const BLOCK_SIZE subsize_lookup[EXT_PARTITION_TYPES][BLOCK_SIZES_ALL] = #else @@ -358,8 +341,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = #endif // CONFIG_EXT_PARTITION // 4X16, 16X4, 8X32 BLOCK_4X16, BLOCK_16X4, BLOCK_8X32, - // 32X8, - BLOCK_32X8, + // 32X8, 16X64, 64X16 + BLOCK_32X8, BLOCK_16X64, BLOCK_64X16, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + BLOCK_32X128, BLOCK_128X32 +#endif // CONFIG_EXT_PARTITION }, { // PARTITION_HORZ #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, @@ -384,8 +371,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = #endif // CONFIG_EXT_PARTITION // 4X16, 16X4, 8X32 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, - BLOCK_INVALID, + // 32X8, 16X64, 64X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + BLOCK_INVALID, BLOCK_INVALID +#endif // CONFIG_EXT_PARTITION }, { // PARTITION_VERT #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, @@ -410,8 +401,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = #endif // CONFIG_EXT_PARTITION // 4X16, 16X4, 8X32 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, - BLOCK_INVALID, + // 32X8, 16X64, 64X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + BLOCK_INVALID, BLOCK_INVALID +#endif // CONFIG_EXT_PARTITION }, { // PARTITION_SPLIT #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, @@ -433,8 +428,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = #endif // CONFIG_EXT_PARTITION // 4X16, 16X4, 8X32 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, - BLOCK_INVALID, + // 32X8, 16X64, 64X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + BLOCK_INVALID, BLOCK_INVALID +#endif // CONFIG_EXT_PARTITION #if CONFIG_EXT_PARTITION_TYPES }, { // PARTITION_HORZ_A #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 @@ -457,8 +456,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = #endif // CONFIG_EXT_PARTITION // 4X16, 16X4, 8X32 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, - BLOCK_INVALID, + // 32X8, 16X64, 64X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + BLOCK_INVALID, BLOCK_INVALID +#endif // CONFIG_EXT_PARTITION }, { // PARTITION_HORZ_B #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, @@ -480,8 +483,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = #endif // CONFIG_EXT_PARTITION // 4X16, 16X4, 8X32 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, - BLOCK_INVALID, + // 32X8, 16X64, 64X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + BLOCK_INVALID, BLOCK_INVALID +#endif // CONFIG_EXT_PARTITION }, { // PARTITION_VERT_A #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, @@ -503,8 +510,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = #endif // CONFIG_EXT_PARTITION // 4X16, 16X4, 8X32 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, - BLOCK_INVALID, + // 32X8, 16X64, 64X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + BLOCK_INVALID, BLOCK_INVALID +#endif // CONFIG_EXT_PARTITION }, { // PARTITION_VERT_B #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 // 2X2, 2X4, 4X2, @@ -526,8 +537,12 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = #endif // CONFIG_EXT_PARTITION // 4X16, 16X4, 8X32 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, - BLOCK_INVALID, + // 32X8, 16X64, 64X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + BLOCK_INVALID, BLOCK_INVALID +#endif // CONFIG_EXT_PARTITION }, { // PARTITION_HORZ_4 #if CONFIG_CB4X4 // 2X2, 2X4, 4X2, @@ -545,15 +560,19 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = // 16X32, 32X16, 32X32 BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X8, // 32X64, 64X32, 64X64 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X16, #if CONFIG_EXT_PARTITION // 64x128, 128x64, 128x128 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X32, #endif // CONFIG_EXT_PARTITION // 4X16, 16X4, 8X32 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, - BLOCK_INVALID, + // 32X8, 16X64, 64X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + BLOCK_INVALID, BLOCK_INVALID +#endif // CONFIG_EXT_PARTITION }, { // PARTITION_VERT_4 #if CONFIG_CB4X4 // 2X2, 2X4, 4X2, @@ -571,15 +590,19 @@ static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = // 16X32, 32X16, 32X32 BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X32, // 32X64, 64X32, 64X64 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X64, #if CONFIG_EXT_PARTITION // 64x128, 128x64, 128x128 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, + BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X128, #endif // CONFIG_EXT_PARTITION // 4X16, 16X4, 8X32 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, - BLOCK_INVALID, + // 32X8, 16X64, 64X16 + BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + BLOCK_INVALID, BLOCK_INVALID +#endif // CONFIG_EXT_PARTITION #endif // CONFIG_EXT_PARTITION_TYPES } }; @@ -618,8 +641,12 @@ static const TX_SIZE max_txsize_lookup[BLOCK_SIZES_ALL] = { #endif // CONFIG_TX64X64 // 4x16, 16x4, 8x32 TX_4X4, TX_4X4, TX_8X8, - // 32x8 - TX_8X8 + // 32x8, 16x64 64x16 + TX_8X8, TX_16X16, TX_16X16, +#if CONFIG_EXT_PARTITION + // 32x128 128x32 + TX_32X32, TX_32X32 +#endif // CONFIG_EXT_PARTITION }; #if CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) @@ -638,9 +665,9 @@ static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES_ALL] = { TX_8X16, TX_16X8, TX_16X16, // 16X32, 32X16, 32X32 TX_16X32, TX_32X16, TX_32X32, - // 32X64, 64X32, - TX_32X32, TX_32X32, #if CONFIG_TX64X64 + // 32X64, 64X32, + TX_32X64, TX_64X32, // 64X64 TX_64X64, #if CONFIG_EXT_PARTITION @@ -648,6 +675,8 @@ static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES_ALL] = { TX_64X64, TX_64X64, TX_64X64, #endif // CONFIG_EXT_PARTITION #else + // 32X64, 64X32, + TX_32X32, TX_32X32, // 64X64 TX_32X32, #if CONFIG_EXT_PARTITION @@ -659,13 +688,19 @@ static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES_ALL] = { // 4x16, 16x4, 8x32 TX_4X16, TX_16X4, TX_8X32, // 32x8 - TX_32X8 + TX_32X8, #else // 4x16, 16x4, 8x32 TX_4X8, TX_8X4, TX_8X16, // 32x8 - TX_16X8 + TX_16X8, #endif + // 16x64, 64x16 + TX_16X32, TX_32X16, +#if CONFIG_EXT_PARTITION + // 32x128 128x32 + TX_32X32, TX_32X32 +#endif // CONFIG_EXT_PARTITION }; #if CONFIG_RECT_TX_EXT @@ -690,8 +725,12 @@ static const TX_SIZE quarter_txsize_lookup[BLOCK_SIZES_ALL] = { #endif // 4x16, 16x4, 8x32 TX_4X16, TX_16X4, TX_8X32, - // 32x8 - TX_32X8 + // 32x8 16x64 64x16 + TX_32X8, TX_INVALID, TX_INVALID, +#if CONFIG_EXT_PARTITION + // 32x128 128x32 + TX_INVALID, TX_INVALID +#endif // CONFIG_EXT_PARTITION }; #endif #else @@ -738,9 +777,9 @@ static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES_ALL] = { TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, // 16X32, 32X16, 32X32 TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, - // 32X64, 64X32, - TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, #if CONFIG_TX64X64 + // 32X64, 64X32, + TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, // 64X64 TX_64X64 - TX_8X8, #if CONFIG_EXT_PARTITION @@ -748,6 +787,8 @@ static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES_ALL] = { TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, #endif // CONFIG_EXT_PARTITION #else + // 32X64, 64X32, + TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, // 64X64 TX_32X32 - TX_8X8, #if CONFIG_EXT_PARTITION @@ -757,10 +798,14 @@ static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES_ALL] = { #endif // CONFIG_TX64X64 // TODO(david.barker): Change these if we support rectangular transforms // for 4:1 shaped partitions - // 4x16, 16x4, 8x32 - INT32_MIN, INT32_MIN, TX_8X8 - TX_8X8, - // 32x8 - TX_8X8 - TX_8X8 + // 4x16, 16x4, 8x32 + TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, + // 32x8, 16x64, 64x16 + TX_8X8 - TX_8X8, TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + TX_32X32 - TX_8X8, TX_32X32 - TX_8X8 +#endif // CONFIG_EXT_PARTITION }; #else // Same as "max_txsize_lookup[bsize] - TX_8X8", invalid for bsize < 8X8 @@ -777,9 +822,9 @@ static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES_ALL] = { TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_16X16 - TX_8X8, // 16X32, 32X16, 32X32 TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, TX_32X32 - TX_8X8, - // 32X64, 64X32, - TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, #if CONFIG_TX64X64 + // 32X64, 64X32, + TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, // 64X64 TX_64X64 - TX_8X8, #if CONFIG_EXT_PARTITION @@ -787,6 +832,8 @@ static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES_ALL] = { TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, #endif // CONFIG_EXT_PARTITION #else + // 32X64, 64X32, + TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, // 64X64 TX_32X32 - TX_8X8, #if CONFIG_EXT_PARTITION @@ -794,10 +841,14 @@ static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES_ALL] = { TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, #endif // CONFIG_EXT_PARTITION #endif // CONFIG_TX64X64 - // 4x16, 16x4, 8x32 - INT32_MIN, INT32_MIN, TX_8X8 - TX_8X8, - // 32x8 - TX_8X8 - TX_8X8 + // 4x16, 16x4, 8x32 + TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, + // 32x8 16x64, 64x16 + TX_8X8 - TX_8X8, TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, +#if CONFIG_EXT_PARTITION + // 32x128, 128x32 + TX_32X32 - TX_8X8, TX_32X32 - TX_8X8 +#endif // CONFIG_EXT_PARTITION }; #endif // CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) @@ -822,6 +873,10 @@ static const TX_SIZE sub_tx_size_map[TX_SIZES_ALL] = { TX_8X8, // TX_16X8 TX_16X16, // TX_16X32 TX_16X16, // TX_32X16 +#if CONFIG_TX64X64 + TX_32X32, // TX_32X64 + TX_32X32, // TX_64X32 +#endif // CONFIG_TX64X64 TX_4X4, // TX_4X16 TX_4X4, // TX_16X4 TX_8X8, // TX_8X32 @@ -845,6 +900,10 @@ static const TX_SIZE txsize_horz_map[TX_SIZES_ALL] = { TX_16X16, // TX_16X8 TX_16X16, // TX_16X32 TX_32X32, // TX_32X16 +#if CONFIG_TX64X64 + TX_32X32, // TX_32X64 + TX_64X64, // TX_64X32 +#endif // CONFIG_TX64X64 TX_4X4, // TX_4X16 TX_16X16, // TX_16X4 TX_8X8, // TX_8X32 @@ -868,6 +927,10 @@ static const TX_SIZE txsize_vert_map[TX_SIZES_ALL] = { TX_8X8, // TX_16X8 TX_32X32, // TX_16X32 TX_16X16, // TX_32X16 +#if CONFIG_TX64X64 + TX_64X64, // TX_32X64 + TX_32X32, // TX_64X32 +#endif // CONFIG_TX64X64 TX_16X16, // TX_4X16 TX_4X4, // TX_16X4 TX_32X32, // TX_8X32 @@ -885,11 +948,15 @@ static const int tx_size_wide[TX_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 2, #endif - 4, 8, 16, 32, + 4, 8, 16, 32, #if CONFIG_TX64X64 64, #endif // CONFIG_TX64X64 - 4, 8, 8, 16, 16, 32, 4, 16, 8, 32 + 4, 8, 8, 16, 16, 32, +#if CONFIG_TX64X64 + 32, 64, +#endif // CONFIG_TX64X64 + 4, 16, 8, 32 }; #if CONFIG_CHROMA_2X2 @@ -903,44 +970,64 @@ static const int tx_size_high[TX_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 2, #endif - 4, 8, 16, 32, + 4, 8, 16, 32, #if CONFIG_TX64X64 64, #endif // CONFIG_TX64X64 - 8, 4, 16, 8, 32, 16, 16, 4, 32, 8 + 8, 4, 16, 8, 32, 16, +#if CONFIG_TX64X64 + 64, 32, +#endif // CONFIG_TX64X64 + 16, 4, 32, 8 }; // Transform block width in unit static const int tx_size_wide_unit[TX_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 - 1, 2, 4, 8, 16, + 1, 2, 4, 8, 16, #if CONFIG_TX64X64 32, #endif // CONFIG_TX64X64 - 2, 4, 4, 8, 8, 16, 2, 8, 4, 16 + 2, 4, 4, 8, 8, 16, +#if CONFIG_TX64X64 + 16, 32, +#endif // CONFIG_TX64X64 + 2, 8, 4, 16 #else // CONFIG_CHROMA_2X2 - 1, 2, 4, 8, + 1, 2, 4, 8, #if CONFIG_TX64X64 16, #endif // CONFIG_TX64X64 - 1, 2, 2, 4, 4, 8, 1, 4, 2, 8 + 1, 2, 2, 4, 4, 8, +#if CONFIG_TX64X64 + 8, 16, +#endif // CONFIG_TX64X64 + 1, 4, 2, 8 #endif // CONFIG_CHROMA_2X2 }; // Transform block height in unit static const int tx_size_high_unit[TX_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 - 1, 2, 4, 8, 16, + 1, 2, 4, 8, 16, #if CONFIG_TX64X64 32, #endif // CONFIG_TX64X64 - 4, 2, 8, 4, 16, 8, 8, 2, 16, 4 + 4, 2, 8, 4, 16, 8, +#if CONFIG_TX64X64 + 32, 16, +#endif // CONFIG_TX64X64 + 8, 2, 16, 4 #else // CONFIG_CHROMA_2X2 1, 2, 4, 8, #if CONFIG_TX64X64 16, #endif // CONFIG_TX64X64 - 2, 1, 4, 2, 8, 4, 4, 1, 8, 2 + 2, 1, 4, 2, 8, 4, +#if CONFIG_TX64X64 + 16, 8, +#endif // CONFIG_TX64X64 + 4, 1, 8, 2 #endif // CONFIG_CHROMA_2X2 }; @@ -953,7 +1040,11 @@ static const int tx_size_wide_log2[TX_SIZES_ALL] = { #if CONFIG_TX64X64 6, #endif // CONFIG_TX64X64 - 2, 3, 3, 4, 4, 5, 2, 4, 3, 5 + 2, 3, 3, 4, 4, 5, +#if CONFIG_TX64X64 + 5, 6, +#endif // CONFIG_TX64X64 + 2, 4, 3, 5 }; // Transform block height in log2 @@ -965,7 +1056,11 @@ static const int tx_size_high_log2[TX_SIZES_ALL] = { #if CONFIG_TX64X64 6, #endif // CONFIG_TX64X64 - 3, 2, 4, 3, 5, 4, 4, 2, 5, 3 + 3, 2, 4, 3, 5, 4, +#if CONFIG_TX64X64 + 6, 5, +#endif // CONFIG_TX64X64 + 4, 2, 5, 3 }; #define TX_UNIT_WIDE_LOG2 (MI_SIZE_LOG2 - tx_size_wide_log2[0]) @@ -975,11 +1070,15 @@ static const int tx_size_2d[TX_SIZES_ALL] = { #if CONFIG_CHROMA_2X2 4, #endif - 16, 64, 256, 1024, + 16, 64, 256, 1024, #if CONFIG_TX64X64 4096, #endif // CONFIG_TX64X64 - 32, 32, 128, 128, 512, 512, 64, 64, 256, 256 + 32, 32, 128, 128, 512, 512, +#if CONFIG_TX64X64 + 2048, 2048, +#endif // CONFIG_TX64X64 + 64, 64, 256, 256 }; static const BLOCK_SIZE txsize_to_bsize[TX_SIZES_ALL] = { @@ -999,6 +1098,10 @@ static const BLOCK_SIZE txsize_to_bsize[TX_SIZES_ALL] = { BLOCK_16X8, // TX_16X8 BLOCK_16X32, // TX_16X32 BLOCK_32X16, // TX_32X16 +#if CONFIG_TX64X64 + BLOCK_32X64, // TX_32X64 + BLOCK_64X32, // TX_64X32 +#endif // CONFIG_TX64X64 BLOCK_4X16, // TX_4X16 BLOCK_16X4, // TX_16X4 BLOCK_8X32, // TX_8X32 @@ -1022,6 +1125,10 @@ static const TX_SIZE txsize_sqr_map[TX_SIZES_ALL] = { TX_8X8, // TX_16X8 TX_16X16, // TX_16X32 TX_16X16, // TX_32X16 +#if CONFIG_TX64X64 + TX_32X32, // TX_32X64 + TX_32X32, // TX_64X32 +#endif // CONFIG_TX64X64 TX_4X4, // TX_4X16 TX_4X4, // TX_16X4 TX_8X8, // TX_8X32 @@ -1045,6 +1152,10 @@ static const TX_SIZE txsize_sqr_up_map[TX_SIZES_ALL] = { TX_16X16, // TX_16X8 TX_32X32, // TX_16X32 TX_32X32, // TX_32X16 +#if CONFIG_TX64X64 + TX_64X64, // TX_32X64 + TX_64X64, // TX_64X32 +#endif // CONFIG_TX64X64 TX_16X16, // TX_4X16 TX_16X16, // TX_16X4 TX_32X32, // TX_8X32 @@ -1100,10 +1211,16 @@ static const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES_ALL][2][2] = { { { BLOCK_128X64, BLOCK_INVALID }, { BLOCK_64X64, BLOCK_64X32 } }, { { BLOCK_128X128, BLOCK_128X64 }, { BLOCK_64X128, BLOCK_64X64 } }, #endif // CONFIG_EXT_PARTITION - { { BLOCK_4X16, BLOCK_4X8 }, { BLOCK_INVALID, BLOCK_INVALID } }, - { { BLOCK_16X4, BLOCK_INVALID }, { BLOCK_8X4, BLOCK_INVALID } }, + { { BLOCK_4X16, BLOCK_4X8 }, { BLOCK_INVALID, BLOCK_4X8 } }, + { { BLOCK_16X4, BLOCK_INVALID }, { BLOCK_8X4, BLOCK_8X4 } }, { { BLOCK_8X32, BLOCK_8X16 }, { BLOCK_INVALID, BLOCK_4X16 } }, { { BLOCK_32X8, BLOCK_INVALID }, { BLOCK_16X8, BLOCK_16X4 } }, + { { BLOCK_16X64, BLOCK_16X32 }, { BLOCK_INVALID, BLOCK_8X32 } }, + { { BLOCK_64X16, BLOCK_INVALID }, { BLOCK_32X16, BLOCK_32X8 } }, +#if CONFIG_EXT_PARTITION + { { BLOCK_32X128, BLOCK_32X64 }, { BLOCK_INVALID, BLOCK_16X64 } }, + { { BLOCK_128X32, BLOCK_INVALID }, { BLOCK_64X32, BLOCK_64X16 } }, +#endif // CONFIG_EXT_PARTITION }; static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { @@ -1123,6 +1240,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#if CONFIG_TX64X64 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#endif // CONFIG_TX64X64 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, @@ -1147,13 +1268,17 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#if CONFIG_TX64X64 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#endif // CONFIG_TX64X64 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, }, { - // BLOCK_2X4 + // BLOCK_4X2 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, @@ -1165,6 +1290,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#if CONFIG_TX64X64 + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, + { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, +#endif // CONFIG_TX64X64 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, @@ -1175,7 +1304,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { }, #elif CONFIG_CHROMA_SUB8X8 { - // BLOCK_2X2 + // BLOCK_2x2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1186,6 +1315,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1209,13 +1342,17 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, }, { - // BLOCK_2X4 + // BLOCK_4X2 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1226,6 +1363,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1252,6 +1393,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1284,6 +1429,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1313,6 +1462,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, @@ -1336,6 +1489,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, @@ -1351,7 +1508,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, #if CONFIG_TX64X64 - { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, + { { TX_8X16, TX_8X8 }, { TX_4X4, TX_4X4 } }, #endif // CONFIG_TX64X64 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, @@ -1359,6 +1516,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, +#if CONFIG_TX64X64 + { { TX_8X16, TX_8X8 }, { TX_4X4, TX_4X4 } }, + { { TX_8X16, TX_8X8 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, { { TX_8X16, TX_8X8 }, { TX_4X16, TX_4X8 } }, @@ -1374,7 +1535,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, #if CONFIG_TX64X64 - { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, + { { TX_16X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, #endif // CONFIG_TX64X64 { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, @@ -1382,6 +1543,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, // used { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, +#if CONFIG_TX64X64 + { { TX_16X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, + { { TX_16X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, { { TX_8X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, @@ -1405,6 +1570,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } }, { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } }, +#if CONFIG_TX64X64 + { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, @@ -1420,7 +1589,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, #if CONFIG_TX64X64 - { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, + { { TX_16X32, TX_16X16 }, { TX_8X8, TX_8X8 } }, #endif // CONFIG_TX64X64 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, @@ -1428,6 +1597,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, { { TX_16X32, TX_16X16 }, { TX_8X16, TX_8X16 } }, // used { { TX_16X32, TX_16X16 }, { TX_8X16, TX_8X16 } }, +#if CONFIG_TX64X64 + { { TX_16X32, TX_16X16 }, { TX_8X8, TX_8X8 } }, + { { TX_16X32, TX_16X16 }, { TX_8X8, TX_8X8 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, { { TX_8X32, TX_8X16 }, { TX_8X32, TX_8X16 } }, @@ -1443,7 +1616,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, #if CONFIG_TX64X64 - { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, + { { TX_32X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, #endif // CONFIG_TX64X64 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, @@ -1451,6 +1624,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } }, { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } }, // used +#if CONFIG_TX64X64 + { { TX_32X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, + { { TX_32X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, @@ -1474,6 +1651,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } }, { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } }, +#if CONFIG_TX64X64 + { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } }, + { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, @@ -1497,6 +1678,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X32 }, { TX_16X16, TX_16X16 } }, { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } }, +#if CONFIG_TX64X64 + { { TX_32X64, TX_32X32 }, { TX_16X16, TX_16X16 } }, + { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, @@ -1520,6 +1705,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } }, { { TX_32X16, TX_16X16 }, { TX_32X16, TX_16X16 } }, +#if CONFIG_TX64X64 + { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, + { { TX_64X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, @@ -1543,6 +1732,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, { { TX_32X16, TX_32X16 }, { TX_32X16, TX_16X16 } }, +#if CONFIG_TX64X64 + { { TX_32X64, TX_32X32 }, { TX_16X16, TX_16X16 } }, + { { TX_64X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, @@ -1559,7 +1752,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, #if CONFIG_TX64X64 - { { TX_64X64, TX_64X64 }, { TX_32X32, TX_32X32 } }, + { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } }, #endif // CONFIG_TX64X64 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, @@ -1567,6 +1760,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, +#if CONFIG_TX64X64 + { { TX_32X64, TX_32X32 }, { TX_16X16, TX_16X16 } }, + { { TX_64X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, +#endif // CONFIG_TX64X64 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, @@ -1582,7 +1779,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, #if CONFIG_TX64X64 - { { TX_64X64, TX_32X32 }, { TX_64X64, TX_32X32 } }, + { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } }, #endif // CONFIG_TX64X64 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, @@ -1590,6 +1787,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, +#if CONFIG_TX64X64 + { { TX_32X64, TX_32X32 }, { TX_16X16, TX_16X16 } }, + { { TX_64X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, @@ -1605,7 +1806,7 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, #if CONFIG_TX64X64 - { { TX_64X64, TX_64X64 }, { TX_64X64, TX_64X64 } }, + { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } }, #endif // CONFIG_TX64X64 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, @@ -1613,6 +1814,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, +#if CONFIG_TX64X64 + { { TX_32X64, TX_32X32 }, { TX_16X16, TX_16X16 } }, + { { TX_64X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, @@ -1639,6 +1844,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X8 }, { TX_4X4, TX_4X4 } }, { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_4X16, TX_4X8 }, { TX_4X4, TX_4X4 } }, @@ -1664,6 +1873,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, +#if CONFIG_TX64X64 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, { { TX_16X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, @@ -1687,6 +1900,10 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_8X8, TX_8X8 }, { TX_4X8, TX_4X8 } }, { { TX_8X16, TX_8X16 }, { TX_4X8, TX_4X8 } }, { { TX_8X16, TX_8X16 }, { TX_4X8, TX_4X8 } }, +#if CONFIG_TX64X64 + { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, { { TX_8X32, TX_8X16 }, { TX_4X16, TX_4X16 } }, @@ -1710,11 +1927,117 @@ static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { { { TX_16X8, TX_8X4 }, { TX_16X8, TX_8X4 } }, { { TX_16X8, TX_8X4 }, { TX_16X8, TX_8X4 } }, { { TX_16X8, TX_8X4 }, { TX_16X8, TX_8X4 } }, +#if CONFIG_TX64X64 + { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, + { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, +#endif // CONFIG_TX64X64 { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, { { TX_8X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, { { TX_32X8, TX_16X4 }, { TX_16X8, TX_16X4 } }, - } + }, + { +// BLOCK_16X64 +#if CONFIG_CHROMA_2X2 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, +#if CONFIG_TX64X64 + { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, +#endif + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X32, TX_16X32 }, { TX_8X16, TX_8X16 } }, + { { TX_16X16, TX_16X16 }, { TX_8X16, TX_8X16 } }, +#if CONFIG_TX64X64 + { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, +#endif + { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, + { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X32, TX_8X32 }, { TX_8X32, TX_8X32 } }, + { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, + }, + { +// BLOCK_64X16 +#if CONFIG_CHROMA_2X2 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, + { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, +#if CONFIG_TX64X64 + { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, +#endif + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, + { { TX_16X16, TX_16X8 }, { TX_16X16, TX_16X8 } }, + { { TX_32X16, TX_16X8 }, { TX_32X16, TX_16X8 } }, +#if CONFIG_TX64X64 + { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, + { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, +#endif + { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, + { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, + { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, + { { TX_32X8, TX_32X8 }, { TX_32X8, TX_32X8 } }, + }, +#if CONFIG_EXT_PARTITION + { +// BLOCK_32X128 +#if CONFIG_CHROMA_2X2 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, + { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } }, +#if CONFIG_TX64X64 + { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } }, +#endif + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, + { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, + { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } }, + { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, + { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, + { { TX_8X32, TX_8X32 }, { TX_8X32, TX_8X32 } }, + { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, + }, + { +// BLOCK_128X32 +#if CONFIG_CHROMA_2X2 + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, +#endif + { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, + { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, + { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, + { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, +#if CONFIG_TX64X64 + { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, +#endif + { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, + { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, + { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, + { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, + { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } }, + { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, + { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, + { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, + { { TX_8X32, TX_8X16 }, { TX_8X32, TX_8X16 } }, + { { TX_32X8, TX_32X8 }, { TX_32X8, TX_32X8 } }, + }, +#endif }; // Generates 4 bit field in which each bit set to 1 represents @@ -1748,10 +2071,14 @@ static const struct { { 0, 16 }, // 128X64- {0b00000, 0b10000} { 0, 0 }, // 128X128-{0b00000, 0b00000} - { 31, 28 }, // 4X16 - {0b11111, 0b11100} - { 28, 31 }, // 16X4 - {0b11100, 0b11111} - { 30, 24 }, // 8X32 - {0b11110, 0b11000} - { 24, 30 }, // 32X8 - {0b11000, 0b11110} + { 31, 28 }, // 4X16 - {0b11111, 0b11100} + { 28, 31 }, // 16X4 - {0b11100, 0b11111} + { 30, 24 }, // 8X32 - {0b11110, 0b11000} + { 24, 30 }, // 32X8 - {0b11000, 0b11110} + { 28, 16 }, // 16X64 - {0b11100, 0b10000} + { 16, 28 }, // 64X16 - {0b10000, 0b11100} + { 24, 0 }, // 32X128- {0b11000, 0b00000} + { 0, 24 }, // 128X32- {0b00000, 0b11000} #else #if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 { 15, 15 }, // 2X2 - {0b1111, 0b1111} @@ -1774,12 +2101,24 @@ static const struct { { 15, 12 }, // 4X16 - {0b1111, 0b1100} { 12, 15 }, // 16X4 - {0b1100, 0b1111} - { 8, 14 }, // 8X32 - {0b1110, 0b1000} - { 14, 8 }, // 32X8 - {0b1000, 0b1110} + { 8, 14 }, // 8X32 - {0b1110, 0b1000} + { 14, 8 }, // 32X8 - {0b1000, 0b1110} + { 12, 0 }, // 16X64- {0b1100, 0b0000} + { 0, 12 }, // 64X16- {0b0000, 0b1100} #endif // CONFIG_EXT_PARTITION }; /* clang-format on */ +#if CONFIG_KF_CTX +static const int intra_mode_context[INTRA_MODES] = { + 0, 1, 2, 3, 4, 4, 4, 4, 3, 0, +#if CONFIG_SMOOTH_HV + 1, 2, +#endif + 0, +}; +#endif + #if CONFIG_SUPERTX static const TX_SIZE uvsupertx_size_lookup[TX_SIZES][2][2] = { // ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 @@ -1831,8 +2170,25 @@ static const ADAPT_OVERLAP_BLOCK adapt_overlap_block_lookup[BLOCK_SIZES_ALL] = { ADAPT_OVERLAP_BLOCK_INVALID, #endif // CONFIG_EXT_PARTITION ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID, + ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID, + ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID, +#if CONFIG_EXT_PARTITION ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID +#endif // CONFIG_EXT_PARTITION }; + +static const BLOCK_SIZE bsize_2_sqr_bsize[BLOCK_SIZES] = { +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 + BLOCK_2X2, BLOCK_2X2, BLOCK_2X2, +#endif + BLOCK_4X4, BLOCK_4X4, BLOCK_4X4, BLOCK_8X8, BLOCK_8X8, + BLOCK_8X8, BLOCK_16X16, BLOCK_16X16, BLOCK_16X16, BLOCK_32X32, + BLOCK_32X32, BLOCK_32X32, BLOCK_64X64, +#if CONFIG_EXT_PARTITION + BLOCK_64X64, BLOCK_64X64, +#endif +}; + #endif // CONFIG_NCOBMC_ADAPT_WEIGHT #if CONFIG_ADAPT_SCAN -- cgit v1.2.3 From bbcc64772580c8a979288791afa02d30bc476d2e Mon Sep 17 00:00:00 2001 From: trav90 Date: Fri, 19 Oct 2018 21:52:15 -0500 Subject: Update aom to v1.0.0 Update aom to commit id d14c5bb4f336ef1842046089849dee4a301fbbf0. --- third_party/aom/av1/common/common_data.h | 2023 ++---------------------------- 1 file changed, 127 insertions(+), 1896 deletions(-) (limited to 'third_party/aom/av1/common/common_data.h') diff --git a/third_party/aom/av1/common/common_data.h b/third_party/aom/av1/common/common_data.h index 1a74fe76e..f521f10bf 100644 --- a/third_party/aom/av1/common/common_data.h +++ b/third_party/aom/av1/common/common_data.h @@ -20,600 +20,78 @@ extern "C" { #endif -#if CONFIG_EXT_PARTITION -#define IF_EXT_PARTITION(...) __VA_ARGS__, -#else -#define IF_EXT_PARTITION(...) -#endif - -// Log 2 conversion lookup tables for block width and height -static const uint8_t b_width_log2_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 0, 0, - 0, -#endif - 0, 0, - 1, 1, - 1, 2, - 2, 2, - 3, 3, - 3, 4, - 4, IF_EXT_PARTITION(4, 5, 5) 0, - 2, 1, - 3, 2, - 4, IF_EXT_PARTITION(3, 5) -}; -static const uint8_t b_height_log2_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 0, 0, - 0, -#endif - 0, 1, - 0, 1, - 2, 1, - 2, 3, - 2, 3, - 4, 3, - 4, IF_EXT_PARTITION(5, 4, 5) 2, - 0, 3, - 1, 4, - 2, IF_EXT_PARTITION(5, 3) +// Log 2 conversion lookup tables in units of mode info(4x4). +static const uint8_t mi_size_wide_log2[BLOCK_SIZES_ALL] = { + 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 0, 2, 1, 3, 2, 4 }; -// Log 2 conversion lookup tables for modeinfo width and height -static const uint8_t mi_width_log2_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 0, 0, - 0, -#endif - 0, 0, - 1, 1, - 1, 2, - 2, 2, - 3, 3, - 3, 4, - 4, IF_EXT_PARTITION(4, 5, 5) 0, - 2, 1, - 3, 2, - 4, IF_EXT_PARTITION(3, 5) -#else // CONFIG_CB4X4 - 0, 0, - 0, 0, - 0, 1, - 1, 1, - 2, 2, - 2, 3, - 3, IF_EXT_PARTITION(3, 4, 4) 0, - 1, 0, - 2, 1, - 3, IF_EXT_PARTITION(2, 4) -#endif -}; -static const uint8_t mi_height_log2_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 0, 0, - 0, -#endif - 0, 1, - 0, 1, - 2, 1, - 2, 3, - 2, 3, - 4, 3, - 4, IF_EXT_PARTITION(5, 4, 5) 2, - 0, 3, - 1, 4, - 2, IF_EXT_PARTITION(5, 3) -#else // CONFIG_CB4X4 - 0, 0, - 0, 0, - 1, 0, - 1, 2, - 1, 2, - 3, 2, - 3, IF_EXT_PARTITION(4, 3, 4) 1, - 0, 2, - 0, 3, - 1, IF_EXT_PARTITION(2, 4) -#endif +static const uint8_t mi_size_high_log2[BLOCK_SIZES_ALL] = { + 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 2, 0, 3, 1, 4, 2 }; -/* clang-format off */ static const uint8_t mi_size_wide[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, 1, -#endif - 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, - IF_EXT_PARTITION(16, 32, 32) 1, 4, 2, 8, 4, 16, IF_EXT_PARTITION(8, 32) -#else // CONFIG_CB4X4 - 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16) 1, 2, 1, 4, - 2, 8, IF_EXT_PARTITION(4, 16) -#endif + 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 1, 4, 2, 8, 4, 16 }; + static const uint8_t mi_size_high[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, 1, -#endif - 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, - IF_EXT_PARTITION(32, 16, 32) 4, 1, 8, 2, 16, 4, IF_EXT_PARTITION(32, 8) -#else // CONFIG_CB4X4 - 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16) 2, 1, 4, 1, - 8, 2, IF_EXT_PARTITION(16, 4) -#endif + 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, 32, 16, 32, 4, 1, 8, 2, 16, 4 }; -/* clang-format on */ // Width/height lookup tables in units of various block sizes static const uint8_t block_size_wide[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 2, 2, - 4, -#endif - 4, 4, - 8, 8, - 8, 16, - 16, 16, - 32, 32, - 32, 64, - 64, IF_EXT_PARTITION(64, 128, 128) 4, - 16, 8, - 32, 16, - 64, IF_EXT_PARTITION(32, 128) + 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 32, + 64, 64, 64, 128, 128, 4, 16, 8, 32, 16, 64 }; static const uint8_t block_size_high[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 2, 4, - 2, -#endif - 4, 8, - 4, 8, - 16, 8, - 16, 32, - 16, 32, - 64, 32, - 64, IF_EXT_PARTITION(128, 64, 128) 16, - 4, 32, - 8, 64, - 16, IF_EXT_PARTITION(128, 32) -}; - -static const uint8_t num_4x4_blocks_wide_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, - 1, -#endif - 1, 1, - 2, 2, - 2, 4, - 4, 4, - 8, 8, - 8, 16, - 16, IF_EXT_PARTITION(16, 32, 32) 1, - 4, 2, - 8, 4, - 16, IF_EXT_PARTITION(8, 32) -}; -static const uint8_t num_4x4_blocks_high_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, - 1, -#endif - 1, 2, - 1, 2, - 4, 2, - 4, 8, - 4, 8, - 16, 8, - 16, IF_EXT_PARTITION(32, 16, 32) 4, - 1, 8, - 2, 16, - 4, IF_EXT_PARTITION(32, 8) -}; -static const uint8_t num_8x8_blocks_wide_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, - 1, -#endif - 1, 1, - 1, 1, - 1, 2, - 2, 2, - 4, 4, - 4, 8, - 8, IF_EXT_PARTITION(8, 16, 16) 1, - 2, 1, - 4, 2, - 8, IF_EXT_PARTITION(4, 16) -}; -static const uint8_t num_8x8_blocks_high_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, - 1, -#endif - 1, 1, - 1, 1, - 2, 1, - 2, 4, - 2, 4, - 8, 4, - 8, IF_EXT_PARTITION(16, 8, 16) 2, - 1, 4, - 1, 8, - 2, IF_EXT_PARTITION(16, 4) -}; -static const uint8_t num_16x16_blocks_wide_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, - 1, -#endif - 1, 1, - 1, 1, - 1, 1, - 1, 1, - 2, 2, - 2, 4, - 4, IF_EXT_PARTITION(4, 8, 8) 1, - 1, 1, - 2, 2, - 4, IF_EXT_PARTITION(2, 8) -}; -static const uint8_t num_16x16_blocks_high_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 1, 1, - 1, -#endif - 1, 1, - 1, 1, - 1, 1, - 1, 2, - 1, 2, - 4, 2, - 4, IF_EXT_PARTITION(8, 4, 8) 1, - 1, 2, - 1, 4, - 2, IF_EXT_PARTITION(8, 2) + 4, 8, 4, 8, 16, 8, 16, 32, 16, 32, 64, + 32, 64, 128, 64, 128, 16, 4, 32, 8, 64, 16 }; // AOMMIN(3, AOMMIN(b_width_log2(bsize), b_height_log2(bsize))) static const uint8_t size_group_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 0, 0, - 0, -#endif - 0, 0, - 0, 1, - 1, 1, - 2, 2, - 2, 3, - 3, 3, - 3, IF_EXT_PARTITION(3, 3, 3) 0, - 0, 1, - 1, 2, - 2, IF_EXT_PARTITION(3, 3) + 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 2, 2 }; static const uint8_t num_pels_log2_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - 2, 3, - 3, -#endif - 4, 5, - 5, 6, - 7, 7, - 8, 9, - 9, 10, - 11, 11, - 12, IF_EXT_PARTITION(13, 13, 14) 6, - 6, 8, - 8, 10, - 10, IF_EXT_PARTITION(12, 12) + 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12, 13, 13, 14, 6, 6, 8, 8, 10, 10 }; /* clang-format off */ -#if CONFIG_EXT_PARTITION_TYPES -static const BLOCK_SIZE subsize_lookup[EXT_PARTITION_TYPES][BLOCK_SIZES_ALL] = -#else -static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES_ALL] = -#endif // CONFIG_EXT_PARTITION_TYPES -{ +static const BLOCK_SIZE subsize_lookup[EXT_PARTITION_TYPES][SQR_BLOCK_SIZES] = { { // PARTITION_NONE -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - BLOCK_2X2, BLOCK_2X4, BLOCK_4X2, -#endif - // 4X4 - BLOCK_4X4, - // 4X8, 8X4, 8X8 - BLOCK_4X8, BLOCK_8X4, BLOCK_8X8, - // 8X16, 16X8, 16X16 - BLOCK_8X16, BLOCK_16X8, BLOCK_16X16, - // 16X32, 32X16, 32X32 - BLOCK_16X32, BLOCK_32X16, BLOCK_32X32, - // 32X64, 64X32, 64X64 - BLOCK_32X64, BLOCK_64X32, BLOCK_64X64, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - BLOCK_64X128, BLOCK_128X64, BLOCK_128X128, -#endif // CONFIG_EXT_PARTITION - // 4X16, 16X4, 8X32 - BLOCK_4X16, BLOCK_16X4, BLOCK_8X32, - // 32X8, 16X64, 64X16 - BLOCK_32X8, BLOCK_16X64, BLOCK_64X16, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - BLOCK_32X128, BLOCK_128X32 -#endif // CONFIG_EXT_PARTITION + BLOCK_4X4, BLOCK_8X8, BLOCK_16X16, + BLOCK_32X32, BLOCK_64X64, BLOCK_128X128 }, { // PARTITION_HORZ -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 4X4 - BLOCK_4X2, -#else - // 4X4 - BLOCK_INVALID, -#endif - // 4X8, 8X4, 8X8 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X4, - // 8X16, 16X8, 16X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X8, - // 16X32, 32X16, 32X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X16, - // 32X64, 64X32, 64X64 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X32, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64, -#endif // CONFIG_EXT_PARTITION - // 4X16, 16X4, 8X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, 16X64, 64X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - BLOCK_INVALID, BLOCK_INVALID -#endif // CONFIG_EXT_PARTITION + BLOCK_INVALID, BLOCK_8X4, BLOCK_16X8, + BLOCK_32X16, BLOCK_64X32, BLOCK_128X64 }, { // PARTITION_VERT -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 4X4 - BLOCK_2X4, -#else - // 4X4 - BLOCK_INVALID, -#endif - // 4X8, 8X4, 8X8 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X8, - // 8X16, 16X8, 16X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X16, - // 16X32, 32X16, 32X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X32, - // 32X64, 64X32, 64X64 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X64, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128, -#endif // CONFIG_EXT_PARTITION - // 4X16, 16X4, 8X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, 16X64, 64X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - BLOCK_INVALID, BLOCK_INVALID -#endif // CONFIG_EXT_PARTITION + BLOCK_INVALID, BLOCK_4X8, BLOCK_8X16, + BLOCK_16X32, BLOCK_32X64, BLOCK_64X128 }, { // PARTITION_SPLIT -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#endif - // 4X4 - BLOCK_INVALID, - // 4X8, 8X4, 8X8 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X4, - // 8X16, 16X8, 16X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X8, - // 16X32, 32X16, 32X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X16, - // 32X64, 64X32, 64X64 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X32, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X64, -#endif // CONFIG_EXT_PARTITION - // 4X16, 16X4, 8X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, 16X64, 64X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - BLOCK_INVALID, BLOCK_INVALID -#endif // CONFIG_EXT_PARTITION -#if CONFIG_EXT_PARTITION_TYPES + BLOCK_INVALID, BLOCK_4X4, BLOCK_8X8, + BLOCK_16X16, BLOCK_32X32, BLOCK_64X64 }, { // PARTITION_HORZ_A -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#endif - // 4X4 - BLOCK_INVALID, - // 4X8, 8X4, 8X8 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X4, - // 8X16, 16X8, 16X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X8, - // 16X32, 32X16, 32X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X16, - // 32X64, 64X32, 64X64 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X32, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64, -#endif // CONFIG_EXT_PARTITION - // 4X16, 16X4, 8X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, 16X64, 64X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - BLOCK_INVALID, BLOCK_INVALID -#endif // CONFIG_EXT_PARTITION + BLOCK_INVALID, BLOCK_8X4, BLOCK_16X8, + BLOCK_32X16, BLOCK_64X32, BLOCK_128X64 }, { // PARTITION_HORZ_B -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#endif - // 4X4 - BLOCK_INVALID, - // 4X8, 8X4, 8X8 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X4, - // 8X16, 16X8, 16X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X8, - // 16X32, 32X16, 32X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X16, - // 32X64, 64X32, 64X64 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X32, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64, -#endif // CONFIG_EXT_PARTITION - // 4X16, 16X4, 8X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, 16X64, 64X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - BLOCK_INVALID, BLOCK_INVALID -#endif // CONFIG_EXT_PARTITION + BLOCK_INVALID, BLOCK_8X4, BLOCK_16X8, + BLOCK_32X16, BLOCK_64X32, BLOCK_128X64 }, { // PARTITION_VERT_A -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#endif - // 4X4 - BLOCK_INVALID, - // 4X8, 8X4, 8X8 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X8, - // 8X16, 16X8, 16X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X16, - // 16X32, 32X16, 32X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X32, - // 32X64, 64X32, 64X64 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X64, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128, -#endif // CONFIG_EXT_PARTITION - // 4X16, 16X4, 8X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, 16X64, 64X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - BLOCK_INVALID, BLOCK_INVALID -#endif // CONFIG_EXT_PARTITION + BLOCK_INVALID, BLOCK_4X8, BLOCK_8X16, + BLOCK_16X32, BLOCK_32X64, BLOCK_64X128 }, { // PARTITION_VERT_B -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#endif - // 4X4 - BLOCK_INVALID, - // 4X8, 8X4, 8X8 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X8, - // 8X16, 16X8, 16X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X16, - // 16X32, 32X16, 32X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X32, - // 32X64, 64X32, 64X64 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X64, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128, -#endif // CONFIG_EXT_PARTITION - // 4X16, 16X4, 8X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, 16X64, 64X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - BLOCK_INVALID, BLOCK_INVALID -#endif // CONFIG_EXT_PARTITION + BLOCK_INVALID, BLOCK_4X8, BLOCK_8X16, + BLOCK_16X32, BLOCK_32X64, BLOCK_64X128 }, { // PARTITION_HORZ_4 -#if CONFIG_CB4X4 - // 2X2, 2X4, 4X2, - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 4X4 - BLOCK_INVALID, -#else - // 4X4 - BLOCK_INVALID, -#endif - // 4X8, 8X4, 8X8 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 8X16, 16X8, 16X16 BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X4, - // 16X32, 32X16, 32X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X8, - // 32X64, 64X32, 64X64 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X16, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X32, -#endif // CONFIG_EXT_PARTITION - // 4X16, 16X4, 8X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, 16X64, 64X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - BLOCK_INVALID, BLOCK_INVALID -#endif // CONFIG_EXT_PARTITION + BLOCK_32X8, BLOCK_64X16, BLOCK_INVALID }, { // PARTITION_VERT_4 -#if CONFIG_CB4X4 - // 2X2, 2X4, 4X2, - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 4X4 - BLOCK_INVALID, -#else - // 4X4 - BLOCK_INVALID, -#endif - // 4X8, 8X4, 8X8 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 8X16, 16X8, 16X16 BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X16, - // 16X32, 32X16, 32X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X32, - // 32X64, 64X32, 64X64 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X64, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X128, -#endif // CONFIG_EXT_PARTITION - // 4X16, 16X4, 8X32 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, - // 32X8, 16X64, 64X16 - BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - BLOCK_INVALID, BLOCK_INVALID -#endif // CONFIG_EXT_PARTITION -#endif // CONFIG_EXT_PARTITION_TYPES + BLOCK_8X32, BLOCK_16X64, BLOCK_INVALID } }; static const TX_SIZE max_txsize_lookup[BLOCK_SIZES_ALL] = { - // 2X2, 2X4, 4X2, -#if CONFIG_CHROMA_2X2 - TX_2X2, TX_2X2, TX_2X2, -#elif CONFIG_CHROMA_SUB8X8 - TX_4X4, TX_4X4, TX_4X4, -#endif // 4X4 TX_4X4, // 4X8, 8X4, 8X8 @@ -624,1436 +102,291 @@ static const TX_SIZE max_txsize_lookup[BLOCK_SIZES_ALL] = { TX_16X16, TX_16X16, TX_32X32, // 32X64, 64X32, TX_32X32, TX_32X32, -#if CONFIG_TX64X64 // 64X64 TX_64X64, -#if CONFIG_EXT_PARTITION // 64x128, 128x64, 128x128 TX_64X64, TX_64X64, TX_64X64, -#endif // CONFIG_EXT_PARTITION -#else - // 64X64 - TX_32X32, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - TX_32X32, TX_32X32, TX_32X32, -#endif // CONFIG_EXT_PARTITION -#endif // CONFIG_TX64X64 // 4x16, 16x4, 8x32 TX_4X4, TX_4X4, TX_8X8, // 32x8, 16x64 64x16 - TX_8X8, TX_16X16, TX_16X16, -#if CONFIG_EXT_PARTITION - // 32x128 128x32 - TX_32X32, TX_32X32 -#endif // CONFIG_EXT_PARTITION + TX_8X8, TX_16X16, TX_16X16 }; -#if CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES_ALL] = { - // 2X2, 2X4, 4X2, -#if CONFIG_CHROMA_2X2 - TX_2X2, TX_2X2, TX_2X2, -#elif CONFIG_CHROMA_SUB8X8 - TX_4X4, TX_4X4, TX_4X4, -#endif // CONFIG_CHROMA_SUB8X8 - // 4X4 - TX_4X4, - // 4X8, 8X4, 8X8 - TX_4X8, TX_8X4, TX_8X8, - // 8X16, 16X8, 16X16 - TX_8X16, TX_16X8, TX_16X16, - // 16X32, 32X16, 32X32 - TX_16X32, TX_32X16, TX_32X32, -#if CONFIG_TX64X64 - // 32X64, 64X32, - TX_32X64, TX_64X32, - // 64X64 - TX_64X64, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - TX_64X64, TX_64X64, TX_64X64, -#endif // CONFIG_EXT_PARTITION -#else - // 32X64, 64X32, - TX_32X32, TX_32X32, - // 64X64 - TX_32X32, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - TX_32X32, TX_32X32, TX_32X32, -#endif // CONFIG_EXT_PARTITION -#endif // CONFIG_TX64X64 -#if CONFIG_RECT_TX_EXT - // 4x16, 16x4, 8x32 - TX_4X16, TX_16X4, TX_8X32, - // 32x8 - TX_32X8, -#else - // 4x16, 16x4, 8x32 - TX_4X8, TX_8X4, TX_8X16, - // 32x8 - TX_16X8, -#endif - // 16x64, 64x16 - TX_16X32, TX_32X16, -#if CONFIG_EXT_PARTITION - // 32x128 128x32 - TX_32X32, TX_32X32 -#endif // CONFIG_EXT_PARTITION -}; - -#if CONFIG_RECT_TX_EXT -static const TX_SIZE quarter_txsize_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - TX_INVALID, TX_INVALID, TX_INVALID, -#endif - // 4x4, - TX_INVALID, - // 4x8, 8x4, 8x8, - TX_INVALID, TX_INVALID, TX_INVALID, - // 8x16, 16x8, 16x16, - TX_4X16, TX_16X4, TX_INVALID, - // 16x32, 32x16, 32x32, - TX_8X32, TX_32X8, TX_INVALID, - // 32x64, 64x32, 64x64 - TX_INVALID, TX_INVALID, TX_INVALID, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - TX_INVALID, TX_INVALID, TX_INVALID, -#endif - // 4x16, 16x4, 8x32 - TX_4X16, TX_16X4, TX_8X32, - // 32x8 16x64 64x16 - TX_32X8, TX_INVALID, TX_INVALID, -#if CONFIG_EXT_PARTITION - // 32x128 128x32 - TX_INVALID, TX_INVALID -#endif // CONFIG_EXT_PARTITION + // 4X4 + TX_4X4, + // 4X8, 8X4, 8X8 + TX_4X8, TX_8X4, TX_8X8, + // 8X16, 16X8, 16X16 + TX_8X16, TX_16X8, TX_16X16, + // 16X32, 32X16, 32X32 + TX_16X32, TX_32X16, TX_32X32, + // 32X64, 64X32, + TX_32X64, TX_64X32, + // 64X64 + TX_64X64, + // 64x128, 128x64, 128x128 + TX_64X64, TX_64X64, TX_64X64, + // 4x16, 16x4, + TX_4X16, TX_16X4, + // 8x32, 32x8 + TX_8X32, TX_32X8, + // 16x64, 64x16 + TX_16X64, TX_64X16 }; -#endif -#else -#define max_txsize_rect_lookup max_txsize_lookup -#endif // CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) static const TX_TYPE_1D vtx_tab[TX_TYPES] = { DCT_1D, ADST_1D, DCT_1D, ADST_1D, -#if CONFIG_EXT_TX FLIPADST_1D, DCT_1D, FLIPADST_1D, ADST_1D, FLIPADST_1D, IDTX_1D, DCT_1D, IDTX_1D, ADST_1D, IDTX_1D, FLIPADST_1D, IDTX_1D, -#endif // CONFIG_EXT_TX }; static const TX_TYPE_1D htx_tab[TX_TYPES] = { DCT_1D, DCT_1D, ADST_1D, ADST_1D, -#if CONFIG_EXT_TX DCT_1D, FLIPADST_1D, FLIPADST_1D, FLIPADST_1D, ADST_1D, IDTX_1D, IDTX_1D, DCT_1D, IDTX_1D, ADST_1D, IDTX_1D, FLIPADST_1D, -#endif // CONFIG_EXT_TX -}; - -#if CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) -// Same as "max_txsize_lookup[bsize] - TX_8X8", except for rectangular -// block which may use a rectangular transform, in which case it is -// "(max_txsize_lookup[bsize] + 1) - TX_8X8", invalid for bsize < 8X8 -static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CB4X4 -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - INT32_MIN, INT32_MIN, INT32_MIN, -#endif - // 4X4, - INT32_MIN, - // 4X8, 8X4, 8X8, - TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, -#else // CONFIG_CB4X4 - // 4X4 - INT32_MIN, - // 4X8, 8X4, 8X8 - INT32_MIN, INT32_MIN, TX_8X8 - TX_8X8, -#endif // CONFIG_CB4X4 - // 8X16, 16X8, 16X16 - TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, - // 16X32, 32X16, 32X32 - TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, -#if CONFIG_TX64X64 - // 32X64, 64X32, - TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, - // 64X64 - TX_64X64 - TX_8X8, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, -#endif // CONFIG_EXT_PARTITION -#else - // 32X64, 64X32, - TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, - // 64X64 - TX_32X32 - TX_8X8, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, -#endif // CONFIG_EXT_PARTITION -#endif // CONFIG_TX64X64 - // TODO(david.barker): Change these if we support rectangular transforms - // for 4:1 shaped partitions - // 4x16, 16x4, 8x32 - TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, - // 32x8, 16x64, 64x16 - TX_8X8 - TX_8X8, TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - TX_32X32 - TX_8X8, TX_32X32 - TX_8X8 -#endif // CONFIG_EXT_PARTITION -}; -#else -// Same as "max_txsize_lookup[bsize] - TX_8X8", invalid for bsize < 8X8 -static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - // 2X2, 2X4, 4X2, - INT32_MIN, INT32_MIN, INT32_MIN, -#endif - // 4X4 - INT32_MIN, - // 4X8, 8X4, 8X8 - INT32_MIN, INT32_MIN, TX_8X8 - TX_8X8, - // 8X16, 16X8, 16X16 - TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_16X16 - TX_8X8, - // 16X32, 32X16, 32X32 - TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, TX_32X32 - TX_8X8, -#if CONFIG_TX64X64 - // 32X64, 64X32, - TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, - // 64X64 - TX_64X64 - TX_8X8, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, -#endif // CONFIG_EXT_PARTITION -#else - // 32X64, 64X32, - TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, - // 64X64 - TX_32X32 - TX_8X8, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, -#endif // CONFIG_EXT_PARTITION -#endif // CONFIG_TX64X64 - // 4x16, 16x4, 8x32 - TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, - // 32x8 16x64, 64x16 - TX_8X8 - TX_8X8, TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, -#if CONFIG_EXT_PARTITION - // 32x128, 128x32 - TX_32X32 - TX_8X8, TX_32X32 - TX_8X8 -#endif // CONFIG_EXT_PARTITION }; -#endif // CONFIG_RECT_TX && (CONFIG_EXT_TX || CONFIG_VAR_TX) -#define inter_tx_size_cat_lookup intra_tx_size_cat_lookup +#define TXSIZE_CAT_INVALID (-1) /* clang-format on */ static const TX_SIZE sub_tx_size_map[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - TX_2X2, // TX_2X2 -#endif TX_4X4, // TX_4X4 TX_4X4, // TX_8X8 TX_8X8, // TX_16X16 TX_16X16, // TX_32X32 -#if CONFIG_TX64X64 TX_32X32, // TX_64X64 -#endif // CONFIG_TX64X64 TX_4X4, // TX_4X8 TX_4X4, // TX_8X4 TX_8X8, // TX_8X16 TX_8X8, // TX_16X8 TX_16X16, // TX_16X32 TX_16X16, // TX_32X16 -#if CONFIG_TX64X64 TX_32X32, // TX_32X64 TX_32X32, // TX_64X32 -#endif // CONFIG_TX64X64 - TX_4X4, // TX_4X16 - TX_4X4, // TX_16X4 - TX_8X8, // TX_8X32 - TX_8X8, // TX_32X8 + TX_4X8, // TX_4X16 + TX_8X4, // TX_16X4 + TX_8X16, // TX_8X32 + TX_16X8, // TX_32X8 + TX_16X32, // TX_16X64 + TX_32X16, // TX_64X16 }; static const TX_SIZE txsize_horz_map[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - TX_2X2, // TX_2X2 -#endif TX_4X4, // TX_4X4 TX_8X8, // TX_8X8 TX_16X16, // TX_16X16 TX_32X32, // TX_32X32 -#if CONFIG_TX64X64 TX_64X64, // TX_64X64 -#endif // CONFIG_TX64X64 TX_4X4, // TX_4X8 TX_8X8, // TX_8X4 TX_8X8, // TX_8X16 TX_16X16, // TX_16X8 TX_16X16, // TX_16X32 TX_32X32, // TX_32X16 -#if CONFIG_TX64X64 TX_32X32, // TX_32X64 TX_64X64, // TX_64X32 -#endif // CONFIG_TX64X64 TX_4X4, // TX_4X16 TX_16X16, // TX_16X4 TX_8X8, // TX_8X32 TX_32X32, // TX_32X8 + TX_16X16, // TX_16X64 + TX_64X64, // TX_64X16 }; static const TX_SIZE txsize_vert_map[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - TX_2X2, // TX_2X2 -#endif TX_4X4, // TX_4X4 TX_8X8, // TX_8X8 TX_16X16, // TX_16X16 TX_32X32, // TX_32X32 -#if CONFIG_TX64X64 TX_64X64, // TX_64X64 -#endif // CONFIG_TX64X64 TX_8X8, // TX_4X8 TX_4X4, // TX_8X4 TX_16X16, // TX_8X16 TX_8X8, // TX_16X8 TX_32X32, // TX_16X32 TX_16X16, // TX_32X16 -#if CONFIG_TX64X64 TX_64X64, // TX_32X64 TX_32X32, // TX_64X32 -#endif // CONFIG_TX64X64 TX_16X16, // TX_4X16 TX_4X4, // TX_16X4 TX_32X32, // TX_8X32 TX_8X8, // TX_32X8 + TX_64X64, // TX_16X64 + TX_16X16, // TX_64X16 }; -#if CONFIG_CHROMA_2X2 -#define TX_SIZE_W_MIN 2 -#else #define TX_SIZE_W_MIN 4 -#endif // Transform block width in pixels static const int tx_size_wide[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - 2, -#endif - 4, 8, 16, 32, -#if CONFIG_TX64X64 - 64, -#endif // CONFIG_TX64X64 - 4, 8, 8, 16, 16, 32, -#if CONFIG_TX64X64 - 32, 64, -#endif // CONFIG_TX64X64 - 4, 16, 8, 32 + 4, 8, 16, 32, 64, 4, 8, 8, 16, 16, 32, 32, 64, 4, 16, 8, 32, 16, 64, }; -#if CONFIG_CHROMA_2X2 -#define TX_SIZE_H_MIN 2 -#else #define TX_SIZE_H_MIN 4 -#endif // Transform block height in pixels static const int tx_size_high[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - 2, -#endif - 4, 8, 16, 32, -#if CONFIG_TX64X64 - 64, -#endif // CONFIG_TX64X64 - 8, 4, 16, 8, 32, 16, -#if CONFIG_TX64X64 - 64, 32, -#endif // CONFIG_TX64X64 - 16, 4, 32, 8 + 4, 8, 16, 32, 64, 8, 4, 16, 8, 32, 16, 64, 32, 16, 4, 32, 8, 64, 16, }; // Transform block width in unit static const int tx_size_wide_unit[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - 1, 2, 4, 8, 16, -#if CONFIG_TX64X64 - 32, -#endif // CONFIG_TX64X64 - 2, 4, 4, 8, 8, 16, -#if CONFIG_TX64X64 - 16, 32, -#endif // CONFIG_TX64X64 - 2, 8, 4, 16 -#else // CONFIG_CHROMA_2X2 - 1, 2, 4, 8, -#if CONFIG_TX64X64 - 16, -#endif // CONFIG_TX64X64 - 1, 2, 2, 4, 4, 8, -#if CONFIG_TX64X64 - 8, 16, -#endif // CONFIG_TX64X64 - 1, 4, 2, 8 -#endif // CONFIG_CHROMA_2X2 + 1, 2, 4, 8, 16, 1, 2, 2, 4, 4, 8, 8, 16, 1, 4, 2, 8, 4, 16, }; // Transform block height in unit static const int tx_size_high_unit[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - 1, 2, 4, 8, 16, -#if CONFIG_TX64X64 - 32, -#endif // CONFIG_TX64X64 - 4, 2, 8, 4, 16, 8, -#if CONFIG_TX64X64 - 32, 16, -#endif // CONFIG_TX64X64 - 8, 2, 16, 4 -#else // CONFIG_CHROMA_2X2 - 1, 2, 4, 8, -#if CONFIG_TX64X64 - 16, -#endif // CONFIG_TX64X64 - 2, 1, 4, 2, 8, 4, -#if CONFIG_TX64X64 - 16, 8, -#endif // CONFIG_TX64X64 - 4, 1, 8, 2 -#endif // CONFIG_CHROMA_2X2 + 1, 2, 4, 8, 16, 2, 1, 4, 2, 8, 4, 16, 8, 4, 1, 8, 2, 16, 4, }; // Transform block width in log2 static const int tx_size_wide_log2[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - 1, -#endif - 2, 3, 4, 5, -#if CONFIG_TX64X64 - 6, -#endif // CONFIG_TX64X64 - 2, 3, 3, 4, 4, 5, -#if CONFIG_TX64X64 - 5, 6, -#endif // CONFIG_TX64X64 - 2, 4, 3, 5 + 2, 3, 4, 5, 6, 2, 3, 3, 4, 4, 5, 5, 6, 2, 4, 3, 5, 4, 6, }; // Transform block height in log2 static const int tx_size_high_log2[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - 1, -#endif - 2, 3, 4, 5, -#if CONFIG_TX64X64 - 6, -#endif // CONFIG_TX64X64 - 3, 2, 4, 3, 5, 4, -#if CONFIG_TX64X64 - 6, 5, -#endif // CONFIG_TX64X64 - 4, 2, 5, 3 + 2, 3, 4, 5, 6, 3, 2, 4, 3, 5, 4, 6, 5, 4, 2, 5, 3, 6, 4, }; -#define TX_UNIT_WIDE_LOG2 (MI_SIZE_LOG2 - tx_size_wide_log2[0]) -#define TX_UNIT_HIGH_LOG2 (MI_SIZE_LOG2 - tx_size_high_log2[0]) - -static const int tx_size_2d[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - 4, -#endif - 16, 64, 256, 1024, -#if CONFIG_TX64X64 - 4096, -#endif // CONFIG_TX64X64 - 32, 32, 128, 128, 512, 512, -#if CONFIG_TX64X64 - 2048, 2048, -#endif // CONFIG_TX64X64 - 64, 64, 256, 256 +static const int tx_size_2d[TX_SIZES_ALL + 1] = { + 16, 64, 256, 1024, 4096, 32, 32, 128, 128, 512, + 512, 2048, 2048, 64, 64, 256, 256, 1024, 1024, }; static const BLOCK_SIZE txsize_to_bsize[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - BLOCK_2X2, // TX_2X2 -#endif BLOCK_4X4, // TX_4X4 BLOCK_8X8, // TX_8X8 BLOCK_16X16, // TX_16X16 BLOCK_32X32, // TX_32X32 -#if CONFIG_TX64X64 BLOCK_64X64, // TX_64X64 -#endif // CONFIG_TX64X64 BLOCK_4X8, // TX_4X8 BLOCK_8X4, // TX_8X4 BLOCK_8X16, // TX_8X16 BLOCK_16X8, // TX_16X8 BLOCK_16X32, // TX_16X32 BLOCK_32X16, // TX_32X16 -#if CONFIG_TX64X64 BLOCK_32X64, // TX_32X64 BLOCK_64X32, // TX_64X32 -#endif // CONFIG_TX64X64 BLOCK_4X16, // TX_4X16 BLOCK_16X4, // TX_16X4 BLOCK_8X32, // TX_8X32 BLOCK_32X8, // TX_32X8 + BLOCK_16X64, // TX_16X64 + BLOCK_64X16, // TX_64X16 }; static const TX_SIZE txsize_sqr_map[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - TX_2X2, // TX_2X2 -#endif TX_4X4, // TX_4X4 TX_8X8, // TX_8X8 TX_16X16, // TX_16X16 TX_32X32, // TX_32X32 -#if CONFIG_TX64X64 TX_64X64, // TX_64X64 -#endif // CONFIG_TX64X64 TX_4X4, // TX_4X8 TX_4X4, // TX_8X4 TX_8X8, // TX_8X16 TX_8X8, // TX_16X8 TX_16X16, // TX_16X32 TX_16X16, // TX_32X16 -#if CONFIG_TX64X64 TX_32X32, // TX_32X64 TX_32X32, // TX_64X32 -#endif // CONFIG_TX64X64 TX_4X4, // TX_4X16 TX_4X4, // TX_16X4 TX_8X8, // TX_8X32 TX_8X8, // TX_32X8 + TX_16X16, // TX_16X64 + TX_16X16, // TX_64X16 }; static const TX_SIZE txsize_sqr_up_map[TX_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 - TX_2X2, // TX_2X2 -#endif TX_4X4, // TX_4X4 TX_8X8, // TX_8X8 TX_16X16, // TX_16X16 TX_32X32, // TX_32X32 -#if CONFIG_TX64X64 TX_64X64, // TX_64X64 -#endif // CONFIG_TX64X64 TX_8X8, // TX_4X8 TX_8X8, // TX_8X4 TX_16X16, // TX_8X16 TX_16X16, // TX_16X8 TX_32X32, // TX_16X32 TX_32X32, // TX_32X16 -#if CONFIG_TX64X64 TX_64X64, // TX_32X64 TX_64X64, // TX_64X32 -#endif // CONFIG_TX64X64 TX_16X16, // TX_4X16 TX_16X16, // TX_16X4 TX_32X32, // TX_8X32 TX_32X32, // TX_32X8 + TX_64X64, // TX_16X64 + TX_64X64, // TX_64X16 +}; + +static const int8_t txsize_log2_minus4[TX_SIZES_ALL] = { + 0, // TX_4X4 + 2, // TX_8X8 + 4, // TX_16X16 + 6, // TX_32X32 + 6, // TX_64X64 + 1, // TX_4X8 + 1, // TX_8X4 + 3, // TX_8X16 + 3, // TX_16X8 + 5, // TX_16X32 + 5, // TX_32X16 + 6, // TX_32X64 + 6, // TX_64X32 + 2, // TX_4X16 + 2, // TX_16X4 + 4, // TX_8X32 + 4, // TX_32X8 + 5, // TX_16X64 + 5, // TX_64X16 }; /* clang-format off */ static const TX_SIZE tx_mode_to_biggest_tx_size[TX_MODES] = { TX_4X4, // ONLY_4X4 - TX_8X8, // ALLOW_8X8 - TX_16X16, // ALLOW_16X16 - TX_32X32, // ALLOW_32X32 -#if CONFIG_TX64X64 - TX_64X64, // ALLOW_64X64 + TX_64X64, // TX_MODE_LARGEST TX_64X64, // TX_MODE_SELECT -#else - TX_32X32, // TX_MODE_SELECT -#endif // CONFIG_TX64X64 }; /* clang-format on */ static const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES_ALL][2][2] = { -// ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 -// ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - { { BLOCK_2X2, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, - { { BLOCK_2X4, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, - { { BLOCK_4X2, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, - { { BLOCK_4X4, BLOCK_4X2 }, { BLOCK_2X4, BLOCK_2X2 } }, - { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_2X4 } }, - { { BLOCK_8X4, BLOCK_INVALID }, { BLOCK_4X4, BLOCK_4X2 } }, -#elif CONFIG_CB4X4 + // ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 + // ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 { { BLOCK_4X4, BLOCK_4X4 }, { BLOCK_4X4, BLOCK_4X4 } }, - { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_4X4 } }, - { { BLOCK_8X4, BLOCK_INVALID }, { BLOCK_4X4, BLOCK_4X4 } }, -#else - { { BLOCK_4X4, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } }, - { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_INVALID } }, - { { BLOCK_8X4, BLOCK_INVALID }, { BLOCK_4X4, BLOCK_INVALID } }, -#endif + { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_4X4, BLOCK_4X4 } }, + { { BLOCK_8X4, BLOCK_4X4 }, { BLOCK_4X4, BLOCK_4X4 } }, { { BLOCK_8X8, BLOCK_8X4 }, { BLOCK_4X8, BLOCK_4X4 } }, - { { BLOCK_8X16, BLOCK_8X8 }, { BLOCK_INVALID, BLOCK_4X8 } }, - { { BLOCK_16X8, BLOCK_INVALID }, { BLOCK_8X8, BLOCK_8X4 } }, + { { BLOCK_8X16, BLOCK_8X8 }, { BLOCK_4X16, BLOCK_4X8 } }, + { { BLOCK_16X8, BLOCK_16X4 }, { BLOCK_8X8, BLOCK_8X4 } }, { { BLOCK_16X16, BLOCK_16X8 }, { BLOCK_8X16, BLOCK_8X8 } }, - { { BLOCK_16X32, BLOCK_16X16 }, { BLOCK_INVALID, BLOCK_8X16 } }, - { { BLOCK_32X16, BLOCK_INVALID }, { BLOCK_16X16, BLOCK_16X8 } }, + { { BLOCK_16X32, BLOCK_16X16 }, { BLOCK_8X32, BLOCK_8X16 } }, + { { BLOCK_32X16, BLOCK_32X8 }, { BLOCK_16X16, BLOCK_16X8 } }, { { BLOCK_32X32, BLOCK_32X16 }, { BLOCK_16X32, BLOCK_16X16 } }, - { { BLOCK_32X64, BLOCK_32X32 }, { BLOCK_INVALID, BLOCK_16X32 } }, - { { BLOCK_64X32, BLOCK_INVALID }, { BLOCK_32X32, BLOCK_32X16 } }, + { { BLOCK_32X64, BLOCK_32X32 }, { BLOCK_16X64, BLOCK_16X32 } }, + { { BLOCK_64X32, BLOCK_64X16 }, { BLOCK_32X32, BLOCK_32X16 } }, { { BLOCK_64X64, BLOCK_64X32 }, { BLOCK_32X64, BLOCK_32X32 } }, -#if CONFIG_EXT_PARTITION { { BLOCK_64X128, BLOCK_64X64 }, { BLOCK_INVALID, BLOCK_32X64 } }, { { BLOCK_128X64, BLOCK_INVALID }, { BLOCK_64X64, BLOCK_64X32 } }, { { BLOCK_128X128, BLOCK_128X64 }, { BLOCK_64X128, BLOCK_64X64 } }, -#endif // CONFIG_EXT_PARTITION - { { BLOCK_4X16, BLOCK_4X8 }, { BLOCK_INVALID, BLOCK_4X8 } }, - { { BLOCK_16X4, BLOCK_INVALID }, { BLOCK_8X4, BLOCK_8X4 } }, + { { BLOCK_4X16, BLOCK_4X8 }, { BLOCK_4X16, BLOCK_4X8 } }, + { { BLOCK_16X4, BLOCK_16X4 }, { BLOCK_8X4, BLOCK_8X4 } }, { { BLOCK_8X32, BLOCK_8X16 }, { BLOCK_INVALID, BLOCK_4X16 } }, { { BLOCK_32X8, BLOCK_INVALID }, { BLOCK_16X8, BLOCK_16X4 } }, { { BLOCK_16X64, BLOCK_16X32 }, { BLOCK_INVALID, BLOCK_8X32 } }, - { { BLOCK_64X16, BLOCK_INVALID }, { BLOCK_32X16, BLOCK_32X8 } }, -#if CONFIG_EXT_PARTITION - { { BLOCK_32X128, BLOCK_32X64 }, { BLOCK_INVALID, BLOCK_16X64 } }, - { { BLOCK_128X32, BLOCK_INVALID }, { BLOCK_64X32, BLOCK_64X16 } }, -#endif // CONFIG_EXT_PARTITION + { { BLOCK_64X16, BLOCK_INVALID }, { BLOCK_32X16, BLOCK_32X8 } } }; -static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES_ALL][TX_SIZES_ALL][2][2] = { -// ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 -// ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 -#if CONFIG_CHROMA_2X2 - { - // BLOCK_2X2 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#if CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#endif // CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#if CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#endif // CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - }, - { - // BLOCK_2X4 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#if CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#endif // CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#if CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#endif // CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - }, - { - // BLOCK_4X2 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#if CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#endif // CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#if CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#endif // CONFIG_TX64X64 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - }, -#elif CONFIG_CHROMA_SUB8X8 - { - // BLOCK_2x2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - }, - { - // BLOCK_2X4 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - }, - { - // BLOCK_4X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - }, -#endif - { -// BLOCK_4X4 -#if CONFIG_CHROMA_2X2 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#else - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - }, - { -// BLOCK_4X8 -#if CONFIG_CHROMA_2X2 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#else - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 -#if CONFIG_CHROMA_2X2 - { { TX_4X8, TX_4X4 }, { TX_2X2, TX_2X2 } }, // used -#else - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, // used -#endif - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - }, - { -// BLOCK_8X4 -#if CONFIG_CHROMA_2X2 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#else - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_CHROMA_2X2 - { { TX_8X4, TX_2X2 }, { TX_4X4, TX_2X2 } }, // used -#else - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, // used -#endif - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - }, - { -// BLOCK_8X8 -#if CONFIG_CHROMA_2X2 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, - { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, - { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, - { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, - { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, - { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, - { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } }, - }, - { -// BLOCK_8X16 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_8X16, TX_8X8 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, // used - { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, -#if CONFIG_TX64X64 - { { TX_8X16, TX_8X8 }, { TX_4X4, TX_4X4 } }, - { { TX_8X16, TX_8X8 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X16, TX_8X8 }, { TX_4X16, TX_4X8 } }, - { { TX_8X8, TX_8X8 }, { TX_4X8, TX_4X8 } }, - }, - { -// BLOCK_16X8 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_16X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, - { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, // used - { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, - { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, -#if CONFIG_TX64X64 - { { TX_16X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, - { { TX_16X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, - { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, - { { TX_16X8, TX_16X4 }, { TX_8X8, TX_8X4 } }, - }, - { -// BLOCK_16X16 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, -#if CONFIG_TX64X64 - { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } }, - { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } }, -#if CONFIG_TX64X64 - { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, - { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, - }, - { -// BLOCK_16X32 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, -#if CONFIG_TX64X64 - { { TX_16X32, TX_16X16 }, { TX_8X8, TX_8X8 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X32, TX_16X16 }, { TX_8X16, TX_8X16 } }, // used - { { TX_16X32, TX_16X16 }, { TX_8X16, TX_8X16 } }, -#if CONFIG_TX64X64 - { { TX_16X32, TX_16X16 }, { TX_8X8, TX_8X8 } }, - { { TX_16X32, TX_16X16 }, { TX_8X8, TX_8X8 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, - { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X32, TX_8X16 }, { TX_8X32, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, - }, - { -// BLOCK_32X16 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, - { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, -#if CONFIG_TX64X64 - { { TX_32X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, - { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } }, - { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } }, // used -#if CONFIG_TX64X64 - { { TX_32X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, - { { TX_32X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, - { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, - }, - { -// BLOCK_32X32 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, - { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } }, -#if CONFIG_TX64X64 - { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, - { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } }, - { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } }, -#if CONFIG_TX64X64 - { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } }, - { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, - { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, - }, - { -// BLOCK_32X64 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, - { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } }, -#if CONFIG_TX64X64 - { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, - { { TX_16X32, TX_16X32 }, { TX_16X16, TX_16X16 } }, - { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } }, -#if CONFIG_TX64X64 - { { TX_32X64, TX_32X32 }, { TX_16X16, TX_16X16 } }, - { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, - { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, - }, - { -// BLOCK_64X32 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, - { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, -#if CONFIG_TX64X64 - { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, - { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } }, - { { TX_32X16, TX_16X16 }, { TX_32X16, TX_16X16 } }, -#if CONFIG_TX64X64 - { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, - { { TX_64X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, - { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, - }, - { -// BLOCK_64X64 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, - { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, -#if CONFIG_TX64X64 - { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, - { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, - { { TX_32X16, TX_32X16 }, { TX_32X16, TX_16X16 } }, -#if CONFIG_TX64X64 - { { TX_32X64, TX_32X32 }, { TX_16X16, TX_16X16 } }, - { { TX_64X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, - { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, - }, -#if CONFIG_EXT_PARTITION - { -// BLOCK_64X128 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, - { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, -#if CONFIG_TX64X64 - { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, - { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, - { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, -#if CONFIG_TX64X64 - { { TX_32X64, TX_32X32 }, { TX_16X16, TX_16X16 } }, - { { TX_64X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, -#endif // CONFIG_TX64X64 - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } }, - }, - { -// BLOCK_128X64 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, - { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, -#if CONFIG_TX64X64 - { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, - { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, - { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, -#if CONFIG_TX64X64 - { { TX_32X64, TX_32X32 }, { TX_16X16, TX_16X16 } }, - { { TX_64X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, - { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, - }, - { -// BLOCK_128X128 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, - { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } }, -#if CONFIG_TX64X64 - { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, - { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, - { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, -#if CONFIG_TX64X64 - { { TX_32X64, TX_32X32 }, { TX_16X16, TX_16X16 } }, - { { TX_64X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, - { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, - }, -#endif // CONFIG_EXT_PARTITION - { -// BLOCK_4X16 -#if CONFIG_CHROMA_2X2 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_4X4, TX_4X4 }, { TX_2X2, TX_2X2 } }, -#else - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X8 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X16, TX_4X8 }, { TX_4X4, TX_4X4 } }, - { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } }, - }, - { -// BLOCK_16X4 -#if CONFIG_CHROMA_2X2 - { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } }, - { { TX_4X4, TX_2X2 }, { TX_4X4, TX_2X2 } }, -#else - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_16X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, - { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, - { { TX_16X4, TX_4X4 }, { TX_8X4, TX_4X4 } }, - }, - { -// BLOCK_8X32 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X16, TX_8X16 }, { TX_4X8, TX_4X8 } }, - { { TX_8X8, TX_8X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X16, TX_8X16 }, { TX_4X8, TX_4X8 } }, - { { TX_8X16, TX_8X16 }, { TX_4X8, TX_4X8 } }, -#if CONFIG_TX64X64 - { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, - { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X32, TX_8X16 }, { TX_4X16, TX_4X16 } }, - { { TX_8X8, TX_8X8 }, { TX_4X8, TX_4X8 } }, - }, - { -// BLOCK_32X8 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif // CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, -#if CONFIG_TX64X64 - { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, - { { TX_16X8, TX_8X4 }, { TX_16X8, TX_8X4 } }, - { { TX_16X8, TX_8X4 }, { TX_16X8, TX_8X4 } }, - { { TX_16X8, TX_8X4 }, { TX_16X8, TX_8X4 } }, -#if CONFIG_TX64X64 - { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } }, -#endif // CONFIG_TX64X64 - { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } }, - { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, - { { TX_8X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, - { { TX_32X8, TX_16X4 }, { TX_16X8, TX_16X4 } }, - }, - { -// BLOCK_16X64 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, -#if CONFIG_TX64X64 - { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, -#endif - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X32, TX_16X32 }, { TX_8X16, TX_8X16 } }, - { { TX_16X16, TX_16X16 }, { TX_8X16, TX_8X16 } }, -#if CONFIG_TX64X64 - { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, -#endif - { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, - { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X32, TX_8X32 }, { TX_8X32, TX_8X32 } }, - { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } }, - }, - { -// BLOCK_64X16 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, - { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, -#if CONFIG_TX64X64 - { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, -#endif - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, - { { TX_16X16, TX_16X8 }, { TX_16X16, TX_16X8 } }, - { { TX_32X16, TX_16X8 }, { TX_32X16, TX_16X8 } }, -#if CONFIG_TX64X64 - { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, - { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, -#endif - { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } }, - { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, - { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } }, - { { TX_32X8, TX_32X8 }, { TX_32X8, TX_32X8 } }, - }, -#if CONFIG_EXT_PARTITION - { -// BLOCK_32X128 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, - { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } }, -#if CONFIG_TX64X64 - { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } }, -#endif - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, - { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } }, - { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } }, - { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, - { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, - { { TX_8X32, TX_8X32 }, { TX_8X32, TX_8X32 } }, - { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } }, - }, - { -// BLOCK_128X32 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } }, - { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, -#if CONFIG_TX64X64 - { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } }, -#endif - { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } }, - { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } }, - { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } }, - { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } }, - { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } }, - { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } }, - { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } }, - { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } }, - { { TX_8X32, TX_8X16 }, { TX_8X32, TX_8X16 } }, - { { TX_32X8, TX_32X8 }, { TX_32X8, TX_32X8 } }, - }, -#endif -}; - -// Generates 4 bit field in which each bit set to 1 represents -// a blocksize partition 1111 means we split 64x64, 32x32, 16x16 -// and 8x8. 1000 means we just split the 64x64 to 32x32 +// Generates 5 bit field in which each bit set to 1 represents +// a blocksize partition 11111 means we split 128x128, 64x64, 32x32, 16x16 +// and 8x8. 10000 means we just split the 128x128 to 64x64 /* clang-format off */ static const struct { PARTITION_CONTEXT above; PARTITION_CONTEXT left; } partition_context_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_EXT_PARTITION -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - { 31, 31 }, // 2X2 - {0b11111, 0b11111} - { 31, 31 }, // 2X4 - {0b11111, 0b11111} - { 31, 31 }, // 4X2 - {0b11111, 0b11111} -#endif { 31, 31 }, // 4X4 - {0b11111, 0b11111} { 31, 30 }, // 4X8 - {0b11111, 0b11110} { 30, 31 }, // 8X4 - {0b11110, 0b11111} @@ -2070,131 +403,29 @@ static const struct { { 16, 0 }, // 64X128- {0b10000, 0b00000} { 0, 16 }, // 128X64- {0b00000, 0b10000} { 0, 0 }, // 128X128-{0b00000, 0b00000} - { 31, 28 }, // 4X16 - {0b11111, 0b11100} { 28, 31 }, // 16X4 - {0b11100, 0b11111} { 30, 24 }, // 8X32 - {0b11110, 0b11000} { 24, 30 }, // 32X8 - {0b11000, 0b11110} { 28, 16 }, // 16X64 - {0b11100, 0b10000} { 16, 28 }, // 64X16 - {0b10000, 0b11100} - { 24, 0 }, // 32X128- {0b11000, 0b00000} - { 0, 24 }, // 128X32- {0b00000, 0b11000} -#else -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - { 15, 15 }, // 2X2 - {0b1111, 0b1111} - { 15, 15 }, // 2X4 - {0b1111, 0b1111} - { 15, 15 }, // 4X2 - {0b1111, 0b1111} -#endif - { 15, 15 }, // 4X4 - {0b1111, 0b1111} - { 15, 14 }, // 4X8 - {0b1111, 0b1110} - { 14, 15 }, // 8X4 - {0b1110, 0b1111} - { 14, 14 }, // 8X8 - {0b1110, 0b1110} - { 14, 12 }, // 8X16 - {0b1110, 0b1100} - { 12, 14 }, // 16X8 - {0b1100, 0b1110} - { 12, 12 }, // 16X16 - {0b1100, 0b1100} - { 12, 8 }, // 16X32 - {0b1100, 0b1000} - { 8, 12 }, // 32X16 - {0b1000, 0b1100} - { 8, 8 }, // 32X32 - {0b1000, 0b1000} - { 8, 0 }, // 32X64 - {0b1000, 0b0000} - { 0, 8 }, // 64X32 - {0b0000, 0b1000} - { 0, 0 }, // 64X64 - {0b0000, 0b0000} - - { 15, 12 }, // 4X16 - {0b1111, 0b1100} - { 12, 15 }, // 16X4 - {0b1100, 0b1111} - { 8, 14 }, // 8X32 - {0b1110, 0b1000} - { 14, 8 }, // 32X8 - {0b1000, 0b1110} - { 12, 0 }, // 16X64- {0b1100, 0b0000} - { 0, 12 }, // 64X16- {0b0000, 0b1100} -#endif // CONFIG_EXT_PARTITION }; /* clang-format on */ -#if CONFIG_KF_CTX static const int intra_mode_context[INTRA_MODES] = { - 0, 1, 2, 3, 4, 4, 4, 4, 3, 0, -#if CONFIG_SMOOTH_HV - 1, 2, -#endif - 0, -}; -#endif - -#if CONFIG_SUPERTX -static const TX_SIZE uvsupertx_size_lookup[TX_SIZES][2][2] = { -// ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 -// ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 -#if CONFIG_CHROMA_2X2 - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, -#endif - { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, - { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } }, - { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } }, -#if CONFIG_TX64X64 - { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } }, -#endif // CONFIG_TX64X64 -}; - -#if CONFIG_EXT_PARTITION_TYPES -static const int partition_supertx_context_lookup[EXT_PARTITION_TYPES] = { - -1, 0, 0, 1, 0, 0, 0, 0, 0, 0 + 0, 1, 2, 3, 4, 4, 4, 4, 3, 0, 1, 2, 0, }; -#else -static const int partition_supertx_context_lookup[PARTITION_TYPES] = { -1, 0, 0, - 1 }; -#endif // CONFIG_EXT_PARTITION_TYPES -#endif // CONFIG_SUPERTX - -#if CONFIG_NCOBMC_ADAPT_WEIGHT -// NCOBMC_ADAPT_INTRPL only supports block size >= BLOCK_8X8 and <= BLOCK_64X64 -static const ADAPT_OVERLAP_BLOCK adapt_overlap_block_lookup[BLOCK_SIZES_ALL] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_2X2 - ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_2X4 - ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_4X2 -#endif - ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_4X4 - ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_4X8 - ADAPT_OVERLAP_BLOCK_INVALID, // BLOCK_8X4 - - // the rest of the block sizes round to the largest squared block less than - // the given block size - ADAPT_OVERLAP_BLOCK_8X8, ADAPT_OVERLAP_BLOCK_8X8, ADAPT_OVERLAP_BLOCK_8X8, - ADAPT_OVERLAP_BLOCK_16X16, ADAPT_OVERLAP_BLOCK_16X16, - ADAPT_OVERLAP_BLOCK_16X16, ADAPT_OVERLAP_BLOCK_32X32, - ADAPT_OVERLAP_BLOCK_32X32, ADAPT_OVERLAP_BLOCK_32X32, - ADAPT_OVERLAP_BLOCK_64X64, -#if CONFIG_EXT_PARTITION - ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID, - ADAPT_OVERLAP_BLOCK_INVALID, -#endif // CONFIG_EXT_PARTITION - ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID, - ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID, - ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID, -#if CONFIG_EXT_PARTITION - ADAPT_OVERLAP_BLOCK_INVALID, ADAPT_OVERLAP_BLOCK_INVALID -#endif // CONFIG_EXT_PARTITION +// Note: this is also used in unit tests. So whenever one changes the table, +// the unit tests need to be changed accordingly. +static const int quant_dist_weight[4][2] = { + { 2, 3 }, { 2, 5 }, { 2, 7 }, { 1, MAX_FRAME_DISTANCE } }; - -static const BLOCK_SIZE bsize_2_sqr_bsize[BLOCK_SIZES] = { -#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 - BLOCK_2X2, BLOCK_2X2, BLOCK_2X2, -#endif - BLOCK_4X4, BLOCK_4X4, BLOCK_4X4, BLOCK_8X8, BLOCK_8X8, - BLOCK_8X8, BLOCK_16X16, BLOCK_16X16, BLOCK_16X16, BLOCK_32X32, - BLOCK_32X32, BLOCK_32X32, BLOCK_64X64, -#if CONFIG_EXT_PARTITION - BLOCK_64X64, BLOCK_64X64, -#endif +static const int quant_dist_lookup_table[2][4][2] = { + { { 9, 7 }, { 11, 5 }, { 12, 4 }, { 13, 3 } }, + { { 7, 9 }, { 5, 11 }, { 4, 12 }, { 3, 13 } }, }; -#endif // CONFIG_NCOBMC_ADAPT_WEIGHT - -#if CONFIG_ADAPT_SCAN -#define EOB_THRESHOLD_NUM 2 -#endif - #ifdef __cplusplus } // extern "C" #endif -- cgit v1.2.3 From d2499ead93dc4298c0882fe98902acb1b5209f99 Mon Sep 17 00:00:00 2001 From: trav90 Date: Fri, 19 Oct 2018 23:05:00 -0500 Subject: Update libaom to commit ID 1e227d41f0616de9548a673a83a21ef990b62591 --- third_party/aom/av1/common/common_data.h | 75 +++++++++++++++++++------------- 1 file changed, 44 insertions(+), 31 deletions(-) (limited to 'third_party/aom/av1/common/common_data.h') diff --git a/third_party/aom/av1/common/common_data.h b/third_party/aom/av1/common/common_data.h index f521f10bf..46e455fdb 100644 --- a/third_party/aom/av1/common/common_data.h +++ b/third_party/aom/av1/common/common_data.h @@ -9,8 +9,8 @@ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. */ -#ifndef AV1_COMMON_COMMON_DATA_H_ -#define AV1_COMMON_COMMON_DATA_H_ +#ifndef AOM_AV1_COMMON_COMMON_DATA_H_ +#define AOM_AV1_COMMON_COMMON_DATA_H_ #include "av1/common/enums.h" #include "aom/aom_integer.h" @@ -20,34 +20,43 @@ extern "C" { #endif -// Log 2 conversion lookup tables in units of mode info(4x4). +// Log 2 conversion lookup tables in units of mode info (4x4). +// The Mi_Width_Log2 table in the spec (Section 9.3. Conversion tables). static const uint8_t mi_size_wide_log2[BLOCK_SIZES_ALL] = { 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 0, 2, 1, 3, 2, 4 }; +// The Mi_Height_Log2 table in the spec (Section 9.3. Conversion tables). static const uint8_t mi_size_high_log2[BLOCK_SIZES_ALL] = { 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 2, 0, 3, 1, 4, 2 }; +// Width/height lookup tables in units of mode info (4x4). +// The Num_4x4_Blocks_Wide table in the spec (Section 9.3. Conversion tables). static const uint8_t mi_size_wide[BLOCK_SIZES_ALL] = { 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 1, 4, 2, 8, 4, 16 }; +// The Num_4x4_Blocks_High table in the spec (Section 9.3. Conversion tables). static const uint8_t mi_size_high[BLOCK_SIZES_ALL] = { 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, 32, 16, 32, 4, 1, 8, 2, 16, 4 }; -// Width/height lookup tables in units of various block sizes +// Width/height lookup tables in units of samples. +// The Block_Width table in the spec (Section 9.3. Conversion tables). static const uint8_t block_size_wide[BLOCK_SIZES_ALL] = { 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 32, 64, 64, 64, 128, 128, 4, 16, 8, 32, 16, 64 }; +// The Block_Height table in the spec (Section 9.3. Conversion tables). static const uint8_t block_size_high[BLOCK_SIZES_ALL] = { 4, 8, 4, 8, 16, 8, 16, 32, 16, 32, 64, 32, 64, 128, 64, 128, 16, 4, 32, 8, 64, 16 }; -// AOMMIN(3, AOMMIN(b_width_log2(bsize), b_height_log2(bsize))) +// Maps a block size to a context. +// The Size_Group table in the spec (Section 9.3. Conversion tables). +// AOMMIN(3, AOMMIN(mi_size_wide_log2(bsize), mi_size_high_log2(bsize))) static const uint8_t size_group_lookup[BLOCK_SIZES_ALL] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 0, 0, 1, 1, 2, 2 }; @@ -56,6 +65,8 @@ static const uint8_t num_pels_log2_lookup[BLOCK_SIZES_ALL] = { 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12, 13, 13, 14, 6, 6, 8, 8, 10, 10 }; +// A compressed version of the Partition_Subsize table in the spec (9.3. +// Conversion tables), for square block sizes only. /* clang-format off */ static const BLOCK_SIZE subsize_lookup[EXT_PARTITION_TYPES][SQR_BLOCK_SIZES] = { { // PARTITION_NONE @@ -350,34 +361,36 @@ static const TX_SIZE tx_mode_to_biggest_tx_size[TX_MODES] = { TX_64X64, // TX_MODE_LARGEST TX_64X64, // TX_MODE_SELECT }; -/* clang-format on */ +// The Subsampled_Size table in the spec (Section 5.11.38. Get plane residual +// size function). static const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES_ALL][2][2] = { - // ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 - // ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 - { { BLOCK_4X4, BLOCK_4X4 }, { BLOCK_4X4, BLOCK_4X4 } }, - { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_4X4, BLOCK_4X4 } }, - { { BLOCK_8X4, BLOCK_4X4 }, { BLOCK_4X4, BLOCK_4X4 } }, - { { BLOCK_8X8, BLOCK_8X4 }, { BLOCK_4X8, BLOCK_4X4 } }, - { { BLOCK_8X16, BLOCK_8X8 }, { BLOCK_4X16, BLOCK_4X8 } }, - { { BLOCK_16X8, BLOCK_16X4 }, { BLOCK_8X8, BLOCK_8X4 } }, - { { BLOCK_16X16, BLOCK_16X8 }, { BLOCK_8X16, BLOCK_8X8 } }, - { { BLOCK_16X32, BLOCK_16X16 }, { BLOCK_8X32, BLOCK_8X16 } }, - { { BLOCK_32X16, BLOCK_32X8 }, { BLOCK_16X16, BLOCK_16X8 } }, - { { BLOCK_32X32, BLOCK_32X16 }, { BLOCK_16X32, BLOCK_16X16 } }, - { { BLOCK_32X64, BLOCK_32X32 }, { BLOCK_16X64, BLOCK_16X32 } }, - { { BLOCK_64X32, BLOCK_64X16 }, { BLOCK_32X32, BLOCK_32X16 } }, - { { BLOCK_64X64, BLOCK_64X32 }, { BLOCK_32X64, BLOCK_32X32 } }, - { { BLOCK_64X128, BLOCK_64X64 }, { BLOCK_INVALID, BLOCK_32X64 } }, - { { BLOCK_128X64, BLOCK_INVALID }, { BLOCK_64X64, BLOCK_64X32 } }, - { { BLOCK_128X128, BLOCK_128X64 }, { BLOCK_64X128, BLOCK_64X64 } }, - { { BLOCK_4X16, BLOCK_4X8 }, { BLOCK_4X16, BLOCK_4X8 } }, - { { BLOCK_16X4, BLOCK_16X4 }, { BLOCK_8X4, BLOCK_8X4 } }, - { { BLOCK_8X32, BLOCK_8X16 }, { BLOCK_INVALID, BLOCK_4X16 } }, - { { BLOCK_32X8, BLOCK_INVALID }, { BLOCK_16X8, BLOCK_16X4 } }, - { { BLOCK_16X64, BLOCK_16X32 }, { BLOCK_INVALID, BLOCK_8X32 } }, - { { BLOCK_64X16, BLOCK_INVALID }, { BLOCK_32X16, BLOCK_32X8 } } + // ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1 + // ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1 + { { BLOCK_4X4, BLOCK_4X4 }, { BLOCK_4X4, BLOCK_4X4 } }, + { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_4X4 } }, + { { BLOCK_8X4, BLOCK_INVALID }, { BLOCK_4X4, BLOCK_4X4 } }, + { { BLOCK_8X8, BLOCK_8X4 }, { BLOCK_4X8, BLOCK_4X4 } }, + { { BLOCK_8X16, BLOCK_8X8 }, { BLOCK_INVALID, BLOCK_4X8 } }, + { { BLOCK_16X8, BLOCK_INVALID }, { BLOCK_8X8, BLOCK_8X4 } }, + { { BLOCK_16X16, BLOCK_16X8 }, { BLOCK_8X16, BLOCK_8X8 } }, + { { BLOCK_16X32, BLOCK_16X16 }, { BLOCK_INVALID, BLOCK_8X16 } }, + { { BLOCK_32X16, BLOCK_INVALID }, { BLOCK_16X16, BLOCK_16X8 } }, + { { BLOCK_32X32, BLOCK_32X16 }, { BLOCK_16X32, BLOCK_16X16 } }, + { { BLOCK_32X64, BLOCK_32X32 }, { BLOCK_INVALID, BLOCK_16X32 } }, + { { BLOCK_64X32, BLOCK_INVALID }, { BLOCK_32X32, BLOCK_32X16 } }, + { { BLOCK_64X64, BLOCK_64X32 }, { BLOCK_32X64, BLOCK_32X32 } }, + { { BLOCK_64X128, BLOCK_64X64 }, { BLOCK_INVALID, BLOCK_32X64 } }, + { { BLOCK_128X64, BLOCK_INVALID }, { BLOCK_64X64, BLOCK_64X32 } }, + { { BLOCK_128X128, BLOCK_128X64 }, { BLOCK_64X128, BLOCK_64X64 } }, + { { BLOCK_4X16, BLOCK_4X8 }, { BLOCK_INVALID, BLOCK_4X8 } }, + { { BLOCK_16X4, BLOCK_INVALID }, { BLOCK_8X4, BLOCK_8X4 } }, + { { BLOCK_8X32, BLOCK_8X16 }, { BLOCK_INVALID, BLOCK_4X16 } }, + { { BLOCK_32X8, BLOCK_INVALID }, { BLOCK_16X8, BLOCK_16X4 } }, + { { BLOCK_16X64, BLOCK_16X32 }, { BLOCK_INVALID, BLOCK_8X32 } }, + { { BLOCK_64X16, BLOCK_INVALID }, { BLOCK_32X16, BLOCK_32X8 } } }; +/* clang-format on */ // Generates 5 bit field in which each bit set to 1 represents // a blocksize partition 11111 means we split 128x128, 64x64, 32x32, 16x16 @@ -430,4 +443,4 @@ static const int quant_dist_lookup_table[2][4][2] = { } // extern "C" #endif -#endif // AV1_COMMON_COMMON_DATA_H_ +#endif // AOM_AV1_COMMON_COMMON_DATA_H_ -- cgit v1.2.3