Paul Wilkins [Wed, 31 Mar 2021 15:58:51 +0000 (16:58 +0100)]
Change calculation of rd multiplier.
Change the way the rd multiplier is adjusted for Q and frame type.
Previously in VP9 the rd multiplier was adjusted based on crude Q bins
and whether the frame was a key frame or inter frame.
The Q bins create some problems as they potentially introduce
discontinuities in the RD curve. For example, rate rising with a
stepwise increase in Q instead of falling. As such, in AV1 they
have been removed.
A further issue was identified when examining the first round of
results from from the Vizier project. Here the multiplier for each Q bin
and each frame type was optimized for a training set, for various video
formats, using single point encodes at the appropriate YT rates.
These initial results appeared to show a trend for increased rd
multiplier at higher Q for key frames. This fits with intuition as in
this encoding context a higher Q indicates that a clip is harder to
encode and frames less well predicted. However, the situation
appeared to reverse for inter frames with higher rd multipliers
chosen at low Q.
My initial suspicion was that this was a result of over fitting, but on
closer analysis I realized that this may be more related to frame type
within the broader inter frame classification. Specifically frames coded
at low Q are predominantly ARF frames, for the mid Q bin there will
likely be a mix of ARF and normal inter frames, and for the high Q bin
the frames will almost exclusively be normal inter frames from difficult
content.
ARF frames are inherently less well predicted than other inter frames
being further apart and not having access to as many prediction modes.
We also know from previous work that ARF frames have a higher
incidence of INTRA coding and may well behave more like key frames
in this context.
This patch replaces the bin based approach with a linear function
that applies a small but smooth Q based adjustment. It also splits
ARF frames and normal inter frames into separate categories.
With this done number of parameters that will be exposed for the
next round of Vizier training is reduced from 7 to 3 (one adjustment
factor each for inter, ARF and key frames)
This patch gives net BDATE gains for our test sets even with the
baseline / default factors as follows: (% BDRATE change in overall
PSNR and SSIM, -ve is better)
LowRes -0.231, -0.050
ugc360p 0.160, -0.315
midres2 -0.348, -1.170
hdres2 -0.407, -0.691
Change-Id: I46dd2fea77b1c2849c122f10fd0df74bbd3fcc7f
Paul Wilkins [Mon, 22 Mar 2021 19:45:10 +0000 (19:45 +0000)]
Convert Vizier RD parameters to normalized factors
This patch converts the Vizier custom RD multipliers, to factors
that adjust each RD multiplier either side of its default value, where
a factor of 1.0 will give the previous default behavior.
Ultimately I would like to replace the multiple RD multipliers
triggered at different Q thresholds (eg, low, medium, high q)
with a function that adjusts the rd behavior smoothly as Q
changes.
Vizier could then be presented with a single adjustment control
for each of key frame and inter frame rd.
The current behavior is problematic.
Firstly having hard threshold Q values at which rd behavior changes
may cause anomalies in the rate distortion curve, where in some
situations, raising Q, for example, may not cause the expected drop
in rate and rise in distortion, because we have crossed a threshold
where the rate distortion multiplier changes sharply and this alters
the balance of bits spent in the prediction and residual parts of the
signal.
Having a single value that is used for a range of Q index values
(eg 0-64), (65-128) may also cause problems and over-fitting in
the context of the Vizier ML project. This project tries to optimize
the values for each Q range, for various YT formats, but does so
by analyzing the results of single point encodes on a set of clips.
For a given format all the clips are encoded with the same parameters
(target rate etc) so there is likely to be clustering in regards to the
Q values used. For example the training set may give a new value
for the Q range 0-64 but most of the data points used may have Q
close 64.
It will likely require several iterations working with the Vizier team
to get this right. This patch just gives an initial framework for
testing.
Change-Id: Iaa4cd5561b95a202bcae7a1d876c4f40ef444fa2
Paul Wilkins [Fri, 19 Mar 2021 19:44:38 +0000 (19:44 +0000)]
Merge "Change SR_diff calculation and representation"
Paul Wilkins [Wed, 10 Mar 2021 14:39:43 +0000 (14:39 +0000)]
Change SR_diff calculation and representation
This patch changes the way prediction decay is calculated.
We expect that frames that are further from an ALT-REF frame (or Golden
Frame) will be less well predicted by that ALT-REF frame. As such it is
desirable that they should contribute less to the boost calculation used
to assign bits to the ALT_REF.
This code looks at the reduction in prediction quality between the last
frame and the second reference frame (usually two frames old). We make
the assumption that we can accumulate this to get a proxy for the likely
loss of prediction quality over multiple frames.
Previously the calculation looked at the absolute difference in the
coded errors. The issue here is that the meaning of a unit difference
is not the same for very complex frames as it is for easy frames.
In this patch we scale the decay value based on how the error difference
compares to the overall frame complexity as represented by the intra
coding error.
This was tuned experimentally to give test results that
were approximately neutral for our various test sets. There was
a slight drop in Overall PSNR but a consistent improvement in
SSIM. This balance may be improved with tuning further as it is
noteworthy that it was much better on the hd_res set.
Results (Overall PSNR, SSIM -ve better) for low_res, ugc360, midres2,
ugc480P and hd_res are as follows:
0.173 -0.688
0.118 -0.153
0.132 -0.239
0.261 -0.405
-0.305 -1.109
As part of this adjustment the contribution of motion amplitude was
removed.
This patch also changes the control mechanism that will be exposed
on the command line for use by the Vizier project. The control is now
a linear factor which defaults to 1.0, where values < 1.0 mean a lower
decay rate and values > 1.0 mean an increased decay rate.
This presents a more easily understandable interface for use in
optimizing the decay behavior for various formats, where it is clear
what a passed in value means relative to the default.
With the new decay mechanism the current values for various formats
are almost certainly wrong and we still need to define sensible upper
and lower bounds for use during future training.
Change-Id: Ib1074bbea97c725cdbf25772ee8ed66831461ce3
Adam B. Goode [Wed, 17 Mar 2021 19:11:57 +0000 (14:11 -0500)]
Msvc builds convert to windows path w/msys env
Bug: webm:1720
Change-Id: I56689ad408f8086c511e1711dfa9c8d404727b2e
James Zern [Fri, 12 Mar 2021 19:44:42 +0000 (19:44 +0000)]
Merge "vp8: restrict 1st pass cpu_used range"
Marco Paniconi [Fri, 12 Mar 2021 17:54:03 +0000 (09:54 -0800)]
vp9-rtc: Add postencode_drop control to sample encoder
Change-Id: I1c989f26b0a7b9239adf37df8d96776f33b89a8b
Paul Wilkins [Tue, 9 Mar 2021 15:11:41 +0000 (15:11 +0000)]
Vizer: Added in experimental max KF boost values.
Added the experimental max per frame KF boost values derived from
the Vizier experiments.
These are still all off by default.
When enabled I expect these to cause significant regression as they
fluctuate wildly and in a way that makes no sense from format to format.
I suspect these values reflect over fitting perhaps from a subset of
training clips with more frequent mid chunk key frames and or short key
frame groups.
Also fixed incorrect value for gf boost for one format.
Experiment to moderate these values and use different values for first
and subsequent KF groups to follow.
Change-Id: Ibeb4268957f2edacdb4549d74930255a22a2fcc5
Paul Wilkins [Tue, 9 Mar 2021 14:47:25 +0000 (14:47 +0000)]
Vizier: Add in field for min kf frame boost.
Added kf_frame_min_boost field to hold the minimum per frame
boost in key frame boost calculations. Replaces hard wired value.
To be used in conjunction with and tied to the maximum value.
Change-Id: I67a39ecb3f21b5918512a5ccd9a1b214d7971e45
Paul Wilkins [Wed, 10 Mar 2021 14:35:53 +0000 (14:35 +0000)]
Merge "Vizier: Add defaults for > 1080P"
Cheng Chen [Wed, 10 Mar 2021 05:50:50 +0000 (05:50 +0000)]
Merge "L2E: let vp9 encoder respect external max frame size constraint"
Paul Wilkins [Tue, 9 Mar 2021 17:30:04 +0000 (17:30 +0000)]
Merge "Further integration for Vizier."
Paul Wilkins [Tue, 9 Mar 2021 14:07:48 +0000 (14:07 +0000)]
Vizier: Add defaults for > 1080P
Previous code did not have sensible defaults for larger image formats.
Added defaults for Vizier RD parameters for sizes > 1080P and changed
the first pass parameters for large formats to use the 1080P values.
No supplied value for rd_mult_q_sq_key_high_qp case yet so set to
old hard wired default value.
If the Vizier parameters were enabled the lack of sensible defaults
caused a large regression for 2K clips in one of our test sets.
Change-Id: I306c0cd76eab00d50880c91fadb5842faf6661ff
Cheng Chen [Mon, 8 Mar 2021 20:25:31 +0000 (12:25 -0800)]
L2E: let vp9 encoder respect external max frame size constraint
Change-Id: Ib926e694d4bc4675af1435a32f6316a587756380
Paul Wilkins [Thu, 4 Mar 2021 17:10:09 +0000 (17:10 +0000)]
Further integration for Vizier.
Further integration of Vizier adjustable parameters,
This patch connects up additional configurable two pass rate control
parameters for the Vizier project. This still needs to be connected up
to a command line interface and at the moment should still be using
default values that match previous behavior.
Do not submit until verified that defaults are all working correctly.
Change-Id: If1241c2dba6759395e6efa349c4659a0c345361d
James Touton [Fri, 5 Mar 2021 02:43:29 +0000 (18:43 -0800)]
Check for _WIN32 instead of WIN32.
_WIN32 is predefined for the Windows platform in MSVC, whereas WIN32 is not, and WIN32 is also not defined in the makefiles.
Change-Id: I8b58e42d891608dbe1e1313dc9629c2be588d9ec
Paul Wilkins [Thu, 4 Mar 2021 21:17:28 +0000 (21:17 +0000)]
Merge "Add fields into RC for Vizier ML experiments."
Jerome Jiang [Thu, 4 Mar 2021 20:30:02 +0000 (20:30 +0000)]
Merge "override assembler with --as option on msvs"
Jerome Jiang [Thu, 4 Mar 2021 01:33:30 +0000 (17:33 -0800)]
Use -std=gnu++11 instead of -std=c++11
Cygwin and msys2 have stricter compliance requirement over standard c
headers.
Bug: webm:1708
Change-Id: I676b1227b9dd304149e50016468df0f057c6a78f
Jerome Jiang [Wed, 3 Mar 2021 22:46:48 +0000 (14:46 -0800)]
override assembler with --as option on msvs
Bug: webm:1709
Change-Id: I962a64c00042fe95cc1cd845b187f71ad6cfd1b7
Paul Wilkins [Wed, 3 Mar 2021 16:45:42 +0000 (16:45 +0000)]
Add fields into RC for Vizier ML experiments.
This patch adds fields into the RC data structure for the Vizier.
The added fields allow control of some extra rate control parameters
and rate distortion.
This patch also adds functions to initialize the various parameters
though many are not yet used / wired in and for now all are set to
default values. Ultimately many will be set through new command
line options.
Change-Id: I41591bb627d3837d2104fb363845adedbddf2e02
Wan-Teh Chang [Sat, 27 Feb 2021 02:02:24 +0000 (18:02 -0800)]
Remove comments for removed 'active_map' parameter
Change-Id: I8635f6121e13089c25e201df033d5bc68e2862b4
Jerome Jiang [Thu, 18 Feb 2021 01:34:27 +0000 (17:34 -0800)]
Remove two pass related code from svc sample encoder.
SVC sample encoder is only supposed to be used for realtime SVC.
Bug: webm:1705
Change-Id: I5c0c3491732db3e148073aaf7f90ee8d662b57b5
James Zern [Fri, 5 Feb 2021 18:21:39 +0000 (10:21 -0800)]
vp8_denoiser_sse2_test: disable BitexactCheck w/gcc-8+
this test fails under gcc 8-10, but not with other compilers
Bug: webm:1718
Change-Id: I8c6c7a25c4aaf019a7f91f835a1a2c9a731cfadc
Marco Paniconi [Thu, 4 Feb 2021 06:09:24 +0000 (22:09 -0800)]
svc: Fix an existing unittest for flexible mode
The flag update_pattern_ was being set to 0
(because it was set before reset) instead of 1.
And the example flexible mode pattern was not setting
non-reference frame on top temporal top spatial.
Change-Id: I8aee56ce13cc4e0d614126592f9d0f691fe527b0
Cheng Chen [Wed, 3 Feb 2021 23:57:00 +0000 (23:57 +0000)]
Merge "L2E: let external rate control pass in a max frame size"
Marco Paniconi [Wed, 3 Feb 2021 22:30:41 +0000 (22:30 +0000)]
Merge "svc: Unittest for ksvc flexible mode with no updates on TL > 0"
Marco Paniconi [Mon, 1 Feb 2021 06:11:33 +0000 (22:11 -0800)]
svc: Unittest for ksvc flexible mode with no updates on TL > 0
Catches tsan issue fixed in: 7b93b56
Change-Id: I34b17c289afd0f8691987a1e4afa533f6c7f2806
James Zern [Wed, 3 Feb 2021 21:16:01 +0000 (21:16 +0000)]
Merge "vp8_denoiser_sse2_test: use ASSERT instead of EXPECT"
James Zern [Wed, 3 Feb 2021 02:14:44 +0000 (18:14 -0800)]
vp8_denoiser_sse2_test: use ASSERT instead of EXPECT
when test block contents to avoid producing unnecessary output on
failure.
Bug: webm:1718
Change-Id: Ie2cf8245ec8c03556549ad1eea65c8bef15a9735
Cheng Chen [Tue, 2 Feb 2021 00:57:09 +0000 (16:57 -0800)]
L2E: let external rate control pass in a max frame size
And allow the frame to recode when the frame size is larger
than the input max frame size.
If the max frame size is not specified, let vp9 decide whether
to recode. The recode follows the vp9's current recoding mechanism.
The rate control api will return the new qindex back to the
external model.
Change-Id: I796fbf713ad50a5b413b0e2501583b565ed2343f
Marco Paniconi [Wed, 3 Feb 2021 18:04:52 +0000 (10:04 -0800)]
Fix to vpx_temporal_svc_encoder
Avoid division by zero.
Change-Id: Icf3f40aa32fe30f42c46417a1437ebe235e3ac96
Elliott Karpilovsky [Fri, 29 Jan 2021 17:37:31 +0000 (09:37 -0800)]
Relax constraints on Y4M header parsing
Previous parser assumed that the header would not exceed
80 characters. However, with latest FFMPEG changes, the header
of Y4M files can exceed this limit.
New parser can parse an arbitrarily long header, as long each
tag is 255 or less characters.
BUG=aomedia:2876
Change-Id: I9e6e42c50f4e49251dd697eef8036485ad5a1228
Elliott Karpilovsky [Thu, 28 Jan 2021 19:22:58 +0000 (11:22 -0800)]
Relax constraints on Y4M header parsing
Previous parser assumed that the header would not exceed
80 characters. However, with latest FFMPEG changes, the header
of Y4M files can exceed this limit.
New parser can parse up to ~200 characters. Arbitrary parsing in
future commit.
BUG=aomedia:2876
Change-Id: I2ab8a7930cb5b76004e6731321d0ea20ddf333c1
James Zern [Wed, 27 Jan 2021 23:39:14 +0000 (23:39 +0000)]
Merge changes I43d9d477,I8d4661ec
* changes:
vp9_end_to_end_test: fix compile with gcc 4.8.5
sad_test: fix compilation w/gcc 4.8.5
Jerome Jiang [Wed, 27 Jan 2021 20:08:47 +0000 (20:08 +0000)]
Merge "svc: turn off use_base_mv on non base layer."
Jerome Jiang [Wed, 27 Jan 2021 17:41:18 +0000 (09:41 -0800)]
svc: turn off use_base_mv on non base layer.
Change-Id: I4a9402f468e54c58081c882ed37f59ee0269c0fc
James Zern [Wed, 27 Jan 2021 02:05:47 +0000 (18:05 -0800)]
vp9_end_to_end_test: fix compile with gcc 4.8.5
use Values() rather than ValuesIn() with an initializer list as this
version of gcc under CentOS fails to deduce the type:
../third_party/googletest/src/include/gtest/gtest-param-test.h:304:29:
note: template argument deduction/substitution failed:
../test/vp9_end_to_end_test.cc:346:59: note: couldn't deduce template
parameter ‘T’
::testing::ValuesIn({ 6, 7, 8 }));
Bug: webm:1690
Change-Id: I43d9d4777fcd74a4f8fa8bdcd9834cdca5e546ff
James Zern [Wed, 27 Jan 2021 02:03:17 +0000 (18:03 -0800)]
sad_test: fix compilation w/gcc 4.8.5
use a #define for kDataAlignment as it's used with DECLARE_ALIGNED
(__attribute__((aligned(n)))) and this version under CentOS is more
strict over integer constants:
../vpx_ports/mem.h:18:72: error: requested alignment is not an integer constant
#define DECLARE_ALIGNED(n, typ, val) typ val __attribute__((aligned(n)))
Bug: webm:1690
Change-Id: I8d4661ec1c2c1b1522bdc210689715d2302c7e72
Jerome Jiang [Sat, 23 Jan 2021 02:19:55 +0000 (02:19 +0000)]
Merge "Do not reuse mv in base spatial layer if curr buf same as prev."
Jerome Jiang [Thu, 21 Jan 2021 21:07:20 +0000 (13:07 -0800)]
Do not reuse mv in base spatial layer if curr buf same as prev.
Bug: b/
154890543
Change-Id: Iad5791912f781d225e610a61bc13f3dbaef81bb9
Angie Chiang [Wed, 20 Jan 2021 02:56:48 +0000 (18:56 -0800)]
Use VPX_CODEC_INVALID_PARAM when ext_ratectrl=NULL
Bug: webm:1716
Change-Id: Ic60c367aabfc03d94816e85476895b988aced5f1
Angie Chiang [Wed, 20 Jan 2021 02:45:38 +0000 (18:45 -0800)]
Handle vp9_extrc functions' return status properly
Bug: webm:1716
Change-Id: I204cd3ab35b493759808500b799da3b9e55686d4
Angie Chiang [Thu, 21 Jan 2021 01:33:09 +0000 (01:33 +0000)]
Merge changes Ib016ab5a,Ie6d63a68,I96b18436,I0b98741d
* changes:
Add return to vp9_extrc_update_encodeframe_result
Add status in vp9_extrc_get_encodeframe_decision
Return status in vp9_extrc_send_firstpass_stats
Return status in vp9_extrc_create/init/delete
Angie Chiang [Wed, 20 Jan 2021 02:18:20 +0000 (18:18 -0800)]
Add return to vp9_extrc_update_encodeframe_result
Bug: webm:1716
Change-Id: Ib016ab5a49c765971366cc8d2b75bcca3ed5bd0f
Angie Chiang [Wed, 20 Jan 2021 01:57:00 +0000 (17:57 -0800)]
Add status in vp9_extrc_get_encodeframe_decision
Bug: webm:1716
Change-Id: Ie6d63a68539369c51fefefa528e299b00a967e29
Angie Chiang [Wed, 20 Jan 2021 01:48:07 +0000 (17:48 -0800)]
Return status in vp9_extrc_send_firstpass_stats
Bug: webm:1716
Change-Id: I96b18436c58ed888fcf677097819cc0093b6f41d
Angie Chiang [Wed, 20 Jan 2021 01:36:12 +0000 (17:36 -0800)]
Return status in vp9_extrc_create/init/delete
Bug: webm:1716
Change-Id: I0b98741db8c639bdddd899fd6ad359da7b916086
James Zern [Wed, 20 Jan 2021 02:38:23 +0000 (18:38 -0800)]
{highbd_,}loopfilter_neon.c: quiet -Wmaybe-uninitialized
Seen with arm-linux-gnueabihf-gcc-8 (8.3.0 & 8.4.0)
Without reworking the code or adding an additional branch this warning
cannot be silenced otherwise. The loopfilter is only called when needed
for a block so these output pixels will be set.
BUG=b/
176822719
Change-Id: I9cf6e59bd5de901e168867ccbe021d28d0c04933
Elliott Karpilovsky [Thu, 14 Jan 2021 22:17:08 +0000 (14:17 -0800)]
Relax constraints on Y4M header parsing
Some refactoring and cleanup -- do not count the first 9 bytes against
the header limit. Add a unit test.
BUG=aomedia:2876
Change-Id: Id897d565e2917b48460cc77cd082cec4c98b42cb
Hui Su [Wed, 13 Jan 2021 18:51:39 +0000 (10:51 -0800)]
vpxenc: initalize the image object
Otherwise it would cause problem when calling vpx_img_free() at the end
if no frame is read.
Change-Id: Ide0ed28eeb142d65d04703442cc4f098ac8edb34
Angie Chiang [Fri, 18 Dec 2020 02:09:55 +0000 (18:09 -0800)]
Fix show_index in vp9_extrc_encodeframe_decision()
Change-Id: I93bb1fb3c14126d881d3f691d30875a0062e436c
Angie Chiang [Fri, 18 Dec 2020 01:32:26 +0000 (17:32 -0800)]
Correct pixel_count in encode_frame_result
Change-Id: I3270af4f793f8e453e10d1caf8ffa1a8d5d584a7
Hui Su [Wed, 16 Dec 2020 06:40:09 +0000 (22:40 -0800)]
First pass: skip motion search for intra-only
BUG=webm:1713
Change-Id: Ibad79cf5d12aa913e8c87a31d7d2124c00958691
James Zern [Fri, 11 Dec 2020 19:58:17 +0000 (19:58 +0000)]
Merge "configure: add darwin20 cross-compile support"
Gregor Jasny [Fri, 11 Dec 2020 07:00:07 +0000 (08:00 +0100)]
configure: add darwin20 cross-compile support
Change-Id: I91c0e832a6e76172397e97413329fd43edc81c78
Jeremy Leconte [Thu, 10 Dec 2020 16:54:54 +0000 (17:54 +0100)]
Fix nullptr with offset.
The error occurs with low resolution when LibvpxVp8Encoder::NumberOfThreads returns 1.
Bug: b:
175283098
Change-Id: Icc9387c75f4ac6e4f09f102b3143e83c998c5e38
Angie Chiang [Wed, 25 Nov 2020 20:58:24 +0000 (12:58 -0800)]
Fix typos in simple_encode.h
Change-Id: Id83eff6cc12c441ce991fb1a73820d106311cf5e
Angie Chiang [Tue, 24 Nov 2020 03:10:44 +0000 (03:10 +0000)]
Merge "Revert "Close out file in EndEncode()""
Angie Chiang [Tue, 24 Nov 2020 02:55:24 +0000 (02:55 +0000)]
Revert "Close out file in EndEncode()"
This reverts commit
7370cecd8929141adb8140b924d3dd8ac1887d36.
Reason for revert: I accidentally check in this CL
Change-Id: I71ff0b98649070df3edd13b98170a7091541057b
Angie Chiang [Tue, 24 Nov 2020 02:49:12 +0000 (02:49 +0000)]
Merge "Close out file in EndEncode()"
Angie Chiang [Tue, 24 Nov 2020 02:49:01 +0000 (02:49 +0000)]
Merge "Refine documentation of vpx_ext_ratectrl.h"
Angie Chiang [Tue, 24 Nov 2020 02:47:28 +0000 (02:47 +0000)]
Merge "Allow user to set rc_mode and cq_level in SimpleEncode"
Angie Chiang [Sat, 21 Nov 2020 01:41:09 +0000 (17:41 -0800)]
Refine documentation of vpx_ext_ratectrl.h
Bug: webm:1707
Change-Id: Iba04b5292c157e22dd8618a79e8c977ec9fc2199
Angie Chiang [Fri, 20 Nov 2020 03:55:33 +0000 (19:55 -0800)]
Allow user to set rc_mode and cq_level in SimpleEncode
Change-Id: If3f56837e2c78a8b0fe7e0040f297c3f3ddb9c8b
Angie Chiang [Wed, 18 Nov 2020 01:25:31 +0000 (17:25 -0800)]
Add gop_index to vpx_ext_ratectrl.h
Bug: webm:1707
Change-Id: I48826d5f3a7cc292825a7f1e30ac6d0f57adc569
Angie Chiang [Tue, 17 Nov 2020 23:30:55 +0000 (15:30 -0800)]
Capitalize VPX_RC_OK / VPX_RC_ERROR
Change-Id: I526bd6a6c2d2095db564f96d63c7ab7ee4dd90ad
Angie Chiang [Tue, 17 Nov 2020 22:37:20 +0000 (14:37 -0800)]
Add doxygen for vpx_rc_funcs_t
Change-Id: If75215d574fe0b075add50154a9eece5d387741a
Angie Chiang [Sat, 14 Nov 2020 03:40:13 +0000 (19:40 -0800)]
Add doxygen for vpx_rc_config
Bug: webm:1707
Change-Id: I65bab6b2b792653e70cb136a5f9a21796e34b829
Angie Chiang [Sat, 14 Nov 2020 03:26:14 +0000 (19:26 -0800)]
Copy first pass stats documentation from AV1 to VP9
Bug: webm:1707
Change-Id: Iae7eaa9ba681272b70b6dad17cd2247edab6ef79
Angie Chiang [Sat, 14 Nov 2020 02:32:34 +0000 (18:32 -0800)]
Add doxygen to structs in vpx_ext_ratectrl.h
Bug: webm:1707
Change-Id: Ib5f6b6f143f55e5279e39eb386fcd3340211de59
Angie Chiang [Tue, 17 Nov 2020 21:40:55 +0000 (21:40 +0000)]
Merge changes I12a72d3a,I1a6c5752
* changes:
Fix uninitialized warning in resize_test.cc
Fix the warning of C90 mixed declarations and code
Jerome Jiang [Mon, 16 Nov 2020 22:12:50 +0000 (14:12 -0800)]
Remove condition on copying svc loopfilter flag
Change-Id: Ib37ef0aa3dc0ec73b25332be6d89969093bd7aeb
Angie Chiang [Sat, 14 Nov 2020 02:17:48 +0000 (18:17 -0800)]
Fix uninitialized warning in resize_test.cc
Change-Id: I12a72d3aa57b13dbcbeb037e1deea41529ea4194
Angie Chiang [Sat, 14 Nov 2020 02:13:14 +0000 (18:13 -0800)]
Fix the warning of C90 mixed declarations and code
Change-Id: I1a6c57525bbe8bf1a97057ecd64985bc23d1df2e
Marco Paniconi [Fri, 13 Nov 2020 04:26:34 +0000 (04:26 +0000)]
Merge "vp9: Allow for disabling loopfilter per spatial layer"
Marco Paniconi [Thu, 12 Nov 2020 07:11:16 +0000 (23:11 -0800)]
vp9: Allow for disabling loopfilter per spatial layer
For SVC: add parameter to the control SET_SVC_PARAMS to
allow for disabling the loopfilter per spatial layer.
Note this svc setting will override the setting via
VP9E_SET_DISABLE_LOOPFILTER (which should only be used
for non-SVC).
Add unittest to handle both SVC (spatial or temporal layers)
and non-SVC (single layer) case.
Change-Id: I4092f01668bae42aac724a6df5b6f6a604337448
Cheng Chen [Thu, 5 Nov 2020 23:26:54 +0000 (15:26 -0800)]
Accumulate frame tpl stats and pass through rate control api
Tpl stats is computed at the beginning of encoding the altref
frame. We aggregate tpl stats of all blocks for every frame of
the current group of picture.
After the altref frame is encoded, the tpl stats is passed through
the encode frame result to external environment.
Change-Id: I2284f8cf9c45d35ba02f3ea45f0187edbbf48294
James Zern [Fri, 30 Oct 2020 04:57:32 +0000 (04:57 +0000)]
Merge "libs.mk: set LC_ALL=C w/egrep invocations"
Wan-Teh Chang [Thu, 29 Oct 2020 23:33:54 +0000 (23:33 +0000)]
Merge "Add a comment about bitdeptharg and inbitdeptharg"
James Zern [Thu, 29 Oct 2020 22:46:21 +0000 (15:46 -0700)]
libs.mk: set LC_ALL=C w/egrep invocations
this guarantees consistent interpretation of the character ranges
BUG=webm:1711
Change-Id: Ia9123f079cc7ac248b9eff4d817e2e103d627b2b
Wan-Teh Chang [Sun, 20 Sep 2020 18:57:13 +0000 (11:57 -0700)]
Add a comment about bitdeptharg and inbitdeptharg
Add a comment to vp9_args to point out that bitdeptharg and
inbitdeptharg do not have a corresponding entry in vp9_arg_ctrl_map and
must be listed at the end of vp9_args.
Change-Id: Ic9834ab72599c067156ca5a315824c7f0760824a
James Zern [Wed, 28 Oct 2020 00:09:08 +0000 (17:09 -0700)]
vp9_ext_ratectrl_test: add missing override
for ~ExtRateCtrlTest()
Change-Id: I311a400093c8c1ee2c002ba000d0b33c4fde209f
Jerome Jiang [Tue, 27 Oct 2020 22:33:20 +0000 (22:33 +0000)]
Merge "Add cmd line option to control loopfilter for vpxenc"
Jerome Jiang [Tue, 27 Oct 2020 18:02:13 +0000 (11:02 -0700)]
Add cmd line option to control loopfilter for vpxenc
Change-Id: I4f5e6ce2f1b535a586bdb6c9e55a3d49ebf61af4
Angie Chiang [Mon, 26 Oct 2020 18:09:59 +0000 (11:09 -0700)]
Download bus_352x288_420_f20_b8.yuv properly
Bug: webm:1707
Change-Id: I6aabad7cdcddf2bc41a0cc7b5cdfd7d9759f9fae
Angie Chiang [Wed, 21 Oct 2020 21:26:34 +0000 (21:26 +0000)]
Merge changes I27932c41,I2ff9e54a,I4ebed472
* changes:
Small changes of vp9_ext_ratectrl_test.cc
Add ref frame info to vpx_rc_encodeframe_info_t
Add vpx_rc_status_t
Angie Chiang [Wed, 21 Oct 2020 00:32:27 +0000 (17:32 -0700)]
Small changes of vp9_ext_ratectrl_test.cc
Change-Id: I27932c41a826cd3c10cc7801956cd32e4877133a
Angie Chiang [Wed, 21 Oct 2020 00:21:51 +0000 (00:21 +0000)]
Merge "Add unit test for vp9_ext_ratectrl"
Angie Chiang [Sat, 17 Oct 2020 01:36:09 +0000 (18:36 -0700)]
Add ref frame info to vpx_rc_encodeframe_info_t
Bug: webm:1707
Change-Id: I2ff9e54a9c8ae535628c1c471a2d078652f49a31
angiebird [Mon, 12 Oct 2020 22:12:03 +0000 (15:12 -0700)]
Add vpx_rc_status_t
Let callback functions in vpx_ext_ratectrl.h
return vpx_rc_status_t
Bug: webm:1707
Change-Id: I4ebed47278b228740f6c73b07aa472787b2617d2
Marco Paniconi [Mon, 19 Oct 2020 05:42:48 +0000 (22:42 -0700)]
vp9-rtc: Fix to control for disabling loopfilter
Adding unit test.
Change-Id: Ic3c03fee7e9c2c224d927bb09914551422bdf816
Angie Chiang [Thu, 15 Oct 2020 19:05:37 +0000 (12:05 -0700)]
Add unit test for vp9_ext_ratectrl
Fix three bugs along the way.
1) Call vp9_extrc_send_firstpass_stats() after vp9_extrc_create()
2) Pass in model pointer in vp9_extrc_create()
3) Free frame_stats buffer in vp9_extrc_delete()
Bug: webm:1707
Change-Id: Ic8bd62c7b4ebd85a7479ae5e4c82d7f6059d782f
angiebird [Tue, 13 Oct 2020 00:58:16 +0000 (17:58 -0700)]
Add vp9_extrc_update_encodeframe_result()
Bug: webm:1707
Change-Id: I962ffa23f03b953f7c0dfd81f49dc79d1975bbba
angiebird [Sat, 10 Oct 2020 02:03:23 +0000 (19:03 -0700)]
vp9_extrc_get_encodeframe_decision()
Bug: webm:1707
Change-Id: I90a327b97d7158b65767fe3fbfd5f260030e17f5
James Zern [Thu, 15 Oct 2020 22:24:36 +0000 (15:24 -0700)]
install vpx_ext_ratectrl.h
fixes encoder detection / compile with installed headers after:
6dba0d0a0 Add callback functions for external_rate_control
Bug: webm:1707
Change-Id: I370d8c94d6f1b8201002a722077ecf6b3d8cede5
angiebird [Sat, 10 Oct 2020 00:47:02 +0000 (17:47 -0700)]
Call vp9_extrc_send_firstpass_stats() properly
Change-Id: I28db5010ba647cc91b8c0aa59309d7e953cd1216
angiebird [Sat, 10 Oct 2020 00:12:51 +0000 (17:12 -0700)]
Add vpx_rc_frame_stats_t
Change-Id: I496ce13592f71779bb00cc8bbb601835bca8ff09
angiebird [Fri, 9 Oct 2020 01:40:34 +0000 (18:40 -0700)]
Add vp9_extrc_send_firstpass_stats()
Change-Id: Ia2457b416200a2b2d1558600bff90ac2746cf396
angiebird [Wed, 7 Oct 2020 22:29:51 +0000 (15:29 -0700)]
Add vp9_extrc_init/create/delete
Change-Id: I9fcb9f4cc5c565794229593fadde87286fcf0ffd