platform/upstream/libvpx.git
6 years agoAdd enable-tpl-model guard
Jingning Han [Mon, 2 Jul 2018 19:34:21 +0000 (12:34 -0700)]
Add enable-tpl-model guard

Skip operations that exercise the tpl model values if the model
is turned off.

Change-Id: I9ab3b56950f6b5a40ae4670a570885aaaadf8382

6 years agoMerge "Exploit the spatial variance in temporal dependency model"
Jingning Han [Mon, 2 Jul 2018 17:01:45 +0000 (17:01 +0000)]
Merge "Exploit the spatial variance in temporal dependency model"

6 years agovp9: Fix to screen content artifact for real-time.
Marco Paniconi [Mon, 2 Jul 2018 00:26:38 +0000 (17:26 -0700)]
vp9: Fix to screen content artifact for real-time.

Reset segment to base (segment#0) on spatially flat
stationary blocks (source_variance = 0). Also increase
dc_skip threshold for these blocks.

Reduces artifacts on flat areas in screen content mode.

Change-Id: I7ee0c80d37536db7896fa74a83f75799f1dcf73d

6 years agoMerge "vp9: copy source on sync frame in denoiser."
Jerome Jiang [Sat, 30 Jun 2018 02:09:29 +0000 (02:09 +0000)]
Merge "vp9: copy source on sync frame in denoiser."

6 years agoMerge "vp9: Reset params for cyclic refresh on slide change"
Marco Paniconi [Sat, 30 Jun 2018 02:02:35 +0000 (02:02 +0000)]
Merge "vp9: Reset params for cyclic refresh on slide change"

6 years agoMerge "vp9: Reduce quality artifact for real-time scene-content."
Marco Paniconi [Sat, 30 Jun 2018 00:04:39 +0000 (00:04 +0000)]
Merge "vp9: Reduce quality artifact for real-time scene-content."

6 years agovp9: Reset params for cyclic refresh on slide change
Marco Paniconi [Fri, 29 Jun 2018 22:34:54 +0000 (15:34 -0700)]
vp9: Reset params for cyclic refresh on slide change

Reset the last_coded_q_map and the sb->index in the cyclic_refresh
on a re-encode for slide change, so the refresh can start again
right after slide change.

Change-Id: I10cbc8354de8f7c2863b4212e6793b58a048b330

6 years agoMerge "Add partition breakout models for 720p resolution"
Hui Su [Fri, 29 Jun 2018 22:59:51 +0000 (22:59 +0000)]
Merge "Add partition breakout models for 720p resolution"

6 years agovp9: copy source on sync frame in denoiser.
Jerome Jiang [Fri, 29 Jun 2018 01:43:37 +0000 (18:43 -0700)]
vp9: copy source on sync frame in denoiser.

Refresh all denoiser buffers on sync frame.

Add sync frame test with denoiser enabled.
Change-Id: I562a5ef5614b92a97565e6181a79eda51d9aeb99

6 years agovp9: Reduce quality artifact for real-time scene-content.
Marco Paniconi [Fri, 29 Jun 2018 18:15:00 +0000 (11:15 -0700)]
vp9: Reduce quality artifact for real-time scene-content.

Add scene detection flag to choose_partitioning to force split
of 64x64 block partition. This reduces artifacts on slide changes.

Bug:b/110978869

Change-Id: I9cc79a7c03f3aa2edeb28656b09a2177b72d59a8

6 years agoAdd partition breakout models for 720p resolution
Hui Su [Mon, 25 Jun 2018 00:00:54 +0000 (17:00 -0700)]
Add partition breakout models for 720p resolution

Add partition search breakout models for 720p resolution,
currently enabled only for speed 0.

Compression performance change is neutral.
Tested encoding speed over 20 720p clips:

Speed gain(%) QP=55 QP=45 QP=35
  max      22.1 20.3 29.8
average         10.3  9.1 11.4

Change-Id: I07499728bbc5b80035fc66fad882ea556c8d07f2

6 years agoExploit the spatial variance in temporal dependency model
Jingning Han [Wed, 20 Jun 2018 20:15:10 +0000 (13:15 -0700)]
Exploit the spatial variance in temporal dependency model

Adapt the Lagrangian multipler based on the spatial variance in
the temporal dependency model. The functionality is disabled by
default. To turn on, set enable_tpl_model to 1.

Change-Id: I1b50606d9e2c8eb9c790c49eacc12c00d3d7c211

6 years agoRefactor to use unified multiplier for partition search
Jingning Han [Thu, 28 Jun 2018 22:11:35 +0000 (15:11 -0700)]
Refactor to use unified multiplier for partition search

Change-Id: I26ced25ff2e20ec414d5ecaa7d26f4a69175896c

6 years agoMerge "Enhanced partition experiment."
Paul Wilkins [Fri, 29 Jun 2018 14:16:52 +0000 (14:16 +0000)]
Merge "Enhanced partition experiment."

6 years agoMerge "Skip temporal dependency build when the speed feature is off"
Jingning Han [Fri, 29 Jun 2018 05:02:40 +0000 (05:02 +0000)]
Merge "Skip temporal dependency build when the speed feature is off"

6 years agoMerge "Avoid operation on INT64_MAX value"
Jingning Han [Fri, 29 Jun 2018 04:18:08 +0000 (04:18 +0000)]
Merge "Avoid operation on INT64_MAX value"

6 years agoMerge "libyuv: disable AVX512 in clang"
James Zern [Fri, 29 Jun 2018 04:03:20 +0000 (04:03 +0000)]
Merge "libyuv: disable AVX512 in clang"

6 years agovp9-svc: Adjust threshold for early exit on golden
Marco Paniconi [Thu, 28 Jun 2018 23:08:55 +0000 (16:08 -0700)]
vp9-svc: Adjust threshold for early exit on golden

Use the avg_frame_low_motion to reduce/turnoff this
early exit for higher motion content. Get some quality
back for higher motion clips and keep the same exit
thresh for low motion clips.

Change-Id: I95daf754dc0048b3e935d1a753f7f1101e6ffb77

6 years agoSkip temporal dependency build when the speed feature is off
Jingning Han [Thu, 28 Jun 2018 22:26:27 +0000 (15:26 -0700)]
Skip temporal dependency build when the speed feature is off

Change-Id: I888761193882cc92720e0efaea5229a04a6ed67f

6 years agolibyuv: disable AVX512 in clang
Johann [Thu, 28 Jun 2018 13:08:03 +0000 (06:08 -0700)]
libyuv: disable AVX512 in clang

ARGBToRGB24Row_AVX512VBMI fails to compile on Mac:
row_gcc.cc: instruction requires: AVX-512 VBMI ISA AVX-512 VL ISA

BUG=libyuv:789

Change-Id: Ibd584e8c82e3ce86ec5460b4243f84f5dbdf4c81

6 years agoAvoid operation on INT64_MAX value
Jingning Han [Thu, 28 Jun 2018 19:06:12 +0000 (12:06 -0700)]
Avoid operation on INT64_MAX value

If the rate cost returns as INT_MAX, directly set the rdcost as
INT64_MAX.

Change-Id: I3ea1963aff10040dd9cef805beed9aebeedb93bc

6 years agoEnhanced partition experiment.
Paul Wilkins [Tue, 26 Jun 2018 14:57:51 +0000 (15:57 +0100)]
Enhanced partition experiment.

This patch relates to motion artifacts as described in Issue 73484098

The aim of this patch is to promote the use of smaller partition
sizes in places where some of the sub blocks have very low
spatial complexity and some have much higher complexity.
The patch can have a small impact on encode speed, but much
less than alternative approaches such as lowering the rd thresholds
that limit the partition search when distortion is low.

The patch also applies a similar sub block strategy for AQ1.

Metrics results for our standard sets over typical YT rates.
(Overall PSNR, SSIM, PSNR HVS) % -ve better.

Low Res -0.274, -0.303, -0.330
Mid Res 0.001, - 0.128, -0.100
Hd Res -0.236, -0.371, -0.349
N 2K -0.663, -0.798, -0.708
N 4K -0.488, -0.588, -0.517

Change-Id: Ice1fc977c1d29fd5e401f9c7c8e8ff7a5f410717

6 years agoMerge "vp9-svc: Fix to early golden exit nonrd-pickmode"
Marco Paniconi [Thu, 28 Jun 2018 05:33:59 +0000 (05:33 +0000)]
Merge "vp9-svc: Fix to early golden exit nonrd-pickmode"

6 years agoMerge "vp9-svc: Set avg_frame_low_motion for lower layers."
Marco Paniconi [Thu, 28 Jun 2018 05:33:50 +0000 (05:33 +0000)]
Merge "vp9-svc: Set avg_frame_low_motion for lower layers."

6 years agoMerge "Support Power8/Power9 tuning"
Luca Barbato [Wed, 27 Jun 2018 22:27:11 +0000 (22:27 +0000)]
Merge "Support Power8/Power9 tuning"

6 years agovp9-svc: Set avg_frame_low_motion for lower layers.
Marco Paniconi [Wed, 27 Jun 2018 20:04:18 +0000 (13:04 -0700)]
vp9-svc: Set avg_frame_low_motion for lower layers.

The avg_frame_low_motion metric is only computed on the
top spatial layer, and since its part of the layer context
struct, it needs to written to all lower spatial layers for
consistency.

Small/minor change in metrics.
Change-Id: I92a001c37aeb332e613212288b13a2ed9745af88

6 years agovp9-svc: Fix to early golden exit nonrd-pickmode
Marco Paniconi [Wed, 27 Jun 2018 19:26:09 +0000 (12:26 -0700)]
vp9-svc: Fix to early golden exit nonrd-pickmode

For SVC: apply the sse_zeromv early exit also to
the case where golden is second temporal reference.
Set the thresh_svc_golden threshold for this case.

This is reduce the encode time for case where golden
is second temporal reference for SVC.
Change-Id: I8c0c87dd746579d3c4f5e983c7f9dd0a1e1476e0

6 years agoAdd Speed Tests to Trans32x32Test
Luc Trudeau [Thu, 21 Jun 2018 01:42:19 +0000 (21:42 -0400)]
Add Speed Tests to Trans32x32Test

Speed tests are disabled by default.

Change-Id: I49f8da3d3e1e4d9c72b17fc47c098284e7d84236

6 years agoSupport Power8/Power9 tuning
Luca Barbato [Wed, 27 Jun 2018 19:12:39 +0000 (21:12 +0200)]
Support Power8/Power9 tuning

Change-Id: I50b32f37f77224ebf0470545152c83ae2ed3cfa3

6 years agoMerge "[VSX] Drop the clang-4 workaround for vec_xxpermdi"
Luca Barbato [Wed, 27 Jun 2018 19:04:49 +0000 (19:04 +0000)]
Merge "[VSX] Drop the clang-4 workaround for vec_xxpermdi"

6 years agoMerge "Add reference frame update flags for hierarchical"
Zoe Liu [Wed, 27 Jun 2018 17:09:32 +0000 (17:09 +0000)]
Merge "Add reference frame update flags for hierarchical"

6 years agoMerge changes Ic2183e8b,If906ec9b
Luc Trudeau [Wed, 27 Jun 2018 16:09:48 +0000 (16:09 +0000)]
Merge changes Ic2183e8b,If906ec9b

* changes:
  [VSX] Replace vec_pack and vec_perm with single vec_perm
  VSX Version of fdct32x32_rd

6 years agoMerge "Turn on ML partition search breakout on speed 0"
Hui Su [Wed, 27 Jun 2018 15:38:45 +0000 (15:38 +0000)]
Merge "Turn on ML partition search breakout on speed 0"

6 years ago[VSX] Replace vec_pack and vec_perm with single vec_perm
Luc Trudeau [Tue, 26 Jun 2018 21:06:52 +0000 (17:06 -0400)]
[VSX] Replace vec_pack and vec_perm with single vec_perm

vpx_quantize_b:
VP9QuantizeTest Speed Test (POWER8 Model 2.1)
32x32 Old VSX time = 8.1 ms, new VSX time = 7.9 ms

vp9_quantize_fp:
VP9QuantizeTest Speed Test (POWER8 Model 2.1)
32x32 Old VSX time = 6.5 ms, new VSX time = 6.2 ms

Change-Id: Ic2183e8bd721bb69eaeb4865b542b656255a0870

6 years agoVSX Version of fdct32x32_rd
Luc Trudeau [Thu, 21 Jun 2018 01:55:49 +0000 (21:55 -0400)]
VSX Version of fdct32x32_rd

Low bit depth version only. Passes the Trans32x32Test test suite.

Trans32x32Test Speed Test (POWER9 Model 2.2)
32x32 C time = 212.7 ms (±0.1 ms), VSX time = 82.3 ms (±0.0 ms) [2.6x]

Change-Id: If906ec9b56ce3818cae0cc462c7277284ab29859

6 years agoMerge "third_party/libyuv: update to a37e7bfe"
Johann Koenig [Wed, 27 Jun 2018 13:10:19 +0000 (13:10 +0000)]
Merge "third_party/libyuv: update to a37e7bfe"

6 years agoMerge "BUG FIX: Initialize AverageTestBase members"
James Zern [Wed, 27 Jun 2018 01:06:17 +0000 (01:06 +0000)]
Merge "BUG FIX: Initialize AverageTestBase members"

6 years agoBUG FIX: Initialize AverageTestBase members
Scott LaVarnway [Wed, 27 Jun 2018 00:06:42 +0000 (17:06 -0700)]
BUG FIX: Initialize AverageTestBase members

bit_depth_ was not initialized (used in FillRandom)
and caused valgrind errors.

BUG=webm:1542

Change-Id: I09a9acd54de0dfa4f9006304f45eb20883c9908c

6 years agoMerge "vp9 svc: Add tests for sync on 2nd & 3rd spatial layers."
Jerome Jiang [Tue, 26 Jun 2018 23:46:00 +0000 (23:46 +0000)]
Merge "vp9 svc: Add tests for sync on 2nd & 3rd spatial layers."

6 years agoMerge "vp9 svc: Move CheckLayerRateTargeting into class."
Jerome Jiang [Tue, 26 Jun 2018 23:34:50 +0000 (23:34 +0000)]
Merge "vp9 svc: Move CheckLayerRateTargeting into class."

6 years agoMerge "vp9 svc: Fix uninitialized data members in frame sync tests."
Jerome Jiang [Tue, 26 Jun 2018 22:53:57 +0000 (22:53 +0000)]
Merge "vp9 svc: Fix uninitialized data members in frame sync tests."

6 years agovp9 svc: Move CheckLayerRateTargeting into class.
Jerome Jiang [Fri, 22 Jun 2018 21:27:44 +0000 (14:27 -0700)]
vp9 svc: Move CheckLayerRateTargeting into class.

No need to pass arguments that are already members of the class.

Change-Id: I887d33d6037b561dee5dd8d49bb112d9120cd2a7

6 years agovp9 svc: Add tests for sync on 2nd & 3rd spatial layers.
Jerome Jiang [Sat, 23 Jun 2018 00:56:37 +0000 (17:56 -0700)]
vp9 svc: Add tests for sync on 2nd & 3rd spatial layers.

Change-Id: I4d8b6d114d9a407f5bb879ab059a66425976f1df

6 years agovp9 svc: Fix uninitialized data members in frame sync tests.
Jerome Jiang [Tue, 26 Jun 2018 22:03:11 +0000 (15:03 -0700)]
vp9 svc: Fix uninitialized data members in frame sync tests.

BUG=webm:1542

Change-Id: If3e0b32a6832740b9af2f5c2d9418a6664297f57

6 years agoTurn on ML partition search breakout on speed 0
Hui Su [Mon, 25 Jun 2018 17:58:33 +0000 (10:58 -0700)]
Turn on ML partition search breakout on speed 0

Enable ML based partition search breakout on speed 0 when frame
resolution is less then 720p and bitdepth is 8.

Compression performance change is neutral.
Tested encoding speed over 20 480p sequences:

Speed gain(%) QP=30 QP=40 QP=50 QP=60
  max      14.4 18.6 17.8 24.4
average          4.6  9.0  8.0 13.2

Change-Id: Ia0d2947030ac774dc1533eb27ffc57f5b788a6ce

6 years agovp9: Add lower Q limt to cyclic refresh usage.
Marco Paniconi [Mon, 25 Jun 2018 04:44:29 +0000 (21:44 -0700)]
vp9: Add lower Q limt to cyclic refresh usage.

Disable the cyclic refresh for very low average Q.
This reduces encoded bitrate for static slides after the
the quality has ramped up well enough (low Q). And as the
cyclic refresh is not needed at low Q in most cases, this
has minimal/no effect on quality on RTC set.

Change-Id: Id6d449aa2351bb6886d72aafb2d406e967ed2789

6 years agoMerge "Add vpx_highbd_avg_8x8, vpx_highbd_avg_4x4"
Scott LaVarnway [Mon, 25 Jun 2018 18:45:45 +0000 (18:45 +0000)]
Merge "Add vpx_highbd_avg_8x8, vpx_highbd_avg_4x4"

6 years agoMerge "vp9: Fixes for lossless mode for real-time mode."
Marco Paniconi [Mon, 25 Jun 2018 18:30:18 +0000 (18:30 +0000)]
Merge "vp9: Fixes for lossless mode for real-time mode."

6 years agoMerge "vp9-svc: Fix to frame dropping when layer is skipped."
Marco Paniconi [Mon, 25 Jun 2018 18:19:41 +0000 (18:19 +0000)]
Merge "vp9-svc: Fix to frame dropping when layer is skipped."

6 years agoMerge "Add a partition search breakout model"
Hui Su [Mon, 25 Jun 2018 17:58:23 +0000 (17:58 +0000)]
Merge "Add a partition search breakout model"

6 years agovp9: Fixes for lossless mode for real-time mode.
Marco Paniconi [Mon, 25 Jun 2018 05:00:58 +0000 (22:00 -0700)]
vp9: Fixes for lossless mode for real-time mode.

Fixes to nonrd coding mode for lossless mode: keep
skip_txfm to 0 (no skip) and disable the encoder breakout.
This makes the encoding lossless when that mode is selected
for real-time (nonrd pickmode).

Also the disable the cyclic refresh for lossless mode.

Change-Id: I20a11ef6df08accec472d26fabebd14d51f4d337

6 years agovp9-svc: Fix to frame dropping when layer is skipped.
Marco Paniconi [Mon, 25 Jun 2018 16:02:24 +0000 (09:02 -0700)]
vp9-svc: Fix to frame dropping when layer is skipped.

Fix condition in frame dropper for SVC to handle case
where spatial layer is skipped encoded (due to 0 bitrate).

Change-Id: I24185178774d73e8bb1c406acc0292422dfbe174

6 years agoAdd a partition search breakout model
Hui Su [Fri, 22 Jun 2018 04:03:37 +0000 (21:03 -0700)]
Add a partition search breakout model

for q-index between 100 and 150.

This only affects speed 1 and 2, resolution under 720p, q-index between
100 and 150, low bit-depth.

Compression performane change is neutral.
Encoding speed gain is up to 16% for speed 1;
                       up to  6% for speed 2.

Results from encoding city_4cif_30fps:
speed 1, QP=36
before:  37.964 dB, 45581b/f, 2.73 fps
after:   37.958 dB, 45510b/f, 3.16 fps

speed 1, QP=28
before:  39.297 dB, 82452b/f, 2.14 fps
after:   39.297 dB, 82310b/f, 2.25 fps

speed 2, QP=36
before:  37.903 dB, 45586b/f, 4.08 fps
after:   37.895 dB, 45492b/f, 4.34 fps

speed 2, QP=28
before:  39.224 dB, 82272b/f, 3.03 fps
after:   39.223 dB, 82152b/f, 3.17 fps

Change-Id: Ieaefedad902df80aa9699545fa06294601955803

6 years agoMerge "VP9 SVC: Add tests for layer sync on base layer."
Jerome Jiang [Sun, 24 Jun 2018 02:25:26 +0000 (02:25 +0000)]
Merge "VP9 SVC: Add tests for layer sync on base layer."

6 years agoVP9 SVC: Add tests for layer sync on base layer.
Jerome Jiang [Wed, 20 Jun 2018 23:30:35 +0000 (16:30 -0700)]
VP9 SVC: Add tests for layer sync on base layer.

Create tests for sync layer. The purpose of new tests is not to check
bitrate targeting, thus they're put in a new file.

Create a base class for svc tests, which is also inherited by svc datarate
tests, to reduce code redundancy.

Start decoding in the test from the frame of layer sync.

Change-Id: I7226d208279ad785873dffef51e0a8abef23b256

6 years agoAdd reference frame update flags for hierarchical
Zoe Liu [Fri, 22 Jun 2018 02:26:32 +0000 (19:26 -0700)]
Add reference frame update flags for hierarchical

Previous CLs have implemented the construction of the hierarchical
structure at the encoder side. This CL is to define and configure the
according flags that will guide the reference frame update according to
the constructed hierarchical structure.

Change-Id: Iae55f2400f7c7beff41feff9308f87bfc70c7b21

6 years agoMerge "Add extra altref option for hierarchical structure"
Zoe Liu [Fri, 22 Jun 2018 21:47:47 +0000 (21:47 +0000)]
Merge "Add extra altref option for hierarchical structure"

6 years agoAdd extra altref option for hierarchical structure
Zoe Liu [Thu, 21 Jun 2018 23:28:15 +0000 (16:28 -0700)]
Add extra altref option for hierarchical structure

This CL is to hook up the implemented hierarchical structure
construction as well as its corresponding bitrate allocation
functionality with the defining of a GF group.

Currently the hierarchical structure is off by default. Hence this CL
has no impact on coding performance.

Change-Id: I9e1ddfd877559e99072c23970f7fe103b64ed9ee

6 years agoAdd vpx_highbd_avg_8x8, vpx_highbd_avg_4x4
Scott LaVarnway [Wed, 20 Jun 2018 22:10:46 +0000 (15:10 -0700)]
Add vpx_highbd_avg_8x8, vpx_highbd_avg_4x4

BUG=webm:1537

Change-Id: I5f216f35436189b67d9f350991f41ed31431d4fe

6 years agoSingle out ref frame update functionality
Zoe Liu [Fri, 22 Jun 2018 02:56:09 +0000 (19:56 -0700)]
Single out ref frame update functionality

This CL is for a preparation to introduce hierarchical structure based
reference frame update.

Change-Id: Id00a6b721c97d24fc7f5499483b31762b3839a3e

6 years agoMerge changes I51e7ed32,I99a9535b,Id584d8f6
Luca Barbato [Fri, 22 Jun 2018 08:13:54 +0000 (08:13 +0000)]
Merge changes I51e7ed32,I99a9535b,Id584d8f6

* changes:
  ppc: add vp9_iht16x16_256_add_vsx
  ppc: add vp9_iht8x8_64_add_vsx
  ppc: add vp9_iht4x4_16_add_vsx

6 years agoMerge "Add capibility to configure decoder in encode tests."
Jerome Jiang [Fri, 22 Jun 2018 04:32:46 +0000 (04:32 +0000)]
Merge "Add capibility to configure decoder in encode tests."

6 years agoAdd capibility to configure decoder in encode tests.
Jerome Jiang [Thu, 21 Jun 2018 21:08:45 +0000 (14:08 -0700)]
Add capibility to configure decoder in encode tests.

This will allow us to test SVC features like Decode up to certain layers.

Change-Id: Icfb6f9d107108054cd0917197552e09ae48cbc52

6 years agoMerge "Add a partition search breakout model"
Hui Su [Thu, 21 Jun 2018 19:18:01 +0000 (19:18 +0000)]
Merge "Add a partition search breakout model"

6 years agoMerge "Add bit allocation for hierarchical layer"
Zoe Liu [Thu, 21 Jun 2018 16:31:36 +0000 (16:31 +0000)]
Merge "Add bit allocation for hierarchical layer"

6 years agothird_party/libyuv: update to a37e7bfe
Johann [Wed, 4 Apr 2018 18:50:39 +0000 (11:50 -0700)]
third_party/libyuv: update to a37e7bfe

Fix mingw builds for x86_32 by updating past:
https://chromium.googlesource.com/libyuv/libyuv/+/8fa02df3c0591754958a50

Pick up upstream fixes for clang 5 builds with --disable-optimizations.

Disable libyuv by default when building for msa. We have not been able
to update libyuv because of build issues with mips. This can be
revisited when we update the mips compiler used in Jenkins.

BUG=webm:1509,libyuv:793,webm:1514,webm:1518

Change-Id: Id0b9947cb5e0aa74f2f74746524ab6ff2d48796f

6 years agoRefactor block partition level rate distortion cost computation
Jingning Han [Wed, 20 Jun 2018 18:13:00 +0000 (11:13 -0700)]
Refactor block partition level rate distortion cost computation

Compute the rate distortion cost directly at the coding block level.

Change-Id: Ib3f8e1ac6b6ec68db4f96c037f567b19da7fb114

6 years agoAdd bit allocation for hierarchical layer
Zoe Liu [Wed, 20 Jun 2018 01:11:08 +0000 (18:11 -0700)]
Add bit allocation for hierarchical layer

This CL migrates the bit allocation scheme from libaom and combines the
scheme for hierarchical layer with the updated scheme in libvpx that
uses a modified scheme to calculate the target bitrate per frame.

Change-Id: I63593ed528abd4a6a1a8681abf6c9cf06c7a2ee0

6 years agoMerge "libyuv: remove problematic functions"
Johann Koenig [Wed, 20 Jun 2018 22:53:19 +0000 (22:53 +0000)]
Merge "libyuv: remove problematic functions"

6 years agoMerge "Disable tpl model in high bd route"
Jingning Han [Wed, 20 Jun 2018 21:00:27 +0000 (21:00 +0000)]
Merge "Disable tpl model in high bd route"

6 years agolibyuv: remove problematic functions
Johann [Wed, 20 Jun 2018 20:10:54 +0000 (13:10 -0700)]
libyuv: remove problematic functions

These fail to build with clang on 32 bit with
--disable-optimizations

Upstream libyuv has addressed these and we will get updated
versions on the next roll. At the moment, we don't use
libyuv for copying alpha data and so this is a quick fix.

BUG=webm:1514

Change-Id: I0040c3ae048f8d896c2082deeb2e32070a32c453

6 years agoDisable tpl model in high bd route
Jingning Han [Wed, 20 Jun 2018 18:03:05 +0000 (11:03 -0700)]
Disable tpl model in high bd route

Temporarily disable tpl dep model in the high bit-depth route to
prevent encoding failure.

Change-Id: Iebb3168a60b38dcc1273e25542530c4359dc679d

6 years agoAdd a partition search breakout model
Hui Su [Mon, 18 Jun 2018 23:07:41 +0000 (16:07 -0700)]
Add a partition search breakout model

for q-index between 150 and 200.

Previously the ML based breakout feature is only supported for q-index
larger than 200.

This only affects speed 1 and 2, resolution under 720p, q-index between
150 and 200, low bit-depth.

Compression performane change is neutral.
Encoding speed gain is up to 30% for speed 1;
                       up to 20% for speed 2.

Results from encoding city_4cif_30fps:
speed 1, QP=38
before:  37.689 dB, 41007b/f, 2.91 fps
after:   37.687 dB, 40998b/f, 3.46 fps

speed 1, QP=48
before:  35.959 dB, 22106b/f, 3.66 fps
after:   35.950 dB, 22118b/f, 4.83 fps

speed 2, QP=38
before:  37.630 dB, 40999b/f, 4.42 fps
after:   37.633 dB, 41063b/f, 4.63 fps

speed 2, QP=48
before:  35.905 dB, 22177b/f, 4.90 fps
after:   35.889 dB, 22145b/f, 5.92 fps

Change-Id: Ibd4a2f4d7093fb248ab94ddd388cbaa8de2c5ef7

6 years agovp9-svc: Add support for spatial layer sync frames.
Marco Paniconi [Tue, 12 Jun 2018 18:50:29 +0000 (11:50 -0700)]
vp9-svc: Add support for spatial layer sync frames.

Add encoder control to allow application to insert
spatial layer sync frame. The sync frame disables
temporal prediction for that spatial layer.

This is useful for RTC application to have receiver
start decoding a higher spatial layer, without inserting
a key frame on base spatial layer.

If the layer sync is requested on the base spatial layer
this then force a key frame, otherwise it only disables
the temporal reference for that spatial layer, allowing
temporal prediction to continue for the other layers.

Although the temporal prediction is disabled and reset
on a layer sync frame, the inter-layer prediction for the
sync frame is enabled on INTER frames. So the meaning of
INTER_LAYER_PRED_OFF_NONKEY is modified to mean disable
inter-layer prediction on non-key and non-sync frames.

Added unittest for inserting layer sync frames.

Bump up ABI version.
Change-Id: Id458acc400a77c853551f125c4e7b6d001991f03

6 years agoMerge "Refactor partition mode cost calculation"
Jingning Han [Wed, 20 Jun 2018 04:10:38 +0000 (04:10 +0000)]
Merge "Refactor partition mode cost calculation"

6 years agoMerge "Add hierarchical structure in GF group"
Zoe Liu [Wed, 20 Jun 2018 01:05:54 +0000 (01:05 +0000)]
Merge "Add hierarchical structure in GF group"

6 years agoAdd hierarchical structure in GF group
Zoe Liu [Tue, 19 Jun 2018 19:08:55 +0000 (12:08 -0700)]
Add hierarchical structure in GF group

Change-Id: I06fc4b0ad5a45c49e10a9601a2356fbc6e93d6da

6 years agoMerge "Build temporal prediction dependency propagation"
Jingning Han [Tue, 19 Jun 2018 03:36:32 +0000 (03:36 +0000)]
Merge "Build temporal prediction dependency propagation"

6 years agoMerge "vp9: Enable cyclic refresh for HBD in real-time."
Jerome Jiang [Tue, 19 Jun 2018 02:37:32 +0000 (02:37 +0000)]
Merge "vp9: Enable cyclic refresh for HBD in real-time."

6 years agoMerge "Improve the partition search breakout speed feature"
Hui Su [Tue, 19 Jun 2018 00:04:02 +0000 (00:04 +0000)]
Merge "Improve the partition search breakout speed feature"

6 years agovp9: Enable cyclic refresh for HBD in real-time.
Jerome Jiang [Fri, 8 Jun 2018 01:05:23 +0000 (18:05 -0700)]
vp9: Enable cyclic refresh for HBD in real-time.

Keep denoiser and skin detection disabled since some key functions don't
work with >8 bits source.

Add test for HBD with denoiser and cyclic refresh enabled to make sure
nothing crashes.

BUG=webm:1534

Change-Id: Id61fe1e38ed1768f273870a6bdd5f163aa769fe4

6 years agoBuild temporal prediction dependency propagation
Jingning Han [Sat, 26 May 2018 00:09:23 +0000 (17:09 -0700)]
Build temporal prediction dependency propagation

This commit builds up the temporal prediction dependency propagation
within the group of pictures.

Change-Id: Id04cfc0323e6a5c4ac4a570d53e20d1229b3ee11

6 years agoRefactor partition mode cost calculation
Jingning Han [Wed, 30 May 2018 20:31:08 +0000 (13:31 -0700)]
Refactor partition mode cost calculation

Compute the coding block partition mode cost as additional rdcost
to the cumulative rate-distortion cost from each coding block. This
changes the coding performance slightly due to the rounding error.
The compression performance change is neutral.

Change-Id: Ibdccae0e79263a0e70af7592a8cb11458d795f8d

6 years agoImprove the partition search breakout speed feature
Hui Su [Tue, 12 Jun 2018 18:56:09 +0000 (11:56 -0700)]
Improve the partition search breakout speed feature

Use a linear model to make partition search breakout decisions.
Currently the model is tuned for large quantizers and small resolutions.
So it is only used when q-index is larger than 200 and frame
width/height is smaller than 720. Also it's not yet supported for high
bit depth.

Tested speed 1 and 2 on lowres and midres. Compression performance is
neutral. At low bitrates, encoding speedup is up to 50% for speed 1;
up to 30% for speed 2.
Some sample numbers:

into_tree_480p, speed 1
QP=60 before:  35.228 dB, 3488b/f, 7.78 fps
      now:     35.217 dB, 3475b/f, 11.57 fps
QP=50 before:  37.492 dB, 7983b/f, 6.24 fps
      now:     37.491 dB, 7974b/f, 7.55 fps

PartyScene_832x480_50, speed 1
QP=60 before:  30.104 dB, 22426b/f, 3.28 fps
      now:     30.109 dB, 22410b/f, 4.43 fps
QP=50 before:  33.016 dB, 46984b/f, 2.78 fps
      now:     33.018 dB, 46998b/f, 3.35 fps

into_tree_480p, speed 2
QP=60 before:  35.175 dB, 3506b/f, 10.96 fps
      now:     35.185 dB, 3510b/f, 13.47 fps
QP=50 before:  37.448 dB, 8016b/f, 9.04 fps
      now:     37.459 dB, 8048b/f, 9.81 fps

PartyScene_832x480_50, speed 2
QP=60 before:  30.060 dB, 22537b/f, 4.42 fps
      now:     30.061 dB, 22541b/f, 5.38 fps
QP=50 before:  32.923 dB, 47134b/f, 3.85 fps
      now:     32.920 dB, 47073b/f, 4.31 fps

Change-Id: I674cba4f027c4c65f7837d5ec9179d6201e6ba86

6 years agoMerge "Enable intra prediction search for tpl model"
Jingning Han [Mon, 18 Jun 2018 16:28:21 +0000 (16:28 +0000)]
Merge "Enable intra prediction search for tpl model"

6 years agoMerge "Enable motion compensated prediction for tpl dependency model"
Jingning Han [Mon, 18 Jun 2018 16:28:13 +0000 (16:28 +0000)]
Merge "Enable motion compensated prediction for tpl dependency model"

6 years agoMerge "Remove unneeded buffer restore calls"
Jingning Han [Mon, 18 Jun 2018 16:27:48 +0000 (16:27 +0000)]
Merge "Remove unneeded buffer restore calls"

6 years agoinclude msvc.h for snprintf support in benchmarks
Luc Trudeau [Thu, 14 Jun 2018 15:21:05 +0000 (11:21 -0400)]
include msvc.h for snprintf support in benchmarks

include vpx_ports/msvc.h to avoid issues with snprintf issues with MSVC.

Change-Id: Ida09cff8ee3b84e09fd61de131f84b32c113fa1a

6 years agoAdd update types for hierarchical refs
Zoe Liu [Sun, 17 Jun 2018 12:42:31 +0000 (05:42 -0700)]
Add update types for hierarchical refs

Change-Id: I0cd91187e1efc1441086772e5683fbf72d9371cf

6 years agoEnable intra prediction search for tpl model
Jingning Han [Thu, 24 May 2018 21:06:18 +0000 (14:06 -0700)]
Enable intra prediction search for tpl model

Support intra prediction mode search to find the best intra mode
cost for temporal dependency model building.

Change-Id: Ie62d6af8d0c9f65dee742876f3af9cdd5e3f1d63

6 years agoMerge "VP9 HBD: Fix integer overflow problem in variance calc."
Jerome Jiang [Sat, 16 Jun 2018 00:12:44 +0000 (00:12 +0000)]
Merge "VP9 HBD: Fix integer overflow problem in variance calc."

6 years agoRemove unneeded buffer restore calls
Jingning Han [Sat, 16 Jun 2018 00:06:50 +0000 (17:06 -0700)]
Remove unneeded buffer restore calls

Change-Id: I89c8ad6544e0cee60b5daf49bc18c7e31f08faa2

6 years agoEnable motion compensated prediction for tpl dependency model
Jingning Han [Thu, 24 May 2018 00:00:03 +0000 (17:00 -0700)]
Enable motion compensated prediction for tpl dependency model

Support the motion compensated prediction search to find the motion
trajectory and hence to build the temporal dependency model.

Change-Id: I861ea85a0d4cc2897cb0dfe2e95378bf7d36209f

6 years agoMerge "vp9 svc: add tests for inter layer prediction."
Jerome Jiang [Fri, 15 Jun 2018 23:33:15 +0000 (23:33 +0000)]
Merge "vp9 svc: add tests for inter layer prediction."

6 years agoVP9 HBD: Fix integer overflow problem in variance calc.
Jerome Jiang [Fri, 15 Jun 2018 23:03:00 +0000 (16:03 -0700)]
VP9 HBD: Fix integer overflow problem in variance calc.

BUG=webm:1534
Change-Id: I535ac48e3dd2454cc7088c4f9a1e08ea74107da6

6 years agoMerge "Clean up avx512 compiler support test."
Tom Finegan [Fri, 15 Jun 2018 22:25:25 +0000 (22:25 +0000)]
Merge "Clean up avx512 compiler support test."

6 years ago[VSX] Drop the clang-4 workaround for vec_xxpermdi
Luca Barbato [Fri, 15 Jun 2018 20:49:10 +0000 (22:49 +0200)]
[VSX] Drop the clang-4 workaround for vec_xxpermdi

clang-6 seems to support it out of box.

E.g. VP9SubtractBlockTest.DISABLED_Speed with the workaround:
[    BENCH ]      4x4  286.5 ms ( ±0.2 ms )
Without:
[    BENCH ]      4x4  215.2 ms ( ±0.9 ms )

Change-Id: I28b3a2cc93c0d72f52f5a48cc06d8ed4ef26913f

6 years agoMerge changes I3436302c,I8969f5c3
Jingning Han [Fri, 15 Jun 2018 18:05:58 +0000 (18:05 +0000)]
Merge changes I3436302c,I8969f5c3

* changes:
  Prepare motion estimation process for temporal dependency model
  Construct temporal dependency building system

6 years agoClean up avx512 compiler support test.
Tom Finegan [Fri, 15 Jun 2018 17:58:11 +0000 (10:58 -0700)]
Clean up avx512 compiler support test.

Moves the check into a function, check_gcc_avx512_compiles,
that behaves somewhat similarly to check_gcc_machine_options.

Change-Id: I2bef3ddd98e636eef12d9d5e548c43282fac7826

6 years agoPrepare motion estimation process for temporal dependency model
Jingning Han [Wed, 23 May 2018 19:13:50 +0000 (12:13 -0700)]
Prepare motion estimation process for temporal dependency model

Set up needed stack for the motion estimation process to build up
the temporal dependency model.

Change-Id: I3436302c916a686e8c82572ffc106bf8023404b6