]> granicus.if.org Git - libvpx/log
libvpx
6 years agoRefactor GOP reference frame ordering for tpl model
Jingning Han [Mon, 15 Oct 2018 22:27:02 +0000 (15:27 -0700)]
Refactor GOP reference frame ordering for tpl model

Process the frames in the order of GOP structure definition.
Decouple the dependency on rc->baseline_gf_interval.

Change-Id: I0d42c542aca552975cc8f08b0eb8b22ccf6a9537

6 years agoRecord gop size
Jingning Han [Mon, 15 Oct 2018 22:21:23 +0000 (15:21 -0700)]
Record gop size

Keep the frame operations needed within a group of picture.

Change-Id: Iece2e855f21860c930b34a3c586f084f7c61db00

6 years agoAdd frame_gop_index to GF_GROUP
Jingning Han [Mon, 15 Oct 2018 18:48:39 +0000 (11:48 -0700)]
Add frame_gop_index to GF_GROUP

Add frame_gop_index to track the frame offset within a group of
picture. This reworks the GOP frame offset calculation and use
case. The coding stats remain identical.

Change-Id: I94d0957bcc327f6bbeac6e84157635663c36b953

6 years agoAdd encoder side frame buffer for tpl model
Jingning Han [Mon, 15 Oct 2018 17:11:57 +0000 (10:11 -0700)]
Add encoder side frame buffer for tpl model

Add an encoder side reference frame buffer pool to store the
reference frames for tpl model. This servces as an intermediate
step to support multi-layer ARF system. The buffer memory size will
be optimized afterwards.

Change-Id: If2d2f095d4911a4996f6c2a0b0a8e3d235ceadb2

6 years agoRefactor tpl model setup to support multi-layer ARF setup
Jingning Han [Thu, 11 Oct 2018 19:16:01 +0000 (12:16 -0700)]
Refactor tpl model setup to support multi-layer ARF setup

Generalize the tpl model framework to support the newly designed
GOP structure system. The existing tpl model assumes single layer
ARF.

This design will separate the tpl model operation for GOP with
and without ARF cases. When a GOP has ARF, the maximum lookahead
offset would upper limit the needed frame buffer to build the
tpl model for the entire GOP. When a GOP does not have ARF, we
would use the temporal model in a different approach.

The first step will focus on GOP with ARF. All the tpl model related
operation will only be triggered by ARF frame generation.

Change-Id: I13ab03a7bc68f5a4f6b03f2cb01c10befe955e73

6 years agoMerge "Turn on ml_var_partition_pruning for HBD"
Hui Su [Sat, 13 Oct 2018 15:04:24 +0000 (15:04 +0000)]
Merge "Turn on ml_var_partition_pruning for HBD"

6 years agoMerge "Optimize apply_temporal_filter function"
Yunqing Wang [Sat, 13 Oct 2018 03:12:43 +0000 (03:12 +0000)]
Merge "Optimize apply_temporal_filter function"

6 years agoMerge "Remove unused variable from VP9_COMP"
Jingning Han [Sat, 13 Oct 2018 02:10:26 +0000 (02:10 +0000)]
Merge "Remove unused variable from VP9_COMP"

6 years agoOptimize apply_temporal_filter function
Yunqing Wang [Fri, 12 Oct 2018 19:25:36 +0000 (12:25 -0700)]
Optimize apply_temporal_filter function

This patch optimized apply_temporal_filter function. The diff^2 for each
pixel in the 16x16 block is calculated once beforehand, so that we don't
calculate it multiple times while evaluating a pixel's neighbors. This
would speed up the function.

Change-Id: Ibdb8b041f317fd6df198950e2acf9cfcde26860d

6 years agoTurn on ml_var_partition_pruning for HBD
Hui Su [Fri, 12 Oct 2018 17:59:48 +0000 (10:59 -0700)]
Turn on ml_var_partition_pruning for HBD

This affects speed 0 and 1 only.

Tested on lowres_bd10(480p) and midres_bd10(720p),
                   speed 0       speed 1
coding loss:        0.07%         0.10%
encoder speedup:     14%          6.5%

Change-Id: I5812400d8c7393321b7284d3fca06026842390b5

6 years agoMerge "Enable ML based rect partition pruning for HBD"
Hui Su [Fri, 12 Oct 2018 19:59:53 +0000 (19:59 +0000)]
Merge "Enable ML based rect partition pruning for HBD"

6 years agoEnable ML based rect partition pruning for HBD
Hui Su [Thu, 11 Oct 2018 21:33:40 +0000 (14:33 -0700)]
Enable ML based rect partition pruning for HBD

Tested on lowres_bd10(480p) and midres_bd10(720p), average coding
loss is 0.09%; average encoding speedup is 9%.

Only speed 0 is affected.

Change-Id: Ia8d48c1c6d1669745f0e956b172572a37e42f0c7

