platform/upstream/libvpx.git
13 months agomfqe_partition: fix -Wunreachable-code
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

13 months agoFix a bug in vpx_highbd_hadamard_32x32_neon().
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

13 months agoMerge "Fix Clang -Wunreachable-code-aggressive warnings" into main
James Zern [Wed, 28 Jun 2023 19:21:40 +0000 (19:21 +0000)]
Merge "Fix Clang -Wunreachable-code-aggressive warnings" into main

13 months agoFix Clang -Wunreachable-code-aggressive warnings
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

13 months agovp9 firstpass stats in a separate header
Jerome Jiang [Wed, 28 Jun 2023 14:04:21 +0000 (10:04 -0400)]
vp9 firstpass stats in a separate header

Change-Id: If91c5c74c71affc48eb858beb314a6c194b14023

13 months agoMerge changes I1c17302f,Ic084894b,I9867f5fc,Ie3faf7b3,If5dc96b7, ... into main
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

13 months agovp8_decode: fix keyframe resync after decode error
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

13 months agovp8_decode: only remove threads on thread create failure
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

13 months agovp8_decode: clear stream info on decoder create failure
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

13 months agovp9_decodeframe,init_mt: free tile_workers on alloc failure
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

13 months agovp9_alloccommon: clear allocation sizes on free
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

13 months agovp9_dx_iface: fix leaks on init_decoder() failure
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

13 months agoFix a bug in vpx_hadamard_32x32_neon()
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

14 months agoMerge "configure.sh: Improve a comment." into main
James Zern [Tue, 20 Jun 2023 20:06:32 +0000 (20:06 +0000)]
Merge "configure.sh: Improve a comment." into main

14 months agoMerge "Remove vp9_diamond_search_sad_avx function" 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

14 months agoRemove vp9_diamond_search_sad_avx function
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

14 months agoconfigure.sh: Improve a comment.
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>
14 months agoAdd new_mv_count to firstpass stats
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

14 months agoMerge "Fix c vs intrinsic mismatch of vpx_hadamard_32x32() function" into main
Yunqing Wang [Mon, 12 Jun 2023 16:44:21 +0000 (16:44 +0000)]
Merge "Fix c vs intrinsic mismatch of vpx_hadamard_32x32() function" into main

14 months agoRTC RC: clean up unnecessary headers
Jerome Jiang [Fri, 9 Jun 2023 19:33:39 +0000 (15:33 -0400)]
RTC RC: clean up unnecessary headers

Change-Id: I77c407be59f4eb0c70a89a5fffd88c648e634123

14 months agoFix c vs intrinsic mismatch of vpx_hadamard_32x32() function
Anupam Pandey [Tue, 6 Jun 2023 06:57:34 +0000 (12:27 +0530)]
Fix c vs intrinsic mismatch of vpx_hadamard_32x32() function

This CL resolves the mismatch between C and intrinsic implementation
of vpx_hadamard_32x32 function. The mismatch was due to integer
overflow during the addition operation in the intrinsic functions.
Specifically, the addition in the intrinsic function was performed
at the 16-bit level, while the calculation of a0 + a1 resulted in
a 17-bit value.

This code change addresses the problem by performing
the addition at the 32-bit level (with sign extension) in both SSE2
and AVX2, and then converting the results back to the 16-bit level
after a right shift.

STATS_CHANGED

Change-Id: I576ca64e3b9ebb31d143fcd2da64322790bc5853

14 months agoReplace NONE with NO_REF_FRAME
Jerome Jiang [Thu, 8 Jun 2023 14:52:45 +0000 (10:52 -0400)]
Replace NONE with NO_REF_FRAME

NONE is a common name and it has conflicts with symbols defined in
Chromium.

Bug: b/286163500
Change-Id: I3d935a786f771a4d90b258fabc6fd6c2ecbf1c59

14 months agoMerge "Fix more typos (n/n)" into main
Jerome Jiang [Thu, 8 Jun 2023 14:11:24 +0000 (14:11 +0000)]
Merge "Fix more typos (n/n)" into main

14 months agoMerge "Fix more typos (3/n)" into main
Jerome Jiang [Wed, 7 Jun 2023 21:10:04 +0000 (21:10 +0000)]
Merge "Fix more typos (3/n)" into main

14 months agoFix more typos (n/n)
Jerome Jiang [Wed, 7 Jun 2023 20:35:19 +0000 (16:35 -0400)]
Fix more typos (n/n)

