Saturday, February 14, 2026

UPDATE: libvpx 1.16.0

Here is an update to libvpx 1.16.0.


2026-01-06 v1.16.0 "Xenonetta Duck"
This release includes Arm SVE2 and Neon optimizations for 12-tap filters,
AVX512 implementations for SAD, support for per-frame and per-spatial-layer
PSNR calculation, and numerous bug fixes.

- Upgrading:
This release is ABI incompatible with the previous release.

Unit tests require C++17 to build.

Support for 32-bit iOS targets (armv7, armv7s, and i386) has been removed.

- Enhancement:
Optimized Arm SVE2 and Neon implementations for 12-tap convolution filters.
Optimized Neon High Bitdepth (HBD) SAD and sad_avg functions.
Added Arm Neon DotProd and I8MM implementations for vpx_convolve12.
Added AVX512 implementations for SAD64 and sad_skip functions.
Added SSSE3 and AVX2 implementations for 12-tap temporal filter prediction.
Added support for per-frame and per-spatial-layer PSNR calculation.

Adjusted temporal filter strength to improve visual quality and reduce block
artifacts.

Added support for darwin24 (macOS 15) and darwin25 (macOS 26).
libwebm is upgraded to commit b4f01ea.

- Bug fixes:
Fix to heap buffer overflow in vp9_deblock, vp9_post_proc_frame, and
vp9_pack_bitstream.

Fix to integer overflow in vp9_highbd_post_proc, vp9_rc_regulate_q,
tiny_ssim, and vp9_calc_pframe_target_size_one_pass_cbr.

Fix to use-of-uninitialized-value in vp9_highbd_post_proc, mfqe, and
vp8_datarate_test.

Fix to out-of-bounds in log_tile_cols_from_picsize_level.
Fix to double free on initialization failure in vpx_codec_enc_init_multi.
Fix to division-by-zero crash in vpxenc with 0 FPS numerator input.

Fix to various build failures for Arm/SVE2, macOS cross-compilation, and
Xcode 16.

Tested on aarch64. Could use testing on an IBT system.


Index: Makefile
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/Makefile,v
retrieving revision 1.62
diff -u -p -u -p -r1.62 Makefile
--- Makefile 14 Jul 2025 07:14:00 -0000 1.62
+++ Makefile 12 Feb 2026 23:28:42 -0000
@@ -2,11 +2,11 @@ COMMENT= Google VP8/VP9 video codec

GH_ACCOUNT= webmproject
GH_PROJECT= libvpx
-GH_TAGNAME= v1.15.2
+GH_TAGNAME= v1.16.0
EPOCH= 0
CATEGORIES= multimedia

-SHARED_LIBS= vpx 19.0
+SHARED_LIBS= vpx 20.0

HOMEPAGE= https://www.webmproject.org/

Index: distinfo
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/distinfo,v
retrieving revision 1.27
diff -u -p -u -p -r1.27 distinfo
--- distinfo 14 Jul 2025 07:14:00 -0000 1.27
+++ distinfo 12 Feb 2026 23:28:42 -0000
@@ -1,2 +1,2 @@
-SHA256 (libvpx-1.15.2.tar.gz) = JvzT24gEXe44DlgYYqbvEG9Jt0tjlu6Vwpk6JgtGNqo=
-SIZE (libvpx-1.15.2.tar.gz) = 5630368
+SHA256 (libvpx-1.16.0.tar.gz) = ekeaPGa59dVUKkxqG303aKmDseXBTGCpOW7cm2SeAVw=
+SIZE (libvpx-1.16.0.tar.gz) = 5635379
Index: patches/patch-build_make_configure_sh
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/patches/patch-build_make_configure_sh,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 patch-build_make_configure_sh
--- patches/patch-build_make_configure_sh 14 Jul 2025 07:14:00 -0000 1.14
+++ patches/patch-build_make_configure_sh 12 Feb 2026 23:28:42 -0000
@@ -30,7 +30,7 @@ Index: build/make/configure.sh
setup_gnu_toolchain
arch_int=${tgt_isa##armv}
arch_int=${arch_int%%te}
-@@ -1297,7 +1297,7 @@ EOF
+@@ -1298,7 +1298,7 @@ EOF

;;
mips*)
@@ -39,7 +39,7 @@ Index: build/make/configure.sh
setup_gnu_toolchain
tune_cflags="-mtune="
if enabled dspr2; then
-@@ -1348,7 +1348,7 @@ EOF
+@@ -1349,7 +1349,7 @@ EOF
check_add_asflags -KPIC
;;
ppc64le*)
@@ -48,7 +48,7 @@ Index: build/make/configure.sh
setup_gnu_toolchain
# Do not enable vsx by default.
# https://bugs.chromium.org/p/webm/issues/detail?id=1522
-@@ -1405,7 +1405,7 @@ EOF
+@@ -1410,7 +1410,7 @@ EOF
esac
;;
gcc*)
@@ -57,7 +57,7 @@ Index: build/make/configure.sh
tune_cflags="-march="
setup_gnu_toolchain
#for 32 bit x86 builds, -O3 did not turn on this flag
-@@ -1536,7 +1536,7 @@ EOF
+@@ -1538,7 +1538,7 @@ EOF
esac
;;
loongarch*)
@@ -66,7 +66,7 @@ Index: build/make/configure.sh
setup_gnu_toolchain

