[vlc-commits] [Git][videolan/vlc][master] contrib: libvpx: update to 1.14.0

Tristan Matthews (@tmatth) gitlab at videolan.org
Fri Jan 26 17:04:08 UTC 2024



Tristan Matthews pushed to branch master at VideoLAN / VLC


Commits:
1a007d1f by Tristan Matthews at 2024-01-26T10:59:33-05:00
contrib: libvpx: update to 1.14.0

This release drops support for old C compilers, such as Visual Studio 2012
  and older, that disallow mixing variable declarations and statements (a C99
  feature). It adds support for run-time CPU feature detection for Arm
  platforms, as well as support for darwin23 (macOS 14).

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

    Various new features for rate control library for real-time: SVC parallel
    encoding, loopfilter level, support for frame dropping, and screen content.

    New callback function send_tpl_gop_stats for vp9 external rate control
    library, which can be used to transmit TPL stats for a group of pictures. A
    public header vpx_tpl.h is added for the definition of TPL stats used in
    this callback.

    libwebm is upgraded to libwebm-1.0.0.29-9-g1930e3c.

  - Enhancement:
    Improvements on Neon optimizations: VoD: 12-35% speed up for bitdepth 8,
    68%-151% speed up for high bitdepth.
    Improvements on AVX2 and SSE optimizations.
    Improvements on LSX optimizations for LoongArch.
    42-49% speedup on speed 0 VoD encoding.
    Android API level predicates.

  - Bug fixes:
    Fix to missing prototypes from the rtcd header.
    Fix to segfault when total size is enlarged but width is smaller.
    Fix to the build for arm64ec using MSVC.
    Fix to copy BLOCK_8X8's mi to PICK_MODE_CONTEXT::mic.
    Fix to -Wshadow warnings.
    Fix to heap overflow in vpx_get4x4sse_cs_neon.
    Fix to buffer overrun in highbd Neon subpel variance filters.
    Added bitexact encode test script.
    Fix to -Wl,-z,defs with Clang's sanitizers.
    Fix to decoder stability after error & continued decoding.
    Fix to mismatch of VP9 encode with NEON intrinsics with C only version.
    Fix to Arm64 MSVC compile vpx_highbd_fdct4x4_neon.
    Fix to fragments count before use.
    Fix to a case where target bandwidth is 0 for SVC.
    Fix mask in vp9_quantize_avx2,highbd_get_max_lane_eob.
    Fix to int overflow in vp9_calc_pframe_target_size_one_pass_cbr.
    Fix to integer overflow in vp8,ratectrl.c.
    Fix to interger overflow in vp9 svc.
    Fix to avg_frame_bandwidth overflow.
    Fix to per frame qp for temporal layers.
    Fix to unsigned integer overflow in sse computation.
    Fix to uninitialized mesh feature for BEST mode.
    Fix to overflow in highbd temporal_filter.
    Fix to unaligned loads w/w==4 in vpx_convolve_copy_neon.
    Skip arm64_neon.h workaround w/VS >= 2019.
    Fix to c vs avx mismatch of diamond_search_sad().
    Fix to c vs intrinsic mismatch of vpx_hadamard_32x32() function.
    Fix to a bug in vpx_hadamard_32x32_neon().
    Fix to Clang -Wunreachable-code-aggressive warnings.
    Fix to a bug in vpx_highbd_hadamard_32x32_neon().
    Fix to -Wunreachable-code in mfqe_partition.
    Force mode search on 64x64 if no mode is selected.
    Fix to ubsan failure caused by left shift of negative.
    Fix to integer overflow in calc_pframe_target_size.
    Fix to float-cast-overflow in vp8_change_config().
    Fix to a null ptr before use.
    Conditionally skip using inter frames in speed features.
    Remove invalid reference frames.
    Disable intra mode search speed features conditionally.
    Set nonrd keyframe under dynamic change of deadline for rtc.
    Fix to scaled reference offsets.
    Set skip_recode=0 in nonrd_pick_sb_modes.
    Fix to an edge case when downsizing to one.
    Fix to a bug in frame scaling.
    Fix to pred buffer stride.
    Fix to a bug in simple motion search.
    Update frame size in actual encoding.

- - - - -


6 changed files:

