platform/upstream/libvpx.git
6 years agovp9-svc: Add memset on the svc fb_idx.
Marco Paniconi [Fri, 4 May 2018 02:42:08 +0000 (19:42 -0700)]
vp9-svc: Add memset on the svc fb_idx.

The memset is added to better handle frame drops
with the GET_SVC_REF_FRAME_CONFIG contro

There is an issue with some tests in bypass mode,
so condition it on that for now.

Change-Id: I2635037143f14ff62a36be7c22b2b604a0c1efc2

6 years agovp9-svc: On key frame update all reference slots for SVC.
Marco Paniconi [Thu, 3 May 2018 01:04:35 +0000 (18:04 -0700)]
vp9-svc: On key frame update all reference slots for SVC.

Key frame updates the slots corresponding to the 3 references
last/golden/altref, but for SVC where more references buffers
may be in use, especialy for dynamically swithing up/down in layers,
make sure we should update all 8 slots on key frame.

Change-Id: Ifcca12608f420d5bae32b92794a3afe9b6369f77

6 years agoMerge "Clean switch cases in vp9 encoder"
Linfeng Zhang [Wed, 2 May 2018 20:01:59 +0000 (20:01 +0000)]
Merge "Clean switch cases in vp9 encoder"

6 years agoMerge "vp9: [loongson] optimize vpx_convolve8 with mmi"
xiwei gu [Wed, 2 May 2018 08:54:24 +0000 (08:54 +0000)]
Merge "vp9: [loongson] optimize vpx_convolve8 with mmi"

6 years agoClean switch cases in vp9 encoder
Linfeng Zhang [Wed, 2 May 2018 00:57:51 +0000 (17:57 -0700)]
Clean switch cases in vp9 encoder

To save a branch.

Change-Id: Ifa2be7583e95c6991784731c654bbd4cce31e993

6 years agoMerge "Update variance_test.cc"
James Zern [Sat, 28 Apr 2018 05:52:45 +0000 (05:52 +0000)]
Merge "Update variance_test.cc"

6 years agoUpdate variance_test.cc
Linfeng Zhang [Wed, 25 Apr 2018 23:04:45 +0000 (16:04 -0700)]
Update variance_test.cc

Change-Id: I1301781f0f2528a61ad2b5c2828404b2b3e3e8b9

6 years agovp9-svc: Remove the memset on the svc fb_idx.
Marco Paniconi [Fri, 27 Apr 2018 22:35:31 +0000 (15:35 -0700)]
vp9-svc: Remove the memset on the svc fb_idx.

This fixes failures on the datarate tests for
temporal layers with frame dropping.

The memset was only added to better handle frame drops
with the GET_SVC_REF_FRAME_CONFIG control from 43c58df3.
So ok to remove it for now.

Change-Id: I256d9ac4278b93fe6f39b94cce2e458a1a5eff69

6 years agoMerge "VP9 SVC: Add new level to constrain inter-layer pred."
Marco Paniconi [Fri, 27 Apr 2018 04:55:22 +0000 (04:55 +0000)]
Merge "VP9 SVC: Add new level to constrain inter-layer pred."

6 years agoMerge "Respect MV limit in vp9_int_pro_motion_estimation()"
Hui Su [Fri, 27 Apr 2018 04:41:52 +0000 (04:41 +0000)]
Merge "Respect MV limit in vp9_int_pro_motion_estimation()"

6 years agoVP9 SVC: Add new level to constrain inter-layer pred.
Jerome Jiang [Wed, 25 Apr 2018 18:33:24 +0000 (11:33 -0700)]
VP9 SVC: Add new level to constrain inter-layer pred.

Add another level (INTER_LAYER_PRED_ON_CONSTRAINED) to the
inter-layer prediction control. This new level enforces the
condition that a given spatial layer S can only do inter-layer
prediction from the previous spatial layer (S - 1) from the same
time/superframe.

BUG=webm:1526

Change-Id: I0a1ec95b2c220c7b13a9a425d5fb0a8814c23c70

6 years agovp9-svc: Remove unneeded call and init some parameters.
Marco Paniconi [Fri, 27 Apr 2018 00:32:22 +0000 (17:32 -0700)]
vp9-svc: Remove unneeded call and init some parameters.

Remove the unneeded vp9_copy_flags_ref_update_idx(cpi),
and initialize the struct parameters needed for the
GET_SVC_REF_FRAME_CONFIG. This init is useful for the case
for spatial layer frame drops.