impace -> impact
taget -> target
prediciton -> prediction
addtion -> addition
the the -> the

Bug: webm:1803
Change-Id: I759c9d930a037ca69662164fcd6be160ed707d77

14 months agoFix more typos (3/n)
Jerome Jiang [Wed, 7 Jun 2023 16:36:31 +0000 (12:36 -0400)]
Fix more typos (3/n)

Propogation -> Propagation
propogate -> propagate
cant -> can't
upto -> up to
canddiates -> candidates
refernce -> reference
USEAGE -> USAGE

Change-Id: Iadaf2dffd86b54e04411910f667e8c2dfc6c4c77

14 months agoMerge "Fix more typos (2/n)" into main
Jerome Jiang [Wed, 7 Jun 2023 19:10:43 +0000 (19:10 +0000)]
Merge "Fix more typos (2/n)" into main

14 months agoMerge "Fix more typos (1/n)" into main
Jerome Jiang [Wed, 7 Jun 2023 19:10:36 +0000 (19:10 +0000)]
Merge "Fix more typos (1/n)" into main

14 months agoMerge "Fix a few typos" into main
Jerome Jiang [Wed, 7 Jun 2023 18:19:08 +0000 (18:19 +0000)]
Merge "Fix a few typos" into main

14 months agoFix more typos (2/n)
Jerome Jiang [Wed, 7 Jun 2023 16:31:38 +0000 (12:31 -0400)]
Fix more typos (2/n)

kernal -> kernel
e.g -> e.g.
paritioning -> partitioning
partioning -> partitioning
coefficents -> coefficients
i.e, -> i.e.,
equivalend -> equivalent
recive -> receive
resoultions -> resolutions

Bug: webm:1803
Change-Id: I1d6176202ee5daee7a64bf59114e8b304aeb4db7

14 months agoFix more typos (1/n)
Jerome Jiang [Wed, 7 Jun 2023 16:26:55 +0000 (12:26 -0400)]
Fix more typos (1/n)

Dont -> Don't
setings -> settings
thresold -> thresh
thresold -> threshold
becasue -> because
itterations -> iterations
its a -> it's a
an constant -> a constant

Bug: webm:1803
Change-Id: I1e019393939ed25c59c898c88d4941ec360b026d

14 months agoFix a few typos
Jerome Jiang [Wed, 7 Jun 2023 16:21:38 +0000 (12:21 -0400)]
Fix a few typos

segement -> segment
dont -> don't
useage -> usage
devide -> divide

Bug: webm:1803
Change-Id: I0153380b0003825c4b62cf323d4f2bc837c8a264

14 months agoAdd comments in vp9_diamond_search_sad_avx()
Deepa K G [Tue, 6 Jun 2023 06:08:09 +0000 (11:38 +0530)]
Add comments in vp9_diamond_search_sad_avx()

Added comments related to re-arranging the
elements of the SAD vector to find the
minimum.

Change-Id: I58b702d304a6cdd32f04775fba603e39c19a8947

14 months agoFix c vs avx mismatch of diamond_search_sad()
Deepa K G [Mon, 24 Apr 2023 10:26:18 +0000 (15:56 +0530)]
Fix c vs avx mismatch of diamond_search_sad()

In the function vp9_diamond_search_sad_avx(), arranged
the cost vector in a specific order. This ensures that
the motion vector with the least index is selected,
when there exists more than one candidate motion
vector with the minimum cost, thus resolving the
c vs avx mismatch.

STATS_CHANGED

Change-Id: I4f8864f464f9ea2aae6250db3d8ad91cb08b26e2

14 months agoMerge "Trim tpl stats by 2 extra frames" into main
Jerome Jiang [Wed, 31 May 2023 19:31:04 +0000 (19:31 +0000)]
Merge "Trim tpl stats by 2 extra frames" into main

14 months agoTrim tpl stats by 2 extra frames
Jerome Jiang [Fri, 26 May 2023 16:02:36 +0000 (12:02 -0400)]
Trim tpl stats by 2 extra frames

Not applicable to the last GOP.

Bug: b/284162396
Change-Id: I55b7e04e9fc4b68a08ce3e00b10743823c828954

14 months agoMerge changes I6a906803,I0307a3b6 into main
James Zern [Wed, 31 May 2023 17:44:00 +0000 (17:44 +0000)]
Merge changes I6a906803,I0307a3b6 into main

* changes:
  Optimize Neon implementation of vpx_int_pro_row
  Optimize Neon implementation of vpx_int_pro_col