6 years agoMerge "Make 4-tap interp filter coefficients even numbers"
Yunqing Wang [Fri, 12 Oct 2018 16:14:00 +0000 (16:14 +0000)]
Merge "Make 4-tap interp filter coefficients even numbers"

6 years agoRemove unused variable from VP9_COMP
Jingning Han [Thu, 11 Oct 2018 22:23:19 +0000 (15:23 -0700)]
Remove unused variable from VP9_COMP

Change-Id: I61447b7a21ac5b03f2a6accd6e433d8f9369e508

6 years agoMake 4-tap interp filter coefficients even numbers
Yunqing Wang [Thu, 11 Oct 2018 22:13:47 +0000 (15:13 -0700)]
Make 4-tap interp filter coefficients even numbers

This CL modified 4-tap interp filter coefficients to be even numbers,
which would help in writing 4-tap filter SIMD optimizations. The coding
performance change was negligible. Speed 1 borg test showed:
        avg_psnr:  ovr_psnr:    ssim:
lowres:  -0.003    -0.012      -0.017
midres:  0.029     0.018        0.043
hdres:   0.024     0.044        0.033

Change-Id: Id7c54bb9a9c1aee19c41bc6f1dc3b9682d158bba

6 years agoMerge "ML_VAR_PARTITION: adjust model threshold"
Hui Su [Thu, 11 Oct 2018 23:41:57 +0000 (23:41 +0000)]
Merge "ML_VAR_PARTITION: adjust model threshold"

6 years agoMerge "Call tpl model build at the beginning of a GOP"
Jingning Han [Thu, 11 Oct 2018 16:22:01 +0000 (16:22 +0000)]
Merge "Call tpl model build at the beginning of a GOP"

6 years agoMerge "Revert "vp8: Increase rate threshold for overshoot-drop""
Marco Paniconi [Thu, 11 Oct 2018 10:25:12 +0000 (10:25 +0000)]
Merge "Revert "vp8: Increase rate threshold for overshoot-drop""

6 years agoRevert "vp8: Increase rate threshold for overshoot-drop"
Marco Paniconi [Thu, 11 Oct 2018 10:24:16 +0000 (10:24 +0000)]
Revert "vp8: Increase rate threshold for overshoot-drop"

This reverts commit bc066684ca4deff24d02ee56071d731b431bf438.

Reason for revert: <INSERT REASONING HERE>
Regression in webrtc perf test

Original change's description:
> vp8: Increase rate threshold for overshoot-drop
>
> Increase the rate threshold for the dropping when
> overshoot is detected during encoding. This helps
> to prevent some unneccessary drops for hard content.
>
> Change-Id: I258bf33883d46347efd44e1e192cb25c444d05fe

TBR=sprang@chromium.org,marpan@google.com,builds@webmproject.org

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

Change-Id: Ib0e84747430ba6d04e479f9efd86d628b80a1e67

6 years agoMerge changes Ia5978d91,I3e3754f3
Angie Chiang [Thu, 11 Oct 2018 01:18:45 +0000 (01:18 +0000)]
Merge changes Ia5978d91,I3e3754f3

* changes:
  Simplify mode_estimation / tpl_model_store
  Move [inter/intra]_cost change to mode_estimation

6 years agoMerge "Loopfilter Multi-Thread Optimization"
Harish Mahendrakar [Thu, 11 Oct 2018 00:03:26 +0000 (00:03 +0000)]
Merge "Loopfilter Multi-Thread Optimization"

6 years agoMerge "subpel asm: fix whitespace"
James Zern [Wed, 10 Oct 2018 22:11:15 +0000 (22:11 +0000)]
Merge "subpel asm: fix whitespace"

6 years agoCall tpl model build at the beginning of a GOP
Jingning Han [Wed, 10 Oct 2018 21:52:30 +0000 (14:52 -0700)]
Call tpl model build at the beginning of a GOP

The gop index 0 is default as kf / gf. The effective first coding
frame controlled by the current GOP rate allocation is indexed 1.
Call the tpl model build for the current GOP once at index 1
position. This would unify the calling system for single/multi-layer
ARF GOP structure.

Change-Id: I4ce69337e04646098d5513c0aa56b4e0b4483337

6 years agoMerge "Use 4-tap interp filter in speed 1 sub-pel motion search"
Yunqing Wang [Wed, 10 Oct 2018 21:05:44 +0000 (21:05 +0000)]
Merge "Use 4-tap interp filter in speed 1 sub-pel motion search"

6 years agosubpel asm: fix whitespace
Johann [Wed, 10 Oct 2018 14:44:49 +0000 (07:44 -0700)]
subpel asm: fix whitespace

Change-Id: I7a3314a268cf6049a7260361043e76d4561085c6

6 years agoSimplify mode_estimation / tpl_model_store
Angie Chiang [Tue, 9 Oct 2018 20:40:47 +0000 (13:40 -0700)]
Simplify mode_estimation / tpl_model_store

