summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encoder.h
diff options
context:
space:
mode:
authorYunqing Wang <yunqingwang@google.com>2014-05-01 15:14:39 -0700
committerYunqing Wang <yunqingwang@google.com>2014-06-30 09:36:23 -0700
commit9d41313e4bd28d3c504c26079cbe4a499e7eceb7 (patch)
tree1dc38de0da1b8a410217322f6e13e9dcc9ca1523 /vp9/encoder/vp9_encoder.h
parenta93c506034710a21a0a93a71fff71b794f3f9579 (diff)
downloadlibvpx-9d41313e4bd28d3c504c26079cbe4a499e7eceb7.tar
libvpx-9d41313e4bd28d3c504c26079cbe4a499e7eceb7.tar.gz
libvpx-9d41313e4bd28d3c504c26079cbe4a499e7eceb7.tar.bz2
libvpx-9d41313e4bd28d3c504c26079cbe4a499e7eceb7.zip
Decide the partitioning threshold from the variance histogram
Before encoding a frame, calculate and store each 16x16 block's variance of source difference between last and current frame. Find partitioning threshold T for the frame from its variance histogram, and then use T to make partition decisions. Comparing with fixed 16x16 partitioning, rtc set test showed an overall psnr gain of 3.242%, and ssim gain of 3.751%. The best psnr gain is 8.653%. The overall encoding speed didn't change much. It got faster for some clips(for example, 12% speedup for vidyo1), and a little slower for others. Also, a minor modification was made in datarate unit test. Change-Id: Ie290743aa3814e83607b93831b667a2a49d0932c
Diffstat (limited to 'vp9/encoder/vp9_encoder.h')
-rw-r--r--vp9/encoder/vp9_encoder.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/vp9/encoder/vp9_encoder.h b/vp9/encoder/vp9_encoder.h
index ee98baa96..5e8430a91 100644
--- a/vp9/encoder/vp9_encoder.h
+++ b/vp9/encoder/vp9_encoder.h
@@ -401,7 +401,11 @@ typedef struct VP9_COMP {
SVC svc;
- int use_large_partition_rate;
+ // Store frame variance info in SOURCE_VAR_BASED_PARTITION search type.
+ diff *source_diff_var;
+ // The threshold used in SOURCE_VAR_BASED_PARTITION search type.
+ unsigned int source_var_thresh;
+ int frames_till_next_var_check;
int frame_flags;