14 months agoOptimize Neon implementation of vpx_int_pro_row
Jonathan Wright [Tue, 30 May 2023 16:31:18 +0000 (17:31 +0100)]
Optimize Neon implementation of vpx_int_pro_row

Double the number of accumulator registers to remove the bottleneck.
Also peel the first loop iteration.

Change-Id: I6a90680369f9c33cdfe14ea547ac1569ec3f50de

14 months agoOptimize Neon implementation of vpx_int_pro_col
Jonathan Wright [Tue, 30 May 2023 14:22:04 +0000 (15:22 +0100)]
Optimize Neon implementation of vpx_int_pro_col

Use widening pairwise addition instructions to halve the number of
additions required.

Change-Id: I0307a3b65e50d2b1ae582938bc5df9c2b21df734

15 months agoMerge changes Ia3647698,I55caf34e,Id2c60f39 into main
James Zern [Thu, 25 May 2023 04:54:09 +0000 (04:54 +0000)]
Merge changes Ia3647698,I55caf34e,Id2c60f39 into main

* changes:
  vpx_dsp_common.h,clip_pixel: work around VS2022 Arm64 issue
  fdct_partial_neon.c: work around VS2022 Arm64 issue
  fdct8x8_test.cc: work around VS2022 Arm64 issue

15 months agoMerge "examples.mk,vpxdec: rm libwebm muxer dependency" into main
James Zern [Wed, 24 May 2023 17:43:20 +0000 (17:43 +0000)]
Merge "examples.mk,vpxdec: rm libwebm muxer dependency" into main

15 months agoMerge "Add IO for TPL stats" into main
Jerome Jiang [Wed, 24 May 2023 16:27:20 +0000 (16:27 +0000)]
Merge "Add IO for TPL stats" into main

15 months agovpx_dsp_common.h,clip_pixel: work around VS2022 Arm64 issue
James Zern [Tue, 23 May 2023 22:50:10 +0000 (15:50 -0700)]
vpx_dsp_common.h,clip_pixel: work around VS2022 Arm64 issue

cl.exe targeting AArch64 with optimizations enabled
produces invalid code for clip_pixel() when the return type is uint8_t.
See:
https://developercommunity.visualstudio.com/t/Misoptimization-for-ARM64-in-VS-2022-17/10363361

Bug: b/277255076
Bug: webm:1788
Change-Id: Ia3647698effd34f1cf196cd33fa4a8cab9fa53d6

15 months agofdct_partial_neon.c: work around VS2022 Arm64 issue
James Zern [Tue, 23 May 2023 22:49:29 +0000 (15:49 -0700)]
fdct_partial_neon.c: work around VS2022 Arm64 issue

cl.exe targeting AArch64 with optimizations enabled
will fail with an internal compiler error.
See:
https://developercommunity.visualstudio.com/t/Compiler-crash-C1001-when-building-a-for/10346110

Bug: b/277255076
Bug: webm:1788
Change-Id: I55caf34e910dab47a7775f07280677cdfe606f5b

15 months agofdct8x8_test.cc: work around VS2022 Arm64 issue
James Zern [Tue, 23 May 2023 22:48:10 +0000 (15:48 -0700)]
fdct8x8_test.cc: work around VS2022 Arm64 issue

cl.exe targeting AArch64 with optimizations enabled
produces invalid code in RunExtremalCheck() and RunInvAccuracyCheck().
See:
https://developercommunity.visualstudio.com/t/1770-preview-1:-Misoptimization-for-AR/10369786

Bug: b/277255076
Bug: webm:1788
Change-Id: Id2c60f3948d8f788c78602aea1b5232133415dea

15 months agoAdd IO for TPL stats
Jerome Jiang [Thu, 4 May 2023 14:48:25 +0000 (10:48 -0400)]
Add IO for TPL stats

Overload TempOutFile constructor to allow IO mode.

Bug: b/281563704

Change-Id: I1f4f5b29db0e331941b6795e478eeeab51f625ad

15 months agoMerge "Add new vpx_tpl.h API file" into main
Jerome Jiang [Thu, 18 May 2023 17:20:03 +0000 (17:20 +0000)]
Merge "Add new vpx_tpl.h API file" into main

15 months agoMerge "Improve convolve AVX2 intrinsic for speed" into main
Yunqing Wang [Thu, 18 May 2023 15:48:49 +0000 (15:48 +0000)]
Merge "Improve convolve AVX2 intrinsic for speed" into main