1) Let mode_estimation() save the results into tpl_frame directly
2) In tpl_model_store(), replace copies of tpl_stats parameters by
   memset()

Change-Id: Ia5978d91cb60cf896bd53d3f27701ef9ae3ba09a

6 years agoMove [inter/intra]_cost change to mode_estimation
Angie Chiang [Tue, 9 Oct 2018 19:43:36 +0000 (12:43 -0700)]
Move [inter/intra]_cost change to mode_estimation

Change-Id: I3e3754f349d31d17554f02bd14cd34620057ddcb

6 years agoMerge changes I67700eba,I9e8f8ed3,Id93565cc
Angie Chiang [Tue, 9 Oct 2018 18:33:32 +0000 (18:33 +0000)]
Merge changes I67700eba,I9e8f8ed3,Id93565cc

* changes:
  Move feature_score into an independent for loop
  Add set_mv_limits()
  Move lambda into TplDepFrame

6 years agoUse 4-tap interp filter in speed 1 sub-pel motion search
Yunqing Wang [Mon, 8 Oct 2018 23:21:54 +0000 (16:21 -0700)]
Use 4-tap interp filter in speed 1 sub-pel motion search

Added the 4-tap interp filter, and used it for speed 1 sub-pel motion
search. Speed 2 motion search still used bilinear filter as before.

Speed 1 borg test showed good bit savings.
        avg_psnr:  ovr_psnr:    ssim:
lowres:  -1.125    -1.179      -1.021
midres:  -0.717    -0.710      -0.543
hdres:   -0.357    -0.370      -0.342
Speed test at speed 1 showed ~10% encoder time increase, which was
partially because of no SIMD version of 4-tap filter.

Change-Id: Ic9b48cdc6a964538c20144108526682d64348301

6 years agoAdd accurate sub-pel motion search
Yunqing Wang [Mon, 8 Oct 2018 22:10:12 +0000 (15:10 -0700)]
Add accurate sub-pel motion search

Added the accurate sub-pel motion search. In this patch, used the 8-tap
filter in sub-pel motion search, and this was enabled at speed 0.

Speed 0 borg test showed that
        avg_psnr:  ovr_psnr:    ssim:
lowres:  -1.363     -1.403     -1.282
midres:  -0.842     -0.849     -0.720
hdres:   -0.480     -0.488     -0.503
Speed test at speed 0 showed ~8% encoder time increase.

Change-Id: I194ca709681ea588f3f6381093940e22d03c4d7b

6 years agoMerge "Set up the unit scaling factor for motion search"
Yunqing Wang [Tue, 9 Oct 2018 16:08:06 +0000 (16:08 +0000)]
Merge "Set up the unit scaling factor for motion search"

6 years agoMove feature_score into an independent for loop
Angie Chiang [Mon, 8 Oct 2018 23:37:15 +0000 (16:37 -0700)]
Move feature_score into an independent for loop

We aim at change the mv search order according to feature_score
This is part of the change.

Change-Id: I67700eba014df92190eabc78060cf29adf0fc38b

6 years agoAdd set_mv_limits()
Angie Chiang [Mon, 8 Oct 2018 22:51:05 +0000 (15:51 -0700)]
Add set_mv_limits()

Change-Id: I9e8f8ed3eb150b3af1f465f595000bd05d43f3f6

6 years agoSet up the unit scaling factor for motion search
Yunqing Wang [Mon, 8 Oct 2018 18:43:02 +0000 (11:43 -0700)]
Set up the unit scaling factor for motion search

Set up the unit scaling factor used during motion search.

Change-Id: I6fda018d593b7ad4b7658d44c39be950a502d192

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

Take the original loopfilter multi-thread optimization
(dafe064289a917977439ab6f4f002b9946496084) along with the fixes for bugs
1558 and 1562.

BUG=webm:1558
BUG=webm:1562

Change-Id: Ibbf6bd13f4ffff0e79184ccfd6b85a49e067a6d8

6 years agoMove lambda into TplDepFrame
Angie Chiang [Mon, 8 Oct 2018 21:35:26 +0000 (14:35 -0700)]
Move lambda into TplDepFrame

Change-Id: Id93565cca41e00d4ab5de4c6de30accabf2adc52

6 years agoMerge "Avoid null checks related to pool->frame_bufs."
Wan-Teh Chang [Mon, 8 Oct 2018 20:51:28 +0000 (20:51 +0000)]
Merge "Avoid null checks related to pool->frame_bufs."

6 years agoMerge "Correct a for loop in init_ref_frame_bufs."
Wan-Teh Chang [Mon, 8 Oct 2018 19:07:02 +0000 (19:07 +0000)]
Merge "Correct a for loop in init_ref_frame_bufs."

6 years agoMerge "Turn on ml_var_partition_pruning for speed 1"
Hui Su [Mon, 8 Oct 2018 17:25:23 +0000 (17:25 +0000)]
Merge "Turn on ml_var_partition_pruning for speed 1"

