]> granicus.if.org Git - libvpx/log
libvpx
6 years agoMerge "Unify set_arf_sign_bias function"
Jingning Han [Tue, 21 Aug 2018 23:43:18 +0000 (23:43 +0000)]
Merge "Unify set_arf_sign_bias function"

6 years agoMerge "Clean up var define in apply_temporal_filter()"
Jingning Han [Tue, 21 Aug 2018 03:50:31 +0000 (03:50 +0000)]
Merge "Clean up var define in apply_temporal_filter()"

6 years agoMerge "Loopfilter MultiThread Optimization"
Harish Mahendrakar [Tue, 21 Aug 2018 03:40:50 +0000 (03:40 +0000)]
Merge "Loopfilter MultiThread Optimization"

6 years agoUnify set_arf_sign_bias function
Jingning Han [Tue, 21 Aug 2018 00:03:07 +0000 (17:03 -0700)]
Unify set_arf_sign_bias function

Determine if an ARF is on the future side by checking if its
offset meets the gop frame length. This unifies the support to
single- and multiple-layer ARF cases.

Change-Id: I5ab26f54311c345a9b574ffca5ff0a8dbcf4c031

6 years agoRemove unneeded frame_till_gf_update_due assignment
Jingning Han [Mon, 20 Aug 2018 19:59:15 +0000 (12:59 -0700)]
Remove unneeded frame_till_gf_update_due assignment

This will get update after define_gf_group() is called and returned.
No need to update it inside.

Change-Id: Ia42c6f7ef16bca3f1ee88392f3b90b9ebe409da8

6 years agoAdd multi_layer_arf flag
Jingning Han [Mon, 20 Aug 2018 19:47:16 +0000 (12:47 -0700)]
Add multi_layer_arf flag

This flag will control the use of multiple layer arf + show
existing frames.

Change-Id: Ic6b9e8e67b2db7d32706bdf0a14663a39f57295f

6 years agoAdd a comment in init_gop_frames()
Jingning Han [Mon, 20 Aug 2018 16:11:50 +0000 (09:11 -0700)]
Add a comment in init_gop_frames()

Make the meaning of the operations therein clearer.

Change-Id: I0dce92a4c14218307df098e3da7a1c7cc45008a7

6 years agoMerge "Skip frame bit-stream writing for show-existing frame"
Jingning Han [Mon, 20 Aug 2018 15:59:31 +0000 (15:59 +0000)]
Merge "Skip frame bit-stream writing for show-existing frame"

6 years agoMerge "Support code show_existing_frame in bit-stream header"
Jingning Han [Mon, 20 Aug 2018 15:59:27 +0000 (15:59 +0000)]
Merge "Support code show_existing_frame in bit-stream header"

6 years agoMerge "Refactor init_gop_frame()"
Jingning Han [Mon, 20 Aug 2018 15:59:07 +0000 (15:59 +0000)]
Merge "Refactor init_gop_frame()"

6 years agoLoopfilter MultiThread Optimization
Supradeep T R [Tue, 12 Jun 2018 08:27:39 +0000 (13:57 +0530)]
Loopfilter MultiThread Optimization

Adding LPF within the tileworker hook. This means that LPF will be done
immediately after decode, without waiting for all threads to sync.

Performance Improvement -

Platform        Resolution      2 Threads       4 Threads
X86             720p            7.24%           22.04%
                1080p           5.29%           17.02%
ARM             720p            4.61%           8.75%
                1080p           5.55%           12.03%

x86 Improvement measured on Intel Core i7-6700 CPU @ 2.10GHz set
in performance with turbo mode off
ARM Improvement measured on Nexus 6 Snapdragon 805 Quad-core  @ 2.65 GHz

Change-Id: Ifa73c71b40db3fa7fa16f54f4e3aa06d1258caae

6 years agoSkip frame bit-stream writing for show-existing frame
Jingning Han [Fri, 17 Aug 2018 19:55:54 +0000 (12:55 -0700)]
Skip frame bit-stream writing for show-existing frame

Make the bit-stream writer match the decoder behavior, when the
show existing frame feature is used.

Change-Id: Ibc8153f8668da0f9a2ed8af3b42dae91a5ac08c7

6 years agoSupport code show_existing_frame in bit-stream header
Jingning Han [Fri, 17 Aug 2018 18:27:37 +0000 (11:27 -0700)]
Support code show_existing_frame in bit-stream header

Allow the bit-stream writer to support potential use of
show_existing_frame. At this point, cm->show_existing_frame is
always 0.

Change-Id: I64fed1d72db6d4902d56774854ce24fb7a082e0c

6 years agoRefactor init_gop_frame()
Jingning Han [Fri, 17 Aug 2018 17:45:46 +0000 (10:45 -0700)]
Refactor init_gop_frame()

Remove implicit dependency on overlay frame update to break the
gop initialization loop.