15 months agoAdd new vpx_tpl.h API file
Jerome Jiang [Tue, 16 May 2023 18:57:05 +0000 (14:57 -0400)]
Add new vpx_tpl.h API file

New file (vpx_tpl.c) in the following CLs will add new APIs dealing with
TPL stats from VP9 encoder.

Change-Id: I5102ef64214cba1ca6ecea9582a19049666c6ca4

15 months agoImprove convolve AVX2 intrinsic for speed
Anupam Pandey [Fri, 12 May 2023 05:26:45 +0000 (10:56 +0530)]
Improve convolve AVX2 intrinsic for speed

This CL refactors the code related to convolve function.
Furthermore, improved the AVX2 intrinsic to compute
convolve vertical for w = 4 case, and convolve horiz for
w = 16 case.

Please note the module level scaling w.r.t C function
(timer based) for existing (AVX2) and new AVX2 intrinsics:

Block     Scaling
Size   AVX2       AVX2
     (existing)   (New)
4x4    5.34x      5.91x
4x8    7.10x      7.79x
16x8  23.52x     25.63x
16x16 29.47x     30.22x
16x32 33.42x     33.44x

This is a bit exact change.

Change-Id: If130183bc12faab9ca2bcec0ceeaa8d0af05e413

15 months agoMerge changes Ie77ad184,Idfcac43c into main
James Zern [Tue, 16 May 2023 00:05:05 +0000 (00:05 +0000)]
Merge changes Ie77ad184,Idfcac43c into main

* changes:
  Add 2D-specific Neon horizontal convolution functions
  Refactor standard bitdepth Neon convolution functions

15 months agoAdd 2D-specific Neon horizontal convolution functions
Jonathan Wright [Thu, 4 May 2023 15:33:38 +0000 (16:33 +0100)]
Add 2D-specific Neon horizontal convolution functions

2D 8-tap convolution filtering is performed in two passes -
horizontal and vertical. The horizontal pass must produce enough
input data for the subsequent vertical pass - 3 rows above and 4 rows
below, in addition to the actual block height.

At present, all Neon horizontal convolution algorithms process 4 rows
at a time, but this means we end up doing at least 1 row too much
work in the 2D first pass case where we need h + 7, not h + 8 rows of
output.

This patch adds additional dot-product (SDOT and USDOT) Neon paths
that process h + 7 rows of data exactly, saving the work of the
unnecessary extra row. It is impractical to take a similar approach
for the Armv8.0 MLA paths since we have to transpose the data block
both before and after calling the convolution helper functions.

vpx_convolve_neon performance impact: we observe a speedup of ~9% for
smaller (and wider) blocks, and a speedup of 0-3% for larger blocks.
This is to be expected since the proportion of redundant work
decreases as the block height increases.

Change-Id: Ie77ad1848707d2d48bb8851345a469aae9d097e1

15 months agoMerge "Don't use -Wl,-z,defs with Clang's sanitizers" into main
James Zern [Fri, 12 May 2023 19:23:47 +0000 (19:23 +0000)]
Merge "Don't use -Wl,-z,defs with Clang's sanitizers" into main

15 months agoDon't use -Wl,-z,defs with Clang's sanitizers
James Zern [Mon, 8 May 2023 23:58:59 +0000 (16:58 -0700)]
Don't use -Wl,-z,defs with Clang's sanitizers

This avoids link errors related to the sanitizers:
https://clang.llvm.org/docs/AddressSanitizer.html#usage
"When linking shared libraries, the AddressSanitizer run-time is not
linked, so -Wl,-z,defs may cause link errors ..."

See also:
https://crbug.com/aomedia/3438

Bug: webm:1801
Fixed: webm:1801
Change-Id: Ie212318005a5f7222e5486775175534025306367

15 months agoRefactor standard bitdepth Neon convolution functions
Jonathan Wright [Mon, 8 May 2023 16:41:26 +0000 (17:41 +0100)]
Refactor standard bitdepth Neon convolution functions

1) Use #define constant instead of magic numbers for right shifts.
2) Move saturating narrow into helper functions that return 4-element
   result vectors.
3) Use mem_neon.h helpers for load/store sequences in Armv8.0 paths.
4) Tidy up: assert conditions and some longer variable names.
5) Prefer != 0 to > 0 where possible for loop termination conditions.

Change-Id: Idfcac43ca38faf729dca07b8cc8f7f45ad264d24