6 years agoCorrect a for loop in init_ref_frame_bufs.
Wan-Teh Chang [Mon, 8 Oct 2018 17:03:06 +0000 (10:03 -0700)]
Correct a for loop in init_ref_frame_bufs.

The cm->ref_frame_map and pool->frame_bufs arrays are of different sizes
(REF_FRAMES and FRAME_BUFFERS, respectively), so init_ref_frame_bufs()
cannot iterate over these two arrays using the same for loop.

Change-Id: Ica5bbd9d0c30ea3d089ad2d4bcf6cd8ae2daea64

6 years agoAvoid null checks related to pool->frame_bufs.
Wan-Teh Chang [Mon, 8 Oct 2018 16:41:55 +0000 (09:41 -0700)]
Avoid null checks related to pool->frame_bufs.

It seems that null pointer checks such as the following may make clang
scan-build think pool->frame_bufs may be a null pointer:

    buf = (buf_idx != INVALID_IDX) ? &pool->frame_bufs[buf_idx] : NULL;
    if (buf != NULL) {

This "misinformation" may make scan-build warn about the ref_cnt_fb()
function's use of its 'bufs' argument (Dereference of null pointer) when
we pass pool->frame_bufs to ref_cnt_fb().

Rewriting the above code as:

    if (buf_idx != INVALID_IDX) {
      buf = &pool->frame_bufs[buf_idx];

not only is clearer but also avoids confusing scan-build.

Change-Id: Ia64858dbd7ff89f74ba1a4fc9239b0c4413592c8

6 years agoMerge "Changes to facilitate accurate sub-pel motion search"
Yunqing Wang [Mon, 8 Oct 2018 15:41:09 +0000 (15:41 +0000)]
Merge "Changes to facilitate accurate sub-pel motion search"

6 years agoMerge "Fix bug in prepare_nb_full_mvs"
Angie Chiang [Sat, 6 Oct 2018 00:42:47 +0000 (00:42 +0000)]
Merge "Fix bug in prepare_nb_full_mvs"

6 years agoTurn on ml_var_partition_pruning for speed 1
Hui Su [Tue, 2 Oct 2018 21:40:27 +0000 (14:40 -0700)]
Turn on ml_var_partition_pruning for speed 1

Coding loss:
lowres 0.08%; midres 0.11%; hdres 0.07%

Average encoding speedup is about 6%.

Change-Id: I950291cf0f1d610bcdedeb150bcbefea2f5579bc

6 years agoML_VAR_PARTITION: adjust model threshold
Hui Su [Wed, 3 Oct 2018 16:07:07 +0000 (09:07 -0700)]
ML_VAR_PARTITION: adjust model threshold

Make decisions more aggressively to improve encoding speed.

Coding gains(avg-psnr) after this change over baseline:
rtc       1.55% for speed 7;  2.89% for speed 8.
ytlivehr  2.20% for speed 6.

Change-Id: If6ac4a942a5b4708bcc6b0a49bd92fbc4d67c3f8

6 years agoChanges to facilitate accurate sub-pel motion search
Yunqing Wang [Fri, 5 Oct 2018 17:42:48 +0000 (10:42 -0700)]
Changes to facilitate accurate sub-pel motion search

This patch included changes to facilitate accurate sub-pel motion
search. More patch will follow to turn on accurate sub-pel motion
search.

Change-Id: I224c28c338353fe5c7609372162f79885c54248f

6 years agoFix bug in prepare_nb_full_mvs
Angie Chiang [Thu, 4 Oct 2018 22:17:02 +0000 (15:17 -0700)]
Fix bug in prepare_nb_full_mvs

Previously, the prepare_nb_full_mvs might construct nb_full_mv with
wrong mvs (from other ref frame).
The following changes will fix the bug.
1) Let ready in TplDepStats becomes int array
2) Add parameter rf_idx
3) Use mv_arr instead of mv to build the nb_full_mv

Change-Id: I199798aec4c6762d54799562e142457cc26ee043

6 years agoMerge "Clean up vp9_firstpass.h"
Jingning Han [Thu, 4 Oct 2018 15:26:31 +0000 (15:26 +0000)]
Merge "Clean up vp9_firstpass.h"

6 years agoMerge "Add mv_{dist/cost}_sum to TplDepFrame"
Angie Chiang [Thu, 4 Oct 2018 00:48:42 +0000 (00:48 +0000)]
Merge "Add mv_{dist/cost}_sum to TplDepFrame"

6 years agoClean up vp9_firstpass.h
Jingning Han [Wed, 3 Oct 2018 23:01:26 +0000 (16:01 -0700)]
Clean up vp9_firstpass.h

Remove unused functions and macros.

Change-Id: I46458a60f75637c66af0e18ad876a2634e5818bb

