platform/upstream/libvpx.git
7 years agoMerge "vp9; Adjust noise estimation thresholds."
Marco Paniconi [Thu, 11 May 2017 21:58:40 +0000 (21:58 +0000)]
Merge "vp9; Adjust noise estimation thresholds."

7 years agovp9: SVC: allow for setting the interp_filter in non-rd pickmode.
Marco [Thu, 27 Apr 2017 19:32:03 +0000 (12:32 -0700)]
vp9: SVC: allow for setting the interp_filter in non-rd pickmode.

For SVC 1 pass non-rd pickmode, the interpolation filter for the
upsampling of the golden (spatial) reference was not being explicitly
set and instead was takin gwhatever value was set in the previous
mode/block (which would be either EIGHTTAP or EIGHTAP_SMOOTH).

Fix it to the default EIGHTTAP for now, to be updated/selected
adaptively in a later change.

Minor adjustmemt to rate targeting thresholds in datarate unittests.

Change-Id: I52085048674072c6cfb7163e11e9a2658d773826

7 years agoMerge "Tuning of factor used to calculate Q range in two pass."
Paul Wilkins [Thu, 11 May 2017 18:25:44 +0000 (18:25 +0000)]
Merge "Tuning of factor used to calculate Q range in two pass."

7 years agoMerge "vp9: Fix ubsan failure in denoiser."
Jerome Jiang [Thu, 11 May 2017 16:38:56 +0000 (16:38 +0000)]
Merge "vp9: Fix ubsan failure in denoiser."

7 years agoTuning of factor used to calculate Q range in two pass.
paulwilkins [Wed, 10 May 2017 15:07:13 +0000 (16:07 +0100)]
Tuning of factor used to calculate Q range in two pass.

A more detailed explanation of the experimentation
leading to this change can be found in:-

https://docs.google.com/a/google.com/document/d/13lsYhxgPyxUHvEess6wg9nikaonIZKY9Ak_Lpafv5Mo/edit?usp=sharing

This change gives gains across all our standard test sets for
overall psnr, ssim, fast ssim and psnr-HVS.

Values expressed as % reduction in bitrate.

Low res set     -0.257, -0.192, -0.173, -0.101
Mid res set     -0.233, -0.336, -0.367, -0.139
High res set    -0.999, -1.039, -1.111, -0.567
NetFlix 2K set -0.734, -0.174, -0.389, -0.820
Netflix 4K set  -0.814, -0.485, -0.796, -0.839

Change-Id: Ie981fb3c895c9dfcfc8682640d201a86375db5c8

7 years agoMerge "vp9: SVC: Fix setting in sample encoder."
Marco Paniconi [Wed, 10 May 2017 23:51:44 +0000 (23:51 +0000)]
Merge "vp9: SVC: Fix setting in sample encoder."

7 years agovp9; Adjust noise estimation thresholds.
Marco [Wed, 10 May 2017 23:46:50 +0000 (16:46 -0700)]
vp9; Adjust noise estimation thresholds.

Change-Id: Ia41a11df18e5a58d2b8bbecd11c249d357de2a8f

7 years agovp9: SVC: Fix setting in sample encoder.
Marco [Wed, 10 May 2017 23:18:14 +0000 (16:18 -0700)]
vp9: SVC: Fix setting in sample encoder.

For 1 spatial layer case, scaling_num/den was not set properly.

Change-Id: I139bf70c6dffde89eed24e435bcb5d98d2029bcd

7 years agovp9: Fix ubsan failure in denoiser.
Jerome Jiang [Tue, 9 May 2017 17:49:59 +0000 (10:49 -0700)]
vp9: Fix ubsan failure in denoiser.

Fix the overflow for subtraction between two unsigned integers.

BUG=webm:1432

Change-Id: I7b665e93ba5850548810eff23258782c4f5ee15a

7 years agoMerge "Update specializations of idct functions"
Linfeng Zhang [Wed, 10 May 2017 20:31:13 +0000 (20:31 +0000)]
Merge "Update specializations of idct functions"

7 years agoUpdate specializations of idct functions
Linfeng Zhang [Wed, 10 May 2017 18:52:32 +0000 (11:52 -0700)]
Update specializations of idct functions

Introduced append situation in Commit 0178d97 which could be
confusing. Clean a little bit and add some comments.

Change-Id: I69ad336f805aca7ce9d45515b8cd237423fadbb2

7 years agovp9: Wrap threshold tuning for HD only when denoiser is enabled.
Jerome Jiang [Wed, 10 May 2017 00:23:00 +0000 (17:23 -0700)]
vp9: Wrap threshold tuning for HD only when denoiser is enabled.

