]> granicus.if.org Git - libvpx/log
libvpx
7 years agosub pel avg variance neon: add neon optimizations
Johann [Wed, 3 May 2017 19:28:32 +0000 (12:28 -0700)]
sub pel avg variance neon: add neon optimizations

These are missing an optimized version of vpx_comp_avg_pred

BUG=webm:1423

Change-Id: I31fa6ef842e98f7ff3ea079ffed51ae33178e2ed

7 years agosub pel variance neon: normalize variable names
Johann [Wed, 3 May 2017 19:12:44 +0000 (12:12 -0700)]
sub pel variance neon: normalize variable names

match vpx_dsp/variance.c variable names

Change-Id: I228c6f296c183af147b079b7c8bcdf97bd09cf3a

7 years agoMerge "Add vpx_highbd_idct{4x4,8x8,16x16}_1_add_sse2"
Linfeng Zhang [Mon, 22 May 2017 20:58:17 +0000 (20:58 +0000)]
Merge "Add vpx_highbd_idct{4x4,8x8,16x16}_1_add_sse2"

7 years agovariance neon: assert overflow conditions
Johann [Thu, 4 May 2017 16:07:28 +0000 (09:07 -0700)]
variance neon: assert overflow conditions

Change-Id: I12faca82d062eb33dc48dfeb39739b25112316cd

7 years agoAdd vpx_highbd_idct{4x4,8x8,16x16}_1_add_sse2
Linfeng Zhang [Wed, 17 May 2017 19:37:23 +0000 (12:37 -0700)]
Add vpx_highbd_idct{4x4,8x8,16x16}_1_add_sse2

BUG=webm:1412

Change-Id: Ia338a6057d36f9ed7eaa9cbd4dfbf0c3cbdc6468

7 years agoneon variance: special case 4x
Johann [Mon, 15 May 2017 23:30:00 +0000 (16:30 -0700)]
neon variance: special case 4x

The sub pixel variance uses a temp buffer which guarantees width ==
stride. Take advantage of this with the 4x and avoid the very costly
lane loads.

Change-Id: Ia0c97eb8c29dc8dfa6e51a29dff9b75b3c6726f1

7 years agoMerge changes Ib8dd96f7,Ie9854b77
Johann Koenig [Mon, 22 May 2017 17:48:32 +0000 (17:48 +0000)]
Merge changes Ib8dd96f7,Ie9854b77

* changes:
  neon variance: process 4x blocks
  use memcpy for unaligned neon stores

7 years agoMerge "vp9: Adjustments to cyclic refresh for high motion."
Marco Paniconi [Mon, 22 May 2017 06:27:30 +0000 (06:27 +0000)]
Merge "vp9: Adjustments to cyclic refresh for high motion."

7 years agovp9: Adjustments to cyclic refresh for high motion.
Marco [Mon, 22 May 2017 05:15:28 +0000 (22:15 -0700)]
vp9: Adjustments to cyclic refresh for high motion.

For aq-mode=3: refactor the condition for turning off
the refresh. Add some adjustments for high motion content.

No/little change in RTC metrics, only affects high motion case.

Change-Id: I7da8eabfb0e61db014be4562806f72ee5ef4a43b

7 years agovp9: Speed >= 8: Modify condition for low-resoln.
Marco [Mon, 22 May 2017 05:12:38 +0000 (22:12 -0700)]
vp9: Speed >= 8: Modify condition for low-resoln.

No change on RTC metrics.

Change-Id: I5abc573cb56572188d900645d13ba479f55a1ea0

7 years agoMerge "neon 4 byte helper functions"
Johann Koenig [Fri, 19 May 2017 17:11:30 +0000 (17:11 +0000)]
Merge "neon 4 byte helper functions"

7 years agoMerge "neon fdct: 4x4 implementation"
Johann Koenig [Fri, 19 May 2017 17:08:57 +0000 (17:08 +0000)]
Merge "neon fdct: 4x4 implementation"

7 years agoMerge "Changes to modified error."
Paul Wilkins [Fri, 19 May 2017 12:24:32 +0000 (12:24 +0000)]
Merge "Changes to modified error."

7 years agovp9: SVC: Modify condition to allow for copy partition.
Marco [Thu, 18 May 2017 21:12:24 +0000 (14:12 -0700)]
vp9: SVC: Modify condition to allow for copy partition.

When temporal layers are used, only allow for copy partition
on the top temporal enhancement layer frames.

Change-Id: I5472abdc0f9f6c8dafa75a7a84c615e08ae22af8

7 years agoMerge "vp9: Make copy partition work for SVC and dynamic resize."
Jerome Jiang [Thu, 18 May 2017 19:37:29 +0000 (19:37 +0000)]
Merge "vp9: Make copy partition work for SVC and dynamic resize."

7 years agovp9: Make copy partition work for SVC and dynamic resize.
Marco [Tue, 16 May 2017 00:14:11 +0000 (17:14 -0700)]
vp9: Make copy partition work for SVC and dynamic resize.

Only affects speed 8.

