summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-07-01Merge "Fix bug with smaller width bigger size" into mainJerome Jiang
2022-06-30Fix bug with smaller width bigger sizeJerome Jiang
Bug: webm:1642 Change-Id: I831b7701495eebeeff6bdc0b570f737bb6d536c6
2022-06-30ABI compatibility to CHANGELOG for prev releases.Jerome Jiang
Bug: webm:1757 Change-Id: I19576aa0bc065045dcb0eaf770ae5b0d9ac9d684
2022-06-29rtc: Add svc test for profile 2 10/12 bitMarco Paniconi
Add TODO to fix the superframe parser for 10/12 bit. Change-Id: Ib76c4daa0ff2f516510829ead6a397c89abba2f3
2022-06-28rtc-svc: Fix to make SVC work for Profile 1Marco Paniconi
Added datarate unittest for 4:4:4 and 4:2:2 input, for spatial and temporal layers. Fix is needed in vp9_set_literal_size(): the sampling_x/y should be passed into update_inital_width(), othewise sampling_x/y = 1/1 (4:2:0) was forced. vp9_set_literal_size() is only called by the svc and on dynamic resize. Fix issue with the normative optimized scaler: UV width/height was assumed to be 1/2 of Y, for the ssse and neon code. Also fix to assert for the scaled width/height: in case scaled width/height is odd it should be incremented by 1 (make it even). Change-Id: I3a2e40effa53c505f44ef05aaa3132e1b7f57dd5
2022-06-28Merge "Merge tag 'v1.12.0' into main" into mainJerome Jiang
2022-06-28Add vp8_ prefix for quantize_lsx.cJerome Jiang
Duplicate name as vpx_dsp/loongarch/quantize_lsx.c Chromium update script fails. Bug: webm:1755 Change-Id: Ifb956c2292d909496eb2b9e1833993f1b021b07e
2022-06-28Merge tag 'v1.12.0' into mainJerome Jiang
Release v1.12.0 Torrent Duck 2022-06-17 v1.12.0 "Torrent Duck" This release adds optimizations for Loongarch, adds support for vp8 in the real-time rate control library, upgrades GoogleTest to v1.11.0, updates libwebm to libwebm-1.0.0.28-20-g206d268, and includes numerous bug fixes. - Upgrading: This release is ABI compatible with the previous release. vp8 support in the real-time rate control library. New codec control VP8E_SET_RTC_EXTERNAL_RATECTRL is added. Configure support for darwin21 is added. GoogleTest is upgraded to v1.11.0. libwebm is updated to libwebm-1.0.0.28-20-g206d268. - Enhancement: Numerous improvements on checking memory allocations. Optimizations for Loongarch. Code clean-up. - Bug fixes: Fix to a crash related to {vp8/vp9}_set_roi_map. Fix to compiling failure with -Wformat-nonliteral. Fix to integer overflow with vp9 with high resolution content. Fix to AddNoiseTest failure with ARMv7. Fix to libvpx Null-dereference READ in vp8. Change-Id: I6964e96bccf016f977cc6e83dc0a192d66a19618
2022-06-28Replace date with version and release from READMEJerome Jiang
CHANGELOG has the date. Bug: webm:1752 Change-Id: I2888ce2afed8619f043eee1e9ca23bdf9d75e607
2022-06-27L2E: Distinguish fixed and active gf_intervalCheng Chen
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
2022-06-21vp9_encode_sb_row: remove a branch w/CONFIG_REALTIME_ONLYJames Zern
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 (cherry picked from commit 08b86d76224453ef9cbab4b10a48617715d9a14e)
2022-06-21vp9_cx_iface: set default cpu_used=5 w/CONFIG_REALTIME_ONLYJames Zern
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 (cherry picked from commit 95d196fdf45edf57015cc18635c52b30a93522fd)
2022-06-21Update CHANGELOG for L2EJerome Jiang
Bug: webm:1752 Change-Id: I5335e0360501503d5c162be4bbdef3ad73151e9f
2022-06-17Update CHANGELOG and version infoJerome Jiang
A stale codec control was removed, but compatibility was restored. New codec control was added. Bump *current* and *age*, and keep *revision* as 0. Bug: webm:1752 Bug: webm:1757 Change-Id: I76179f129a10c06d897b5c62462808ed9b9c2923
2022-06-17vp9_encode_sb_row: remove a branch w/CONFIG_REALTIME_ONLYJames Zern
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
2022-06-17vp9_cx_iface: set default cpu_used=5 w/CONFIG_REALTIME_ONLYJames Zern
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
2022-06-14Merge "vp9,encoder: fix some integer sanitizer warnings" into mainJames Zern
2022-06-13Restore backward compatibilityJerome Jiang
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 (cherry picked from commit 013ec5722ce88bebcdcf32b1496fcca413199336)
2022-06-13Update AUTHORSJerome Jiang
Bug: webm:1752 Change-Id: I08b4100a0e8c003cd9a7bdaf72926c268e02d53c
2022-06-13Restore backward compatibilityJerome Jiang
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
2022-06-10Convert EncoderTest::last_pts_ to a local variableWan-Teh Chang
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
2022-06-07L2E: Use libvpx's default q in case of invalid external valueCheng Chen
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
2022-06-06L2E: rename 'gop_index' to 'gop_global_index'Cheng Chen
'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
2022-06-06L2E: send first pass stats before gop decisionsCheng Chen
This change let the encoder send first pass stats before gop decisioins so that external models could make use of it. Change-Id: Iafc7eddab93aa77ceaf8e1f7663a52b27d94af80
2022-06-06L2E: Use bit mask to represent control typeCheng Chen
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
2022-06-03Merge "libs.mk,build/make/Makefile: make test targets ordinary rules" into mainJames Zern
2022-06-03vp9_change_config: check vp9_alloc_loop_filter returnJames Zern
Change-Id: I4cba67a5ab192d1cf1dbfb5c039a93a4952b071e (cherry picked from commit 6549e76307631de7e37459fceb23b4eee4573620)
2022-06-03vp9e_set_config: setjmp before calling vp9_change_configJames Zern
vp9_change_config may call functions that perform allocations which expect failures detected by CHECK_MEM_ERROR to not return. Change-Id: I1dd1eca9c661ed157d51b4a6a77fc9f88236d794 (cherry picked from commit 3997d9bc6286ba075879353b87678986cdbfa347)
2022-06-03vp8e_set_config: setjmp before calling vp8_change_configJames Zern
vp8_change_config may call vp8_alloc_compressor_data which expects failures detected by CHECK_MEM_ERROR to not return. Change-Id: Ib7fbf4af904bd9b539402bb61c8f87855eef2ad6 (cherry picked from commit 365eebc147627ae83ec8b36077198d8cfb5e0128)
2022-06-02libs.mk,build/make/Makefile: make test targets ordinary rulesJames Zern
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
2022-06-03Merge ".gitignore: add android studio / vscode folders" into mainJames Zern
2022-06-02Merge changes I4cba67a5,I1dd1eca9,Ib7fbf4af into mainJames Zern
* 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
2022-06-02test/*: normalize use of nullptrJames Zern
this is preferred over NULL in C++11 Change-Id: Ic48ddcc6dfb8975a57f6713549ad04d93db21415 (cherry picked from commit c304ec38d05040b74de4aacada62c4a336714341)
2022-06-02.gitignore: add android studio / vscode foldersJames Zern
Change-Id: I039a96bc33f55d9ba8bca9f9f6b69135659d2351
2022-06-02Merge "L2E: Return error when GOP model is not set" into mainCheng Chen
2022-06-01L2E: Return error when GOP model is not setCheng Chen
- Return error instead of OK when GOP model is not set. - Update descriptions for a few variables. Change-Id: I213f6b7085c487507c3935e7ce615e807f4474cc
2022-06-01vp9,encoder: fix some integer sanitizer warningsJames Zern
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
2022-05-31vp9_change_config: check vp9_alloc_loop_filter returnJames Zern
Change-Id: I4cba67a5ab192d1cf1dbfb5c039a93a4952b071e
2022-05-31vp9e_set_config: setjmp before calling vp9_change_configJames Zern
vp9_change_config may call functions that perform allocations which expect failures detected by CHECK_MEM_ERROR to not return. Change-Id: I1dd1eca9c661ed157d51b4a6a77fc9f88236d794
2022-05-31vp8e_set_config: setjmp before calling vp8_change_configJames Zern
vp8_change_config may call vp8_alloc_compressor_data which expects failures detected by CHECK_MEM_ERROR to not return. Change-Id: Ib7fbf4af904bd9b539402bb61c8f87855eef2ad6
2022-05-31resize_test: add TODO for ResizeTest instantiation for VP9James Zern
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
2022-05-31resize_test: add TODO for test failureJames Zern
DISABLED_TestExternalResizeSmallerWidthBiggerSize was added for webm:1642, but never fixed Bug: webm:1642 Change-Id: I0fa368a44dda550241ea997068c58eaff551233c
2022-05-31libs.doxy_template: remove some obsolete variablesJames Zern
- 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
2022-05-31Merge "L2E: Add vp9 GOP decision helper function" into mainCheng Chen
2022-05-31Merge "L2E: Add control type for the external rate control API" into mainCheng Chen
2022-05-27test/*: normalize use of nullptrJames Zern
this is preferred over NULL in C++11 Change-Id: Ic48ddcc6dfb8975a57f6713549ad04d93db21415
2022-05-27L2E: Add vp9 GOP decision helper functionCheng Chen
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
2022-05-27L2E: Add control type for the external rate control APICheng Chen
Two control types are defined: QP and GOP control. Now the API only supports the QP model. Change-Id: Ib3a712964b9d2282c93993ee56e0558e4795fb46
2022-05-26Revert "[NEON] Optimize vp9_diamond_search_sad() for NEON"Jerome Jiang
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
2022-05-26Merge changes Iecb26f38,Ib3ee9b59 into mainJames Zern
* changes: GetTempOutFile(): use testing::TempDir() y4m_test: check temp file ptr