Change-Id: I6a6d070cdf22a0e30c298523707bd746fd03f450

6 years agoClean up var define in apply_temporal_filter()
Jingning Han [Fri, 17 Aug 2018 16:08:15 +0000 (09:08 -0700)]
Clean up var define in apply_temporal_filter()

Change-Id: Iffb90d1ce61a70de52196247e18a31485038e6dd

6 years agoAdd inline to mod_index()
Jingning Han [Fri, 17 Aug 2018 16:07:34 +0000 (09:07 -0700)]
Add inline to mod_index()

Change-Id: I97c03e8d7c0907e728dc183f47564f206388118b

6 years agoMerge "Improve enhanced_full_pixel_motion_search"
Hui Su [Fri, 17 Aug 2018 15:29:35 +0000 (15:29 +0000)]
Merge "Improve enhanced_full_pixel_motion_search"

6 years agoMerge "external_frame_buffer_test: rm duplicate protected:"
Tom Finegan [Fri, 17 Aug 2018 15:15:40 +0000 (15:15 +0000)]
Merge "external_frame_buffer_test: rm duplicate protected:"

6 years agoMerge "Refactor: move svc example files to from vpx/ to examples/"
Jerome Jiang [Fri, 17 Aug 2018 07:03:54 +0000 (07:03 +0000)]
Merge "Refactor: move svc example files to from vpx/ to  examples/"

6 years agoMerge "Refactor some swapping code with a local func."
Jerome Jiang [Fri, 17 Aug 2018 07:02:29 +0000 (07:02 +0000)]
Merge "Refactor some swapping code with a local func."

6 years agoexternal_frame_buffer_test: rm duplicate protected:
James Zern [Fri, 17 Aug 2018 06:51:39 +0000 (23:51 -0700)]
external_frame_buffer_test: rm duplicate protected:

Change-Id: I8e41a3c39bb243c0c4d212b5ce36d1179923d783

6 years agoImprove enhanced_full_pixel_motion_search
Hui Su [Tue, 14 Aug 2018 21:37:11 +0000 (14:37 -0700)]
Improve enhanced_full_pixel_motion_search

Do full pixel MV search around all 3 MV candidates.

Coding gains for speed 0:
         avg_psnr   ovr_psnr   ssim
lowres   -0.088%    -0.095%   -0.117%
midres   -0.175%    -0.177%   -0.148%
hdres    -0.115%    -0.146%   -0.146%

Coding gains for speed 1:
         avg_psnr   ovr_psnr   ssim
lowres   -0.089%    -0.104%   -0.124%
midres   -0.151%    -0.171%   -0.195%
hdres    -0.110%    -0.105%   -0.132%

Tested encoding speed with speed 1 QP=30,40 over 10 midres sequences,
average speed loss is about 1%.

Change-Id: I9e6de035f4ed2e814e6494aefc2f84aae333a6b4

6 years agoUse YUV components to build the temporal filter
Jingning Han [Sat, 11 Aug 2018 00:01:08 +0000 (17:01 -0700)]
Use YUV components to build the temporal filter

Use both luma and chroma components simultaneously to estimate the
non-local mean kernel and build the temporal filter. It improves
the compression performance primarily for chroma components. Tested
in speed 0 and vbr mode, the coding gains are:

          Overall PSNR   SSIM     PSNR_U      PSNR_V
low        -0.10%       -0.12%    -0.48%      -0.49%
mid        -0.13%       -0.16%    -0.58%      -0.88%
720p       -0.31%       -0.24%    -0.75%      -0.72%
hd         -0.09%       -0.10%    -0.59%      -0.79%
nefl2k     -0.30%       -0.13%    -0.53%      -0.50%

Change-Id: I24d39997818322b0d69bd9dbeda02c60cd2b2e1b

6 years agoRefactor: move svc example files to from vpx/ to examples/
Jerome Jiang [Thu, 16 Aug 2018 21:41:49 +0000 (14:41 -0700)]
Refactor: move svc example files to from vpx/ to  examples/

svc_encodeframe.c and svc_context.h are only used by the example
encoder.

Change-Id: Idb41a5a9d6a229a0bc7d2bc8dbe6575a74efc54c

6 years agoUnify the YUV plane temporal filter operation
Jingning Han [Fri, 10 Aug 2018 23:42:21 +0000 (16:42 -0700)]
Unify the YUV plane temporal filter operation

Unify the temporal filter operations for the luma and chroma
components. Handle them in a single loop over the pixels in the
processing block.

Change-Id: I9ea1946f3a6fb37da6867aa78140d45cad0facf0

6 years agoMerge changes I6ab0ece8,I5f878e9b
Jingning Han [Thu, 16 Aug 2018 16:53:30 +0000 (16:53 +0000)]
Merge changes I6ab0ece8,I5f878e9b

* changes:
  Temporarily revert to vp9_temporal_filter_apply_c
  Simplify temporal filter strength calculation