6 years agovp8: Increase rate threshold for overshoot-drop
Marco Paniconi [Wed, 3 Oct 2018 22:25:32 +0000 (15:25 -0700)]
vp8: Increase rate threshold for overshoot-drop

Increase the rate threshold for the dropping when
overshoot is detected during encoding. This helps
to prevent some unneccessary drops for hard content.

Change-Id: I258bf33883d46347efd44e1e192cb25c444d05fe

6 years agoMerge changes I66b35ef7,Ic9ed6ed6,Ie5818689
Angie Chiang [Wed, 3 Oct 2018 01:05:21 +0000 (01:05 +0000)]
Merge changes I66b35ef7,Ic9ed6ed6,Ie5818689

* changes:
  Add mv_dist/mv_cost to TplDepStats
  Change interface of motion_compensated_prediction
  Separate lambda from nb_mvs_inconsistency()

6 years agoMerge "Change the frame used to set up encoder in tests to 0."
Chi Yo Tsai [Wed, 3 Oct 2018 00:07:55 +0000 (00:07 +0000)]
Merge "Change the frame used to set up encoder in tests to 0."

6 years agoChange the frame used to set up encoder in tests to 0.
chiyotsai [Tue, 2 Oct 2018 20:51:48 +0000 (13:51 -0700)]
Change the frame used to set up encoder in tests to 0.

Change-Id: Ied460b6ff53a58050d53dec8d32b627de5de3f3a

6 years agoMerge "Minor clean-up in tiny_ssim.c"
Jingning Han [Tue, 2 Oct 2018 21:16:35 +0000 (21:16 +0000)]
Merge "Minor clean-up in tiny_ssim.c"

6 years agoMerge "Force even arf group length where possible."
Jingning Han [Tue, 2 Oct 2018 21:16:19 +0000 (21:16 +0000)]
Merge "Force even arf group length where possible."

6 years agoMerge "Keep metric log only for the displayable frames"
Jingning Han [Tue, 2 Oct 2018 18:24:29 +0000 (18:24 +0000)]
Merge "Keep metric log only for the displayable frames"

6 years agoMerge "Fix vpxenc per frame psnr and ssim print"
Jingning Han [Tue, 2 Oct 2018 18:24:25 +0000 (18:24 +0000)]
Merge "Fix vpxenc per frame psnr and ssim print"

6 years agoMinor clean-up in tiny_ssim.c
Jingning Han [Tue, 2 Oct 2018 17:21:43 +0000 (10:21 -0700)]
Minor clean-up in tiny_ssim.c

Report the correct filename in error message.
Explicitly assign floating point value to double type.

Change-Id: I42fd2da6e16b1e3e7ec221d5d562a728a93c0196

6 years agoForce even arf group length where possible.
Paul Wilkins [Tue, 2 Oct 2018 15:11:14 +0000 (16:11 +0100)]
Force even arf group length where possible.

This patch tweaks the calculation of the active maximum GF interval
and also the break out clause for the GF interval loop. The changes
force the maximum and where possible the  break out value to be odd
which in turn will result in an even length ARF group if ARF coding is
selected (vs GF only coding).

The primary aim was to improve coding with multi layer arf groups.
For the single layer case there are small net gains in 3 out of 4 sets
(low,md, hd) and a small net drop for the NF2K set.

For multi-layer the gains (opsnr, ssim, psnr-hvs : -ve = better) were:-

Low res: -0.109, -0.038, -0.036
Mid res: -0.204, -0.171, -0.242
Hd res: -0.330, -0.471, -0.496
NF 2k: -0.165, -0.149, -0.157

Change-Id: I245f8561f5d1bd34312a0133c670c2154a0da23f

6 years agoKeep metric log only for the displayable frames
Jingning Han [Mon, 1 Oct 2018 22:31:27 +0000 (15:31 -0700)]
Keep metric log only for the displayable frames

The end-to-end reconstruction quality is represented only by the
displayable frames. Drop the coding stats from ARF frames.

Change-Id: Ib8241db448611f4b6477f107930eaa273f960e20

6 years agoFix vpxenc per frame psnr and ssim print
Jingning Han [Mon, 1 Oct 2018 22:26:00 +0000 (15:26 -0700)]
Fix vpxenc per frame psnr and ssim print

Fix compiler error and make the encoder properly log the psnr and
ssim.

Change-Id: I7b35541131acaa60117bb1e458508b82a4b4677e

6 years agoIntroduce the ml_var_partition_pruning feature
Hui Su [Sat, 29 Sep 2018 21:48:56 +0000 (14:48 -0700)]
Introduce the ml_var_partition_pruning feature

Add the ml_var_partition_pruning encoder speed feature that
uses a neural net model to prune partition-none and partition-split
search. The model uses prediction residue variance and quantization
step size as input features.

Encoding speed gain for speed 0(tested over 20 hdres clips):
            QP=30    QP=40
average     17.7%    18.3%
max        24.46%    26.6%

Coding loss:
lowres 0.071%;  midres 0.098%;  hdres 0.163%