Make changes to copy partition to fix a bug in setting microblock
offset. Avg PSNR shows 0.02% gain on rtc_derf and 0.08% loss on rtc.

Change-Id: I61c3e5914dde645331344388e7437e5638acd4f3

7 years agoChanges to modified error.
paulwilkins [Wed, 3 Feb 2016 15:37:32 +0000 (15:37 +0000)]
Changes to modified error.

The modified error was a derivative of the "coded_error"
that was used to allocate bits between different frames on the
assumption that the allocation should be linear in terms of this
modified error.  I.e. a frame with double the modified error score
should all things being equal get double the number of bits. The
code also included upper and lower caps derived from input
VBR parameters.

This patch improves the initial calculation of the clip mean error
(now called "mean_mod_score" as it is no longer a prediction error)
used as the midpoint for the rate distribution function and normalizes
the output "modified scores" scores such that 1.0 indicates a frame
in the middle of the distribution.  The VBR upper and lower caps are
then applied directly to a  frame's normalized score.

This refactoring is intended to make it easier to drop in alternative
distribution functions or to base the rate allocation on a corpus wide
midpoint (rather than the clip mean).

Change-Id: I4fb09de637e93566bfc4e022b2e7d04660817195

7 years agoneon variance: process 4x blocks
Johann [Tue, 2 May 2017 14:31:05 +0000 (07:31 -0700)]
neon variance: process 4x blocks

Continue processing sets of 16 values. Plenty of improvement for 4x8
(doubles the speed) but only about 30% for 4x4.

BUG=webm:1422

Change-Id: Ib8dd96f75d474f0348800271d11e58356b620905

7 years agouse memcpy for unaligned neon stores
Johann [Sat, 13 May 2017 01:14:27 +0000 (18:14 -0700)]
use memcpy for unaligned neon stores

Advise the compiler that the store is eventually going to a uint8_t
buffer. This helps avoid getting alignment hints which would cause the
memory access to fail.

Originally added as a workaround for clang:
https://bugs.llvm.org//show_bug.cgi?id=24421

Change-Id: Ie9854b777cfb2f4baaee66764f0e51dcb094d51e

7 years agoMerge "vp9: Modify ChangingDropFrameThresh unittest."
Marco Paniconi [Wed, 17 May 2017 18:42:51 +0000 (18:42 +0000)]
Merge "vp9: Modify ChangingDropFrameThresh unittest."

7 years agoMerge "Update partial idct testing code"
Linfeng Zhang [Wed, 17 May 2017 17:53:02 +0000 (17:53 +0000)]
Merge "Update partial idct testing code"

7 years agoMerge "Experiment. Store first pass errors as per MB values."
Yaowu Xu [Wed, 17 May 2017 17:38:15 +0000 (17:38 +0000)]
Merge "Experiment. Store first pass errors as per MB values."

7 years agovp9: Modify ChangingDropFrameThresh unittest.
Marco [Wed, 17 May 2017 16:36:18 +0000 (09:36 -0700)]
vp9: Modify ChangingDropFrameThresh unittest.

Add another (lower) bitrate to the test, to cover
frame drop behavior at low bitrate range.

Change-Id: Iaad003974159daf3d2d65ef3a6575a3e72e498d6

7 years agoUpdate partial idct testing code
Linfeng Zhang [Tue, 16 May 2017 23:28:18 +0000 (16:28 -0700)]
Update partial idct testing code

Add PartialIDctTest::PrintDiff() to help debugging.
In RunQuantCheck, try all combinations of +/-mask_ input for 4x4 idct.
Update PartialIDctTest::InitInput().

Change-Id: I13fd163954a4c1a3a6cfeb5e4a4d3d0e7ff901f4

7 years agoneon fdct: 4x4 implementation
Johann [Fri, 12 May 2017 18:05:03 +0000 (11:05 -0700)]
neon fdct: 4x4 implementation

Approximately twice as fast as C implementation.

BUG=webm:1424

Change-Id: I3c0307fb08ddc23df42545cd089a78e2ed5c9d3f

7 years agoExperiment. Store first pass errors as per MB values.
paulwilkins [Wed, 5 Apr 2017 09:35:54 +0000 (10:35 +0100)]
Experiment. Store first pass errors as per MB values.

Most existing first pass stats are stored in a form normalized to a
macro-block scale. However the error scores for intra / inter etc were
stored as frame level values but mainly used as MB level values.

This change  fixes that. Normalized per MB values make comparisons
between different formats easier and in any case this is usually what is
wanted.

An change in results should be limited to slight differences in rounding.

*** Change after patch 8 +2 requiring new approval.

Final pre-submit testing showed  one 4K clip with above expected change.
Investigation showed this was due to a value used to test for ultra low intra
complexity in key frame detection. This was a per frame not per MB value but
also did not scale with frame size. Replacement with a small per MB value
(based on original per frame value and cif frame size) resolved the KF detection
problem.

Also converted kf_group_error_left to a double in line with other error values
to reduce rounding problems in KF group bit allocation

