Monday, November 04, 2024

UPDATE: libvpx 1.15.0

Here is an update to libvpx 1.15.0.


2024-10-22 v1.15.0 "Wigeon Duck"
This release includes new codec control for key frame filtering, more Neon
optimizations, improvements to RTC encoding and bug fixes.

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

Temporal filtering improvement that can be turned on with the new codec
control VP9E_SET_KEY_FRAME_FILTERING, which gives 1+% BD-rate saving with
minimal encoder time increase.

libwebm is upgraded to libwebm-1.0.0.31-10-g3b63004

- Enhancement:
Neon optimization speed up
1-3% speed up across speed 5 to 10 for RTC
3% speed up for speed 0 and 1 for VoD in standard bitdepth
3% and 7% speed up for speed 0 and 1 respectively for VoD in high bitdepth
Scene detection is allowed for all RTC speeds (>=5)
Support profile guided optimizations

Delta quantization parameters for UV channels for vp8 is supported in RTC
rate control library

Rate control parameters are reset and maximum QP is enforced on scene
changes in SVC when there is no inter-layer prediction

- Bug fixes:
Fix to Uninitialized scalar variable in `vp9_rd_pick_inter_mode_sb()`
Fix to Integer-overflow in `resize_multistep`
Fix to Heap-buffer-overflow in `vpx_sad64x64_avx2`
Fix to Crash in `vpx_sad8x8_sse2`
Fix to Assertion in `write_modes`
Support profile guided optimizations
Fix to Integer-overflow in `encode_frame_to_data_rate`
Fix to Integer-overflow in `vp9_svc_check_reset_layer_rc_flag`
Fix to core dump error from /usr/bin/tools/tiny_ssim --help
Fix to use-of-uninitialized-value in `vp9_setup_tpl_stats`
Fix to Undefined-shift in `vp9_cyclic_refresh_setup`
Fix to redundant `&& __GNUC__` preproc check
Fix to valgrind warning in EncodeAPI.OssFuzz69906
Fix to Index-out-of-bounds in `vp8_rd_pick_inter_mode`
Fix to Integer-overflow in `vp8_pick_frame_size`
Fix to Use-of-uninitialized-value in `vpx_codec_peek_stream_info`
Fix to log clutters with the message "Warning: Desired height too large"
Fix to Integer-overflow in `vp9_svc_adjust_avg_frame_qindex`
Fix to integer overflows caused by huge target bitrate, frame rate, or
g_timebase numerator or denominator
Fix to missing license headers
Fix to build failure for Android Armv7
Fix to integer overflows in image helpers
Fix to Integer-overflow in `vp9_calc_iframe_target_size_one_pass_cbr`
Fix to Heap-buffer-overflow in `vp9_pick_inter_mode`
Fix to Segv in `vp9_multi_thread_tile_init`
Fix to Use-of-uninitialized-value in `vp9_row_mt_sync_mem_dealloc`
Fix to Crash in `mbloop_filter_vertical_edge_c`
Fix to Check failed in CheckUnwind
Fix to Heap-buffer-overflow in `write_modes_b` and `vpx_write`
Fix to Possible signed integer overflow found in `vpx_codec_encode`
Fix to build conflicts between Abseil and libaom/libvpx in Win ARM64 builds
Fix to build failures on aarch64
Fix to Data race in libvpx ARM NEON
Fix to Heap-buffer-overflow in `scale_plane_1_to_2_phase_0`
Fix to integer overflow in `encode_mb_row`
Fix to Floating-point-exception in `vp8_pick_frame_size`
Fix to Heap-buffer-overflow in `vp9_enc_setup_mi`
Fix to build failure with --target=arm64-win64-vs17
Fix to heap-buffer-overflow write in `vpx_img_read()`
Fix to C vs armv8-linux-gcc encode mismatches for `y4m_360p_10bit_input`
Fix to Null-dereference READ in `ml_predict_var_rd_partitioning`
Fix to Heap-buffer-overflow in `vpx_scaled_2d_ssse3`
Fix to Crash in `convolve_horiz`
Fix to Ill in `vpx_scaled_2d_ssse3`
Fix to Global-buffer-overflow in `cost_coeffs`


Index: Makefile
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/Makefile,v
retrieving revision 1.60
diff -u -p -u -p -r1.60 Makefile
--- Makefile 21 Aug 2024 05:42:20 -0000 1.60
+++ Makefile 4 Nov 2024 02:11:04 -0000
@@ -2,12 +2,11 @@ COMMENT= Google VP8/VP9 video codec