Currently it is enabled for speed 0 low-bit depth only. It needs to be
tuned for other settings.

Change-Id: Ifb7417daa6bb6e7c97bb676269ce54ab0dc7b8c8

6 years agoMerge "Remove deprecated get_arf_buffer_indices()"
Jingning Han [Sat, 29 Sep 2018 04:20:31 +0000 (04:20 +0000)]
Merge "Remove deprecated get_arf_buffer_indices()"

6 years agoMerge "Remove deprecated arf_update_index from GF_GROUP"
Jingning Han [Sat, 29 Sep 2018 04:20:27 +0000 (04:20 +0000)]
Merge "Remove deprecated arf_update_index from GF_GROUP"

6 years agoMerge "Add ml_var_partition experiment"
Hui Su [Sat, 29 Sep 2018 02:00:16 +0000 (02:00 +0000)]
Merge "Add ml_var_partition experiment"

6 years agoMerge changes I93308a09,If85c36b4,I918eb36a
Angie Chiang [Fri, 28 Sep 2018 23:09:19 +0000 (23:09 +0000)]
Merge changes I93308a09,If85c36b4,I918eb36a

* changes:
  Add vpx_clear_system_state to new mv search func
  Change mv color to red
  Call vp9_full_pixel_diamond_new in tpl mv search

6 years agoAdd mv_{dist/cost}_sum to TplDepFrame
Angie Chiang [Fri, 28 Sep 2018 22:52:03 +0000 (15:52 -0700)]
Add mv_{dist/cost}_sum to TplDepFrame

Change-Id: Iacce1f88630ba93ff72d745a83dd4b853b6b61af

6 years agoAdd mv_dist/mv_cost to TplDepStats
Angie Chiang [Fri, 28 Sep 2018 22:40:57 +0000 (15:40 -0700)]
Add mv_dist/mv_cost to TplDepStats

Change-Id: I66b35ef76c229d4eb3bf3c913619a0e219c4c2f9

6 years agoChange interface of motion_compensated_prediction
Angie Chiang [Fri, 28 Sep 2018 21:35:21 +0000 (14:35 -0700)]
Change interface of motion_compensated_prediction

Change the interface of vp9_full_pixel_diamond_new

Change-Id: Ic9ed6ed61c5178f3f445f40860ebaac7ea17f75d

6 years agoSeparate lambda from nb_mvs_inconsistency()
Angie Chiang [Fri, 28 Sep 2018 21:23:23 +0000 (14:23 -0700)]
Separate lambda from nb_mvs_inconsistency()

Change-Id: Ie5818689233ae01742ca595e2c8c3f3664bb426c

6 years agoRemove deprecated get_arf_buffer_indices()
Jingning Han [Fri, 28 Sep 2018 18:30:56 +0000 (11:30 -0700)]
Remove deprecated get_arf_buffer_indices()

Change-Id: I6d0c8a1a61d861aa0353cde76a833c7c0b222279

6 years agoRemove deprecated arf_update_index from GF_GROUP
Jingning Han [Fri, 28 Sep 2018 18:28:35 +0000 (11:28 -0700)]
Remove deprecated arf_update_index from GF_GROUP

As we move to unify the GOP structure layout control, the variable
arf_update_idx and arf_ref_idx are deprecated.

Change-Id: Iadcb9e6033d419d4b2015fe747c23be59a7da787

6 years agoMerge "Fix minor bug in calculation of max arf group length."
Jingning Han [Fri, 28 Sep 2018 17:38:26 +0000 (17:38 +0000)]
Merge "Fix minor bug in calculation of max arf group length."

6 years agoMerge "Adjustment of GOP intra factor for multi-layer."
Jingning Han [Fri, 28 Sep 2018 17:38:14 +0000 (17:38 +0000)]
Merge "Adjustment of GOP intra factor for multi-layer."

6 years agoMerge "Add MID_OVERLAY_UPDATE frame type"
Jingning Han [Fri, 28 Sep 2018 17:18:54 +0000 (17:18 +0000)]
Merge "Add MID_OVERLAY_UPDATE frame type"

6 years agoMerge "Refactor gf_overlay frame type update"
Jingning Han [Fri, 28 Sep 2018 17:18:46 +0000 (17:18 +0000)]
Merge "Refactor gf_overlay frame type update"

6 years agoMerge "Revert "Merge "Adapt GOP size threshold to the allowed layer depth"""
Paul Wilkins [Fri, 28 Sep 2018 17:16:01 +0000 (17:16 +0000)]
Merge "Revert "Merge "Adapt GOP size threshold to the allowed layer depth"""

6 years agoFix minor bug in calculation of max arf group length.
Paul Wilkins [Thu, 27 Sep 2018 09:55:05 +0000 (10:55 +0100)]
Fix minor bug in calculation of max arf group length.

Their is no valid last boosted Q availably when estimating the maximum
group length for the first ARF group in a clip, so use a value based on
the current max q.