Change-Id: If89e8349f6246c33720ecbb758d41a932d21e496

6 years agoMerge "Do one level less of transform search for large blocks"
Hui Su [Thu, 26 Apr 2018 23:58:33 +0000 (23:58 +0000)]
Merge "Do one level less of transform search for large blocks"

6 years agoRespect MV limit in vp9_int_pro_motion_estimation()
Hui Su [Thu, 26 Apr 2018 20:31:43 +0000 (13:31 -0700)]
Respect MV limit in vp9_int_pro_motion_estimation()

Change-Id: I08cb072a32e06c6452eca068b2f7ef7287f221e6

6 years agoDo one level less of transform search for large blocks
Hui Su [Wed, 25 Apr 2018 05:42:54 +0000 (22:42 -0700)]
Do one level less of transform search for large blocks

If block size is larger than 32x32, search transform size for one level
less than the other blocks.

This mainly affects speed 0 and 1, as speed >= 2 uses largest transform
size(except for keyframes and alt-ref frames).

Compression(negative means gain):
        speed 0     speed 1
lowres  -0.007%       0.00%
midres   0.023%     -0.011%
hdres    0.002%     -0.016%

Encoder speed:
Tested on crowd_run_1080p 30 frames
Fixed QP = 30, speed 0: 582.5s -> 564.6s
               speed 1:  75.0s ->  73.3s

Change-Id: I46622efafe0e88d502efa1480a5324ead1d1e8d0

6 years agoMerge "Calculate transform size cost once per frame"
Hui Su [Wed, 25 Apr 2018 16:25:58 +0000 (16:25 +0000)]
Merge "Calculate transform size cost once per frame"

6 years agoMerge "Add speed feture to control tx size search depth"
Hui Su [Wed, 25 Apr 2018 16:25:40 +0000 (16:25 +0000)]
Merge "Add speed feture to control tx size search depth"

6 years agoMerge "vp9-svc: Add GET control to get SVC pattern info."
Jerome Jiang [Wed, 25 Apr 2018 04:59:10 +0000 (04:59 +0000)]
Merge "vp9-svc: Add GET control to get SVC pattern info."

6 years agovp9-svc: Add GET control to get SVC pattern info.
Marco Paniconi [Tue, 24 Apr 2018 04:03:47 +0000 (21:03 -0700)]
vp9-svc: Add GET control to get SVC pattern info.

Copy ref frame index in SVC struct after set in encoder.
Rename ext_{lst,gld,alt}_fb_idx to {lst,gld,alt}_fb_idx.

Bump up ABI version.

BUG=webm:1527

Change-Id: I06209040cb83d374030f40b79f0b36b0efe9f97d

6 years agovp9: [loongson] optimize vpx_convolve8 with mmi
guxiwei-hf@loongson.cn [Wed, 25 Apr 2018 01:55:05 +0000 (09:55 +0800)]
vp9: [loongson] optimize vpx_convolve8 with mmi

1. vpx_convolve_avg_mmi
2. vpx_convolve8_avg_horiz_mmi

Change-Id: Ie544aac45b4b1c0a0e51b44b650189ae5e88aee1

6 years agoFix vp8_multi_resolution_encoder test failure.
Jerome Jiang [Tue, 24 Apr 2018 23:37:18 +0000 (16:37 -0700)]
Fix vp8_multi_resolution_encoder test failure.

BUG=webm:1528

Change-Id: I8eb8278c2e61577159308dd5329be0577b82d1a6

6 years agoCalculate transform size cost once per frame
Hui Su [Tue, 24 Apr 2018 18:49:22 +0000 (11:49 -0700)]
Calculate transform size cost once per frame

Instead of doing it in every transform search loop.

Change-Id: I12dc402a6633d1a27d32cb6b58710b8c0ebf0fd4

6 years agoRemove get_tx_probs2()
Hui Su [Tue, 24 Apr 2018 00:15:23 +0000 (17:15 -0700)]
Remove get_tx_probs2()

This function is redundant.

Change-Id: I7651fc34787c09e59cb1366495f6b525dec8510d

6 years agoAdd speed feture to control tx size search depth
Hui Su [Mon, 23 Apr 2018 21:05:23 +0000 (14:05 -0700)]
Add speed feture to control tx size search depth

Set the max depth as 2 for speed 0.

Compression(negative means gain):
        speed 0     speed 1
lowres   -0.01%      0.00%
midres    0.05%     -0.01%
hdres    -0.01%      0.01%

