platform/upstream/libvpx.git
5 years agoMerge "Assign target bits for multi-layer ARF system"
Jingning Han [Tue, 4 Sep 2018 18:29:25 +0000 (18:29 +0000)]
Merge "Assign target bits for multi-layer ARF system"

5 years agovp9-svc: Fix to first_spatial_to_encode for pattern constraint.
Marco Paniconi [Tue, 4 Sep 2018 16:08:49 +0000 (09:08 -0700)]
vp9-svc: Fix to first_spatial_to_encode for pattern constraint.

Change-Id: I876f69acf9420b3b013cb3048bbfa8ff059e2e50

5 years agoMerge "ML based rectangular partition search pruning"
Hui Su [Tue, 4 Sep 2018 16:38:12 +0000 (16:38 +0000)]
Merge "ML based rectangular partition search pruning"

5 years agoAssign target bits for multi-layer ARF system
Jingning Han [Mon, 27 Aug 2018 23:17:29 +0000 (16:17 -0700)]
Assign target bits for multi-layer ARF system

Keep the ARF and P frame rate allocation distribution. All the
intermediate ARFs are treated same as regular P frames.

Change-Id: I7807b8e6a8f19b6e1b09b9b7d119b3c88ef90b67

5 years agoMerge "Properly update the raw_src_frame for psnr calculation"
Jingning Han [Tue, 4 Sep 2018 14:10:34 +0000 (14:10 +0000)]
Merge "Properly update the raw_src_frame for psnr calculation"

5 years agoMerge "Build arf index stack"
Jingning Han [Tue, 4 Sep 2018 14:08:45 +0000 (14:08 +0000)]
Merge "Build arf index stack"

5 years agoMerge "vp9-svc: Add bypass flag to constrain inter_layer."
Marco Paniconi [Tue, 4 Sep 2018 04:07:53 +0000 (04:07 +0000)]
Merge "vp9-svc: Add bypass flag to constrain inter_layer."

5 years agovp9-svc: Add bypass flag to constrain inter_layer.
Marco Paniconi [Mon, 3 Sep 2018 17:15:38 +0000 (10:15 -0700)]
vp9-svc: Add bypass flag to constrain inter_layer.

The additional constraint imposed on inter-layer
prediction should only be done for non-bypass (fixed)
svc mode.

Change-Id: Ia22cdb7bc21684776c9a13397e177a1e1c3d55a2

5 years agovp9-svc: Fix condition for pattern constraints
Marco Paniconi [Mon, 3 Sep 2018 05:17:32 +0000 (22:17 -0700)]
vp9-svc: Fix condition for pattern constraints

For fixed/non-flexible SVC mode: on non-key spatial
enhancement layers modify constraint on the inter-layer
prediction to include the first_spatial_layer_to_encode.

Change-Id: I6a59174976ad72d555653704dcd3b03c52e31b6f

5 years agoProperly update the raw_src_frame for psnr calculation
Jingning Han [Mon, 27 Aug 2018 22:58:41 +0000 (15:58 -0700)]
Properly update the raw_src_frame for psnr calculation

Update the raw_src_frame to be the current input source frame in
the show_existing_frame mode.

Change-Id: Ia8edf49ca948c45ffe6c60556756b36124ab092a

5 years agoBuild arf index stack
Jingning Han [Sun, 26 Aug 2018 04:39:59 +0000 (21:39 -0700)]
Build arf index stack

Stack the ARF frame indexes. Use the most recent one as the ARF
reference frame for frame coding.

Change-Id: I88a2202fa5deb2587d861b434d27ab8de0642cf7

5 years agovp9-svc: Add first_spatial_layer_to_encode per superframe
Marco Paniconi [Fri, 31 Aug 2018 22:42:19 +0000 (15:42 -0700)]
vp9-svc: Add first_spatial_layer_to_encode per superframe

VP9E_SET_SVC_LAYER_ID sets the first spatial layer to
encoder per superframe, so add this parameter to svc encoder.
This is needed, for example, to properly set is_key_frame for
spatial layers when base spatial layer is skipped encoded.