6 years agoMerge "vp9: Add flatness metric to cyclic refresh setup."
Marco Paniconi [Thu, 16 Aug 2018 05:09:05 +0000 (05:09 +0000)]
Merge "vp9: Add flatness metric to cyclic refresh setup."

6 years agoRefactor some swapping code with a local func.
Jerome Jiang [Tue, 14 Aug 2018 00:28:51 +0000 (17:28 -0700)]
Refactor some swapping code with a local func.

Change-Id: Ic55c156ab12703b05ec0d54d83ed16d40e640abe

6 years agovp9: Add flatness metric to cyclic refresh setup.
Marco Paniconi [Mon, 30 Jul 2018 16:25:14 +0000 (09:25 -0700)]
vp9: Add flatness metric to cyclic refresh setup.

For screen-content with aq-mode = 3: identify spatial
flat superblocks in the setup stage and don't mark them as
candidates for refresh. Spatially flat blocks are already
removed from refresh at a later stage in the encoding (in pick_mode),
but doing this at the setup stage of cyclic refresh (before encoding)
allows refresh to more quickly hit the text areas. Only drawback is
an extra source variance calculation for a set of superblocks on
each frame.

Adjust the refresh rate: lower it to reduce overshoot since
more texture areas are hit faster with this change.

Change-Id: I88fa20e52fdbf1a938ae814f9b48c887f1f909d2

6 years agosvc: Force the quantizer to be same as that in encoder config.
Jerome Jiang [Thu, 16 Aug 2018 00:15:45 +0000 (17:15 -0700)]
svc: Force the quantizer to be same as that in encoder config.

Change-Id: I0377ca2ebf63792d7a27de4b8e7e08b38659ecde

6 years agoMerge "vp9: Remove good mode and speed 0-4 from some datarate tests."
Jerome Jiang [Wed, 15 Aug 2018 23:15:57 +0000 (23:15 +0000)]
Merge "vp9: Remove good mode and speed 0-4 from some datarate tests."

6 years agoMerge "Add vpxenc control to turn on/off tpl model"
Jingning Han [Wed, 15 Aug 2018 04:02:04 +0000 (04:02 +0000)]
Merge "Add vpxenc control to turn on/off tpl model"

6 years agoMerge "vp9: fix memory alloc for adaptive_rd_thresh_row_mt."
Jerome Jiang [Tue, 14 Aug 2018 18:58:19 +0000 (18:58 +0000)]
Merge "vp9: fix memory alloc for adaptive_rd_thresh_row_mt."

6 years agovp9: fix memory alloc for adaptive_rd_thresh_row_mt.
Jerome Jiang [Mon, 13 Aug 2018 18:01:31 +0000 (11:01 -0700)]
vp9: fix memory alloc for adaptive_rd_thresh_row_mt.

When the feature is enabled and the memory is not available, allocate
it. There was a case where speed feature changed in the middle of stream
but the number of tiles stayed the same, memory was not re-allocated.

Another case is where speed for base layer is different than that of
higher quality layers (same resolution). Removed the speed constraints
forcing base layer using same speed setting.

Thus the memory for adaptive_rd_thresh_row_mt stayed NULL but the
feature was enabled.

Add an end to end test to cover this case.

Change-Id: I2f1f802ef98a554571b30094d3600b9439228457

6 years agoMerge "Make Sharpness parameter affect visual sharpness"
James Bankoski [Tue, 14 Aug 2018 16:01:05 +0000 (16:01 +0000)]
Merge "Make Sharpness parameter affect visual sharpness"

6 years agoAdd vpxenc control to turn on/off tpl model
Jingning Han [Mon, 13 Aug 2018 21:47:54 +0000 (14:47 -0700)]
Add vpxenc control to turn on/off tpl model

The default is set to turn on the temporal dependency model at
speed 0. Use --enable-tpl to control turning it on/off when calling
vpxenc.

Change-Id: I61614cd8100ae57dc01fd46b2a69c5b67287f18a

6 years agoMerge "Fix potential encoder failure case in tpl model"
Jingning Han [Tue, 14 Aug 2018 15:50:50 +0000 (15:50 +0000)]
Merge "Fix potential encoder failure case in tpl model"

6 years agoMake Sharpness parameter affect visual sharpness
Jim Bankoski [Fri, 6 Jul 2018 22:45:34 +0000 (15:45 -0700)]
Make Sharpness parameter affect visual sharpness

1: Lower rdmult used in trellis optimization

2: Shut off the end of block optimization that tries end of block
at every sub position if any of the coefficients are > 1.

3: Change the rounding and zbin factor according to sharpness.

4: Disable the skip block check that calculates RD using SSE from
predictor.

Change-Id: I247b61a26fa22f12f8b684e7cd6d4e368de7c3e4

6 years agoFix potential encoder failure case in tpl model
Jingning Han [Mon, 13 Aug 2018 23:52:11 +0000 (16:52 -0700)]
Fix potential encoder failure case in tpl model

