vpx/vp8/encoder
Yunqing Wang ff0107f60d Amend and improve VP8 multithreading implementation
There are flaws in current implementation of VP8 multithreading encoder
and decoder as reported in the following issue:
https://code.google.com/p/chromium/issues/detail?id=158922

Although the data race warnings are harmless, and wouldn't cause real
problems while encoding and decoding videos, it is better to fix the
warnings so that VP8 code could pass the TSan test.

To synchronize the thread-shared data access and maintain the speed
(i.e. decoding speed), use multiple mutexes based on mb_rows to reduce
the number of synchronizations needed, make the reads and writes of
the shared data protected, and reduce the number of mb_col writes by
nsync times.

The decoder speed tests showed < 3% speed loss while using 2 ~ 4
threads.

Change-Id: Ie296defffcd86a693188b668270d811964227882
2016-01-08 11:59:49 -08:00
..
arm Unify subtract function used in VP8/9 2015-07-07 09:57:44 -07:00
mips/msa mips msa vp8 denoising filter optimization 2015-08-01 08:05:25 +05:30
x86 Rename vp8 quantize.c 2015-08-18 11:44:32 -07:00
bitstream.c Only build multithreaded functions on mt builds. 2015-09-01 17:05:05 -07:00
bitstream.h Remove asm offset dependencies 2014-11-06 16:00:01 -08:00
block.h Various updates to vp8. 2014-12-03 16:01:28 -08:00
boolhuff.c ENTROPY_STATS -> VP8_ENTROPY_STATS in vp8/. 2013-03-18 15:39:04 -07:00
boolhuff.h remove unused fields from BOOL_CODER / vp9_writer 2014-08-05 21:58:03 -07:00
dct_value_cost.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
dct_value_tokens.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
dct.c vp8: add some missing includes 2015-05-14 22:41:25 -07:00
defaultcoefcounts.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
denoising.c vpx_mem: remove vpx_memset 2015-04-28 20:00:59 -07:00
denoising.h Various updates to vp8. 2014-12-03 16:01:28 -08:00
encodeframe.c Amend and improve VP8 multithreading implementation 2016-01-08 11:59:49 -08:00
encodeframe.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
encodeintra.c vp8: change build_intra_predictors_mby_s to use vpx_dsp. 2015-09-30 18:45:40 -04:00
encodeintra.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
encodemb.c Rename vp8 quantize.c 2015-08-18 11:44:32 -07:00
encodemb.h Unify subtract function used in VP8/9 2015-07-07 09:57:44 -07:00
encodemv.c ENTROPY_STATS -> VP8_ENTROPY_STATS in vp8/. 2013-03-18 15:39:04 -07:00
encodemv.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
ethreading.c Amend and improve VP8 multithreading implementation 2016-01-08 11:59:49 -08:00
firstpass.c Move sub pixel variance to vpx_dsp 2015-07-07 15:51:04 -07:00
firstpass.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
lookahead.c Rename vp8/ codec directory to vp9/. 2012-11-01 16:31:22 -07:00
lookahead.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
mcomp.c Include vpx_dsp_common.h when using VPXMIN/MAX 2015-08-31 14:36:35 -07:00
mcomp.h Move sub pixel variance to vpx_dsp 2015-07-07 15:51:04 -07:00
modecosts.c vp8: add some missing includes 2015-05-14 22:41:25 -07:00
modecosts.h vp8: add some missing includes 2015-05-14 22:41:25 -07:00
mr_dissim.c Include vpx_dsp_common.h when using VPXMIN/MAX 2015-08-31 14:36:35 -07:00
mr_dissim.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
onyx_if.c Amend and improve VP8 multithreading implementation 2016-01-08 11:59:49 -08:00
onyx_int.h Amend and improve VP8 multithreading implementation 2016-01-08 11:59:49 -08:00
pickinter.c vp8: change build_intra_predictors_mby_s to use vpx_dsp. 2015-09-30 18:45:40 -04:00
pickinter.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
picklpf.c Rename vp8 quantize.c 2015-08-18 11:44:32 -07:00
quantize.h Remove pair quantization 2014-10-31 13:42:55 -07:00
ratectrl.c VP8: Update rate correction factor for drop_overshoot feature. 2015-09-28 12:11:33 -07:00
ratectrl.h VP8: For high overshoot, force drop frame and max-out QP. 2015-05-19 08:19:21 -07:00
rdopt.c vp8: change build_intra_predictors_mby_s to use vpx_dsp. 2015-09-30 18:45:40 -04:00
rdopt.h Clean up unused function warnings in vp8 encoder 2015-08-26 10:32:12 -07:00
segmentation.c vpx_mem: remove vpx_memset 2015-04-28 20:00:59 -07:00
segmentation.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
temporal_filter.c Rename vp8 quantize.c 2015-08-18 11:44:32 -07:00
tokenize.c vpx_mem: remove vpx_memset 2015-04-28 20:00:59 -07:00
tokenize.h vp8/encoder: add extern "C" to headers 2014-01-23 16:21:24 -08:00
treewriter.c Rename vp8/ codec directory to vp9/. 2012-11-01 16:31:22 -07:00
treewriter.h Clean up unused function warnings in vp8 encoder 2015-08-26 10:32:12 -07:00
vp8_quantize.c Rename vp8 quantize.c 2015-08-18 11:44:32 -07:00