Encoding speed gain:
Tested on crowd_run_1080p 30 frames
Fixed QP = 20, speed 0: 669.7s -> 656.1s
               speed 1: 104.5s -> 101.5s
Fixed QP = 40, speed 0: 440.7s -> 435.8s
               speed 1:  47.7s ->  45.1s

Change-Id: I61bc13818c72317b9f1d596727d54a906b20c012

6 years agoMerge changes I0202a556,Iebb98f3b
James Zern [Thu, 19 Apr 2018 21:29:42 +0000 (21:29 +0000)]
Merge changes I0202a556,Iebb98f3b

* changes:
  Update variance avx2 functions
  Update variance sse2 functions

6 years agoconfigure: Use both check_header and check_lib for pthreads
Martin Storsjo [Thu, 19 Apr 2018 05:55:44 +0000 (08:55 +0300)]
configure: Use both check_header and check_lib for pthreads

check_lib can be a stub that always returns true - make sure to
still use check_headers as before 38dc27cc6.

Change-Id: I5d471de56b16c015a0b686fa6c6caefa35bb89b4

6 years agovp9:aq-mode=3: Keep perc_refresh fixed for screen content mode.
Marco Paniconi [Thu, 19 Apr 2018 02:59:45 +0000 (19:59 -0700)]
vp9:aq-mode=3: Keep perc_refresh fixed for screen content mode.

Don't allow for changing the perc_refresh with screen-content
mode, as this helps reduce some overshoot for static content.

Change-Id: Idbe1849e7a14ef18fda20bee6dced809f134b7f7

6 years agoMerge "vp9: Rate control fix for CBR mode."
Marco Paniconi [Thu, 19 Apr 2018 02:56:26 +0000 (02:56 +0000)]
Merge "vp9: Rate control fix for CBR mode."

6 years agoMerge "vp9: Remove limit on QP on key frame for CBR."
Marco Paniconi [Thu, 19 Apr 2018 01:39:52 +0000 (01:39 +0000)]
Merge "vp9: Remove limit on QP on key frame for CBR."

6 years agovp9: Add condition of real-time mode to scene detection.
Marco Paniconi [Thu, 19 Apr 2018 00:46:16 +0000 (17:46 -0700)]
vp9: Add condition of real-time mode to scene detection.

This was removed by error from the change: ce11afb, and
made some datarate tests fail.

Change-Id: I0c29e1f5aede8f56ce835b25fed0528722350241

6 years agovp9: Rate control fix for CBR mode.
Marco Paniconi [Thu, 19 Apr 2018 00:15:16 +0000 (17:15 -0700)]
vp9: Rate control fix for CBR mode.

For CBR mode: modify the qp clamping to allow q to respond
faster to overshoot. Can reduce some suprious overshoot events
observed in screen content coding.

Change-Id: I0b3f54b0d1b4086182f834e557a4121950b176d4

6 years agoMerge "SVC: Fix duplicated run of svc datarate tests."
Jerome Jiang [Wed, 18 Apr 2018 23:15:57 +0000 (23:15 +0000)]
Merge "SVC: Fix duplicated run of svc datarate tests."

6 years agovp9: Remove limit on QP on key frame for CBR.
Marco Paniconi [Wed, 18 Apr 2018 22:54:03 +0000 (15:54 -0700)]
vp9: Remove limit on QP on key frame for CBR.

This piece was carried over the VBR routine, for CBR
mode we don't want to apply this limit.

Change-Id: Ib9e9937eabeff8cfd30e11c9bd17444cc2b591aa

6 years agoSVC: Fix duplicated run of svc datarate tests.
Jerome Jiang [Mon, 16 Apr 2018 23:37:04 +0000 (16:37 -0700)]
SVC: Fix duplicated run of svc datarate tests.

Change-Id: I3f4e45b398009852f1183943461625d621c4eb80

6 years agovp9: Changes for scene detection overshoot and SVC.
Marco Paniconi [Mon, 16 Apr 2018 23:15:05 +0000 (16:15 -0700)]
vp9: Changes for scene detection overshoot and SVC.

Refactor the scene detection for 1 pass cbr to allow the
scene detection to be checked once per superframe (on the base layer),
using the full resolution sources.

If scene change is detected: check for re-encoding due to
large overshoot for all spatial layers withing the superframe.

Add speed feature to control the re-encode step.
Keep the re-encode step on for now.

Small change in nonrd_pickmode to remove the possible skip of golden
reference for SVC, when the high_source_sad is set for the superframe.