All clips and sets now show nominal (or 0) change as expected.

Change-Id: Ic2d57980398c99ade2b7380e3e6ca6b32186901f

7 years agoAdd transpose_32bit_4x4() and rename transpose_4x4() for vpx_dsp/x86
Linfeng Zhang [Tue, 16 May 2017 23:10:43 +0000 (16:10 -0700)]
Add transpose_32bit_4x4() and rename transpose_4x4() for vpx_dsp/x86

Change-Id: Ib57377f6cf6573c04720d3cc5dea4285362b4220

7 years agoMerge "Revert "Add visibility="protected" attribute for global variables referenced...
Johann Koenig [Tue, 16 May 2017 23:39:37 +0000 (23:39 +0000)]
Merge "Revert "Add visibility="protected" attribute for global variables referenced in asm files.""

7 years agoRevert "Add visibility="protected" attribute for global variables referenced in asm...
Johann Koenig [Tue, 16 May 2017 22:52:15 +0000 (22:52 +0000)]
Revert "Add visibility="protected" attribute for global variables referenced in asm files."

This reverts commit 0d88e15454b632d92404dd6a7181c58d9985e2a2.

Reason for revert: chromium builds are failing to locate vpx_rv during dlopen()

dlopen failed: cannot locate symbol "vpx_rv" referenced by "libstandalonelibwebviewchromium.so"

Original change's description:
> Add visibility="protected" attribute for global variables referenced in asm files.
>
> During aosp builds with binutils-2.27, we're seeing linker error
> messages of this form:
> libvpx.a(subpixel_mmx.o): relocation R_386_GOTOFF against preemptible
> symbol vp8_bilinear_filters_x86_8 cannot be used when making a shared
> object
>
> subpixel_mmx.o is assembled from "vp8/common/x86/subpixel_mmx.asm".
> Other messages refer to symbol references from deblock_sse2.o and
> subpixel_sse2.o, also assembled from asm files.
>
> This change marks such symbols as having "protected" visibility. This
> satisfies the linker as the symbols are not preemptible from outside
> the shared library now, which I think is the original intent anyway.
>
> Change-Id: I2817f7a5f43041533d65ebf41aefd63f8581a452
>

TBR=jzern@google.com,johannkoenig@google.com,rahulchaudhry@chromium.org,builds@webmproject.org

Change-Id: I0c2ea375aa7ef5fda15b9d9e23e654bb315c941b

7 years agoMerge "Revert "Revert "vp8: Real-time mode: reduce mode_check_freq thresh for speed...
Marco Paniconi [Tue, 16 May 2017 22:50:28 +0000 (22:50 +0000)]
Merge "Revert "Revert "vp8: Real-time mode: reduce mode_check_freq thresh for speed 10."""

7 years agoRevert "Revert "vp8: Real-time mode: reduce mode_check_freq thresh for speed 10.""
Marco Paniconi [Tue, 16 May 2017 22:50:19 +0000 (22:50 +0000)]
Revert "Revert "vp8: Real-time mode: reduce mode_check_freq thresh for speed 10.""

This reverts commit 3704807805895850671261fa4470f1ce41dd2ac9.

Reason for revert: <INSERT REASONING HERE>
Does not look to be the cause of the test failures.

Original change's description:
> Revert "vp8: Real-time mode: reduce mode_check_freq thresh for speed 10."
>
> This reverts commit 4a7424adba7a65766a92635dc67b6e7d94646693.
>
> Reason for revert: <INSERT REASONING HERE>
> Possibly causing test failures in roll into chromium.
>
> Original change's description:
> > vp8: Real-time mode: reduce mode_check_freq thresh for speed 10.
> >
> > Reduces quality regression at speed 10 for real-time mode.
> >
> > Change-Id: I9f624bea9ca262dab32ce9de7d6d91175d6becc8
> >
>
> TBR=marpan@google.com,builds@webmproject.org,jianj@google.com
> # Not skipping CQ checks because original CL landed > 1 day ago.
>
> Change-Id: I1defcb74e78a5a3bd29b7d1b21a96a79fa26a457
>

TBR=marpan@google.com,builds@webmproject.org,jianj@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I13d86a2a68b8aa8c0c7465e6e58cff0e00bc7862

7 years agoMerge "Revert "vp8: Real-time mode: reduce mode_check_freq thresh for speed 10.""
Marco Paniconi [Tue, 16 May 2017 22:48:38 +0000 (22:48 +0000)]
Merge "Revert "vp8: Real-time mode: reduce mode_check_freq thresh for speed 10.""

7 years agoRevert "vp8: Real-time mode: reduce mode_check_freq thresh for speed 10."
Marco Paniconi [Tue, 16 May 2017 22:48:13 +0000 (22:48 +0000)]
Revert "vp8: Real-time mode: reduce mode_check_freq thresh for speed 10."

This reverts commit 4a7424adba7a65766a92635dc67b6e7d94646693.

Reason for revert: <INSERT REASONING HERE>
Possibly causing test failures in roll into chromium.

