Closed Bug 1836826 Opened 9 months ago Closed 5 months ago

Update libvpx to new version 25a9a8e35aafe8391c5b79115bf944e27445317e

Categories

(Core :: Audio/Video, enhancement)

enhancement

Tracking

()

RESOLVED FIXED
120 Branch
Tracking Status
firefox-esr115 --- wontfix
firefox116 --- wontfix
firefox117 --- wontfix
firefox118 --- wontfix
firefox119 --- wontfix
firefox120 --- fixed

People

(Reporter: update-bot, Assigned: chunmin)

References

(Regressed 1 open bug)

Details

(Whiteboard: [3pl-filed][task_id: eSky7EwgRYOEi4x0Lsdxlg])

Attachments

(3 files)

This update covers 19 commits.. Here are the overall diff statistics, and then the commit information.


media/libvpx/config/linux/ia32/vpx_dsp_rtcd.h | 2 +
media/libvpx/config/linux/x64/vpx_dsp_rtcd.h | 5 +-
media/libvpx/config/mac/ia32/vpx_dsp_rtcd.h | 2 +
media/libvpx/config/mac/x64/vpx_dsp_rtcd.h | 5 +-
media/libvpx/config/win/ia32/vpx_dsp_rtcd.h | 2 +
media/libvpx/config/win/x64/vpx_dsp_rtcd.h | 5 +-
media/libvpx/libvpx/README | 4 +
media/libvpx/libvpx/build/make/Makefile | 16 +-
media/libvpx/libvpx/build/make/configure.sh | 1 +
media/libvpx/libvpx/build/make/gen_msvs_vcxproj.sh | 42 +-
media/libvpx/libvpx/configure | 8 +-
media/libvpx/libvpx/examples.mk | 3 +-
media/libvpx/libvpx/libs.mk | 1 +
media/libvpx/libvpx/test/comp_avg_pred_test.cc | 21 +-
media/libvpx/libvpx/test/encode_api_test.cc | 60 +-
media/libvpx/libvpx/test/encode_test_driver.h | 2 +-
media/libvpx/libvpx/test/fdct8x8_test.cc | 12 +
media/libvpx/libvpx/test/test.mk | 1 +
media/libvpx/libvpx/test/video_source.h | 11 +-
media/libvpx/libvpx/vp8/common/mips/msa/vp8_macros_msa.h | 258 +-
media/libvpx/libvpx/vp8/vp8_cx_iface.c | 17 +-
media/libvpx/libvpx/vp9/encoder/vp9_encoder.h | 1 +
media/libvpx/libvpx/vp9/encoder/vp9_mcomp.c | 8 +-
media/libvpx/libvpx/vp9/encoder/vp9_rdopt.c | 4 +-
media/libvpx/libvpx/vp9/encoder/vp9_tpl_model.c | 44 +-
media/libvpx/libvpx/vp9/encoder/x86/vp9_diamond_search_sad_avx.c | 5 +-
media/libvpx/libvpx/vp9/vp9_cx_iface.c | 21 +-
media/libvpx/libvpx/vpx/exports_com | 3 +
media/libvpx/libvpx/vpx/src/vpx_tpl.c | 107 +
media/libvpx/libvpx/vpx/vpx_codec.mk | 3 +
media/libvpx/libvpx/vpx/vpx_encoder.h | 32 +-
media/libvpx/libvpx/vpx/vpx_tpl.h | 99 +
media/libvpx/libvpx/vpx_dsp/arm/avg_neon.c | 89 +-
media/libvpx/libvpx/vpx_dsp/arm/fdct_partial_neon.c | 12 +
media/libvpx/libvpx/vpx_dsp/arm/mem_neon.h | 20 +
media/libvpx/libvpx/vpx_dsp/arm/vpx_convolve8_neon.c | 997 +++++----
media/libvpx/libvpx/vpx_dsp/arm/vpx_convolve8_neon.h | 44 +-
media/libvpx/libvpx/vpx_dsp/arm/vpx_convolve_neon.c | 55 +
media/libvpx/libvpx/vpx_dsp/sad.c | 2 +-
media/libvpx/libvpx/vpx_dsp/variance.c | 2 +-
media/libvpx/libvpx/vpx_dsp/vpx_dsp.mk | 1 +
media/libvpx/libvpx/vpx_dsp/vpx_dsp.mk.orig | 1 +
media/libvpx/libvpx/vpx_dsp/vpx_dsp_common.h | 12 +
media/libvpx/libvpx/vpx_dsp/vpx_dsp_rtcd_defs.pl | 2 +-
media/libvpx/libvpx/vpx_dsp/x86/avg_pred_avx2.c | 111 +
media/libvpx/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c | 226 +-
media/libvpx/moz.yaml | 4 +-
media/libvpx/sources.mozbuild | 12 +
48 files changed, 1489 insertions(+), 906 deletions(-)


