platform/upstream/libvpx.git
5 years agoMerge "Store a group level noise metric from first pass."
Paul Wilkins [Wed, 20 Mar 2019 11:40:46 +0000 (11:40 +0000)]
Merge "Store a group level noise metric from first pass."

5 years agoMerge "vp9-rtc: Adjustments for base layer in screen."
Marco Paniconi [Wed, 20 Mar 2019 03:23:51 +0000 (03:23 +0000)]
Merge "vp9-rtc: Adjustments for base layer in screen."

5 years agovp9-rtc: Adjustments for base layer in screen.
Marco Paniconi [Fri, 15 Mar 2019 16:13:45 +0000 (09:13 -0700)]
vp9-rtc: Adjustments for base layer in screen.

On scene/content changes for base layer of screen:
reduce 32x32 split threshold, bias rdcost for flat
blocks if sse_y is non-zero, and avoid early exit on
intra-check.

Reduce artifacts in scroll content.

Change-Id: I144357a61462351173af900e0b8a47dac4aad6ca

5 years agoMerge "Compute count_ls in vp9_kmeans"
Angie Chiang [Tue, 19 Mar 2019 18:41:46 +0000 (18:41 +0000)]
Merge "Compute count_ls in vp9_kmeans"

5 years agoNormalize the Wiener variance for ranking
Jingning Han [Mon, 18 Mar 2019 20:52:05 +0000 (13:52 -0700)]
Normalize the Wiener variance for ranking

Normalize the Wiener variance calculation for stack ranking. Remove
potential dependency on blocks at frame boundary.

Change-Id: I37e8634d714a1c34e99f9f7c4f1bb6ea81d56112

5 years agoAdd perceptual AQ mode control to RD search
Jingning Han [Mon, 18 Mar 2019 17:01:11 +0000 (10:01 -0700)]
Add perceptual AQ mode control to RD search

Make the rate-distortion optimization search support the perceptual
quality AQ mode.

Change-Id: Iee507ccfda90ac39b3623de705f187b1459e57e1

5 years agoMerge "Add rdmult adjustment for perceptual AQ mode"
Jingning Han [Mon, 18 Mar 2019 22:30:17 +0000 (22:30 +0000)]
Merge "Add rdmult adjustment for perceptual AQ mode"

5 years agoCompute count_ls in vp9_kmeans
Angie Chiang [Sat, 16 Mar 2019 01:30:38 +0000 (18:30 -0700)]
Compute count_ls in vp9_kmeans

Change-Id: Id5a83554f2037b03a3a7d86f83e47cac311fbe1d

5 years agoMerge "Fix race condition in wiener_var_rd_mult"
Angie Chiang [Mon, 18 Mar 2019 19:39:04 +0000 (19:39 +0000)]
Merge "Fix race condition in wiener_var_rd_mult"

5 years agoAdd rdmult adjustment for perceptual AQ mode
Jingning Han [Sat, 16 Mar 2019 00:02:43 +0000 (17:02 -0700)]
Add rdmult adjustment for perceptual AQ mode

Compute the Lagrangian multiplier for the adaptive quantization
settings.

Change-Id: Ieebe074d6f8163e7541264cb0ead22432273e338

5 years agoMerge "Improve key frame detection"
Jingning Han [Mon, 18 Mar 2019 14:11:18 +0000 (14:11 +0000)]
Merge "Improve key frame detection"

5 years agoImprove key frame detection
Paul Wilkins [Wed, 13 Mar 2019 16:20:23 +0000 (16:20 +0000)]
Improve key frame detection

Improve detection of key frames especially in low contrast
and low motion regions.

This patch adds a function to the key frame detection to test
for specific patterns in the intra signal in the first pass stats
that tend to be indicative of a key frame.

This is intended to compliment the existing code and finds some
scene cuts that were previously being misssed.

Tested on two clips where the existing code was struggling to
identify the key frames this patch improved detection as follows.

Film clip 1: (detected / actual)
Old (2/5) New (5/5)

Film Clip 2
Old 4/11 and one false +,  New 7/11 and 1 false +.

Short 4K Film Scene
Old 1/2 New 2/2

In testing so far I have not seen many extra false +'s though
it is likely that there will be some cases and this may need
further tweaking.

One one of our longer form film test reels ~20k frames)
the change picked up around 35 key frames that were
previously missed, mainly in darker scenes. There were a few
extra (or different) false positives cause by bright flashes or
explosions but these were cases where there was little
difference between inter and intra coding.

Awaiting testing on standard sets.

Change-Id: I1ff4a587e0a47667eb93b197f39b79a1130faeca