When the group of picture runs over 24 in length, skip the use of
temporal dependency model, since the model assumes maximum 25
lookahead frames.

Change-Id: I6386dd33bcdaf1229fae978130b4c3b43d071918

6 years agovp9: Remove good mode and speed 0-4 from some datarate tests.
Jerome Jiang [Mon, 13 Aug 2018 18:28:28 +0000 (11:28 -0700)]
vp9: Remove good mode and speed 0-4 from some datarate tests.

Low speeds in good mode are too slow.

Move CBR large tests to non-'Large' ones such that they can run in
Jenkins per commit.

Change-Id: I1da73ca96ee89abcf3566d51ff52f1f2e904a048

6 years agoMerge "vp9-svc: Fixes for cyclic refresh for SVC."
Marco Paniconi [Mon, 13 Aug 2018 23:20:58 +0000 (23:20 +0000)]
Merge "vp9-svc: Fixes for cyclic refresh for SVC."

6 years agoMerge "vp9: don't release buffer for current frame."
Jerome Jiang [Mon, 13 Aug 2018 22:25:53 +0000 (22:25 +0000)]
Merge "vp9: don't release buffer for current frame."

6 years agovp9-svc: Fixes for cyclic refresh for SVC.
Marco Paniconi [Mon, 13 Aug 2018 04:35:15 +0000 (21:35 -0700)]
vp9-svc: Fixes for cyclic refresh for SVC.

Add metrics that are being updated per-frame to
the layer struct, so each layer using the cyclic
refresh has the correct update. This is more consistent
for the rate control and refresh rate.

Some improvement in screen content clips.
Neutral for SVC on rtc set.

Change-Id: I0a9862fb6b6a79e894e2ff30c120dc4aa26fcda5

6 years agovp9: Small refactor on overshoot detection, for cbr real-time.
Marco Paniconi [Mon, 13 Aug 2018 16:20:21 +0000 (09:20 -0700)]
vp9: Small refactor on overshoot detection, for cbr real-time.

Change-Id: I70997d35a2371bb4614d716ef0c587fa12ea0f4a

6 years agovp9-svc: Unittest for screen mode with quality layers
Marco Paniconi [Mon, 13 Aug 2018 04:29:05 +0000 (21:29 -0700)]
vp9-svc: Unittest for screen mode with quality layers

Add datarate unittest for SVC screen content mode,
with 2 quality layers.

Change-Id: I9c8ad5462fd046698052bea6d7343c2b7e16668f

6 years agovp9-svc: Fix to updated SET_SVC_REF_FRAME_CONFIG control
Marco Paniconi [Sat, 11 Aug 2018 19:59:40 +0000 (12:59 -0700)]
vp9-svc: Fix to updated SET_SVC_REF_FRAME_CONFIG control

Add flag to separate two cases of bypass (flexible) SVC mode:
usage of using the SET_SVC_REF_FRAME_CONFIG vs passing in the
frame_flags in the vpx_encode (only used for temporal layers).

This fixes failures in Datarate Temporal layer test,
introduced in commit: a66da31

Change-Id: Ie62f933987c20792d1f963d645e98c1903bdd423

6 years agovp9: don't release buffer for current frame.
Jerome Jiang [Fri, 10 Aug 2018 01:47:02 +0000 (18:47 -0700)]
vp9: don't release buffer for current frame.

when resync is needed, we flush all frame buffers on key frame.

BUG=b/112406540
BUG=oss-fuzz:9722

Change-Id: Ie53feb12126f25877436eba40317400bf69c6207

6 years agoMerge "loop_filter_rows_mt: use sb_rows to limit workers"
James Zern [Fri, 10 Aug 2018 23:24:18 +0000 (23:24 +0000)]
Merge "loop_filter_rows_mt: use sb_rows to limit workers"

6 years agoRefactor: Move code updating ref frames for svc & denoiser.
Jerome Jiang [Fri, 10 Aug 2018 04:46:27 +0000 (21:46 -0700)]
Refactor: Move code updating ref frames for svc & denoiser.

Make new functions and move them to vp9_denoiser.c and
vp9_svc_layercontext.c

Change-Id: Ia34266ee2831d0f1316b7a641cbbf40fe64e1a0c

6 years agoMerge "vp9-svc: Update to SET/GET_SVC_REF_FRAME_CONFIG api"
Jerome Jiang [Fri, 10 Aug 2018 16:46:20 +0000 (16:46 +0000)]
Merge "vp9-svc: Update to SET/GET_SVC_REF_FRAME_CONFIG api"

6 years agoMerge "Fix frame drop threshold in vp9 datarate test."
Jerome Jiang [Fri, 10 Aug 2018 16:43:31 +0000 (16:43 +0000)]
Merge "Fix frame drop threshold in vp9 datarate test."