7b66c730a2edd3e232dce5e8ef2522ff83928a90 by Deepa K G

https://chromium.googlesource.com/webm/libvpx/+/7b66c730a2edd3e232dce5e8ef2522ff83928a90
Authored: 2023-04-24 15:56:18 +0530
Committed: 2023-06-05 12:48:24 +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

Files Modified:

  • vp9/encoder/x86/vp9_diamond_search_sad_avx.c

1aff4a5655855c20b6766a91b9dacc8d78279c92 by Jerome Jiang

https://chromium.googlesource.com/webm/libvpx/+/1aff4a5655855c20b6766a91b9dacc8d78279c92
Authored: 2023-05-26 12:02:36 -0400
Committed: 2023-05-31 14:26:49 -0400

Trim tpl stats by 2 extra frames

Not applicable to the last GOP.

Bug: b/284162396
Change-Id: I55b7e04e9fc4b68a08ce3e00b10743823c828954

Files Modified:

  • vp9/encoder/vp9_tpl_model.c

c36aa2e9c4a610dd7f5467126c894ac4dcbded02 by Jonathan Wright

https://chromium.googlesource.com/webm/libvpx/+/c36aa2e9c4a610dd7f5467126c894ac4dcbded02
Authored: 2023-05-30 17:31:18 +0100
Committed: 2023-05-31 14:34:43 +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

Files Modified:

  • vpx_dsp/arm/avg_neon.c

c738e87f27ef8e12dd28b9052f446a5f69abf3c9 by Jonathan Wright

https://chromium.googlesource.com/webm/libvpx/+/c738e87f27ef8e12dd28b9052f446a5f69abf3c9
Authored: 2023-05-30 15:22:04 +0100
Committed: 2023-05-31 14:30:02 +0100

Optimize Neon implementation of vpx_int_pro_col

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

Change-Id: I0307a3b65e50d2b1ae582938bc5df9c2b21df734

Files Modified:

  • vpx_dsp/arm/avg_neon.c

25f2e1ef255e89d5e7357aa2427926776327765a by James Zern

https://chromium.googlesource.com/webm/libvpx/+/25f2e1ef255e89d5e7357aa2427926776327765a
Authored: 2023-05-23 15:50:10 -0700
Committed: 2023-05-23 15:52:09 -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

Files Modified:

  • vpx_dsp/vpx_dsp_common.h

95b56ab7df669ec5dd29c283fa5bf6d38c2df5d1 by James Zern

https://chromium.googlesource.com/webm/libvpx/+/95b56ab7df669ec5dd29c283fa5bf6d38c2df5d1
Authored: 2023-05-23 15:49:29 -0700
Committed: 2023-05-23 15:52:05 -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

Files Modified:

  • vpx_dsp/arm/fdct_partial_neon.c

62d09a3e94ef2ce0091b6a8e3a298851657c6891 by James Zern

https://chromium.googlesource.com/webm/libvpx/+/62d09a3e94ef2ce0091b6a8e3a298851657c6891
Authored: 2023-05-23 15:48:10 -0700
Committed: 2023-05-23 15:51:56 -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

Files Modified:

  • test/fdct8x8_test.cc

d45cc8edda12306c8449242344c63992f63e7a0b by Jerome Jiang

https://chromium.googlesource.com/webm/libvpx/+/d45cc8edda12306c8449242344c63992f63e7a0b
Authored: 2023-05-04 10:48:25 -0400
Committed: 2023-05-23 17:58:01 -0400

Add IO for TPL stats

Overload TempOutFile constructor to allow IO mode.

Bug: b/281563704

Change-Id: I1f4f5b29db0e331941b6795e478eeeab51f625ad