5 years agoMerge "Unify the rd_mult use in rd_pick_partition"
Jingning Han [Mon, 18 Mar 2019 04:03:38 +0000 (04:03 +0000)]
Merge "Unify the rd_mult use in rd_pick_partition"

5 years agoMerge "Setup AQ mode for perceptual quality"
Jingning Han [Mon, 18 Mar 2019 04:03:28 +0000 (04:03 +0000)]
Merge "Setup AQ mode for perceptual quality"

5 years agoFix race condition in wiener_var_rd_mult
Angie Chiang [Thu, 14 Mar 2019 19:28:25 +0000 (12:28 -0700)]
Fix race condition in wiener_var_rd_mult

Change-Id: Id5e9c2cbfe35809ac99a3bc9ba93cf462a6b1a34

5 years agoUnify the rd_mult use in rd_pick_partition
Jingning Han [Fri, 15 Mar 2019 23:23:43 +0000 (16:23 -0700)]
Unify the rd_mult use in rd_pick_partition

Abstract the control outside rd_pick_partition function. No need
to switch between x->cb_rdmult and the cpi->rd.RDMULT here.

Change-Id: Ia3104ebe15b5e59a4f29ffe6e8c7d718ecb998a8

5 years agoMerge "vp9-rtc: Some adjustments for low-resolns real-time"
Marco Paniconi [Fri, 15 Mar 2019 23:10:50 +0000 (23:10 +0000)]
Merge "vp9-rtc: Some adjustments for low-resolns real-time"

5 years agoSetup AQ mode for perceptual quality
Jingning Han [Fri, 15 Mar 2019 18:42:39 +0000 (11:42 -0700)]
Setup AQ mode for perceptual quality

Adapt the quantization to provide higher quality at smooth regions
where the Wiener variance is smaller.

Change-Id: Ibfd594d1de2ba34d2440d0aa7991b0fdac057ea5

5 years agoMerge "Refactor tile boundary condition for intra prediction"
Jingning Han [Fri, 15 Mar 2019 22:43:20 +0000 (22:43 +0000)]
Merge "Refactor tile boundary condition for intra prediction"

5 years agovp9-rtc: Some adjustments for low-resolns real-time
Marco Paniconi [Fri, 15 Mar 2019 00:27:58 +0000 (17:27 -0700)]
vp9-rtc: Some adjustments for low-resolns real-time

Force smooth_interpol filter for low resolutions at high Q,
avoid the loopfilter strength reduction for similar conditon,
and reduce thresh_motion for cyclic refresh turnoff.

Change-Id: I4e9121d1cdc7d1b04992c741dc4f0cec281592f7

5 years agoMerge "Setup frame segmentation for perceptual quality target"
Jingning Han [Fri, 15 Mar 2019 16:47:43 +0000 (16:47 +0000)]
Merge "Setup frame segmentation for perceptual quality target"

5 years agoset_analyzer_env.sh: improve cfi diagnostics
James Zern [Fri, 15 Mar 2019 06:07:23 +0000 (23:07 -0700)]
set_analyzer_env.sh: improve cfi diagnostics

use -fno-sanitize-trap=cfi to allow a diagnostic to be printed rather
than aborting with a SIGILL.

https://clang.llvm.org/docs/ControlFlowIntegrity.html#trapping-and-diagnostics

Change-Id: I4517cafe3c7b7305ba4845dbadf9fb679c686843

5 years agoSetup frame segmentation for perceptual quality target
Jingning Han [Fri, 15 Mar 2019 03:26:49 +0000 (20:26 -0700)]
Setup frame segmentation for perceptual quality target

Build the frame segmentation for perceptual quality target.

Change-Id: Icdea28aea02d84ce9c8011f63a3f97133f94a141

5 years agoMerge "Let vp9_kmeans provide boundary for each group"
Jingning Han [Fri, 15 Mar 2019 03:24:23 +0000 (03:24 +0000)]
Merge "Let vp9_kmeans provide boundary for each group"

5 years agoLet vp9_kmeans provide boundary for each group
Angie Chiang [Thu, 14 Mar 2019 22:06:45 +0000 (15:06 -0700)]
Let vp9_kmeans provide boundary for each group

boundary_ls[j] is the upper bound of data centered at ctr_ls[j]

Add vp9_get_group_idx() for computing group_idx

Change-Id: I3b1b488edf8acbfb63c469eeeba15f3e42b0a645

5 years agoMerge "Enclose macro arguments in parentheses"
Jerome Jiang [Thu, 14 Mar 2019 23:08:43 +0000 (23:08 +0000)]
Merge "Enclose macro arguments in parentheses"

