summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_speed_features.c
diff options
context:
space:
mode:
authorRanjit Kumar Tulabandu <ranjit.tulabandu@ittiam.com>2017-02-10 16:25:50 +0530
committerYunqing Wang <yunqingwang@google.com>2017-02-15 00:49:34 +0000
commit71061e9332c05324007e7f6c900285273793366d (patch)
treef83b05b6c4072b852b81cc258a4031516fee0016 /vp9/encoder/vp9_speed_features.c
parenteeb288d568fde3512e4362d73e4d684af3bcf87c (diff)
downloadlibvpx-71061e9332c05324007e7f6c900285273793366d.tar
libvpx-71061e9332c05324007e7f6c900285273793366d.tar.gz
libvpx-71061e9332c05324007e7f6c900285273793366d.tar.bz2
libvpx-71061e9332c05324007e7f6c900285273793366d.zip
Row based multi-threading of encoding stage
(Yunqing Wang) This patch implements the row-based multi-threading within tiles in the encoding pass, and substantially speeds up the multi-threaded encoder in VP9. Speed tests at speed 1 on STDHD(using 4 tiles) set show that the average speedups of the encoding pass(second pass in the 2-pass encoding) is 7% while using 2 threads, 16% while using 4 threads, 85% while using 8 threads, and 116% while using 16 threads. Change-Id: I12e41dbc171951958af9e6d098efd6e2c82827de
Diffstat (limited to 'vp9/encoder/vp9_speed_features.c')
-rw-r--r--vp9/encoder/vp9_speed_features.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c
index 9ce756efe..09e91fc17 100644
--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -585,6 +585,15 @@ void vp9_set_speed_features_framesize_dependent(VP9_COMP *cpi) {
rd->thresh_mult_sub8x8[i] = INT_MAX;
}
}
+
+ // With row based multi-threading, the following speed features
+ // have to be disabled to guarantee that bitstreams encoded with single thread
+ // and multiple threads match
+ if (cpi->oxcf.ethread_bit_match) {
+ sf->adaptive_rd_thresh = 0;
+ sf->allow_exhaustive_searches = 0;
+ sf->adaptive_pred_interp_filter = 0;
+ }
}
void vp9_set_speed_features_framesize_independent(VP9_COMP *cpi) {
@@ -747,4 +756,13 @@ void vp9_set_speed_features_framesize_independent(VP9_COMP *cpi) {
if (!cpi->oxcf.frame_periodic_boost) {
sf->max_delta_qindex = 0;
}
+
+ // With row based multi-threading, the following speed features
+ // have to be disabled to guarantee that bitstreams encoded with single thread
+ // and multiple threads match
+ if (cpi->oxcf.ethread_bit_match) {
+ sf->adaptive_rd_thresh = 0;
+ sf->allow_exhaustive_searches = 0;
+ sf->adaptive_pred_interp_filter = 0;
+ }
}