platform/upstream/libvpx.git
6 years agoupdate codereview.settings
Johann [Thu, 5 Apr 2018 18:59:56 +0000 (11:59 -0700)]
update codereview.settings

Using pdfium as a reference:
https://pdfium.googlesource.com/pdfium/+/master/codereview.settings

Change-Id: I30874cf9f1d575325c32342146137a1952db91ba

6 years agoios configure: quiet shell warning
Johann [Tue, 27 Mar 2018 17:41:54 +0000 (10:41 -0700)]
ios configure: quiet shell warning

Generating file lists on a non-mac with:
--target=x86-iphonsimulator-gcc --enable-external-build
the lack of xcrun would cause a warning to print:
libvpx/build/make/configure.sh: line 1397: [: : integer expression expected

Change-Id: I4623b6c5b65296bc71986cd042823f4be9427b42

6 years agoMerge "vp9-svc: Fix in choose_partitioning for different scaling."
Marco Paniconi [Wed, 4 Apr 2018 05:59:00 +0000 (05:59 +0000)]
Merge "vp9-svc: Fix in choose_partitioning for different scaling."

6 years agoMerge "Fix to svc sample enocoder for visual studio build."
Marco Paniconi [Wed, 4 Apr 2018 02:15:56 +0000 (02:15 +0000)]
Merge "Fix to svc sample enocoder for visual studio build."

6 years agovp9-svc: Fix in choose_partitioning for different scaling.
Marco Paniconi [Tue, 3 Apr 2018 22:50:19 +0000 (15:50 -0700)]
vp9-svc: Fix in choose_partitioning for different scaling.

In the SVC encoder LAST ref frame should be the last temporal
reference at the same resolution. This is the case for the default/fixed
patterns, but may not be the case for arbitrary pattern in flexible mode.

Add check that the LAST reference frame has same resolution as the current frame.
If the reference scale for LAST is different from current treat the current
frame as key frame just for the purpose of superblock partitioning.
This avoids potential segfault in vp9_int_pro_motion_estimation() for different
scaled reference.

Change-Id: I4276ff616de46cd4e12c73316f85ae313f170242

6 years agorm CONVERT_TO_SHORTPTR in vpx_highbd_comp_avg_pred
Linfeng Zhang [Tue, 3 Apr 2018 22:36:41 +0000 (15:36 -0700)]
rm CONVERT_TO_SHORTPTR in vpx_highbd_comp_avg_pred

BUG=webm:1388

Change-Id: I1d0dd9af52a1461e3e2b2d60e8c4b6b74c3b90b0

6 years agoFix to svc sample enocoder for visual studio build.
Marco Paniconi [Tue, 3 Apr 2018 21:34:07 +0000 (14:34 -0700)]
Fix to svc sample enocoder for visual studio build.

Fix to sample encoder, for visual studio buid failure:
conversion from 'uint64_t' to 'int'.

Change-Id: I385ab8482e1ee97da9872437f8286d9071e38e0e

6 years agovp9-svc: Fix to svc sample encoder for write_out.
Marco Paniconi [Mon, 2 Apr 2018 19:46:19 +0000 (12:46 -0700)]
vp9-svc: Fix to svc sample encoder for write_out.

When writing out stream for spatial layer N,
make sure to include all spatial layers up to N.

Fixes an issue with the streams when frame dropping occurs.

Change-Id: I1e20b7dac6b94dcda751043541dd8a12f7df6d8c

6 years agoMerge "helper script for sanitizer testing"
Johann Koenig [Mon, 2 Apr 2018 18:30:28 +0000 (18:30 +0000)]
Merge "helper script for sanitizer testing"

6 years agoMerge changes I5704bd66,I4d548e97
Linfeng Zhang [Mon, 2 Apr 2018 16:05:05 +0000 (16:05 +0000)]
Merge changes I5704bd66,I4d548e97

* changes:
  Shrink size of mode_map in struct TileDataEnc
  Update sad4d x86 functions

6 years agoMerge "vp9_datarate_test: relax over shoot constraints"
James Zern [Sat, 31 Mar 2018 00:49:11 +0000 (00:49 +0000)]
Merge "vp9_datarate_test: relax over shoot constraints"

6 years agoMerge "VP9 SVC: Write bitstream for each spatial layer in sample."
Jerome Jiang [Fri, 30 Mar 2018 23:57:21 +0000 (23:57 +0000)]
Merge "VP9 SVC: Write bitstream for each spatial layer in sample."

6 years agovp9_datarate_test: relax over shoot constraints
James Zern [Fri, 30 Mar 2018 23:29:10 +0000 (16:29 -0700)]
vp9_datarate_test: relax over shoot constraints

in BasicRateTargetingVBRLagZero and
BasicRateTargetingVBRLagNonZeroFrameParDecOff after:
e0b28ad69 Add extra case to wq_err_divisor()

BUG=webm:1512

Change-Id: Id181613cc191ff2a2281deffe141efb982501edf

6 years agoVP9 SVC: Write bitstream for each spatial layer in sample.
Jerome Jiang [Fri, 30 Mar 2018 21:15:06 +0000 (14:15 -0700)]
VP9 SVC: Write bitstream for each spatial layer in sample.

Added control for denoiser in the sample SVC encoder.

Change-Id: I8e62aa2fc13a943eb110cb33e419e912a898bbc7

6 years agoCode cleanup for datarate tests.
Jerome Jiang [Fri, 30 Mar 2018 17:47:41 +0000 (10:47 -0700)]
Code cleanup for datarate tests.

Add/Remove static to functions. Name change.

Change-Id: I5de3efc23cd151fe8e70fe67a7a11acfcfa707dc

6 years agoSplit datarate_test.cc to vp8, vp9, svc ones.
Jerome Jiang [Wed, 28 Mar 2018 23:35:43 +0000 (16:35 -0700)]
Split datarate_test.cc to vp8, vp9, svc ones.

As we add more tests to datarate_test.cc, it's growing bigger and hard
to find specific test.

Split it to vp8, vp9 and svc ones.

Change-Id: Ie8c302010cf304a95554bee19d87ddc90498d0fb

6 years agoMerge "test: use testing::*tuple instead of std::tr1"
James Zern [Thu, 29 Mar 2018 19:01:34 +0000 (19:01 +0000)]
Merge "test: use testing::*tuple instead of std::tr1"

6 years agoMerge "vp9-svc: Fix in pickmode for key frames."
Marco Paniconi [Thu, 29 Mar 2018 18:49:26 +0000 (18:49 +0000)]
Merge "vp9-svc: Fix in pickmode for key frames."

6 years agoMerge "VP9 SVC: Add enum type for framedrop_mode."
Jerome Jiang [Thu, 29 Mar 2018 18:44:35 +0000 (18:44 +0000)]
Merge "VP9 SVC: Add enum type for framedrop_mode."

6 years agoVP9 SVC: Add enum type for framedrop_mode.
Jerome Jiang [Wed, 28 Mar 2018 23:23:26 +0000 (16:23 -0700)]
VP9 SVC: Add enum type for framedrop_mode.

Change-Id: I3d4697b00729553e0860762b9264e29b8a89b9d4

6 years agohelper script for sanitizer testing
Johann [Tue, 27 Mar 2018 19:59:15 +0000 (12:59 -0700)]
helper script for sanitizer testing

source tools/set_analyzer_env.sh <sanitizer>
will set the compiler, flag, and sanitizer variables necessary to build
and run a variety of sanitizers.

Change-Id: I5dd2ae947cb337d5ccf2a11e9fe87991bc8ba0c8

6 years agoMerge "vp9: [loongson] optimize vpx_convolve8 with mmi."
xiwei gu [Thu, 29 Mar 2018 01:05:33 +0000 (01:05 +0000)]
Merge "vp9: [loongson] optimize vpx_convolve8 with mmi."

6 years agovp9-svc: Fix in pickmode for key frames.
Marco Paniconi [Wed, 28 Mar 2018 23:10:17 +0000 (16:10 -0700)]
vp9-svc: Fix in pickmode for key frames.

For the fixed/default SVC patterns, GOLDEN is the
spatial reference, except on key frames, where LAST
is labeled as the spatial reference.

The current code was assuming GOLDEN is always the
spatial reference for the purpose of selecting the
subpel motion (due to the downsampling filter).

Fix is make sure flag_svc_subpel is set and used
with spatial_ref, which is labeled as the proper
spatial reference before entering mode check.

Some quality improvement on key frames.
Change-Id: Id236bcd47055b035731cc910ed84449d7e29f50c

6 years agoMerge "vp9-svc: Modify logic for frame dropping with spatial layers."
Marco Paniconi [Wed, 28 Mar 2018 21:29:35 +0000 (21:29 +0000)]
Merge "vp9-svc: Modify logic for frame dropping with spatial layers."

6 years agovp9-svc: Modify logic for frame dropping with spatial layers.
Marco Paniconi [Wed, 28 Mar 2018 19:09:54 +0000 (12:09 -0700)]
vp9-svc: Modify logic for frame dropping with spatial layers.

In the constrained framedrop mode for svc: modify the buffer check
condition relative to (non-zero) dropmark to include uppper spatial layers,
in addition to the current spatial layer.

But keep the single layer check if the buffer goes below zero, since
in this case (buffer underflow) we should force drop of that layer
regardless of upper layers.

Change-Id: Id277f0b4a3ae6275effdd5f5f0c80e3229c17424

6 years agoShrink size of mode_map in struct TileDataEnc
Linfeng Zhang [Mon, 26 Mar 2018 23:42:00 +0000 (16:42 -0700)]
Shrink size of mode_map in struct TileDataEnc

To reduce the memcpy() cycles in vp9_rd_pick_inter_mode_sb().
The maximum value of mode_map is (MAX_MODES - 1) = 29.

Change-Id: I5704bd66838ea0b075f0afb001f5cbebfd3f1602

6 years agoUpdate sad4d x86 functions
Linfeng Zhang [Mon, 26 Mar 2018 20:06:09 +0000 (13:06 -0700)]
Update sad4d x86 functions

Speed change is marginal.

Change-Id: I4d548e9763ce43bd546f19132202f7a8509a32bf

6 years agotest: use testing::*tuple instead of std::tr1
James Zern [Wed, 28 Mar 2018 19:42:27 +0000 (12:42 -0700)]
test: use testing::*tuple instead of std::tr1

googletest imports tuple into testing to allow for compatibility across
c++ versions where tuple may be in std::tr1 or std. fixes deprecation
warnings under visual studio 2017

Change-Id: Id78b372d5478b12d8c8f63fd3f2166fec25aa8be

6 years agoMerge "Add speed test in SADx4Test"
Linfeng Zhang [Wed, 28 Mar 2018 19:39:37 +0000 (19:39 +0000)]
Merge "Add speed test in SADx4Test"

6 years agoAdd speed test in SADx4Test
Linfeng Zhang [Thu, 22 Mar 2018 20:37:49 +0000 (13:37 -0700)]
Add speed test in SADx4Test

Change-Id: I42dd3df8c13c0a6d08ce28e27e8917b5d831fc1a

6 years agovp9: [loongson] optimize vpx_convolve8 with mmi.
gxw [Thu, 25 Jan 2018 01:38:28 +0000 (09:38 +0800)]
vp9: [loongson] optimize vpx_convolve8 with mmi.

1. vpx_convolve8_vert_mmi
2. vpx_convolve8_horiz_mmi
3. vpx_convolve8_mmi
4. vpx_convolve8_avg_mmi
5. vpx_convolve8_avg_vert_mmi

Change-Id: I41a6b3b4f327d6b67d282e0163cfa0aee8648abe

6 years agovp9-svc: Add check in datarate unittests for frame-dropping.
Marco Paniconi [Wed, 28 Mar 2018 17:28:14 +0000 (10:28 -0700)]
vp9-svc: Add check in datarate unittests for frame-dropping.

Add verfication for constrained svc framedrop mode: check that
if a given spatial is dropped, all uppper layers must be dropped.

Change-Id: I9b4821b23c95d1d9d0c031a41af19984647ec5dc

6 years agovp9-svc: Add logic to enable for constrained framedrop.
Marco Paniconi [Tue, 27 Mar 2018 03:25:57 +0000 (20:25 -0700)]
vp9-svc: Add logic to enable for constrained framedrop.

Add the logic for the constrained framdrop mode for SVC.

Add test case in datarate unittests.
Also lower target bitrates in the tests to better test
frame dropper.

Change-Id: I8ee1b8cb56d835c233ad1fbe0fc1456cb2e7291f

6 years agoMerge "third_part/googletest: update to release-1.8.0-742-g7857975"
Johann Koenig [Tue, 27 Mar 2018 01:08:12 +0000 (01:08 +0000)]
Merge "third_part/googletest: update to release-1.8.0-742-g7857975"

6 years agovp9-svc: Allow for setting frame drop thresholds per layer.
Marco Paniconi [Mon, 26 Mar 2018 17:53:38 +0000 (10:53 -0700)]
vp9-svc: Allow for setting frame drop thresholds per layer.

Add encoder control to set the frame drop thresholds per
spatial layer, and add a frame drop mode: 0 = per-layer drop,
and 1 = constrained drop mode (a drop on a given layer forces
drops to all upper layers).

Default is mode 0 (per-layer dropping).
Implementation for mode 1 will come in subsequent change.

If the control is not used, then the spatial layer frame
drop thresholds (water mark) are all equal and set to the value
given by the encoder config (oxcf->drop_frames_water_mark).

Bump up the ABI version.

Change-Id: Id038d4181b86fa98b3d44d026f96d5f344d81629

6 years agothird_part/googletest: update to release-1.8.0-742-g7857975
Johann [Mon, 26 Mar 2018 18:24:26 +0000 (11:24 -0700)]
third_part/googletest: update to release-1.8.0-742-g7857975

Address std::tr1::tuple warnings:
https://github.com/google/googletest/issues/1111

The unsigned overflow fix has been superseded by:
https://github.com/google/googletest/pull/1180

Change-Id: I92dc0ba08a4d0d63f5e5b2da7b64f4a4642ed9ab

6 years agomsvs build: only fix_file_list when it is broken
Johann [Tue, 20 Mar 2018 00:00:44 +0000 (17:00 -0700)]
msvs build: only fix_file_list when it is broken

Clears a warning when generating VS project files with older versions of
bash:
declare: -n: invalid option

Change-Id: Id0c0bc17dc5a1599f7d2d73e3cc9259a45540f3f

6 years agoMerge "Adjustment to initial q range estimate and kf boost."
Paul Wilkins [Sat, 24 Mar 2018 11:27:12 +0000 (11:27 +0000)]
Merge "Adjustment to initial q range estimate and kf boost."

6 years agoMerge "Restore emms usage on x86_64 after 726b021a12c1b"
Martin Storsjö [Fri, 23 Mar 2018 22:04:43 +0000 (22:04 +0000)]
Merge "Restore emms usage on x86_64 after 726b021a12c1b"

6 years agoRestore emms usage on x86_64 after 726b021a12c1b
Martin Storsjo [Fri, 23 Mar 2018 10:48:42 +0000 (12:48 +0200)]
Restore emms usage on x86_64 after 726b021a12c1b

Even on x86_64, emms has to be called if the x87 state has
been clobbered - the calling code (either within libvpx or
in a caller outside of libvpx) may be using the x87 instructions,
even though use of them isn't all that common on x86_64.

This fixes builds with clang for mingw/x86_64.

Change-Id: I1f6072835590b862bad156f17331ba65c813ddd9

6 years agoMerge "thumb: Remove a brittle, ugly and unused arm->thumb conversion"
Martin Storsjö [Fri, 23 Mar 2018 19:54:01 +0000 (19:54 +0000)]
Merge "thumb: Remove a brittle, ugly and unused arm->thumb conversion"

6 years agoMerge changes from topic "llvm-mingw"
Martin Storsjö [Fri, 23 Mar 2018 19:49:40 +0000 (19:49 +0000)]
Merge changes from topic "llvm-mingw"

* changes:
  configure: Add an arm64-win64-gcc target
  test: Check for ARCH_X86_64 in addition to _WIN64
  configure: Add an armv7-win32-gcc target
  ads2gas: Add a -noelf option

6 years agoRevert "remove fldcw/fstcw from Win64 builds"
Johann Koenig [Fri, 23 Mar 2018 18:04:35 +0000 (18:04 +0000)]
Revert "remove fldcw/fstcw from Win64 builds"

This reverts commit 60a3cb9ad840377d46286bfd703c30a4a4ee56e2.

Reason for revert: x87 instruction usage might not be as
clear cut as I would like. At the very least, llvm mingw
builds appear to having issues with emms.

Original change's description:
> remove fldcw/fstcw from Win64 builds
>
> _MCW_PC (Precision control) is not supported on x64:
> https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/control87-controlfp-control87-2
>
> The x87 FPU is not used on Win64 or ARM so setting the x87 control word
> is not necessary. The SSE/SSE2 and ARM FPUs don't have a precision
> control - the precision is embedded in each instruction - so the need to
> set the control word is also gone.

BUG=webm:1500

Change-Id: I25bcfa96bc9c860f6c7e03315d75fa6fd1d88ec5

6 years agoMerge "remove fldcw/fstcw from Win64 builds"
Johann Koenig [Fri, 23 Mar 2018 13:23:58 +0000 (13:23 +0000)]
Merge "remove fldcw/fstcw from Win64 builds"

6 years agoremove fldcw/fstcw from Win64 builds
Johann [Mon, 5 Mar 2018 21:48:35 +0000 (13:48 -0800)]
remove fldcw/fstcw from Win64 builds

_MCW_PC (Precision control) is not supported on x64:
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/control87-controlfp-control87-2

The x87 FPU is not used on Win64 or ARM so setting the x87 control word
is not necessary. The SSE/SSE2 and ARM FPUs don't have a precision
control - the precision is embedded in each instruction - so the need to
set the control word is also gone.

BUG=webm:1500

Change-Id: I014513282a7dc320d1cdeaec48249d98a66bf09f

6 years agoconfigure: Add an arm64-win64-gcc target
Martin Storsjo [Wed, 21 Mar 2018 12:15:13 +0000 (14:15 +0200)]
configure: Add an arm64-win64-gcc target

This configuration doesn't require any extra custom settings, since
it only uses neon intrinsics that are handled automatically by the
compiler (no external assembly).

Change-Id: I35415c68f483a430c0672e060a7bbd09a3469512

6 years agotest: Check for ARCH_X86_64 in addition to _WIN64
Martin Storsjo [Wed, 21 Mar 2018 12:13:33 +0000 (14:13 +0200)]
test: Check for ARCH_X86_64 in addition to _WIN64

_WIN64 is also defined when targeting windows on aarch64.

Change-Id: I42b84e14079c19d0ba9362a06d8c6e7287644373

6 years agoconfigure: Add an armv7-win32-gcc target
Martin Storsjo [Wed, 21 Mar 2018 12:12:04 +0000 (14:12 +0200)]
configure: Add an armv7-win32-gcc target

This builds for windows on arm, with llvm-mingw. The target triplet
is named -gcc since that's how similar existing targets are named,
even though it technically runs clang (via frontends named
"$CROSS-gcc").

Assemble using $CC -c since there's no standalone assembler
available (except perhaps llvm-mc).

Change-Id: I2c9a319730afef73f811bad79f488dcdc244ab0d

6 years agoads2gas: Add a -noelf option
Martin Storsjo [Wed, 21 Mar 2018 12:09:04 +0000 (14:09 +0200)]
ads2gas: Add a -noelf option

This allows skipping elf specific features from the output.

Change-Id: I739299ba41286ca10415e056b4ffd561be5e0350

6 years agothumb: Remove a brittle, ugly and unused arm->thumb conversion
Martin Storsjo [Fri, 23 Mar 2018 11:06:41 +0000 (13:06 +0200)]
thumb: Remove a brittle, ugly and unused arm->thumb conversion

The relevant code that this conversion handled was removed in
c26a9ecaa21f4.

Change-Id: Iee40f95134e609c291c7c4e06bc50dcb895bc5e3

6 years agoMerge changes Ied91c7ef,If2dcc6e2,Ib7397e71,Ib6392c79
James Zern [Fri, 23 Mar 2018 03:56:50 +0000 (03:56 +0000)]
Merge changes Ied91c7ef,If2dcc6e2,Ib7397e71,Ib6392c79

* changes:
  Fix implicit-fallthrough warnings
  Fix dangling-else warnings
  Fix a strict-overflow warning
  Rename several static NEON iht functions

6 years agoMerge "vp9 svc frame drop: enable adaptive rd for row mt."
Jerome Jiang [Fri, 23 Mar 2018 01:41:21 +0000 (01:41 +0000)]
Merge "vp9 svc frame drop: enable adaptive rd for row mt."

6 years agovp9 svc frame drop: enable adaptive rd for row mt.
Jerome Jiang [Tue, 20 Mar 2018 22:39:02 +0000 (15:39 -0700)]
vp9 svc frame drop: enable adaptive rd for row mt.

adaptive_rd_threshold_mt is set to 1 when speed >= 7 for SVC.
QVGA in SVC uses speed 5 which set adaptive_rd_threshold_mt to 0.
If VGA or HD is dropped for the last super frame, the flag is still 0
when the encoder is destroyed. Thus memory won't be released.

Change the bitrate threshold in datarate test.

Change-Id: I55352cc0b030568d38eb735d99c2fa29058d3690

6 years agoFix implicit-fallthrough warnings
Linfeng Zhang [Thu, 22 Mar 2018 17:58:37 +0000 (10:58 -0700)]
Fix implicit-fallthrough warnings

Compiler -- gcc (Debian 7.3.0-5) 7.3.0

Change-Id: Ied91c7ef3d25c3ef44a1f667656176e2709b4f44

6 years agoFix dangling-else warnings
Linfeng Zhang [Thu, 22 Mar 2018 17:46:02 +0000 (10:46 -0700)]
Fix dangling-else warnings

Compiler -- gcc (Debian 7.3.0-5) 7.3.0

Change-Id: If2dcc6e215a2990cde575f0e744ce0c7a44a15f1

6 years agoFix a strict-overflow warning
Linfeng Zhang [Thu, 22 Mar 2018 01:00:40 +0000 (18:00 -0700)]
Fix a strict-overflow warning

Compiler -- gcc (Debian 7.3.0-5) 7.3.0

./libvpx/vp9/encoder/vp9_denoiser.c:374:9: assuming signed overflow
does not occur when assuming that (X + c) < X is always false
[-Wstrict-overflow]
         for (j = 0; j < xmis; j++) {

Change-Id: Ib7397e718ff717bdabc088fc4c6e1771381fb522

6 years agoRename several static NEON iht functions
Linfeng Zhang [Wed, 21 Mar 2018 20:06:02 +0000 (13:06 -0700)]
Rename several static NEON iht functions

Change-Id: Ib6392c79d0269a43dbe180a89f2571482d98844d

6 years agovp9-svc: Fix to sample encoder
Marco Paniconi [Wed, 21 Mar 2018 17:56:09 +0000 (10:56 -0700)]
vp9-svc: Fix to sample encoder

Get the correct computation of number of input
layers to account for frame drops.

Change-Id: I39637381e1981b53c930da67a5c525191de6907d

6 years agoMerge "vp9_highbd_iht8x8_add_neon: rm unused functions"
James Zern [Wed, 21 Mar 2018 17:52:47 +0000 (17:52 +0000)]
Merge "vp9_highbd_iht8x8_add_neon: rm unused functions"

6 years agoVP9 SVC: Add control to disable inter layer prediction.
Jerome Jiang [Tue, 20 Mar 2018 18:12:16 +0000 (11:12 -0700)]
VP9 SVC: Add control to disable inter layer prediction.

Add VP9E_SET_SVC_INTER_LAYER_PRED to disable inter layer (spatial)
prediction.
0: prediction on
1: prediction off for all frames
2: prediction off for non key frames

Bump up ABI version.

Change-Id: I5ab2a96b47e6bef202290fe726bed5f99bd4951f

6 years agoMerge "vp9-svc: Improve frame dropper for spatial layers."
Marco Paniconi [Tue, 20 Mar 2018 21:46:36 +0000 (21:46 +0000)]
Merge "vp9-svc: Improve frame dropper for spatial layers."

6 years agovp9-svc: Improve frame dropper for spatial layers.
Marco Paniconi [Mon, 19 Mar 2018 03:46:30 +0000 (20:46 -0700)]
vp9-svc: Improve frame dropper for spatial layers.

SVC frame dropper: modify the logic to allow for individual
spatial layers to drop. This removes the constraint that all
upper spatial layers must drop when a given spatial layer drops.

Add a flag to the pkt to indicate whether a spatial layer is
encoded or dropped. This is needed for applications that enable
this feature (frame dropping for SVC).

For a current spatial layer, if its previous spatial layer is
dropped, then disable certain features for that layer:
inter-layer prediction, base_mv, partition_reuse, copy partition.

Also add the constraint to never drop a spatial layer if its
base layer is a key frame.

Updates to sample encoder (vp9_spatial_svc_encoder) and the
SVC datarate unittests to properly handle frame dropping.

Bump up ABI version.
Change-Id: I7d14ccf67b8d014a7abfce5ba3989fc623e94067

6 years agovisual studio: add yasm instructions
Johann [Mon, 19 Mar 2018 23:46:06 +0000 (16:46 -0700)]
visual studio: add yasm instructions

Change-Id: Ied2a1fc0e1d1a2245d63f267669add8889dd0cec

6 years agoMerge "x86 android: default on realtime-only"
Johann Koenig [Tue, 20 Mar 2018 17:06:18 +0000 (17:06 +0000)]
Merge "x86 android: default on realtime-only"

6 years agoMerge "build: remove stale .git files"
Johann Koenig [Tue, 20 Mar 2018 17:06:05 +0000 (17:06 +0000)]
Merge "build: remove stale .git files"

6 years agoMerge "reland "use intrinsics for 'emms'""
Johann Koenig [Tue, 20 Mar 2018 17:05:17 +0000 (17:05 +0000)]
Merge "reland "use intrinsics for 'emms'""

6 years agobuild: remove stale .git files
Johann [Mon, 19 Mar 2018 22:57:29 +0000 (15:57 -0700)]
build: remove stale .git files

These were used for an older style of Visual Studio configurations.

Change-Id: I51f07b30ad51c4da0c5caf1ede36cdb69b2d2b19

6 years agoreland "use intrinsics for 'emms'"
Johann [Wed, 14 Mar 2018 23:57:57 +0000 (16:57 -0700)]
reland "use intrinsics for 'emms'"

Only target 32bit builds. Visual Studio does not define _mm_empty for
64bit configurations.

Rename emms.asm and remove from 32 bit builds to avoid empty file
warnings.

Don't check register state on 64bit builds.

BUG=webm:1500

This reverts commit 60beb781c140b61c1957abd2a6717d2e9a831933.

Change-Id: I5ac4cf6c67249ff24f7da19792144de20527bfce

6 years agoMerge "VP8: Fix out of range index for mvcost."
Jerome Jiang [Mon, 19 Mar 2018 19:00:55 +0000 (19:00 +0000)]
Merge "VP8: Fix out of range index for mvcost."

6 years agovp9_highbd_iht8x8_add_neon: rm unused functions
James Zern [Mon, 19 Mar 2018 01:24:41 +0000 (18:24 -0700)]
vp9_highbd_iht8x8_add_neon: rm unused functions

their use was removed in:
d8424d289 Fix a bug in vp9_highbd_iht8x8_64_add_neon

Change-Id: I041800f3fb34ffbb7cfa7401370c5a5ceeab01c6

6 years agoCopyFrameTest: reduce max size for 32-bit targets
James Zern [Sat, 17 Mar 2018 00:47:56 +0000 (17:47 -0700)]
CopyFrameTest: reduce max size for 32-bit targets

avoids potential OOM when allocating 3 buffers for 16383x16383; 3840 is
used as a replacement
this test was missed in:
215bddf32 vpx_scale_test: reduce max size for 32-bit targets

Change-Id: I515adf5999c6ef1724394ccd62d677134bd35e6d

6 years agoVP8: Fix out of range index for mvcost.
Jerome Jiang [Wed, 21 Feb 2018 23:28:54 +0000 (15:28 -0800)]
VP8: Fix out of range index for mvcost.

Clamp index between 0 and MVvals.

Bit exact for speed -8, -6 and -4 on RTC set.

BUG=b/72510002

Change-Id: I61bdb02a0924e157b3c1980f74fbbfe5ce51bc44

6 years agovpx_scale_test: reduce max size for 32-bit targets
James Zern [Sat, 17 Mar 2018 00:47:56 +0000 (17:47 -0700)]
vpx_scale_test: reduce max size for 32-bit targets

avoids potential OOM when allocating 3 buffers for 16383x16383; 3840 is
used as a replacement

Change-Id: I92116ab69b10db6820fc651d3626bd9699700208

6 years agoAdjustment to initial q range estimate and kf boost.
paulwilkins [Mon, 26 Feb 2018 17:44:50 +0000 (17:44 +0000)]
Adjustment to initial q range estimate and kf boost.

Adjustment to initial active based on image size.
Add extra breakout case for kf boost loop.
Small adjustment to q delta calculation for key frames.

Net % improvements for all standard tests sets (-ve values) measured
using c-bvr mode.

(Overall PSNR, SSIM, PSNR-HVS)
Low Res:  -0.223 -0.229 -0.107
Mid Res:  -0.175 0.008 -0.180
High Res: -0.131 0.106 -0.206
NFlix 2K:   -0.390 -0.271 -0.489
NFlix 4K:   -1.370 -0.825 -1.590

Change-Id: I06a39de43594e1a99bb0cb281af15cdb8058a8ed

6 years agovp9-svc: Frame dropper for SVC.
Marco Paniconi [Wed, 14 Mar 2018 17:03:31 +0000 (10:03 -0700)]
vp9-svc: Frame dropper for SVC.

If a given spatial layer decides to drop, due to the
buffer/overshoot conditions for that layer, then drop
that current spatial layer and all spatial layers above.

In the current implementation the svc frame counter
(and hence the pattern for the non-flexible SVC case)
are updated on frame drops.

Also add last spatial layer encoded to the pkt.
This is useful for RTC applications that enable
frame dropping for SVC.

Update to the SVC datarate tests:
enabled frame dropper on all SVC datarate tests, and
made a fix to properly set the temporal_layer_id, which
works now even on frame drops.

Change-Id: If828c193f3cb6b1839803fd52fe9fbbda5b5a039

6 years agoMerge "libs.mk,vcxproj generation: split srcs in invocation"
James Zern [Fri, 16 Mar 2018 03:52:02 +0000 (03:52 +0000)]
Merge "libs.mk,vcxproj generation: split srcs in invocation"

6 years agoMerge "Revert "vp9_loopfilter.c: zero lfl_uv""
James Zern [Fri, 16 Mar 2018 02:11:52 +0000 (02:11 +0000)]
Merge "Revert "vp9_loopfilter.c: zero lfl_uv""

6 years agoRevert "vp9_loopfilter.c: zero lfl_uv"
James Zern [Thu, 15 Mar 2018 21:43:29 +0000 (21:43 +0000)]
Revert "vp9_loopfilter.c: zero lfl_uv"

This reverts commit 13d0955b250bcb7eac99034e7b1677d3d026b569.

Reason for revert:
this should be investigated further to ensure the memset is really
necessary outside of the static analysis pass.

Original change's description:
> vp9_loopfilter.c: zero lfl_uv
>
> The initialization depends on cm and mi_row which static
> analysis does not approve of.
>
> Clears a static analysis warning:
> warning: The right operand of '+' is a garbage value
> const loop_filter_thresh *lfi = lfthr + *lfl;
>
> Change-Id: I8c863ced2b1e9a7e10103b7281098f20941a6ca2

TBR=johannkoenig@google.com,marpan@google.com,builds@webmproject.org,jianj@google.com

Change-Id: Icadb6438fbcddba747622f06f2eadebdb333edf6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true

6 years agoMerge changes I5501d0d6,I8c863ced,I19895d06,Ifa39353d,I09bd209b
Johann Koenig [Thu, 15 Mar 2018 21:16:43 +0000 (21:16 +0000)]
Merge changes I5501d0d6,I8c863ced,I19895d06,Ifa39353d,I09bd209b

* changes:
  vp9_resize.c: assert vp9_highbd_resize_plane conditions
  vp9_loopfilter.c: zero lfl_uv
  vp8 rdopt.c: zero rd.[rate_uv|distortion_uv]
  vp8 mfqe: zero map[]
  temporal svc: zero layer_target_bitrate

6 years agoMerge "remove spatial svc experiment"
Johann Koenig [Thu, 15 Mar 2018 19:26:16 +0000 (19:26 +0000)]
Merge "remove spatial svc experiment"

6 years agoMerge "Add vp9_highbd_iht16x16_256_add_neon()"
Linfeng Zhang [Thu, 15 Mar 2018 19:21:36 +0000 (19:21 +0000)]
Merge "Add vp9_highbd_iht16x16_256_add_neon()"

6 years agolibs.mk,vcxproj generation: split srcs in invocation
James Zern [Tue, 27 Jun 2017 01:55:09 +0000 (18:55 -0700)]
libs.mk,vcxproj generation: split srcs in invocation

this avoids truncation under mingw which would result in link failures

BUG=webm:1434

Change-Id: I6eb45d94f02966532b3cdf02860a5bf2e5d3efef

6 years agoMerge changes I9e0bf2c7,I695b4090
Linfeng Zhang [Thu, 15 Mar 2018 18:05:08 +0000 (18:05 +0000)]
Merge changes I9e0bf2c7,I695b4090

* changes:
  Fix a bug in vp9_highbd_iht8x8_64_add_neon
  Fix a bug in vp9_highbd_iht4x4_16_add_neon()

6 years agovp9-svc: Bugfix to dyanmic enabling/disabling of layers.
Marco Paniconi [Thu, 15 Mar 2018 00:00:27 +0000 (17:00 -0700)]
vp9-svc: Bugfix to dyanmic enabling/disabling of layers.

Fix a bug when middle and top spatial layer are skip encoded
(disabled) and then re-enabled again, during the sequence.

Issue is that pending_frame_count in the packing may
be incremented on middle layer, even though that layer is skipped
(not encoded and hence zero size). Fix is to add size check.

Modified existing unitest to reproduce the issue.

Change-Id: I86d806a112d468e06b04fbf7c46ae07db9e0ad93

6 years agovp9_resize.c: assert vp9_highbd_resize_plane conditions
Johann [Wed, 14 Mar 2018 21:45:23 +0000 (14:45 -0700)]
vp9_resize.c: assert vp9_highbd_resize_plane conditions

Clears static analysis warnings similar to the low bitdepth version:
commit c4367b9b51782969d3b37ead6694d19ef9bfb58c
Author: James Zern <jzern@google.com>
Date:   Wed Mar 18 14:34:30 2015 -0700

    vp9_resize_plane: quiet some static analysis warnings

Change-Id: I5501d0d6ad7c7720d746d53ec07078cb9051d0d7

6 years agoremove spatial svc experiment
Johann [Tue, 13 Mar 2018 00:23:41 +0000 (17:23 -0700)]
remove spatial svc experiment

Change-Id: Ifda11caaf992d10f2d93d6cd1d07b79b6047be05

6 years agoMerge "spatial svc: set window_size to 15"
Johann Koenig [Wed, 14 Mar 2018 22:00:08 +0000 (22:00 +0000)]
Merge "spatial svc: set window_size to 15"

6 years agovp9_loopfilter.c: zero lfl_uv
Johann [Wed, 14 Mar 2018 21:22:08 +0000 (14:22 -0700)]
vp9_loopfilter.c: zero lfl_uv

The initialization depends on cm and mi_row which static
analysis does not approve of.

Clears a static analysis warning:
warning: The right operand of '+' is a garbage value
const loop_filter_thresh *lfi = lfthr + *lfl;

Change-Id: I8c863ced2b1e9a7e10103b7281098f20941a6ca2

6 years agovp8 rdopt.c: zero rd.[rate_uv|distortion_uv]
Johann [Wed, 14 Mar 2018 20:25:05 +0000 (13:25 -0700)]
vp8 rdopt.c: zero rd.[rate_uv|distortion_uv]

These values are not consistently set before calling update_best_mode.

In vp9_rdopt.c they are individual values instead of a struct and are
zero'd at declaration.

Clears a static analysis warning:
warning: The right operand of '-' is a garbage value
RDCOST(x->rdmult, x->rddiv, (rd->rate2 - rd->rate_uv - other_cost),

warning: The right operand of '-' is a garbage value
(rd->distortion2 - rd->distortion_uv));

Change-Id: I19895d062e7c0ac67937126ebc5dcb0afd3a2931

6 years agovp8 mfqe: zero map[]
Johann [Wed, 14 Mar 2018 20:10:08 +0000 (13:10 -0700)]
vp8 mfqe: zero map[]

The loop appears to set map[i] with the intention of running
the 'j' loop up to that point. However, without zero'ing map[]
first the behavior is unpredictable.

Fixes a static analysis warning:
warning: Branch condition evaluates to a garbage value
for (j = 0; j < 4 && map[j]; ++j) {

Change-Id: Ifa39353d8aa5cc47b467a7d3d8cdd3b5319fd997

6 years agotemporal svc: zero layer_target_bitrate
Johann [Wed, 14 Mar 2018 19:52:49 +0000 (12:52 -0700)]
temporal svc: zero layer_target_bitrate

These values are set in main() from user input. Ensure
they are cleared out first.

Clears a static analysis warning:
warning: The right operand of '*' is a garbage value
1000.0 * rc->layer_target_bitrate[0] / rc->layer_framerate[0];

Change-Id: I09bd209be5aff31b87597a24d37a9673fa99381b

6 years agoRevert "use intrinsics for 'emms'"
Johann Koenig [Wed, 14 Mar 2018 19:06:57 +0000 (19:06 +0000)]
Revert "use intrinsics for 'emms'"

This reverts commit 118a57045bf5b49ab7c2f7f930543b9217fd422e.

Reason for revert: Fails on Visual Studio builds:

vpxmdd.lib(vpx_ports_emms_mmx.obj) : error LNK2019: unresolved
external symbol _m_empty referenced in function
vpx_clear_system_state

Original change's description:
> use intrinsics for 'emms'
>
> BUG=webm:1500
>
> Change-Id: I3235d8c2abc01dd3a35e14c5cbcfe20283ff8fb2

Change-Id: Ia9c40bc103c57cced83353249c55218eaf2f0b0c

6 years agoMerge "vp9-svc: Fix to update layer counters when layer is skipped."
Marco Paniconi [Wed, 14 Mar 2018 20:13:34 +0000 (20:13 +0000)]
Merge "vp9-svc: Fix to update layer counters when layer is skipped."

6 years agospatial svc: set window_size to 15
Johann [Wed, 14 Mar 2018 01:31:26 +0000 (18:31 -0700)]
spatial svc: set window_size to 15

Static analysis does not recognize that output_rc_stat guards
the usage of window_size. Clears this warning:
The right operand of '>' is a garbage value
if (frame_cnt > (unsigned int)rc.window_size) {

set_rate_control_stats sets window_size to 15. Zeroing it
just introduces another static analysis warning.

Change-Id: Ieee7b81a385f986e42189101cfa39279e519b368

6 years agovp9-svc: Fix to update layer counters when layer is skipped.
Marco Paniconi [Wed, 14 Mar 2018 18:49:25 +0000 (11:49 -0700)]
vp9-svc: Fix to update layer counters when layer is skipped.

Update layer counters when layer is skipped,
for any spatial layer.

Change-Id: Ie37c4a16ccafdef3390b651dec473beb5d926896

6 years agospatial svc: zero sizes
Johann [Wed, 14 Mar 2018 01:22:40 +0000 (18:22 -0700)]
spatial svc: zero sizes

This should be taken care of by parse_superframe_index but
the static analysis is not recognizing it because it depends
on 'marker' which is read from the bitstream.

Clears a static analysis warning:
The right operand of '*' is a garbage value
rc.layer_encoding_bitrate[layer] += 8.0 * sizes[sl];

Change-Id: I8ee48a98f907bc7b46869fd27a351f33e2e7de71

6 years agospatial svc: remove vpx_svc_get_message
Johann [Wed, 14 Mar 2018 00:37:28 +0000 (17:37 -0700)]
spatial svc: remove vpx_svc_get_message

Print error messages as they are encountered. This was the default
behavior.

Removes a static analysis warning regarding the use of strncat:
Null pointer argument in call to string length function

As this is the only use of strncat in the library, remove it and the
associated public function.

Change-Id: Id55305c5a4d65f11da88c3a2203ff824200f526f

6 years agoAdd vp9_highbd_iht16x16_256_add_neon()
Linfeng Zhang [Wed, 28 Feb 2018 01:06:01 +0000 (17:06 -0800)]
Add vp9_highbd_iht16x16_256_add_neon()

BUG=webm:1403

Change-Id: I2293c11666786be276909d48ee78dacb40a89e25

6 years agoFix a bug in vp9_highbd_iht8x8_64_add_neon
Linfeng Zhang [Tue, 6 Mar 2018 00:25:08 +0000 (16:25 -0800)]
Fix a bug in vp9_highbd_iht8x8_64_add_neon

This bug was introduced in 29b6a30c.

BUG=webm:1403

Change-Id: I9e0bf2c7a01d8ff1c714c12236f7985b772b0540

6 years agospatial svc: remove unused locals
Johann [Wed, 14 Mar 2018 00:11:48 +0000 (17:11 -0700)]
spatial svc: remove unused locals

Clears static analysis warning:
Value stored to 'tl' is never read

Change-Id: If047a74f508288c63d5b83ed0f3ad34f791f9312