]> granicus.if.org Git - libvpx/log
libvpx
6 years agoChange to KF frame boost calculation.
paulwilkins [Wed, 21 Feb 2018 11:18:09 +0000 (11:18 +0000)]
Change to KF frame boost calculation.

This change is targeted mainly at higher resolutions where typically
the average error per MB is much smaller.  hence this patch replaces
a fixed error per MB factor with a tiered value.

It also adds in a fixed offset value that acts as a minimum return score.

Note also minor fix to debug stats output.

The results are overall beneficial (-ve) on our test sets, most notably for
higher definition formats (see below - overall psnr, ssim, psnr hvs)

low res:    0.184 -0.262 -0.166
mid res:   0.094   0.075   0.049
hd res:    -0.752 -0.300 -0.800
NF 2K:    -0.353  1.095 -0.302
NF 4K:    -1.245 -0.578 -1.205

The most notable negative case is pierseaside 2K which appears to be worse by
8-10% (which has a big impact on the overall gain for the NF 2K set). Closer
inspection reveals that the drop does not relate to the key frame boost
per se as in both cases the key frame substantially undershoots its target. Rather
this is a side effect relating to the initial Q range allowed for the key frame and
a poor initial complexity estimate. This will hopefully be improved in a later
patch.

Change-Id: I4773ebe554782f4024c047c3c392c763a3fe843b

6 years agoImproved coding on slide show content.
paulwilkins [Wed, 31 Jan 2018 16:42:37 +0000 (16:42 +0000)]
Improved coding on slide show content.

This patch adds in detection of slide show key frame groups.
The detection assumes extremely  low or 0 motion for all frames
in the key frame group.

If this case is detected the boost level is set to a very high value
and the min Q to a lower value for the key frame itself.
Alt refs and golden frames are disabled to save bits (up to a limiting
maximum interval currently set to 240 frames).

In test samples that I created, this patch gave rise to a substantial
improvement in overall psnr and a drop in data rate. In some cases the
average psnr fell, however, with the boost and minQ values set as they are.

This is to be expected because previously a relatively poor key frame
could be followed by progressively better alt refs. For example a key
frame at q7.5 but subsequent alt refs improving it to lossless. Given that
average psnr tends to be dominated by the best frames, a ramp like this
from q7.5 to lossless may give a better average psnr than, for example,
coding the entire sequence at q2.5. Overall psnr, however, will be much
better in the latter case.  The option exists to boost the key frame further
which would  insure much better results for all metrics, but at the expense
of smaller bitrate savings. Given that these samples tend to have very
good quality anyway this seems like a bad trade off.

For slides displayed for several seconds, bitrate savings of >= 20% are likely
and much larger gains are possible in some cases.

Change-Id: Ib4b61e153c55d3f2f561153da13fdb56f397a52b

6 years agoAdjust MAXRATE_1080P.
paulwilkins [Wed, 7 Feb 2018 15:05:20 +0000 (15:05 +0000)]
Adjust MAXRATE_1080P.

This value was originally set in response to requests from the hardware
team before levels were properly defined for VP9.

Even if a level is not specified for an encode, it imposes a maximum
frame size for videos of dimensions <= 1080P.  For larger formats the
limit was set at 250 bits per MB.

This patch modifies the limit to be more in line with the requirements
specified for level 4 (max rate for a 4 frame group of 16 Mbits).  If a lower
level is specified at encode time and this mandates a smaller maximum frame
size then the level requirement will still take precedence.

Increasing this value allows for some slide shows or very low motion clips
to code a better quality key frame.

Change-Id: Ic08e0e09c8a918077152190c59732b9a1c049787

6 years agoMerge "Fix file input pointer bug in allocate_gf_group_bits()."
Paul Wilkins [Thu, 8 Feb 2018 10:57:44 +0000 (10:57 +0000)]
Merge "Fix file input pointer bug in allocate_gf_group_bits()."

6 years agoUpdate iadst NEON functions
Linfeng Zhang [Wed, 7 Feb 2018 02:12:12 +0000 (18:12 -0800)]
Update iadst NEON functions

Use scalar multiply. No impact on clang, but improves gcc compiling.

BUG=webm:1403

Change-Id: I4922e7e033d9e93282c754754100850e232e1529

6 years agoClean vp9_highbd_iht4x4_16_add_neon()
Linfeng Zhang [Wed, 7 Feb 2018 18:39:52 +0000 (10:39 -0800)]
Clean vp9_highbd_iht4x4_16_add_neon()

Extract common code.

Change-Id: I422150ada1c6915f0ce39b912149994eb3bb3f12

6 years agoFix file input pointer bug in allocate_gf_group_bits().
paulwilkins [Tue, 6 Feb 2018 13:54:25 +0000 (13:54 +0000)]
Fix file input pointer bug in allocate_gf_group_bits().

The stats input pointer, when passed in, already points to the
frame after the golden frame so should not be advanced here.

This fix has a small mostly positive effect on results in our test sets
(tested using corpus vbr settings) and gives a gain of almost 0.5%
in overall psnr (plus slightly smaller gains on other metrics) for the
4K set.

The bug also caused a crash in calculate_group_score() in another
patch which allows coding of slides in a slide show as a single
long KF group without ARFs or GFs.

Change-Id: I57a3a24baf442ce55dbc91fba05e056697c63a6f