Original change's description:
> vp8: Real-time mode: reduce mode_check_freq thresh for speed 10.
>
> Reduces quality regression at speed 10 for real-time mode.
>
> Change-Id: I9f624bea9ca262dab32ce9de7d6d91175d6becc8
>

TBR=marpan@google.com,builds@webmproject.org,jianj@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: I1defcb74e78a5a3bd29b7d1b21a96a79fa26a457

7 years agoMerge "'protected' visibility unsupported on macho"
Johann Koenig [Mon, 15 May 2017 21:21:45 +0000 (21:21 +0000)]
Merge "'protected' visibility unsupported on macho"

7 years agoneon 4 byte helper functions
Johann [Sat, 13 May 2017 01:16:30 +0000 (18:16 -0700)]
neon 4 byte helper functions

When data is guaranteed to be aligned, use helper functions which
assert that requirement.

Change-Id: Ic4b188593aea0799d5bd8eda64f9858a1592a2a3

7 years ago'protected' visibility unsupported on macho
Johann [Mon, 15 May 2017 17:39:44 +0000 (10:39 -0700)]
'protected' visibility unsupported on macho

Mac builds must not specify 'protected' visibility. Then only support
'default' and 'hidden'.

https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html

Change-Id: I94eccfaa29af0ddcc4a5c1c0e14cf63ef7146462

7 years agoMerge "move neon load/stores to a new file"
Johann Koenig [Mon, 15 May 2017 18:15:27 +0000 (18:15 +0000)]
Merge "move neon load/stores to a new file"

7 years agomove neon load/stores to a new file
Johann [Sat, 13 May 2017 01:11:31 +0000 (18:11 -0700)]
move neon load/stores to a new file

Move the tran_low_t helper functions to a new file. Additional
load/store functions will be added here.

Change-Id: I52bf652c344c585ea2f3e1230886be93f5caefc3

7 years agovp8: Real-time mode: reduce mode_check_freq thresh for speed 10.
Marco [Fri, 12 May 2017 18:01:33 +0000 (11:01 -0700)]
vp8: Real-time mode: reduce mode_check_freq thresh for speed 10.

Reduces quality regression at speed 10 for real-time mode.

Change-Id: I9f624bea9ca262dab32ce9de7d6d91175d6becc8

7 years agoMerge "vp9: speed 8: Fix seg fault in partition copy when drop frames."
Jerome Jiang [Sat, 13 May 2017 03:20:48 +0000 (03:20 +0000)]
Merge "vp9: speed 8: Fix seg fault in partition copy when drop frames."

7 years agoMerge "Speed up encoding by skipping altref recode"
Cheng Chen [Sat, 13 May 2017 01:29:58 +0000 (01:29 +0000)]
Merge "Speed up encoding by skipping altref recode"

7 years agovp9: speed 8: Fix seg fault in partition copy when drop frames.
Jerome Jiang [Fri, 12 May 2017 22:57:23 +0000 (15:57 -0700)]
vp9: speed 8: Fix seg fault in partition copy when drop frames.

BUG=webm:1433

Change-Id: I4f3984ef28660d3218d48007d7c977bdbdaf8af6

7 years agoAdd visibility="protected" attribute for global variables referenced in asm files.
Rahul Chaudhry [Tue, 9 May 2017 19:00:58 +0000 (12:00 -0700)]
Add visibility="protected" attribute for global variables referenced in asm files.

During aosp builds with binutils-2.27, we're seeing linker error
messages of this form:
libvpx.a(subpixel_mmx.o): relocation R_386_GOTOFF against preemptible
symbol vp8_bilinear_filters_x86_8 cannot be used when making a shared
object

subpixel_mmx.o is assembled from "vp8/common/x86/subpixel_mmx.asm".
Other messages refer to symbol references from deblock_sse2.o and
subpixel_sse2.o, also assembled from asm files.

This change marks such symbols as having "protected" visibility. This
satisfies the linker as the symbols are not preemptible from outside
the shared library now, which I think is the original intent anyway.

Change-Id: I2817f7a5f43041533d65ebf41aefd63f8581a452

7 years agoMerge "vp9: Use INTERP_FILTER for filter_type in vp9_rtcd_defs.pl"
Marco Paniconi [Fri, 12 May 2017 17:02:49 +0000 (17:02 +0000)]
Merge "vp9: Use INTERP_FILTER for filter_type in vp9_rtcd_defs.pl"

7 years agoMerge changes I1b54a7a5,I3028bdad,I59788cd9
James Zern [Fri, 12 May 2017 15:24:59 +0000 (15:24 +0000)]
Merge changes I1b54a7a5,I3028bdad,I59788cd9

* changes:
  ppc: Add get_mb_ss_vsx
  ppc: Add get4x4sse_cs_vsx
  ppc: Add comp_avg_pred_vsx

7 years agoppc: Add get_mb_ss_vsx
Luca Barbato [Thu, 11 May 2017 03:58:34 +0000 (03:58 +0000)]
ppc: Add get_mb_ss_vsx