Fixes a speed regression.

Change-Id: I23d942e4af17fa81fe4a366c7369b3ad537e59b0

7 years agoMerge changes I92eb4312,Ibb2afe4e
Johann Koenig [Wed, 10 May 2017 18:19:50 +0000 (18:19 +0000)]
Merge changes I92eb4312,Ibb2afe4e

* changes:
  subpel variance neon: add mixed sizes
  sub pixel variance neon: use generic variance

7 years agoMerge "vp9: Adjustment to noise estimation."
Marco Paniconi [Wed, 10 May 2017 17:11:17 +0000 (17:11 +0000)]
Merge "vp9: Adjustment to noise estimation."

7 years agoMerge "vp9: SVC: Add option to set downsampling filter type."
Marco Paniconi [Wed, 10 May 2017 17:10:51 +0000 (17:10 +0000)]
Merge "vp9: SVC: Add option to set downsampling filter type."

7 years agovp9: Adjustment to noise estimation.
Marco [Wed, 10 May 2017 16:36:10 +0000 (09:36 -0700)]
vp9: Adjustment to noise estimation.

When the noise estimate is forced off due to large motion,
reset the counter and set smaller window for next estimate.

Change-Id: Ifa4ec95396134173a00d48353ad52f1b6a40c217

7 years agovp9: SVC: Add option to set downsampling filter type.
Marco [Tue, 2 May 2017 22:50:31 +0000 (15:50 -0700)]
vp9: SVC: Add option to set downsampling filter type.

Add option in SVC to set the filter type and phase for
the frame level downsampling filters.

For 3 spatial layers: set downsampling filter type to bilinear
and set phase to 8, for lowest spatial layer.

Change-Id: Id81f4b1ba93db19c1cd37b6a46d1281a2c61bc43

7 years agoUpdate test/partial_idct_test.cc
Linfeng Zhang [Tue, 9 May 2017 20:04:54 +0000 (13:04 -0700)]
Update test/partial_idct_test.cc

Makes more sense to call the corresponding partial idct C function
instead of the full idct C function as the reference.

Change-Id: Ibb7681dd063edd6307ba582c10c26c4c6a4b78c6

7 years agoClean 32x32 idct C code
Linfeng Zhang [Tue, 9 May 2017 18:05:51 +0000 (11:05 -0700)]
Clean 32x32 idct C code

Change-Id: I73b8104a9e7a70ffe827c1b7ff43618f24f5d7bd

7 years agoUpdate 4x4 idct sse2 functions
Linfeng Zhang [Mon, 8 May 2017 22:41:24 +0000 (15:41 -0700)]
Update 4x4 idct sse2 functions

It's a bit faster to call idct4_sse2() in vpx_idct4x4_16_add_sse2()

Change-Id: I1513be7a895cd2fc190f4a8297c240b17de0f876

7 years agoMerge "vp9: SVC: Modify conditon for setting downsample filter type."
Marco Paniconi [Mon, 8 May 2017 21:45:58 +0000 (21:45 +0000)]
Merge "vp9: SVC: Modify conditon for setting downsample filter type."

7 years agovp9: SVC: Modify conditon for setting downsample filter type.
Marco [Mon, 8 May 2017 17:47:53 +0000 (10:47 -0700)]
vp9: SVC: Modify conditon for setting downsample filter type.

Base the condition on the resolution of the spatial layer.
And remove restriction on scaling factor.

Change-Id: Iad00177ce364279d85661654bff00ce7f48a672e

7 years agoneon variance: process 16 values at a time
Johann [Mon, 1 May 2017 21:10:54 +0000 (14:10 -0700)]
neon variance: process 16 values at a time

Read in a Q register. Works on blocks of 16 and larger.

Improvement of about 20% for 64x64. The smaller blocks are faster, but
don't have quite the same level of improvement. 16x32 is only about 5%

BUG=webm:1422

Change-Id: Ie11a877c7b839e66690a48117a46657b2ac82d4b

7 years agoMerge changes Id602909a,Ib0e85608
Johann Koenig [Mon, 8 May 2017 17:34:20 +0000 (17:34 +0000)]
Merge changes Id602909a,Ib0e85608

* changes:
  neon variance: process two rows of 8 at a time
  neon variance: add small missing sizes

7 years agoMerge changes I0cfe4117,I3581d80d,Ida62c941
Linfeng Zhang [Mon, 8 May 2017 16:15:56 +0000 (16:15 +0000)]
Merge changes I0cfe4117,I3581d80d,Ida62c941

* changes:
  Split dsp/x86/inv_txfm_sse2.c
  Update highbd idct functions arguments to use uint16_t dst
  Clean CONVERT_TO_BYTEPTR/SHORTPTR in idct