6 years agoUpdate tx_type switch code in idct
Linfeng Zhang [Wed, 31 Jan 2018 00:55:22 +0000 (16:55 -0800)]
Update tx_type switch code in idct

Change-Id: Ia244bfd4b4eb9d703653792bc4f64c6f5358ae19

6 years agoAdd vp9_highbd_iht4x4_16_add_neon()
Linfeng Zhang [Wed, 31 Jan 2018 00:01:41 +0000 (16:01 -0800)]
Add vp9_highbd_iht4x4_16_add_neon()

BUG=webm:1403

Change-Id: Id9833e985fb70958cf4bde38f8e6303ed83c12f9

6 years agoMerge "inv_txfm_vsx.c: make code c90 compatible"
James Zern [Fri, 2 Feb 2018 18:41:46 +0000 (18:41 +0000)]
Merge "inv_txfm_vsx.c: make code c90 compatible"

6 years agoMerge "Fix issue for 0 target bitrate in multi-res build."
Jerome Jiang [Fri, 2 Feb 2018 05:32:55 +0000 (05:32 +0000)]
Merge "Fix issue for 0 target bitrate in multi-res build."

6 years agoFix issue for 0 target bitrate in multi-res build.
Jerome Jiang [Thu, 25 Jan 2018 19:36:53 +0000 (11:36 -0800)]
Fix issue for 0 target bitrate in multi-res build.

For encoding with --enable-multi-res-encoding, with 1 layer, when the
target bitrate is set 0, under these conditions null pointer
will be de-referenced. Fix is to check
cpi->oxcf.mr_total_resolutions > 1. Also added NULL pointer check.
This issue causes crash for asan build in chromium clusterfuzz.

BUG=805863

Change-Id: I9cd25af631395bc9fede3a12fb68af4021eb15f8

6 years agoinv_txfm_vsx.c: make code c90 compatible
James Zern [Fri, 2 Feb 2018 03:39:58 +0000 (19:39 -0800)]
inv_txfm_vsx.c: make code c90 compatible

move for loop declarations to function scope

Change-Id: I84d92a1a6ca6c5ac30aacb0f55d87ca3aef4c98f

6 years agoMerge "vp9_scale_test: parameterize filter type"
James Zern [Thu, 1 Feb 2018 20:44:48 +0000 (20:44 +0000)]
Merge "vp9_scale_test: parameterize filter type"

6 years agoMerge "Further change to code detecting slide transitions."
Paul Wilkins [Thu, 1 Feb 2018 10:21:38 +0000 (10:21 +0000)]
Merge "Further change to code detecting slide transitions."

6 years agovp9_scale_test: parameterize filter type
James Zern [Thu, 1 Feb 2018 07:38:47 +0000 (23:38 -0800)]
vp9_scale_test: parameterize filter type

this allows the test to be sharded more efficiently and speeds up the
run when built with slower configs, e.g., asan.

Change-Id: If6d863b76871e3934704a1079bbf17f4886932c7

6 years agovp9-svc: Add condition on allocation for scaled_temp.
Marco [Wed, 31 Jan 2018 23:15:40 +0000 (15:15 -0800)]
vp9-svc: Add condition on allocation for scaled_temp.

scaled_temp frame is used as an intermediate buffer for
2 stage down-sampling: two stages of 1/2 down-sampling
for a target of 1/4x1/4. This is used in 3 layer SVC
to avoid duplicate frame downsampling (on middle layer).

As this allocation is only needed/used when the
number_spatial_layers > 2, add this condition to avoid
unneeded allocation for 1 and 2 spatial SVC.

Change-Id: If342466644f685c1ea3ca5344b581793e5136c09

6 years agovp9-svc: Fix to initialize downsampling filters.
Marco [Wed, 31 Jan 2018 21:33:27 +0000 (13:33 -0800)]
vp9-svc: Fix to initialize downsampling filters.

For 3 spatial layers with 1/2 downsampling, the
downsampling filter for the middle layer was not
set for the very first frame, so it was defaulting
to the subsample filter (no averaging/phase = 0).

Its not set due to the two stage scaling that is
done for 1/4 on base layer, during which the intermediate
1/2 result is saved for the middle layer.

Fix for now is to set the default downsampling filter
to Bilinear (averaging/non-zero phase) for all layers on
init (vp9_init_layer_context):.

Change-Id: Ic7407810b34c621e7e7420682508d45478bdffcf

6 years agoFurther change to code detecting slide transitions.
paulwilkins [Mon, 15 Jan 2018 12:00:01 +0000 (12:00 +0000)]
Further change to code detecting slide transitions.

Eliminate false positives in previous patch.

The previous patch did a good job of detecting slide transitions but
in discussions a number of situations were identified that might trigger
harmful false positives. This risk seems to be born out by some testing
on a wider YT set done by yclin@.

This patch adds an additional clause that requires that the best case
inter and intra error for the frame are very similar,meaning it is almost
as easy to code a key frame as an inter frame. This will certainly prevent
the false positive conditions that Jim and I discussed and even if one
does occur it should not be very damaging.

The down side is that this clause may mean that we still miss some
real slide transitions, especially if the images are small and similar.  If this
proves to be the case then some further adjustment of the threshold may be
required. However, in the specific problem sample provided we do  trap every
transition correctly.

Change-Id: I7e5e79e52dc09bc47917565bf00cc44e5cddd44c

6 years agovp9 svc: Make top layer non-ref: for 2 TL case
Marco Paniconi [Wed, 31 Jan 2018 16:56:04 +0000 (16:56 +0000)]
vp9 svc: Make top layer non-ref: for 2 TL case

