platform/upstream/libvpx.git
13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

13 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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()

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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 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

14 months agoFix mismatched param names in vpx_dsp/arm/highbd_sad4d_neon.c
chiyotsai [Wed, 3 May 2023 21:44:08 +0000 (14:44 -0700)]
Fix mismatched param names in vpx_dsp/arm/highbd_sad4d_neon.c

Change-Id: Ia4918eb0bac3b28b27e1ef205b9171680b2eb9a4

14 months agoFix mismatched param names in vpx_dsp/arm/sad4d_neon.c
chiyotsai [Wed, 3 May 2023 20:38:46 +0000 (13:38 -0700)]
Fix mismatched param names in vpx_dsp/arm/sad4d_neon.c

Change-Id: If621944684cf9bb9f353db5961ed8b4b4ae38f24

14 months agoFix mismatched param names in vpx_dsp/arm/highbd_avg_neon.c
chiyotsai [Wed, 3 May 2023 20:34:41 +0000 (13:34 -0700)]
Fix mismatched param names in vpx_dsp/arm/highbd_avg_neon.c

Change-Id: Ibf00a6e1029284e637b10ef01ac9b31ffadc74ca

14 months agoFix clang warning on const-qualification of parameters
chiyotsai [Wed, 3 May 2023 20:28:41 +0000 (13:28 -0700)]
Fix clang warning on const-qualification of parameters

Change-Id: I900a0a48dde5fcb262157b191ac536e18269feb3

14 months agofdct8x8_test: EXPECT_* -> ASSERT_*
James Zern [Wed, 3 May 2023 17:09:03 +0000 (10:09 -0700)]
fdct8x8_test: EXPECT_* -> ASSERT_*

This avoids unnecessary logging when a block has multiple errors.

Change-Id: If0f3e6f8ff5bd284655f7cabfd23c253c93d44c5

14 months agos/__aarch64__/VPX_ARCH_AARCH64/
James Zern [Wed, 3 May 2023 01:37:59 +0000 (18:37 -0700)]
s/__aarch64__/VPX_ARCH_AARCH64/

This allows AArch64 to be correctly detected when building with Visual
Studio (cl.exe) and fixes a crash in vp9_diamond_search_sad_neon.c.
There are still test failures, however.

Microsoft's compiler doesn't define __ARM_FEATURE_*. To use those paths
we may need to rely on _M_ARM64_EXTENSION.

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

14 months agoconfigure: add aarch64 to ARCH_LIST
James Zern [Fri, 21 Apr 2023 01:15:23 +0000 (18:15 -0700)]
configure: add aarch64 to ARCH_LIST

This will allow identifying Windows Visual Studio targets as aarch64;
the Microsoft compiler does not define __aarch64__.

An alternative would be to define this in the code, checking for
_M_ARM64 or _M_ARM64EC. For now we'll use the existing VPX_ARCH_*
system. For compatibility VPX_ARCH_ARM will continue to be defined to 1
in this case.

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

14 months agoMove TplFrameStats to public header
Jerome Jiang [Thu, 27 Apr 2023 20:15:56 +0000 (16:15 -0400)]
Move TplFrameStats to public header

Get ready for changes to follow:

- Custom reader/writer IO functions
- Codec control to get TPL stats from the encoder

Move the definition of TplFrameStats to public header so applications
can use them directly.

Bug: b/273736974
Change-Id: Ieb0db4560ddd966df1bc01f6a7e179cc97f9bac1

14 months agoClean up a stale TODO in tpl
Jerome Jiang [Thu, 27 Apr 2023 19:58:08 +0000 (15:58 -0400)]
Clean up a stale TODO in tpl

Change-Id: Ieccaff1cc94cbb2c5a294d83f3080f7407267016

14 months agoMerge "register_state_check: clear -Wshadow warning" into main
James Zern [Tue, 25 Apr 2023 20:34:13 +0000 (20:34 +0000)]
Merge "register_state_check: clear -Wshadow warning" into main

14 months agoMerge "highbd_vpx_convolve8_neon: clear -Wshadow warning" into main
James Zern [Tue, 25 Apr 2023 20:21:24 +0000 (20:21 +0000)]
Merge "highbd_vpx_convolve8_neon: clear -Wshadow warning" into main

14 months agoMerge "vp9_highbd_iht16x16_add_neon: clear -Wshadow warning" into main
James Zern [Tue, 25 Apr 2023 20:12:30 +0000 (20:12 +0000)]
Merge "vp9_highbd_iht16x16_add_neon: clear -Wshadow warning" into main

14 months agoMerge "Reduce joint motion search iters based on bsize" into main
Yunqing Wang [Mon, 24 Apr 2023 21:15:14 +0000 (21:15 +0000)]
Merge "Reduce joint motion search iters based on bsize" into main

14 months agoReduce joint motion search iters based on bsize
Neeraj Gadgil [Wed, 19 Apr 2023 02:43:26 +0000 (08:13 +0530)]
Reduce joint motion search iters based on bsize

Joint motion search during compound mode eval is optimized by
reducing the number of mv search iterations based on bsize.
The sf 'comp_inter_joint_search_thresh' is renamed as
'comp_inter_joint_search_iter_level' and used to add the logic.

cpu  Testset  Instr. Cnt     BD Rate loss (%)
               Red (%)   avg. psnr  ovr.psnr    ssim
 0   LOWRES2    5.373     0.0917     0.1088    0.0294
 0   MIDRES2    3.395     0.0239     0.0520    0.0783
 0    HDRES2    2.291     0.0223     0.0301    0.0053
 0   Average    3.686     0.0460     0.0636    0.0377

STATS_CHANGED

Change-Id: I7ee8873ebc8af967382324ae8f5c70c26665d5e6

15 months agoReland "Calculate recrf_dist and recrf_rate"
Jerome Jiang [Thu, 20 Apr 2023 19:09:00 +0000 (15:09 -0400)]
Reland "Calculate recrf_dist and recrf_rate"

This is a reland of commit 3c59378e4eac2d241fba8b26e660318b850e5773

Addressed issues from the previous CL:

- Both recon_error and rate_cost are scaled up
- recon_error and rate_cost are not accumulated across ref frames,
  instead they are calculated with the best ref frame picked.
- get_quantize_error() is put where it was, so there is no behavior
  change for vp9.

Bug: b/273736974

Original change's description:
> Calculate recrf_dist and recrf_rate
>
> Change-Id: I74e74807436b92d729e2ccaab96149780f1f52d9

Change-Id: I20e1f5543e83b576a074bd4e6b44d99da65f4b56

15 months agohighbd_vpx_convolve8_neon: clear -Wshadow warning
James Zern [Fri, 21 Apr 2023 20:03:58 +0000 (13:03 -0700)]
highbd_vpx_convolve8_neon: clear -Wshadow warning

Bug: webm:1793
Change-Id: If1a46fe183cd18e05b5538b1eba098e420b745ec

15 months agovp9_highbd_iht16x16_add_neon: clear -Wshadow warning
James Zern [Fri, 21 Apr 2023 20:03:34 +0000 (13:03 -0700)]
vp9_highbd_iht16x16_add_neon: clear -Wshadow warning

Bug: webm:1793
Change-Id: I4e79a4d7d41b6abf88e3e60c54ab48a92b0346d2