7 years agoMerge "vp9: SVC: Set downsample filtertype for lowest spatial layer."
Marco Paniconi [Sat, 6 May 2017 02:30:59 +0000 (02:30 +0000)]
Merge "vp9: SVC: Set downsample filtertype for lowest spatial layer."

7 years agovp9: SVC: Set downsample filtertype for lowest spatial layer.
Marco [Sat, 6 May 2017 01:39:55 +0000 (18:39 -0700)]
vp9: SVC: Set downsample filtertype for lowest spatial layer.

For lowest spatial layer, in 3 layer SVC, set the
downsampling filtertype to get averaging filter.
Needed for reducing aliasing on low-res layer,
small increase in overall encoder time.

Change-Id: Ia31460123bd91b72eca49b46dd924b9f226d4563

7 years agoMerge "vp9: Neon optimization for denoiser. Add unit tests."
Jerome Jiang [Sat, 6 May 2017 01:28:31 +0000 (01:28 +0000)]
Merge "vp9: Neon optimization for denoiser. Add unit tests."

7 years agoMerge "Change target bitrate thresh in denoiser test."
Jerome Jiang [Sat, 6 May 2017 01:28:15 +0000 (01:28 +0000)]
Merge "Change target bitrate thresh in denoiser test."

7 years agoChange target bitrate thresh in denoiser test.
Jerome Jiang [Fri, 5 May 2017 23:50:19 +0000 (16:50 -0700)]
Change target bitrate thresh in denoiser test.

An intended behavior change disabling exhaustive searches in speed
feature causes VP9/DatarateTestVP9LargeDenoiser.4threads test failure.
Change the threshold to make it pass.

BUG=webm:1429

Change-Id: Ibcbe2314c6b2525799894f5d7204fc8eb4ec2a1e

7 years agovp9: Neon optimization for denoiser. Add unit tests.
Jerome Jiang [Tue, 25 Apr 2017 22:29:43 +0000 (15:29 -0700)]
vp9: Neon optimization for denoiser. Add unit tests.

Denoiser on Neon is 5x faster than C code.

BUG=webm:1420

Change-Id: I805ab64f809ff2137354116be6213e7ec29c1dcb

7 years agoMerge "vp9: Adjust some thresholds for noise estimation."
Marco Paniconi [Fri, 5 May 2017 20:02:41 +0000 (20:02 +0000)]
Merge "vp9: Adjust some thresholds for noise estimation."

7 years agovp9: Adjust some thresholds for noise estimation.
Marco [Fri, 5 May 2017 00:34:19 +0000 (17:34 -0700)]
vp9: Adjust some thresholds for noise estimation.

Adjust thresholds for noise estimation, for resolutions above VGA.
Tends to push cleaner/low noise clips to LowLow state.

No change in RTC metrics.

Change-Id: I739ca6b797d0a60ccd1c6c6a2775269b1f007e5e

7 years agoMerge "fdct 8x8 neon: minor comment cleanup"
Johann Koenig [Fri, 5 May 2017 18:22:44 +0000 (18:22 +0000)]
Merge "fdct 8x8 neon: minor comment cleanup"

7 years agovp9: Enable noise estimation on low res.
Jerome Jiang [Mon, 1 May 2017 17:49:54 +0000 (10:49 -0700)]
vp9: Enable noise estimation on low res.

Set noise level to kLowLow for high motion low res clips.
Change the normalization in noise metric for low res.
Reduce the initial time-window for all resolutions.

Change-Id: Iaed39dbb50b205cd9c735dc5b84822304fb01987

7 years agosubpel variance neon: add mixed sizes
Johann [Wed, 3 May 2017 19:06:29 +0000 (12:06 -0700)]
subpel variance neon: add mixed sizes

Add support for everything except block sizes of 4.

Performance is better but numbers will improve again when the variance
optimizations land.

BUG=webm:1423

Change-Id: I92eb4312b20be423fa2fe6fdb18167a604ff4d80

7 years agosub pixel variance neon: use generic variance
Johann [Tue, 2 May 2017 17:25:37 +0000 (10:25 -0700)]
sub pixel variance neon: use generic variance

When a neon version is available it will be called. This allows
decoupling the variance implementations and has no real downside. For
most configurations, the call will be #define'd to the neon
implementation.

Change-Id: Ibb2afe4e156c5610e89488504d366b3e6d1ba712

7 years agofdct 8x8 neon: minor comment cleanup
Johann [Thu, 4 May 2017 22:14:23 +0000 (15:14 -0700)]
fdct 8x8 neon: minor comment cleanup

Simplify HBD/non distinction in test.

