# vim: set sw=4 ts=4 et nu: # # spec file for package webrtc-audio-processing # # Copyright (c) 2023 SUSE LLC # Copyright (c) 2012 Pascal Bleser # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define pkg_soname 1-3 %define soname 3 # Please submit bugfixes or comments via http://bugs.opensuse.org/ Name: webrtc-audio-processing Version: 1.3 Release: 3.3 Summary: Real-Time Communication Library for Web Browsers License: BSD-3-Clause Group: System/Libraries URL: https://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing/ Source: webrtc-audio-processing-%{version}.tar.xz Source1: baselibs.conf # PATCH-FIX-UPSTREAM fix-build.patch alarrosa@suse.com -- Fix a number of "control reaches end of non-void function" errors Patch0: fix-build.patch # PATCH-FIX-UPSTREAN big_endian_support.patch https://bugs.freedesktop.org/show_bug.cgi?id=95738 Patch1: big_endian_support.patch # PATCH-FIX-UPSTREAN big_endian_support.patch https://bugs.freedesktop.org/show_bug.cgi?id=95738 Patch2: big_endian_support_2.patch Patch3: fix-i586.patch # PATCH-FIX-OPENSUSE webrtc-(ppc64|s390x|aarch64).patch Patch100: webrtc-ppc64.patch Patch101: webrtc-s390x.patch # PATCH-FIX-OPENSUSE reduce-meson-dep.patch Patch102: reduce-meson-dep.patch BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: glibc-devel BuildRequires: libtool BuildRequires: make BuildRequires: meson >= 0.59.4 BuildRequires: pkgconfig BuildRequires: xz BuildRequires: cmake(absl) ExcludeArch: s390 s390x ppc64 %description WebRTC is an open source project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs. The WebRTC components have been optimized to best serve this purpose. WebRTC implements the W3C's proposal for video conferencing on the web. %package -n libwebrtc-audio-processing-%{pkg_soname} Summary: Real-Time Communication Library for Web Browsers Group: System/Libraries %description -n libwebrtc-audio-processing-%{pkg_soname} WebRTC is an open source project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs. The WebRTC components have been optimized to best serve this purpose. WebRTC implements the W3C's proposal for video conferencing on the web. %package -n libwebrtc-audio-processing-devel Summary: Real-Time Communication Library for Web Browsers Group: Development/Libraries/C and C++ Requires: libwebrtc-audio-processing-%{pkg_soname} = %{version} %description -n libwebrtc-audio-processing-devel WebRTC is an open source project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs. The WebRTC components have been optimized to best serve this purpose. WebRTC implements the W3C's proposal for video conferencing on the web. %package -n libwebrtc-audio-processing-devel-static Summary: Real-Time Communication Library for Web Browsers Group: Development/Libraries/C and C++ Requires: libwebrtc-audio-processing-devel = %{version} %description -n libwebrtc-audio-processing-devel-static WebRTC is an open source project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs. The WebRTC components have been optimized to best serve this purpose. WebRTC implements the W3C's proposal for video conferencing on the web. %package -n libwebrtc-audio-coding-%{pkg_soname} Summary: Real-Time Communication Library for Web Browsers Group: System/Libraries %description -n libwebrtc-audio-coding-%{pkg_soname} WebRTC is an open source project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs. The WebRTC components have been optimized to best serve this purpose. WebRTC implements the W3C's proposal for video conferencing on the web. %package -n libwebrtc-audio-coding-devel Summary: Real-Time Communication Library for Web Browsers Group: Development/Libraries/C and C++ Requires: libwebrtc-audio-coding-%{pkg_soname} = %{version} %description -n libwebrtc-audio-coding-devel WebRTC is an open source project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs. The WebRTC components have been optimized to best serve this purpose. WebRTC implements the W3C's proposal for video conferencing on the web. %package -n libwebrtc-audio-coding-devel-static Summary: Real-Time Communication Library for Web Browsers Group: Development/Libraries/C and C++ Requires: libwebrtc-audio-coding-devel = %{version} %description -n libwebrtc-audio-coding-devel-static WebRTC is an open source project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs. The WebRTC components have been optimized to best serve this purpose. WebRTC implements the W3C's proposal for video conferencing on the web. %prep %autosetup -p1 -N sed -i 's/\r$//' AUTHORS %patch -P 0 -p1 #%%patch -P 1 -p1 #%%patch -P 2 -p1 %patch -P 3 -p1 %patch -P 100 -p1 %patch -P 101 -p1 %patch -P 102 -p1 %build %global _lto_cflags %{_lto_cflags} -ffat-lto-objects %meson \ -Dc_std=gnu11 \ -Dcpp_std=gnu++17 \ -Ddefault_library=both \ -Dc_args="${CFLAGS} ${LDFLAGS}" \ -Dcpp_args="${CXXFLAGS} ${LDFLAGS}" \ %{nil} %meson_build %install %meson_install find %{buildroot} -type f -name "*.la" -delete -print %post -n libwebrtc-audio-processing-%{pkg_soname} -p /sbin/ldconfig %postun -n libwebrtc-audio-processing-%{pkg_soname} -p /sbin/ldconfig %post -n libwebrtc-audio-coding-%{pkg_soname} -p /sbin/ldconfig %postun -n libwebrtc-audio-coding-%{pkg_soname} -p /sbin/ldconfig %files -n libwebrtc-audio-processing-%{pkg_soname} %license COPYING %doc AUTHORS NEWS README.md UPDATING.md %{_libdir}/libwebrtc-audio-processing-1.so.%{soname}* %files -n libwebrtc-audio-processing-devel %{_includedir}/webrtc-audio-processing-1 %{_libdir}/libwebrtc-audio-processing-1.so %{_libdir}/pkgconfig/webrtc-audio-processing-1.pc %files -n libwebrtc-audio-processing-devel-static %{_libdir}/libwebrtc-audio-processing-1.a %files -n libwebrtc-audio-coding-%{pkg_soname} %license COPYING %doc AUTHORS NEWS README.md UPDATING.md %{_libdir}/libwebrtc-audio-coding-1.so.%{soname}* %files -n libwebrtc-audio-coding-devel %{_libdir}/libwebrtc-audio-coding-1.so %{_libdir}/pkgconfig/webrtc-audio-coding-1.pc %files -n libwebrtc-audio-coding-devel-static %{_libdir}/libwebrtc-audio-coding-1.a %changelog * Tue Feb 20 2024 Dominique Leuenberger - Use %%patch -P N instead of deprecated %%patchN. * Mon Oct 30 2023 Antonio Larrosa - ExcludeArch s390, s390x and ppc64 since big endian support is not implemented. * Wed Sep 20 2023 Antonio Larrosa - Remove the tar.xz file. Having the obscpio file is enough * Wed Sep 20 2023 Antonio Larrosa - Use also dashes instead of underscores in the manual Requires * Wed Sep 20 2023 Antonio Larrosa - Rename the generated library package names to add a dash between the name and soname (libwebrtc*-1-3 instead of libwebrtc*1-3) - Rename the generated packages to use dashes instead of underscores - Change baselibs.conf accordingly - Add patch to reduce the required meson version so the package builds in Leap 15.4/15.5: * reduce-meson-dep.patch * Fri Sep 8 2023 alarrosa@suse.com - Update to version 1.3: * build: Bump version to 1.3 * meson: Fix generation of pkgconfig files * build: Bump version to 1.2 * meson: Update minimum version based on what abseil wrap needs * build: Expose absl as a dependency of webrtc-audio-processing * meson: Update to latest wrap, install required absl headers * doc: Update tarball generation process * file_utils.h: Fix build with gcc-13 * meson: Fixes for MSVC build * meson: Ensure that abseil is built with c++17 too * More changes not listed by upstream. Check the following link to see them: https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/commits/v1.3 - Add patch that fixes some compiler "control reaches end of non-void function" errors: * fix-build.patch - Add patch that fixes i586 build: * fix-i586.patch - Disable patches until they're rebased to the current codebase: * big_endian_support.patch * big_endian_support_2.patch - Rebased patches: * webrtc-ppc64.patch * webrtc-s390x.patch * Mon Aug 17 2020 Dirk Mueller - update to 0.3.1: * doc: file invalid reference to pulseaudio mailing list * various build system fixes - spec-cleaner run * Fri Aug 2 2019 Martin Liška - Use FAT LTO objects in order to provide proper static library. * Thu Jan 12 2017 olaf@aepfle.de - Add baselibs.conf for gstreamer-plugins-bad-32bit * Sat Jun 25 2016 oholecek@suse.com - Remove webrtc-aarch64.patch, no longer needed - Adapt the rest of webrtc- patches to new arch naming * Thu Jun 23 2016 oholecek@suse.com - Remove unneeded explicit version dependency for automake * Wed Jun 22 2016 oholecek@suse.com - Update to 0.3 * build: enforce linking with --no-undefined, add explicit -lpthread * build: Make sure files with SSE2 code are compiled with -msse2 - Remove no-undefined.patch - Remove webrtc-audio-processing-0.2-x86_msse2.patch * Mon Jun 20 2016 oholecek@suse.com - Add no-undefined.patch patch https://cgit.freedesktop.org/pulseaudio/webrtc-audio-processing/patch/?id=d58164e4d87854233564b59e76259b72e21507f6 - Add big_endian_support_2.patch https://bugs.freedesktop.org/show_bug.cgi?id=95738 - Adapt webrtc-audio-processing-0.2-x86_msse2.patch to new version - Adapt big_endian_support.patch to new version * Mon May 30 2016 oholecek@suse.com - Add webrtc-audio-processing-0.2-x86_msse2.patch patch fixing 386 build https://lists.freedesktop.org/archives/pulseaudio-discuss/2016-May/026294.html - Add big_endian_support.patch https://bugs.freedesktop.org/show_bug.cgi?id=95738 - New automake version dependency >= 1.5 * Thu May 26 2016 oholecek@suse.com - Update to 0.2: Contains API breaking changes. Upstream changes include: * Rewritten AGC and voice activity detection * Intelligibility enhancer * Extended AEC filter * Beamformer * Transient suppressor * ARM, NEON and MIPS optimisations (MIPS optimisations are not hooked up) API changes: * We no longer include a top-level audio_processing.h. The webrtc tree format is used, so use webrtc/modules/audio_processing/include/audio_processing.h * The top-level module_common_types.h has also been moved to webrtc/modules/interface/module_common_types.h * C++11 support is now required while compiling client code * AudioProcessing::Create() does not take any arguments any more * AudioProcessing::Destroy() is gone, use standard C++ "delete" instead * Stream parameters are now configured via StreamConfig and ProcessingConfig rather than set_sample_rate(), set_num_channels(), etc. * AudioFrame field names have changed * Use config API for newer audio processing options * Use ProcessReverseStream() instead of AnalyzeReverseStream(), particularly when using the intelligibility enhancer * GainControl::set_analog_level_limits() is broken. The AGC implementation hard codes 0-255 as the volume range Other notes: * The new audio processing parameters are not all tested, and a few are not enabled upstream (in Chromium) either * The rewritten AGC appears to be less sensitive, and it might make sense to initialise the capture volume to something reasonable (33%% or 50%%, for example) to make sure there is sufficient energy in the stream to trigger the AGC mechanism - Adapted all 3 arch patches * Thu Mar 7 2013 idonmez@suse.com - Add patch webrtc-aarch64.patch from algraf to add aarch64 support * Wed Dec 19 2012 ro@suse.de - add s390 and s390x to known platforms by adding webrtc-s390x.patch * Tue Jul 3 2012 dvaleev@suse.com - add ppc64 to known platforms * Tue May 15 2012 pascal.bleser@opensuse.org - initial version (0.1)