Jerome Jiang [Tue, 7 Nov 2023 15:26:52 +0000 (15:26 +0000)]
Merge "Check fragments count before use" into main
James Zern [Mon, 6 Nov 2023 18:21:56 +0000 (10:21 -0800)]
configure: detect PIE and enable PIC
Fixes the creation of DT_TEXTREL entries in binaries built with PIE
enabled:
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
This matches the changes made in libaom:
1df26009da aom_configure: only override CONFIG_PIC if not set on cmd line
7235e65746 aom_configure.cmake: detect PIE and set CONFIG_PIC
Change-Id: I0a43e964af2d8eb8c5e7811ce14ad39285eec3a8
Jerome Jiang [Fri, 3 Nov 2023 19:22:04 +0000 (15:22 -0400)]
Check fragments count before use
Bug: webm:1827
Change-Id: I8d603d5db92476222cbee1c61fece957ad03a49f
Yunqing Wang [Fri, 3 Nov 2023 16:11:24 +0000 (16:11 +0000)]
Merge "Modify C vs SIMD test script" into main
Anupam Pandey [Thu, 5 Oct 2023 05:49:19 +0000 (11:19 +0530)]
Modify C vs SIMD test script
- Enable C vs SIMD test for x86 32-bit platform
- Correct a print message in run_tests()
BUG=webm:1800
Change-Id: Ib1ccd3a87a64b5ec6cde524a14d5d1b7e200abfb
Yunqing Wang [Thu, 2 Nov 2023 03:39:59 +0000 (03:39 +0000)]
Merge "Add an emms instruction to vpx_subtract_block" into main
Marco Paniconi [Tue, 24 Oct 2023 18:03:56 +0000 (11:03 -0700)]
vp9-RC: Add drop_frame support to external RC
Supports single layer and svc. For svc only the
framedrop_mode = FULL_SUPERFRAME_DROP is allowed
for now.
Dropping frames due to overshoot is enabled by the
oxcf->drop_frames_water_mark, which is zero as default.
Note that this CL also allows for drop/skip encoding of
enhancement layers if that layer bitrate is zero.
max_consec_drop is also added, set to INT_MAX as default.
Note that max_consec_drop is only used for svc mode.
It has not been added yet for single layer in libvpx encoder.
Tests added for single layer and svc case.
Change-Id: Ic12f6a0eb3fbf07d8eb8456c46cec27b2e1930d3
James Zern [Mon, 30 Oct 2023 19:20:46 +0000 (19:20 +0000)]
Merge "calc_pframe_target_size: fix integer overflow" into main
James Zern [Mon, 30 Oct 2023 19:20:18 +0000 (19:20 +0000)]
Merge "Fix 'unused variable' warning when neon_i8mm is disabled" into main
Jonathan Wright [Mon, 30 Oct 2023 15:24:12 +0000 (15:24 +0000)]
Fix 'unused variable' warning when neon_i8mm is disabled
Guard hwcap2 feature interrogation on HAVE_NEON_I8MM so that it gets
disabled if neon_i8mm is disabled when configuring the build.
Bug: webm:1825
Change-Id: Ic6ff71f17387b96219591928a583d43560bb7c7a
Xiahong Bao [Fri, 27 Oct 2023 23:52:04 +0000 (08:52 +0900)]
calc_pframe_target_size: fix integer overflow
The intermediate value in the target bandwidth
calculation may exceed integer bounds.
Bug:
308007926
Change-Id: I8288c5820db06a550d88bf91fccc86106996deaa
Signed-off-by: Xiahong Bao <xiahong.bao@nxp.com>
Marco Paniconi [Fri, 27 Oct 2023 16:24:06 +0000 (09:24 -0700)]
Clear some clang-tidy complaints on header includes
Change-Id: Id6f54dc4643172f6a5576dc4846c47c8eda31c0f
Jonathan Wright [Tue, 24 Oct 2023 07:37:27 +0000 (08:37 +0100)]
Add Arm SVE build flags and run-time CPU feature detection
Add 'sve' arch options to the configure, build and unit test files -
adding appropriate conditional options where necessary. Arm SIMD
extensions are treated as supersets in libvpx, so disable SVE if
either Neon DotProd or I8MM are unavailable.
Change-Id: I39dd24f2b209251084d1e28d7ac68099460309bb
Jerome Jiang [Fri, 20 Oct 2023 21:14:18 +0000 (21:14 +0000)]
Merge "Reduce memory usage of test with large frame size" into main
Jerome Jiang [Fri, 20 Oct 2023 18:25:14 +0000 (14:25 -0400)]
Reduce memory usage of test with large frame size
- Use smaller frame size that still triggers the overflow
- Do not run encoder as the encoder init also triggers the overflow
Bug: chromium:1492864
Change-Id: I392549abf69f1cfb3754cc847a214513ec9bedc5
Wan-Teh Chang [Fri, 20 Oct 2023 01:28:48 +0000 (18:28 -0700)]
Also test VPX_ARCH_AARCH64 for 64-bit platforms
Change-Id: Ic11ccd791ff78801e0aba1d12ad2d99b9941ce9d
Jerome Jiang [Thu, 19 Oct 2023 14:06:50 +0000 (10:06 -0400)]
Run bitrate overflow test only on 64bit systems
Frame size caps the target bitrate internally, so the frame size needs
to be large enough to reproduce the target bitrate overflow in the
fuzzing test.
However the frame size needed exceeds the max buffer allowed on 32bit
system defined by VPX_MAX_ALLOCABLE_MEMORY
Bug: chromium:1492864
Change-Id: Ia3a9a78cd35516373897039a7769b492e29e8450
Jerome Jiang [Mon, 16 Oct 2023 20:26:18 +0000 (16:26 -0400)]
Cap avg_frame_bandwidth at INT_MAX
avg_frame_bandwidth = target_bandwidth / framerate
If target_bandwidth is too big and/or framerate is too small (< 1),
avg_frame_bandwidth could be overflow
Bug: chromium:1492864
Change-Id: I32314da1414b472ae4bf2acdcd81b8a948286146
Jerome Jiang [Mon, 16 Oct 2023 15:22:48 +0000 (11:22 -0400)]
Fix ubsan failure caused by left shift of negative
Bug: b/
305642441
Change-Id: Iddb1572c284161140da48f61b04cf600e5b57ecc
Jerome Jiang [Tue, 10 Oct 2023 21:43:16 +0000 (17:43 -0400)]
Force mode search on 64x64 if no mode is selected
A speed feature disable_split_mask (set to 63) could cause no mode and
partition to be selected in rd_pick_partition because:
-> thresh_mult_sub8x8 all INT_MAX
-> All modes skipped for sub8x8 blocks
-> found_best_rd is 0 -> break from the loop of 4 sub blocks
-> sum_rdc is INT_MAX -> No rd update -> should_encode_sb is 0
-> Propagating to top of the tree
-> No partition / mode is selected
Bug: b/
290499385
Change-Id: Ia655e262f3b32445347ae0aaf1a2d868cea997f3
Wan-Teh Chang [Sat, 7 Oct 2023 14:06:36 +0000 (07:06 -0700)]
Handle Arm/AArch64 runtime feature detection
Port the following libaom CLs to libvpx:
https://aomedia-review.googlesource.com/c/aom/+/178361
https://aomedia-review.googlesource.com/c/aom/+/180701
https://aomedia-review.googlesource.com/c/aom/+/181821
The tests themselves are not feature-gated in the same way that they are
used in the rest of the codebase since they are not controlled by
rtcd.pl. This means that tests that assume the existence of features not
present on the target can cause SIGILL to be thrown.
This commit extends init_vpx_test.cc to match the behaviour for other
targets and automatically disable testing for features that are not
available on the machine running the tests.
Call arm_cpu_caps() and x86_simd_caps() inside #if !CONFIG_SHARED.
All the SIMD-specialized functions (arm or x86) are internal functions,
so they are not exported from the libvpx shared library. If
CONFIG_SHARED is 1, it is not necessary to call arm_cpu_caps(),
x86_simd_caps(), and append_negative_gtest_filter() either.
Change-Id: I330631816bdb52842020c5aa2a1ad802865cc285
Wan-Teh Chang [Sun, 1 Oct 2023 00:31:09 +0000 (17:31 -0700)]
Declare some "VP8_CONFIG *oxcf" params as const
Change-Id: Ia5e8445098e18da5978aacf17281f16252413f17
Wan-Teh Chang [Sat, 30 Sep 2023 22:50:14 +0000 (15:50 -0700)]
VP8: allow thread count changes
Fix the TODO(https://crbug.com/1486441) comment in vp8/vp8_cx_iface.c.
Make vp8cx_create_encoder_threads() work after it has been called
before. If there are already the exact number of threads it needs to
create, return immediately. Otherwise, shut down the existing threads
(by calling vp8cx_remove_encoder_threads()) and create the required
number of threads.
Call vp8cx_create_encoder_threads() in vp8e_set_config() to respond to
changes in g_threads or g_w (which also affects the number of threads
through cm->mb_cols and cpi->mt_sync_range).
Change-Id: I552eeca5b1f1f5313f59559eb1da396f270a2429
Wan-Teh Chang [Wed, 4 Oct 2023 02:30:12 +0000 (19:30 -0700)]
VP8: Allocate cpi->mt_current_mb_col array lazily
Add the mt_current_mb_col_size field to VP8_COMP to record the size of
the mt_current_mb_col array.
Move the allocation of the mt_current_mb_col array from
vp8_alloc_compressor_data() to vp8_encode_frame(), where the use of
mt_current_mb_col starts. Allocate mt_current_mb_col right before use
if mt_current_mb_col hasn't been allocated or if the current size is
incorrect.
Move the deallocation of the mt_current_mb_col array from
dealloc_compressor_data() to vp8cx_remove_encoder_threads().
Move the TODO(https://crbug.com/1486441) comment from
vp8/encoder/onyx_if.c to vp8/vp8_cx_iface.c.
Change-Id: Ic5a0793278c2cc94876669aaa0dd732412876673
Wan-Teh Chang [Wed, 4 Oct 2023 19:50:20 +0000 (19:50 +0000)]
Merge "Clean up vp8cx_create/remove_encoder_threads()" into main
Jerome Jiang [Wed, 4 Oct 2023 13:42:09 +0000 (13:42 +0000)]
Merge "Use correct include guards for init_vpx_test.h" into main
Anupam Pandey [Tue, 3 Oct 2023 09:16:36 +0000 (14:46 +0530)]
Add an emms instruction to vpx_subtract_block
This CL adds an `emms` instruction at the end of the MMX assembly
for the vpx_subtract_block function, to properly clear the register
state. This resolves a mismatch between x86 build and C only build.
BUG=webm:1816
Change-Id: I79d2947da7f587f3558a2ae17df214d2faf59e74
James Zern [Wed, 4 Oct 2023 04:42:16 +0000 (04:42 +0000)]
Merge "vp9_encoder: normalize sizeof() calls" into main
Wan-Teh Chang [Wed, 4 Oct 2023 03:50:39 +0000 (03:50 +0000)]
Merge "Declare cur_row inside #if CONFIG_MULTITHREAD" into main
Wan-Teh Chang [Wed, 4 Oct 2023 03:21:50 +0000 (03:21 +0000)]
Merge "Have vp9_enc_build and vp9_enc_test restore cwd" into main
Wan-Teh Chang [Wed, 4 Oct 2023 03:20:27 +0000 (03:20 +0000)]
Merge "Fix a potential resource leak and add alloc checks" into main
Wan-Teh Chang [Wed, 4 Oct 2023 03:08:18 +0000 (20:08 -0700)]
Clean up vp8cx_create/remove_encoder_threads()
Make vp8cx_create_encoder_threads() undo everything cleanly before
returning an error.
Make vp8cx_remove_encoder_threads() reset pointer fields to NULL after
freeing them, reset encoding_thread_count to 0, and reset b_lpf_running
to 0 (false). This makes it safe to call vp8cx_create_encoder_threads()
after calling vp8cx_remove_encoder_threads().
Change-Id: I586f06ce3d5b1c88ca46884bb4d6667ffc97e440
Wan-Teh Chang [Sat, 30 Sep 2023 18:17:30 +0000 (11:17 -0700)]
Declare cur_row inside #if CONFIG_MULTITHREAD
Fix the following compiler warning when libvpx is configured with
the --disable-multithread option:
vp9/common/vp9_thread_common.c:391:7: warning:
variable 'cur_row' set but not used [-Wunused-but-set-variable]
int cur_row;
^
Change-Id: I53aa279152715083df40990eb7fdcaeb77a66777
Jerome Jiang [Wed, 4 Oct 2023 02:00:02 +0000 (22:00 -0400)]
Use correct include guards for init_vpx_test.h
Bug: b/
303112617
Change-Id: Ie18df33b2bcab91c18e920825f4ed3a29e18373b
Jerome Jiang [Tue, 3 Oct 2023 14:14:43 +0000 (10:14 -0400)]
Include vpx_config.h for macros
Clear some clang-tidy complaints
Change-Id: I6690428d336c81709befd19a33e11c1367275df3
Jerome Jiang [Tue, 3 Oct 2023 13:58:23 +0000 (09:58 -0400)]
Factor out common code used in test binaries
Bug: b/
303112617
Change-Id: Icbe16e95ff334a9578a692cc51b4773393ad0005
Wan-Teh Chang [Sun, 1 Oct 2023 02:45:35 +0000 (19:45 -0700)]
Use big cfg.g_w in ConfigResizeChangeThreadCount
vp8cx_create_encoder_threads() caps the thread count at
(cm->mb_cols / cpi->mt_sync_range) - 1. If cfg.g_w is 16, cm->mb_cols is
only 1 (see vp8_alloc_frame_buffers: mb_cols = width >> 4), so we won't
be using multiple threads. To reproduce bug chromium:1486441, the test
just needs to increase cfg.g_h sufficiently.
Bug: chromium:1486441
Change-Id: Ie6b2da2e31cfa1717a481f55eebc8c875db94d87
James Zern [Mon, 2 Oct 2023 19:11:51 +0000 (19:11 +0000)]
Merge "Merge tag 'v1.13.1'" into main
Wan-Teh Chang [Thu, 28 Sep 2023 23:35:54 +0000 (16:35 -0700)]
Have vp9_enc_build and vp9_enc_test restore cwd
Use $PWD to get the current directory.
Quote directory pathnames.
Suggested by James Zern.
Bug: webm:1800
Change-Id: I51e922b24da0e89d936370f858eab55d193ebdcb
Wan-Teh Chang [Fri, 29 Sep 2023 23:58:26 +0000 (16:58 -0700)]
Disable vpx_highbd_8_mse16x16_neon_dotprod, etc.
These functions assume the uint16_t samples are <= 255 (bit depth 8),
but vpx_highbd_8_mse16x16() is called for any bit depth, not just 8.
A better fix is to port the libaom CL
https://aomedia-review.googlesource.com/c/aom/+/175063 to libvpx, but
that requires porting aom_sse() and aom_highbd_sse() to libvpx, which is
quite involved. So disable vpx_highbd_8_mse16x16_neon_dotprod, etc.
first.
Bug: webm:1819
Change-Id: If495a5dedc58d9981317b9993c9fbb81ff3ab50c
James Zern [Fri, 29 Sep 2023 23:33:29 +0000 (16:33 -0700)]
Merge tag 'v1.13.1'
libvpx 1.13.1
2023-09-29 v1.13.1 "Ugly Duckling"
This release contains two security related fixes. One each for VP8 and VP9.
- Upgrading:
This release is ABI compatible with the previous release.
- Bug fixes:
https://crbug.com/1486441 (CVE-2023-5217)
Fix to a crash related to VP9 encoding (#1642)
* tag 'v1.13.1':
update CHANGELOG
update version to 1.13.1
Fix bug with smaller width bigger size
vp9_alloccommon: clear allocation sizes on free
VP8: disallow thread count changes
encode_api_test: add ConfigResizeChangeThreadCount
README: update release version to 1.13.0
Bug: webm:1818
Change-Id: I732e2423f635d4115890f00fd63f9886e31f39a6
James Zern [Fri, 29 Sep 2023 22:16:46 +0000 (15:16 -0700)]
vp9_encoder: normalize sizeof() calls
use sizeof(var) instead of sizeof(type) and sizeof(*var) instead of
sizeof(var[0]) for consistency in some places.
Change-Id: Ibd9a783cfef5ce1d06131df3831a4093821a502f
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
James Zern [Fri, 29 Sep 2023 18:32:27 +0000 (11:32 -0700)]
update CHANGELOG
Bug: webm:1818
Change-Id: Ic0a943b5d1c69a3621ad3f91012fb5308a0c11f1
James Zern [Fri, 29 Sep 2023 18:21:35 +0000 (11:21 -0700)]
update version to 1.13.1
SO_VERSION_MAJOR = 8
SO_VERSION_MINOR = 0
SO_VERSION_PATCH = 1
The increase of the patch number corresponds to the revision number in
the libtool text.
3. If the library source code has changed at all since the last update,
then increment revision (‘c:r:a’ becomes ‘c:r+1:a’).
Bug: webm:1818
Change-Id: Ia114368e9fd7a908e7fcf6e4d3142f142770e3f4
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.
Local fuzzing passing overnight.
Bug: webm:1642
Change-Id: If0e08e72abd2e042efe4dcfac21e4cc51afdfdb9
(cherry picked from commit
263682c9a29395055f3b3afe2d97be1828a6223f)
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
(cherry picked from commit
02ab555e992c191e5c509ed87b3cc48ed915b447)
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
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
(cherry picked from commit
3fbd1dca6a4d2dad332a2110d646e4ffef36d590)
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
(cherry picked from commit
af6dedd715f4307669366944cca6e0417b290282)
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