6 years agoMerge "Use the pred_mv feature for speed 0"
Hui Su [Fri, 10 Aug 2018 16:08:09 +0000 (16:08 +0000)]
Merge "Use the pred_mv feature for speed 0"

6 years agoFix frame drop threshold in vp9 datarate test.
Jerome Jiang [Fri, 10 Aug 2018 15:26:48 +0000 (08:26 -0700)]
Fix frame drop threshold in vp9 datarate test.

Change-Id: Ifbd753183782e680a9ae77c55d75f4d9b3fb2477

6 years agoMerge "vp9: Allow for overshoot detection for non-screen CBR mode."
Marco Paniconi [Fri, 10 Aug 2018 02:24:43 +0000 (02:24 +0000)]
Merge "vp9: Allow for overshoot detection for non-screen CBR mode."

6 years agoMerge "Change target bitrate in vp9 datarate test."
Jerome Jiang [Fri, 10 Aug 2018 00:54:45 +0000 (00:54 +0000)]
Merge "Change target bitrate in vp9 datarate test."

6 years agovp9: Allow for overshoot detection for non-screen CBR mode.
Marco Paniconi [Wed, 8 Aug 2018 21:01:26 +0000 (14:01 -0700)]
vp9: Allow for overshoot detection for non-screen CBR mode.

For CBR real-time mode: refactor usage of speed feature to
handle overshoot on slide/scene change. Add 2 modes to indicate
how slide/scene change is processed for re-setting Q/rate control.
Keep the speed setting to 1 for speed >= 5, otherwise set to 0.

Video content and screen content are now handled in similar way,
though with different thresholds.

Some fixes to thresholds and reset: correct the reset of the buffer
level to optimal level for each temporal layer, if scene change
frame will be encoded at max_q.

Also increase the min_thresh for video mode (non-screen content):
this is to avoid scene change detection on cases like large
lighting changes, cameras focus. And increase in min_thresh
makes it more robust to sudden increase in noise level.

Change-Id: I256d350da6e92d2ddc09f100fc06ac147cbc1e49

6 years agoChange target bitrate in vp9 datarate test.
Jerome Jiang [Thu, 9 Aug 2018 23:55:47 +0000 (16:55 -0700)]
Change target bitrate in vp9 datarate test.

Due to the change of clip.

Change-Id: Ibbe1a865df0837c349770287d148081230d10aaa

6 years agoTemporarily revert to vp9_temporal_filter_apply_c
Jingning Han [Wed, 8 Aug 2018 17:22:22 +0000 (10:22 -0700)]
Temporarily revert to vp9_temporal_filter_apply_c

The logic inside will be changed through a set of experiments
coming up next.

Change-Id: I6ab0ece8534a796b96a10ee5a9690b19c878a664

6 years agoMerge "vp9-svc: Fix for scene detection for SVC"
Marco Paniconi [Thu, 9 Aug 2018 22:30:07 +0000 (22:30 +0000)]
Merge "vp9-svc: Fix for scene detection for SVC"

6 years agoUse the pred_mv feature for speed 0
Hui Su [Wed, 8 Aug 2018 19:11:36 +0000 (12:11 -0700)]
Use the pred_mv feature for speed 0

Before this patch, pred_mv is used only when the
adaptive_motion_search speed feature is on(speed>=1).
This patch enables pred_mv for speed 0 as well.

Coding gains:
         avg_psnr   ovr_psnr   ssim
lowres   -0.31%     -0.32%    -0.38%
midres   -0.37%     -0.41%    -0.42%
hdres    -0.30%     -0.31%    -0.29%

Tested encoding speed over 18 midres sequences with QP=40. The
overall speed loss is about 0.6%.

Change-Id: I8987e9efb5a70d2bf8779fc2a43838009f9bbd8a

6 years agovp9-svc: Update to SET/GET_SVC_REF_FRAME_CONFIG api
Jerome Jiang [Mon, 6 Aug 2018 18:37:43 +0000 (11:37 -0700)]
vp9-svc: Update to SET/GET_SVC_REF_FRAME_CONFIG api

Add update_buffer_slot to SVC API to allow for refreshing
any of the 8 reference buffers. Remove frame_flags from
the struct.

Remove svc tests from vp8 build.

BUG=b/112292577
Change-Id: I0551c349d2b311227245a8ed1639cdbbaf5bc5db

6 years agovp9-svc: Fix for scene detection for SVC
Marco Paniconi [Thu, 9 Aug 2018 16:34:05 +0000 (09:34 -0700)]
vp9-svc: Fix for scene detection for SVC

For spatial layers: use the correct mi_cols/rows in the
scene detection. The scene detection for spatial layers
is only called once per superframe, but we were using wrong
mi_cols/rows (those for base spatial were being used).

Also increase frame_since_key threshold to account for spatial
layers.

Change-Id: I2731da49684a798c4718693a0468eda7db82d2bd