Only affects 2 temporal layer case.
Modified the flags for 2 temporal layers to make
top layer (top spatial, top temporal) a non-reference
frame, conistent with the 3 TL case.

Add mismatch check to the datarate test of changing
svc pattern on the fly, which is test for 2 temporal
layers.

This re-applies the change: 254e2f5501d,
that was reverted in: 658eb1d675.

Change-Id: Ib5fd4a7a0312c0c05329ae75baac480af34b4694

6 years agoMerge "Revert "vp9 svc: fix to make top layer frame non-ref""
Marco Paniconi [Wed, 31 Jan 2018 16:49:42 +0000 (16:49 +0000)]
Merge "Revert "vp9 svc: fix to make top layer frame non-ref""

6 years agoRevert "vp9 svc: fix to make top layer frame non-ref"
Marco Paniconi [Wed, 31 Jan 2018 16:49:16 +0000 (16:49 +0000)]
Revert "vp9 svc: fix to make top layer frame non-ref"

This reverts commit 254e2f5501d000ca66bc65c5f44bb6a882d4167c.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> vp9 svc: fix to make top layer frame non-ref
>
> Add mismatch check to the datarate test of changing svc pattern on the
> fly.
>
> Change-Id: I6a878736de44e6a40c077ed6430aabd7fadabdd9

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

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

6 years agoMerge "Fix warning about bitwise 'not' on boolean"
Johann Koenig [Wed, 31 Jan 2018 14:25:13 +0000 (14:25 +0000)]
Merge "Fix warning about bitwise 'not' on boolean"

6 years agoMerge "vp8 bool: verify buffer size"
Johann Koenig [Wed, 31 Jan 2018 14:23:49 +0000 (14:23 +0000)]
Merge "vp8 bool: verify buffer size"

6 years agoFix warning about bitwise 'not' on boolean
Johann [Tue, 9 Jan 2018 20:46:45 +0000 (12:46 -0800)]
Fix warning about bitwise 'not' on boolean

cherry-picked from libaom:
commit cf26ee5ad2b9da79fa68c33b7d22ff53c66d6509
Author: Sebastien Alaiwan <sebastien.alaiwan@allegrodvt.com>
Date: Wed, 4 Oct 2017 10:09:13 +0200

BUG=webm:1491

Change-Id: I36c6e83ed716649f3d9ee10ce3aa9bb847cac2d9

6 years agovp8 bool: verify buffer size
Johann [Tue, 30 Jan 2018 19:12:08 +0000 (11:12 -0800)]
vp8 bool: verify buffer size

In the process of fixing a ubsan warning:
  commit 738b829b8cdf079a5fa48c74a28a177c9567d212
  Fix incorrect size reading
the inferred check of start < end was removed. This causes fuzzed files
to get a little further and segfault in vp8dx_start_decode.

Change-Id: I316e23058753ba42dbcc46d27eb575f51c8a9e9a

6 years agoMerge "vp9 svc: fix to make top layer frame non-ref"
Marco Paniconi [Tue, 30 Jan 2018 16:56:42 +0000 (16:56 +0000)]
Merge "vp9 svc: fix to make top layer frame non-ref"

6 years agoMerge "Fix doc comment mismatch in vpx_frame_buffer.h"
Johann Koenig [Tue, 30 Jan 2018 15:32:22 +0000 (15:32 +0000)]
Merge "Fix doc comment mismatch in vpx_frame_buffer.h"

6 years agovp9 svc: fix to make top layer frame non-ref
Jerome Jiang [Tue, 30 Jan 2018 00:38:28 +0000 (16:38 -0800)]
vp9 svc: fix to make top layer frame non-ref

Add mismatch check to the datarate test of changing svc pattern on the
fly.

Change-Id: I6a878736de44e6a40c077ed6430aabd7fadabdd9

6 years agoMerge "Update vp9_iht8x8_64_add_neon()"
Linfeng Zhang [Tue, 30 Jan 2018 01:20:41 +0000 (01:20 +0000)]
Merge "Update vp9_iht8x8_64_add_neon()"

6 years agoMerge "Datarate test for usage of SVC_SET_REF_FRAME_CONFIG"
Jerome Jiang [Tue, 30 Jan 2018 00:01:46 +0000 (00:01 +0000)]
Merge "Datarate test for usage of SVC_SET_REF_FRAME_CONFIG"

6 years agoUpdate vp9_iht8x8_64_add_neon()
Linfeng Zhang [Mon, 29 Jan 2018 23:17:08 +0000 (15:17 -0800)]
Update vp9_iht8x8_64_add_neon()

Change-Id: Ie70ed8b9273df5e1fd06bc93cb469e80630941d2

6 years agoFix doc comment mismatch in vpx_frame_buffer.h
Brion Vibber [Mon, 29 Jan 2018 23:13:09 +0000 (15:13 -0800)]
Fix doc comment mismatch in vpx_frame_buffer.h

When compiling an app using libvpx in Xcode 9.2, a warning is
thrown in vpx_frame_buffer.h:

  "Parameter 'new_size' not found in the function declaration"

Switching it to 'min_size' to match the comment text and the
callback type definition prototype resolves it.

Change-Id: I7a3e4a857c2007c2d0d390e22054d7bc85068aa1

