Jerome Jiang [Tue, 28 Jun 2022 14:24:57 +0000 (10:24 -0400)]
Add vp8_ prefix for quantize_lsx.c
Duplicate name as vpx_dsp/loongarch/quantize_lsx.c
Chromium update script fails.
Bug: webm:1755
Change-Id: Ifb956c2292d909496eb2b9e1833993f1b021b07e
Cheng Chen [Fri, 24 Jun 2022 18:57:42 +0000 (11:57 -0700)]
L2E: Distinguish fixed and active gf_interval
min/max_gf_interval is fixed and can be passed from the command line.
It must satisfy the level constraints.
active_min/max_gf_interval might be changing based on
min/max_gf_interval. It is determined per GOP.
Change-Id: If456c691c97a8b4c946859c05cedd39ca7defa9c
James Zern [Fri, 17 Jun 2022 01:43:44 +0000 (18:43 -0700)]
vp9_encode_sb_row: remove a branch w/CONFIG_REALTIME_ONLY
replace the check on use_nonrd_pick_mode with an assert. this is only a
start, there are many branches that could be removed that check mode ==
REALTIME, etc. with this configuration.
Bug: webm:1773
Change-Id: I38cf9f83e7c085eb8e87d5cf6db7dc75359b611b
James Zern [Fri, 17 Jun 2022 01:22:52 +0000 (18:22 -0700)]
vp9_cx_iface: set default cpu_used=5 w/CONFIG_REALTIME_ONLY
this avoids a crash if cpu-used is not explicitly set as there are some
(unnecessary) checks against use_nonrd_pick_mode which would cause
encoding to be skipped if the old default of 0 were used
Bug: webm:1773
Change-Id: I62fba5fb51d8afa422689b7de3f03e8f7570e50b
Fixed: webm:1773
James Zern [Tue, 14 Jun 2022 01:24:23 +0000 (01:24 +0000)]
Merge "vp9,encoder: fix some integer sanitizer warnings" into main
Jerome Jiang [Mon, 13 Jun 2022 20:29:31 +0000 (16:29 -0400)]
Restore backward compatibility
This CL breaks the backward compatibility:
1365e7e1a vp9-svc: Remove VP9E_SET_TEMPORAL_LAYERING_MODE
Forcing the value of the next element
Bug: webm:1752
Change-Id: I83c774b3aa6cca25f2f14995590fb20c0a1668d4
Wan-Teh Chang [Fri, 10 Jun 2022 20:52:31 +0000 (13:52 -0700)]
Convert EncoderTest::last_pts_ to a local variable
Convert the data member EncoderTest::last_pts_ to a local variable in
the EncoderTest::RunLoop() and VP9FrameSizeTestsLarge::RunLoop()
methods. EncoderTest::last_pts_ is only used in these two methods, and
these two methods first set EncoderTest::last_pts_ to 0 before using it.
So EncoderTest::last_pts_ is effectively a local variable in these two
methods.
Note that several subclasses of EncoderTest declare their own last_pts_
data member and use it to calculate the data rate. Apparently their own
last_pts_ data member hides the same-named data member in the base
class. Although this is allowed by C++, this is very confusing.
Change-Id: I55ce1cf8cc62e07333d8a902d65b46343a3d5881
Cheng Chen [Mon, 6 Jun 2022 23:46:55 +0000 (16:46 -0700)]
L2E: Use libvpx's default q in case of invalid external value
If the external model recommends an invalid q value, we use the
default q selected by libvpx's rate control strategy.
We update the test so that when the external model wants to control
GOP decision, it could get per frame information and just recommend
an invalid q.
Change-Id: I69be4b0ee0800e7ab0706d305242bb87f001b1f7
Cheng Chen [Mon, 6 Jun 2022 22:46:41 +0000 (15:46 -0700)]
L2E: rename 'gop_index' to 'gop_global_index'
'gop_index' has already been used in vpx_rc_encodeframe_info_t,
which represents the frame index inside the current
group of picture (gop).
We therefore use 'gop_global_index' to represent the index of
the current gop to avoid duplicate names.
Change-Id: I3eb8987dd878f650649b013e0036e23d0846b5f0
Cheng Chen [Mon, 6 Jun 2022 21:53:46 +0000 (14:53 -0700)]
L2E: send first pass stats before gop decisions
This change let the encoder send first pass stats before gop
decisioins so that external models could make use of it.
Change-Id: Iafc7eddab93aa77ceaf8e1f7663a52b27d94af80
Cheng Chen [Fri, 3 Jun 2022 22:08:48 +0000 (15:08 -0700)]
L2E: Use bit mask to represent control type
The bit mask allows us to easily add an additional control mode
which both the QP and GOP are controlled by an external model.
Change-Id: I49f676f622a6e70feb2a39dc97a4e5050b7f4760
James Zern [Fri, 3 Jun 2022 17:39:48 +0000 (17:39 +0000)]
Merge "libs.mk,build/make/Makefile: make test targets ordinary rules" into main
James Zern [Fri, 3 Jun 2022 02:38:03 +0000 (19:38 -0700)]
libs.mk,build/make/Makefile: make test targets ordinary rules
this fixes a regression in make 4.2 and still present in 4.3 causing
double colon rules to be serialized which breaks sharding done by the
test and test-no-data-check rules. these targets only define one set of
rules so ordinary rules work unlike clean. install may be another
candidate, but that's left for a follow up.
Change-Id: I9f074eca2ad266eeca6e31aae2e9f31eec8680e0
Tested: make 3.81, 4.1, 4.2, 4.2.1, 4.3
James Zern [Fri, 3 Jun 2022 00:49:18 +0000 (00:49 +0000)]
Merge ".gitignore: add android studio / vscode folders" into main
James Zern [Thu, 2 Jun 2022 23:44:29 +0000 (23:44 +0000)]
Merge changes I4cba67a5,I1dd1eca9,Ib7fbf4af into main
* changes:
vp9_change_config: check vp9_alloc_loop_filter return
vp9e_set_config: setjmp before calling vp9_change_config
vp8e_set_config: setjmp before calling vp8_change_config
James Zern [Thu, 2 Jun 2022 23:34:21 +0000 (16:34 -0700)]
.gitignore: add android studio / vscode folders
Change-Id: I039a96bc33f55d9ba8bca9f9f6b69135659d2351
Cheng Chen [Thu, 2 Jun 2022 20:38:43 +0000 (20:38 +0000)]
Merge "L2E: Return error when GOP model is not set" into main
Cheng Chen [Tue, 31 May 2022 18:07:15 +0000 (11:07 -0700)]
L2E: Return error when GOP model is not set
- Return error instead of OK when GOP model is not set.
- Update descriptions for a few variables.
Change-Id: I213f6b7085c487507c3935e7ce615e807f4474cc
James Zern [Thu, 2 Jun 2022 01:55:10 +0000 (18:55 -0700)]
vp9,encoder: fix some integer sanitizer warnings
the issues fixed in this change are related to implicit conversions
between int / unsigned int:
vp9/encoder/vp9_segmentation.c:42:36: runtime error: implicit conversion
from type 'int' of value -9 (32-bit, signed) to type 'unsigned int'
changed the value to
4294967287 (32-bit, unsigned)
vpx_dsp/x86/sum_squares_sse2.c:36:52: runtime error: implicit conversion
from type 'unsigned int' of value
4294967295 (32-bit, unsigned) to type
'int' changed the value to -1 (32-bit, signed)
vpx_dsp/x86/sum_squares_sse2.c:36:67: runtime error: implicit conversion
from type 'unsigned int' of value
4294967295 (32-bit, unsigned) to type
'int' changed the value to -1 (32-bit, signed)
vp9/encoder/x86/vp9_diamond_search_sad_avx.c:81:45: runtime error:
implicit conversion from type 'uint32_t' (aka 'unsigned int') of value
4290576316 (32-bit, unsigned) to type 'int' changed the value to
-4390980 (32-bit, signed)
vp9/encoder/vp9_rdopt.c:3472:31: runtime error: implicit conversion from
type 'int' of value -1024 (32-bit, signed) to type 'uint16_t' (aka
'unsigned short') changed the value to 64512 (16-bit, unsigned)
unsigned is forced for masks and int is used with intel intrinsics
Bug: webm:1767
Change-Id: Icfa4179e13bc98a36ac29586b60d65819d3ce9ee
Fixed: webm:1767
James Zern [Sat, 28 May 2022 22:24:37 +0000 (15:24 -0700)]
vp9_change_config: check vp9_alloc_loop_filter return
Change-Id: I4cba67a5ab192d1cf1dbfb5c039a93a4952b071e
James Zern [Sat, 28 May 2022 04:50:11 +0000 (21:50 -0700)]
vp9e_set_config: setjmp before calling vp9_change_config
vp9_change_config may call functions that perform allocations which
expect failures detected by CHECK_MEM_ERROR to not return.
Change-Id: I1dd1eca9c661ed157d51b4a6a77fc9f88236d794
James Zern [Sat, 28 May 2022 04:50:11 +0000 (21:50 -0700)]
vp8e_set_config: setjmp before calling vp8_change_config
vp8_change_config may call vp8_alloc_compressor_data which expects
failures detected by CHECK_MEM_ERROR to not return.
Change-Id: Ib7fbf4af904bd9b539402bb61c8f87855eef2ad6
James Zern [Sat, 28 May 2022 22:25:49 +0000 (15:25 -0700)]
resize_test: add TODO for ResizeTest instantiation for VP9
this should match VP8 and use ONE_PASS_TEST_MODES, but currently the
code will produce integer sanitizer warnings and may segfault under
certain conditions
Bug: webm:1767,webm:1768
Change-Id: I6482ff1862f19716fde3d57522591bc61d76a84f
James Zern [Sat, 28 May 2022 22:26:29 +0000 (15:26 -0700)]
resize_test: add TODO for test failure
DISABLED_TestExternalResizeSmallerWidthBiggerSize was added for
webm:1642, but never fixed
Bug: webm:1642
Change-Id: I0fa368a44dda550241ea997068c58eaff551233c
James Zern [Fri, 27 May 2022 02:38:01 +0000 (19:38 -0700)]
libs.doxy_template: remove some obsolete variables
- COLS_IN_ALPHA_INDEX
this was unused given ALPHABETICAL_INDEX = NO
- PERL_PATH / MSCGEN_PATH
these were unused
quiets warnings with doxygen 1.9.1:
warning: Tag 'COLS_IN_ALPHA_INDEX' at line 1110 of file 'doxyfile' has
become obsolete.
warning: Tag 'PERL_PATH' at line 1105 of file 'doxyfile' has become
obsolete.
warning: Tag 'MSCGEN_PATH' at line 1126 of file 'doxyfile' has become
obsolete
Change-Id: I6229311afaa3318a3f9bcaf40fafcc5ea71ae271
Cheng Chen [Tue, 31 May 2022 17:30:48 +0000 (17:30 +0000)]
Merge "L2E: Add vp9 GOP decision helper function" into main
Cheng Chen [Tue, 31 May 2022 17:30:31 +0000 (17:30 +0000)]
Merge "L2E: Add control type for the external rate control API" into main
James Zern [Sat, 28 May 2022 02:36:47 +0000 (19:36 -0700)]
test/*: normalize use of nullptr
this is preferred over NULL in C++11
Change-Id: Ic48ddcc6dfb8975a57f6713549ad04d93db21415
Cheng Chen [Fri, 13 May 2022 20:42:28 +0000 (13:42 -0700)]
L2E: Add vp9 GOP decision helper function
Add a helper function to call the external rate control model.
The helper function is placed in the function where vp9 determines
GOP decisions.
The helper function passes frame information, including current
frame show index, coding index, etc to the external rate control
model, and then receives GOP decisions.
The received GOP decisions overwrites the default GOP decision, only
when the external rate control model is set to be active via
the codec control.
The decision should satisfy a few constraints, for example, larger
than min_gf_interval; smaller than max_gf_interval. Otherwise,
return error.
Unit tests are added to test the new functionality.
Change-Id: Id129b4e1a91c844ee5c356a7801c862b1130a3d8
Cheng Chen [Fri, 13 May 2022 17:59:06 +0000 (10:59 -0700)]
L2E: Add control type for the external rate control API
Two control types are defined: QP and GOP control.
Now the API only supports the QP model.
Change-Id: Ib3a712964b9d2282c93993ee56e0558e4795fb46
Jerome Jiang [Wed, 25 May 2022 23:39:42 +0000 (23:39 +0000)]
Revert "[NEON] Optimize vp9_diamond_search_sad() for NEON"
This reverts commit
258affdeab68ed59e181368baa46e2f1d077b0ab.
Reason for revert:
Not bitexact with C version
Original change's description:
> [NEON] Optimize vp9_diamond_search_sad() for NEON
>
> About 50% improvement in comparison to the C function.
> I have followed the AVX version with some simplifications.
>
> Change-Id: I72ddbdb2fbc5ed8a7f0210703fe05523a37db1c9
Change-Id: I5c210b3dfe1f6dec525da857dd8c83946be566fc
James Zern [Thu, 26 May 2022 05:03:17 +0000 (05:03 +0000)]
Merge changes Iecb26f38,Ib3ee9b59 into main
* changes:
GetTempOutFile(): use testing::TempDir()
y4m_test: check temp file ptr
James Zern [Sat, 21 May 2022 02:15:47 +0000 (19:15 -0700)]
GetTempOutFile(): use testing::TempDir()
rather than tmpfile(). this allows for setting the path with TEST_TMPDIR
and provides a valid default for android.
Change-Id: Iecb26f381b6a6ec97da62cfa0b7200f427440a2f
yuanhecai [Wed, 25 May 2022 01:42:35 +0000 (09:42 +0800)]
loongarch: Remove redundant code
Simplify architecture support code and remove redundant code
to improve efficiency.
Bug: webm:1755
Change-Id: I03bc251aca115b0379fe19907abd165e0876355b
James Zern [Thu, 19 May 2022 02:00:56 +0000 (19:00 -0700)]
y4m_test: check temp file ptr
GetTempOutFile() and TempOutFile::file() may return null if the open
fails
Change-Id: Ib3ee9b592140d30d12aecefa7dfc5f569fa28a34
James Zern [Sun, 15 May 2022 22:39:15 +0000 (15:39 -0700)]
tools/*.py: update to python3
only lint-hunks.py is tested as part of the presubmit; the rest may
need further changes as they're used.
Bug: b/
229626362
Change-Id: I2fd6e96deab8d892d34527e484ea65e3df86d162
yuanhecai [Tue, 17 May 2022 11:06:04 +0000 (19:06 +0800)]
loongarch: Modify the representation of macros
Some macros have been changed to "#define do {...} While (0)",
change the rest to "static INLINE ..."
Bug: webm:1755
Change-Id: I445ac0c543f12df38f086b479394b111058367d0
yuanhecai [Mon, 9 May 2022 06:39:05 +0000 (14:39 +0800)]
loongarch: Reduce the number of instructions
Replace some redundant instructions to improve the efficiency
of the program.
1. txfm_macros_lsx.h
2. vpx_convolve8_avg_lsx.c
3. vpx_convolve8_horiz_lsx.c
4. vpx_convolve8_lsx.c
5. vpx_convolve8_vert_lsx.c
6. vpx_convolve_copy_lsx.c
7. vpx_convolve_lsx.h
Bug: webm:1755
Change-Id: I9b7fdf6900338a26f9b1775609ad387648684f3d
yuanhecai [Fri, 6 May 2022 04:17:39 +0000 (12:17 +0800)]
vp9[loongarch]: Optimize vpx_quantize_b/b_32x32
1. vpx_quantize_b_lsx
2. vpx_quantize_b_32x32_lsx
Bug: webm:1755
Change-Id: I476c8677a2c2aed7248e088e62c3777c9bed2adb
yuanhecai [Sun, 24 Apr 2022 02:34:21 +0000 (10:34 +0800)]
vp8[loongarch]: Optimize vp8_sixtap_predict4x4
1. vp8_sixtap_predict4x4
Bug: webm:1755
Change-Id: If7d844496ef2cfe2252f2ef12bb7cded63ad03dd
yuanhecai [Wed, 20 Apr 2022 03:16:55 +0000 (11:16 +0800)]
vp8[loongarch]: Optimize fdct8x4/diamond_search_sad
1. vp8_short_fdct8x4_lsx
2. vp8_diamond_search_sad_lsx
3. vpx_sad8x8_lsx
Bug: webm:1755
Change-Id: Ic9df84ead2d4fc07ec58e9730d6a12ac2b2d31c1
yuanhecai [Wed, 20 Apr 2022 03:13:13 +0000 (11:13 +0800)]
vp8[loongarch]: Optimize sub_pixel_variance8x8/16x16
1. vpx_sub_pixel_variance8x8_lsx
1. vpx_sub_pixel_variance16x16_lsx
2. vpx_mse16x16_lsx
Bug: webm:1755
Change-Id: Iaedd8393c950c13042a0597d0d47b534a2723317
Hao Chen [Fri, 18 Mar 2022 01:33:53 +0000 (09:33 +0800)]
vp8[loongarch]: Optimize vp8 encoding partial function
1. vp8_short_fdct4x4
2. vp8_regular_quantize_b
3. vp8_block_error
4. vp8_mbblock_error
5. vpx_subtract_block
Bug: webm:1755
Change-Id: I3dbfc7e3937af74090fc53fb4c9664e6cdda29ef
Marco Paniconi [Mon, 16 May 2022 05:15:29 +0000 (22:15 -0700)]
vp9-rtc: Fix to usage of active_maps when aq_mode=0
If aq_mode=0 the segmentation feature may still be used
for active_maps, so the condition active_maps.enabled
needs to be added in two places regarding segmentation
logic in encodeframe.c. Otherwise the active_maps would
have no effect.
This also resolves why the assert in bug webm:1762 was
not triggered when aq_mode=0.
Change-Id: Ibd68e9b5c3f81728241a168d3fb3567d6845633d
James Zern [Fri, 13 May 2022 19:15:59 +0000 (19:15 +0000)]
Merge changes I7d68c7f2,If283fc08,I3b1e0a2c into main
* changes:
vp9[loongarch]: Optimize avg_variance64x64/variance8x8
vp9[loongarch]: Optimize fdct4x4/8x8_lsx
vp9[loongarch]: Optimize vpx_hadamard_16x16/8x8
yuanhecai [Wed, 13 Apr 2022 08:46:22 +0000 (16:46 +0800)]
vp9[loongarch]: Optimize avg_variance64x64/variance8x8
1. vpx_variance8x8_lsx
2. vpx_sub_pixel_avg_variance64x64_lsx
Bug: webm:1755
Change-Id: I7d68c7f2f5c8d27dc31cfd32298aeefb68f5d560
yuanhecai [Tue, 12 Apr 2022 13:01:53 +0000 (21:01 +0800)]
vp9[loongarch]: Optimize fdct4x4/8x8_lsx
1. vpx_fdct4x4_lsx
2. vpx_fdct8x8_lsx
Bug: webm:1755
Change-Id: If283fc08f9bedcbecd2c4052adb210f8fe00d4f0
yuanhecai [Tue, 12 Apr 2022 08:02:55 +0000 (16:02 +0800)]
vp9[loongarch]: Optimize vpx_hadamard_16x16/8x8
1. vpx_hadamard_16x16_lsx
2. vpx_hadamard_8x8_lsx
Bug: webm:1755
Change-Id: I3b1e0a2c026c3806b7bbbd191d0edf0e78912af7
Jerome Jiang [Fri, 13 May 2022 01:05:24 +0000 (21:05 -0400)]
Add aq mode 0 and 3 to active map test
Bug: webm:1762
Change-Id: Ia827f6686e8d0cdc09f3d07d07dacaa4fcd801ab
Marco Paniconi [Thu, 12 May 2022 18:18:19 +0000 (11:18 -0700)]
vp9-rtc: Fix to interp_filter for segment skip
For segment skip feature: allow for setting the
mi->interp_filter to BILINEAR, if cm->interp_filter
is set BILIENAR. This can happen at speed 9 when the
segment skip feature is used (e.g., active_maps)
Without this fix the assert can be triggered with the
active_map_test.cc for speed 9 included.
Updated the test.
Fixes the assert triggered in the issue:
Bug: webm:1762
Change-Id: I462e0bdd966e4f3cb5b7bc746685916ac8808358
James Zern [Mon, 9 May 2022 17:40:49 +0000 (17:40 +0000)]
Merge "[NEON] Optimize vp9_diamond_search_sad() for NEON" into main
Konstantinos Margaritis [Tue, 3 May 2022 09:24:44 +0000 (12:24 +0300)]
[NEON] Optimize vp9_diamond_search_sad() for NEON
About 50% improvement in comparison to the C function.
I have followed the AVX version with some simplifications.
Change-Id: I72ddbdb2fbc5ed8a7f0210703fe05523a37db1c9
James Zern [Fri, 6 May 2022 18:55:56 +0000 (11:55 -0700)]
add some missing realloc checks
Change-Id: I0fd1e094085c18b1d9a32333e876c2affeb6de23
James Zern [Fri, 6 May 2022 18:47:06 +0000 (11:47 -0700)]
vp8[cd]x.h: document vpx_codec_vp[89]_[cd]x*
+ mark the _algo variables as deprecated.
this quiets some doxygen warnings
Bug: webm:1752
Change-Id: I53b9b796c3d8fef5c713ee4278641198f95b5864
Jerome Jiang [Tue, 3 May 2022 14:44:49 +0000 (10:44 -0400)]
vp9 svc sample: set fps from y4m file
Change-Id: I082c0409910da4cda5bf852b20ffa11ba5c2ebd6
James Zern [Fri, 29 Apr 2022 00:45:47 +0000 (17:45 -0700)]
examples: add missing argv_dup alloc checks
Change-Id: Ia3080cbf50071d599c7168a20466392a963f101a
James Zern [Thu, 28 Apr 2022 17:03:32 +0000 (17:03 +0000)]
Merge changes I99ee0ef3,Ie087e8be,I6b19d016,I6fb7771d,I54f83733, ... into main
* changes:
y4m_input_open: check allocs
fastssim,fs_ctx_init: check alloc
vp9_get_smooth_motion_field: check alloc
vp9_row_mt_alloc_rd_thresh: check alloc
simple_encode,init_encoder: check buffer_pool alloc
VP9RateControlRTC::Create: check segmentation_map alloc
vp9_speed_features.c: check allocations
vp9_alloc_motion_field_info: check motion_field_array alloc
vp9_enc_grp_get_next_job: check job queue alloc
vp9: check postproc_state.limits allocs
vp9,encode_tiles_buffer_alloc: fix allocation check
yuanhecai [Tue, 12 Apr 2022 01:10:27 +0000 (09:10 +0800)]
vp9[loongarch]: Optimize sad8x8/32x64/64x32x4d
1. vpx_sad8x8x4d_lsx
2. vpx_sad32x64x4d_lsx
3. vpx_sad64x32x4d_lsx
Bug: webm:1755
Change-Id: I08a2b8717ec8623ffdd4451a04e68fa3a7228668
yuanhecai [Thu, 7 Apr 2022 09:51:51 +0000 (17:51 +0800)]
vp9[loongarch]: Optimize sad64x64/32x32_avg,comp_avg_pred
1. vpx_sad64x64_avg_lsx
2. vpx_sad32x32_avg_lsx
3. comp_avg_pred_lsx
Bug: webm:1755
Change-Id: I58dabdcdd4265bd6ebd5670db8a132d2e838683f
James Zern [Wed, 27 Apr 2022 05:20:00 +0000 (22:20 -0700)]
y4m_input_open: check allocs
Change-Id: I99ee0ef3ab28a22923cb413ccf5935fdc38862be
James Zern [Wed, 27 Apr 2022 05:19:34 +0000 (22:19 -0700)]
fastssim,fs_ctx_init: check alloc
Change-Id: Ie087e8be1e943b94327ed520db447a0e3a927738
James Zern [Wed, 27 Apr 2022 05:19:05 +0000 (22:19 -0700)]
vp9_get_smooth_motion_field: check alloc
Change-Id: I6b19d0169d127f622abf97b3b8590eee957bdc51
James Zern [Wed, 27 Apr 2022 05:18:21 +0000 (22:18 -0700)]
vp9_row_mt_alloc_rd_thresh: check alloc
Change-Id: I6fb7771d9fa6ec54d81f24a02a289e8b852e7332
James Zern [Wed, 27 Apr 2022 02:16:11 +0000 (19:16 -0700)]
simple_encode,init_encoder: check buffer_pool alloc
Change-Id: I54f83733260abf828166400c5fd0c4c7e3ccec2f
James Zern [Wed, 27 Apr 2022 02:15:40 +0000 (19:15 -0700)]
VP9RateControlRTC::Create: check segmentation_map alloc
Change-Id: I17b23915c32accf834def5ab26a8e4e188f9993a
James Zern [Wed, 27 Apr 2022 02:14:44 +0000 (19:14 -0700)]
vp9_speed_features.c: check allocations
Change-Id: If3b319c1ce7036c2259440f4eeb2e645bf559f4c
James Zern [Wed, 27 Apr 2022 02:13:48 +0000 (19:13 -0700)]
vp9_alloc_motion_field_info: check motion_field_array alloc
Change-Id: I4ae11242e645feb3b85eaea186f14b3676ae40a8
James Zern [Wed, 27 Apr 2022 02:07:08 +0000 (19:07 -0700)]
vp9_enc_grp_get_next_job: check job queue alloc
+ reverse conditional order; var == constant is more readable
Change-Id: I9f2b4394024c262fd5fe9576a8bf33afe197c050
James Zern [Wed, 27 Apr 2022 02:05:56 +0000 (19:05 -0700)]
vp9: check postproc_state.limits allocs
Change-Id: I9d5df96580074375e4847d2e2f60a6a6d56eeea5
James Zern [Wed, 27 Apr 2022 01:42:24 +0000 (18:42 -0700)]
vp9,encode_tiles_buffer_alloc: fix allocation check
previously vp9_bitstream_worker_data was checked after it was memset();
this change uses CHECK_MEM_ERROR for consistency to ensure the pointer
is checked first
Change-Id: I532d0eb0e746dc6b8d694b616eba693c5c0053ac
yuanhecai [Tue, 5 Apr 2022 10:17:19 +0000 (18:17 +0800)]
vp9[loongarch]: Optimize fdct/get/variance16x16
1. vpx_fdct16x16_lsx
2. vpx_get16x16var_lsx
3. vpx_variance16x16_lsx
Bug: webm:1755
Change-Id: I27090406dc28cfdca64760fea4bc16ae11b74628
James Zern [Tue, 26 Apr 2022 01:15:30 +0000 (01:15 +0000)]
Merge changes Ib8bcefd2,I84f789ca into main
* changes:
register_state_check.h: add compiler barrier
add_noise_test.cc: remove stale TODO
James Zern [Mon, 25 Apr 2022 22:12:02 +0000 (15:12 -0700)]
register_state_check.h: add compiler barrier
around ASM_REGISTER_STATE_CHECK() this helps keep the call ordering
consistent avoiding some code reordering which may affect the registers
being checked
fixes issue with armv7 and multiple versions of gcc:
[ RUN ] C/AddNoiseTest.CheckNoiseAdded/0
test/register_state_check.h:116: Failure
Expected equality of these values:
pre_store_[i]
Which is: 0
post_store[i]
Which is:
4618441417868443648
Bug: webm:1760
Change-Id: Ib8bcefd2c4d263f9fc4d4b4d4ffb853fe89d1152
Fixed: webm:1760
James Zern [Mon, 25 Apr 2022 18:20:48 +0000 (11:20 -0700)]
add_noise_test.cc: remove stale TODO
this was completed in:
0dc69c70f postproc : fix function parameters for noise functions.
Change-Id: I84f789ca333e9690e70e696d44475dd59339593b
yuanhecai [Fri, 8 Apr 2022 07:00:33 +0000 (15:00 +0800)]
vp9[loongarch]: Optimize sub_pixel_variance32x32/sad16x16
1. vpx_sad16x16_lsx
2. vpx_sub_pixel_variance32x32_lsx
Bug: webm:1755
Change-Id: I9926ace710903993ccbb42caef320fa895e90127
yuanhecai [Sun, 3 Apr 2022 10:49:52 +0000 (18:49 +0800)]
vp9[loongarch]: Optimize horizontal/vertical_4/dual
1. vpx_lpf_horizontal_4_lsx
2. vpx_lpf_vertical_4_lsx
3. vpx_lpf_horizontal_4_dual_lsx
3. vpx_lpf_vertical_4_dual_lsx
Bug: webm:1755
Change-Id: I12e9f27cafd9514b24cfbf2354cc66c7d1238687
yuanhecai [Mon, 18 Apr 2022 08:21:04 +0000 (16:21 +0800)]
vp9[loongarch]: Optimize convolve8_avg_vert/convolve_copy
1. vpx_convolve8_avg_vert_lsx
2. vpx_convolve_copy_lsx
3. vpx_idct32x32_135_add_lsx
Bug: webm:1755
Change-Id: I6bdfe5836a91a5e361ab869b26641e86c5ebb68d
yuanhecai [Mon, 18 Apr 2022 08:17:17 +0000 (16:17 +0800)]
vp9[loongarch]: Optimize vertical/horizontal_8_dual
1. vpx_lpf_vertical_8_dual_lsx
2. vpx_lpf_horizontal_8_dual_lsx
Bug: webm:1755
Change-Id: I354df02cc215f36b4edf6558af0ff7fd6909deac
James Zern [Fri, 22 Apr 2022 00:16:28 +0000 (00:16 +0000)]
Merge "vp8_decode: free mt buffers early on resolution change" into main
James Zern [Wed, 20 Apr 2022 02:26:37 +0000 (19:26 -0700)]
fdct16x16_neon.h,cosmetics: fix include-guard case
Change-Id: I593735bb7f88d63f2ddab57484099479c8759a3d
James Zern [Wed, 20 Apr 2022 00:24:26 +0000 (17:24 -0700)]
vp8_decode: free mt buffers early on resolution change
this avoids a desynchronization of mb_rows if an allocation prior to
vp8mt_alloc_temp_buffers() fails and the decoder is then destroyed
Bug: webm:1759
Change-Id: I75457ef9ceb24c8a8fd213c3690e7c1cf0ec425f
James Zern [Tue, 19 Apr 2022 02:10:11 +0000 (19:10 -0700)]
webmdec: fix double free
when no frames were decoded, for example due to a decoder initialization
failure, an orphan buffer pointer from webm_guess_framerate() via
webm_read_frame() would have been freed during cleanup
Change-Id: I6ea3defdd13dd75427f79c516e207b682391e4fa
James Zern [Tue, 19 Apr 2022 02:07:39 +0000 (19:07 -0700)]
vp9_dx_iface,init_buffer_callbacks: return on alloc failure
use an error code as a jmp target is not currently set in init_decoder()
Change-Id: If7798039439f13c739298a8a92a55aaa24e2210c
James Zern [Tue, 19 Apr 2022 01:59:57 +0000 (18:59 -0700)]
vp9_encoder: check context buffer allocations
previously the returns for alloc_context_buffers_ext() and
vp9_alloc_context_buffers() were ignored which would result in a NULL
access during encoding should they fail
Change-Id: Icd76576f3d5f8d57697adc9ae926a3a5be731327
James Zern [Tue, 19 Apr 2022 01:57:51 +0000 (18:57 -0700)]
vp9_alloc_internal_frame_buffers: fix num buffers assignment
avoid setting num_internal_frame_buffers until the allocation is
checked, avoiding an invalid access in vp9_free_internal_frame_buffers()
Change-Id: I28a544a2553d62a6b5cb7c45bf10591caa4ebab6
James Zern [Tue, 19 Apr 2022 01:56:49 +0000 (18:56 -0700)]
vp9_alloccommon: add missing pointer checks
in vp9_free_ref_frame_buffers() and vp9_free_context_buffers(); pool and
free_mi may be NULL due to earlier allocation failures
Change-Id: I3bd26ea29b3aea6c58f33d5b7f5a280eb6250ec7
James Zern [Tue, 19 Apr 2022 00:16:29 +0000 (00:16 +0000)]
Merge changes If8318068,I21519b5b into main
* changes:
temporal_filter_sse4,cosmetics: fix some typos
temporal_filter_sse4: remove unused function params
James Zern [Thu, 14 Apr 2022 20:08:58 +0000 (13:08 -0700)]
temporal_filter_sse4,cosmetics: fix some typos
Change-Id: If8318068a32da52d15c0ba595f80092611f4c847
James Zern [Mon, 18 Apr 2022 18:10:30 +0000 (18:10 +0000)]
Merge "Upgrade GoogleTest to v1.11.0" into main
James Zern [Fri, 15 Apr 2022 23:45:26 +0000 (16:45 -0700)]
Upgrade GoogleTest to v1.11.0
The release tag is release-1.11.0.
Ref: https://aomedia-review.googlesource.com/c/aom/+/156641
79c98a122 Upgrade GoogleTest to v1.11.0
Note the tree structure differs from libaom, but is left untouched to
avoid breaking test include paths in this commit.
Change-Id: Ia3c6861d45a3befc2decb1da5b1018bcfd38f95a
James Zern [Sat, 16 Apr 2022 05:29:31 +0000 (22:29 -0700)]
vp8,get_sub_mv_ref_prob: change arguments to uint32_t
this matches the call with int_mv::as_int and fixes a warning with
clang-13 -fsanitize=integer:
vp8/decoder/decodemv.c:240:32: runtime error: implicit conversion from
type 'uint32_t' (aka 'unsigned int') of value
4282515456 (32-bit,
unsigned) to type 'int' changed the value to -
12451840 (32-bit, signed)
Bug: webm:1759
Change-Id: I7c0aa72baa45421929afac26566e149adc6669d7
James Zern [Sat, 16 Apr 2022 05:23:05 +0000 (22:23 -0700)]
vp8: fix some implicit unsigned -> int conversions
fixes some warnings with clang-13 -fsanitize=integer:
vp8/decoder/threading.c:77:27: runtime error: implicit conversion
from type 'unsigned int' of value
4294967295 (32-bit, unsigned) to type
'int' changed the value to -1 (32-bit, signed)
these bitmask constants were missed in:
1676cddaa vp8: fix some implicit signed -> unsigned conv warnings
Bug: webm:1759
Change-Id: I5d894d08fd41e32b91b56a4d91276837b3415ee4
James Zern [Sat, 16 Apr 2022 04:51:13 +0000 (04:51 +0000)]
Merge changes I9c24f75e,I83bce11c into main
* changes:
vp9[loongarch]: Optimize idct32x32_1024/1/34_add
vp9[loongarch]: Optimize vpx_fdct32x32/32x32_rd
Jerome Jiang [Fri, 15 Apr 2022 14:51:37 +0000 (14:51 +0000)]
Merge "Fix int overflow in intermediate calculation" into main
yuanhecai [Thu, 14 Apr 2022 03:30:55 +0000 (11:30 +0800)]
vp9[loongarch]: Optimize idct32x32_1024/1/34_add
1. vpx_idct32x32_1024_add_lsx
2. vpx_idct32x32_34_add_lsx
3. vpx_idct32x32_1_add_lsx
Bug: webm:1755
Change-Id: I9c24f75e0d93613754d8e30da7e007b8d1374e60
yuanhecai [Wed, 16 Mar 2022 06:16:33 +0000 (14:16 +0800)]
vp9[loongarch]: Optimize vpx_fdct32x32/32x32_rd
1. vpx_fdct32x32_lsx
2. vpx_fdct32x32_rd_lsx
Bug: webm:1755
Change-Id: I83bce11c0d905cf137545a46cd756aef9cedce47
James Zern [Thu, 14 Apr 2022 05:24:08 +0000 (22:24 -0700)]
temporal_filter_sse4: remove unused function params
this clears warnings under clang-13 of the form:
../vp9/encoder/x86/temporal_filter_sse4.c:275:39: warning: parameter
'u_pre' set but not used [-Wunused-but-set-parameter]
Change-Id: I21519b5b0b9c21b04b174327415e0e73b56bdfda
Jerome Jiang [Wed, 6 Apr 2022 16:46:57 +0000 (09:46 -0700)]
Fix int overflow in intermediate calculation
This is not a complete fix to webm:1751.
Bug: webm:1751
Change-Id: Ieed6c823744f5f0625d529db3746cfe4f549c8c0
James Zern [Thu, 14 Apr 2022 17:28:52 +0000 (17:28 +0000)]
Merge "vp9,update_mbgraph_frame_stats: rm unused variables" into main
James Zern [Thu, 14 Apr 2022 05:16:30 +0000 (22:16 -0700)]
vp9,update_mbgraph_frame_stats: rm unused variables
this quiets warnings under clang-13 of the form:
../vp9/encoder/vp9_mbgraph.c:222:42: warning: variable 'gld_y_offset'
set but not used [-Wunused-but-set-variable]
Change-Id: I32170b90c07058f780b4e8100ee5217232149db8