enabled lsx && check_inline_asm lsx '"vadd.b $vr0, $vr1, $vr1"'
-@@ -1545,7 +1545,7 @@ EOF
+@@ -1547,7 +1547,7 @@ EOF
enabled lasx && soft_enable runtime_cpu_detect
;;
*-gcc|generic-gnu)
@@ -75,7 +75,7 @@ Index: build/make/configure.sh
enable_feature gcc
setup_gnu_toolchain
;;
-@@ -1591,8 +1591,6 @@ EOF
+@@ -1593,8 +1593,6 @@ EOF
if enabled optimizations; then
if enabled rvct; then
enabled small && check_add_cflags -Ospace || check_add_cflags -Otime
Index: patches/patch-configure
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/patches/patch-configure,v
retrieving revision 1.28
diff -u -p -u -p -r1.28 patch-configure
--- patches/patch-configure 14 Jul 2025 07:14:00 -0000 1.28
+++ patches/patch-configure 12 Feb 2026 23:28:42 -0000
@@ -1,7 +1,7 @@
Index: configure
--- configure.orig
+++ configure
-@@ -127,7 +127,9 @@ all_platforms="${all_platforms} loongarch32-linux-gcc"
+@@ -128,7 +128,9 @@ all_platforms="${all_platforms} loongarch32-linux-gcc"
all_platforms="${all_platforms} loongarch64-linux-gcc"
all_platforms="${all_platforms} mips32-linux-gcc"
all_platforms="${all_platforms} mips64-linux-gcc"
@@ -11,7 +11,7 @@ Index: configure
all_platforms="${all_platforms} sparc-solaris-gcc"
all_platforms="${all_platforms} x86-android-gcc"
all_platforms="${all_platforms} x86-darwin8-gcc"
-@@ -189,7 +191,7 @@ for t in ${all_targets}; do
+@@ -191,7 +193,7 @@ for t in ${all_targets}; do
[ -f "${source_path}/${t}.mk" ] && enable_feature ${t}
done

@@ -20,7 +20,7 @@ Index: configure
die "diff missing: Try installing diffutils via your package manager."
fi

-@@ -204,19 +206,6 @@ if [ "`cd \"${source_path}\" && pwd`" != "`pwd`" ]; th
+@@ -206,19 +208,6 @@ if [ "`cd \"${source_path}\" && pwd`" != "`pwd`" ]; th
fi
fi

@@ -40,7 +40,7 @@ Index: configure
# disable codecs when their source directory does not exist
[ -d "${source_path}/vp8" ] || disable_codec vp8
[ -d "${source_path}/vp9" ] || disable_codec vp9
-@@ -564,7 +553,7 @@ process_detect() {
+@@ -565,7 +554,7 @@ process_detect() {
# here rather than at option parse time because the target auto-detect
# magic happens after the command line has been parsed.
case "${tgt_os}" in
Index: patches/patch-libs_mk
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/patches/patch-libs_mk,v
retrieving revision 1.25
diff -u -p -u -p -r1.25 patch-libs_mk
--- patches/patch-libs_mk 29 Feb 2024 09:43:31 -0000 1.25
+++ patches/patch-libs_mk 12 Feb 2026 23:28:42 -0000
@@ -1,7 +1,7 @@
Index: libs.mk
--- libs.mk.orig
+++ libs.mk
-@@ -336,22 +336,17 @@ EXPORT_FILE := libvpx.def
+@@ -335,22 +335,17 @@ EXPORT_FILE := libvpx.def
LIBVPX_SO_SYMLINKS :=
LIBVPX_SO_IMPLIB := libvpx_dll.a
else
@@ -25,7 +25,7 @@ Index: libs.mk
$(BUILD_PFX)$(LIBVPX_SO): EXPORTS_FILE = $(EXPORT_FILE)

libvpx.def: $(call enabled,CODEC_EXPORTS)
-@@ -374,15 +369,7 @@ $(1): $(2)
+@@ -373,15 +368,7 @@ $(1): $(2)
$(qexec)ln -sf $(2) $$@
endef

@@ -41,7 +41,7 @@ Index: libs.mk
INSTALL-LIBS-$(CONFIG_SHARED) += $(LIBSUBDIR)/$(LIBVPX_SO)
INSTALL-LIBS-$(CONFIG_SHARED) += $(if $(LIBVPX_SO_IMPLIB),$(LIBSUBDIR)/$(LIBVPX_SO_IMPLIB))

-@@ -545,7 +532,7 @@ testdata: $(LIBVPX_TEST_DATA)
+@@ -532,7 +519,7 @@ testdata: $(LIBVPX_TEST_DATA)
set -e;\
echo "Checking test data:";\
for f in $(call enabled,LIBVPX_TEST_DATA); do\
@@ -50,7 +50,7 @@ Index: libs.mk
(cd "$(LIBVPX_TEST_DATA_PATH)"; $${sha1sum} -c);\
done; \
else\
-@@ -657,7 +644,7 @@ BINS-yes += $(LIBVPX_TEST_BIN)
+@@ -644,7 +631,7 @@ BINS-yes += $(LIBVPX_TEST_BIN)

CODEC_LIB=$(if $(CONFIG_DEBUG_LIBS),vpx_g,vpx)
CODEC_LIB_SUF=$(if $(CONFIG_SHARED),$(SHARED_LIB_SUF),.a)
@@ -59,7 +59,7 @@ Index: libs.mk
$(LIBVPX_TEST_BIN): $(TEST_LIBS)
$(eval $(call linkerxx_template,$(LIBVPX_TEST_BIN), \
$(LIBVPX_TEST_OBJS) \
-@@ -716,6 +703,8 @@ test_shard.$(1) test_shard_ndc.$(1): $(LIBVPX_TEST_BIN
+@@ -691,6 +678,8 @@ test_shard.$(1) test_shard_ndc.$(1): $(LIBVPX_TEST_BIN
@set -e; \
export GTEST_SHARD_INDEX=$(1); \
export GTEST_TOTAL_SHARDS=$(2); \

No comments:

Post a Comment