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); +#endif - #if HAVE_NEON_I8MM + #endif // HAVE_NEON_DOTPROD || HAVE_SVE + #if HAVE_NEON_I8MM || HAVE_SVE2 +#ifdef __OpenBSD__ + unsigned long hwcap2 = 0; + elf_aux_info(AT_HWCAP2, &hwcap2, sizeof(hwcap2)); +#else unsigned long hwcap2 = getauxval(AT_HWCAP2); +#endif - #endif // HAVE_NEON_I8MM + #endif // HAVE_NEON_I8MM || HAVE_SVE2 #if HAVE_NEON flags |= HAS_NEON; // Neon is mandatory in Armv8.0-A.