Change only affects SVC encoding with screen-content mode enabled.

Change-Id: If4cfb52cb0dd0f0fce1c4214fa8b413f8f803d56

6 years agoMerge "configure: Test linking pthreads before using it"
Martin Storsjö [Wed, 18 Apr 2018 06:23:09 +0000 (06:23 +0000)]
Merge "configure: Test linking pthreads before using it"

6 years agoMerge "Clean up svc comment in vp9_bitstream.c"
Jerome Jiang [Tue, 17 Apr 2018 23:30:23 +0000 (23:30 +0000)]
Merge "Clean up svc comment in vp9_bitstream.c"

6 years agoUpdate variance avx2 functions
Linfeng Zhang [Tue, 17 Apr 2018 20:43:16 +0000 (13:43 -0700)]
Update variance avx2 functions

Old vs New
Variance 64x64 time:  1145 ms           797 ms
Variance 64x32 time:  1200 ms           831 ms
Variance 32x32 time:  1228 ms          1135 ms
Variance 32x16 time:  1374 ms          1491 ms
Variance 16x16 time:  1688 ms          1571 ms

sse2 vs avx2
Variance 32x64 time:  1645 ms           957 ms
Variance 16x32 time:  2031 ms          1243 ms
Variance 16x8  time:  3071 ms          2275 ms

Change-Id: I0202a556e4629977d647e219c2e897e1ab6accb2

6 years agovp9: Remove this_key_frame_forced setting for CBR.
Marco Paniconi [Tue, 17 Apr 2018 17:32:25 +0000 (10:32 -0700)]
vp9: Remove this_key_frame_forced setting for CBR.

The setting this_key_frame_forced can lead to large key frame sizes,
not suitable for CBR rate control used for RTC.

Change-Id: Idf6d2bf385d5b1494f4bf783f623b7c202f34e55

6 years agoUpdate variance sse2 functions
Linfeng Zhang [Mon, 16 Apr 2018 21:44:00 +0000 (14:44 -0700)]
Update variance sse2 functions

Old vs New
Variance 64x64 time:   197 ms   143 ms
Variance 64x32 time:   200 ms   146 ms
Variance 32x64 time:   203 ms   140 ms
Variance 32x32 time:   214 ms   152 ms
Variance 32x16 time:   243 ms   153 ms
Variance 16x32 time:   234 ms   197 ms
Variance 16x16 time:   205 ms   205 ms
Variance 16x8  time:   228 ms   222 ms
Variance 8x16  time:   228 ms   232 ms
Variance 8x8   time:   282 ms   240 ms
Variance 8x4   time:   506 ms   341 ms
Variance 4x8   time:   518 ms   415 ms
Variance 4x4   time:   604 ms   628 ms

Observed vp9 encoder speed up when encoding a 720p video.

Change-Id: Iebb98f3b3d8adbc11a733a529d8427ce3d2a5314

6 years agovp9: fix multiple run for vp9 datarate tests using one bitrate.
Jerome Jiang [Mon, 16 Apr 2018 21:25:51 +0000 (14:25 -0700)]
vp9: fix multiple run for vp9 datarate tests using one bitrate.

Change-Id: I1458bf25fadc23e8be5a9532a153d7129a53accf

6 years agoMerge "vp9: refactor vp9 datarate test for better sharding."
Jerome Jiang [Sun, 15 Apr 2018 07:03:16 +0000 (07:03 +0000)]
Merge "vp9: refactor vp9 datarate test for better sharding."

6 years agoconfigure: Test linking pthreads before using it
Martin Storsjo [Sat, 14 Apr 2018 20:40:46 +0000 (23:40 +0300)]
configure: Test linking pthreads before using it

This avoids enabling pthreads if only pthreads-w32 is available.
pthreads-w32 provides pthread.h but has a link library with a
different name (libpthreadGC2.a).

Generally, always using win32 threads when on windows would be
sensible.

However, libstdc++ can be configured to use pthreads (winpthreads), and
in these cases, standard C++ headers can pollute the namespace with
pthreads declarations, which break the win32 threads headers that
declare similar symbols - leading us to prefer pthreads on windows
whenever available (see d167a1ae and bug 1132).

Change-Id: Icd668ccdaf3aeabb7fa4e713e040ef3d67546f00

6 years agovp9: refactor vp9 datarate test for better sharding.
Jerome Jiang [Thu, 12 Apr 2018 21:37:56 +0000 (14:37 -0700)]
vp9: refactor vp9 datarate test for better sharding.