6 years agoDatarate test for usage of SVC_SET_REF_FRAME_CONFIG
Jerome Jiang [Thu, 25 Jan 2018 18:43:00 +0000 (10:43 -0800)]
Datarate test for usage of SVC_SET_REF_FRAME_CONFIG

Change-Id: Iea7fc1b6cea84826eb45b1f01bd923323c2c9a6f

6 years agoMerge changes Ica8dbe5f,I8f4e0fc6
Linfeng Zhang [Mon, 29 Jan 2018 20:16:47 +0000 (20:16 +0000)]
Merge changes Ica8dbe5f,I8f4e0fc6

* changes:
  Update vp9_iht4x4_16_add_neon()
  Clean dct_const_round_shift() related neon code

6 years agoMerge remote-tracking branch 'origin/mandarinduck' into HEAD
Johann [Mon, 29 Jan 2018 19:57:00 +0000 (11:57 -0800)]
Merge remote-tracking branch 'origin/mandarinduck' into HEAD

The following changes were not carried back from the release branch:
  commit f87a4594fbd0b19071a2befebf52d3f5fabd1a9e
  Revert "Add frame width & height to frame pkt. Add test."

  commit c5dc3373dbd442ea299bacf276c4258fa7ce0559
  work around pic issue with gcc 6

BUG=webm:1490

Change-Id: Id3e15983d5565680c05a0c454544003a615a4d7f

6 years agoUpdate vp9_iht4x4_16_add_neon()
Linfeng Zhang [Wed, 24 Jan 2018 21:54:55 +0000 (13:54 -0800)]
Update vp9_iht4x4_16_add_neon()

Change-Id: Ica8dbe5f8167e5d370d89d233c598b70bba123b7

6 years agoClean dct_const_round_shift() related neon code
Linfeng Zhang [Wed, 24 Jan 2018 21:05:39 +0000 (13:05 -0800)]
Clean dct_const_round_shift() related neon code

Change-Id: I8f4e0fc6ecb77b623519f2dd3cd2886f89218ddd

6 years agoMerge "cosmetic: clean idct neon functions"
Linfeng Zhang [Mon, 29 Jan 2018 17:34:11 +0000 (17:34 +0000)]
Merge "cosmetic: clean idct neon functions"

6 years agoMerge "Fix incorrect size reading"
Johann Koenig [Sat, 27 Jan 2018 01:42:58 +0000 (01:42 +0000)]
Merge "Fix incorrect size reading"

6 years agoFix incorrect size reading
Johann [Fri, 26 Jan 2018 23:50:50 +0000 (15:50 -0800)]
Fix incorrect size reading

Cherry pick from vp9:

commit 85770264ac891505730dcd5092d1993a62c74060
Guard against incorrect size values moving *data past data_end.

Check read length against the difference of the buffers.

Change-Id: I5e8679ddd447c4d73deb80be5ec94841a92c5fcd

6 years agoMerge "vp9 svc: Update temporal_layering_mode in config change."
Jerome Jiang [Fri, 26 Jan 2018 22:45:39 +0000 (22:45 +0000)]
Merge "vp9 svc: Update temporal_layering_mode in config change."

6 years agovp9 svc: Update temporal_layering_mode in config change.
Jerome Jiang [Fri, 26 Jan 2018 21:38:04 +0000 (13:38 -0800)]
vp9 svc: Update temporal_layering_mode in config change.

temporal_layering_mode can be changed on the fly.

BUG=webm:1488

Change-Id: I223fd4085184e41878ddf0f9244d2e3d07636ae3

6 years agovp9-svc: Adjust logic on intra mode search.
Marco [Fri, 26 Jan 2018 03:00:31 +0000 (19:00 -0800)]
vp9-svc: Adjust logic on intra mode search.

For SVC, on spatial enhancement layer, intra
search was disabled unless best reference frame
is golden (i.e., spatial/inter-layer prediction),
except for some other conditions (lower layer is key
or golden is not an allowed reference).

Fix is to add the base temporal layer condition,
so intra search will not be force-disabled for base
temporal layer frames.

This improves metrics (-1-2%) for SVC 3 and 2 layer config.
Some small encode time is expected, but since condition
only affect base temporal layers (i.e., every 4 frames
for 3 layers), increase is small.

Change-Id: I10b824faef99560dfdeeb02ba8bf8e3e1eea6255

6 years agovp9-svc: Add QP dependency to thresh_svc_skip_golden.
Marco [Thu, 25 Jan 2018 01:12:43 +0000 (17:12 -0800)]
vp9-svc: Add QP dependency to thresh_svc_skip_golden.

In nonrd-pickmode: the golden/spatial reference for inter-layer
prediction may be skipped in the mode testing. Add QP dependency
to reduce the threshold for skipping (i.e., check it more often)
at high QP, if the lower layer was encoded at lower QP relative
to the current layer.

At high QP, a better quality lower resolution is more likely to
provide good spatial (inter-layer) prediction.

avgPSNR/SSIM metrics up by ~1% (all clips positive gain or neutral).
Some decrease in encode time (~1-2%) expected at lower bitrates,
for 3 layer SVC.

Change-Id: I9ee0f62d4b10d4ebd30165d378ecfa4399ae5ef1

6 years agoMerge "vp9: Fix to vp9_svc sample encoder for bypass mode."
Marco Paniconi [Wed, 24 Jan 2018 23:56:48 +0000 (23:56 +0000)]
Merge "vp9: Fix to vp9_svc sample encoder for bypass mode."