5 years agoRefactor tile boundary condition for intra prediction
Jingning Han [Thu, 14 Mar 2019 15:28:44 +0000 (08:28 -0700)]
Refactor tile boundary condition for intra prediction

Explicitly compare the block location against tile coordinate to
decide if intra prediction boundary is available. No coding stats
will be changed by this refactoring.

Change-Id: I80b3a131366bb2c5f8ea53a139ed6e9b0b7ddb68

5 years agoEnclose macro arguments in parentheses
Jerome Jiang [Wed, 13 Mar 2019 23:21:43 +0000 (16:21 -0700)]
Enclose macro arguments in parentheses

BUG=webm:1606

Change-Id: I661485b860243c95b6450035dbac77b0dd4d9ff4

5 years agoMerge changes Ifc006890,I753920a6
Angie Chiang [Thu, 14 Mar 2019 17:22:09 +0000 (17:22 +0000)]
Merge changes Ifc006890,I753920a6

* changes:
  Apply kmeans on log of wiener_variance
  Add vp9_kmeans()

5 years agoMerge "vp9-svc: Reorganize the simulcast mode"
Marco Paniconi [Thu, 14 Mar 2019 04:51:46 +0000 (04:51 +0000)]
Merge "vp9-svc: Reorganize the simulcast mode"

5 years agoMerge "vp9-rtc: Avoid TM intra on big blocks for screen"
Marco Paniconi [Thu, 14 Mar 2019 01:59:49 +0000 (01:59 +0000)]
Merge "vp9-rtc: Avoid TM intra on big blocks for screen"

5 years agoApply kmeans on log of wiener_variance
Angie Chiang [Tue, 12 Mar 2019 22:50:04 +0000 (15:50 -0700)]
Apply kmeans on log of wiener_variance

Change-Id: Ifc0068902e036cd5d94fc5d39f0349a5875469b7

5 years agoAdd vp9_kmeans()
Angie Chiang [Tue, 12 Mar 2019 01:40:53 +0000 (18:40 -0700)]
Add vp9_kmeans()

Change-Id: I753920a65fb14a252617444f49feb40dc332d766

5 years agoMerge "Safe guard zero median filter outcome case"
Angie Chiang [Thu, 14 Mar 2019 00:18:04 +0000 (00:18 +0000)]
Merge "Safe guard zero median filter outcome case"

5 years agoMerge "Refactor speed feature settings"
Angie Chiang [Thu, 14 Mar 2019 00:13:47 +0000 (00:13 +0000)]
Merge "Refactor speed feature settings"

5 years agovp9-rtc: Avoid TM intra on big blocks for screen
Marco Paniconi [Wed, 13 Mar 2019 22:55:18 +0000 (15:55 -0700)]
vp9-rtc: Avoid TM intra on big blocks for screen

For screen content real-time mode: don't check TM
intra for bsize >= BLOCK_32X32.

Small speedup and avoid some artifacts seen
in scrolling screen content.

Change-Id: I72d7731eeb6ac9ee96e65af522c1a9aabb6dc4ef

5 years agovp9-svc: Reorganize the simulcast mode
Marco Paniconi [Wed, 13 Mar 2019 20:46:12 +0000 (13:46 -0700)]
vp9-svc: Reorganize the simulcast mode

Set the lst/gld/alt_fb_idx and refresh flags for
key frames at the start of encoding (in svc_set_params).
This then avoids new code/function in update_references()
and in copy_flags_ref_update().

Change-Id: Id3503c0c628540c20f11a540c118c4ee4cf04848

5 years agoMerge "vp9 simulcast: update buffer slot flag used in API."
Marco Paniconi [Wed, 13 Mar 2019 20:16:17 +0000 (20:16 +0000)]
Merge "vp9 simulcast: update buffer slot flag used in API."

5 years agoSafe guard zero median filter outcome case
Jingning Han [Wed, 13 Mar 2019 19:06:39 +0000 (12:06 -0700)]
Safe guard zero median filter outcome case

In case median filter returns 0 value, bypass the Wiener filter
stage. This avoids potential divided by 0 case.

In the same place use a temp variable to take the Wiener filter
output instead of returning to the coeff array.

Change-Id: I45f57c515b4062a0aa1f312eda852462cb655d8e

5 years agovp9 simulcast: update buffer slot flag used in API.
Jerome Jiang [Wed, 13 Mar 2019 16:13:35 +0000 (09:13 -0700)]
vp9 simulcast: update buffer slot flag used in API.

Also add #spatial_layers > 1 to simulcast_mode

Change-Id: I6234da81801176ac8678f9f5e1323f8b289cb663

