Index | Thread | Search

From:
Brad Smith <brad@comstyle.com>
Subject:
Re: UPDATE: libvpx 1.15.0
To:
ports@openbsd.org
Date:
Wed, 20 Nov 2024 12:38:03 -0500

Download raw body.

Thread
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 <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.