summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-07-21L2E: Add more unit tests for GOP APICheng Chen
Add unit tests for a 4 frame video, which could be considered as a corner case. Three different GOP settings are tested and verified as valid. (1). The first GOP has 3 coding frames, no alt ref. The second GOP has 1 coding frame, no alt ref. The numer of coding frames is 4. Their frame types are: keyframe, inter_frame, inter_frame, golden_frame. (2). The first GOP has 4 coding frames, use alt ref. The second GOP has 1 coding frame, which is the overlay of the first GOP's alt ref frame. The numer of coding frames is 5. Their types are: keyframe, alt_ref, inter_frame, inter_frame, overlay_frame. (3). Only one GOP with 4 coding frames, do not use alt ref. The numer of coding frames is 4. Their types are: keyframe, inter_frame, inter_frame, inter_frame. Change-Id: I4079ff5065da79834b363b1e1976f65efed3f91f
2022-07-18avg_intrin_{sse2,avg2}: rm dead store in hadamard_8x8James Zern
this quiets a couple static analysis warnings with clang 11: vpx_dsp/x86/avg_intrin_sse2.c:278:45: warning: Although the value stored to 'src_diff' is used in the enclosing expression, the value is never actually read from 'src_diff' [deadcode.DeadStores] src[7] = _mm_load_si128((const __m128i *)(src_diff += src_stride)); ^ ~~~~~~~~~~ vpx_dsp/x86/avg_intrin_avx2.c:307:49: warning: Although the value stored to 'src_diff' is used in the enclosing expression, the value is never actually read from 'src_diff' [deadcode.DeadStores] src[7] = _mm256_loadu_si256((const __m256i *)(src_diff += src_stride)); ^ ~~~~~~~~~~ Bug: b/229626362 Change-Id: I4b0201bd39775885df0afc03fa5da70910b9dad6
2022-07-18vpx_int_pro_row_c: add an assert for heightJames Zern
this quiets a static analysis warning with clang 11: vpx_dsp/avg.c:353:15: warning: Assigned value is garbage or undefined [core.uninitialized.Assign] hbuf[idx] /= norm_factor; ^ ~~~~~~~~~~~ the same fix was applied in libaom: 1ad0889bc aom_int_pro_row_c: add an assert for height Bug: b/229626362 Change-Id: Ic8a249f866b33b02ec9f378581e51ac104d97169
2022-07-14L2E: Update the description of allow_alt_refCheng Chen
It is fixed per each encoding and can not be changed per GOP. Change-Id: I5905b712437142f2274bfa674ceef6093495457f
2022-07-13vpxenc: fix --disable-loopfilter help alignmentJames Zern
Change-Id: I34444e6437ca0e735d6db07bf98bfa4741ad2c01
2022-07-13Actually include the fix for commit 8f4d1890c.Konstantinos Margaritis
Change-Id: I6780f610151f2e092da525ff064d4b69f74fa61b
2022-07-11Merge "VPX: Add vpx_quantize_b_avx2()." into mainScott LaVarnway
2022-07-11Merge "vp8_macros_msa.h: avoid shadowing variables in defines" into mainJames Zern
2022-07-11VPX: Add vpx_quantize_b_avx2().Scott LaVarnway
Up to 1.58x faster than vpx_quantize_b_avx() depending on the size. Bug: b/237714063 Change-Id: I595a6bb32ebee63f69f27b5a15322fdeae1bf70e
2022-07-11Merge "Revert "Revert "[NEON] Optimize vp9_diamond_search_sad() for NEON""" ↵James Zern
into main
2022-07-09vp8_macros_msa.h: avoid shadowing variables in definesJames Zern
this avoids a warning with certain versions of gcc; observed with: mipsisa32r6el-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110 Change-Id: I8999f487a79a9d53133816d572054b2423330bcf
2022-07-08Revert "Revert "[NEON] Optimize vp9_diamond_search_sad() for NEON""Konstantinos Margaritis
This reverts commit 9f1329f8ac88ea5d7c6ae5d6a57221c36cf85ac8 and fixes a dumb mistake in evaluation of vfcmv. Used vdupq_n_s16, instead of vdupq_n_s32. Change-Id: Ie236c878c166405c49bc0f93f6d63a6715534a0a
2022-07-07Merge "VPX: Add quantize speed test for ref vs opt." into mainScott LaVarnway
2022-07-07VPX: Add quantize speed test for ref vs opt.Scott LaVarnway
Bug: b/237714063 Change-Id: I4304ba8d976fed3613e28442983b04a9cfc15b79
2022-07-06Revert "Fix bug with smaller width bigger size"James Zern
This reverts commit 5b530fc962bcb8a51bbf03f5fbc2912f21b86e70. This fixes memory related fuzzer failures in the decoder. Bug: webm:1642 Bug: oss-fuzz:48609 Bug: oss-fuzz:48629 Bug: oss-fuzz:48632 Bug: oss-fuzz:48638 Bug: oss-fuzz:48639 Bug: oss-fuzz:48651 Bug: oss-fuzz:48657 Bug: oss-fuzz:48659 Bug: oss-fuzz:48660 Bug: oss-fuzz:48661 Bug: oss-fuzz:48680 Bug: oss-fuzz:48686 Bug: oss-fuzz:48697 Bug: oss-fuzz:48706 Bug: oss-fuzz:48712 Bug: oss-fuzz:48717 Bug: oss-fuzz:48728 Bug: oss-fuzz:48732 Bug: oss-fuzz:48780 Bug: oss-fuzz:48781 Bug: oss-fuzz:48782 Bug: oss-fuzz:48785 Change-Id: I67a8539a3083f00eec1164fef5c6a8bc209f91fc
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