Commit 2fa6e1ce authored by Rupert Swarbrick's avatar Rupert Swarbrick

Add 32x128/128x32 block sizes

Change-Id: Ieb28f40d85e4db4af33648c32c406dd2931ceb89
parent c01cc430
......@@ -47,6 +47,10 @@ if (aom_config("CONFIG_EXT_PARTITION_TYPES") eq "yes") {
push @block_sizes, [32, 8];
push @block_sizes, [16, 64];
push @block_sizes, [64, 16];
if (aom_config("CONFIG_EXT_PARTITION") eq "yes") {
push @block_sizes, [32, 128];
push @block_sizes, [128, 32];
}
}
@tx_dims = (2, 4, 8, 16, 32);
......@@ -820,14 +824,18 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
foreach (@block_sizes) {
($w, $h) = @$_;
add_proto qw/unsigned int/, "aom_obmc_sad${w}x${h}", "const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask";
specialize "aom_obmc_sad${w}x${h}", qw/sse4_1/;
if (! (($w == 128 && $h == 32) || ($w == 32 && $h == 128))) {
specialize "aom_obmc_sad${w}x${h}", qw/sse4_1/;
}
}
if (aom_config("CONFIG_HIGHBITDEPTH") eq "yes") {
foreach (@block_sizes) {
($w, $h) = @$_;
add_proto qw/unsigned int/, "aom_highbd_obmc_sad${w}x${h}", "const uint8_t *pre, int pre_stride, const int32_t *wsrc, const int32_t *mask";
specialize "aom_highbd_obmc_sad${w}x${h}", qw/sse4_1/;
if (! (($w == 128 && $h == 32) || ($w == 32 && $h == 128))) {
specialize "aom_highbd_obmc_sad${w}x${h}", qw/sse4_1/;
}
}
}
}
......
......@@ -167,11 +167,15 @@ sadMxN(16, 64)
sadMxNx4D(16, 64)
sadMxN(64, 16)
sadMxNx4D(64, 16)
sadMxN(32, 128)
sadMxNx4D(32, 128)
sadMxN(128, 32)
sadMxNx4D(128, 32)
#endif
/* clang-format on */
#if CONFIG_HIGHBITDEPTH
static INLINE
static INLINE
unsigned int highbd_sad(const uint8_t *a8, int a_stride, const uint8_t *b8,
int b_stride, int width, int height) {
int y, x;
......@@ -336,12 +340,16 @@ highbd_sadMxN(16, 64)
highbd_sadMxNx4D(16, 64)
highbd_sadMxN(64, 16)
highbd_sadMxNx4D(64, 16)
highbd_sadMxN(32, 128)
highbd_sadMxNx4D(32, 128)
highbd_sadMxN(128, 32)
highbd_sadMxNx4D(128, 32)
#endif
/* clang-format on */
#endif // CONFIG_HIGHBITDEPTH
#if CONFIG_AV1 && CONFIG_EXT_INTER
static INLINE
static INLINE
unsigned int masked_sad(const uint8_t *src, int src_stride,
const uint8_t *a, int a_stride, const uint8_t *b,
int b_stride, const uint8_t *m, int m_stride,
......@@ -405,11 +413,13 @@ MASKSADMxN(8, 32)
MASKSADMxN(32, 8)
MASKSADMxN(16, 64)
MASKSADMxN(64, 16)
MASKSADMxN(32, 128)
MASKSADMxN(128, 32)
#endif
/* clang-format on */
#if CONFIG_HIGHBITDEPTH
static INLINE
static INLINE
unsigned int highbd_masked_sad(const uint8_t *src8, int src_stride,
const uint8_t *a8, int a_stride,
const uint8_t *b8, int b_stride,
......@@ -476,6 +486,8 @@ HIGHBD_MASKSADMXN(8, 32)
HIGHBD_MASKSADMXN(32, 8)
HIGHBD_MASKSADMXN(16, 64)
HIGHBD_MASKSADMXN(64, 16)
HIGHBD_MASKSADMXN(32, 128)
HIGHBD_MASKSADMXN(128, 32)
#endif
#endif // CONFIG_HIGHBITDEPTH
#endif // CONFIG_AV1 && CONFIG_EXT_INTER
......@@ -536,11 +548,13 @@ OBMCSADMxN(8, 32)
OBMCSADMxN(32, 8)
OBMCSADMxN(16, 64)
OBMCSADMxN(64, 16)
OBMCSADMxN(32, 128)
OBMCSADMxN(128, 32)
#endif
/* clang-format on */
#if CONFIG_HIGHBITDEPTH
static INLINE
static INLINE
unsigned int highbd_obmc_sad(const uint8_t *pre8, int pre_stride,
const int32_t *wsrc, const int32_t *mask,
int width, int height) {
......@@ -594,6 +608,8 @@ HIGHBD_OBMCSADMXN(8, 32)
HIGHBD_OBMCSADMXN(32, 8)
HIGHBD_OBMCSADMXN(16, 64)
HIGHBD_OBMCSADMXN(64, 16)
HIGHBD_OBMCSADMXN(32, 128)
HIGHBD_OBMCSADMXN(128, 32)
#endif
/* clang-format on */
#endif // CONFIG_HIGHBITDEPTH
......
......@@ -258,7 +258,11 @@ VARIANCES(8, 32)
VARIANCES(32, 8)
VARIANCES(16, 64)
VARIANCES(64, 16)
#endif
#if CONFIG_EXT_PARTITION
VARIANCES(32, 128)
VARIANCES(128, 32)
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_AV1 && CONFIG_EXT_PARTITION_TYPES
GET_VAR(16, 16)
GET_VAR(8, 8)
......@@ -665,7 +669,11 @@ HIGHBD_VARIANCES(8, 32)
HIGHBD_VARIANCES(32, 8)
HIGHBD_VARIANCES(16, 64)
HIGHBD_VARIANCES(64, 16)
#endif
#if CONFIG_EXT_PARTITION
HIGHBD_VARIANCES(32, 128)
HIGHBD_VARIANCES(128, 32)
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_AV1 && CONFIG_EXT_PARTITION_TYPES
HIGHBD_GET_VAR(8)
HIGHBD_GET_VAR(16)
......@@ -854,7 +862,11 @@ MASK_SUBPIX_VAR(8, 32)
MASK_SUBPIX_VAR(32, 8)
MASK_SUBPIX_VAR(16, 64)
MASK_SUBPIX_VAR(64, 16)
#endif
#if CONFIG_EXT_PARTITION
MASK_SUBPIX_VAR(32, 128)
MASK_SUBPIX_VAR(128, 32)
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_EXT_PARTITION_TYPES
#if CONFIG_HIGHBITDEPTH
void aom_highbd_comp_mask_pred_c(uint16_t *comp_pred, const uint8_t *pred8,
......@@ -993,7 +1005,11 @@ HIGHBD_MASK_SUBPIX_VAR(8, 32)
HIGHBD_MASK_SUBPIX_VAR(32, 8)
HIGHBD_MASK_SUBPIX_VAR(16, 64)
HIGHBD_MASK_SUBPIX_VAR(64, 16)
#endif
#if CONFIG_EXT_PARTITION
HIGHBD_MASK_SUBPIX_VAR(32, 128)
HIGHBD_MASK_SUBPIX_VAR(128, 32)
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_EXT_PARTITION_TYPES
#endif // CONFIG_HIGHBITDEPTH
#endif // CONFIG_AV1 && CONFIG_EXT_INTER
......@@ -1106,7 +1122,13 @@ OBMC_VAR(16, 64)
OBMC_SUBPIX_VAR(16, 64)
OBMC_VAR(64, 16)
OBMC_SUBPIX_VAR(64, 16)
#endif
#if CONFIG_EXT_PARTITION
OBMC_VAR(32, 128)
OBMC_SUBPIX_VAR(32, 128)
OBMC_VAR(128, 32)
OBMC_SUBPIX_VAR(128, 32)
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_EXT_PARTITION_TYPES
#if CONFIG_HIGHBITDEPTH
static INLINE void highbd_obmc_variance64(const uint8_t *pre8, int pre_stride,
......@@ -1303,6 +1325,12 @@ HIGHBD_OBMC_VAR(16, 64)
HIGHBD_OBMC_SUBPIX_VAR(16, 64)
HIGHBD_OBMC_VAR(64, 16)
HIGHBD_OBMC_SUBPIX_VAR(64, 16)
#endif
#if CONFIG_EXT_PARTITION
HIGHBD_OBMC_VAR(32, 128)
HIGHBD_OBMC_SUBPIX_VAR(32, 128)
HIGHBD_OBMC_VAR(128, 32)
HIGHBD_OBMC_SUBPIX_VAR(128, 32)
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_EXT_PARTITION_TYPES
#endif // CONFIG_HIGHBITDEPTH
#endif // CONFIG_AV1 && CONFIG_MOTION_VAR
......@@ -215,6 +215,10 @@ SUBTRACT_FUN(8x32) { STACK_V(16, subtract_8x16); }
SUBTRACT_FUN(32x8) { STACK_H(16, subtract_16x8); }
SUBTRACT_FUN(16x64) { STACK_V(32, subtract_16x32); }
SUBTRACT_FUN(64x16) { STACK_H(32, subtract_32x16); }
#if CONFIG_EXT_PARTITION
SUBTRACT_FUN(32x128) { STACK_V(64, subtract_32x64); }
SUBTRACT_FUN(128x32) { STACK_H(64, subtract_64x32); }
#endif
static SubtractWxHFuncType getSubtractFunc(int rows, int cols) {
if (rows == 4) {
......@@ -240,6 +244,9 @@ static SubtractWxHFuncType getSubtractFunc(int rows, int cols) {
if (cols == 16) return subtract_16x32;
if (cols == 32) return subtract_32x32;
if (cols == 64) return subtract_64x32;
#if CONFIG_EXT_PARTITION
if (cols == 128) return subtract_128x32;
#endif // CONFIG_EXT_PARTITION
}
if (rows == 64) {
if (cols == 16) return subtract_16x64;
......@@ -251,6 +258,7 @@ static SubtractWxHFuncType getSubtractFunc(int rows, int cols) {
}
#if CONFIG_EXT_PARTITION
if (rows == 128) {
if (cols == 32) return subtract_32x128;
if (cols == 64) return subtract_64x128;
if (cols == 128) return subtract_128x128;
}
......
......@@ -100,7 +100,11 @@ MASKSAD8XN_SSSE3(32)
MASKSADMXN_SSSE3(32, 8)
MASKSADMXN_SSSE3(16, 64)
MASKSADMXN_SSSE3(64, 16)
#endif
#if CONFIG_EXT_PARTITION
MASKSADMXN_SSSE3(32, 128)
MASKSADMXN_SSSE3(128, 32)
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_EXT_PARTITION_TYPES
static INLINE unsigned int masked_sad_ssse3(const uint8_t *src_ptr,
int src_stride,
......@@ -298,7 +302,11 @@ HIGHBD_MASKSADMXN_SSSE3(8, 32)
HIGHBD_MASKSADMXN_SSSE3(32, 8)
HIGHBD_MASKSADMXN_SSSE3(16, 64)
HIGHBD_MASKSADMXN_SSSE3(64, 16)
#endif
#if CONFIG_EXT_PARTITION
HIGHBD_MASKSADMXN_SSSE3(32, 128)
HIGHBD_MASKSADMXN_SSSE3(128, 32)
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_EXT_PARTITION_TYPES
static INLINE unsigned int highbd_masked_sad_ssse3(
const uint8_t *src8, int src_stride, const uint8_t *a8, int a_stride,
......
......@@ -133,7 +133,11 @@ MASK_SUBPIX_VAR8XH_SSSE3(32)
MASK_SUBPIX_VAR_SSSE3(32, 8)
MASK_SUBPIX_VAR_SSSE3(64, 16)
MASK_SUBPIX_VAR_SSSE3(16, 64)
#endif
#if CONFIG_EXT_PARTITION
MASK_SUBPIX_VAR_SSSE3(128, 32)
MASK_SUBPIX_VAR_SSSE3(32, 128)
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_EXT_PARTITION_TYPES
static INLINE __m128i filter_block(const __m128i a, const __m128i b,
const __m128i filter) {
......@@ -716,6 +720,10 @@ HIGHBD_MASK_SUBPIX_VAR_SSSE3(8, 32)
HIGHBD_MASK_SUBPIX_VAR_SSSE3(32, 8)
HIGHBD_MASK_SUBPIX_VAR_SSSE3(16, 64)
HIGHBD_MASK_SUBPIX_VAR_SSSE3(64, 16)
#if CONFIG_EXT_PARTITION
HIGHBD_MASK_SUBPIX_VAR_SSSE3(32, 128)
HIGHBD_MASK_SUBPIX_VAR_SSSE3(128, 32)
#endif
#endif
static INLINE __m128i highbd_filter_block(const __m128i a, const __m128i b,
......
......@@ -153,7 +153,11 @@ OBMCVARWXH(8, 32)
OBMCVARWXH(32, 8)
OBMCVARWXH(16, 64)
OBMCVARWXH(64, 16)
#endif
#if CONFIG_EXT_PARTITION
OBMCVARWXH(32, 128)
OBMCVARWXH(128, 32)
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_EXT_PARTITION_TYPES
////////////////////////////////////////////////////////////////////////////////
// High bit-depth
......@@ -368,5 +372,9 @@ HBD_OBMCVARWXH(8, 32)
HBD_OBMCVARWXH(32, 8)
HBD_OBMCVARWXH(16, 64)
HBD_OBMCVARWXH(64, 16)
#endif
#if CONFIG_EXT_PARTITION
HBD_OBMCVARWXH(32, 128)
HBD_OBMCVARWXH(128, 32)
#endif // CONFIG_EXT_PARTITION
#endif // CONFIG_EXT_PARTITION_TYPES
#endif // CONFIG_HIGHBITDEPTH
......@@ -2751,7 +2751,11 @@ static const uint32_t av1_prediction_masks[NUM_EDGE_DIRS][BLOCK_SIZES_ALL] = {
8 - 1, // BLOCK_8X32,
32 - 1, // BLOCK_32X8,
16 - 1, // BLOCK_16X64,
64 - 1 // BLOCK_64X16
64 - 1, // BLOCK_64X16
#if CONFIG_EXT_PARTITION
32 - 1, // BLOCK_32X128
128 - 1, // BLOCK_128X32
#endif // CONFIG_EXT_PARTITION
},
// mask for horizontal edges filtering
{
......@@ -2783,7 +2787,11 @@ static const uint32_t av1_prediction_masks[NUM_EDGE_DIRS][BLOCK_SIZES_ALL] = {
32 - 1, // BLOCK_8X32,
8 - 1, // BLOCK_32X8,
64 - 1, // BLOCK_16X64,
16 - 1 // BLOCK_64X16
16 - 1, // BLOCK_64X16
#if CONFIG_EXT_PARTITION
128 - 1, // BLOCK_32X128
32 - 1, // BLOCK_128X32
#endif // CONFIG_EXT_PARTITION
},
};
......
......@@ -1087,6 +1087,10 @@ static INLINE int is_rect_tx_allowed_bsize(BLOCK_SIZE bsize) {
0, // BLOCK_32X8
0, // BLOCK_16X64
0, // BLOCK_64X16
#if CONFIG_EXT_PARTITION
0, // BLOCK_32X128
0, // BLOCK_128X32
#endif // CONFIG_EXT_PARTITION
};
return LUT[bsize];
......@@ -1132,6 +1136,10 @@ static INLINE int is_quarter_tx_allowed_bsize(BLOCK_SIZE bsize) {
0, // BLOCK_32X8
0, // BLOCK_16X64
0, // BLOCK_64X16
#if CONFIG_EXT_PARTITION
0, // BLOCK_32X128
0, // BLOCK_128X32
#endif // CONFIG_EXT_PARTITION
};
return LUT_QTTX[bsize];
......
......@@ -29,41 +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, 2, 4
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
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, 2, 4
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
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
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
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
};
......@@ -74,10 +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, 4, 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
2, 8, IF_EXT_PARTITION(4, 16)
#endif
};
static const uint8_t mi_size_high[BLOCK_SIZES_ALL] = {
......@@ -86,10 +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, 16, 4
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
8, 2, IF_EXT_PARTITION(16, 4)
#endif
};
/* clang-format on */
......@@ -97,80 +149,168 @@ 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, 16, 64
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, 64, 16
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, 4, 16
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, 16, 4
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, 2, 8
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, 8, 2
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, 2, 4
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, 4, 2
1, 1,
1, 1,
1, 1,
1, 2,
1, 2,