Document why transpose_neon.h is not used

Change-Id: I17659414206ddbb8c2f1ef0d9f4a17f1745d5a52

7 years agoneon variance: process two rows of 8 at a time
Johann [Mon, 1 May 2017 20:19:49 +0000 (13:19 -0700)]
neon variance: process two rows of 8 at a time

When the width is equal to 8, process two rows at a time. This doubles
the speed of 8x4 and improves 8x8 by about 20%.

8x16 was using this technique already, but still improved a little bit
with the rewrite.

Also use this for vpx_get8x8var_neon

BUG=webm:1422

Change-Id: Id602909afcec683665536d11298b7387ac0a1207

7 years agoneon variance: add small missing sizes
Johann [Mon, 1 May 2017 16:10:06 +0000 (09:10 -0700)]
neon variance: add small missing sizes

Some of the mixed sizes were missing. They can be implemented trivially
using the existing helper function.

When comparing the previous 16x8 and 8x16 implementations, the helper
function is about 10% faster than the 16x8 version. The 8x16 is very
close, but the existing version appears to be faster.

BUG=webm:1422

Change-Id: Ib0e856083c1893e1bd399373c5fbcd6271a7f004

7 years agoMerge "High bit depth inter prediction horizontal/vertical filters AVX2"
Yi Luo [Thu, 4 May 2017 15:43:20 +0000 (15:43 +0000)]
Merge "High bit depth inter prediction horizontal/vertical filters AVX2"

7 years agoSplit dsp/x86/inv_txfm_sse2.c
Linfeng Zhang [Wed, 3 May 2017 22:43:02 +0000 (15:43 -0700)]
Split dsp/x86/inv_txfm_sse2.c

Spin out highbd idct functions.

BUG=webm:1412

Change-Id: I0cfe4117c00039b6778c59c022eee79ad089a2af

7 years agoUpdate highbd idct functions arguments to use uint16_t dst
Linfeng Zhang [Wed, 3 May 2017 20:32:08 +0000 (13:32 -0700)]
Update highbd idct functions arguments to use uint16_t dst

BUG=webm:1388

Change-Id: I3581d80d0389b99166e70987d38aba2db6c469d5

7 years agoClean CONVERT_TO_BYTEPTR/SHORTPTR in idct
Linfeng Zhang [Tue, 2 May 2017 17:44:12 +0000 (10:44 -0700)]
Clean CONVERT_TO_BYTEPTR/SHORTPTR in idct

BUG=webm:1388

Change-Id: Ida62c941f2b836d6c9e27b427a7d5008ab6dc112

7 years agoMerge "vp9 level: add tentative max cpb values for high levels"
Hui Su [Wed, 3 May 2017 20:51:03 +0000 (20:51 +0000)]
Merge "vp9 level: add tentative max cpb values for high levels"

7 years agoMerge "Adjust alt-ref selection in define_gf_group()"
Hui Su [Wed, 3 May 2017 20:50:28 +0000 (20:50 +0000)]
Merge "Adjust alt-ref selection in define_gf_group()"

7 years agoHigh bit depth inter prediction horizontal/vertical filters AVX2
Yi Luo [Mon, 17 Apr 2017 22:43:06 +0000 (15:43 -0700)]
High bit depth inter prediction horizontal/vertical filters AVX2

User level speed improvement on i7-6700, cpu-used=1,
  x86_64 Linux, bitrate, 1080p, 8Mbps, 4K, 16Mbps:
- Decoder:
  1080p: ~4%
  4K: ~5%
- Encoder:
  1080p: ~1%
  4K: ~3%

Change-Id: I51b48f9c5de0d62487d5a11aa579c97bd03dd640

7 years agoMerge changes I8bb660de,Ica51d780,I6037525d
Linfeng Zhang [Wed, 3 May 2017 19:17:55 +0000 (19:17 +0000)]
Merge changes I8bb660de,Ica51d780,I6037525d

* changes:
  Clean specializes of idct functions
  Clean add_protos of highbd idct functions
  Clean add_protos of idct functions

7 years agoMerge changes Ia5293d94,I90d481d3,Ia509d622,I54549b03,I89b635d6
James Zern [Wed, 3 May 2017 03:31:18 +0000 (03:31 +0000)]
Merge changes Ia5293d94,I90d481d3,Ia509d622,I54549b03,I89b635d6

* changes:
  ppc: Add convolve8_vsx and convolve8_avg_vsx
  ppc: Add convolve8_avg_vert_vsx
  ppc: Add convolve8_vert
  ppc: Add convolve8_horiz_avg
  ppc: Add convolve8_horiz