Change-Id: Icfaf29e1ca847ba9e3748700c9e09383ce8d1f65

6 years agoClean up is_two_pass_svc.
Jerome Jiang [Fri, 13 Apr 2018 22:36:39 +0000 (15:36 -0700)]
Clean up is_two_pass_svc.

Change-Id: I9e92616471be380d3ba4e2b85399d7eb9f687d2f

6 years agoClean up svc comment in vp9_bitstream.c
Jerome Jiang [Fri, 13 Apr 2018 20:56:45 +0000 (13:56 -0700)]
Clean up svc comment in vp9_bitstream.c

SVC related conditions were removed long time ago and comments should be
removed too.

Change-Id: Iff3f3b6815d85ae5a69994932a4893cd1f831ce3

6 years agoMerge "vp9 svc: Refactor svc datarate test for better sharding."
Jerome Jiang [Fri, 13 Apr 2018 03:40:50 +0000 (03:40 +0000)]
Merge "vp9 svc: Refactor svc datarate test for better sharding."

6 years agoMerge "Silence warning when built with --enable-internal-stats."
Jerome Jiang [Fri, 13 Apr 2018 03:40:20 +0000 (03:40 +0000)]
Merge "Silence warning when built with --enable-internal-stats."

6 years agoSilence warning when built with --enable-internal-stats.
Jerome Jiang [Thu, 12 Apr 2018 22:05:58 +0000 (15:05 -0700)]
Silence warning when built with --enable-internal-stats.

Change-Id: I3a600a9baf2b8e46c109f4ec2b5bd6bafda4bf58

6 years agovp9 svc: Refactor svc datarate test for better sharding.
Jerome Jiang [Wed, 11 Apr 2018 23:32:00 +0000 (16:32 -0700)]
vp9 svc: Refactor svc datarate test for better sharding.

Wrap denoiser tests under config flags.

Change-Id: I6175c3c9d8b5b079ad35a55553383145db58a10f

6 years agoMerge "Add extra case to wq_err_divisor()"
Paul Wilkins [Thu, 12 Apr 2018 10:42:50 +0000 (10:42 +0000)]
Merge "Add extra case to wq_err_divisor()"

6 years agovpx_image: remove unused image formats
James Zern [Mon, 9 Apr 2018 23:07:40 +0000 (16:07 -0700)]
vpx_image: remove unused image formats

libvpx only emits:
VPX_IMG_FMT_{I420,I422,I440,I444,I42016,I42216,I44016,I44416}
and additionally supports YV12 as input.

interleaved yuv, rgb and alpha formats are unused.

Change-Id: Ie2ab1099e950c6e696f475d46882f5c47a174042

6 years agoMerge "vp9-svc: Make constrained_layer_drop default for svc."
Marco Paniconi [Mon, 9 Apr 2018 18:05:51 +0000 (18:05 +0000)]
Merge "vp9-svc: Make constrained_layer_drop default for svc."

6 years agoMerge "Fix settings for num of tiles in samples & tests."
Jerome Jiang [Mon, 9 Apr 2018 17:03:59 +0000 (17:03 +0000)]
Merge "Fix settings for num of tiles in samples & tests."

6 years agovp9-svc: Make constrained_layer_drop default for svc.
Marco Paniconi [Mon, 9 Apr 2018 16:41:47 +0000 (09:41 -0700)]
vp9-svc: Make constrained_layer_drop default for svc.

Switch the order of constrained and layer drop mode,
and keep constrained_layer_drop as the default.
Update the svc datarate tests.

Change-Id: I764270f7b4964b87b0cd3da6c2f96a628f212a30

6 years agoFix settings for num of tiles in samples & tests.
Jerome Jiang [Thu, 5 Apr 2018 21:45:06 +0000 (14:45 -0700)]
Fix settings for num of tiles in samples & tests.

The control is set by log2 of number of threads (such that the number of
tiles is the same of number of threads).

Thus it should be log2(num_threads) instead of (num_threads >> 1).

Change-Id: I2ccec5557e660048dad3e561534e1c74fc8eec1f

6 years agovp9-svc: Hybrid search on spatial layers whose base is key.
Marco Paniconi [Fri, 6 Apr 2018 16:17:46 +0000 (09:17 -0700)]
vp9-svc: Hybrid search on spatial layers whose base is key.

For spatial layers whose base is a key frame, i.e., when
svc.layer_context[cpi->svc.temporal_layer_id].is_key_frame = 1,
allow for hybrid search, similar to what we do on key frames.