15 months agoconfigure: add -Wshadow
James Zern [Mon, 17 Apr 2023 20:42:11 +0000 (13:42 -0700)]
configure: add -Wshadow

libraries under third_party/ are out of scope for this change.

Bug: webm:1793
Change-Id: I562065a3c0ea9fdfc9615d1a6b1ae47da79b8ce0

15 months agoMerge "vp8_macros_msa.h: clear -Wshadow warnings" into main
James Zern [Tue, 9 May 2023 21:03:31 +0000 (21:03 +0000)]
Merge "vp8_macros_msa.h: clear -Wshadow warnings" into main

15 months agoMerge changes Iac020280,I8ca8660a into main
James Zern [Tue, 9 May 2023 20:55:55 +0000 (20:55 +0000)]
Merge changes Iac020280,I8ca8660a into main

* changes:
  gen_msvs_vcxproj: add ARM64EC w/VS >= 2022
  configure: add clang-cl vs1[67] arm64 targets

15 months agoMerge "Add AVX2 intrinsic for vpx_comp_avg_pred() function" into main
Yunqing Wang [Tue, 9 May 2023 15:57:09 +0000 (15:57 +0000)]
Merge "Add AVX2 intrinsic for vpx_comp_avg_pred() function" into main

15 months agoAdd AVX2 intrinsic for vpx_comp_avg_pred() function
Anupam Pandey [Mon, 8 May 2023 06:40:09 +0000 (12:10 +0530)]
Add AVX2 intrinsic for vpx_comp_avg_pred() function

The module level scaling w.r.t C function (timer based) for
existing (SSE2) and new AVX2 intrinsics:

If ref_padding = 0
Block     Scaling
size    SSE2    AVX2
8x4     3.24x   3.24x
8x8     4.22x   4.90x
8x16    5.91x   5.93x
16x8    1.63x   3.52x
16x16   1.53x   4.19x
16x32   1.38x   4.82x
32x16   1.28x   3.08x
32x32   1.45x   3.13x
32x64   1.38x   3.04x
64x32   1.39x   2.12x
64x64   1.46x   2.24x

If ref_padding = 8
Block     Scaling
size    SSE2    AVX2
8x4     3.20x   3.21x
8x8     4.61x   4.83x
8x16    5.50x   6.45x
16x8    1.56x   3.35x
16x16   1.53x   4.19x
16x32   1.37x   4.83x
32x16   1.28x   3.07x
32x32   1.46x   3.29x
32x64   1.38x   3.22x
64x32   1.38x   2.14x
64x64   1.38x   2.12x

This is a bit-exact change.

Change-Id: I72c5d155f64d0c630bc8c3aef21dc8bbd045d9e6

15 months agovp8_macros_msa.h: clear -Wshadow warnings
James Zern [Mon, 8 May 2023 18:48:15 +0000 (11:48 -0700)]
vp8_macros_msa.h: clear -Wshadow warnings

Bug: webm:1793
Change-Id: Ia940b06bd23a915a050432e03bb630567e891d8d

15 months agoMerge "README: update target list" into main
James Zern [Mon, 8 May 2023 20:52:52 +0000 (20:52 +0000)]
Merge "README: update target list" into main

15 months agoMerge changes Ie165d410,I6d9bb8da,I6858e574 into main
James Zern [Mon, 8 May 2023 20:52:31 +0000 (20:52 +0000)]
Merge changes Ie165d410,I6d9bb8da,I6858e574 into main

* changes:
  vp8_[cd]x_iface: clear setjmp flag on function exit
  vp9_decodeframe,tile_worker_hook: relocate setjmp=1
  vp9,encoder_set_config: set setjmp flag after setjmp()

15 months agoMerge "Add VpxTplGopStats" into main
Jerome Jiang [Mon, 8 May 2023 19:47:30 +0000 (19:47 +0000)]
Merge "Add VpxTplGopStats" into main

15 months agoMerge "Unify implementation of CHECK_MEM_ERROR" into main
Jerome Jiang [Mon, 8 May 2023 19:47:21 +0000 (19:47 +0000)]
Merge "Unify implementation of CHECK_MEM_ERROR" into main

15 months agoMerge "CHECK_MEM_ERROR to return in vp9_set_roi_map" into main
Jerome Jiang [Mon, 8 May 2023 19:46:44 +0000 (19:46 +0000)]
Merge "CHECK_MEM_ERROR to return in vp9_set_roi_map" into main