Files Added:

  • vpx/src/vpx_tpl.c

Files Modified:

  • libs.mk
  • test/encode_api_test.cc
  • test/video_source.h
  • vpx/exports_com
  • vpx/vpx_codec.mk
  • vpx/vpx_tpl.h

7e7a1706e3dadcfbb3d92d93ea735420990584da by Jerome Jiang

https://chromium.googlesource.com/webm/libvpx/+/7e7a1706e3dadcfbb3d92d93ea735420990584da
Authored: 2023-05-16 14:57:05 -0400
Committed: 2023-05-17 20:43:35 -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

Files Added:

  • vpx/vpx_tpl.h

Files Modified:

  • libs.mk
  • test/encode_api_test.cc
  • test/encode_test_driver.h
  • vp9/encoder/vp9_encoder.h
  • vp9/vp9_cx_iface.c
  • vpx/vpx_codec.mk
  • vpx/vpx_encoder.h

e6b9a8d667bb43c58437bb1d6204ffc8047252ac by Anupam Pandey

https://chromium.googlesource.com/webm/libvpx/+/e6b9a8d667bb43c58437bb1d6204ffc8047252ac
Authored: 2023-05-12 10:56:45 +0530
Committed: 2023-05-17 14:24:34 +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

Files Modified:

  • vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c

3e1e38d1176c34f71a87f8402c07cdcc2e20083e by Jonathan Wright

https://chromium.googlesource.com/webm/libvpx/+/3e1e38d1176c34f71a87f8402c07cdcc2e20083e
Authored: 2023-05-04 16:33:38 +0100
Committed: 2023-05-13 20:43:20 +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

Files Modified:

  • vpx_dsp/arm/mem_neon.h
  • vpx_dsp/arm/vpx_convolve8_neon.c
  • vpx_dsp/arm/vpx_convolve8_neon.h
  • vpx_dsp/arm/vpx_convolve_neon.c

2a9b810d3df62ff3c527ce3895f6b80d9d6f6296 by James Zern

https://chromium.googlesource.com/webm/libvpx/+/2a9b810d3df62ff3c527ce3895f6b80d9d6f6296
Authored: 2023-05-08 16:58:59 -0700
Committed: 2023-05-12 10:20:54 -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

Files Modified:

  • build/make/Makefile

8ecf58432118b672fe3f4a54725bc63caac262aa by Jonathan Wright

https://chromium.googlesource.com/webm/libvpx/+/8ecf58432118b672fe3f4a54725bc63caac262aa
Authored: 2023-05-08 17:41:26 +0100
Committed: 2023-05-12 14:53:51 +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

Files Modified:

  • vpx_dsp/arm/vpx_convolve8_neon.c
  • vpx_dsp/arm/vpx_convolve8_neon.h

9e0fc37f6f68685066f3e71e1cd0605d6ee2205e by James Zern

https://chromium.googlesource.com/webm/libvpx/+/9e0fc37f6f68685066f3e71e1cd0605d6ee2205e
Authored: 2023-04-17 13:42:11 -0700
Committed: 2023-05-09 14:04:19 -0700

configure: add -Wshadow

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

Bug: webm:1793
Change-Id: I562065a3c0ea9fdfc9615d1a6b1ae47da79b8ce0

Files Modified:

  • build/make/configure.sh
  • configure
  • examples.mk
  • test/test.mk

457b7f59860955415a23c20c535fc13fde51936f by Anupam Pandey

https://chromium.googlesource.com/webm/libvpx/+/457b7f59860955415a23c20c535fc13fde51936f
Authored: 2023-05-08 12:10:09 +0530
Committed: 2023-05-09 16:33:59 +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

Files Added:

  • vpx_dsp/x86/avg_pred_avx2.c

Files Modified:

  • test/comp_avg_pred_test.cc
  • vp9/encoder/vp9_mcomp.c
  • vp9/encoder/vp9_rdopt.c
  • vpx_dsp/sad.c
  • vpx_dsp/variance.c
  • vpx_dsp/vpx_dsp.mk
  • vpx_dsp/vpx_dsp_rtcd_defs.pl

fbbe1d0115efc41a3c7001cc161aa1ec64a9f711 by James Zern