5 years agoRefactor speed feature settings
Jingning Han [Wed, 13 Mar 2019 18:20:28 +0000 (11:20 -0700)]
Refactor speed feature settings

Make the speed feature setup functions take speed argument as
their input.

Change-Id: I542e8f6e04658e5d99e972380a31baab99a4fc23

5 years agoAdaptive multiplier based on the Wiener variance
Jingning Han [Wed, 6 Mar 2019 01:06:20 +0000 (17:06 -0800)]
Adaptive multiplier based on the Wiener variance

Adapt the Lagrangian multiplier based on the Wiener variance at
64x64 block level.

Change-Id: Ica195ed6f706daf6eee156d4b1a55bda65a92f7b

5 years agoMerge "Add normalization over frame level Wiener variance"
Jingning Han [Wed, 13 Mar 2019 16:18:09 +0000 (16:18 +0000)]
Merge "Add normalization over frame level Wiener variance"

5 years agoMerge "Set up Wiener variance for macroblocks in a frame"
Jingning Han [Wed, 13 Mar 2019 16:17:52 +0000 (16:17 +0000)]
Merge "Set up Wiener variance for macroblocks in a frame"

5 years agoAdd normalization over frame level Wiener variance
Jingning Han [Tue, 5 Mar 2019 20:14:40 +0000 (12:14 -0800)]
Add normalization over frame level Wiener variance

Normalize the block level Wiener variance based decision according
to the frame level Wiener variance.

Change-Id: Ic2bdf1b322a65661775541dd6c174ba71579461a

5 years agoSet up Wiener variance for macroblocks in a frame
Jingning Han [Tue, 5 Mar 2019 18:45:16 +0000 (10:45 -0800)]
Set up Wiener variance for macroblocks in a frame

This commit introduces a Wiener variance term. For each block in
the source frame, we first estimate its film grain noise level
using median filter in the transform domain. Each transform
coefficient is then processed using Wiener filter to account for
the impact on the energy level due to film grain noise. The result
leads to a second moment of the denoised signal.

Change-Id: Ibce7cb1b0cb8fe1aba807d95289712271d576948

5 years agoRemove highbd_temporal_filter_sse4.c when REAL_TIME_ONLY is on
chiyotsai [Tue, 12 Mar 2019 17:03:00 +0000 (10:03 -0700)]
Remove highbd_temporal_filter_sse4.c when REAL_TIME_ONLY is on

Change-Id: I3ca7442b10cbea4dd5dbabe147687d1cb3cce4d8

5 years agoMerge "vp9-decoder: use long int for buffer offset."
Jerome Jiang [Tue, 12 Mar 2019 00:55:34 +0000 (00:55 +0000)]
Merge "vp9-decoder: use long int for buffer offset."

5 years agoMerge "vp9: map speed > 9 to speed 9."
Jerome Jiang [Mon, 11 Mar 2019 22:45:47 +0000 (22:45 +0000)]
Merge "vp9: map speed > 9 to speed 9."

5 years agovp9-decoder: use long int for buffer offset.
Jerome Jiang [Mon, 11 Mar 2019 22:13:19 +0000 (15:13 -0700)]
vp9-decoder: use long int for buffer offset.

integer overflow when frame size too big.

BUG=webm:1603

Change-Id: Ifbb81b5fb6a2043d09d403e7c50ab8d7bf125dca

5 years agoStore a group level noise metric from first pass.
Paul Wilkins [Thu, 28 Feb 2019 13:19:11 +0000 (13:19 +0000)]
Store a group level noise metric from first pass.

Adds a variable to GF group structure to store a noise
energy metric for the current group that can be used
in things like film grain retention code.

Change-Id: I81b07630d3242f7928110f19a6c1ed4c86125f05

5 years agovp9-screen: Rework the mode skip logic for screen
Marco Paniconi [Sat, 9 Mar 2019 05:00:48 +0000 (21:00 -0800)]
vp9-screen: Rework the mode skip logic for screen

Don't force skip of zero-golden reference when
zero_temp_sad_source = 0, as it be may the
inter-layer reference. And remove the flatness conditon
when superblock is static.

Change-Id: I6b4b6eac0f6a2abc862c23d0e5467c7cf61995ef

5 years agoMerge "vp9-screen: Fix to screen wth layered encoding"
Marco Paniconi [Fri, 8 Mar 2019 19:38:43 +0000 (19:38 +0000)]
Merge "vp9-screen: Fix to screen wth layered encoding"

5 years agovp9-screen: Fix to screen wth layered encoding
Marco Paniconi [Fri, 8 Mar 2019 18:04:31 +0000 (10:04 -0800)]
vp9-screen: Fix to screen wth layered encoding