15 months agogen_msvs_vcxproj: add ARM64EC w/VS >= 2022
James Zern [Sat, 6 May 2023 02:00:08 +0000 (19:00 -0700)]
gen_msvs_vcxproj: add ARM64EC w/VS >= 2022

rather than define new targets, add a platform to the arm64 list as they
share the same configuration.

Bug: webm:1788
Change-Id: Iac020280b1103fb12b559f21439aeff26568fba4

15 months agoconfigure: add clang-cl vs1[67] arm64 targets
James Zern [Fri, 5 May 2023 23:56:51 +0000 (16:56 -0700)]
configure: add clang-cl vs1[67] arm64 targets

x86 and armv7 are skipped for now as the intrinsics will need different
flags than cl.exe (/arch:... -> -m...).

Bug: webm:1788
Change-Id: I8ca8660a8644cdd84c51cb1f75005e371ba8207d

15 months agoAdd VpxTplGopStats
Jerome Jiang [Thu, 4 May 2023 18:28:29 +0000 (14:28 -0400)]
Add VpxTplGopStats

Contains the size of GOP - also the size of the list of TPL stats for
each frame in this GOP.

VpxTplGopStats will be the unit for VP9E_GET_TPL_STATS control to return
TPL stats from the encoder.

Bug: b/273736974
Change-Id: I1682242fc6db4aafcd6314af023aa0d704976585

15 months agoUnify implementation of CHECK_MEM_ERROR
Jerome Jiang [Fri, 5 May 2023 02:03:27 +0000 (22:03 -0400)]
Unify implementation of CHECK_MEM_ERROR

There were multiple implementations of CHECK_MEM_ERROR across the
library that take different arguments and used in different places.

This CL will unify them and have only one implementation that takes
vpx_internal_error_info.

Change-Id: I2c568639473815bc00b1fc2b72be56e5ccba1a35

15 months agoCHECK_MEM_ERROR to return in vp9_set_roi_map
Jerome Jiang [Mon, 8 May 2023 14:37:54 +0000 (10:37 -0400)]
CHECK_MEM_ERROR to return in vp9_set_roi_map

Also change the return type of vp9_set_roi_map to vpx_codec_err_t

Change-Id: I60d9ff45f2d3dfc44cd6e2aab2cb1ba389ff15f3

15 months agoexamples.mk,vpxdec: rm libwebm muxer dependency
James Zern [Sat, 6 May 2023 22:48:58 +0000 (15:48 -0700)]
examples.mk,vpxdec: rm libwebm muxer dependency

vpxdec only requires the parser.

Change-Id: I54ead453d4af400ca5c3412a3211d6d0b1383046

15 months agoMerge "vp9_encoder: clear -Wshadow warning" into main
James Zern [Sat, 6 May 2023 02:26:55 +0000 (02:26 +0000)]
Merge "vp9_encoder: clear -Wshadow warning" into main

15 months agoREADME: update target list
James Zern [Sat, 6 May 2023 01:56:59 +0000 (18:56 -0700)]
README: update target list

Change-Id: If2d5811a55f6bb60eeba7d28b69c78157a17e87f

15 months agoMerge "Set setjmp flag in VP9 RTC rate control library" into main
Jerome Jiang [Fri, 5 May 2023 23:02:14 +0000 (23:02 +0000)]
Merge "Set setjmp flag in VP9 RTC rate control library" into main

15 months agoSet setjmp flag in VP9 RTC rate control library
Jerome Jiang [Fri, 5 May 2023 17:40:50 +0000 (13:40 -0400)]
Set setjmp flag in VP9 RTC rate control library

Change-Id: Ic5ec8dc7d9637091d4137a47d793cf29e76fdc45

15 months agosixtap_filter_msa.c: clear -Wshadow warnings
James Zern [Fri, 5 May 2023 02:23:20 +0000 (19:23 -0700)]
sixtap_filter_msa.c: clear -Wshadow warnings

Bug: webm:1793
Change-Id: I5f9c09f31b06fecc123c6a9d01f5fbed39142356

15 months agoMerge "macros_msa.h: clear -Wshadow warnings" into main
James Zern [Fri, 5 May 2023 19:15:29 +0000 (19:15 +0000)]
Merge "macros_msa.h: clear -Wshadow warnings" into main

15 months agovp8_[cd]x_iface: clear setjmp flag on function exit
James Zern [Fri, 5 May 2023 18:04:25 +0000 (11:04 -0700)]
vp8_[cd]x_iface: clear setjmp flag on function exit

in vp8e_encode, also move setting the setjmp() call closer to setting
the flag.