6 years agoMerge "remove obsolete doxygen tags"
Johann Koenig [Wed, 24 Jan 2018 23:44:12 +0000 (23:44 +0000)]
Merge "remove obsolete doxygen tags"

6 years agovp9: Fix to vp9_svc sample encoder for bypass mode.
Marco [Wed, 24 Jan 2018 23:16:34 +0000 (15:16 -0800)]
vp9: Fix to vp9_svc sample encoder for bypass mode.

This fix makes it bitexact to the default SVC pattern,
for the example 2 temporal layer case.

Change-Id: I4df2063b70f7aecbfc7082f29c8439e05f6db8ac

6 years agoMerge "BUG FIX: sse2 subpel variance is not PIC compliant"
Scott LaVarnway [Wed, 24 Jan 2018 22:54:42 +0000 (22:54 +0000)]
Merge "BUG FIX: sse2 subpel variance is not PIC compliant"

6 years agoremove obsolete doxygen tags
Johann [Wed, 24 Jan 2018 22:29:07 +0000 (14:29 -0800)]
remove obsolete doxygen tags

warning: Tag `XML_SCHEMA' at line 941 of file `doxyfile' has become obsolete.

warning: Tag `XML_DTD' at line 947 of file `doxyfile' has become obsolete.

Change-Id: I85e39c4fb154569b8d7f68bdf362408983e9bd4f

6 years agoRelease 1.7.0 Mandarin Duck v1.7.0
Johann [Thu, 4 Jan 2018 18:54:28 +0000 (10:54 -0800)]
Release 1.7.0 Mandarin Duck

Change-Id: I186440f3643a85694f45400393efb661f6d012fc

6 years agocosmetic: clean idct neon functions
Linfeng Zhang [Wed, 24 Jan 2018 00:03:50 +0000 (16:03 -0800)]
cosmetic: clean idct neon functions

Change-Id: I9c7c52567850aded0437b13ba1260e94441bc49d

6 years agoMerge "vp9-svc: Re-adjust some aq-mode=3 control parameters."
Marco Paniconi [Wed, 24 Jan 2018 20:29:10 +0000 (20:29 +0000)]
Merge "vp9-svc: Re-adjust some aq-mode=3 control parameters."

6 years agoBUG FIX: sse2 subpel variance is not PIC compliant
Scott LaVarnway [Sat, 13 Jan 2018 15:01:04 +0000 (07:01 -0800)]
BUG FIX: sse2 subpel variance is not PIC compliant

BUG=webm:1464

Change-Id: Ibc15bac54aaf509365bed5892a26a29972ad3540

6 years agoMerge "vp9_quantize_fp_avx2()"
Scott LaVarnway [Wed, 24 Jan 2018 13:58:08 +0000 (13:58 +0000)]
Merge "vp9_quantize_fp_avx2()"

6 years agovp9-svc: Re-adjust some aq-mode=3 control parameters.
Marco [Wed, 24 Jan 2018 04:03:19 +0000 (20:03 -0800)]
vp9-svc: Re-adjust some aq-mode=3 control parameters.

Remove an adjustment to two cyclic refresh (aq-mode= 3)
parameters for SVC. The adjustment was to reduce the
delta-qp on second segment, and reduce the motion threshold.
This was done early on in the SVC encoder development,
in the latest codebase removing this adjustment yields
some improvements in metrics.

The avgPSNR/SSIM metrics increase on average by ~1%
(most clip positive gain), for 3 and 2 layer SVC.

Change-Id: I7a4d5114f16b2a1df383dbe6b3fe02940e29e6cc

6 years agoMerge "update .clang-format for v5.0.0"
Johann Koenig [Wed, 24 Jan 2018 04:03:23 +0000 (04:03 +0000)]
Merge "update .clang-format for v5.0.0"

6 years agovpx_codec_enc_init_multi: fix segfault w/vp9
James Zern [Tue, 23 Jan 2018 21:01:23 +0000 (13:01 -0800)]
vpx_codec_enc_init_multi: fix segfault w/vp9

vp9 does not support multi-res encoding, the request should not crash.

+ encode_api_test: unconditionally expose multi-res test

vpx_codec_enc_init_multi should fail independent of
CONFIG_MULTI_RES_ENCODING if not for the same reason.

Change-Id: I44fc58ef70ee4e0e482cb6a5736885f4cb2a8517
(cherry picked from commit 004fb91416e355986dc098883791becf39ffc1f7)

6 years agoFix crash invalid params for vp8 multres. Add test.
Jerome Jiang [Wed, 17 Jan 2018 19:23:55 +0000 (11:23 -0800)]
Fix crash invalid params for vp8 multres. Add test.

Fix is from the patch in the issue.
Release memories allocated before early exit.

BUG=webm:1482

Change-Id: I64952af99c58241496e03fa55da09fd129a07c77
(cherry picked from commit 5b6ae020b6a972b67b59b3dbf7cf9cbd3140a80d)

6 years agoMerge "vpx_codec_enc_init_multi: fix segfault w/vp9"
James Zern [Wed, 24 Jan 2018 02:12:00 +0000 (02:12 +0000)]
Merge "vpx_codec_enc_init_multi: fix segfault w/vp9"

6 years agoMerge "Fix frame sizes in pkt to support spatial layers."
Jerome Jiang [Wed, 24 Jan 2018 01:12:44 +0000 (01:12 +0000)]
Merge "Fix frame sizes in pkt to support spatial layers."