zero_temp_sad_source is only computed when
compute_source_sad_onepass and sf->use_source_sad are
on, which currently is only for the top layer of the
layered encoding. So qualify the usage of
zero_temp_sad_source on those flags.

This affects the quality/speed of the lower layers of
screen content mode when SVC (quality layers) are used.

Change-Id: I54167265a05a4b918ce015931375aa42d3e75cf5

5 years agoMerge changes Ib8e635fc,If868f67c,Ibfeae411
Angie Chiang [Fri, 8 Mar 2019 18:31:57 +0000 (18:31 +0000)]
Merge changes Ib8e635fc,If868f67c,Ibfeae411

* changes:
  Include mv_mode_arr info in dump_tpl_stats
  Include gf_frame_offset in dump_tpl_stats
  Refactor dump_tpl_stats

5 years agoMerge "Optimize SSE4_1 lowbd temporal filter implementation"
Chi Yo Tsai [Fri, 8 Mar 2019 17:46:08 +0000 (17:46 +0000)]
Merge "Optimize SSE4_1 lowbd temporal filter implementation"

5 years agoMerge "vp9 svc: add simulcast mode when inter-layer pred is off."
Jerome Jiang [Fri, 8 Mar 2019 03:41:44 +0000 (03:41 +0000)]
Merge "vp9 svc: add simulcast mode when inter-layer pred is off."

5 years agoOptimize SSE4_1 lowbd temporal filter implementation
chiyotsai [Mon, 4 Mar 2019 18:40:14 +0000 (10:40 -0800)]
Optimize SSE4_1 lowbd temporal filter implementation

 - Change some unaligned loads to aligned loads
 - Preload filter weights

BUG=webm:1591

Change-Id: I4e5e755e1fa5613d1c14191265bf80b0bfd0b75c

5 years agovp9 svc: add simulcast mode when inter-layer pred is off.
Jerome Jiang [Mon, 4 Mar 2019 23:51:22 +0000 (15:51 -0800)]
vp9 svc: add simulcast mode when inter-layer pred is off.

Force all upper spatial layers to be key frame if the base layer is key.
Mode only works for inter-layer pred=off and non-flexible mode.

Add flag to write out bitstream for each spatial layer in example
encoder.

Change-Id: I5db4543cf8697544ae49464f2157e692640d5256

5 years agoMerge "Add SSE4_1 highbd version of temporal filter"
Chi Yo Tsai [Thu, 7 Mar 2019 22:24:26 +0000 (22:24 +0000)]
Merge "Add SSE4_1 highbd version of temporal filter"

5 years agovp9-svc: Fix to sample encoder for 1 layer
Marco Paniconi [Thu, 7 Mar 2019 20:24:11 +0000 (12:24 -0800)]
vp9-svc: Fix to sample encoder for 1 layer

Fix to vp9_spatial_svc_encoder to run case of
1 spatial, 1 temporal layer.

Change-Id: I93675c3c4bd2c55cb1c971679588525a8e5b889d

5 years agovp9-rtc: Improve mode check on flat blocks in screen mode
Marco Paniconi [Thu, 7 Mar 2019 04:28:26 +0000 (20:28 -0800)]
vp9-rtc: Improve mode check on flat blocks in screen mode

For nonrd-pickmode in screen content mode: modify logic for
inter and intra mode check for spatially flat blocks.
Condition skip of non-zero/zero inter mode based on
zero_temp_sad_source, and force intra/DC check regardless.

Reduces artifacts in scrolling motion.

Change-Id: Iee75cd19d03296afeb649c5bce628806103769ae

5 years agoMerge "add -Wmissing-prototypes"
Johann Koenig [Wed, 6 Mar 2019 23:59:20 +0000 (23:59 +0000)]
Merge "add -Wmissing-prototypes"

5 years agovp9-denoiser: Bias to last for golden long term
Marco Paniconi [Wed, 6 Mar 2019 18:40:42 +0000 (10:40 -0800)]
vp9-denoiser: Bias to last for golden long term

If golden referene is selected as long-term reference,
bias the denoiser filter to use last reference.
Fixes visual artifact.

And reduce the thresh_svc_golden, which was used
to reduce the artifact occurrence.

Change-Id: I08f24160ca11bd8f5f70acaefe989d5f92988132

5 years agoInclude mv_mode_arr info in dump_tpl_stats
Angie Chiang [Wed, 6 Mar 2019 02:13:45 +0000 (18:13 -0800)]
Include mv_mode_arr info in dump_tpl_stats

Change-Id: Ib8e635fc7522d27ff7fdb62661597115e5bbc9b8