Change-Id: Ifd4ac77f539197ec021e62f4c624a6cc79d64f43

5 years agoML based rectangular partition search pruning
Hui Su [Tue, 17 Jul 2018 05:05:19 +0000 (22:05 -0700)]
ML based rectangular partition search pruning

Add a ML model to predict if rectangular partition search can be skipped
without much coding loss. This model is enabled for speed 0 low bitdepth
only.

Impact on coding performance is minor:
             avg_psnr     ovr_psnr     ssim
lowres       -0.005%       0.005%     0.017%
midres        0.100%       0.114%     0.134%
hdres         0.048%       0.083%     0.074%
jvet480p      0.035%       0.027%     0.044%
jvet720p      0.094%       0.090%     0.174%

Tested encoding speed over 20 midres and hdres clips, average speed
gain is about 8%; maximum speed gain is 23%.

Change-Id: I5d4029dec7134c53ac68ab6cf0c8077dc0b767ed

5 years agoMerge "Fix arf_src_offset calculation"
Jingning Han [Fri, 31 Aug 2018 18:19:47 +0000 (18:19 +0000)]
Merge "Fix arf_src_offset calculation"

5 years agoMerge "Set minimum frame size to be 1 byte"
Jingning Han [Fri, 31 Aug 2018 18:19:42 +0000 (18:19 +0000)]
Merge "Set minimum frame size to be 1 byte"

5 years agoMerge "Prepare multi-layer ARF coding structure"
Jingning Han [Fri, 31 Aug 2018 18:19:32 +0000 (18:19 +0000)]
Merge "Prepare multi-layer ARF coding structure"

5 years agoMerge "Build up multi-layer ARF processing order"
Jingning Han [Fri, 31 Aug 2018 18:19:13 +0000 (18:19 +0000)]
Merge "Build up multi-layer ARF processing order"

5 years agoMerge "Add element stack operations for arf index control"
Jingning Han [Fri, 31 Aug 2018 18:19:07 +0000 (18:19 +0000)]
Merge "Add element stack operations for arf index control"

5 years agoFix arf_src_offset calculation
Jingning Han [Fri, 24 Aug 2018 19:54:58 +0000 (12:54 -0700)]
Fix arf_src_offset calculation

The offset should be computed with respect to the current coding
process standing.

Change-Id: I63fc303eb062d5fd68b8d1faa3b4172cdfcce168

5 years agoSet minimum frame size to be 1 byte
Jingning Han [Thu, 23 Aug 2018 23:51:26 +0000 (16:51 -0700)]
Set minimum frame size to be 1 byte

The show_existing_frame mode still needs to be sent to the decoder.
Account for this as 1 byte. This would make the encoder properly
update its state.

Change-Id: I32a59ccb5d0e02cc6367c1a264b2de72dc1432a7

5 years agoPrepare multi-layer ARF coding structure
Jingning Han [Thu, 23 Aug 2018 17:18:53 +0000 (10:18 -0700)]
Prepare multi-layer ARF coding structure

Build the frame processing order and type queue for multi-layer
ARF coding structure.

Change-Id: I5e14c60279020dc65a883d2997ca1ca9ce739488

5 years agoBuild up multi-layer ARF processing order
Jingning Han [Wed, 22 Aug 2018 19:41:25 +0000 (12:41 -0700)]
Build up multi-layer ARF processing order

Use DFS to build the multi-layer ARF processing order.

Change-Id: Iba4b20476eb5c8a3db49a24b2b0dec325fade65b

5 years agoAdd element stack operations for arf index control
Jingning Han [Wed, 22 Aug 2018 19:03:39 +0000 (12:03 -0700)]
Add element stack operations for arf index control

Support arf index stack operation.

Change-Id: Ifcf521ffc95a520344824ffc159883b71e8fc7a0

5 years agoMerge "cosmetics,lf threading: normalize struct member names"
James Zern [Fri, 31 Aug 2018 03:22:42 +0000 (03:22 +0000)]
Merge "cosmetics,lf threading: normalize struct member names"