Change-Id: I1b54a7a5bb642e4b836d786ea1ae506eed025e3f

7 years agoppc: Add get4x4sse_cs_vsx
Luca Barbato [Thu, 11 May 2017 03:16:45 +0000 (05:16 +0200)]
ppc: Add get4x4sse_cs_vsx

Change-Id: I3028bdadf653665d18e781d28e9625f62804b3d8

7 years agoppc: Add comp_avg_pred_vsx
Luca Barbato [Thu, 11 May 2017 01:07:09 +0000 (01:07 +0000)]
ppc: Add comp_avg_pred_vsx

Change-Id: I59788cd98231e707239c2ad95ae54f67cfe24e10

7 years agoppc: Add vpx_sad64x32/64_vsx
Alexandra Hájková [Mon, 8 May 2017 12:10:04 +0000 (12:10 +0000)]
ppc: Add vpx_sad64x32/64_vsx

Change-Id: I84e3705fa52f75cb91b2bab4abf5cc77585ee3e2

7 years agoppc Add vpx_sad32x16/32/64_vsx
Alexandra Hájková [Mon, 8 May 2017 11:56:17 +0000 (11:56 +0000)]
ppc Add vpx_sad32x16/32/64_vsx

Change-Id: I3c4f9d595275669580413a71b3c3c810e7ddcacd

7 years agoMerge "ppc: Add vpx_sad16x8/16/32_vsx"
James Zern [Fri, 12 May 2017 13:33:50 +0000 (13:33 +0000)]
Merge "ppc: Add vpx_sad16x8/16/32_vsx"

7 years agoMerge "vp9: Adjust speed features for speed 8 at low resoln."
Marco Paniconi [Fri, 12 May 2017 00:35:39 +0000 (00:35 +0000)]
Merge "vp9: Adjust speed features for speed 8 at low resoln."

7 years agoMerge "vp9: SVC: Increase the partiiton and acskip thresholds"
Marco Paniconi [Thu, 11 May 2017 23:37:30 +0000 (23:37 +0000)]
Merge "vp9: SVC: Increase the partiiton and acskip thresholds"

7 years agoMerge "vp9; Adjust noise estimation thresholds."
Marco Paniconi [Thu, 11 May 2017 21:58:40 +0000 (21:58 +0000)]
Merge "vp9; Adjust noise estimation thresholds."

7 years agovp9: SVC: Increase the partiiton and acskip thresholds
Marco [Thu, 11 May 2017 19:10:35 +0000 (12:10 -0700)]
vp9: SVC: Increase the partiiton and acskip thresholds

Increase the partition and acskip thresholds for temporal
enhancement layers.

~1-2% speedup, with negligible loss in quality.

Change-Id: Id527398a05855298ad9ddac10ada972482415627

7 years agovp9: SVC: allow for setting the interp_filter in non-rd pickmode.
Marco [Thu, 27 Apr 2017 19:32:03 +0000 (12:32 -0700)]
vp9: SVC: allow for setting the interp_filter in non-rd pickmode.

For SVC 1 pass non-rd pickmode, the interpolation filter for the
upsampling of the golden (spatial) reference was not being explicitly
set and instead was takin gwhatever value was set in the previous
mode/block (which would be either EIGHTTAP or EIGHTAP_SMOOTH).

Fix it to the default EIGHTTAP for now, to be updated/selected
adaptively in a later change.

Minor adjustmemt to rate targeting thresholds in datarate unittests.

Change-Id: I52085048674072c6cfb7163e11e9a2658d773826

7 years agoMerge "Tuning of factor used to calculate Q range in two pass."
Paul Wilkins [Thu, 11 May 2017 18:25:44 +0000 (18:25 +0000)]
Merge "Tuning of factor used to calculate Q range in two pass."

7 years agoMerge "vp9: Fix ubsan failure in denoiser."
Jerome Jiang [Thu, 11 May 2017 16:38:56 +0000 (16:38 +0000)]
Merge "vp9: Fix ubsan failure in denoiser."

7 years agoTuning of factor used to calculate Q range in two pass.
paulwilkins [Wed, 10 May 2017 15:07:13 +0000 (16:07 +0100)]
Tuning of factor used to calculate Q range in two pass.

A more detailed explanation of the experimentation
leading to this change can be found in:-

https://docs.google.com/a/google.com/document/d/13lsYhxgPyxUHvEess6wg9nikaonIZKY9Ak_Lpafv5Mo/edit?usp=sharing

This change gives gains across all our standard test sets for
overall psnr, ssim, fast ssim and psnr-HVS.

Values expressed as % reduction in bitrate.

Low res set     -0.257, -0.192, -0.173, -0.101
Mid res set     -0.233, -0.336, -0.367, -0.139
High res set    -0.999, -1.039, -1.111, -0.567
NetFlix 2K set -0.734, -0.174, -0.389, -0.820
Netflix 4K set  -0.814, -0.485, -0.796, -0.839

Change-Id: Ie981fb3c895c9dfcfc8682640d201a86375db5c8