5 years agovp9: map speed > 9 to speed 9.
Jerome Jiang [Fri, 1 Mar 2019 17:50:50 +0000 (09:50 -0800)]
vp9: map speed > 9 to speed 9.

Report warning in example encoder.

Change-Id: Iec4cdffce9faa65241756fbdac498214c8b93cc1

5 years agoInclude gf_frame_offset in dump_tpl_stats
Angie Chiang [Tue, 5 Mar 2019 23:13:41 +0000 (15:13 -0800)]
Include gf_frame_offset in dump_tpl_stats

Change-Id: If868f67ccc1c73189bc4c139a807d7341e59b668

5 years agoMerge "vp9 svc example: use CONFIG_VP9_DECODER guarding decoding."
Jerome Jiang [Tue, 5 Mar 2019 22:50:39 +0000 (22:50 +0000)]
Merge "vp9 svc example: use CONFIG_VP9_DECODER guarding decoding."

5 years agoRefactor dump_tpl_stats
Angie Chiang [Tue, 5 Mar 2019 19:59:00 +0000 (11:59 -0800)]
Refactor dump_tpl_stats

Only dump stats when ref frame exists.
Dump ref_frame_idx

Change-Id: Ibfeae4111697b8ce97d7fe9b56c2487623615748

5 years agovp9 svc example: use CONFIG_VP9_DECODER guarding decoding.
Jerome Jiang [Tue, 5 Mar 2019 19:11:16 +0000 (11:11 -0800)]
vp9 svc example: use CONFIG_VP9_DECODER guarding decoding.

Change-Id: I91f2955f2936303c3e09e9b2dc60e32305ebae17

5 years agoAdd rd_diff_arr to store future blocks' rd diff
Angie Chiang [Wed, 13 Feb 2019 02:58:07 +0000 (18:58 -0800)]
Add rd_diff_arr to store future blocks' rd diff

Change-Id: Id996c1a427fb22a32b7a521cadf9f1523e5cf068

5 years agoMerge "Fix compile error when DUMP_TPL_STATS is 1"
Angie Chiang [Tue, 5 Mar 2019 18:51:42 +0000 (18:51 +0000)]
Merge "Fix compile error when DUMP_TPL_STATS is 1"

5 years agoadd -Wmissing-prototypes
Johann [Tue, 5 Mar 2019 00:55:10 +0000 (16:55 -0800)]
add -Wmissing-prototypes

clang treats -Wmissing-declarations differently than gcc. This
provides similar coverage for clang.

Fix vpx_clear_system_state() warning on 32bit builds:
  note: this declaration is not a prototype; add 'void' to make it a
  prototype for a zero-parameter function

Change-Id: I5a424bc38d47c0a3dc751d65c1efea5733907785

5 years agoFix compile error when DUMP_TPL_STATS is 1
Angie Chiang [Tue, 5 Mar 2019 01:19:22 +0000 (17:19 -0800)]
Fix compile error when DUMP_TPL_STATS is 1

Change-Id: Ie859c2c8e377b6b0982293833ddc657855b18091

5 years agovp9-rtc: Speed feature changes to speed 9
Marco Paniconi [Mon, 4 Mar 2019 19:28:52 +0000 (11:28 -0800)]
vp9-rtc: Speed feature changes to speed 9

Compared to speed 8 for low resolutions:
quality loss is ~8-10%, and encoder fps is ~15%
higher on ARM for 1 thread.

Change-Id: I4f12390d2917a5c4045114ef81a05edb2a3b9c96

5 years agoAdd SSE4_1 highbd version of temporal filter
chiyotsai [Fri, 1 Mar 2019 01:10:54 +0000 (17:10 -0800)]
Add SSE4_1 highbd version of temporal filter

The SSE4_1 version of temporal filter does not distinguish between bd 10
and bd 12.

Speed up:
 Function Level:
       | !SS_X |  SS_X
 !SS_Y | 6.44X | 6.37X
  SS_Y | 6.56X | 6.63X

 Video Level:
  2.5% speed up on basketballpass_240p over 150 frames on speed 1,
  bitdepth 10, auto-alt-ref=1

BUG=webm:1591

Change-Id: I49aa2ed4acfe80a8d627038322de66cbe691296e

5 years agovp9-rtc: Adjust force split logic for screen mode
Marco Paniconi [Sat, 2 Mar 2019 06:03:10 +0000 (22:03 -0800)]
vp9-rtc: Adjust force split logic for screen mode

In variance partition for screen content mode:
force split to 32x32 if source pre-process detects
non-zero temporal sad.
Reduce artifacts in scroll motion content.