5 years agosilence c++ abi warning
Johann [Thu, 30 Aug 2018 21:07:02 +0000 (14:07 -0700)]
silence c++ abi warning

Linking c++ libraries built with gcc 6 and gcc 7 on arm
generates some warnings because of incompatibilities between those
compilers:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77728

libvpx does not generate a c++ library. C++ is only used for examples and tests.

Change-Id: I3d5d5ef3fb66743bff26a833d6641898975e9f71

5 years agovp9: Fix rate control stats for bypass mode in sample encoder
Marco Paniconi [Thu, 30 Aug 2018 19:59:44 +0000 (12:59 -0700)]
vp9: Fix rate control stats for bypass mode in sample encoder

Allow rate control stats to work for bypass mode
in vp9_spatial_svc_encoder.c

Change-Id: I66764a006a73b1fd13c07b4fc4e0c88b2bb2a035

5 years agoRevert "Loopfilter MultiThread Optimization"
James Zern [Thu, 30 Aug 2018 16:58:02 +0000 (09:58 -0700)]
Revert "Loopfilter MultiThread Optimization"

This reverts commit dafe064289a917977439ab6f4f002b9946496084.

Corrupted files may cause the decoder to hang as row progress in the
loopfilter is used to progress each thread.

BUG=webm:1558

Change-Id: I0674ce9af14d3fb7b2da8124e7b600616c8e734a

5 years agoMerge "rtcd: fix --required flag"
Johann Koenig [Wed, 29 Aug 2018 20:17:49 +0000 (20:17 +0000)]
Merge "rtcd: fix --required flag"

5 years agortcd: fix --required flag
Johann [Tue, 28 Aug 2018 19:56:34 +0000 (12:56 -0700)]
rtcd: fix --required flag

Always parse --required options. Previously they were only parsed for
x86_64.

Make entries passed in additive if there are existing required flags.

Mark 'neon' as required for armv8/aarch64.

BUG=chromium:876548

Change-Id: I55c6aad4536a9d8423e223e5616f3aa26d6b2941

5 years agoMerge "Skip unnecessary motion search"
Hui Su [Wed, 29 Aug 2018 15:39:31 +0000 (15:39 +0000)]
Merge "Skip unnecessary motion search"

5 years agoSkip unnecessary motion search
Hui Su [Tue, 28 Aug 2018 00:32:05 +0000 (17:32 -0700)]
Skip unnecessary motion search

If a ref frame is masked out, we do not need to do motion search for it.
It makes speed 0 a little faster.

Change-Id: I68f71255b2798b24fd1d5b28ed24a2ef87251413

5 years agoMerge "vp9: Fix ref frame update in denoiser in bypass mode."
Jerome Jiang [Tue, 28 Aug 2018 17:27:57 +0000 (17:27 +0000)]
Merge "vp9: Fix ref frame update in denoiser in bypass mode."

5 years agoMerge "Revert "Prevent double application of min rate in two pass.""
Hui Su [Tue, 28 Aug 2018 17:04:58 +0000 (17:04 +0000)]
Merge "Revert "Prevent double application of min rate in two pass.""

5 years agoRework enc/dec mismatch detection
Jingning Han [Mon, 27 Aug 2018 22:22:24 +0000 (15:22 -0700)]
Rework enc/dec mismatch detection

The previous enc/dec mismatch detection assumes the previously
reconstructed frame would always stay at frame buffer pool index
at 0. It could hence cause certain delay in enc/dec mismatch
detection when the immediate reconstruction frame is not yet
propagated to index 0 in the buffer map pool.

This change always keeps the latest decoded show frame buffer
index and directly gets the reconstructed frame from encoder and
decoder buffer pools to check for mismatch.

Change-Id: If53092cbc42ab78d55af5b83f12a489fc362f3ae

5 years agovp9: Fix ref frame update in denoiser in bypass mode.
Jerome Jiang [Mon, 27 Aug 2018 22:28:48 +0000 (15:28 -0700)]
vp9: Fix ref frame update in denoiser in bypass mode.