GH_ACCOUNT= webmproject
GH_PROJECT= libvpx
-GH_TAGNAME= v1.14.1
-REVISION= 0
+GH_TAGNAME= v1.15.0
EPOCH= 0
CATEGORIES= multimedia

-SHARED_LIBS= vpx 17.0
+SHARED_LIBS= vpx 18.0

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

Index: distinfo
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/distinfo,v
retrieving revision 1.25
diff -u -p -u -p -r1.25 distinfo
--- distinfo 22 Jun 2024 09:33:22 -0000 1.25
+++ distinfo 4 Nov 2024 02:11:04 -0000
@@ -1,2 +1,2 @@
-SHA256 (libvpx-1.14.1.tar.gz) = kBdHJU2Ap5N8kz0DvXxdQejmyIPgZl+tyxclQhZ8eXc=
-SIZE (libvpx-1.14.1.tar.gz) = 5614104
+SHA256 (libvpx-1.15.0.tar.gz) = 6TXt7X2BYxpTi/rnA/0eKTqtHH/TQHugBEDJUQXSAR4=
+SIZE (libvpx-1.15.0.tar.gz) = 5629622
Index: patches/patch-build_make_Makefile
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/patches/patch-build_make_Makefile,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 patch-build_make_Makefile
--- patches/patch-build_make_Makefile 29 Feb 2024 09:43:31 -0000 1.18
+++ patches/patch-build_make_Makefile 4 Nov 2024 02:11:04 -0000
@@ -1,7 +1,7 @@
Index: build/make/Makefile
--- build/make/Makefile.orig
+++ build/make/Makefile
-@@ -333,9 +333,7 @@ define so_template
+@@ -335,9 +335,7 @@ define so_template
# This needs further abstraction for dealing with non-GNU linkers.
$(1):
$(if $(quiet),@echo " [LD] $$@")
@@ -12,7 +12,7 @@ Index: build/make/Makefile
-Wl,--version-script,$$(EXPORTS_FILE) -o $$@ \
$$(filter %.o,$$^) $$(extralibs)
endef
-@@ -420,7 +418,7 @@ LIBS=$(call enabled,LIBS)
+@@ -422,7 +420,7 @@ LIBS=$(call enabled,LIBS)
.libs: $(LIBS)
@touch $@
$(foreach lib,$(filter %_g.a,$(LIBS)),$(eval $(call archive_template,$(lib))))
Index: patches/patch-build_make_configure_sh
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/patches/patch-build_make_configure_sh,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 patch-build_make_configure_sh
--- patches/patch-build_make_configure_sh 22 Jun 2024 09:33:22 -0000 1.12
+++ patches/patch-build_make_configure_sh 4 Nov 2024 02:11:04 -0000
@@ -1,7 +1,7 @@
Index: build/make/configure.sh
--- build/make/configure.sh.orig
+++ build/make/configure.sh
-@@ -735,8 +735,8 @@ post_process_cmdline() {
+@@ -742,8 +742,8 @@ post_process_cmdline() {
}

setup_gnu_toolchain() {
@@ -12,7 +12,7 @@ Index: build/make/configure.sh
AR=${AR:-${CROSS}ar}
LD=${LD:-${CROSS}${link_with_cc:-ld}}
AS=${AS:-${CROSS}as}
-@@ -780,7 +780,7 @@ check_xcode_minimum_version() {
+@@ -786,7 +786,7 @@ check_xcode_minimum_version() {

process_common_toolchain() {
if [ -z "$toolchain" ]; then
@@ -21,7 +21,7 @@ Index: build/make/configure.sh
# detect tgt_isa
case "$gcctarget" in
aarch64*)
-@@ -1028,7 +1028,7 @@ EOF
+@@ -1042,7 +1042,7 @@ EOF
asm_conversion_cmd="cat"
case ${tgt_cc} in
gcc)
@@ -30,7 +30,7 @@ Index: build/make/configure.sh
setup_gnu_toolchain
arch_int=${tgt_isa##armv}
arch_int=${arch_int%%te}
-@@ -1275,7 +1275,7 @@ EOF
+@@ -1297,7 +1297,7 @@ EOF

;;
mips*)
@@ -39,7 +39,7 @@ Index: build/make/configure.sh
setup_gnu_toolchain
tune_cflags="-mtune="
if enabled dspr2; then
-@@ -1326,7 +1326,7 @@ EOF
+@@ -1348,7 +1348,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
-@@ -1383,7 +1383,7 @@ EOF
+@@ -1405,7 +1405,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
-@@ -1514,7 +1514,7 @@ EOF
+@@ -1536,7 +1536,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"'
-@@ -1523,7 +1523,7 @@ EOF
+@@ -1545,7 +1545,7 @@ EOF
enabled lasx && soft_enable runtime_cpu_detect
;;
*-gcc|generic-gnu)
Index: patches/patch-configure
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/patches/patch-configure,v
retrieving revision 1.26
diff -u -p -u -p -r1.26 patch-configure
--- patches/patch-configure 29 Feb 2024 09:43:31 -0000 1.26
+++ patches/patch-configure 4 Nov 2024 02:11:04 -0000
@@ -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
-@@ -560,7 +549,7 @@ process_detect() {
+@@ -562,7 +551,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-examples_mk
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/patches/patch-examples_mk,v
retrieving revision 1.12
diff -u -p -u -p -r1.12 patch-examples_mk
--- patches/patch-examples_mk 29 Feb 2024 09:43:31 -0000 1.12
+++ patches/patch-examples_mk 4 Nov 2024 02:11:04 -0000
@@ -1,7 +1,7 @@
Index: examples.mk
--- examples.mk.orig
+++ examples.mk
-@@ -333,7 +333,7 @@ else
+@@ -315,7 +315,7 @@ else
SHARED_LIB_SUF=.so
endif
endif
Index: patches/patch-vpx_ports_aarch32_cpudetect_c
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/patches/patch-vpx_ports_aarch32_cpudetect_c,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 patch-vpx_ports_aarch32_cpudetect_c
--- patches/patch-vpx_ports_aarch32_cpudetect_c 21 Aug 2024 05:42:20 -0000 1.2
+++ patches/patch-vpx_ports_aarch32_cpudetect_c 4 Nov 2024 02:11:04 -0000
@@ -7,8 +7,8 @@ Index: vpx_ports/aarch32_cpudetect.c
return flags;
}

--#elif defined(__linux__) // end defined(AOM_USE_ANDROID_CPU_FEATURES)
-+#elif defined(__linux__) || defined(__OpenBSD__) // end defined(AOM_USE_ANDROID_CPU_FEATURES)
+-#elif defined(__linux__) // end defined(VPX_USE_ANDROID_CPU_FEATURES)
++#elif defined(__linux__) || defined(__OpenBSD__) // end defined(VPX_USE_ANDROID_CPU_FEATURES)

#include <sys/auxv.h>

Index: patches/patch-vpx_ports_aarch64_cpudetect_c
===================================================================
RCS file: /cvs/ports/multimedia/libvpx/patches/patch-vpx_ports_aarch64_cpudetect_c,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 patch-vpx_ports_aarch64_cpudetect_c
--- patches/patch-vpx_ports_aarch64_cpudetect_c 21 Aug 2024 05:42:20 -0000 1.3
+++ patches/patch-vpx_ports_aarch64_cpudetect_c 4 Nov 2024 02:11:04 -0000
@@ -3,7 +3,7 @@ Add AArch64 CPU feature detection suppor
Index: vpx_ports/aarch64_cpudetect.c
--- vpx_ports/aarch64_cpudetect.c.orig
+++ vpx_ports/aarch64_cpudetect.c
-@@ -91,7 +91,7 @@ static int arm_get_cpu_caps(void) {
+@@ -120,7 +120,7 @@ static int arm_get_cpu_caps(void) {
return flags;
}

@@ -12,23 +12,24 @@ Index: vpx_ports/aarch64_cpudetect.c

#include <sys/auxv.h>

-@@ -103,9 +103,19 @@ static int arm_get_cpu_caps(void) {
-
+@@ -134,10 +134,20 @@ static int arm_get_cpu_caps(void) {
static int arm_get_cpu_caps(void) {
int flags = 0;
+ #if HAVE_NEON_DOTPROD || HAVE_SVE
+#ifdef __OpenBSD__
+ unsigned long hwcap = 0;
+ elf_aux_info(AT_HWCAP, &hwcap, sizeof(hwcap));
+#else
unsigned long hwcap = getauxval(AT_HWCAP);
+

No comments:

Post a Comment