Change-Id: Ifbe2b500eb03ae853faa28a045ce4f1185443939

5 years agovp9-rtc: Fix for scroll motion for rtc
Marco Paniconi [Fri, 1 Mar 2019 19:18:36 +0000 (11:18 -0800)]
vp9-rtc: Fix for scroll motion for rtc

Increase threshold to detect frames with high
num of motion blocks, and fix conditions to detect
horiz & vert scroll and avoid split below 16x16 blocks
in variance partition.

Reduces artifacts in horizonal scroll screenshare testing.

Change-Id: Icf5b87f69971d7331c660fc2727c9246c6cbf8b5

5 years agoMerge "Strengthened film grain setting."
Paul Wilkins [Fri, 1 Mar 2019 13:42:48 +0000 (13:42 +0000)]
Merge "Strengthened film grain setting."

5 years agoMerge "Fix RD multiplier bug impacting AQ1."
Paul Wilkins [Fri, 1 Mar 2019 13:42:11 +0000 (13:42 +0000)]
Merge "Fix RD multiplier bug impacting AQ1."

5 years agovp9-rtc: Set init noise level based on resoln
Marco Paniconi [Fri, 1 Mar 2019 03:58:08 +0000 (19:58 -0800)]
vp9-rtc: Set init noise level based on resoln

Avoid the kLow init level for lower resolns.

Change-Id: I1c9968a6891668b5887e35695f2a44158a4b3a18

5 years agovp9-rtc: Reduce thresholds for skip golden
Marco Paniconi [Fri, 1 Mar 2019 01:53:18 +0000 (17:53 -0800)]
vp9-rtc: Reduce thresholds for skip golden

For nonrd-pickmode CBR mode: reduce the skip
golden ref thresholds, to reduce some psnr
regression in some clips, while still effectively
reducing flashing block artifact occurrence.

Change-Id: I468dcf5354411aeb54ac3ef56c6fb73267d93fde

5 years agoMerge "Set segment ID from ROI map if enabled."
Jerome Jiang [Thu, 28 Feb 2019 19:00:25 +0000 (19:00 +0000)]
Merge "Set segment ID from ROI map if enabled."

5 years agoSet segment ID from ROI map if enabled.
Jerome Jiang [Tue, 26 Feb 2019 19:01:23 +0000 (11:01 -0800)]
Set segment ID from ROI map if enabled.

Segment ID was overwritten.

Change-Id: I99603dce02a94f3a9076d1743b108a81289ad0e5

5 years agoMerge "vp9-rtc: Change init level of denoiser & noise level"
Marco Paniconi [Thu, 28 Feb 2019 17:21:24 +0000 (17:21 +0000)]
Merge "vp9-rtc: Change init level of denoiser & noise level"

5 years agoStrengthened film grain setting.
Paul Wilkins [Fri, 7 Dec 2018 17:46:34 +0000 (17:46 +0000)]
Strengthened film grain setting.

This patch increases the preference for maintaining similar variance
between source and reconstruction and thus helps improve film grain
retention.

The changes are only active when film mode is selected

Change-Id: I3bc082dca678a0f32ec00f30f5d90d0f95ca2381

5 years agoFix RD multiplier bug impacting AQ1.
paulwilkins [Tue, 26 Feb 2019 12:34:07 +0000 (12:34 +0000)]
Fix RD multiplier bug impacting AQ1.

Change to the default RD multiplier computation in set_segment_rdmult()

The default here is wrong as for modes like AQ 1 setting the rdmult based on the
segment ID for bsize will tend to result in the RD loop favoring partition sizes where
the resulting segment assignment has the lowest Q, as these partition sizes will be
then evaluated with a lower value of rdmult. For a valid rd comparison between
partition sizes within a single SB64 we need to use the same value of rdmult.

This change fixes an observed issue with AQ 1 where almost all the blocks were being
assigned to segment 0.

Change-Id: Ibf87e8ca60bca45b8fee866ac6fd53feae11dab4

5 years agoMerge "Change to direction of scan for GF only group boost."
Paul Wilkins [Thu, 28 Feb 2019 12:58:20 +0000 (12:58 +0000)]
Merge "Change to direction of scan for GF only group boost."

5 years agovp9-rtc: Change init level of denoiser & noise level
Marco Paniconi [Thu, 28 Feb 2019 00:19:33 +0000 (16:19 -0800)]
vp9-rtc: Change init level of denoiser & noise level

Change to init/reset level of the denoiser from
kDenLow to kDenMedium, and the init noise level to kLow.
This affects the denoiser level during the initialization
stage of the noise estimation.