7 years agoppc: Add convolve8_vsx and convolve8_avg_vsx
Luca Barbato [Mon, 1 May 2017 17:02:03 +0000 (17:02 +0000)]
ppc: Add convolve8_vsx and convolve8_avg_vsx

Change-Id: Ia5293d948003a7fff5a7cbad6e83d8a72717c857

7 years agoppc: Add convolve8_avg_vert_vsx
Luca Barbato [Mon, 1 May 2017 15:53:44 +0000 (15:53 +0000)]
ppc: Add convolve8_avg_vert_vsx

Only the generic one again, speedups for 8x8 and larger blocks to
come later.

Change-Id: I90d481d3a602d1e277ead8f3934eca126b86b72d

7 years agoppc: Add convolve8_vert
Luca Barbato [Mon, 1 May 2017 15:53:44 +0000 (15:53 +0000)]
ppc: Add convolve8_vert

Only the generic one again, speedups for 8x8 and larger blocks
to come later.

Change-Id: Ia509d6225984b4930ec03928c9bcbf51486da99f

7 years agoppc: Add convolve8_horiz_avg
Luca Barbato [Sat, 29 Apr 2017 12:34:20 +0000 (12:34 +0000)]
ppc: Add convolve8_horiz_avg

The 8x8 and larger blocks cases can be sped up further.

Change-Id: I54549b03ac6c7a4e3f485738b100c3cac7ac2e15

7 years agoppc: Add convolve8_horiz
Luca Barbato [Sat, 29 Apr 2017 12:34:20 +0000 (12:34 +0000)]
ppc: Add convolve8_horiz

The 8x8 and larger blocks cases can be sped up further.

Change-Id: I89b635d6b01c59f523f2d54b1284ed32916c5046

7 years agoClean specializes of idct functions
Linfeng Zhang [Tue, 2 May 2017 21:14:06 +0000 (14:14 -0700)]
Clean specializes of idct functions

Change-Id: I8bb660de47b5f97263ec381dc428db96e9c9a4b2

7 years agoClean add_protos of highbd idct functions
Linfeng Zhang [Tue, 2 May 2017 20:31:56 +0000 (13:31 -0700)]
Clean add_protos of highbd idct functions

Change-Id: Ica51d780b92b316ce9112740c56cdf7670816371

7 years agoClean add_protos of idct functions
Linfeng Zhang [Tue, 2 May 2017 18:19:44 +0000 (11:19 -0700)]
Clean add_protos of idct functions

Change-Id: I6037525d92ec172810edab720389eb1865ed3b1a

7 years agoMerge "block error sse2: sum in 32 bits when possible"
Johann Koenig [Tue, 2 May 2017 14:16:47 +0000 (14:16 +0000)]
Merge "block error sse2: sum in 32 bits when possible"

7 years agoblock error avx2: rename variables
Johann [Tue, 2 May 2017 00:54:19 +0000 (17:54 -0700)]
block error avx2: rename variables

Change-Id: I2b8a9253f2c3d1fd85304c2970ebe70213870fe9

7 years agoMerge "block error avx2: sum in 32 bits when possible"
Johann Koenig [Tue, 2 May 2017 00:52:58 +0000 (00:52 +0000)]
Merge "block error avx2: sum in 32 bits when possible"

7 years agoMerge "vp9: SVC: Early exit on golden ref in non-rd pickmode."
Marco Paniconi [Mon, 1 May 2017 21:04:51 +0000 (21:04 +0000)]
Merge "vp9: SVC: Early exit on golden ref in non-rd pickmode."

7 years agoMerge "Clean vp9_highbd_build_inter_predictor() and highbd_inter_predictor()"
Linfeng Zhang [Mon, 1 May 2017 19:54:40 +0000 (19:54 +0000)]
Merge "Clean vp9_highbd_build_inter_predictor() and highbd_inter_predictor()"

7 years agoMerge "move vp9_error_intrin_avx2.c"
Johann Koenig [Mon, 1 May 2017 19:52:36 +0000 (19:52 +0000)]
Merge "move vp9_error_intrin_avx2.c"

7 years agoblock error avx2: sum in 32 bits when possible
Kyle Siefring [Mon, 1 May 2017 16:19:11 +0000 (09:19 -0700)]
block error avx2: sum in 32 bits when possible

Add 31bit pairs before unpacking in x86 block error code

AVX2 code provides a very minor performance improvement.

BUG=webm:1210

Change-Id: I4c82308eaf65741dca2f5c6db9be9c85f905073a

7 years agoMerge "vpx_scale_test: fix segfault on alloc failure"
James Zern [Mon, 1 May 2017 19:22:21 +0000 (19:22 +0000)]
Merge "vpx_scale_test: fix segfault on alloc failure"

