Enable rectangular transforms for UV
Uses an array to map block sizes, y tx sizes, and subsampling
factors to various transform sizes for UV.
Results improve by 0.1-0.2%
Change-Id: Icb58fd96bc7c01a72cbf1332fe2be4d55a0feedc
diff --git a/av1/common/loopfilter.c b/av1/common/loopfilter.c
index 726271e..7086be8 100644
--- a/av1/common/loopfilter.c
+++ b/av1/common/loopfilter.c
@@ -713,7 +713,7 @@
// rectangular transfroms are used with the EXT_TX expt.
const TX_SIZE tx_size_y = txsize_sqr_up_map[mbmi->tx_size];
const TX_SIZE tx_size_uv =
- get_uv_tx_size_impl(mbmi->tx_size, block_size, 1, 1);
+ txsize_sqr_up_map[uv_txsize_lookup[block_size][mbmi->tx_size][1][1]];
const int filter_level = get_filter_level(lfi_n, mbmi);
uint64_t *const left_y = &lfm->left_y[tx_size_y];
uint64_t *const above_y = &lfm->above_y[tx_size_y];
@@ -1238,9 +1238,9 @@
// Filter level can vary per MI
if (!(lfl[r][c >> ss_x] = get_filter_level(&cm->lf_info, mbmi))) continue;
- if (tx_size == TX_32X32)
+ if (txsize_sqr_up_map[tx_size] == TX_32X32)
tx_size_mask = 3;
- else if (tx_size == TX_16X16)
+ else if (txsize_sqr_up_map[tx_size] == TX_16X16)
tx_size_mask = 1;
else
tx_size_mask = 0;
@@ -1249,8 +1249,8 @@
if (is_inter_block(mbmi) && !mbmi->skip)
tx_size =
(plane->plane_type == PLANE_TYPE_UV)
- ? get_uv_tx_size_impl(mbmi->inter_tx_size[blk_row][blk_col],
- sb_type, ss_x, ss_y)
+ ? uv_txsize_lookup[sb_type][mbmi->inter_tx_size
+ [blk_row][blk_col]][ss_x][ss_y]
: mbmi->inter_tx_size[blk_row][blk_col];
#if CONFIG_EXT_TX && CONFIG_RECT_TX