Change-Id: Ida0b4bfb7ce7433089ad808abed7f59c88527a81

6 years agoAdjustment of GOP intra factor for multi-layer.
Paul Wilkins [Fri, 28 Sep 2018 15:54:03 +0000 (16:54 +0100)]
Adjustment of GOP intra factor for multi-layer.

This provides and alternative (still to be tuned for edge cases)
approach to adjusting the gop intra factor when multi-layer coding
is in effect that does not alter single layer coding.

Change-Id: Iba86d65a6e68e86aa031b7e1f0b6a4c55761b1b8

6 years agoAdd ml_var_partition experiment
Hui Su [Tue, 25 Sep 2018 19:19:53 +0000 (12:19 -0700)]
Add ml_var_partition experiment

Make partition decisions using machine learning models. The goal is to
achieve better coding quality than the variance-based parititioning
without much encoding speed loss.

To enable this experiment, use --enable-ml-var-partition for config.

When eanbled, the variance-based partitioning is replaced by this ML
based partitioing for speed 6 and above in real time mode(except low
resolution or high bit-depth).

Current coding gains(average PSNR):
                speed 6      speed 7      speed 8
rtc              2.04%        2.65%        3.90%
ytlivehr         3.11%        4.53%       11.57%
hdres(rtc mode)  5.10%

Further testing and tuning is needed to see if the speed and quality
tradeoff is reasonable.

Change-Id: I0da5a2fbc22c3261832b32920ee36d9b19d417af

6 years agoMerge "Fix a loophole in nonrd_pick_partition()"
Hui Su [Fri, 28 Sep 2018 16:06:00 +0000 (16:06 +0000)]
Merge "Fix a loophole in nonrd_pick_partition()"

6 years agoRevert "Merge "Adapt GOP size threshold to the allowed layer depth""
Paul Wilkins [Fri, 28 Sep 2018 12:17:31 +0000 (13:17 +0100)]
Revert "Merge "Adapt GOP size threshold to the allowed layer depth""

This reverts commit 5efde3914f1a85061e51bc8d96984216e976e90c, reversing
changes made to 3a291593726a3f0eff5e59983e84de20d0bf294c.

This is badly broken and may help somewhat for multi-layer but is hurting
massively in single layer encodes.

I ran this through this morning and while it often helps in SSIM it is badly down
for global PSNR and PSNR-HVS with some clips down by 35-40%. This is in line
with previous experiments where I have found that a bigger boost helps SSIM
but hurts PSNR and PSNR HVS.

I was also working on changes to the I factor that gave some improvements
in single layer though these were based upon the active Q mostly. I also have
looked at a bug for the first group where int_lbq is not properly defined and
will submit an interim patch for this while I look for a better solution.

In the meantime I think we should revert this.

The (Global PSNR, SSIM, PSNR-HVS) for the patch as is in my runs for
single layer vs a couple of days ago seem to be (-ve is better).

Low res 0.346, -1.475, 0.239
mid res  1.581, -1.300, 1.731 (worst result down by 30-40% in psnr)
hdres 0.665, -0.712, 1.043 (worst result down by 17-19% in psnr)
NF2k 0.927, 0.111, 1.3220 (Worst result down by 5-7% in psnr)

Change-Id: I55952b71b8cfc5a84484b3b659c5f8a530f3a755

6 years agoAdd MID_OVERLAY_UPDATE frame type
Jingning Han [Fri, 28 Sep 2018 04:01:08 +0000 (21:01 -0700)]
Add MID_OVERLAY_UPDATE frame type

Add a MID_OVERLAY_UPDATE abstract to support multi-layer
ARF-Overlay frame based approach. When setting the frame update
type to be USE_BUF_FRAME, the encoder will use show_existing_frame
to process the intermediate ARF frames. When setting the frame
update type to be MID_OVERLAY_UPDATE, the intermediate ARF frames
will go through an overlay frame for display.

Change-Id: Ia0c91452c09d39312ac22d855cdf681b7da851c5

6 years agoMerge "Remove deprecated variables from GF_GROUP structure"
Jingning Han [Fri, 28 Sep 2018 03:52:38 +0000 (03:52 +0000)]
Merge "Remove deprecated variables from GF_GROUP structure"

6 years agoMerge "Remove unused for-loop in multi-layer arf bit allocation"
Jingning Han [Fri, 28 Sep 2018 03:52:27 +0000 (03:52 +0000)]
Merge "Remove unused for-loop in multi-layer arf bit allocation"

6 years agoMerge "Adapt GOP size threshold to the allowed layer depth"
Jingning Han [Fri, 28 Sep 2018 03:52:18 +0000 (03:52 +0000)]
Merge "Adapt GOP size threshold to the allowed layer depth"

6 years agoRefactor gf_overlay frame type update
Jingning Han [Thu, 27 Sep 2018 23:27:43 +0000 (16:27 -0700)]
Refactor gf_overlay frame type update