7 years agoSpeed up encoding by skipping altref recode
Cheng Chen [Tue, 4 Apr 2017 21:39:17 +0000 (14:39 -0700)]
Speed up encoding by skipping altref recode

Speed up for speed 0.
Reduce 10+% of encoding time for hdres in speed 0,
with less than 0.1% PSNR loss.
Compute total difference of previous and current frame context probability
model. If the diff is less than the threshold, skip recoding the frame.

Borg test (positive number means performance loss):
lowres    midres    hdres
PSNR: 0.030     0.032     0.065

Local speed test: bitrate set at 1200
blue_sky  pedestrian  rush_hour
Encoding time:  -10.0%     -16.5%      -16.5%

Change-Id: I4e2d200ea3115d48b2c3e890143596b31b8ef9e9

7 years agoMerge "vp9: SVC: Fix setting in sample encoder."
Marco Paniconi [Wed, 10 May 2017 23:51:44 +0000 (23:51 +0000)]
Merge "vp9: SVC: Fix setting in sample encoder."

7 years agovp9; Adjust noise estimation thresholds.
Marco [Wed, 10 May 2017 23:46:50 +0000 (16:46 -0700)]
vp9; Adjust noise estimation thresholds.

Change-Id: Ia41a11df18e5a58d2b8bbecd11c249d357de2a8f

7 years agovp9: SVC: Fix setting in sample encoder.
Marco [Wed, 10 May 2017 23:18:14 +0000 (16:18 -0700)]
vp9: SVC: Fix setting in sample encoder.

For 1 spatial layer case, scaling_num/den was not set properly.

Change-Id: I139bf70c6dffde89eed24e435bcb5d98d2029bcd

7 years agovp9: Fix ubsan failure in denoiser.
Jerome Jiang [Tue, 9 May 2017 17:49:59 +0000 (10:49 -0700)]
vp9: Fix ubsan failure in denoiser.

Fix the overflow for subtraction between two unsigned integers.

BUG=webm:1432

Change-Id: I7b665e93ba5850548810eff23258782c4f5ee15a

7 years agoMerge "Update specializations of idct functions"
Linfeng Zhang [Wed, 10 May 2017 20:31:13 +0000 (20:31 +0000)]
Merge "Update specializations of idct functions"

7 years agoppc: Add vpx_sad16x8/16/32_vsx
Alexandra Hájková [Sat, 6 May 2017 13:21:19 +0000 (13:21 +0000)]
ppc: Add vpx_sad16x8/16/32_vsx

Change-Id: I60619d28fffd9809f93b1af510a50e1aa02519a9

7 years agoUpdate specializations of idct functions
Linfeng Zhang [Wed, 10 May 2017 18:52:32 +0000 (11:52 -0700)]
Update specializations of idct functions

Introduced append situation in Commit 0178d97 which could be
confusing. Clean a little bit and add some comments.

Change-Id: I69ad336f805aca7ce9d45515b8cd237423fadbb2

7 years agovp9: Wrap threshold tuning for HD only when denoiser is enabled.
Jerome Jiang [Wed, 10 May 2017 00:23:00 +0000 (17:23 -0700)]
vp9: Wrap threshold tuning for HD only when denoiser is enabled.

Fixes a speed regression.

Change-Id: I23d942e4af17fa81fe4a366c7369b3ad537e59b0

7 years agovp9: Use INTERP_FILTER for filter_type in vp9_rtcd_defs.pl
Marco [Wed, 10 May 2017 19:04:02 +0000 (12:04 -0700)]
vp9: Use INTERP_FILTER for filter_type in vp9_rtcd_defs.pl

Change-Id: I259d152c62864b365490368051f3c3b7d7f2f1c5

7 years agoMerge changes I92eb4312,Ibb2afe4e
Johann Koenig [Wed, 10 May 2017 18:19:50 +0000 (18:19 +0000)]
Merge changes I92eb4312,Ibb2afe4e

* changes:
  subpel variance neon: add mixed sizes
  sub pixel variance neon: use generic variance

7 years agoMerge "vp9: Adjustment to noise estimation."
Marco Paniconi [Wed, 10 May 2017 17:11:17 +0000 (17:11 +0000)]
Merge "vp9: Adjustment to noise estimation."

7 years agoMerge "vp9: SVC: Add option to set downsampling filter type."
Marco Paniconi [Wed, 10 May 2017 17:10:51 +0000 (17:10 +0000)]
Merge "vp9: SVC: Add option to set downsampling filter type."

7 years agovp9: Adjustment to noise estimation.
Marco [Wed, 10 May 2017 16:36:10 +0000 (09:36 -0700)]
vp9: Adjustment to noise estimation.

When the noise estimate is forced off due to large motion,
reset the counter and set smaller window for next estimate.

Change-Id: Ifa4ec95396134173a00d48353ad52f1b6a40c217

7 years agovp9: SVC: Add option to set downsampling filter type.
Marco [Tue, 2 May 2017 22:50:31 +0000 (15:50 -0700)]
vp9: SVC: Add option to set downsampling filter type.

