summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_speed_features.h
diff options
context:
space:
mode:
authorYunqing Wang <yunqingwang@google.com>2014-04-01 17:32:20 -0700
committerYunqing Wang <yunqingwang@google.com>2014-04-08 17:03:02 -0700
commit4e66293fcb5b4779490faf8f40300e7e0096640e (patch)
treed770fe0a5fe94c6363be6a25c591208537d87ec5 /vp9/encoder/vp9_speed_features.h
parent06159fcd18b3438bb703a2baff4019aa6393b267 (diff)
downloadlibvpx-4e66293fcb5b4779490faf8f40300e7e0096640e.tar
libvpx-4e66293fcb5b4779490faf8f40300e7e0096640e.tar.gz
libvpx-4e66293fcb5b4779490faf8f40300e7e0096640e.tar.bz2
libvpx-4e66293fcb5b4779490faf8f40300e7e0096640e.zip
Use source frame difference to make partition decision
Calculate the difference variance between last source frame and current source frame. The variance is calculated at 16x16 block level. The variances are compared to several thresholds to decide final partition sizes. An adaptive strategy is implemented to decide using SOURCE_VAR_BASED_PARTITION or FIXED_PARTITION based on motions in the video. The switching test is done once every search_type_check_frequency frames. The selection of source_var_thresh needs to be investigated further later. RTC set Borg test showed 0.424% overall psnr gain, and 0.357% ssim gain. For clips with large enough static area, the encoding speedup is around 2% to 15%. Change-Id: Id7d268f1d8cbca7fb8026aa4a53b3c77459dc156
Diffstat (limited to 'vp9/encoder/vp9_speed_features.h')
-rw-r--r--vp9/encoder/vp9_speed_features.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/vp9/encoder/vp9_speed_features.h b/vp9/encoder/vp9_speed_features.h
index 5091e2b06..fccab53e8 100644
--- a/vp9/encoder/vp9_speed_features.h
+++ b/vp9/encoder/vp9_speed_features.h
@@ -110,7 +110,10 @@ typedef enum {
// Use an arbitrary partitioning scheme based on source variance within
// a 64X64 SB
- VAR_BASED_PARTITION
+ VAR_BASED_PARTITION,
+
+ // Use non-fixed partitions based on source variance
+ SOURCE_VAR_BASED_PARTITION
} PARTITION_SEARCH_TYPE;
typedef struct {
@@ -305,6 +308,13 @@ typedef struct {
// used in inter frames.
// TODO(aconverse): Fold this into one of the other many mode skips
BLOCK_SIZE max_intra_bsize;
+
+ // The frequency that we check if SOURCE_VAR_BASED_PARTITION or
+ // FIXED_PARTITION search type should be used.
+ int search_type_check_frequency;
+
+ // The threshold used in SOURCE_VAR_BASED_PARTITION search type.
+ int source_var_thresh;
} SPEED_FEATURES;
struct VP9_COMP;