6 years agoMerge "vp8: [loongson] fix bug of type conflict."
Shiyou Yin [Wed, 24 Jan 2018 01:06:42 +0000 (01:06 +0000)]
Merge "vp8: [loongson] fix bug of type conflict."

6 years agovpx_codec_enc_init_multi: fix segfault w/vp9
James Zern [Tue, 23 Jan 2018 21:01:23 +0000 (13:01 -0800)]
vpx_codec_enc_init_multi: fix segfault w/vp9

vp9 does not support multi-res encoding, the request should not crash.

+ encode_api_test: unconditionally expose multi-res test

vpx_codec_enc_init_multi should fail independent of
CONFIG_MULTI_RES_ENCODING if not for the same reason.

Change-Id: I44fc58ef70ee4e0e482cb6a5736885f4cb2a8517

6 years agoupdate .clang-format for v5.0.0
Johann [Tue, 23 Jan 2018 21:37:42 +0000 (13:37 -0800)]
update .clang-format for v5.0.0

Change-Id: Id43e8ce9cf3790b728683acc9686e246ccaa90cf

6 years agoAdd vp9_highbd_iht16x16_256_add_sse4_1()
Linfeng Zhang [Tue, 23 Jan 2018 17:47:34 +0000 (09:47 -0800)]
Add vp9_highbd_iht16x16_256_add_sse4_1()

BUG=webm:1413

Change-Id: I8d7eeae1bd219eb848c1a86071046a477f7a91af

6 years agoMerge "Add "vpx_" prefix to 2 idct x86 functions"
Linfeng Zhang [Tue, 23 Jan 2018 18:28:59 +0000 (18:28 +0000)]
Merge "Add "vpx_" prefix to 2 idct x86 functions"

6 years agoMerge "Fix crash invalid params for vp8 multres. Add test."
Jerome Jiang [Tue, 23 Jan 2018 17:25:28 +0000 (17:25 +0000)]
Merge "Fix crash invalid params for vp8 multres. Add test."

6 years agoAdd "vpx_" prefix to 2 idct x86 functions
Linfeng Zhang [Tue, 23 Jan 2018 17:17:38 +0000 (09:17 -0800)]
Add "vpx_" prefix to 2 idct x86 functions

Change-Id: I4f3052d8748e16b06e9155f8daf22f867dfaa7a3

6 years agoMerge "Add vp9_highbd_iht8x8_64_add_sse4_1()"
Linfeng Zhang [Tue, 23 Jan 2018 17:04:20 +0000 (17:04 +0000)]
Merge "Add vp9_highbd_iht8x8_64_add_sse4_1()"

6 years agovp8: [loongson] fix bug of type conflict.
Shiyou Yin [Tue, 23 Jan 2018 03:33:25 +0000 (11:33 +0800)]
vp8: [loongson] fix bug of type conflict.

In commit 577d4fa79, int8_t was used to replace char. This will result in a
compilation error, for int8_t was typedefined to signed char, but not char.

Change-Id: I5c9837e01b0b58688a7741f5c9a99a76ca887e4a

6 years agoFix frame sizes in pkt to support spatial layers.
Jerome Jiang [Mon, 22 Jan 2018 23:34:59 +0000 (15:34 -0800)]
Fix frame sizes in pkt to support spatial layers.

Add test for svc frame sizes in pkt.

BUG=webm:1485

Change-Id: I983dc229e526d72d22360d7f3016d8358d6beae7

6 years agoFix crash invalid params for vp8 multres. Add test.
Jerome Jiang [Wed, 17 Jan 2018 19:23:55 +0000 (11:23 -0800)]
Fix crash invalid params for vp8 multres. Add test.

Fix is from the patch in the issue.
Release memories allocated before early exit.

BUG=webm:1482

Change-Id: I64952af99c58241496e03fa55da09fd129a07c77

6 years agoMerge changes from topic "clang-format"
Johann Koenig [Mon, 22 Jan 2018 19:38:42 +0000 (19:38 +0000)]
Merge changes from topic "clang-format"

* changes:
  clang-format v5.0.0 vp9/
  remove spurious comments
  clang-format v5.0.0 vp8/
  clang-format v5.0.0 vpx_dsp/
  clang-format v5.0.0 mem_ops.h
  clang-format v5.0.0 vpx_util/vpx_atomic.h
  clang-format v5.0.0 y4minput.c
  clang-format v5.0.0 vpxenc.c
  clang-format v5.0.0 examples/
  clang-format v5.0.0 test/

6 years agoAdd vp9_highbd_iht8x8_64_add_sse4_1()
Linfeng Zhang [Thu, 18 Jan 2018 23:48:19 +0000 (15:48 -0800)]
Add vp9_highbd_iht8x8_64_add_sse4_1()

BUG=webm:1413

Change-Id: Id9038226902b2d793fc6c17ac81bb104c1a18988

6 years agovp9_quantize_fp_avx2()
Scott LaVarnway [Fri, 17 Nov 2017 20:34:24 +0000 (12:34 -0800)]
vp9_quantize_fp_avx2()

Started from vp9_quantize_fp_sse2 and tweaked to use avx2.

Change-Id: Ic2da50cc9d73896c7ef2f3cd3db5b1c5d7795b8b

6 years agoclang-format v5.0.0 vp9/
Johann [Fri, 12 Jan 2018 17:39:53 +0000 (09:39 -0800)]
clang-format v5.0.0 vp9/