Add option in SVC to set the filter type and phase for
the frame level downsampling filters.

For 3 spatial layers: set downsampling filter type to bilinear
and set phase to 8, for lowest spatial layer.

Change-Id: Id81f4b1ba93db19c1cd37b6a46d1281a2c61bc43

7 years agoUpdate test/partial_idct_test.cc
Linfeng Zhang [Tue, 9 May 2017 20:04:54 +0000 (13:04 -0700)]
Update test/partial_idct_test.cc

Makes more sense to call the corresponding partial idct C function
instead of the full idct C function as the reference.

Change-Id: Ibb7681dd063edd6307ba582c10c26c4c6a4b78c6

7 years agoClean 32x32 idct C code
Linfeng Zhang [Tue, 9 May 2017 18:05:51 +0000 (11:05 -0700)]
Clean 32x32 idct C code

Change-Id: I73b8104a9e7a70ffe827c1b7ff43618f24f5d7bd

7 years agoUpdate 4x4 idct sse2 functions
Linfeng Zhang [Mon, 8 May 2017 22:41:24 +0000 (15:41 -0700)]
Update 4x4 idct sse2 functions

It's a bit faster to call idct4_sse2() in vpx_idct4x4_16_add_sse2()

Change-Id: I1513be7a895cd2fc190f4a8297c240b17de0f876

7 years agoMerge "vp9: SVC: Modify conditon for setting downsample filter type."
Marco Paniconi [Mon, 8 May 2017 21:45:58 +0000 (21:45 +0000)]
Merge "vp9: SVC: Modify conditon for setting downsample filter type."

7 years agovp9: SVC: Modify conditon for setting downsample filter type.
Marco [Mon, 8 May 2017 17:47:53 +0000 (10:47 -0700)]
vp9: SVC: Modify conditon for setting downsample filter type.

Base the condition on the resolution of the spatial layer.
And remove restriction on scaling factor.

Change-Id: Iad00177ce364279d85661654bff00ce7f48a672e

7 years agoneon variance: process 16 values at a time
Johann [Mon, 1 May 2017 21:10:54 +0000 (14:10 -0700)]
neon variance: process 16 values at a time

Read in a Q register. Works on blocks of 16 and larger.

Improvement of about 20% for 64x64. The smaller blocks are faster, but
don't have quite the same level of improvement. 16x32 is only about 5%

BUG=webm:1422

Change-Id: Ie11a877c7b839e66690a48117a46657b2ac82d4b

7 years agoMerge changes Id602909a,Ib0e85608
Johann Koenig [Mon, 8 May 2017 17:34:20 +0000 (17:34 +0000)]
Merge changes Id602909a,Ib0e85608

* changes:
  neon variance: process two rows of 8 at a time
  neon variance: add small missing sizes

7 years agoMerge changes I0cfe4117,I3581d80d,Ida62c941
Linfeng Zhang [Mon, 8 May 2017 16:15:56 +0000 (16:15 +0000)]
Merge changes I0cfe4117,I3581d80d,Ida62c941

* changes:
  Split dsp/x86/inv_txfm_sse2.c
  Update highbd idct functions arguments to use uint16_t dst
  Clean CONVERT_TO_BYTEPTR/SHORTPTR in idct

7 years agoMerge "vp9: SVC: Set downsample filtertype for lowest spatial layer."
Marco Paniconi [Sat, 6 May 2017 02:30:59 +0000 (02:30 +0000)]
Merge "vp9: SVC: Set downsample filtertype for lowest spatial layer."

7 years agovp9: SVC: Set downsample filtertype for lowest spatial layer.
Marco [Sat, 6 May 2017 01:39:55 +0000 (18:39 -0700)]
vp9: SVC: Set downsample filtertype for lowest spatial layer.

For lowest spatial layer, in 3 layer SVC, set the
downsampling filtertype to get averaging filter.
Needed for reducing aliasing on low-res layer,
small increase in overall encoder time.

Change-Id: Ia31460123bd91b72eca49b46dd924b9f226d4563

7 years agoMerge "vp9: Neon optimization for denoiser. Add unit tests."
Jerome Jiang [Sat, 6 May 2017 01:28:31 +0000 (01:28 +0000)]
Merge "vp9: Neon optimization for denoiser. Add unit tests."

7 years agoMerge "Change target bitrate thresh in denoiser test."
Jerome Jiang [Sat, 6 May 2017 01:28:15 +0000 (01:28 +0000)]
Merge "Change target bitrate thresh in denoiser test."

7 years agoChange target bitrate thresh in denoiser test.
Jerome Jiang [Fri, 5 May 2017 23:50:19 +0000 (16:50 -0700)]
Change target bitrate thresh in denoiser test.

An intended behavior change disabling exhaustive searches in speed
feature causes VP9/DatarateTestVP9LargeDenoiser.4threads test failure.
Change the threshold to make it pass.

BUG=webm:1429

Change-Id: Ibcbe2314c6b2525799894f5d7204fc8eb4ec2a1e

