From: Brad Smith Subject: Re: UPDATE: libvpx 1.15.0 To: ports@openbsd.org Date: Wed, 20 Nov 2024 12:38:03 -0500 ping. On 11/5/2024 12:34 AM, Brad Smith wrote: > 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 > > 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 > > -@@ -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.