Remove trailing commas to keep multiple elements on one line.

Add blank lines to prevent comments from being treated as blocks.

clang-format guards for struct with a comment in the middle.

Change-Id: I3bcb8313ae8aaf69179249a13b4087b1272cdbc0

6 years agoremove spurious comments
Johann [Fri, 12 Jan 2018 17:14:30 +0000 (09:14 -0800)]
remove spurious comments

These don't appear to make any sense given their context. The
commit log also does not reveal anything.

Discovered due to spurious clang-format indenting:
https://bugs.llvm.org/show_bug.cgi?id=35930

Change-Id: I732a66056ba4c05e3e132a2f236fe10f7a282900

6 years agoclang-format v5.0.0 vp8/
Johann [Fri, 12 Jan 2018 17:12:42 +0000 (09:12 -0800)]
clang-format v5.0.0 vp8/

Allow*OnASingleLine appears to no longer apply to
typedef structs.

Adjust closing parenthesis/opening brace on functions.

Remove trailing commas to keep multiple elements on one line.

Change-Id: I6e535a8ddb15c9b3de8216ce8ddb2a18241af46c

6 years agoclang-format v5.0.0 vpx_dsp/
Johann [Fri, 12 Jan 2018 16:42:52 +0000 (08:42 -0800)]
clang-format v5.0.0 vpx_dsp/

Remove comments above #define statements because they get
indented unnecessarily.
https://bugs.llvm.org/show_bug.cgi?id=35930

Add blank lines to prevent comments from being treated as
blocks.

Change-Id: I04dce21b2a10e13b8dc07411a0019c098f6dd705

6 years agovp8: Fix to multi-res-encoder for skipping streams.
Marco [Tue, 16 Jan 2018 19:37:40 +0000 (11:37 -0800)]
vp8: Fix to multi-res-encoder for skipping streams.

For the vp8 simulcast/multi-res-encoder:

Add flags to keep track of the disabling/skipping of
streams for the multi-res-encoder. And if the lower spatial
stream is skipped for a given stream, disable the motion
vector reuse for that stream.

Also remove the condition of forcing same frame type
across all streams.

This fix allows for the skipping/disabling of the base
or middle layer streams.

Change-Id: Idfa94b32b6d2256932f6602cde19579b8e50a8bd

6 years agoMerge "Revert "Add frame width & height to frame pkt. Add test."" into mandarinduck
Johann Koenig [Wed, 17 Jan 2018 20:17:33 +0000 (20:17 +0000)]
Merge "Revert "Add frame width & height to frame pkt. Add test."" into mandarinduck

6 years agoRevert "Add frame width & height to frame pkt. Add test."
Johann [Wed, 17 Jan 2018 19:26:31 +0000 (11:26 -0800)]
Revert "Add frame width & height to frame pkt. Add test."

This reverts commit bd1d995cd38b4e31a01356079f1d94067273eb28.

Remove the feature from the release as it requires additional work.

BUG=webm:1485

Change-Id: I1a01ac2525703af97a456a3eed85718306c0f734

6 years agovp8dx.h: Add macro for skipping loop filter
Vignesh Venkatasubramanian [Tue, 16 Jan 2018 23:42:43 +0000 (15:42 -0800)]
vp8dx.h: Add macro for skipping loop filter

Without this applications cannot use the vpx_codec_control macro
for VP9_SET_SKIP_LOOP_FILTER. The tests only cover the underscored
version vpx_codec_control_().

Change-Id: I3e6c1888307b76636fdc1a8deae70b5c14238163
(cherry picked from commit 373e08f921e5bfd5a96963fabbbbe16ec793d44e)

6 years agovp8dx.h: Add macro for skipping loop filter
Vignesh Venkatasubramanian [Tue, 16 Jan 2018 23:42:43 +0000 (15:42 -0800)]
vp8dx.h: Add macro for skipping loop filter

Without this applications cannot use the vpx_codec_control macro
for VP9_SET_SKIP_LOOP_FILTER. The tests only cover the underscored
version vpx_codec_control_().

Change-Id: I3e6c1888307b76636fdc1a8deae70b5c14238163

6 years agoFix bug in use of zoom metric as part of arf breakout.
paulwilkins [Thu, 4 Jan 2018 16:02:42 +0000 (16:02 +0000)]
Fix bug in use of zoom metric as part of arf breakout.

The in/out (or zoom metrics) in accumulate_frame_motion_stats()
are in effect a % of the blocks that have a motion vector pointing
either towards or away from the center. As such they are already
normalized in terms of image size and the thresholds against which
these are tested should be image size independent.

In practice a zoom either in or out is an indicator for a shorter group
length so the abs value is more important as a breakout clause.

This patch fixes the threshold test. Clips without noticeable zoom show
no effect but some  with strong zooms such as "station" show a big
gain (5-10%). Average psnr-hvs gain on hdres set was 0.292%

Change-Id: I4f97a72b0e273e4e844ade15285749c32cd81c1c
(cherry picked from commit 0226ce79e9389ccf7d10ed7acacba6840ad911c9)

6 years agoMerge "Add zoom break out for kf boost loop."
Paul Wilkins [Fri, 12 Jan 2018 18:45:28 +0000 (18:45 +0000)]
Merge "Add zoom break out for kf boost loop."

6 years agoMerge "Fix kf detection in some slide shows."
Paul Wilkins [Fri, 12 Jan 2018 18:45:13 +0000 (18:45 +0000)]
Merge "Fix kf detection in some slide shows."