6 years agoreplace video clips used in vp9 datarate CBR tests.
Jerome Jiang [Thu, 9 Aug 2018 18:42:11 +0000 (11:42 -0700)]
replace video clips used in vp9 datarate CBR tests.

replace hantro_collage with niklas vga clip.

Change-Id: I79b89ce12823095a5ee75025b2ddce9e8ef1452a

6 years agoSimplify temporal filter strength calculation
Jingning Han [Wed, 1 Aug 2018 21:34:14 +0000 (14:34 -0700)]
Simplify temporal filter strength calculation

Change-Id: I5f878e9b6581bcb427ecc29ce490feb68378f8af

6 years agoloop_filter_rows_mt: use sb_rows to limit workers
James Zern [Wed, 8 Aug 2018 03:07:09 +0000 (20:07 -0700)]
loop_filter_rows_mt: use sb_rows to limit workers

Previously if the number of tiles decreased within a clip and there were
fewer super block rows than workers the mi_row calculation would cause
rows to be skipped. The num_workers stored is the max allocated amount,
use sb_rows to limit the active ones if the row count is smaller as
additional threads will provide no benefit.

Change-Id: I1750296c8c21082de2594afecc4d6a3929db1f12

6 years agoMerge "Add enhanced_full_pixel_motion_search feature"
Hui Su [Tue, 7 Aug 2018 23:38:37 +0000 (23:38 +0000)]
Merge "Add enhanced_full_pixel_motion_search feature"

6 years agoMerge "VPX: Improve HBD vpx_hadamard_32x32_sse2()"
Scott LaVarnway [Tue, 7 Aug 2018 23:37:31 +0000 (23:37 +0000)]
Merge "VPX: Improve HBD vpx_hadamard_32x32_sse2()"

6 years agoMerge "Fix typos in the comment for size_group_lookup."
Wan-Teh Chang [Tue, 7 Aug 2018 23:28:04 +0000 (23:28 +0000)]
Merge "Fix typos in the comment for size_group_lookup."

6 years agoMerge "vpx_highbd_d153_predictor_4x4_sse2: reduce load size"
James Zern [Tue, 7 Aug 2018 21:53:17 +0000 (21:53 +0000)]
Merge "vpx_highbd_d153_predictor_4x4_sse2: reduce load size"

6 years agoMerge "test/stress.sh: switch req. for 100 threads to 64"
James Zern [Tue, 7 Aug 2018 21:52:22 +0000 (21:52 +0000)]
Merge "test/stress.sh: switch req. for 100 threads to 64"

6 years agotest/stress.sh: switch req. for 100 threads to 64
James Zern [Tue, 7 Aug 2018 18:37:33 +0000 (11:37 -0700)]
test/stress.sh: switch req. for 100 threads to 64

>64 is invalid for vp9 currently so no testing would be done.

Change-Id: Ic0ccd606d5e76258adb27b7c44dcbd82e94c84d1

6 years agoAdd enhanced_full_pixel_motion_search feature
Hui Su [Tue, 7 Aug 2018 01:01:25 +0000 (18:01 -0700)]
Add enhanced_full_pixel_motion_search feature

Do some extra full pixel search to improve motion vector quality.
Currently it is enabled for speed 1 only; disabled for real time mode.

Coding gain for speed 1:
         avg_psnr   ovr_psnr   ssim
lowres   -0.23%     -0.23%    -0.35%
midres   -0.33%     -0.35%    -0.38%
hdres    -0.28%     -0.29%    -0.28%

Tested encoding time over 10 HD sequences. Overall speed overhead is
1.5% for QP=30; 0.6 % for QP=40.

Change-Id: Ic2ea4d78c4979de9d5090c9d7c702944f155f8af

6 years agoMerge "vp9 test: Enable aq 3 and error resilient in realtime for layers."
Jerome Jiang [Tue, 7 Aug 2018 18:06:56 +0000 (18:06 +0000)]
Merge "vp9 test: Enable aq 3 and error resilient in realtime for layers."

6 years agovpx_highbd_d153_predictor_4x4_sse2: reduce load size
James Zern [Tue, 7 Aug 2018 18:06:08 +0000 (11:06 -0700)]
vpx_highbd_d153_predictor_4x4_sse2: reduce load size

this avoids reading 4 pixels into another block, which may be operated
on by a different thread. quiets a tsan warning.

Change-Id: Id27ad9d61819b0e5de0230647b4b510f7c265a71

6 years agoMerge "vp9: address integer sanitizer warning"
Johann Koenig [Tue, 7 Aug 2018 00:33:03 +0000 (00:33 +0000)]
Merge "vp9: address integer sanitizer warning"

6 years agoMerge "Remove unnecessary calls to load_pred_mv()"
Hui Su [Mon, 6 Aug 2018 23:00:35 +0000 (23:00 +0000)]
Merge "Remove unnecessary calls to load_pred_mv()"