BUG=b/112292577
Change-Id: I8fc5711e44d0317e299aa49f781e9c438bba9d82

5 years agovp9-svc: Change default pattern for bypass mode
Marco Paniconi [Mon, 27 Aug 2018 19:03:37 +0000 (12:03 -0700)]
vp9-svc: Change default pattern for bypass mode

For sample encoder: keep default pattern for bypass
mode to example#0.

Change-Id: Icddc4600d750a23a44b26517a327b546fd8eb412

5 years agoMerge "SVC: extend api to specify temporal id for each spatial layers."
Jerome Jiang [Mon, 27 Aug 2018 17:54:52 +0000 (17:54 +0000)]
Merge "SVC: extend api to specify temporal id for each spatial layers."

5 years agoMerge "Rework the ref_frame_skip_mask feature in RDO"
Hui Su [Thu, 23 Aug 2018 22:00:50 +0000 (22:00 +0000)]
Merge "Rework the ref_frame_skip_mask feature in RDO"

5 years agoRevert "Prevent double application of min rate in two pass."
Hui Su [Thu, 23 Aug 2018 21:39:38 +0000 (21:39 +0000)]
Revert "Prevent double application of min rate in two pass."

This reverts commit 416b7051d7f610ed6d62dff18af7776ec520fd9c.

Reason for revert: it causes visual quality drop as described in b/112953058.

Original change's description:
> Prevent double application of min rate in two pass.
>
> The initial allocation of bits in the two pass code to each frame
> should be within the min max limits on the command line. However,
> when forming an ARF group the cost of the ARF is shared by frames
> in that group such that the residual bits for a frame could drop below
> the min value. This change prevents the minimum being re-applied
> after the cost of the ARF has been deducted as this may otherwise
> cause low rate sections to overshoot their target.
>
> Test runs comparing to a baseline run with min and max section pct
> 0-2000% vs one closer to the YT use case (50-150%) suggest that
> this fix not only results in better rate control but also gives a better
> rd outcome.
>
> For example the HD set vs 0-2000% baseline (opsnr, ssim).
> Old code (50-150):  +0.751, +1.099
> New code(50-150): +0.241, -0.009
>
> Change-Id: I715da7b130bf53ba8aa609532aa9e18b84f5e2ef

TBR=yaowu@google.com,paulwilkins@google.com,debargha@google.com,builds@webmproject.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: Ic9849e4e0db64e9d92bbb9df9cc923230a15c4df

5 years agoMerge "Sync prev_frame/last_show_frame update with decoder"
Jingning Han [Thu, 23 Aug 2018 17:21:27 +0000 (17:21 +0000)]
Merge "Sync prev_frame/last_show_frame update with decoder"

5 years agoMerge "Skip update prev_mi frame in show_existing_frame mode"
Jingning Han [Thu, 23 Aug 2018 17:21:23 +0000 (17:21 +0000)]
Merge "Skip update prev_mi frame in show_existing_frame mode"

5 years agoMerge "Refactor encoder frame count update"
Jingning Han [Thu, 23 Aug 2018 17:21:18 +0000 (17:21 +0000)]
Merge "Refactor encoder frame count update"

5 years agoSync prev_frame/last_show_frame update with decoder
Jingning Han [Wed, 22 Aug 2018 17:31:18 +0000 (10:31 -0700)]
Sync prev_frame/last_show_frame update with decoder

Make the encoder side handling of prev_frame and last_show_frame
update synchronized with the decoder behavior.

Change-Id: I0f265391cba182d7cc266a1c327fe6b92e24ab17

5 years agoSkip update prev_mi frame in show_existing_frame mode
Jingning Han [Wed, 22 Aug 2018 17:23:53 +0000 (10:23 -0700)]
Skip update prev_mi frame in show_existing_frame mode

When the current frame is coded by directly using a reference
frame in buffer, no need to update the prev_mi frame information
for next frame encoding control.

Change-Id: I33fda8e70cdb31eb5b13b63e3dbd6e96ff85154d