Factor out common code.

Change-Id: Ia548842557d85ab692fe658acf97d61f008e9588

6 years agoFix a loophole in nonrd_pick_partition()
Hui Su [Thu, 27 Sep 2018 17:12:55 +0000 (10:12 -0700)]
Fix a loophole in nonrd_pick_partition()

In some rare cases, all possible paritions may be skipped during RD
search. The patch makes the encoder do rectangular partition search if
both partition-none and partition-split are not allowed.

Tested on the rtc and ytlivehr testsets with speed 5 and 7, no coding
stats changes were observed.

Change-Id: I8b6d8b62b6d2431be8e73317d113311c98f631d5

6 years agoRemove deprecated variables from GF_GROUP structure
Jingning Han [Thu, 27 Sep 2018 19:00:56 +0000 (12:00 -0700)]
Remove deprecated variables from GF_GROUP structure

Change-Id: I8c02216a369be6a51af9872f3ce05045038fc481

6 years agoRemove unused for-loop in multi-layer arf bit allocation
Jingning Han [Thu, 27 Sep 2018 17:49:44 +0000 (10:49 -0700)]
Remove unused for-loop in multi-layer arf bit allocation

The for-loop is not taking effect any more.

Change-Id: Ief2763990a6d4f487a5eb4972012d86379573d55

6 years agoAdapt GOP size threshold to the allowed layer depth
Jingning Han [Wed, 26 Sep 2018 23:34:16 +0000 (16:34 -0700)]
Adapt GOP size threshold to the allowed layer depth

Increase the total prediction error budget linearly with the
allowed ARF layer depth. This in general improves the compression
performance, but does hit corner cases on a few clips at very
low bit-rate range (corresponding to 26 - 28 dB range). To mitigate
such problem, we temporarily work around this problem by limiting
the first GOP size to be ~8 so as to not drain up the bit resource.

The overall compression performance improvements over the current
multi-layer ARF system in speed 0 are:

           overall PSNR      avg PSNR        SSIM
lowres     -0.47%            -0.13%         -1.51%
midres     -1.30%            -1.16%         -2.80%
hdres      -0.91%            -0.84%         -2.15%

Change-Id: Ia4880ab63e98e15a9db99aea6eabfd3d1da9270d

6 years agoMerge "add cfi sanitizer"
Johann Koenig [Thu, 27 Sep 2018 15:08:12 +0000 (15:08 +0000)]
Merge "add cfi sanitizer"

6 years agoAdd vpx_clear_system_state to new mv search func
Angie Chiang [Thu, 27 Sep 2018 01:06:05 +0000 (18:06 -0700)]
Add vpx_clear_system_state to new mv search func

Change-Id: I93308a0906165b8fa56b59e199c3de29b572f666

6 years agoChange mv color to red
Angie Chiang [Thu, 27 Sep 2018 01:04:40 +0000 (18:04 -0700)]
Change mv color to red

Change-Id: If85c36b44b41e8cf025a5e08d7055ec32a14d26b

6 years agoadd cfi sanitizer
Johann [Wed, 26 Sep 2018 23:52:54 +0000 (16:52 -0700)]
add cfi sanitizer

Change-Id: I4262bb631c248ad188f09a37d774d1759695b0d7

6 years agoCONFIG_WEBM_IO: include webmids.h
Johann [Wed, 26 Sep 2018 23:13:01 +0000 (16:13 -0700)]
CONFIG_WEBM_IO: include webmids.h

This was previously brought in with the examples. When building
with --disable-examples and --enable-codecs-srcs, this file
gets lost.

Change-Id: Id8bd67cb78c4f06647f34e85f425dfc701c640c0

6 years agoCall vp9_full_pixel_diamond_new in tpl mv search
Angie Chiang [Tue, 25 Sep 2018 23:58:17 +0000 (16:58 -0700)]
Call vp9_full_pixel_diamond_new in tpl mv search

The function is called in motion_compensated_prediction when
CONFIG_NON_GREEDY_MV is on.

The parameter lambda is used to adjust the importance of
mv consistency between neighbor blocks.

The lambda value is set to a random value for now, and still needs
to be tuned.

Change-Id: I918eb36a686eaa56b4009058f5f329e90c75870b

6 years agoMerge changes If96a8a1c,Iaf535fde,Icbde9880
Angie Chiang [Wed, 26 Sep 2018 19:06:29 +0000 (19:06 +0000)]
Merge changes If96a8a1c,Iaf535fde,Icbde9880

* changes:
  Add vp9_full_pixel_diamond_new
  Add vp9_refining_search_sad_new
  Add vp9_diamond_search_sad_new

6 years agoMerge "Use layer dependent gfu_boost factor"
Jingning Han [Wed, 26 Sep 2018 04:18:15 +0000 (04:18 +0000)]
Merge "Use layer dependent gfu_boost factor"