Sync from SUSE:SLFO:Main webrtc-audio-processing-0 revision 50bed665ff886f41a6b8a88c0523b1c9

This commit is contained in:
Adrian Schröter 2024-05-04 01:52:29 +02:00
commit cc396a0dcc
9 changed files with 436 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
baselibs.conf Normal file
View File

@ -0,0 +1 @@
libwebrtc_audio_processing1

90
big_endian_support.patch Normal file
View File

@ -0,0 +1,90 @@
diff -up webrtc-audio-processing-0.2/webrtc/common_audio/wav_file.cc.than webrtc-audio-processing-0.2/webrtc/common_audio/wav_file.cc
--- webrtc-audio-processing-0.2/webrtc/common_audio/wav_file.cc.than 2016-05-24 08:28:45.749940095 -0400
+++ webrtc-audio-processing-0.2/webrtc/common_audio/wav_file.cc 2016-05-24 08:50:30.361020010 -0400
@@ -64,9 +64,6 @@ WavReader::~WavReader() {
}
size_t WavReader::ReadSamples(size_t num_samples, int16_t* samples) {
-#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
-#error "Need to convert samples to big-endian when reading from WAV file"
-#endif
// There could be metadata after the audio; ensure we don't read it.
num_samples = std::min(rtc::checked_cast<uint32_t>(num_samples),
num_samples_remaining_);
@@ -76,6 +73,12 @@ size_t WavReader::ReadSamples(size_t num
RTC_CHECK(read == num_samples || feof(file_handle_));
RTC_CHECK_LE(read, num_samples_remaining_);
num_samples_remaining_ -= rtc::checked_cast<uint32_t>(read);
+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
+ //convert to big-endian
+ for(size_t idx = 0; idx < num_samples; idx++) {
+ samples[idx] = (samples[idx]<<8) | (samples[idx]>>8);
+ }
+#endif
return read;
}
@@ -120,10 +123,17 @@ WavWriter::~WavWriter() {
void WavWriter::WriteSamples(const int16_t* samples, size_t num_samples) {
#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
-#error "Need to convert samples to little-endian when writing to WAV file"
-#endif
+ int16_t * le_samples = new int16_t[num_samples];
+ for(size_t idx = 0; idx < num_samples; idx++) {
+ le_samples[idx] = (samples[idx]<<8) | (samples[idx]>>8);
+ }
+ const size_t written =
+ fwrite(le_samples, sizeof(*le_samples), num_samples, file_handle_);
+ delete []le_samples;
+#else
const size_t written =
fwrite(samples, sizeof(*samples), num_samples, file_handle_);
+#endif
RTC_CHECK_EQ(num_samples, written);
num_samples_ += static_cast<uint32_t>(written);
RTC_CHECK(written <= std::numeric_limits<uint32_t>::max() ||
diff -up webrtc-audio-processing-0.2/webrtc/common_audio/wav_header.cc.than webrtc-audio-processing-0.2/webrtc/common_audio/wav_header.cc
--- webrtc-audio-processing-0.2/webrtc/common_audio/wav_header.cc.than 2016-05-24 08:50:52.591379263 -0400
+++ webrtc-audio-processing-0.2/webrtc/common_audio/wav_header.cc 2016-05-24 08:52:08.552606848 -0400
@@ -129,7 +129,39 @@ static inline std::string ReadFourCC(uin
return std::string(reinterpret_cast<char*>(&x), 4);
}
#else
-#error "Write be-to-le conversion functions"
+static inline void WriteLE16(uint16_t* f, uint16_t x) {
+ *f = ((x << 8) & 0xff00) | ( ( x >> 8) & 0x00ff);
+}
+
+static inline void WriteLE32(uint32_t* f, uint32_t x) {
+ *f = ( (x & 0x000000ff) << 24 )
+ | ((x & 0x0000ff00) << 8)
+ | ((x & 0x00ff0000) >> 8)
+ | ((x & 0xff000000) >> 24 );
+}
+
+static inline void WriteFourCC(uint32_t* f, char a, char b, char c, char d) {
+ *f = (static_cast<uint32_t>(a) << 24 )
+ | (static_cast<uint32_t>(b) << 16)
+ | (static_cast<uint32_t>(c) << 8)
+ | (static_cast<uint32_t>(d) );
+}
+
+static inline uint16_t ReadLE16(uint16_t x) {
+ return (( x & 0x00ff) << 8 )| ((x & 0xff00)>>8);
+}
+
+static inline uint32_t ReadLE32(uint32_t x) {
+ return ( (x & 0x000000ff) << 24 )
+ | ( (x & 0x0000ff00) << 8 )
+ | ( (x & 0x00ff0000) >> 8)
+ | ( (x & 0xff000000) >> 24 );
+}
+
+static inline std::string ReadFourCC(uint32_t x) {
+ x = ReadLE32(x);
+ return std::string(reinterpret_cast<char*>(&x), 4);
+}
#endif
static inline uint32_t RiffChunkSize(uint32_t bytes_in_payload) {

View File

@ -0,0 +1,24 @@
diff -up webrtc-audio-processing-0.2/webrtc/typedefs.h.typedef webrtc-audio-processing-0.2/webrtc/typedefs.h
--- webrtc-audio-processing-0.2/webrtc/typedefs.h.typedef 2016-05-12 09:08:53.885000410 -0500
+++ webrtc-audio-processing-0.2/webrtc/typedefs.h 2016-05-12 09:12:38.006851953 -0500
@@ -48,7 +48,19 @@
#define WEBRTC_ARCH_32_BITS
#define WEBRTC_ARCH_LITTLE_ENDIAN
#else
-#error Please add support for your architecture in typedefs.h
+/* instead of failing, use typical unix defines... */
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+#define WEBRTC_ARCH_LITTLE_ENDIAN
+#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+#define WEBRTC_ARCH_BIG_ENDIAN
+#else
+#error __BYTE_ORDER__ is not defined
+#endif
+#if defined(__LP64__)
+#define WEBRTC_ARCH_64_BITS
+#else
+#define WEBRTC_ARCH_32_BITS
+#endif
#endif
#if !(defined(WEBRTC_ARCH_LITTLE_ENDIAN) ^ defined(WEBRTC_ARCH_BIG_ENDIAN))

BIN
webrtc-audio-processing-0.3.1.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,125 @@
-------------------------------------------------------------------
Thu Sep 28 09:56:45 UTC 2023 - Antonio Larrosa <alarrosa@suse.com>
- Rename the 0.3.1 version of the package to
webrtc-audio-processing-0 so we can keep it around while all
applications are ported to version 1.x (like baresip and dino).
There's no need to rename the devel package since the new version
uses dashes instead of underscores in the package name.
-------------------------------------------------------------------
Mon Aug 17 15:30:03 UTC 2020 - Dirk Mueller <dmueller@suse.com>
- update to 0.3.1:
* doc: file invalid reference to pulseaudio mailing list
* various build system fixes
- spec-cleaner run
-------------------------------------------------------------------
Fri Aug 2 08:23:00 UTC 2019 - Martin Liška <mliska@suse.cz>
- Use FAT LTO objects in order to provide proper static library.
-------------------------------------------------------------------
Thu Jan 12 08:32:04 UTC 2017 - olaf@aepfle.de
- Add baselibs.conf for gstreamer-plugins-bad-32bit
-------------------------------------------------------------------
Sat Jun 25 10:39:08 UTC 2016 - oholecek@suse.com
- Remove webrtc-aarch64.patch, no longer needed
- Adapt the rest of webrtc- patches to new arch naming
-------------------------------------------------------------------
Thu Jun 23 13:31:14 UTC 2016 - oholecek@suse.com
- Remove unneeded explicit version dependency for automake
-------------------------------------------------------------------
Wed Jun 22 11:55:11 UTC 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 13:02:06 UTC 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 09:00:51 UTC 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 21:19:28 UTC 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 13:51:31 UTC 2013 - idonmez@suse.com
- Add patch webrtc-aarch64.patch from algraf to add aarch64 support
-------------------------------------------------------------------
Wed Dec 19 10:39:23 CET 2012 - ro@suse.de
- add s390 and s390x to known platforms
by adding webrtc-s390x.patch
-------------------------------------------------------------------
Tue Jul 3 15:00:06 UTC 2012 - dvaleev@suse.com
- add ppc64 to known platforms
-------------------------------------------------------------------
Tue May 15 10:40:38 CET 2012 - pascal.bleser@opensuse.org
- initial version (0.1)

View File

@ -0,0 +1,138 @@
# vim: set sw=4 ts=4 et nu:
#
# spec file for package webrtc-audio-processing
#
# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2012 Pascal Bleser <pascal.bleser@opensuse.org>
#
# 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 soname 1
# Please submit bugfixes or comments via http://bugs.opensuse.org/
Name: webrtc-audio-processing-0
Version: 0.3.1
Release: 0
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: http://freedesktop.org/software/pulseaudio/webrtc-audio-processing/webrtc-audio-processing-%{version}.tar.xz
Source1: baselibs.conf
# 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
# PATCH-FIX-OPENSUSE webrtc-(ppc64|s390x|aarch64).patch
Patch100: webrtc-ppc64.patch
Patch101: webrtc-s390x.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gcc-c++
BuildRequires: glibc-devel
BuildRequires: libtool
BuildRequires: make
BuildRequires: pkgconfig
BuildRequires: xz
%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.
This is a compatibility package which should only be used by applications
that haven't be updated yet to the newer 1.x version.
%package -n libwebrtc_audio_processing%{soname}
Summary: Real-Time Communication Library for Web Browsers
Group: System/Libraries
%description -n libwebrtc_audio_processing%{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.
This is a compatibility package which should only be used by applications
that haven't be updated yet to the newer 1.x version.
%package -n libwebrtc_audio_processing-devel
Summary: Real-Time Communication Library for Web Browsers
Group: Development/Libraries/C and C++
Requires: libwebrtc_audio_processing%{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.
This is a compatibility package which should only be used by applications
that haven't be updated yet to the newer 1.x version.
%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.
This is a compatibility package which should only be used by applications
that haven't be updated yet to the newer 1.x version.
%prep
%setup -q -T -c "%{name}-%{version}"
xz --decompress --stdout "%{SOURCE0}" | tar xf - --strip-components=1
sed -i 's/\r$//' AUTHORS
%patch1 -p1
%patch2 -p1
%patch100
%patch101
%build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
%configure
%make_build
%install
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
%post -n libwebrtc_audio_processing%{soname} -p /sbin/ldconfig
%postun -n libwebrtc_audio_processing%{soname} -p /sbin/ldconfig
%files -n libwebrtc_audio_processing%{soname}
%license COPYING
%doc AUTHORS NEWS README.md UPDATING.md
%{_libdir}/libwebrtc_audio_processing.so.%{soname}
%{_libdir}/libwebrtc_audio_processing.so.%{soname}.*.*
%files -n libwebrtc_audio_processing-devel
%{_includedir}/webrtc_audio_processing
%{_libdir}/libwebrtc_audio_processing.so
%{_libdir}/pkgconfig/webrtc-audio-processing.pc
%files -n libwebrtc_audio_processing-devel-static
%{_libdir}/libwebrtc_audio_processing.a
%changelog

17
webrtc-ppc64.patch Normal file
View File

@ -0,0 +1,17 @@
Index: webrtc/typedefs.h
===================================================================
--- webrtc/typedefs.h.org
+++ webrtc/typedefs.h
@@ -47,6 +47,12 @@
#elif defined(__pnacl__)
#define WEBRTC_ARCH_32_BITS
#define WEBRTC_ARCH_LITTLE_ENDIAN
+#elif defined(__powerpc64__)
+#define WEBRTC_ARCH_BIG_ENDIAN
+#define WEBRTC_ARCH_64_BITS
+#elif defined(__powerpc__)
+#define WEBRTC_ARCH_BIG_ENDIAN
+#define WEBRTC_ARCH_32_BITS
#else
/* instead of failing, use typical unix defines... */
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__

15
webrtc-s390x.patch Normal file
View File

@ -0,0 +1,15 @@
--- webrtc/typedefs.h
+++ webrtc/typedefs.h
@@ -53,6 +53,12 @@
#elif defined(__powerpc__)
#define WEBRTC_ARCH_BIG_ENDIAN
#define WEBRTC_ARCH_32_BITS
+#elif defined(__s390x__)
+#define WEBRTC_ARCH_BIG_ENDIAN
+#define WEBRTC_ARCH_64_BITS
+#elif defined(__s390__)
+#define WEBRTC_ARCH_BIG_ENDIAN
+#define WEBRTC_ARCH_32_BITS
#else
/* instead of failing, use typical unix defines... */
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__