libsdl-org / SDL_mixer

An audio mixer that supports various file formats for Simple Directmedia Layer.
zlib License
432 stars 147 forks source link

upgrade vendored opus to v1.4 #513

Closed sezero closed 1 year ago

sezero commented 1 year ago

I created a v1.4-SDL branch in our https://github.com/libsdl-org/opus and pushed two build system commits (https://github.com/libsdl-org/opus/commit/c5de24a0eed333865d0fef5bdcd366796edc3ed5 and https://github.com/libsdl-org/opus/commit/bbf55398cd9059e406f1fb830908fcdbb257c5cf) to it. @madebr: Please check further for any cmake issues, and when all is resolved, I suggest upgrading SDL2 and SDL3 branches of SDL_mixer to v1.4.

sezero commented 1 year ago

My test commit to SDL2 branch seems to pass the CI runs. From the configuration log of Linux (CMake) run:

-- Using vendored opus
-- Found Git: /usr/bin/git (found version "2.40.0") 
fatal: No tags can describe 'bbf55398cd9059e406f1fb830908fcdbb257c5cf'.
Try --always, or create some tags.
-- Opus package version from package_version file: 1.4
-- Opus project version: 1.4
-- Performing Test VLA_SUPPORTED
-- Performing Test VLA_SUPPORTED -- success
-- Looking for alloca.h
-- Looking for alloca.h - found
-- Looking for alloca
-- Looking for alloca - found
-- Looking for floor in m
-- Looking for floor in m - found
-- Looking for lrintf
-- Looking for lrintf - found
-- Looking for lrint
-- Looking for lrint - found
-- Performing Test CPU_INFO_BY_ASM_SUPPORTED
-- Performing Test CPU_INFO_BY_ASM_SUPPORTED -- success
-- Looking for cpuid.h
-- Looking for cpuid.h - found
-- Performing Test CPU_INFO_BY_C_SUPPORTED
-- Performing Test CPU_INFO_BY_C_SUPPORTED -- success
-- Check SIMD support by compiler
-- Looking for xmmintrin.h
-- Looking for xmmintrin.h - found
-- Performing Test SSE1_SUPPORTED
-- Performing Test SSE1_SUPPORTED - Success
-- Looking for emmintrin.h
-- Looking for emmintrin.h - found
-- Performing Test SSE2_SUPPORTED
-- Performing Test SSE2_SUPPORTED - Success
-- Looking for smmintrin.h
-- Looking for smmintrin.h - found
-- Performing Test SSE4_1_SUPPORTED
-- Performing Test SSE4_1_SUPPORTED - Success
-- Looking for immintrin.h
-- Looking for immintrin.h - found
-- Performing Test AVX_SUPPORTED
-- Performing Test AVX_SUPPORTED - Success
-- Performing Test FAST_MATH_SUPPORTED
-- Performing Test FAST_MATH_SUPPORTED - Success
-- Performing Test STACK_PROTECTOR_SUPPORTED
-- Performing Test STACK_PROTECTOR_SUPPORTED - Success
-- Performing Test HIDDEN_VISIBILITY_SUPPORTED
-- Performing Test HIDDEN_VISIBILITY_SUPPORTED - Success
-- Performing Test Wall_SUPPORTED
-- Performing Test Wall_SUPPORTED - Success
-- Performing Test W_SUPPORTED
-- Performing Test W_SUPPORTED - Success
-- Performing Test Wstrictprototypes_SUPPORTED
-- Performing Test Wstrictprototypes_SUPPORTED - Success
-- Performing Test Wextra_SUPPORTED
-- Performing Test Wextra_SUPPORTED - Success
-- Performing Test Wcastalign_SUPPORTED
-- Performing Test Wcastalign_SUPPORTED - Success
-- Performing Test Wnestedexterns_SUPPORTED
-- Performing Test Wnestedexterns_SUPPORTED - Success
-- Performing Test Wshadow_SUPPORTED
-- Performing Test Wshadow_SUPPORTED - Success
-- The following features have been enabled:

 * OPUS_BUILD_SHARED_LIBRARY, build shared library.
 * OPUS_ENABLE_FLOAT_API, compile with the floating point API (for machines with float library).
 * OPUS_HARDENING, run-time checks that are cheap and safe for use in production.
 * OPUS_INSTALL_PKG_CONFIG_MODULE, install pkg-config module.
 * OPUS_INSTALL_CMAKE_CONFIG_MODULE, install CMake package config module.
 * OPUS_VAR_ARRAYS, use variable length arrays for stack arrays.
 * OPUS_STACK_PROTECTOR, use stack protection.
 * OPUS_FORTIFY_SOURCE, add protection against buffer overflows.
 * OPUS_X86_MAY_HAVE_SSE, does runtime check for SSE1 support.
 * OPUS_X86_MAY_HAVE_SSE2, does runtime check for SSE2 support.
 * OPUS_X86_MAY_HAVE_SSE4_1, does runtime check for SSE4.1 support.
 * OPUS_X86_MAY_HAVE_AVX, does runtime check for AVX support.
 * OPUS_X86_PRESUME_SSE, assume target CPU has SSE1 support (override runtime check).
 * OPUS_X86_PRESUME_SSE2, assume target CPU has SSE2 support (override runtime check).

-- The following OPTIONAL packages have been found:

 * Git

-- The following REQUIRED packages have been found:

 * PrivateSDL2 (required version >= 2.0.9)

-- The following features have been disabled:

 * OPUS_BUILD_TESTING, build tests.
 * OPUS_CUSTOM_MODES, enable non-Opus modes, e.g. 44.1 kHz & 2^n frames.
 * OPUS_BUILD_PROGRAMS, build programs.
 * OPUS_DISABLE_INTRINSICS, disable all intrinsics optimizations.
 * OPUS_FIXED_POINT, compile as fixed-point (for machines without a fast enough FPU).
 * OPUS_FLOAT_APPROX, enable floating point approximations (Ensure your platform supports IEEE 754 before enabling).
 * OPUS_ASSERTIONS, additional software error checking.
 * OPUS_FUZZING, causes the encoder to make random decisions (do not use in production).
 * OPUS_CHECK_ASM, enable bit-exactness checks between optimized and c implementations.
 * OPUS_FIXED_POINT_DEBUG, debug fixed-point implementation.
 * OPUS_USE_ALLOCA, use alloca for stack arrays (on non-C99 compilers).
 * OPUS_NONTHREADSAFE_PSEUDOSTACK, use a non threadsafe pseudostack when neither variable length arrays or alloca is supported.
 * OPUS_FAST_MATH, enable fast math (unsupported and discouraged use, as code is not well tested with this build option).
 * OPUS_X86_PRESUME_SSE4_1, assume target CPU has SSE4.1 support (override runtime check).
 * OPUS_X86_PRESUME_AVX, assume target CPU has AVX support (override runtime check).

If this is done, @slouken should update the windows binaries under the VisualC directory and make any necessary changes to Xcode project.

madebr commented 1 year ago

I've added a commit disabling version detection through git tags: https://github.com/libsdl-org/opus/commit/940c94b1ab2d9a953cb76f6cede7a279b48b656d

sezero commented 1 year ago

I've added a commit disabling version detection through git tags: libsdl-org/opus@940c94b

Does it still use the package_version file?

madebr commented 1 year ago

I've added a commit disabling version detection through git tags: libsdl-org/opus@940c94b

Does it still use the package_version file?

Yes. The one checking for package_version comes after the now-disabled one.

sezero commented 1 year ago

OK, I did the upgrade.

@slouken: remember to update the windows binaries under the VisualC directory and make any necessary changes to Xcode project.