For small blocks (<= 8x8) rd-based intra search will be used,
otherwise non-rd pick mode is used.

Feature is controlled by nonrd_keyframe, which is set to 1
for now on non-base spatial layers, so this change has
currently no effect.

Small change only when inter-layer prediction is off, as we now
call vp9_pick_intra_mode instead of vp9_pick_inter_mode on key frame.
But this change is very small/insignificant.

Change-Id: I5372470f720812926ebbe6c4ce68c04336ce0bdd

6 years agoMerge "remove support for yuv 411"
Johann Koenig [Fri, 6 Apr 2018 15:26:59 +0000 (15:26 +0000)]
Merge "remove support for yuv 411"

6 years agoRevert "vp9-svc: Fix to first superframe when inter_layer is off."
Marco Paniconi [Fri, 6 Apr 2018 05:41:56 +0000 (05:41 +0000)]
Revert "vp9-svc: Fix to first superframe when inter_layer is off."

This reverts commit 5cc8df5bcfe49fbfca21ee57401c7807c048751b.

Reason for revert: <INSERT REASONING HERE>
We need to do this on all key frames in the stream (not just the first one). Will make another cleaner change for this.

Original change's description:
> vp9-svc: Fix to first superframe when inter_layer is off.
>
> When the application selects the setting INTER_LAYER_PRED_OFF
> each spatial stream should be decodeable separately.
> For this we need to force key frames on all spatial layers
> on the first superframe.
>
> In order to maintain the quality at the beginning of the stream
> the active_worst for spatial layer of the second superframe is set
> to the last_QP of the correspondng spatial layer of the first superframe.
> Also make sure nonrd_keyframe is set for non-base spatial layers.
>
> Change only affects SVC mode wit number_spatial_layers > 1 and
> svc->disable_inter_layer_pred == INTER_LAYER_PRED_OFF.
> And only affects first and second frame of sequence.
>
> Change-Id: I8ee9a0873ab1d3a02515774571f719617771ad41

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

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

6 years agovp9-svc: Fix to first superframe when inter_layer is off.
Marco Paniconi [Wed, 4 Apr 2018 23:24:39 +0000 (16:24 -0700)]
vp9-svc: Fix to first superframe when inter_layer is off.

When the application selects the setting INTER_LAYER_PRED_OFF
each spatial stream should be decodeable separately.
For this we need to force key frames on all spatial layers
on the first superframe.

In order to maintain the quality at the beginning of the stream
the active_worst for spatial layer of the second superframe is set
to the last_QP of the correspondng spatial layer of the first superframe.
Also make sure nonrd_keyframe is set for non-base spatial layers.

Change only affects SVC mode wit number_spatial_layers > 1 and
svc->disable_inter_layer_pred == INTER_LAYER_PRED_OFF.
And only affects first and second frame of sequence.

Change-Id: I8ee9a0873ab1d3a02515774571f719617771ad41

6 years agovp9-svc: Fix to disable cyclic refresh on key superframes.
Marco Paniconi [Thu, 5 Apr 2018 22:54:17 +0000 (15:54 -0700)]
vp9-svc: Fix to disable cyclic refresh on key superframes.

Cyclic refresh is disabled on key frames, but we did not
disable it for for spatial layers whose base is a key frame
(i.e., on a key-superframe).

This fix means generally somewhat lower frame-level QP will be
used for those spatial layers whose base is a key frame,
which will generally mean little better quality for the
key-superframes.

Change-Id: Idf090651aa2f5856fb6696c89198a9f6d5d50280

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 agoremove support for yuv 411
Johann [Mon, 2 Apr 2018 22:33:34 +0000 (15:33 -0700)]
remove support for yuv 411

Previously we attempted to convert 411 input. Remove support
because malformed 411 input can cause the conversion to crash.

BUG=webm:1386

Change-Id: I3d41465a94867ee7f8eaa43fb76beb41f8fa644b

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 agoAdd extra case to wq_err_divisor()
paulwilkins [Thu, 29 Mar 2018 11:52:15 +0000 (12:52 +0100)]
Add extra case to wq_err_divisor()

Add extra case for 360P and smaller.
This hurts a little in psnr for the derf cif set but helps a little
in terms of average rate accuracy. Most clips come in a little
smaller with this patch.

No impact on larger formats.

Change-Id: I5056246cb53b90f961ff9ea5813937f33778aa4c

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