ok On Sun, 15 Feb 2026 at 03:28, Brad Smith <[email protected]> wrote:
> Here is an update to OpenAL 1.25.1. > > > openal-soft-1.25.1: > > Fixed the OpenSL and JACK backends. > > Fixed WASAPI and CoreAudio capture. > > Fixed building the OSS backend with OSS v4. > > Fixed a debug assertion with HRTF enabled. > > Fixed an STL hardening assertion in the polyphase resampler with > certain > resampling ratios. > > Added a new stereo-encoding option for Tetraphonic Surround Matrix > Encoding. > > openal-soft-1.25.0: > > Updated library codebase to C++20. > > Fixed alcIsExtensionPresent to do a case-insensitive compare. > > Fixed potential noise when switching reverbs. > > Fixed reverb panning with certain output modes. > > Fixed retrieving the alGetProcAddressDirect extension function. > > Fixed negative source offsets with a callback buffer. > > Fixed a memory issue that could occur in rare situations with looping > sources. > > Fixed compiling for and running on older macOS versions. > > Fixed using unicode in environment variable values on Windows. > > Fixed memory alignment issues with 32-bit MinGW builds. > > Fixed a crash in sofa-info with SOFA files that have null strings. > > Updated alsoft-config to Qt6. > > Added build options for STL hardening. Performant checks meant for > production are enabled by default. > > Added support for fourth-order ambisonics. > > Added support for CAF files to the Wave Writer backend. > > Added optional support for C++20 modules. These are intended to be > copied > into projects wishing to use them, since modules depend on being built > with > compatible compile flags as the sources they're imported into. > > Added a .note.dlopen section to ELF shared library builds to record > dynamic > dependencies for build maintainers. > > Converted the headers to XML files, which are used to generate the > headers > (and modules) with a script. Other scripts can be made to generate > bindings > for various other languages. > > Changed AL_PANNING_ENABLED_SOFT to allow being toggled on playing > sources. > > Changed the default period size to 512 sample frames. > > Changed the default Super Stereo width to 0.46. > > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/audio/openal/Makefile,v > retrieving revision 1.71 > diff -u -p -u -p -r1.71 Makefile > --- Makefile 13 Feb 2026 12:02:13 -0000 1.71 > +++ Makefile 15 Feb 2026 03:19:24 -0000 > @@ -1,6 +1,6 @@ > COMMENT = cross-platform 3D audio API > > -V = 1.24.3 > +V = 1.25.1 > DISTNAME = openal-soft-$V > PKGNAME = openal-$V > EPOCH = 0 > @@ -8,9 +8,9 @@ CATEGORIES = audio > > SHARED_LIBS = openal 6.0 > > -HOMEPAGE = http://openal-soft.org/ > +HOMEPAGE = https://openal-soft.org/ > > -SITES = > https://github.com/kcat/openal-soft/releases/download/$V/ > +SITES = ${HOMEPAGE}openal-releases/ > EXTRACT_SUFX = .tar.bz2 > > MAINTAINER = David Carlier <[email protected]> > @@ -18,9 +18,9 @@ MAINTAINER = David Carlier <devnexen@gma > # LGPLv2+ > PERMIT_PACKAGE =Yes > > -WANTLIB += c m mysofa pthread sndio z ${COMPILER_LIBCXX} > +WANTLIB += c m mysofa pthread sndio ${COMPILER_LIBCXX} > > -LIB_DEPENDS += audio/libmysofa>=1.3.3 > +LIB_DEPENDS += audio/libmysofa > > CONFIGURE_ARGS =-DALSOFT_BACKEND_PIPEWIRE=Off \ > -DALSOFT_BACKEND_WAVE=Off \ > Index: distinfo > =================================================================== > RCS file: /cvs/ports/audio/openal/distinfo,v > retrieving revision 1.18 > diff -u -p -u -p -r1.18 distinfo > --- distinfo 18 Nov 2025 12:12:48 -0000 1.18 > +++ distinfo 15 Feb 2026 03:19:24 -0000 > @@ -1,2 +1,2 @@ > -SHA256 (openal-soft-1.24.3.tar.bz2) = > y15hl6HA2g7c8qgQJJU8yPqFRcO5R05IyFKvcJ1YeJI= > -SIZE (openal-soft-1.24.3.tar.bz2) = 1025568 > +SHA256 (openal-soft-1.25.1.tar.bz2) = > TCr/b4GXX0bsxRSNCSxJSMcdv7duS5ukvx/OKH9H1LU= > +SIZE (openal-soft-1.25.1.tar.bz2) = 1119330 > Index: patches/patch-CMakeLists_txt > =================================================================== > RCS file: /cvs/ports/audio/openal/patches/patch-CMakeLists_txt,v > retrieving revision 1.17 > diff -u -p -u -p -r1.17 patch-CMakeLists_txt > --- patches/patch-CMakeLists_txt 18 Nov 2025 12:12:48 -0000 > 1.17 > +++ patches/patch-CMakeLists_txt 15 Feb 2026 03:19:24 -0000 > @@ -1,25 +1,7 @@ > Index: CMakeLists.txt > --- CMakeLists.txt.orig > +++ CMakeLists.txt > -@@ -165,7 +165,7 @@ add_subdirectory(fmt-11.1.1 EXCLUDE_FROM_ALL) > - set(CPP_DEFS ) # C pre-processor, not C++ > - set(INC_PATHS ) > - set(C_FLAGS ) > --set(LINKER_FLAGS ) > -+set(LINKER_FLAGS > $<$<AND:$<CXX_COMPILER_ID:GNU>,$<VERSION_LESS:$<CXX_COMPILER_VERSION>,9.0>>:stdc++fs>) > - set(LINKER_FLAGS_DEBUG ) > - set(LINKER_FLAGS_RELEASE ) > - set(EXTRA_LIBS ) > -@@ -1402,7 +1402,7 @@ target_include_directories(alsoft.common PRIVATE > ${Ope > - PUBLIC ${OpenAL_BINARY_DIR} ${OpenAL_SOURCE_DIR}/common) > - target_compile_definitions(alsoft.common PRIVATE ${CPP_DEFS}) > - target_compile_options(alsoft.common PRIVATE ${C_FLAGS}) > --target_link_libraries(alsoft.common PRIVATE alsoft::fmt) > -+target_link_libraries(alsoft.common PRIVATE ${LINKER_FLAGS} alsoft::fmt) > - set_target_properties(alsoft.common PROPERTIES > ${ALSOFT_STD_VERSION_PROPS} > - POSITION_INDEPENDENT_CODE TRUE) > - > -@@ -1676,7 +1676,7 @@ endif() > +@@ -1883,7 +1883,7 @@ endif() > > if(ALSOFT_INSTALL_CONFIG) > install(FILES alsoftrc.sample > Index: patches/patch-al_auxeffectslot_cpp > =================================================================== > RCS file: patches/patch-al_auxeffectslot_cpp > diff -N patches/patch-al_auxeffectslot_cpp > --- patches/patch-al_auxeffectslot_cpp 18 Nov 2025 12:12:48 -0000 1.2 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,18 +0,0 @@ > -gcc8: error: expression '<throw-expression>' is not a constant expression > - > -Index: al/auxeffectslot.cpp > ---- al/auxeffectslot.cpp.orig > -+++ al/auxeffectslot.cpp > -@@ -241,9 +241,10 @@ constexpr auto EffectSlotTypeFromEnum(ALenum type) > noe > - case AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT: return > EffectSlotType::Dedicated; > - case AL_EFFECT_DEDICATED_DIALOGUE: return EffectSlotType::Dedicated; > - case AL_EFFECT_CONVOLUTION_SOFT: return EffectSlotType::Convolution; > -+ default: > -+ ERR("Unhandled effect enum: {:#04x}", as_unsigned(type)); > -+ return EffectSlotType::None; > - } > -- ERR("Unhandled effect enum: {:#04x}", as_unsigned(type)); > -- return EffectSlotType::None; > - } > - > - [[nodiscard]] > Index: patches/patch-al_buffer_cpp > =================================================================== > RCS file: patches/patch-al_buffer_cpp > diff -N patches/patch-al_buffer_cpp > --- patches/patch-al_buffer_cpp 29 Apr 2025 12:50:31 -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,33 +0,0 @@ > -gcc8: error: expression '<throw-expression>' is not a constant expression > - > -Index: al/buffer.cpp > ---- al/buffer.cpp.orig > -+++ al/buffer.cpp > -@@ -87,9 +87,10 @@ constexpr auto EnumFromAmbiLayout(AmbiLayout layout) - > - { > - case AmbiLayout::FuMa: return AL_FUMA_SOFT; > - case AmbiLayout::ACN: return AL_ACN_SOFT; > -+ default: > -+ throw std::runtime_error{fmt::format("Invalid AmbiLayout: {}", > -+ int{al::to_underlying(layout)})}; > - } > -- throw std::runtime_error{fmt::format("Invalid AmbiLayout: {}", > -- int{al::to_underlying(layout)})}; > - } > - > - constexpr auto AmbiScalingFromEnum(ALenum scale) noexcept -> > std::optional<AmbiScaling> > -@@ -109,10 +110,11 @@ constexpr auto EnumFromAmbiScaling(AmbiScaling > scale) > - case AmbiScaling::FuMa: return AL_FUMA_SOFT; > - case AmbiScaling::SN3D: return AL_SN3D_SOFT; > - case AmbiScaling::N3D: return AL_N3D_SOFT; > -- case AmbiScaling::UHJ: break; > -+ case AmbiScaling::UHJ: > -+ default: > -+ throw std::runtime_error{fmt::format("Invalid AmbiScaling: {}", > -+ int{al::to_underlying(scale)})}; > - } > -- throw std::runtime_error{fmt::format("Invalid AmbiScaling: {}", > -- int{al::to_underlying(scale)})}; > - } > - > - #if ALSOFT_EAX > Index: patches/patch-al_debug_cpp > =================================================================== > RCS file: patches/patch-al_debug_cpp > diff -N patches/patch-al_debug_cpp > --- patches/patch-al_debug_cpp 29 Apr 2025 12:50:31 -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,44 +0,0 @@ > -gcc8: error: expression '<throw-expression>' is not a constant expression > - > -Index: al/debug.cpp > ---- al/debug.cpp.orig > -+++ al/debug.cpp > -@@ -109,9 +109,10 @@ constexpr auto GetDebugSourceEnum(DebugSource > source) > - case DebugSource::ThirdParty: return AL_DEBUG_SOURCE_THIRD_PARTY_EXT; > - case DebugSource::Application: return > AL_DEBUG_SOURCE_APPLICATION_EXT; > - case DebugSource::Other: return AL_DEBUG_SOURCE_OTHER_EXT; > -+ default: > -+ throw std::runtime_error{fmt::format("Unexpected debug source > value: {}", > -+ int{al::to_underlying(source)})}; > - } > -- throw std::runtime_error{fmt::format("Unexpected debug source value: > {}", > -- int{al::to_underlying(source)})}; > - } > - > - constexpr auto GetDebugTypeEnum(DebugType type) -> ALenum > -@@ -127,9 +128,10 @@ constexpr auto GetDebugTypeEnum(DebugType type) -> > ALe > - case DebugType::PushGroup: return AL_DEBUG_TYPE_PUSH_GROUP_EXT; > - case DebugType::PopGroup: return AL_DEBUG_TYPE_POP_GROUP_EXT; > - case DebugType::Other: return AL_DEBUG_TYPE_OTHER_EXT; > -+ default: > -+ throw std::runtime_error{fmt::format("Unexpected debug type > value: {}", > -+ int{al::to_underlying(type)})}; > - } > -- throw std::runtime_error{fmt::format("Unexpected debug type value: > {}", > -- int{al::to_underlying(type)})}; > - } > - > - constexpr auto GetDebugSeverityEnum(DebugSeverity severity) -> ALenum > -@@ -140,9 +142,10 @@ constexpr auto GetDebugSeverityEnum(DebugSeverity > seve > - case DebugSeverity::Medium: return AL_DEBUG_SEVERITY_MEDIUM_EXT; > - case DebugSeverity::Low: return AL_DEBUG_SEVERITY_LOW_EXT; > - case DebugSeverity::Notification: return > AL_DEBUG_SEVERITY_NOTIFICATION_EXT; > -+ default: > -+ throw std::runtime_error{fmt::format("Unexpected debug severity > value: {}", > -+ int{al::to_underlying(severity)})}; > - } > -- throw std::runtime_error{fmt::format("Unexpected debug severity > value: {}", > -- int{al::to_underlying(severity)})}; > - } > - > - > Index: patches/patch-al_effects_chorus_cpp > =================================================================== > RCS file: patches/patch-al_effects_chorus_cpp > diff -N patches/patch-al_effects_chorus_cpp > --- patches/patch-al_effects_chorus_cpp 18 Nov 2025 12:12:48 -0000 1.2 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,18 +0,0 @@ > -gcc8: error: expression '<throw-expression>' is not a constant expression > - > -Index: al/effects/chorus.cpp > ---- al/effects/chorus.cpp.orig > -+++ al/effects/chorus.cpp > -@@ -43,9 +43,10 @@ constexpr ALenum EnumFromWaveform(ChorusWaveform type) > - { > - case ChorusWaveform::Sinusoid: return AL_CHORUS_WAVEFORM_SINUSOID; > - case ChorusWaveform::Triangle: return AL_CHORUS_WAVEFORM_TRIANGLE; > -+ default: > -+ throw std::runtime_error{fmt::format("Invalid chorus waveform: > {}", > -+ int{al::to_underlying(type)})}; > - } > -- throw std::runtime_error{fmt::format("Invalid chorus waveform: {}", > -- int{al::to_underlying(type)})}; > - } > - > - constexpr EffectProps genDefaultChorusProps() noexcept > Index: patches/patch-al_effects_fshifter_cpp > =================================================================== > RCS file: patches/patch-al_effects_fshifter_cpp > diff -N patches/patch-al_effects_fshifter_cpp > --- patches/patch-al_effects_fshifter_cpp 29 Apr 2025 12:50:31 > -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,16 +0,0 @@ > -gcc8: error: expression '<throw-expression>' is not a constant expression > - > -Index: al/effects/fshifter.cpp > ---- al/effects/fshifter.cpp.orig > -+++ al/effects/fshifter.cpp > -@@ -39,8 +39,9 @@ constexpr ALenum EnumFromDirection(FShifterDirection d > - case FShifterDirection::Down: return > AL_FREQUENCY_SHIFTER_DIRECTION_DOWN; > - case FShifterDirection::Up: return AL_FREQUENCY_SHIFTER_DIRECTION_UP; > - case FShifterDirection::Off: return > AL_FREQUENCY_SHIFTER_DIRECTION_OFF; > -+ default: > -+ throw std::runtime_error{fmt::format("Invalid direction: {}", > int{al::to_underlying(dir)})}; > - } > -- throw std::runtime_error{fmt::format("Invalid direction: {}", > int{al::to_underlying(dir)})}; > - } > - > - constexpr EffectProps genDefaultProps() noexcept > Index: patches/patch-al_effects_modulator_cpp > =================================================================== > RCS file: patches/patch-al_effects_modulator_cpp > diff -N patches/patch-al_effects_modulator_cpp > --- patches/patch-al_effects_modulator_cpp 29 Apr 2025 12:50:31 > -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,18 +0,0 @@ > -gcc8: error: expression '<throw-expression>' is not a constant expression > - > -Index: al/effects/modulator.cpp > ---- al/effects/modulator.cpp.orig > -+++ al/effects/modulator.cpp > -@@ -39,9 +39,10 @@ constexpr ALenum EnumFromWaveform(ModulatorWaveform ty > - case ModulatorWaveform::Sinusoid: return AL_RING_MODULATOR_SINUSOID; > - case ModulatorWaveform::Sawtooth: return AL_RING_MODULATOR_SAWTOOTH; > - case ModulatorWaveform::Square: return AL_RING_MODULATOR_SQUARE; > -+ default: > -+ throw std::runtime_error{fmt::format("Invalid modulator > waveform: {}", > -+ int{al::to_underlying(type)})}; > - } > -- throw std::runtime_error{fmt::format("Invalid modulator waveform: > {}", > -- int{al::to_underlying(type)})}; > - } > - > - constexpr EffectProps genDefaultProps() noexcept > Index: patches/patch-al_effects_vmorpher_cpp > =================================================================== > RCS file: patches/patch-al_effects_vmorpher_cpp > diff -N patches/patch-al_effects_vmorpher_cpp > --- patches/patch-al_effects_vmorpher_cpp 29 Apr 2025 12:50:31 > -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,29 +0,0 @@ > -gcc8: error: expression '<throw-expression>' is not a constant expression > - > -Index: al/effects/vmorpher.cpp > ---- al/effects/vmorpher.cpp.orig > -+++ al/effects/vmorpher.cpp > -@@ -96,8 +96,9 @@ constexpr ALenum EnumFromPhenome(VMorpherPhenome pheno > - HANDLE_PHENOME(T); > - HANDLE_PHENOME(V); > - HANDLE_PHENOME(Z); > -+ default: > -+ throw std::runtime_error{fmt::format("Invalid phenome: {}", > int{al::to_underlying(phenome)})}; > - } > -- throw std::runtime_error{fmt::format("Invalid phenome: {}", > int{al::to_underlying(phenome)})}; > - #undef HANDLE_PHENOME > - } > - > -@@ -118,9 +119,10 @@ constexpr ALenum EnumFromWaveform(VMorpherWaveform > typ > - case VMorpherWaveform::Sinusoid: return > AL_VOCAL_MORPHER_WAVEFORM_SINUSOID; > - case VMorpherWaveform::Triangle: return > AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE; > - case VMorpherWaveform::Sawtooth: return > AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH; > -+ default: > -+ throw std::runtime_error{fmt::format("Invalid vocal morpher > waveform: {}", > -+ int{al::to_underlying(type)})}; > - } > -- throw std::runtime_error{fmt::format("Invalid vocal morpher > waveform: {}", > -- int{al::to_underlying(type)})}; > - } > - > - constexpr EffectProps genDefaultProps() noexcept > Index: patches/patch-al_state_cpp > =================================================================== > RCS file: patches/patch-al_state_cpp > diff -N patches/patch-al_state_cpp > --- patches/patch-al_state_cpp 18 Nov 2025 12:12:48 -0000 1.2 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,16 +0,0 @@ > -gcc8: error: expression '<throw-expression>' is not a constant expression > - > -Index: al/state.cpp > ---- al/state.cpp.orig > -+++ al/state.cpp > -@@ -146,8 +146,9 @@ constexpr auto ALenumFromDistanceModel(DistanceModel m > - case DistanceModel::LinearClamped: return AL_LINEAR_DISTANCE_CLAMPED; > - case DistanceModel::Exponent: return AL_EXPONENT_DISTANCE; > - case DistanceModel::ExponentClamped: return > AL_EXPONENT_DISTANCE_CLAMPED; > -+ default: > -+ throw std::runtime_error{"Unexpected distance model > "+std::to_string(static_cast<int>(model))}; > - } > -- throw std::runtime_error{"Unexpected distance model > "+std::to_string(static_cast<int>(model))}; > - } > - > - enum PropertyValue : ALenum { > Index: patches/patch-alc_alconfig_cpp > =================================================================== > RCS file: /cvs/ports/audio/openal/patches/patch-alc_alconfig_cpp,v > retrieving revision 1.6 > diff -u -p -u -p -r1.6 patch-alc_alconfig_cpp > --- patches/patch-alc_alconfig_cpp 29 Jan 2025 10:59:26 -0000 1.6 > +++ patches/patch-alc_alconfig_cpp 15 Feb 2026 03:19:24 -0000 > @@ -1,12 +1,12 @@ > Index: alc/alconfig.cpp > --- alc/alconfig.cpp.orig > +++ alc/alconfig.cpp > -@@ -381,7 +381,7 @@ void ReadALConfig() > +@@ -426,7 +426,7 @@ void ReadALConfig() > > void ReadALConfig() > { > -- fs::path path{"/etc/openal/alsoft.conf"}; > -+ fs::path path{"${SYSCONFDIR}/openal/alsoft.conf"}; > +- auto path = fs::path{"/etc/openal/alsoft.conf"}; > ++ auto path = fs::path{"${SYSCONFDIR}/openal/alsoft.conf"}; > > TRACE("Loading config {}...", al::u8_as_char(path.u8string())); > - if(fs::ifstream f{path}; f.is_open()) > + if(auto f = fs::ifstream{path}; f.is_open()) > Index: patches/patch-alc_effects_reverb_cpp > =================================================================== > RCS file: patches/patch-alc_effects_reverb_cpp > diff -N patches/patch-alc_effects_reverb_cpp > --- patches/patch-alc_effects_reverb_cpp 29 Apr 2025 12:50:31 > -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,16 +0,0 @@ > -gcc8 is too old for std::reduce > - > -Index: alc/effects/reverb.cpp > ---- alc/effects/reverb.cpp.orig > -+++ alc/effects/reverb.cpp > -@@ -931,8 +931,8 @@ void EarlyReflections::updateLines(const float density > - /* Calculate the gain (coefficient) for the secondary reflections > based on > - * the average delay and decay time. > - */ > -- const auto length = std::reduce(EARLY_LINE_LENGTHS.begin(), > EARLY_LINE_LENGTHS.end(), 0.0f) > -- / float{EARLY_LINE_LENGTHS.size()} * density_mult; > -+ const auto length = std::accumulate(EARLY_LINE_LENGTHS.begin(), > EARLY_LINE_LENGTHS.end(), 0.0f) > -+ / static_cast<float>(EARLY_LINE_LENGTHS.size()) * density_mult; > - Coeff = CalcDecayCoeff(length, decayTime); > - > - } > Index: patches/patch-fmt-11_1_1_CMakeLists_txt > =================================================================== > RCS file: patches/patch-fmt-11_1_1_CMakeLists_txt > diff -N patches/patch-fmt-11_1_1_CMakeLists_txt > --- patches/patch-fmt-11_1_1_CMakeLists_txt 29 Apr 2025 12:50:31 > -0000 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,14 +0,0 @@ > -gcc8: undefined reference to > `std::filesystem::__cxx11::path::_M_split_cmpts()' > - > -Index: fmt-11.1.1/CMakeLists.txt > ---- fmt-11.1.1/CMakeLists.txt.orig > -+++ fmt-11.1.1/CMakeLists.txt > -@@ -61,6 +61,8 @@ set(FMT_SOURCES src/format.cc src/os.cc) > - add_library(alsoft.fmt OBJECT ${FMT_SOURCES} ${FMT_HEADERS} README.md > ChangeLog.md) > - add_library(alsoft::fmt ALIAS alsoft.fmt) > - > -+target_link_libraries(alsoft.fmt PRIVATE > $<$<AND:$<CXX_COMPILER_ID:GNU>,$<VERSION_LESS:$<CXX_COMPILER_VERSION>,9.0>>:stdc++fs>) > -+ > - if (cxx_std_11 IN_LIST CMAKE_CXX_COMPILE_FEATURES) > - target_compile_features(alsoft.fmt PUBLIC cxx_std_11) > - else () >
