]> granicus.if.org Git - libvpx/commitdiff
Adjust errorperbit according to RDMULT in activity masking
authorYaowu Xu <yaowu@google.com>
Tue, 7 Jun 2011 20:59:46 +0000 (13:59 -0700)
committerYaowu Xu <yaowu@google.com>
Wed, 8 Jun 2011 16:45:47 +0000 (09:45 -0700)
In activity masking, RDO constant RDMULT is adjusted on a per MB basis
adaptive to activity with the MB. errorperbit, which is defined as
RDMULT/RDDIV, is a constant used in motion estimation. Previously, in
activity masking, errorperbit is not changed even when RDMULT is changed.
This commit changed to adjust errorperbit according to the change in
RDMULT.

Test in cif set showed a very small but consistent gain by all quality
metrics (average, overall psnr and ssim) when activity masking is on.

Change-Id: I07ded3e852919ab76757691939fe435328273823

vp8/encoder/encodeframe.c

index a972f8942f30fc7e440bba87fcc61b5edd2e24f6..5cae99f4100e55945ad9a744328de54b4a211ef3 100644 (file)
@@ -336,6 +336,7 @@ void vp8_activity_masking(VP8_COMP *cpi, MACROBLOCK *x)
 {
 #if USE_ACT_INDEX
     x->rdmult += *(x->mb_activity_ptr) * (x->rdmult >> 2);
+    x->errorperbit = x->rdmult/x->rddiv;
 #else
     INT64 a;
     INT64 b;
@@ -346,6 +347,8 @@ void vp8_activity_masking(VP8_COMP *cpi, MACROBLOCK *x)
     b = (2*act) + cpi->activity_avg;
 
     x->rdmult = (unsigned int)(((INT64)x->rdmult*b + (a>>1))/a);
+    x->errorperbit = x->rdmult/x->rddiv;
+
 #endif
 
     // Activity based Zbin adjustment