summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodeframe.c
diff options
context:
space:
mode:
authorPaul Wilkins <paulwilkins@google.com>2016-08-30 16:54:39 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2016-08-30 16:54:40 +0000
commit129814fcb487696264199ef4fe18049dd09a8b66 (patch)
treed8a946368c0bd2fa6ad58ff7ce85bfe5b2a834b6 /vp9/encoder/vp9_encodeframe.c
parent3a3169be597e1338bd09724ba4482534accf4de0 (diff)
parent635ae8bdc1f5f1fe9e94c2f14144ad4c8750b627 (diff)
downloadlibvpx-129814fcb487696264199ef4fe18049dd09a8b66.tar
libvpx-129814fcb487696264199ef4fe18049dd09a8b66.tar.gz
libvpx-129814fcb487696264199ef4fe18049dd09a8b66.tar.bz2
libvpx-129814fcb487696264199ef4fe18049dd09a8b66.zip
Merge "Adjust coefficient optimization and tx_domain rd speed features."
Diffstat (limited to 'vp9/encoder/vp9_encodeframe.c')
-rw-r--r--vp9/encoder/vp9_encodeframe.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c
index 93f12d203..d323a17a6 100644
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -1340,6 +1340,22 @@ static void rd_pick_sb_modes(VP9_COMP *cpi, TileDataEnc *tile_data,
// Save rdmult before it might be changed, so it can be restored later.
orig_rdmult = x->rdmult;
+ if ((cpi->sf.tx_domain_thresh > 0.0) || (cpi->sf.quant_opt_thresh > 0.0)) {
+ double logvar = vp9_log_block_var(cpi, x, bsize);
+ // Check block complexity as part of descision on using pixel or transform
+ // domain distortion in rd tests.
+ x->block_tx_domain = cpi->sf.allow_txfm_domain_distortion &&
+ (logvar >= cpi->sf.tx_domain_thresh);
+
+ // Check block complexity as part of descision on using quantized
+ // coefficient optimisation inside the rd loop.
+ x->block_qcoeff_opt =
+ cpi->sf.allow_quant_coeff_opt && (logvar <= cpi->sf.quant_opt_thresh);
+ } else {
+ x->block_tx_domain = cpi->sf.allow_txfm_domain_distortion;
+ x->block_qcoeff_opt = cpi->sf.allow_quant_coeff_opt;
+ }
+
if (aq_mode == VARIANCE_AQ) {
const int energy =
bsize <= BLOCK_16X16 ? x->mb_energy : vp9_block_energy(cpi, x, bsize);