6 years agovp9: address integer sanitizer warning
Johann [Fri, 3 Aug 2018 22:36:59 +0000 (15:36 -0700)]
vp9: address integer sanitizer warning

Comparing the size values with subtraction requires casting. Sort in
descending order.

(a < b) - (a > b)
If a is greater, this is 0 - 1 = -1
If the  values are equal, this is 0 - 0 = 0
If b is greater, this is 1 - 0 = 1

Change-Id: I5c20fd10fbc97c391c6858235c44d25d7db57f0e

6 years agovp9 test: Enable aq 3 and error resilient in realtime for layers.
Jerome Jiang [Mon, 6 Aug 2018 17:46:09 +0000 (10:46 -0700)]
vp9 test: Enable aq 3 and error resilient in realtime for layers.

aq mode 3 is never properly tested in non realtime mode.

BUG=webm:1553

Change-Id: I0663c9724ee57ba5c528a20b31ef8b6df0e03f6c

6 years agoMerge "vpxenc: replace uint16 with uint16_t"
James Zern [Mon, 6 Aug 2018 19:24:31 +0000 (19:24 +0000)]
Merge "vpxenc: replace uint16 with uint16_t"

6 years agoRemove unnecessary calls to load_pred_mv()
Hui Su [Fri, 3 Aug 2018 19:49:29 +0000 (12:49 -0700)]
Remove unnecessary calls to load_pred_mv()

This improves compression performance slightly:
Speed 1:
         avg_psnr   ovr_psnr   ssim
lowres   -0.03%     -0.03%    -0.05%
midres   -0.16%     -0.20%    -0.30%
hdres    -0.13%     -0.13%    -0.16%

Speed 2:
         avg_psnr   ovr_psnr   ssim
lowres   -0.02%     -0.02%    -0.03%
midres   -0.08%     -0.06%    -0.10%
hdres    -0.08%     -0.08%    -0.10%

Change-Id: Id357c1f98042f3c7af56f99e534bc81ea9a7cf36

6 years agoMerge "vp9: new struct BEST_PICKMODE containing search results."
Jerome Jiang [Mon, 6 Aug 2018 16:57:00 +0000 (16:57 +0000)]
Merge "vp9: new struct BEST_PICKMODE containing search results."

6 years agovpxenc: replace uint16 with uint16_t
Mirko Bonadei [Sat, 4 Aug 2018 06:10:01 +0000 (23:10 -0700)]
vpxenc: replace uint16 with uint16_t

libyuv r1714 disables non-POSIX types by default:
55f5d91f Disable old int types by default.

Change-Id: Ia7086516b0d53d0ff3974e545d41f8b502aaec0d

6 years agoFix typos in the comment for size_group_lookup.
Wan-Teh Chang [Fri, 3 Aug 2018 21:19:29 +0000 (14:19 -0700)]
Fix typos in the comment for size_group_lookup.

"b_width_log2" and "b_height_log2" should be "b_width_log2_lookup" and
"b_height_log2_lookup", respectively.

Change-Id: I3ad49e45007cd9fcf5dd463c7d01e22745939231

6 years agovp9: Add screen-content mode to overshoot detection.
Marco Paniconi [Fri, 3 Aug 2018 17:45:41 +0000 (10:45 -0700)]
vp9: Add screen-content mode to overshoot detection.

For real-time 1 pass mode: overshoot detection and max_Q
reset should only be for screen-content mode.
This fixes some failures in the 1 pass VBR tests, from
the commit: 2fae9991

Change-Id: I70cbe4e6fd83cfe0c7662f13b779551bf4f319cb

6 years agoMerge "vp9: Adjust qp_thresh on slide change overshoot detection"
Marco Paniconi [Fri, 3 Aug 2018 17:28:57 +0000 (17:28 +0000)]
Merge "vp9: Adjust qp_thresh on slide change overshoot detection"

6 years agoMerge "Refactor vp9_full_pixel_search()"
Hui Su [Fri, 3 Aug 2018 17:11:15 +0000 (17:11 +0000)]
Merge "Refactor vp9_full_pixel_search()"

6 years agoMerge "Handle partition cost better in RD search"
Hui Su [Fri, 3 Aug 2018 17:11:00 +0000 (17:11 +0000)]
Merge "Handle partition cost better in RD search"

6 years agovp9: Adjust qp_thresh on slide change overshoot detection
Marco Paniconi [Fri, 3 Aug 2018 16:20:55 +0000 (09:20 -0700)]
vp9: Adjust qp_thresh on slide change overshoot detection

For real-time screen-content mode: increase the
qp_thresh for max_Q setting on slide changes.
This will make bitrate spikes less likely on slide changes.

Change-Id: Ie13524a06490214456b1c9c042a864ea0d0750c5

6 years agovp9: Add zero_temp_sad count to scene detection.
Marco Paniconi [Fri, 3 Aug 2018 03:48:17 +0000 (20:48 -0700)]
vp9: Add zero_temp_sad count to scene detection.

