Wan-Teh Chang [Fri, 22 Sep 2023 22:50:17 +0000 (15:50 -0700)]
Fix a potential resource leak and add alloc checks
Backport fixes from libaom:
https://aomedia-review.googlesource.com/c/aom/+/109061
https://aomedia-review.googlesource.com/c/aom/+/158102
Change-Id: Ia9d42d474be2898f9ae2fdc28606273377da3e90
Wan-Teh Chang [Fri, 29 Sep 2023 17:35:20 +0000 (10:35 -0700)]
Update 32-bit version of horizontal_add_uint32x2
The code was originally added in
https://aomedia-review.googlesource.com/c/aom/+/162267
by Jonathan Wright.
Change-Id: Iafd9e31d82abe22387e0d68f02c7ab81e85367ed
Cheng Chen [Fri, 29 Sep 2023 00:47:54 +0000 (17:47 -0700)]
Properly determine end of sequence
When the next frame is null and the current frame is an overlay
frame, which is equivalent to there is an active alt ref frame,
we call this an end of sequence.
Change-Id: I49c2cf7a001df98aff8b62ba034317e408274bd4
Wan-Teh Chang [Thu, 28 Sep 2023 17:52:22 +0000 (17:52 +0000)]
Merge "vp9_c_vs_simd_encode: Restore cwd at end of test" into main
Jerome Jiang [Thu, 28 Sep 2023 17:39:23 +0000 (17:39 +0000)]
Merge "Fix bug with smaller width bigger size" into main
Wan-Teh Chang [Thu, 28 Sep 2023 15:58:36 +0000 (08:58 -0700)]
vp9_c_vs_simd_encode: Restore cwd at end of test
Restore the original current directory at the end of
vp9_c_vs_simd_enc_test().
Bug: webm:1800
Change-Id: Iad64848a231e3c900149cc2b248055b02dda80a6
Wan-Teh Chang [Wed, 27 Sep 2023 23:12:12 +0000 (16:12 -0700)]
Skip the y4m_360p_10bit_input clip for armv8
It is a known mismatch.
Bug: webm:1819
Change-Id: Ieb707a6f53ddf6c7b0d1202c6520599d3e45da76
Yunqing Wang [Wed, 27 Sep 2023 20:33:39 +0000 (20:33 +0000)]
Merge "Modify vp9_c_vs_simd_enc_test script" into main
Jerome Jiang [Thu, 30 Jun 2022 17:48:56 +0000 (13:48 -0400)]
Fix bug with smaller width bigger size
Fixed previous patch that clusterfuzz failed on.
Bug: webm:1642
Change-Id: If0e08e72abd2e042efe4dcfac21e4cc51afdfdb9
Yunqing Wang [Thu, 21 Sep 2023 20:49:09 +0000 (13:49 -0700)]
Modify vp9_c_vs_simd_enc_test script
Applied James' change to the script. Enabled the test:
vp9_c_vs_simd_enc_test
BUG=webm:1800
Change-Id: If1e33e5ccb6ca9315004f3e3f5b910f8a8255317
James Zern [Tue, 26 Sep 2023 01:55:59 +0000 (18:55 -0700)]
VP8: disallow thread count changes
Currently allocations are done at encoder creation time. Going from
threaded to non-threaded would cause a crash.
Bug: chromium:1486441
Change-Id: Ie301c2a70847dff2f0daae408fbef1e4d42e73d4
James Zern [Tue, 26 Sep 2023 01:53:41 +0000 (18:53 -0700)]
encode_api_test: add ConfigResizeChangeThreadCount
Update thread counts and resolution to ensure allocations are updated
correctly. VP8 is disabled to avoid a crash.
Bug: chromium:1486441
Change-Id: Ie89776d9818d27dc351eff298a44c699e850761b
Jerome Jiang [Thu, 21 Sep 2023 19:26:01 +0000 (15:26 -0400)]
Do not call WebM RC for new GOP at the end of seq
define_gf_group is called at the last frame of each GOP to get GOP size
for next one, which means it'll also be called at the last GOP of the
sequence, when calling WebM RC will be returned with error since WebM RC
does not have any more GOP to return.
When gop_coding_frames from the encoder is 1, it means it's running out
of firstpass stats, which means end of sequence.
Bug: b/
299610956
Change-Id: I30e077a28fe41593ebabbc1dc0c2915a4bcbece3
Martin Storsjo [Fri, 15 Sep 2023 09:29:32 +0000 (12:29 +0300)]
aarch64: Generalize Windows cpu detection to any Windows variant
This cpu detection implementation doesn't do anything MSVC specific,
it just calls the IsProcessorFeaturePresent function. This can be
compiled with mingw compilers just as well.
Change-Id: I55e607a47c8f5b70d9f707ef96b2fa7553f2f79f
Jerome Jiang [Thu, 14 Sep 2023 20:04:19 +0000 (16:04 -0400)]
Add max/min_gf_interval to vpx_rc_config_t
Bug: b/
300499738
Change-Id: Id32cb5e3ce667539c0d1efe1ff5fcc7a49e35329
Jerome Jiang [Thu, 14 Sep 2023 17:27:39 +0000 (13:27 -0400)]
Fix ref frame buffer in TPL stats for RC
The original ref frame index was the index in the GF group; RC expects
the index to be the one for ref frame buffer.
Change-Id: I9a2b0e72b6332023fb2e8da131b557f82db02e39
Jerome Jiang [Thu, 14 Sep 2023 15:59:57 +0000 (11:59 -0400)]
Set frame width height for 1st TPL GOP frame
Change-Id: Ic92dfd232bf90e8cbe6c6233af523ed40d12097a
yuanhecai [Tue, 12 Sep 2023 02:30:38 +0000 (10:30 +0800)]
loongarch: Fix bugs from vp8_sixtap_predict4x4/16x16_lsx
Bug: webm:1755
Change-Id: I7295e0f9a1551b8a418d5b65a2b7351df1fdc063
yuanhecai [Sat, 15 Apr 2023 03:11:16 +0000 (11:11 +0800)]
loongarch: simplify vpx_quantize_b/b_32x32_lsx args
Bug: webm:1755
Change-Id: I42fdb1c34f959dd1204b343b8192e3d9b49821b4
Jerome Jiang [Tue, 12 Sep 2023 19:28:06 +0000 (15:28 -0400)]
Add missing headers for clang-tidy warnings
Change-Id: I97edec8ecffdcc79b8f3528deb60a3a0332ea0cc
Jonathan Wright [Sat, 19 Aug 2023 22:41:09 +0000 (23:41 +0100)]
Use run-time feature detection for Neon DotProd HBD MSE
Arm Neon DotProd implementations of vpx_highbd_8_mse<w>x<h> currently
need to be enabled at compile time since they're guarded by #ifdef
feature macros. Now that run-time feature detection has been enabled
for Arm platforms, expose these implementations with distinct
*neon_dotprod names in a separate file and wire them up to the build
system and rtcd.pl. Also add new test cases for the new functions.
Change-Id: I26be6fb587258c8fa9fbf03509b7602358a001a8
Jonathan Wright [Sat, 19 Aug 2023 22:25:01 +0000 (23:25 +0100)]
Use run-time feature detection for Neon DotProd specialty var.
Enable Arm Neon DotProd implementations of vpx_get_var_sse_sum*
specialty variance functions via run-time feature detection, wiring
up the new *neon_dotprod names to rtcd.pl. Also add new test cases.
Change-Id: I04ac3db87d32ee7f94702b6c0360254e5688f713
Jonathan Wright [Sat, 19 Aug 2023 22:09:07 +0000 (23:09 +0100)]
Use run-time feature detection for Neon DotProd variance
Arm Neon DotProd implementations of vpx_variance<w>x<h> currently
need to be enabled at compile time since they're guarded by #ifdef
feature macros. Now that run-time feature detection has been enabled
for Arm platforms, expose these implementations with distinct
*neon_dotprod names in a separate file and wire them up to the build
system and rtcd.pl. Also add new test cases for the new functions.
Remove the _neon suffix in functions making reference to
vpx_variance<w>x<h>_neon() (e.g. sub-pixel variance) - enabling use
of the appropriate *neon or *neon_dotprod version at run time.
Similar changes for the specialty variance and MSE functions will be
made in a subsequent commit.
Change-Id: I69a0ef0d622ecb2d15bd90b4ace53273a32ed22d
Jonathan Wright [Sat, 19 Aug 2023 19:59:40 +0000 (20:59 +0100)]
Use run-time CPU feature detection for Neon DotProd SAD4D
Arm Neon DotProd implementations of vpx_sad*4d currently need to be
enabled at compile time since they're guarded by ifdef feature
macros. Now that run-time feature detection has been enabled for Arm
platforms, expose these implementations with distinct *neon_dotprod
names in separate files and wire them up to the build system and
rtcd.pl. Also add new test cases for the new DotProd functions.
Change-Id: Ie99ee0b03ec488626f52c3f13e4111fe26cc5619
Jonathan Wright [Sat, 19 Aug 2023 19:21:24 +0000 (20:21 +0100)]
Use run-time CPU feature detection for Neon DotProd SAD
Arm Neon DotProd implementations of vpx_sad* currently need to be
enabled at compile time since they're guarded by ifdef feature
macros. Now that run-time feature detection has been enabled for Arm
platforms, expose these implementations with distinct *neon_dotprod
names in separate files and wire them up to the build system and
rtcd.pl. Also add new test cases for the new DotProd functions.
Change-Id: Ic6906c28240276ba89787eadbc9393a232374f95
Jonathan Wright [Sat, 19 Aug 2023 14:24:12 +0000 (15:24 +0100)]
Use run-time CPU feature detection for vpx_convolve8_neon
Arm Neon DotProd and I8MM implementations of vpx_convolve8* currently
need to be enabled at compile time since they're guarded by ifdef
feature macros. Now that run-time feature detection has been enabled
for Arm platforms, expose these implementations with distinct
*neon_dotprod/*neon_i8mm names in separate files and wire them up to
the build system and rtcd.pl. Also add new test cases for the new
DotProd and I8MM functions.
Change-Id: I3db3cd62e8596099d9fec7805ca3ee86b2a01c74
Jonathan Wright [Sat, 19 Aug 2023 11:45:36 +0000 (12:45 +0100)]
Refactor and extend run-time CPU feature detection on Arm
1) Overhaul the Arm CPU feature detection code, taking inspiration
from similar recent changes in libaom.
2) Add neon_dotprod and neon_i8mm arch options in the configure,
build and unit test files, adding appropriate conditional options
where necessary.
3) Soft-enable run-time CPU feature detection by default for both 32-
bit and 64-bit Arm platforms.
Change-Id: I3f13317d88324acc5753394351188baa8d18a261
Jonathan Wright [Thu, 31 Aug 2023 13:21:01 +0000 (14:21 +0100)]
Simplify Neon MSE helper function params/return values
Simplify the parameters and return values of the Neon MSE helper
functions for both standard and high bitdepth - avoiding unused
return values.
Change-Id: I6f9208f9ce890fbe58346d9c7d9d701f28f2f90f
Marco Paniconi [Mon, 28 Aug 2023 19:09:30 +0000 (12:09 -0700)]
vp9 svc: fix interger overflow
Overflow was happening in two places:
one in set_encoder_config(), where the input
layer_target_bitrates are converted from kbps to bps,
the other in vp9_calc_pframe_target_size_one_pass_vbr(),
where target is scaled by kf_ratio.
vp9_ratectrl.c:2039: runtime error: signed integer overflow:
-
137438983 * 25 cannot be represented in type 'int'
Bug: chromium:1475943
Change-Id: I1ab0980862548c8827fae461df9a7a74425209ff
Jerome Jiang [Fri, 25 Aug 2023 14:56:23 +0000 (10:56 -0400)]
Do not call ext rc functions when they're null
Change-Id: Ie78afadd4ad5845e42bd4d5412703369f8d5e0f5
James Zern [Mon, 21 Aug 2023 22:46:42 +0000 (22:46 +0000)]
Merge "vp9_calc_pframe_target_size_one_pass_cbr: fix int overflow" into main
James Zern [Mon, 21 Aug 2023 22:46:25 +0000 (22:46 +0000)]
Merge "vp8,ratectrl.c: fix integer overflow" into main
James Zern [Mon, 21 Aug 2023 19:05:49 +0000 (19:05 +0000)]
Merge "fdct4x4_neon: fix compile w/cl" into main
Jerome Jiang [Thu, 17 Aug 2023 18:56:35 +0000 (14:56 -0400)]
vp9 ext rc: copy under/overshoot% for all RC modes
Bug: b/
295507002
Change-Id: Ie4b302b82fa2d83e0be450cea60c59907b37f954
James Zern [Fri, 18 Aug 2023 21:04:33 +0000 (14:04 -0700)]
vp9_calc_pframe_target_size_one_pass_cbr: fix int overflow
vp9/encoder/vp9_ratectrl.c:2171:23: runtime error: signed integer
overflow:
103079280 * -22 cannot be represented in type 'int'
Bug: chromium:1473268
Change-Id: Ic1de7d48e74d94c2a992e53ec4382b5b44dba7af
James Zern [Fri, 18 Aug 2023 19:36:45 +0000 (12:36 -0700)]
vp8,ratectrl.c: fix integer overflow
in calc_iframe_target_size():
vp8/encoder/ratectrl.c:349:31: runtime error: signed integer overflow:
38 *
343597280 cannot be represented in type 'int'
Bug: chromium:1473473
Change-Id: Ie8f7b147efb27c92314df09837b66f7d97046883
James Zern [Fri, 18 Aug 2023 16:10:00 +0000 (09:10 -0700)]
vp9_cx_iface: fix code compatibility
Remove '= {}' (C23 [1]) and use memset to clear a vpx_rc_config_t
instance.
after:
6e2c3b9b3 Add RC mode to vpx external RC interface
Fixes compile with -pedantic and Microsoft's cl compiler.
[1] https://en.cppreference.com/w/c/language/initialization
Change-Id: I2019cdf0c42103cfc80b1e58c68b7596e497007f
Jerome Jiang [Thu, 17 Aug 2023 17:47:50 +0000 (17:47 +0000)]
Merge "vp9 ext rc: Assign over/undershoot % for CQ mode" into main
Jerome Jiang [Thu, 17 Aug 2023 16:34:48 +0000 (12:34 -0400)]
vp9 ext rc: Assign over/undershoot % for CQ mode
Bug: b/
295507002
Change-Id: Ie5b4dabc620f6d17c4039f186e0709d8e9479b47
Jerome Jiang [Thu, 17 Aug 2023 15:11:48 +0000 (15:11 +0000)]
Merge "Extend ext RC mode to have CQ mode" into main
Jerome Jiang [Wed, 16 Aug 2023 20:05:01 +0000 (16:05 -0400)]
Extend ext RC mode to have CQ mode
Also do not return error if it's not specified.
Bug: b/
295507002
Change-Id: Ib1f83551272bdde1bceff03554abc4c02d95ca09
James Zern [Wed, 16 Aug 2023 19:41:23 +0000 (19:41 +0000)]
Merge "tools_common,die_codec(): output to stderr" into main
James Zern [Wed, 16 Aug 2023 18:15:55 +0000 (11:15 -0700)]
tools_common,die_codec(): output to stderr
This function is used to report a failure, messages of this type should
go to stderr.
Change-Id: I0dee246dddc886a3278b247a770a356446658864
Jerome Jiang [Tue, 15 Aug 2023 18:39:16 +0000 (14:39 -0400)]
Add RC mode to vpx external RC interface
Bug: b/
295507002
Change-Id: Id2dd21482828ec64eef9abdf6a1cca83100d21ba
James Zern [Fri, 11 Aug 2023 22:48:19 +0000 (15:48 -0700)]
fdct4x4_neon: fix compile w/cl
Use an array for constant initialization rather than array syntax which
assumes the underlying type is a vector. Fixes compile error with
cl targeting Windows Arm64:
vpx_dsp\arm\fdct4x4_neon.c(55,52): error C2078: too many initializers
No change in assembly with gcc 12.2.0 & clang 14.
Bug: b/
277255390
Bug: webm:1810
Fixed: webm:1810
Change-Id: Ia30edcdbb45067dfe865b9958a5eecf1fd9ddfc8
James Zern [Fri, 11 Aug 2023 20:40:07 +0000 (13:40 -0700)]
*quantize*.c: fix visual studio warnings
after:
22818907d normalize *const in rtcd
fixes warnings of the form:
vpx_dsp\x86\quantize_avx.c(145): warning C4028: formal parameter 2
different from declaration
Change-Id: I4dc423f11ec4a9171e18bdb6be2fa8dfb65ee61a
Jonathan Wright [Thu, 10 Aug 2023 14:33:54 +0000 (15:33 +0100)]
Fix bug and re-enable vpx_int_pro_row/col_neon
Fix a bug in vpx_int_pro_row_neon (increment pointer after peeled
first loop iteration) and re-enable both vpx_int_pro_row/col_neon
paths.
Also fix IntProRowTest to use width_ (instead of 0) as the src_stride
for the input data block. The test's use of 0 for src_stride is the
reason the tests passed with the buggy Neon implementation noted in
the listed bugs. (The old buggy Neon implementation fails the
adjusted unit tests.)
BUG=webm:1800
BUG=webm:1809
Change-Id: I1f4572ee155653a7596fe2c10b5938ea7a3f63ae
Yunqing Wang [Tue, 8 Aug 2023 20:32:52 +0000 (20:32 +0000)]
Merge "Enable arm test in c vs SIMD bit-exactness test" into main
Yunqing Wang [Tue, 8 Aug 2023 20:32:41 +0000 (20:32 +0000)]
Merge "Disable vpx_int_pro_row/col neon SIMD functions" into main
Yunqing Wang [Mon, 7 Aug 2023 21:54:30 +0000 (14:54 -0700)]
Enable arm test in c vs SIMD bit-exactness test
Arm SIMD testing was enabled in c vs SIMD bit-exactness test after
arm SIMD mismatch was resolved.
BUG=webm:1800
Change-Id: Id60127313a0955f4a5c8468281fd5a441668fddb
Yunqing Wang [Mon, 7 Aug 2023 20:10:41 +0000 (13:10 -0700)]
Disable vpx_int_pro_row/col neon SIMD functions
The vpx_int_pro_row/col neon SIMD version caused a mismatch between
neon encoding vs c encoding. Disabled them for now to ensure the
correctness of VP9 encoding on the arm platform. Since these 2
functions were not used much, so this wouldn't affect the overall
encoder speed much.
BUG=webm:1800
BUG=webm:1809
Change-Id: Id1a7d542fc03d4cf9fa1039a49832abf35fb722f
Jerome Jiang [Mon, 7 Aug 2023 20:42:43 +0000 (16:42 -0400)]
VP9 RC: Add pixel row/col of a TPL block
Bug: b/
294049605
Change-Id: I383a88a037a2a48a5fc1b9def6f991278c3665a8
Jerome Jiang [Mon, 7 Aug 2023 14:28:46 +0000 (10:28 -0400)]
Fix more clang-tidy warnings
- Include vpx/vpx_ext_ratectrl.h in vp9_ext_ratectrl.c
- Include vpx/internal/vpx_codec_internal.h
- Include <stddef.h> for NULL
Bug: b/
294049605
Change-Id: Iedd8b3864da27fde1678bfa6606e6fc5630a7a09
Jerome Jiang [Fri, 4 Aug 2023 20:12:29 +0000 (16:12 -0400)]
Fix some clang-tidy warnings
- Use zero initializer instead of memset to avoid including <cstring>
- Include vpx_codec.h for vpx_codec_err_t and error codes
- Include vpx_tpl.h for VpxTplGopStats
Change-Id: Iac5837ce2173bd945bfe8eeb401ff4dfd04fd2e1
Jerome Jiang [Fri, 4 Aug 2023 18:18:33 +0000 (14:18 -0400)]
Fix include path fpr vpx_tpl.h,vpx_ext_ratectrl.h
Bug: b/
294049605
Change-Id: I6422fc4250c2192f985cce2e296a19a05934969b
Jerome Jiang [Thu, 3 Aug 2023 19:28:44 +0000 (19:28 +0000)]
Merge "vp9_quantize_fp_neon: Same params name as in decl" into main
Jerome Jiang [Thu, 3 Aug 2023 18:33:32 +0000 (18:33 +0000)]
Merge "vp9 ext rc: Add callback for tpl stats" into main
Jerome Jiang [Thu, 3 Aug 2023 18:07:55 +0000 (14:07 -0400)]
vp9_quantize_fp_neon: Same params name as in decl
Clear some clang-tidy warnings
Change-Id: Iea4c4e77b3d515ec6384bd34875a0002ab13c14c
Jerome Jiang [Tue, 1 Aug 2023 15:00:20 +0000 (11:00 -0400)]
vp9 ext rc: Add callback for tpl stats
Added test
Bug: b/
294049605
Change-Id: I3967a0f915e1a6e7a0d34d04732c33e1ca6f35e7
Anupam Pandey [Tue, 13 Jun 2023 10:32:58 +0000 (16:02 +0530)]
Add test to check bit exactness of C and SIMD in VP9 encoder
This CL adds a shell script to test bit exactness of C and SIMD
VP9 encoder for x86 platform.
As C Vs NEON encoding outputs are not bit-exact (BUG=webm:1809),
ARM tests are currently disabled.
BUG=webm:1800
Change-Id: Iffcc70863e8cf83ccb5bc5be73e8866165697358
Yunqing Wang [Wed, 2 Aug 2023 03:58:18 +0000 (20:58 -0700)]
Add a 10-bit test file
Added a 10-bit test file for VP9 end-to-end c vs SIMD bit-
exactness test.
BUG=webm:1800
Change-Id: I4a864f1a740abee27049d68231adf2ec308f9a96
Johann [Fri, 28 Jul 2023 20:44:56 +0000 (05:44 +0900)]
normalize *const in rtcd
Change-Id: Iece50143b43263c0c8f90299bedd7d2a5b9aa56b
Johann [Fri, 28 Jul 2023 11:21:31 +0000 (20:21 +0900)]
remove incorrect (void)
n_coeffs is used in this function
Change-Id: I5f5d2933304bb636a33e0fa294b4526edb65a08d
Johann [Fri, 28 Jul 2023 10:37:48 +0000 (19:37 +0900)]
quantize_fp: reduce parameters
apply similar steps as to the other quantize functions to switch to
macroblock_plane and ScanOrder
Change-Id: I486d653326aaf52ffd3beafd2e891ba6a5d57ef3
Johann [Mon, 14 Nov 2022 07:47:33 +0000 (16:47 +0900)]
quantize: reduce parameters
Pass macroblock_plane and ScanOrder instead of looking up the values
beforehand. Avoids pushing arguments to the stack.
Change-Id: I22df6f645eb1a1d89ba5a4d9bc58acb77af51aa9
James Zern [Thu, 27 Jul 2023 02:03:04 +0000 (19:03 -0700)]
resize_test: prefer 'override' to 'virtual'
Update functions in WRITE_COMPRESSED_STREAM blocks, which are disabled
by default. This caused them to be missed in:
84e6b7ab0 test/*.cc: prefer 'override' to 'virtual'
Change-Id: I0e462263f19c15eb0a30d0c0f4e145062f789489
James Zern [Wed, 26 Jul 2023 22:29:40 +0000 (15:29 -0700)]
test/*.h: prefer 'override' to 'virtual'
created with clang-tidy --fix --checks=-*,modernize-use-override
Change-Id: I53412f35590799574edb573ae417a4a004cccd1e
James Zern [Wed, 26 Jul 2023 22:38:36 +0000 (15:38 -0700)]
encode_test_driver.h: use bool literal
Change-Id: If47be9ca0daa18d92cb849484f9e139e65e3560e
James Zern [Tue, 25 Jul 2023 19:18:03 +0000 (12:18 -0700)]
test/**.cc: use bool literals
created with clang-tidy --fix --checks=-*,modernize-use-bool-literals
Change-Id: Ifaed8ca824676555acaf1053b2a5a52c51a70638
James Zern [Tue, 25 Jul 2023 19:10:21 +0000 (12:10 -0700)]
test/decode_perf_test.cc: use nullptr
created with clang-tidy --fix --checks=-*,modernize-use-nullptr
Change-Id: Ibf4a80fa00e9b59d471c92788ec4c7c72e4662e5
James Zern [Tue, 25 Jul 2023 19:04:57 +0000 (12:04 -0700)]
test/*.cc: use '= default'
created with clang-tidy --fix --checks=-*,modernize-use-equals-default
Change-Id: Ie373fb5501491fce53479d20f3a6d908c4b7c535
James Zern [Tue, 25 Jul 2023 18:27:34 +0000 (18:27 +0000)]
Merge changes I71e1b442,Ibbfb949b into main
* changes:
test/*.cc: prefer 'override' to 'virtual'
test,AbstractBench: fix -Wnon-virtual-dtor
James Zern [Tue, 25 Jul 2023 00:23:23 +0000 (17:23 -0700)]
test/*.cc: prefer 'override' to 'virtual'
created with clang-tidy --fix --checks=-*,modernize-use-override
Change-Id: I71e1b4423c143b3e47fe90929ee110b307cdb565
James Zern [Sat, 8 Jul 2023 02:14:59 +0000 (19:14 -0700)]
test,AbstractBench: fix -Wnon-virtual-dtor
In file included from ../test/bench.cc:14:
../test/bench.h:17:7: warning: 'AbstractBench' has virtual functions but
non-virtual destructor [-Wnon-virtual-dtor]
class AbstractBench {
Change-Id: Ibbfb949b63c8dff936c7ed4f2d056dea0343377b
Jerome Jiang [Mon, 24 Jul 2023 22:04:58 +0000 (18:04 -0400)]
Add new_mv_count to ext rate control interface
Bug: b/
290385227
Change-Id: Ia87c4bf1e9315bf1134c998f88e9d5548c497777
Jerome Jiang [Mon, 24 Jul 2023 17:08:05 +0000 (13:08 -0400)]
cleanup: _pt -> _ptr in vp9 external RC interface
Change-Id: Ic483488f8f6273e8977cfc324466bda41f1e47a7
James Zern [Thu, 13 Jul 2023 16:49:30 +0000 (09:49 -0700)]
vp9_rdopt,handle_inter_mode: fix -Wmaybe-uninitialized warning
With gcc 13.1.1
In function ‘handle_inter_mode’,
inlined from ‘vp9_rd_pick_inter_mode_sb’ at
../vp9/encoder/vp9_rdopt.c:3872:17:
../vp9/encoder/vp9_rdopt.c:3142:8: warning: ‘tmp_rd’ may be used
uninitialized [-Wmaybe-uninitialized]
3142 | rd = tmp_rd + RDCOST(x->rdmult, x->rddiv, rs, 0);
../vp9/encoder/vp9_rdopt.c: In function ‘vp9_rd_pick_inter_mode_sb’:
../vp9/encoder/vp9_rdopt.c:2846:15: note: ‘tmp_rd’ was declared here
2846 | int64_t rd, tmp_rd, best_rd = INT64_MAX;
Change-Id: I8608957cc8bbeb1ae525f3c3dad6fe9785b2a9b4
James Zern [Tue, 11 Jul 2023 00:55:30 +0000 (00:55 +0000)]
Merge "vp8: remove missing prototypes from the rtcd header" into main
L. E. Segovia [Sat, 8 Jul 2023 23:30:49 +0000 (20:30 -0300)]
vp8: remove missing prototypes from the rtcd header
These were removed in If7a49e920e12f7fca0541190b87e6dae510df05c but
the leftovers can cause a build to fail if the code isn't optimized out.
I just found this out in the Meson port of libvpx for GStreamer.
BUG=webm:1584
Change-Id: I1c953720a2cbec3796200d4ec4020dca0b672bfb
James Zern [Mon, 10 Jul 2023 17:06:13 +0000 (10:06 -0700)]
vpx_free_tpl_gop_stats: normalize param name
this fixes a clang-tidy warning
Change-Id: I13f4750c15b7d6a395494c8dbcb896bde125b3c4
James Zern [Thu, 6 Jul 2023 17:10:37 +0000 (17:10 +0000)]
Merge "delete some dead code" into main
James Zern [Thu, 29 Jun 2023 16:52:26 +0000 (09:52 -0700)]
mfqe_partition: fix -Wunreachable-code
vp9/common/vp9_mfqe.c|240 col 16| warning: code will never be executed
[-Wunreachable-code]
BLOCK_SIZE mfqe_bs, bs_tmp;
^~~~~~~
Change-Id: I566b20d8c294e19bc4b90b57b730f933048e71a5
Wan-Teh Chang [Wed, 28 Jun 2023 23:09:36 +0000 (16:09 -0700)]
Fix a bug in vpx_highbd_hadamard_32x32_neon().
This CL is the highbd version of
https://chromium-review.googlesource.com/c/webm/libvpx/+/4646573.
The bug is caused by the incorrect assumption that
(a / 2) + (b / 2) == (a + b) / 2 and (a / 2) - (b / 2) == (a - b) / 2.
Also fix the Rand() inputs to Hadamard functions in unit tests.
This CL ports the following libaom CLs to libvpx:
https://aomedia-review.googlesource.com/c/aom/+/177101
https://aomedia-review.googlesource.com/c/aom/+/177241
Change-Id: Ic20e7684eab5d6507417fa2b75e572064d37ad2c
James Zern [Wed, 28 Jun 2023 19:26:32 +0000 (12:26 -0700)]
delete some dead code
follow-up to:
3ecba3980 Fix Clang -Wunreachable-code-aggressive warnings
Change-Id: I364312987bc838c69c010cce024bd3d62a918417
James Zern [Wed, 28 Jun 2023 19:21:40 +0000 (19:21 +0000)]
Merge "Fix Clang -Wunreachable-code-aggressive warnings" into main
James Zern [Sat, 3 Jun 2023 01:49:00 +0000 (18:49 -0700)]
Fix Clang -Wunreachable-code-aggressive warnings
Based on the change in libaom:
fe36011455 Fix Clang -Wunreachable-code-aggressive warnings
Clang's -Wunreachable-code-aggressive flag enables several warning flags
such as -Wunreachable-code-break and -Wunreachable-code-return. Chrome's
build system enables -Wunreachable-code-aggressive (in
build/config/compiler/BUILD.gn), so it would be good if libvpx could be
compiled without -Wunreachable-code-aggressive warnings.
This requires the VPX_NO_RETURN macro be defined correctly for all the
compilers we support, otherwise some compilers may warn about missing
return statements after a die() or fatal() call (which does not return).
Change-Id: I0c069133af45a7a61759538b6d74c681ea087dcd
Jerome Jiang [Wed, 28 Jun 2023 14:04:21 +0000 (10:04 -0400)]
vp9 firstpass stats in a separate header
Change-Id: If91c5c74c71affc48eb858beb314a6c194b14023
James Zern [Wed, 28 Jun 2023 00:02:47 +0000 (00:02 +0000)]
Merge changes I1c17302f,Ic084894b,I9867f5fc,Ie3faf7b3,If5dc96b7, ... into main
* changes:
vp8_decode: fix keyframe resync after decode error
vp8_decode: only remove threads on thread create failure
vp8_decode: clear stream info on decoder create failure
vp9_decodeframe,init_mt: free tile_workers on alloc failure
vp9_alloccommon: clear allocation sizes on free
vp9_dx_iface: fix leaks on init_decoder() failure
James Zern [Tue, 27 Jun 2023 02:25:56 +0000 (19:25 -0700)]
vp8_decode: fix keyframe resync after decode error
This fixes a crash if the application continues to call
vpx_codec_decode(). Previously a non-keyframe could cause a crash if the
decoder failed before fully initializing due to an allocation failure.
The stream info and frame resolution would be 0, skipping an allocation.
Found with vpx_dec_fuzzer_vp8 & Nallocfuzz
(https://github.com/catenacyber/nallocfuzz).
Bug: webm:1807
Change-Id: I1c17302f4d3a488ba3b4eefe0bf53853dc558bc1
James Zern [Tue, 27 Jun 2023 02:22:00 +0000 (19:22 -0700)]
vp8_decode: only remove threads on thread create failure
This fixes a crash if the application continues to call
vpx_codec_decode(). Previously the decoder instance would be freed,
causing a crash when attempting to access it with restart_threads=1.
Found with vpx_dec_fuzzer_vp8 & Nallocfuzz
(https://github.com/catenacyber/nallocfuzz).
Bug: webm:1807
Change-Id: Ic084894b776729bb1572f747082cef002f0832a8
James Zern [Tue, 27 Jun 2023 02:18:55 +0000 (19:18 -0700)]
vp8_decode: clear stream info on decoder create failure
This fixes a crash if the application continues to call
vpx_codec_decode().
Found with vpx_dec_fuzzer_vp8 & Nallocfuzz
(https://github.com/catenacyber/nallocfuzz).
Bug: webm:1807
Change-Id: I9867f5fc3d1163026f521a9609d3cbbc00568d1d
James Zern [Tue, 27 Jun 2023 02:09:24 +0000 (19:09 -0700)]
vp9_decodeframe,init_mt: free tile_workers on alloc failure
This avoids a crash if any of the thread allocations fail and the
application continues to call vpx_codec_decode(). Previously
num_tile_workers would be non-zero, but not equal to num_threads, which
would cause a crash during later thread management.
Found with vpx_dec_fuzzer_vp9 & Nallocfuzz
(https://github.com/catenacyber/nallocfuzz).
Bug: webm:1807
Change-Id: Ie3faf7b36764aebedac0924acb6e4cb7545aec7d
James Zern [Tue, 27 Jun 2023 02:06:51 +0000 (19:06 -0700)]
vp9_alloccommon: clear allocation sizes on free
This fixes reallocations (and avoids potential crashes) if any
allocations fails and the application continues to call
vpx_codec_decode().
Found with vpx_dec_fuzzer_vp9 & Nallocfuzz
(https://github.com/catenacyber/nallocfuzz).
Bug: webm:1807
Change-Id: If5dc96b73c02efc94ec84c25eb50d10ad6b645a6
James Zern [Sat, 24 Jun 2023 02:27:26 +0000 (19:27 -0700)]
vp9_dx_iface: fix leaks on init_decoder() failure
If any allocations fail in init_decoder() and the application continues
to call vpx_codec_decode() some of the allocations would be orphaned or
the decoder would be left in a partially initialized state.
Found with vpx_dec_fuzzer_vp9 & Nallocfuzz
(https://github.com/catenacyber/nallocfuzz).
Bug: webm:1807
Change-Id: I44f662526d715ecaeac6180070af40672cd42611
Wan-Teh Chang [Mon, 26 Jun 2023 21:57:53 +0000 (14:57 -0700)]
Fix a bug in vpx_hadamard_32x32_neon()
A right shift by 2 is equivalent to two halving operations if there is
no no addition or subtraction between the two halving operations.
Note: Since vhaddq_s16() and vhsubq_s16() have 17-bit intermediate
precision, the Neon code doesn't need to go to int32_t as was done in
https://chromium-review.googlesource.com/c/webm/libvpx/+/4604169.
Change-Id: Ibe0691cde0fd3b94ee7c497845ba459d30d503b0
James Zern [Tue, 20 Jun 2023 20:06:32 +0000 (20:06 +0000)]
Merge "configure.sh: Improve a comment." into main
Yunqing Wang [Tue, 20 Jun 2023 16:34:58 +0000 (16:34 +0000)]
Merge "Remove vp9_diamond_search_sad_avx function" into main
Anupam Pandey [Wed, 14 Jun 2023 04:57:49 +0000 (10:27 +0530)]
Remove vp9_diamond_search_sad_avx function
This CL removes the avx of vp9_diamond_search_sad function as
there is no speed up seen wrt C.
Change-Id: Ife6005d8e444ea2c8d07ac0f686c840344b9e0ea
Chen Wang [Fri, 16 Jun 2023 08:19:02 +0000 (16:19 +0800)]
configure.sh: Improve a comment.
The corresponding case block is not only for ARM.
Original comment text makes reader confused.
Test: N/A, just comment text changes.
Change-Id: I3154d18d3b3d237c1eecfe07dc7ec237c98194cf
Signed-off-by: Chen Wang <wangchen20@iscas.ac.cn>
Jerome Jiang [Wed, 14 Jun 2023 20:20:30 +0000 (16:20 -0400)]
Add new_mv_count to firstpass stats
Mostly follows the logic of how it's calculated in libaom.
Bug: b/
287283080
Change-Id: I9ee67d844ef9db7cca63339b5304459eaa28d324