diff options
author | Yunqing Wang <yunqingwang@google.com> | 2014-04-01 17:32:20 -0700 |
---|---|---|
committer | Yunqing Wang <yunqingwang@google.com> | 2014-04-08 17:03:02 -0700 |
commit | 4e66293fcb5b4779490faf8f40300e7e0096640e (patch) | |
tree | d770fe0a5fe94c6363be6a25c591208537d87ec5 /vp9/encoder/vp9_speed_features.h | |
parent | 06159fcd18b3438bb703a2baff4019aa6393b267 (diff) | |
download | libvpx-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.h | 12 |
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; |