https://chromium.googlesource.com/webm/libvpx/+/fbbe1d0115efc41a3c7001cc161aa1ec64a9f711
Authored: 2023-05-08 11:48:15 -0700
Committed: 2023-05-08 21:44:32 -0700

vp8_macros_msa.h: clear -Wshadow warnings

Bug: webm:1793
Change-Id: Ia940b06bd23a915a050432e03bb630567e891d8d

Files Modified:

  • vp8/common/mips/msa/vp8_macros_msa.h

3916e0e1308acd8511269ca4ed6394601f72cc10 by James Zern

https://chromium.googlesource.com/webm/libvpx/+/3916e0e1308acd8511269ca4ed6394601f72cc10
Authored: 2023-05-05 19:00:08 -0700
Committed: 2023-05-08 10:53:21 -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

Files Modified:

  • build/make/gen_msvs_vcxproj.sh

3fe13658846564f37399035146132ee2af2b1ba6 by James Zern

https://chromium.googlesource.com/webm/libvpx/+/3fe13658846564f37399035146132ee2af2b1ba6
Authored: 2023-05-05 16:56:51 -0700
Committed: 2023-05-08 10:53:21 -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

Files Modified:

  • README
  • build/make/gen_msvs_vcxproj.sh
  • configure

b14d20b47004e58ee4100fc10ccf0cfa8dfe4fe6 by James Zern

https://chromium.googlesource.com/webm/libvpx/+/b14d20b47004e58ee4100fc10ccf0cfa8dfe4fe6
Authored: 2023-05-06 15:48:58 -0700
Committed: 2023-05-06 15:48:58 -0700

examples.mk,vpxdec: rm libwebm muxer dependency

vpxdec only requires the parser.

Change-Id: I54ead453d4af400ca5c3412a3211d6d0b1383046

Files Modified:

  • examples.mk

Updatebot encountered an error while trying to submit to phabricator.
Updatebot will be unable to do anything more for this library version.

Flags: needinfo?(cchang)

Update to 7b66c730a2edd3e232dce5e8ef2522ff83928a90 by running ./mach vendor media/libvpx/moz.yaml --patch-mode=none

Apply local patches by running ./mach vendor media/libvpx/moz.yaml --patch-mode-only

Depends on D180014

Flags: needinfo?(cchang)
Assignee: nobody → cchang
Status: NEW → ASSIGNED

FYI if you had cleared the assignment this would have shown up on the dashboard in someone's triage bucket. I guess updatebot automatically assigned bug, in which case I filter those out of the dash. I've been finding these and clearing ownership so they go to the right dev.

Attachment #9337552 - Attachment description: Bug 1836826 - Update libvpx to 7b66c730a2edd3e232dce5e8ef2522ff83928a90 → Bug 1836826 - Update libvpx to 19ec57e14938bcb12d87123b7c369212f19792eb
Attachment #9337552 - Attachment description: Bug 1836826 - Update libvpx to 19ec57e14938bcb12d87123b7c369212f19792eb → Bug 1836826 - Update libvpx to 25a9a8e35aafe8391c5b79115bf944e27445317e
Summary: Update libvpx to new version 7b66c730a2edd3e232dce5e8ef2522ff83928a90 from 2023-06-05 00:00:00 → Update libvpx to new version 25a9a8e35aafe8391c5b79115bf944e27445317e
Pushed by pehrsons@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/026ce2e0ea2d
Update libvpx to 25a9a8e35aafe8391c5b79115bf944e27445317e r=webrtc-reviewers,pehrsons
https://hg.mozilla.org/integration/autoland/rev/ead3e0b0682d
Apply local patches to libvpx r=webrtc-reviewers,dbaker
Flags: needinfo?(cchang)
Pushed by pehrsons@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/1529fde3f5ee
Update libvpx to 25a9a8e35aafe8391c5b79115bf944e27445317e r=webrtc-reviewers,pehrsons
https://hg.mozilla.org/integration/autoland/rev/1001ccf6f5f7
Apply local patches to libvpx r=webrtc-reviewers,dbaker
https://hg.mozilla.org/integration/autoland/rev/d6a97a096362
Build libvpx with dotprod and i8mm cpu features as needed. r=glandium
Regressions: 1861949
You need to log in before you can comment on or make changes to this bug.