7 years agovp9: SVC: Early exit on golden ref in non-rd pickmode.
Marco [Mon, 1 May 2017 17:04:31 +0000 (10:04 -0700)]
vp9: SVC: Early exit on golden ref in non-rd pickmode.

For SVC 1 pass real-time: add condition to skip the
golden (spatial) reference mode in non-rd pickmode.
Condition is to skip golden if the sse of zeromv-last mode
is below threshold. And change order in ref_mode_set_svc
to make sure golden zeromv is tested after last-nearest.

Speedup ~3-4% with little/negligible quality loss.

Change-Id: I6cbe314a93210454ba2997945f714015f1b2fca3

7 years agoblock error sse2: sum in 32 bits when possible
Kyle Siefring [Mon, 1 May 2017 16:15:29 +0000 (09:15 -0700)]
block error sse2: sum in 32 bits when possible

Add 31bit pairs before unpacking in x86 block error code

BUG=webm:1210

Change-Id: I5ca8c7f7775585a17fe09d6bbfc25e1f2955eb0a

7 years agomove vp9_error_intrin_avx2.c
Johann [Mon, 1 May 2017 16:12:25 +0000 (09:12 -0700)]
move vp9_error_intrin_avx2.c

There is only one avx2 implementation. Drop '_intrin'

Change-Id: I887a0d27d58567eaad49f749f127eca61313f312

7 years agovpx_scale_test: fix segfault on alloc failure
James Zern [Sat, 29 Apr 2017 20:12:53 +0000 (13:12 -0700)]
vpx_scale_test: fix segfault on alloc failure

check the return of ResetImage() before continuing

Change-Id: Iff0b038f7b9761113b8cf33a511a5306640d1273

7 years agoppc: Add convolve_avg
Luca Barbato [Wed, 26 Apr 2017 16:31:11 +0000 (16:31 +0000)]
ppc: Add convolve_avg

Change-Id: Ib203c444c708f42072e38301ee3db97b5b53d014

7 years agoppc: Add convolve_copy
Luca Barbato [Wed, 26 Apr 2017 15:43:19 +0000 (15:43 +0000)]
ppc: Add convolve_copy

Change-Id: Ie26d6dbe090e711d84bac01ba7da270db983f405

7 years agoMerge "Use uint32_t for accumulator"
Johann Koenig [Fri, 28 Apr 2017 18:32:08 +0000 (18:32 +0000)]
Merge "Use uint32_t for accumulator"

7 years agoMerge "vp9: Fix condition for disabling adaptive_rd_thresh."
Jerome Jiang [Fri, 28 Apr 2017 18:10:35 +0000 (18:10 +0000)]
Merge "vp9: Fix condition for disabling adaptive_rd_thresh."

7 years agovp9: Fix condition for disabling adaptive_rd_thresh.
Jerome Jiang [Thu, 27 Apr 2017 19:56:52 +0000 (12:56 -0700)]
vp9: Fix condition for disabling adaptive_rd_thresh.

Add speed constrains for disabling adaptive_rd_thresh when
row_mt_bit_exact is set.

Change-Id: I2445115c2f9a2e46b8a0966031a0fea488d4964e

7 years agoMerge "Generalize vp9 sse2 denoiser test for other platforms."
Jerome Jiang [Fri, 28 Apr 2017 15:45:52 +0000 (15:45 +0000)]
Merge "Generalize vp9 sse2 denoiser test for other platforms."

7 years agoUse uint32_t for accumulator
Johann [Fri, 28 Apr 2017 13:34:21 +0000 (06:34 -0700)]
Use uint32_t for accumulator

Be specific about the data type size.

Use convenience macro vp9_zero_array.

Change-Id: I5fadf7dbd408befb73820d85db0be4832e8cfcbd

7 years agoMerge "vp9 temporal filter: sse4 implementation"
Johann Koenig [Fri, 28 Apr 2017 13:22:40 +0000 (13:22 +0000)]
Merge "vp9 temporal filter: sse4 implementation"

7 years agoGeneralize vp9 sse2 denoiser test for other platforms.
Jerome Jiang [Thu, 27 Apr 2017 22:56:39 +0000 (15:56 -0700)]
Generalize vp9 sse2 denoiser test for other platforms.

Renamed to vp9_denoiser_test.

Change-Id: I0d8f4c94bcb81a60949a13d9fe839cee95d03f77

7 years agoMerge "VP9: enable trellis for high bitdepth intra"
Yaowu Xu [Fri, 28 Apr 2017 00:16:55 +0000 (00:16 +0000)]
Merge "VP9: enable trellis for high bitdepth intra"