For real-time screen-content mode: makes the
scene/slide change detection more robust.

Change-Id: I28d8d28b42bb92d527811f814bf14bbbbb53ab25

6 years agoMerge "vp9: Disable re_encode_overshoot feature for speed >= 6."
Marco Paniconi [Fri, 3 Aug 2018 03:21:12 +0000 (03:21 +0000)]
Merge "vp9: Disable re_encode_overshoot feature for speed >= 6."

6 years agovp9: Increase min_thresh for slide change detection
Marco Paniconi [Thu, 2 Aug 2018 22:58:12 +0000 (15:58 -0700)]
vp9: Increase min_thresh for slide change detection

For real-time screen-content mode: increase min_thresh
to avoid some false detection.

Change-Id: I3e93dea63cbd65e3ad5d0af7eabf0d3686fe9943

6 years agovp9: new struct BEST_PICKMODE containing search results.
Jerome Jiang [Thu, 2 Aug 2018 23:28:54 +0000 (16:28 -0700)]
vp9: new struct BEST_PICKMODE containing search results.

One of steps to refactor the nonrd pickmode. Simplify arguments list for
functions.

Change-Id: I5f23375caa36be2ae0fbd2ff851b303150a7aa8f

6 years agoRefactor vp9_full_pixel_search()
Hui Su [Thu, 2 Aug 2018 22:53:24 +0000 (15:53 -0700)]
Refactor vp9_full_pixel_search()

Code cleanup; add some comment.
Also remove a reduncant call to vp9_get_mvpred_var() at the end when
method is MESH.

Change-Id: I4b58e7e1c42161642708f8b0342ab3c0ce39ed7d

6 years agovp9: Disable re_encode_overshoot feature for speed >= 6.
Marco Paniconi [Thu, 2 Aug 2018 16:22:58 +0000 (09:22 -0700)]
vp9: Disable re_encode_overshoot feature for speed >= 6.

For real-time screen content mode: for speed >= 6 disable
the re_encode_overshoot feature. This means for speed >= 6
the Q and rate control is reset on slide changes based on
the scene/slide detection and the current Q (and not on a
first pass encoded frame at current Q).

This reduces encode time on slide changes, but may be less
accurate in deciding when to reset/max-out the Q.

Change-Id: Id0fdcafd55bc43bd8b3afee211e524f37c8ddce6

6 years agoMerge "vp9: Refactor nonrd pickmode: new mv search"
Jerome Jiang [Thu, 2 Aug 2018 16:50:44 +0000 (16:50 +0000)]
Merge "vp9: Refactor nonrd pickmode: new mv search"

6 years agoHandle partition cost better in RD search
Hui Su [Wed, 1 Aug 2018 22:43:05 +0000 (15:43 -0700)]
Handle partition cost better in RD search

Take partition cost into consideration during rectangular partition
mode search.

Compression change is neutral. Encoding speed can be a little faster
at low quality settings. With QP=55 at speed 0, average speed up over
15 midres sequences is about 2.7%.

Change-Id: I6d423459675b5f1e4e1475dbbf6f67ab970a4832

6 years agoMerge "vp9 svc: Adjust overshoot threshold in datarate test."
Jerome Jiang [Thu, 2 Aug 2018 02:55:58 +0000 (02:55 +0000)]
Merge "vp9 svc: Adjust overshoot threshold in datarate test."

6 years agoMerge "Use mesh full pixel motion search to build the source ARF"
Jingning Han [Thu, 2 Aug 2018 02:36:48 +0000 (02:36 +0000)]
Merge "Use mesh full pixel motion search to build the source ARF"

6 years agoMerge "Add frame pointer to support recon frames in tpl model"
Jingning Han [Thu, 2 Aug 2018 02:36:41 +0000 (02:36 +0000)]
Merge "Add frame pointer to support recon frames in tpl model"

6 years agoUse mesh full pixel motion search to build the source ARF
Jingning Han [Tue, 31 Jul 2018 16:43:17 +0000 (09:43 -0700)]
Use mesh full pixel motion search to build the source ARF

Append mesh search to the diamond shape search to refine
the full pixel motion estimation for source ARF generation.
It improves the average compression performance.

Speed 0
        avg PSNR     overall PSNR     SSIM
mid      -0.18%        -0.18%        -0.22%
hd       -0.25%        -0.23%        -0.36%
nflx2k   -0.22%        -0.23%        -0.37%

Speed 1
       avg PSNR     overall PSNR      SSIM
mid     -0.10%         -0.08%        -0.11%
hd      -0.25%         -0.27%        -0.38%
nflx2k  -0.20%         -0.20%        -0.34%

The additional encoding time is close to the sample noise
range. For bus_cif at 1000 kbps, the speed 0 encoding time
goes from 83.0 s -> 83.6 s.

Change-Id: I48647f50ec3e8f7ae4550a4bde831f569f46ecf3