diff options
author | Ranjit Kumar Tulabandu <ranjit.tulabandu@ittiam.com> | 2017-02-10 16:25:50 +0530 |
---|---|---|
committer | Yunqing Wang <yunqingwang@google.com> | 2017-02-15 00:49:34 +0000 |
commit | 71061e9332c05324007e7f6c900285273793366d (patch) | |
tree | f83b05b6c4072b852b81cc258a4031516fee0016 /vp9/encoder/vp9_encoder.h | |
parent | eeb288d568fde3512e4362d73e4d684af3bcf87c (diff) | |
download | libvpx-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_encoder.h')
-rw-r--r-- | vp9/encoder/vp9_encoder.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_encoder.h b/vp9/encoder/vp9_encoder.h index 65f3f86de..675512618 100644 --- a/vp9/encoder/vp9_encoder.h +++ b/vp9/encoder/vp9_encoder.h @@ -276,6 +276,10 @@ typedef struct TileDataEnc { int ex_search_count; FIRSTPASS_DATA fp_data; VP9RowMTSync row_mt_sync; +#if CONFIG_MULTITHREAD + pthread_mutex_t *search_count_mutex; + pthread_mutex_t *enc_row_mt_mutex; +#endif } TileDataEnc; typedef struct RowMTInfo { @@ -897,6 +901,8 @@ VP9_LEVEL vp9_get_level(const Vp9LevelSpec *const level_spec); void vp9_new_framerate(VP9_COMP *cpi, double framerate); +void vp9_set_new_mt(VP9_COMP *cpi); + #define LAYER_IDS_TO_IDX(sl, tl, num_tl) ((sl) * (num_tl) + (tl)) #ifdef __cplusplus |