6 years agoclang-format v5.0.0 mem_ops.h
Johann [Thu, 11 Jan 2018 23:20:08 +0000 (15:20 -0800)]
clang-format v5.0.0 mem_ops.h

Remove trailing empty line to keep the comment from being indented.
https://bugs.llvm.org/show_bug.cgi?id=35930

Change-Id: I6c51f7afb4cc47f03a190b4c90e29e4ff1e0c689

6 years agoclang-format v5.0.0 vpx_util/vpx_atomic.h
Johann [Thu, 11 Jan 2018 23:17:29 +0000 (15:17 -0800)]
clang-format v5.0.0 vpx_util/vpx_atomic.h

Allow*OnASingleLine appears to no longer apply to
typedef structs.

Change-Id: If10db1c30c74ee31dad1a0b1926964e850f15fd2

6 years agoclang-format v5.0.0 y4minput.c
Johann [Thu, 11 Jan 2018 23:08:25 +0000 (15:08 -0800)]
clang-format v5.0.0 y4minput.c

Remove trailing empty line to keep the comment from being indented.
https://bugs.llvm.org/show_bug.cgi?id=35930

Change-Id: If0f0862623b3fa3ae49e850edbbed52c2b4c6672

6 years agoclang-format v5.0.0 vpxenc.c
Johann [Thu, 11 Jan 2018 23:06:32 +0000 (15:06 -0800)]
clang-format v5.0.0 vpxenc.c

Treat the formatted string as one distinct parameter to fprintf

Change-Id: I62cfd5657c4cefc6b3fa45247ba9f33515a292b1

6 years agoclang-format v5.0.0 examples/
Johann [Thu, 11 Jan 2018 22:55:06 +0000 (14:55 -0800)]
clang-format v5.0.0 examples/

Attempts to group () expression on their own line.

Change-Id: I404f9dd1a91aaa2100925c90162bcdefbead5ad2

6 years agoclang-format v5.0.0 test/
Johann [Thu, 11 Jan 2018 22:05:35 +0000 (14:05 -0800)]
clang-format v5.0.0 test/

Remove trailing commas to keep multiple elements on one line.

Remove trailing empty lines to keep comments from being indented.
https://bugs.llvm.org/show_bug.cgi?id=35930

Change-Id: I0a66dde95f2a304f13cb85a2e9197afca20051e8

6 years agoMerge "Add quantize_fp_32x32_nz_c()"
Scott LaVarnway [Thu, 11 Jan 2018 23:05:33 +0000 (23:05 +0000)]
Merge "Add quantize_fp_32x32_nz_c()"

6 years agoMerge "vp9: Skip encoding of enhancement layers on the fly."
Marco Paniconi [Thu, 11 Jan 2018 22:08:49 +0000 (22:08 +0000)]
Merge "vp9: Skip encoding of enhancement layers on the fly."

6 years agoadopt some clang 5.0.0 formatting
Johann [Thu, 28 Dec 2017 22:57:02 +0000 (14:57 -0800)]
adopt some clang 5.0.0 formatting

At least the changes that don't conflict with 4.0.1

Change-Id: I9b6a7c14dadc0738cd0f628a10ece90fc7ee89fd

6 years agovp9: Skip encoding of enhancement layers on the fly.
Marco [Wed, 10 Jan 2018 00:35:29 +0000 (16:35 -0800)]
vp9: Skip encoding of enhancement layers on the fly.

For SVC: if an enhancement layer (spatial_layer > 0)
has 0 bandwidth, skip/drop the encoding of the layer.
This allows the application to dynamically disable
higher layers for SVC.

Add flag to signal the skip encoding, this is needed
to modify the packing of the superframe when the top
layer is skipped/dropped.

Also moved some updates (current_video_frame counter and
the last_avg_frame_bandwidth) to the postencode_update_drop_frame().

Added datarate unittest for dynamically going from 3 to 2
and then back to 3 spatial layers.

Change-Id: Idaccdb4aca25ba1d822ed1b4219f94e2e8640d43

6 years ago[CFI] Remove function pointer casts
Vlad Tsyrklevich [Wed, 10 Jan 2018 23:53:09 +0000 (15:53 -0800)]
[CFI] Remove function pointer casts

Control Flow Integrity [1] indirect call checking verifies that function
pointers only call valid functions with a matching type signature. This
change eliminates some function pointer casts that I missed in my last
CL https://crrev.com/c/780144.

BUG=chromium:776905

[1] https://www.chromium.org/developers/testing/control-flow-integrity

Change-Id: I1c7adbdfffa4fe0b62e993bfb31d06e64b022d66

6 years agoMerge "Fix bug in use of zoom metric as part of arf breakout."
Paul Wilkins [Wed, 10 Jan 2018 17:33:00 +0000 (17:33 +0000)]
Merge "Fix bug in use of zoom metric as part of arf breakout."

6 years agoAdd zoom break out for kf boost loop.
paulwilkins [Tue, 9 Jan 2018 15:51:28 +0000 (15:51 +0000)]
Add zoom break out for kf boost loop.

Adds a breakout threshold to key frame boost loop.

This reduces the boost somewhat in cases where there is a
significant zoom component. In tests most clips no effect
but a sizable gain for some clips like station.

Change-Id: I8b7a4d57f7ce5f4e3faab3f5688f7e4d61679b9a