5 years agoRefactor encoder frame count update
Jingning Han [Wed, 22 Aug 2018 17:16:46 +0000 (10:16 -0700)]
Refactor encoder frame count update

This refactoring allows the encoder to skip frame count update in
the show_existing_frame mode.

Change-Id: Id69707976ccdad144cba93a8f5d36b6947611f91

5 years agoMerge "Revert "vp8: Fix memory address overflow in decoder.""
Jerome Jiang [Wed, 22 Aug 2018 20:20:15 +0000 (20:20 +0000)]
Merge "Revert "vp8: Fix memory address overflow in decoder.""

5 years agoRework the ref_frame_skip_mask feature in RDO
Hui Su [Wed, 22 Aug 2018 05:02:42 +0000 (22:02 -0700)]
Rework the ref_frame_skip_mask feature in RDO

Previously we often skip all compound inter prediction modes,
causing large coding loss. This patch modifies how we set the
ref_frame_skip_mask so that compound modes are considered in RDO.

This affects speed>=1.

Coding gains(overall psnr):
          lowres       midres     hdres     average
speed 1    0.54%       0.43%      0.64%      0.53%
speed 2    0.59%       0.48%      0.60%      0.56%

Tested encoding speed on 10 HD sequences, average speed loss is
5% for speed 1; 2% for speed 2.

Change-Id: Ib8758af7ee7c9812022bd21c5fe61631e2bb8e5c

5 years agoRevert "vp8: Fix memory address overflow in decoder."
Jerome Jiang [Wed, 22 Aug 2018 18:01:37 +0000 (11:01 -0700)]
Revert "vp8: Fix memory address overflow in decoder."

This reverts commit 45cf384738ad261de7d00769c19b9b2842af06a7.

BUG=875626,875680,webm:1496

Change-Id: I78037b5e57dbf6cfe326b29beaad1128868f09f2

5 years agoSet refresh_frame_context flag off in show_existing_frame mode
Jingning Han [Wed, 22 Aug 2018 16:36:12 +0000 (09:36 -0700)]
Set refresh_frame_context flag off in show_existing_frame mode

Match the decoder expectation, set off refresh_fame_context flag
in show_existing_frame mode.

Change-Id: I5258635b715ea04f41a4a087178709f707449b71

5 years agoDrop empty line in vp9_get_compressed_data()
Jingning Han [Tue, 21 Aug 2018 19:59:59 +0000 (12:59 -0700)]
Drop empty line in vp9_get_compressed_data()

Change-Id: Iadb043128e0f813c75cc726e5a41ce94b9d1de24

5 years agoMerge "Allow codec to skip temporal filter for intermediate ARFs"
Jingning Han [Wed, 22 Aug 2018 02:47:57 +0000 (02:47 +0000)]
Merge "Allow codec to skip temporal filter for intermediate ARFs"

5 years agoMerge "Control reference frame refresh flags for USE_BUF_FRAME"
Jingning Han [Wed, 22 Aug 2018 00:08:47 +0000 (00:08 +0000)]
Merge "Control reference frame refresh flags for USE_BUF_FRAME"

5 years agoMerge "Safely swap the show frame buffer pointer in show_existing mode"
Jingning Han [Tue, 21 Aug 2018 23:44:28 +0000 (23:44 +0000)]
Merge "Safely swap the show frame buffer pointer in show_existing mode"

5 years agoMerge "Skip loop filter operation in show_existing_frame mode"
Jingning Han [Tue, 21 Aug 2018 23:44:16 +0000 (23:44 +0000)]
Merge "Skip loop filter operation in show_existing_frame mode"

5 years agoMerge "Point show frame buffer towards existing frame buffer"
Jingning Han [Tue, 21 Aug 2018 23:44:10 +0000 (23:44 +0000)]
Merge "Point show frame buffer towards existing frame buffer"

5 years agoMerge "Skip frame encoding when show_existing_frame is on"
Jingning Han [Tue, 21 Aug 2018 23:43:37 +0000 (23:43 +0000)]
Merge "Skip frame encoding when show_existing_frame is on"