Change-Id: Ie165d4100b84776f9c34eddcf64657bd78cce4f5

15 months agovp9_decodeframe,tile_worker_hook: relocate setjmp=1
James Zern [Fri, 5 May 2023 18:03:19 +0000 (11:03 -0700)]
vp9_decodeframe,tile_worker_hook: relocate setjmp=1

after the call to setjmp(); this is more correct and consistent with
other code.

Change-Id: I6d9bb8daad6a959bfe4f25484f9d6664b99da19e

15 months agovp9,encoder_set_config: set setjmp flag after setjmp()
James Zern [Fri, 5 May 2023 18:01:50 +0000 (11:01 -0700)]
vp9,encoder_set_config: set setjmp flag after setjmp()

Change-Id: I6858e574d24aaff64f725404706f58e04e43717d

15 months agoMerge changes I8089e90a,I46890224,I1b0e090d into main
James Zern [Fri, 5 May 2023 17:26:11 +0000 (17:26 +0000)]
Merge changes I8089e90a,I46890224,I1b0e090d into main

* changes:
  Overwrite cm->error->detail before freeing
  Have vpx_codec_error take const vpx_codec_ctx_t *
  Add comments about vpx_codec_enc_init_ver failure

15 months agoMerge "vpx_subpixel_8t_intrin_avx2,cosmetics: shorten long comment" into main
James Zern [Fri, 5 May 2023 16:47:28 +0000 (16:47 +0000)]
Merge "vpx_subpixel_8t_intrin_avx2,cosmetics: shorten long comment" into main

15 months agovp9_encoder: clear -Wshadow warning
James Zern [Fri, 5 May 2023 16:44:23 +0000 (09:44 -0700)]
vp9_encoder: clear -Wshadow warning

with --enable-experimental --enable-rate-ctrl

Bug: webm:1793
Change-Id: I9ca664538bcf0c2aca8aea73283bbb0232eb86e9

15 months agomacros_msa.h: clear -Wshadow warnings
James Zern [Fri, 5 May 2023 02:22:17 +0000 (19:22 -0700)]
macros_msa.h: clear -Wshadow warnings

Bug: webm:1793
Change-Id: Ib2e3bd3c52632cdd4410cb2c54d69750e64e5201

15 months agoMerge "Add AVX2 intrinsic for idct16x16 and idct32x32 functions" into main
Yunqing Wang [Fri, 5 May 2023 15:33:21 +0000 (15:33 +0000)]
Merge "Add AVX2 intrinsic for idct16x16 and idct32x32 functions" into main

15 months agoAdd AVX2 intrinsic for idct16x16 and idct32x32 functions
Anupam Pandey [Tue, 18 Apr 2023 09:16:56 +0000 (14:46 +0530)]
Add AVX2 intrinsic for idct16x16 and idct32x32 functions

Added AVX2 intrinsic optimization for the following functions
1. vpx_idct16x16_256_add
2. vpx_idct32x32_1024_add
3. vpx_idct32x32_135_add

The module level scaling w.r.t C function (timer based) for
existing (SSE2) and new AVX2 intrinsics:
                            Scaling
   Function Name         SSE2      AVX2
vpx_idct32x32_1024_add  3.62x     7.49x
vpx_idct32x32_135_add   4.85x     9.41x
vpx_idct16x16_256_add   4.82x     7.70x

This is a bit-exact change.

Change-Id: Id9dda933aa1f5093bb6b35ac3b8a41846afca9d2

15 months agoOverwrite cm->error->detail before freeing
Wan-Teh Chang [Fri, 24 Mar 2023 18:32:36 +0000 (11:32 -0700)]
Overwrite cm->error->detail before freeing

Help detect use after free of the return value of
vpx_codec_error_detail(). If vpx_codec_error_detail() is called after
vpx_codec_encode() fails, the return value may be equal to
cm->error->detail, which is freed when vpx_codec_destroy() is called.

Document the lifetime of the string returned by
vpx_codec_error_detail().

Change-Id: I8089e90a4499b4f3cc5b9cfdbb25d72368faa319

15 months agoHave vpx_codec_error take const vpx_codec_ctx_t *
Wan-Teh Chang [Wed, 29 Mar 2023 01:07:41 +0000 (18:07 -0700)]
Have vpx_codec_error take const vpx_codec_ctx_t *

Also have vpx_codec_error_detail take vpx_codec_ctx_t *. Both functions
are getter functions that don't modify the codec context.

