summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_speed_features.c
diff options
context:
space:
mode:
authorpaulwilkins <paulwilkins@google.com>2015-11-17 16:20:20 +0000
committerpaulwilkins <paulwilkins@google.com>2015-11-17 16:20:20 +0000
commit8ba98516fd8df6ee9275c4e68ec0663ad5b6848c (patch)
tree3cdc27ce17a87ba20c1f63db942fea1e242c9cb6 /vp9/encoder/vp9_speed_features.c
parent0149fb3d6b24f1df7f215ca12a2d8c8f70fd64f3 (diff)
downloadlibvpx-8ba98516fd8df6ee9275c4e68ec0663ad5b6848c.tar
libvpx-8ba98516fd8df6ee9275c4e68ec0663ad5b6848c.tar.gz
libvpx-8ba98516fd8df6ee9275c4e68ec0663ad5b6848c.tar.bz2
libvpx-8ba98516fd8df6ee9275c4e68ec0663ad5b6848c.zip
Changes to best quality settings.
Small changes to the best quality default speed trade off. Some speedup settings are worth while even for best quality as they have only a very small impact on quality but a significant impact on encode time. These changes give as much as a further 50-60% increase in encode speed for my test animations clip with minimal impact on quality. For this sequence these changes improve the best quality encode speed to about the same level as good quality speed 0 in Q3 2015 whilst retaining the large quality gain of over 1 db For many natural videos though the quality difference from good 0 to best is much smaller. Change-Id: I28b3840009d77e129817a78a7c41e29cb03e1132
Diffstat (limited to 'vp9/encoder/vp9_speed_features.c')
-rw-r--r--vp9/encoder/vp9_speed_features.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c
index b7daff3bc..318d8100c 100644
--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -17,17 +17,17 @@
// Mesh search patters for various speed settings
static MESH_PATTERN best_quality_mesh_pattern[MAX_MESH_STEP] =
- {{64, 4}, {28, 2}, {15, 1}, {7, 1}, {1, 1}, {1, 1}};
+ {{64, 4}, {28, 2}, {15, 1}, {7, 1}};
#define MAX_MESH_SPEED 5 // Max speed setting for mesh motion method
static MESH_PATTERN good_quality_mesh_patterns[MAX_MESH_SPEED + 1]
[MAX_MESH_STEP] =
- {{{64, 8}, {28, 4}, {15, 1}, {7, 1}, {3, 1}, {2, 1}},
- {{64, 8}, {28, 4}, {15, 1}, {7, 1}, {3, 1}, {2, 1}},
- {{64, 8}, {14, 2}, {7, 1}, {7, 1}, {3, 1}, {2, 1}},
- {{64, 16}, {24, 8}, {12, 4}, {7, 1}, {3, 1 }, {2, 1 }},
- {{64, 16}, {24, 8}, {12, 4}, {7, 1}, {3, 1 }, {2, 1 }},
- {{64, 16}, {24, 8}, {12, 4}, {7, 1}, {3, 1 }, {2, 1 }},
+ {{{64, 8}, {28, 4}, {15, 1}, {7, 1}},
+ {{64, 8}, {28, 4}, {15, 1}, {7, 1}},
+ {{64, 8}, {14, 2}, {7, 1}, {7, 1}},
+ {{64, 16}, {24, 8}, {12, 4}, {7, 1}},
+ {{64, 16}, {24, 8}, {12, 4}, {7, 1}},
+ {{64, 16}, {24, 8}, {12, 4}, {7, 1}},
};
static unsigned char good_quality_max_mesh_pct[MAX_MESH_SPEED + 1] =
{50, 25, 15, 5, 1, 1};
@@ -478,7 +478,6 @@ void vp9_set_speed_features_framesize_independent(VP9_COMP *cpi) {
sf->mv.auto_mv_step_size = 0;
sf->mv.fullpel_search_step_param = 6;
sf->comp_inter_joint_search_thresh = BLOCK_4X4;
- sf->adaptive_rd_thresh = 0;
sf->tx_size_search_method = USE_FULL_RD;
sf->use_lp32x32fdct = 0;
sf->adaptive_motion_search = 0;
@@ -534,11 +533,14 @@ void vp9_set_speed_features_framesize_independent(VP9_COMP *cpi) {
// Recode loop tolerance %.
sf->recode_tolerance = 25;
sf->default_interp_filter = SWITCHABLE;
- sf->tx_size_search_breakout = 0;
- sf->partition_search_breakout_dist_thr = 0;
- sf->partition_search_breakout_rate_thr = 0;
sf->simple_model_rd_from_var = 0;
+ // Some speed-up features even for best quality as minimal impact on quality.
+ sf->adaptive_rd_thresh = 1;
+ sf->tx_size_search_breakout = 1;
+ sf->partition_search_breakout_dist_thr = (1 << 19);
+ sf->partition_search_breakout_rate_thr = 80;
+
if (oxcf->mode == REALTIME)
set_rt_speed_feature(cpi, sf, oxcf->speed, oxcf->content);
else if (oxcf->mode == GOOD)