5 years agoMerge "Add USE_BUF_FRAME enum to FRAME_UPDATE_TYPE"
Jingning Han [Tue, 21 Aug 2018 23:43:28 +0000 (23:43 +0000)]
Merge "Add USE_BUF_FRAME enum to FRAME_UPDATE_TYPE"

5 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"

5 years agoAllow codec to skip temporal filter for intermediate ARFs
Jingning Han [Tue, 21 Aug 2018 19:54:30 +0000 (12:54 -0700)]
Allow codec to skip temporal filter for intermediate ARFs

Allow the encoder to skip temporal filter for intermediate ARFs
that are later used in show_existing_frame mode.

Change-Id: Ieed635bf7672b62f5c287bde43765f80362a345e

5 years agoControl reference frame refresh flags for USE_BUF_FRAME
Jingning Han [Tue, 21 Aug 2018 19:25:43 +0000 (12:25 -0700)]
Control reference frame refresh flags for USE_BUF_FRAME

The enum USE_BUF_FRAME makes the use of show_existing_frame. In
this setting, all the reference frame buffer condition will stay
unchanged.

Change-Id: I5b7b28488dbd94982f721667128f004e4e6a00d8

5 years agoSafely swap the show frame buffer pointer in show_existing mode
Jingning Han [Tue, 21 Aug 2018 18:12:48 +0000 (11:12 -0700)]
Safely swap the show frame buffer pointer in show_existing mode

Point the current frame buffer towards the existing reference frame.
In the meantime, release the original new_fb pointer.

Change-Id: Ic83a698cac5cdaaabdf61acffb936ec130a84d1c

5 years agoSkip loop filter operation in show_existing_frame mode
Jingning Han [Tue, 21 Aug 2018 17:48:47 +0000 (10:48 -0700)]
Skip loop filter operation in show_existing_frame mode

Skip the loop filtering for frame coding in show_existing_frame
mode. This matches the decoder operation for show_existing_frame
mode.

Change-Id: I96f275cf5384eb5fe8c0404ec4142cf5b580ac16

5 years agoPoint show frame buffer towards existing frame buffer
Jingning Han [Tue, 21 Aug 2018 17:16:57 +0000 (10:16 -0700)]
Point show frame buffer towards existing frame buffer

When the show_existing_frame mode is on, directly point the new
frame pointer towards the existing reference frame buffer entry.

Change-Id: Ic50b25655fe95ea702fb529afacb7701ec17adcb

5 years agoSkip frame encoding when show_existing_frame is on
Jingning Han [Tue, 21 Aug 2018 17:05:33 +0000 (10:05 -0700)]
Skip frame encoding when show_existing_frame is on

No need to process through the frame encoding stage when a current
frame is coded using show_existing_frame.

Change-Id: I36c6f04e344326fa6ecc95cd0a4e4fd6f467fdcb

5 years agoAdd USE_BUF_FRAME enum to FRAME_UPDATE_TYPE
Jingning Han [Tue, 21 Aug 2018 16:46:22 +0000 (09:46 -0700)]
Add USE_BUF_FRAME enum to FRAME_UPDATE_TYPE

This enum indicates the use of show existing frame, and conducts
no reference frame buffer update.

Change-Id: I8bf3121376640baf24b580ebea58e9ccbdd641da

5 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()"

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

5 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

5 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

5 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

5 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

5 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"

5 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"

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

5 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

5 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

5 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

5 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

5 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

5 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

5 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"

5 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:"

5 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/"

5 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."

5 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

5 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

5 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

5 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

5 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

5 years agoSVC: extend api to specify temporal id for each spatial layers.
Jerome Jiang [Fri, 10 Aug 2018 23:14:00 +0000 (16:14 -0700)]
SVC: extend api to specify temporal id for each spatial layers.

BUG=b/112294545

Change-Id: I5be230c8969d69af3ad87068fdf3834ef1af11d9

5 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

5 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."

5 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

5 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

5 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

5 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."

5 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"

5 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."

5 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

5 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"