Change-Id: I4689022425efbf7b1da5034255ac052fce5e5b4f

15 months agoAdd comments about vpx_codec_enc_init_ver failure
Wan-Teh Chang [Thu, 23 Mar 2023 21:50:10 +0000 (14:50 -0700)]
Add comments about vpx_codec_enc_init_ver failure

Address the questions:
1. If vpx_codec_enc_init_ver() fails, should I still call
   vpx_codec_destroy() on the encoder context?
2. Is it safe to call vpx_codec_error_detail() when
   vpx_codec_enc_init_ver() failed?

Change-Id: I1b0e090d11dd9f853fe203f4cbb6080c3c7b0506

15 months agovpx_subpixel_8t_intrin_avx2,cosmetics: shorten long comment
James Zern [Fri, 5 May 2023 00:17:10 +0000 (17:17 -0700)]
vpx_subpixel_8t_intrin_avx2,cosmetics: shorten long comment

Change-Id: I8badedc2ad07d60896e45de28b707ad9f6c4d499

15 months agoMerge "Add num_blocks to VpxTplFrameStats" into main
Jerome Jiang [Thu, 4 May 2023 18:06:10 +0000 (18:06 +0000)]
Merge "Add num_blocks to VpxTplFrameStats" into main

15 months agoMerge "Add Vpx* prefix to Tpl{Block,Frame}Stats" into main
Jerome Jiang [Thu, 4 May 2023 18:00:51 +0000 (18:00 +0000)]
Merge "Add Vpx* prefix to Tpl{Block,Frame}Stats" into main

15 months agoMerge changes I226215a2,Ia4918eb0,If6219446,Ibf00a6e1,I900a0a48 into main
Chi Yo Tsai [Thu, 4 May 2023 17:04:17 +0000 (17:04 +0000)]
Merge changes I226215a2,Ia4918eb0,If6219446,Ibf00a6e1,I900a0a48 into main

* changes:
  Fix mismatched param names in vpx_dsp/x86/sad4d_avx2.c
  Fix mismatched param names in vpx_dsp/arm/highbd_sad4d_neon.c
  Fix mismatched param names in vpx_dsp/arm/sad4d_neon.c
  Fix mismatched param names in vpx_dsp/arm/highbd_avg_neon.c
  Fix clang warning on const-qualification of parameters

15 months agoAdd num_blocks to VpxTplFrameStats
Jerome Jiang [Thu, 4 May 2023 14:59:46 +0000 (10:59 -0400)]
Add num_blocks to VpxTplFrameStats

I realized the calculation of the size of the list of VpxTplBlockStats
is non-trivial. So it's better to add the field for the size.

Bug: b/273736974
Change-Id: Ic1b50597c1f89a8f866b5669ca676407be6dc9d8

15 months agoAdd Vpx* prefix to Tpl{Block,Frame}Stats
Jerome Jiang [Thu, 4 May 2023 14:32:03 +0000 (10:32 -0400)]
Add Vpx* prefix to Tpl{Block,Frame}Stats

This is to avoid symbols redifinition when integrating with other
libraries.

Bug: b/273736974
Change-Id: I891af78b1907504d5bb9f735164aea18c2aba944

15 months agoMerge changes I4d26f5f8,I12e25710 into main
James Zern [Thu, 4 May 2023 02:16:12 +0000 (02:16 +0000)]
Merge changes I4d26f5f8,I12e25710 into main

* changes:
  s/__aarch64__/VPX_ARCH_AARCH64/
  configure: add aarch64 to ARCH_LIST

15 months agoMerge "Add codec control to export TPL stats" into main
Jerome Jiang [Thu, 4 May 2023 01:55:41 +0000 (01:55 +0000)]
Merge "Add codec control to export TPL stats" into main

15 months agoAdd codec control to export TPL stats
Jerome Jiang [Fri, 28 Apr 2023 18:32:47 +0000 (14:32 -0400)]
Add codec control to export TPL stats

new codec control: VP9E_GET_TPL_STATS with unit test

Bug: b/273736974
Change-Id: I27343bd3f6dffafc86925234537bcdb557bc4079

15 months agoFix mismatched param names in vpx_dsp/x86/sad4d_avx2.c
chiyotsai [Wed, 3 May 2023 21:45:13 +0000 (14:45 -0700)]
Fix mismatched param names in vpx_dsp/x86/sad4d_avx2.c

Change-Id: I226215a2ff8798b72abe0c2caf3d18875595caa5