Improves denoising for noisy content during init stage of
noise estimation, with little effect for low noise/clean content.

Change-Id: I247a17b0f01f646fc2e91a4a070ad69bdb788cae

5 years agoMerge "vp9-rtc: Add cyclic_refresh condition to segment reset"
Marco Paniconi [Wed, 27 Feb 2019 22:45:56 +0000 (22:45 +0000)]
Merge "vp9-rtc: Add cyclic_refresh condition to segment reset"

5 years agoMerge "vp9: Remove unused function in cyclic refresh"
Marco Paniconi [Wed, 27 Feb 2019 22:08:09 +0000 (22:08 +0000)]
Merge "vp9: Remove unused function in cyclic refresh"

5 years agovp9: Remove unused function in cyclic refresh
Marco Paniconi [Wed, 27 Feb 2019 20:06:45 +0000 (12:06 -0800)]
vp9: Remove unused function in cyclic refresh

Change-Id: I4b1d02c661ccbad2a1e346df623e78334a3a3a39

5 years agovp9-rtc: Add cyclic_refresh condition to segment reset
Marco Paniconi [Wed, 27 Feb 2019 19:56:53 +0000 (11:56 -0800)]
vp9-rtc: Add cyclic_refresh condition to segment reset

In non-rd pickmode for screen content:
this logic to reset segment should only be for cyclic_refresh
mode on, so add that condition explicitly.

There may be other uses of segments, like ROI, so we
should condition this reset logic on cyclic_refresh,
as it was intended for that mode only.

Change-Id: I954e6cee968fbca35b34286c4a7ca2531c8e9823

5 years agovp9-rtc: Modify skip golden mode check for 1 layer
Marco Paniconi [Wed, 27 Feb 2019 17:28:43 +0000 (09:28 -0800)]
vp9-rtc: Modify skip golden mode check for 1 layer

For real-time CBR mode: golden reference mode testing is
skipped under certain conditons based on sse of zero-last mode.
This was done for svc mode. Here we add similar condition
for non-svc/1 layer encoding.

Reduces flashing block artifacts that can occur in background
areas with noise.

Change-Id: I93f71ea9507af8c9153fc6c0ba7dcc7a0fa8810d

5 years agoMerge "vp9-rtc: Fix to Q clamp in adjust_q_cbr"
Marco Paniconi [Mon, 25 Feb 2019 04:43:13 +0000 (04:43 +0000)]
Merge "vp9-rtc: Fix to Q clamp in adjust_q_cbr"

5 years agovp9-rtc: Fix to Q clamp in adjust_q_cbr
Marco Paniconi [Mon, 25 Feb 2019 03:02:14 +0000 (19:02 -0800)]
vp9-rtc: Fix to Q clamp in adjust_q_cbr

For CBR mode: clamp the Q to worst/best quality in
adjust_q_cbr().

Under certain conditions, when the worst/best quality is
suddenly changed by a large amount mid-stream, the Q
adjustment from the final Q from adjust_q_cbr may not respect
the worst/best qualiy limits.

Change-Id: I3776129325d89882d422b22e6247d44660dd90ac

5 years agovp9-rtc: Decrease noise estimation thresh for kLow
Marco Paniconi [Sat, 23 Feb 2019 04:02:27 +0000 (20:02 -0800)]
vp9-rtc: Decrease noise estimation thresh for kLow

Increases denoising for noisy content.

Change-Id: Iff8573f8dca7b177ef53ee6682d691e6cd8e2740

5 years agoFix 32-bit unsigned integer overflow in block_variance
kyslov [Fri, 22 Feb 2019 22:15:22 +0000 (14:15 -0800)]
Fix 32-bit unsigned integer overflow in block_variance

When compiled for High Bitdepth SSE can overflow 32-bit unsigned
integer, so change it to 64 bit. Also fixing unit/int mismatch of sum

BUG=webm:1601

Change-Id: Ib576ed1d5579b0c2b4661058aa64119560b652bf

5 years agovp9-rtc: Adjust thresholds for noise estimation.
Marco Paniconi [Fri, 22 Feb 2019 03:32:07 +0000 (19:32 -0800)]
vp9-rtc: Adjust thresholds for noise estimation.

Lower the frame_motion and consec_zeromv thresholds,
this make the noise estimation and denoiser have more effect
on noisy clips.

Change-Id: I49cf5d78a04d00fcf8538bee6f3b2980efe6b3b5

5 years agoMerge "vp9: Enable ml based partition for speed>=8 low res."
Jerome Jiang [Wed, 20 Feb 2019 23:03:13 +0000 (23:03 +0000)]
Merge "vp9: Enable ml based partition for speed>=8 low res."