7 years agoMerge "webm_read_frame: avoid NULL dereference"
James Zern [Thu, 27 Apr 2017 21:47:09 +0000 (21:47 +0000)]
Merge "webm_read_frame: avoid NULL dereference"

7 years agovp9 temporal filter: sse4 implementation
Johann [Wed, 15 Mar 2017 17:40:58 +0000 (10:40 -0700)]
vp9 temporal filter: sse4 implementation

Approximates division using multiply and shift.

Speeds up both sizes (8x8 and 16x16) by 30 times.

Fix the call sites to use the RTCD function.

Delete sse2 and mips implementation. They were based on a previous
implementation of the filter. It was changed in Dec 2015:
ece4fd5d2247c9512b31a93dd593de567beaf928

BUG=webm:1378

Change-Id: I0818e767a802966520b5c6e7999584ad13159276

7 years agovp9: Don't force disabling of adaptive_rd_thresh for realtime.
Jerome Jiang [Wed, 26 Apr 2017 18:12:21 +0000 (11:12 -0700)]
vp9: Don't force disabling of adaptive_rd_thresh for realtime.

Don't force disabling of adaptive_rd_thresh for realtime when
row_mt_bit_exact is set.

Row based adaptive rd is made usable in CL
454882(https://chromium-review.googlesource.com/c/454882) for REALTIME.

Change-Id: Ief023414f0fd6eb86f299dd46ae58f4436875af5

7 years agoMerge "Make the row based multi-threaded encoder deterministic"
Yunqing Wang [Wed, 26 Apr 2017 16:12:14 +0000 (16:12 +0000)]
Merge "Make the row based multi-threaded encoder deterministic"

7 years agoMerge "Update highbd convolve functions arguments to use uint16_t src/dst"
Linfeng Zhang [Wed, 26 Apr 2017 15:50:45 +0000 (15:50 +0000)]
Merge "Update highbd convolve functions arguments to use uint16_t src/dst"

7 years agoMerge "vp9: SVC: Adjust some speed settings for temporal layers."
Marco Paniconi [Wed, 26 Apr 2017 15:45:05 +0000 (15:45 +0000)]
Merge "vp9: SVC: Adjust some speed settings for temporal layers."

7 years agoVP9: enable trellis for high bitdepth intra
Peter de Rivaz [Wed, 26 Apr 2017 10:40:58 +0000 (11:40 +0100)]
VP9: enable trellis for high bitdepth intra

BUG=webm:1409

Change-Id: I5236595aac1c09386c60ffe8ad621e01422ed5a7

7 years agovp9 level: add tentative max cpb values for high levels
hui su [Thu, 20 Apr 2017 23:16:18 +0000 (16:16 -0700)]
vp9 level: add tentative max cpb values for high levels

Add tentative max cpb size values for levels 5.2 and up. Otherwise
encoding will fail when targeting for these levels.

Change-Id: Ib7e0ba4b9836ea1ac900b6822543812843d48463

7 years agoAdjust alt-ref selection in define_gf_group()
hui su [Thu, 20 Apr 2017 22:49:52 +0000 (15:49 -0700)]
Adjust alt-ref selection in define_gf_group()

107de19698 changes the encoder alt-ref selection behavior. Assuming
min_gf_interval = max_gf_interval = 4, the frame order would be
frm_1  arf_1  frm_2  frm_3  frm_4  frm_5  arf_2 before 107de19698;
frm_1  arf_1  frm_2  frm_3  frm_4  arf_2  frm_5 after 107de19698.

This patch reverts such alt-ref placement change.

Change-Id: I93a4a65036575151286f004d455d4fcea88a1550

7 years agoMerge "Fix the decoder seg fault when frame is corrupted."
Jerome Jiang [Wed, 26 Apr 2017 00:09:29 +0000 (00:09 +0000)]
Merge "Fix the decoder seg fault when frame is corrupted."

7 years agoMerge "vp9: speed >= 8: Skip uv variance in model_rd_sb_y_large"
Jerome Jiang [Wed, 26 Apr 2017 00:09:21 +0000 (00:09 +0000)]
Merge "vp9: speed >= 8: Skip uv variance in model_rd_sb_y_large"

7 years agovp9: SVC: Adjust some speed settings for temporal layers.
Marco [Tue, 25 Apr 2017 23:11:19 +0000 (16:11 -0700)]
vp9: SVC: Adjust some speed settings for temporal layers.

Make some speed setting changes for temporal enhancement layers,
and remove the switch in subpel_force_stop for the aggressive_base_mv
in non-rd pickmode.

Gain some 2-3% speed with little/negligible quality loss.

Change-Id: I3e2a7f80ff45f38c0a6ceb01b34dbca2f53edbf0

7 years agovp9: speed >= 8: Skip uv variance in model_rd_sb_y_large
Jerome Jiang [Fri, 21 Apr 2017 17:10:05 +0000 (10:10 -0700)]
vp9: speed >= 8: Skip uv variance in model_rd_sb_y_large

For speed >= 8 and color_sensitivity not set, skip the transform
skipping test in UV planes.
Add a new condition to check noise level to skip chroma check
for speed >= 8 if y_sad is high.

1~2% speedup on ARM for speed 8.

Borg tests show neutral results in both rtc and rtc_derf.

Change-Id: Idecd3ff6e28c97757a43bb6f3a7082c85f72109c

7 years agoClean vp9_highbd_build_inter_predictor() and highbd_inter_predictor()
Linfeng Zhang [Wed, 19 Apr 2017 21:48:07 +0000 (14:48 -0700)]
Clean vp9_highbd_build_inter_predictor() and highbd_inter_predictor()

BUG=webm:1388

Change-Id: I7ee32e0c08f0fb41712a8cc640b2c5bba872421d

7 years agoUpdate highbd convolve functions arguments to use uint16_t src/dst
Linfeng Zhang [Wed, 19 Apr 2017 20:08:25 +0000 (13:08 -0700)]
Update highbd convolve functions arguments to use uint16_t src/dst

BUG=webm:1388

Change-Id: I6912de2639895d817ce850da8ea9f6c8fe21da42

7 years agowebm_read_frame: avoid NULL dereference
James Zern [Sat, 22 Apr 2017 20:11:16 +0000 (13:11 -0700)]
webm_read_frame: avoid NULL dereference

block may be NULL with block_entry_eos or from return of GetBlock()

Change-Id: Ia0dd3ffa46305ee70efcdc55c05c2ad24efc993b

7 years agovp9; Reduce artifact in non-rd pickmode for lighting changes.
Marco [Fri, 14 Apr 2017 18:32:19 +0000 (11:32 -0700)]
vp9; Reduce artifact in non-rd pickmode for lighting changes.

Add a low-variance high-sumdiff to the superblock content state
and use it to limit the mv and bias some decisions in non-rd pickmode.
Only affects speed >= 6.

Reduces artifact for lighting changes.
Small/no difference in metrics on RTC set.

Change-Id: Ic84b2379fe0ae3fa71ae826ee6bae3eaf551a25b

7 years agoMake the row based multi-threaded encoder deterministic
Yunqing Wang [Mon, 24 Apr 2017 19:06:49 +0000 (12:06 -0700)]
Make the row based multi-threaded encoder deterministic

This patch followed allow_exhaustive_searches feature modification and
continued to modify the encoder to achieve the determinism in the row
based multi-threaded encoding. While row-mt = 1 and using multiple
threads, the adaptive feature in encoder was disabled, which gave
BDRate gain(at speed 1, -0.6% ~ -0.7%; at speed 2, -0.46% ~ -0.59%),
but some encoder speed losses(7% ~ 10% at speed 1 and 3% ~ 6% at
speed 2). These speed losses were acceptable considering the speed
gains obtained from row-mt.

Change-Id: I60d87a25346ebc487a864b57d559f560b7e398bb

7 years agoMerge "Make allow_exhaustive_searches feature no longer adaptive"
Yunqing Wang [Mon, 24 Apr 2017 17:41:10 +0000 (17:41 +0000)]
Merge "Make allow_exhaustive_searches feature no longer adaptive"

7 years agoMerge "vp9: SVC: fix condition for partition/skip threshold when denoising."
Marco Paniconi [Fri, 21 Apr 2017 21:28:16 +0000 (21:28 +0000)]
Merge "vp9: SVC: fix condition for partition/skip threshold when denoising."

7 years agoMake allow_exhaustive_searches feature no longer adaptive
Yunqing Wang [Thu, 20 Apr 2017 00:00:08 +0000 (17:00 -0700)]
Make allow_exhaustive_searches feature no longer adaptive

A previous patch turned on allow_exhaustive_searches feature only for
FC_GRAPHICS_ANIMATION content. This patch further modified the feature
by removing the exhaustive search limit, and made it no longer adaptive.
As a result, the 2 counts that recorded the number of motion searches
were removed, which helped achieve the determinism in the row based
multi-threading encoding. Tests showed that this patch didn't cause
the encoder much slower.

Used exhaustive_searches_thresh for this speed feature, and removed
allow_exhaustive_searches. Also, refactored the speed feature code
to follow the general speed feature setting style.

Change-Id: Ib96b182c4c8dfff4c1ab91d2497cc42bb9e5a4aa