- contrib/src/vpx/SHA512SUMS
- contrib/src/vpx/libvpx-android.patch
- contrib/src/vpx/libvpx-darwin-aarch64.patch
- contrib/src/vpx/libvpx-ios.patch
- contrib/src/vpx/libvpx-remove-bitcode.patch
- contrib/src/vpx/rules.mak


Changes:

=====================================
contrib/src/vpx/SHA512SUMS
=====================================
@@ -1 +1 @@
-49706838563c92fab7334376848d0f374efcbc1729ef511e967c908fd2ecd40e8d197f1d85da6553b3a7026bdbc17e5a76595319858af26ce58cb9a4c3854897  libvpx-1.13.1.tar.gz
+724150c5cafa934e0a8dd9aebbab8afd25aa4f584734e0de37837ec2e8bdcbd9390acd7f883665be7ecdc27af93afda737a4dea7e3bd7531abffcc5bb7c2c7d2  libvpx-1.14.0.tar.gz


=====================================
contrib/src/vpx/libvpx-android.patch
=====================================
@@ -1,17 +1,17 @@
-diff -ruw libvpx-1.13.0/vpx_ports/vpx_ports.mk libvpx-1.13.0-new/vpx_ports/vpx_ports.mk
---- libvpx-1.13.0/vpx_ports/vpx_ports.mk	2023-02-07 20:33:51.000000000 -0500
-+++ libvpx-1.13.0-new/vpx_ports/vpx_ports.mk	2023-03-24 11:42:44.133675374 -0400
-@@ -37,6 +37,7 @@
+diff -ruw libvpx-1.14.0/vpx_ports/vpx_ports.mk libvpx-1.14.0-new/vpx_ports/vpx_ports.mk
+--- libvpx-1.14.0/vpx_ports/vpx_ports.mk	2024-01-09 16:12:22.000000000 -0500
++++ libvpx-1.14.0-new/vpx_ports/vpx_ports.mk	2024-01-24 15:53:33.706974940 -0500
+@@ -42,6 +42,7 @@
+ PORTS_SRCS-$(VPX_ARCH_ARM) += aarch32_cpudetect.c
  endif
- 
- PORTS_SRCS-$(VPX_ARCH_ARM) += arm_cpudetect.c
+ PORTS_SRCS-$(VPX_ARCH_ARM) += arm_cpudetect.h
 +PORTS_SRCS-$(VPX_ARCH_ARM) += cpu-features.c
  PORTS_SRCS-$(VPX_ARCH_ARM) += arm.h
  
  PORTS_SRCS-$(VPX_ARCH_PPC) += ppc_cpudetect.c
-diff -ruw libvpx-1.13.0/vpx_ports/x86_abi_support.asm libvpx-1.13.0-new/vpx_ports/x86_abi_support.asm
---- libvpx-1.13.0/vpx_ports/x86_abi_support.asm	2023-03-24 11:46:57.104724909 -0400
-+++ libvpx-1.13.0-new/vpx_ports/x86_abi_support.asm	2023-03-24 11:47:48.824529092 -0400
+diff -ruw libvpx-1.14.0/vpx_ports/x86_abi_support.asm libvpx-1.14.0-new/vpx_ports/x86_abi_support.asm
+--- libvpx-1.14.0/vpx_ports/x86_abi_support.asm	2024-01-09 16:12:22.000000000 -0500
++++ libvpx-1.14.0-new/vpx_ports/x86_abi_support.asm	2024-01-24 15:52:25.911365246 -0500
 @@ -414,6 +414,7 @@
  
  ; On Android platforms use lrand48 when building postproc routines. Prior to L


=====================================
contrib/src/vpx/libvpx-darwin-aarch64.patch
=====================================
@@ -1,6 +1,6 @@
---- libvpx-1.13.0/build/make/configure.sh	2023-02-07 20:33:51.000000000 -0500
-+++ libvpx-1.13.0-new/build/make/configure.sh	2023-03-24 11:41:25.477967730 -0400
-@@ -1119,7 +1119,7 @@
+--- libvpx-1.14.0/build/make/configure.sh	2024-01-24 14:51:54.835698759 -0500
++++ libvpx-1.14.0-new/build/make/configure.sh	2024-01-24 14:54:28.595456073 -0500
+@@ -1146,7 +1146,7 @@
  
          darwin)
            if ! enabled external_build; then
@@ -9,7 +9,7 @@
              CXX="$(${XCRUN_FIND} clang++)"
              CC="$(${XCRUN_FIND} clang)"
              AR="$(${XCRUN_FIND} ar)"