7 years agovp9: Neon optimization for denoiser. Add unit tests.
Jerome Jiang [Tue, 25 Apr 2017 22:29:43 +0000 (15:29 -0700)]
vp9: Neon optimization for denoiser. Add unit tests.

Denoiser on Neon is 5x faster than C code.

BUG=webm:1420

Change-Id: I805ab64f809ff2137354116be6213e7ec29c1dcb

7 years agoMerge "vp9: Adjust some thresholds for noise estimation."
Marco Paniconi [Fri, 5 May 2017 20:02:41 +0000 (20:02 +0000)]
Merge "vp9: Adjust some thresholds for noise estimation."

7 years agovp9: Adjust some thresholds for noise estimation.
Marco [Fri, 5 May 2017 00:34:19 +0000 (17:34 -0700)]
vp9: Adjust some thresholds for noise estimation.

Adjust thresholds for noise estimation, for resolutions above VGA.
Tends to push cleaner/low noise clips to LowLow state.

No change in RTC metrics.

Change-Id: I739ca6b797d0a60ccd1c6c6a2775269b1f007e5e

7 years agoMerge "fdct 8x8 neon: minor comment cleanup"
Johann Koenig [Fri, 5 May 2017 18:22:44 +0000 (18:22 +0000)]
Merge "fdct 8x8 neon: minor comment cleanup"

7 years agovp9: Enable noise estimation on low res.
Jerome Jiang [Mon, 1 May 2017 17:49:54 +0000 (10:49 -0700)]
vp9: Enable noise estimation on low res.

Set noise level to kLowLow for high motion low res clips.
Change the normalization in noise metric for low res.
Reduce the initial time-window for all resolutions.

Change-Id: Iaed39dbb50b205cd9c735dc5b84822304fb01987

7 years agosubpel variance neon: add mixed sizes
Johann [Wed, 3 May 2017 19:06:29 +0000 (12:06 -0700)]
subpel variance neon: add mixed sizes

Add support for everything except block sizes of 4.

Performance is better but numbers will improve again when the variance
optimizations land.

BUG=webm:1423

Change-Id: I92eb4312b20be423fa2fe6fdb18167a604ff4d80

7 years agosub pixel variance neon: use generic variance
Johann [Tue, 2 May 2017 17:25:37 +0000 (10:25 -0700)]
sub pixel variance neon: use generic variance

When a neon version is available it will be called. This allows
decoupling the variance implementations and has no real downside. For
most configurations, the call will be #define'd to the neon
implementation.

Change-Id: Ibb2afe4e156c5610e89488504d366b3e6d1ba712

7 years agofdct 8x8 neon: minor comment cleanup
Johann [Thu, 4 May 2017 22:14:23 +0000 (15:14 -0700)]
fdct 8x8 neon: minor comment cleanup

Simplify HBD/non distinction in test.

Document why transpose_neon.h is not used

Change-Id: I17659414206ddbb8c2f1ef0d9f4a17f1745d5a52

7 years agoneon variance: process two rows of 8 at a time
Johann [Mon, 1 May 2017 20:19:49 +0000 (13:19 -0700)]
neon variance: process two rows of 8 at a time

When the width is equal to 8, process two rows at a time. This doubles
the speed of 8x4 and improves 8x8 by about 20%.

8x16 was using this technique already, but still improved a little bit
with the rewrite.

Also use this for vpx_get8x8var_neon

BUG=webm:1422

Change-Id: Id602909afcec683665536d11298b7387ac0a1207

7 years agoneon variance: add small missing sizes
Johann [Mon, 1 May 2017 16:10:06 +0000 (09:10 -0700)]
neon variance: add small missing sizes

Some of the mixed sizes were missing. They can be implemented trivially
using the existing helper function.

When comparing the previous 16x8 and 8x16 implementations, the helper
function is about 10% faster than the 16x8 version. The 8x16 is very
close, but the existing version appears to be faster.

BUG=webm:1422

Change-Id: Ib0e856083c1893e1bd399373c5fbcd6271a7f004

7 years agoMerge "High bit depth inter prediction horizontal/vertical filters AVX2"
Yi Luo [Thu, 4 May 2017 15:43:20 +0000 (15:43 +0000)]
Merge "High bit depth inter prediction horizontal/vertical filters AVX2"

7 years agoSplit dsp/x86/inv_txfm_sse2.c
Linfeng Zhang [Wed, 3 May 2017 22:43:02 +0000 (15:43 -0700)]
Split dsp/x86/inv_txfm_sse2.c

Spin out highbd idct functions.

BUG=webm:1412

Change-Id: I0cfe4117c00039b6778c59c022eee79ad089a2af

7 years agoUpdate highbd idct functions arguments to use uint16_t dst
Linfeng Zhang [Wed, 3 May 2017 20:32:08 +0000 (13:32 -0700)]
Update highbd idct functions arguments to use uint16_t dst

BUG=webm:1388

Change-Id: I3581d80d0389b99166e70987d38aba2db6c469d5