summaryrefslogtreecommitdiff
path: root/vp9/encoder
diff options
context:
space:
mode:
authorMarco Paniconi <marpan@google.com>2018-07-27 06:02:34 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-07-27 06:02:34 +0000
commit187fac45a4fea6facad79e8e898bfb5bb4a45365 (patch)
treeec25aa3a9dcb3a25ef308c461002feacd2561e3e /vp9/encoder
parentd0ad2e25d156cf538888f9b2389361d660a0421e (diff)
parentd22ea1d3f6f7c4ca97e07c5637696ece3db11d54 (diff)
downloadlibvpx-187fac45a4fea6facad79e8e898bfb5bb4a45365.tar
libvpx-187fac45a4fea6facad79e8e898bfb5bb4a45365.tar.gz
libvpx-187fac45a4fea6facad79e8e898bfb5bb4a45365.tar.bz2
libvpx-187fac45a4fea6facad79e8e898bfb5bb4a45365.zip
Merge "vp9: 4x4 tx_size for nonrd-pickmode for screen content"
Diffstat (limited to 'vp9/encoder')
-rw-r--r--vp9/encoder/vp9_pickmode.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c
index 4ff385a23..50a2c9057 100644
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -406,6 +406,11 @@ static void model_rd_for_sb_y_large(VP9_COMP *cpi, BLOCK_SIZE bsize,
tx_size = TX_8X8;
else if (tx_size > TX_16X16)
tx_size = TX_16X16;
+
+ // For screen-content force 4X4 tx_size over 8X8, for large variance.
+ if (cpi->oxcf.content == VP9E_CONTENT_SCREEN && tx_size == TX_8X8 &&
+ bsize <= BLOCK_16X16 && var > (ac_thr << 6))
+ tx_size = TX_4X4;
} else {
tx_size = VPXMIN(max_txsize_lookup[bsize],
tx_mode_to_biggest_tx_size[cpi->common.tx_mode]);
@@ -588,6 +593,12 @@ static void model_rd_for_sb_y(VP9_COMP *cpi, BLOCK_SIZE bsize, MACROBLOCK *x,
xd->mi[0]->tx_size = TX_8X8;
else if (xd->mi[0]->tx_size > TX_16X16)
xd->mi[0]->tx_size = TX_16X16;
+
+ // For screen-content force 4X4 tx_size over 8X8, for large variance.
+ if (cpi->oxcf.content == VP9E_CONTENT_SCREEN &&
+ xd->mi[0]->tx_size == TX_8X8 && bsize <= BLOCK_16X16 &&
+ var > (ac_thr << 6))
+ xd->mi[0]->tx_size = TX_4X4;
} else {
xd->mi[0]->tx_size =
VPXMIN(max_txsize_lookup[bsize],