-@@ -1138,7 +1138,7 @@
+@@ -1165,7 +1165,7 @@
              add_cflags -arch ${tgt_isa}
              add_ldflags -arch ${tgt_isa}
  


=====================================
contrib/src/vpx/libvpx-ios.patch
=====================================
@@ -1,11 +1,17 @@
---- libvpx-1.13.0/build/make/configure.sh	2023-02-07 20:33:51.000000000 -0500
-+++ libvpx-1.13.0-new/build/make/configure.sh	2023-03-24 11:22:57.841614048 -0400
-@@ -858,103 +858,6 @@
+--- libvpx-1.14.0/build/make/configure.sh	2024-01-09 16:12:22.000000000 -0500
++++ libvpx-1.14.0-new/build/make/configure.sh	2024-01-24 16:12:30.986695507 -0500
+@@ -863,109 +863,6 @@
        ;;
    esac
  
--  # PIC is probably what we want when building shared libs
+-  # Position independent code (PIC) is probably what we want when building
+-  # shared libs or position independent executable (PIE) targets.
 -  enabled shared && soft_enable pic
+-  check_cpp << EOF || soft_enable pic
+-#if !(__pie__ || __PIE__)
+-#error Neither __pie__ or __PIE__ are set
+-#endif
+-EOF
 -
 -  # Minimum iOS version for all target platforms (darwin and iphonesimulator).
 -  # Shared library framework builds are only possible on iOS 8 and later.
@@ -86,7 +92,7 @@
 -      add_cflags  "-mmacosx-version-min=10.15"
 -      add_ldflags "-mmacosx-version-min=10.15"
 -      ;;
--    *-darwin2[0-2]-*)
+-    *-darwin2[0-3]-*)
 -      add_cflags  "-arch ${toolchain%%-*}"
 -      add_ldflags "-arch ${toolchain%%-*}"
 -      ;;
@@ -104,7 +110,7 @@
    # Handle Solaris variants. Solaris 10 needs -lposix4
    case ${toolchain} in
      sparc-solaris-*)
-@@ -1143,12 +1046,6 @@
+@@ -1170,12 +1067,6 @@
                add_cflags -isysroot ${alt_libc}
              fi
  


=====================================
contrib/src/vpx/libvpx-remove-bitcode.patch
=====================================
@@ -1,6 +1,6 @@
---- libvpx-1.13.0/build/make/configure.sh	2023-02-07 20:33:51.000000000 -0500
-+++ libvpx-1.13.0-new/build/make/configure.sh	2023-03-24 11:19:11.230089669 -0400
-@@ -1166,12 +1166,6 @@
+--- libvpx-1.14.0/build/make/configure.sh	2024-01-24 15:55:34.070346026 -0500
++++ libvpx-1.14.0-new/build/make/configure.sh	2024-01-24 15:57:57.821681598 -0500
+@@ -1090,12 +1090,6 @@
                  fi
                  ;;
              esac


=====================================
contrib/src/vpx/rules.mak
=====================================
@@ -1,6 +1,6 @@
 # libvpx
 
-VPX_VERSION := 1.13.1
+VPX_VERSION := 1.14.0
 VPX_URL := $(GITHUB)/webmproject/libvpx/archive/v${VPX_VERSION}.tar.gz
 
 ifneq ($(filter arm aarch64 i386 loongarch64 mipsel mips64el ppc64le x86_64, $(ARCH)),)
@@ -122,6 +122,10 @@ ifdef HAVE_MACOSX
 VPX_CONF += --extra-cflags="$(CFLAGS) $(EXTRA_CFLAGS)"
 endif
 ifdef HAVE_IOS
+ifeq ($(ARCH),arm)
+# As of libvpx 1.14.0 we have to explicitly disable runtime CPU detection for iOS arm7
+VPX_CONF += --disable-runtime-cpu-detect
+endif
 VPX_CONF += --enable-vp8-decoder --disable-tools
 VPX_CONF += --extra-cflags="$(CFLAGS) $(EXTRA_CFLAGS)"
 VPX_LDFLAGS := -L$(IOS_SDK)/usr/lib -isysroot $(IOS_SDK) $(LDFLAGS)



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/1a007d1ffabae4a3cbc16283dd491720fbb79f1e

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/1a007d1ffabae4a3cbc16283dd491720fbb79f1e
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list