[packages/webrtc-audio-processing1] - webrtc-audio-processing updated to 1.0 (parallel installable with webrtc-audio-processing 0.x) - a
qboosh
qboosh at pld-linux.org
Sun Mar 14 17:56:15 CET 2021
commit 6f2a5c0a4318bf7d3a3b8a1a02609541a26d24e8
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Sun Mar 14 17:57:10 2021 +0100
- webrtc-audio-processing updated to 1.0 (parallel installable with webrtc-audio-processing 0.x)
- added abseil patch to fix/adjust abseil library name
- added nosimd patch to fix build for x86 without SSE2
webrtc-audio-processing1-abseil.patch | 11 ++
webrtc-audio-processing1-nosimd.patch | 219 +++++++++++++++++++++
...rocessing.spec => webrtc-audio-processing1.spec | 76 ++++---
3 files changed, 275 insertions(+), 31 deletions(-)
---
diff --git a/webrtc-audio-processing.spec b/webrtc-audio-processing1.spec
similarity index 63%
rename from webrtc-audio-processing.spec
rename to webrtc-audio-processing1.spec
index 0fab234..fd57a13 100644
--- a/webrtc-audio-processing.spec
+++ b/webrtc-audio-processing1.spec
@@ -5,28 +5,32 @@
# [1] http://code.google.com/p/webrtc/
#
# Conditional build:
-%bcond_without neon # without ARM NEON instructions
+%bcond_without neon # ARM NEON instructions
+%bcond_with sse2 # SSE2 instructions
%ifnarch armv7l armv7hl armv7hnl armv8l armv8hl armv8hnl armv8hcnl aarch64
%undefine with_neon
%endif
+%ifarch pentium4 %{x8664} x32
+%define with_sse2 1
+%endif
Summary: WebRTC Audio Processing library
Summary(pl.UTF-8): Biblioteka WebRTC Audio Processing
-Name: webrtc-audio-processing
-Version: 0.3.1
+Name: webrtc-audio-processing1
+Version: 1.0
Release: 1
License: BSD
Group: Libraries
-Source0: https://freedesktop.org/software/pulseaudio/webrtc-audio-processing/%{name}-%{version}.tar.xz
-# Source0-md5: 6e10724ca34bcbc715a4c208273acb0c
+Source0: https://freedesktop.org/software/pulseaudio/webrtc-audio-processing/webrtc-audio-processing-%{version}.tar.gz
+# Source0-md5: 8ee1b2f3e615c6c2024951c559a9913a
+Patch0: %{name}-abseil.patch
+Patch1: %{name}-nosimd.patch
URL: https://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing/
-BuildRequires: autoconf >= 2.50
-BuildRequires: automake >= 1:1.11
-BuildRequires: libstdc++-devel >= 6:4.7
-BuildRequires: libtool
-BuildRequires: tar >= 1:1.22
-BuildRequires: xz
+BuildRequires: abseil-cpp-devel >= 20200923
+BuildRequires: libstdc++-devel >= 6:5
+BuildRequires: meson >= 0.54
+BuildRequires: ninja >= 1.5
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
@@ -48,7 +52,8 @@ Summary: Header files for WebRTC Audio Processing library
Summary(pl.UTF-8): Pliki nagłówkowe biblioteki WebRTC Audio Processing
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
-Requires: libstdc++-devel
+Requires: abseil-cpp-devel >= 20200923
+Requires: libstdc++-devel >= 6:5
%description devel
This package contains the header files needed to develop programs
@@ -71,25 +76,31 @@ Static WebRTC Audio Processing library.
Biblioteka statyczna WebRTC Audio Processing.
%prep
-%setup -q
+%setup -q -n webrtc-audio-processing-%{version}
+%patch0 -p1
+%patch1 -p1
+
+%ifarch %{ix86}
+%if %{without sse2}
+# add -DPFFFT_SIMD_DISABLE
+%{__sed} -i -e 's/have_arm and not have_neon.*/& or true/' webrtc/third_party/pffft/meson.build
+%endif
+%endif
%build
-%{__libtoolize}
-%{__aclocal}
-%{__autoconf}
-%{__automake}
-%configure \
- %{!?with_neon:--disable-neon} \
- --disable-silent-rules
-%{__make}
+%if %{with sse2}
+CFLAGS="%{rpmcflags} -msse2"
+CXXFLAGS="%{rpmcxxflags} -msse2"
+%endif
+%meson build \
+ -Dneon=%{?with_neon:runtime}%{!?with_neon:no}
+
+%ninja_build -C build
%install
rm -rf $RPM_BUILD_ROOT
-%{__make} install \
- DESTDIR=$RPM_BUILD_ROOT
-# obsoleted by pkg-config
-%{__rm} $RPM_BUILD_ROOT%{_libdir}/*.la
+%ninja_install -C build
%clean
rm -rf $RPM_BUILD_ROOT
@@ -100,15 +111,18 @@ rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
%doc AUTHORS COPYING NEWS README.md webrtc/PATENTS
-%attr(755,root,root) %{_libdir}/libwebrtc_audio_processing.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libwebrtc_audio_processing.so.1
+%attr(755,root,root) %{_libdir}/libwebrtc-audio-coding-1.so.0
+%attr(755,root,root) %{_libdir}/libwebrtc-audio-processing-1.so.0
%files devel
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libwebrtc_audio_processing.so
-%{_includedir}/webrtc_audio_processing
-%{_pkgconfigdir}/webrtc-audio-processing.pc
+%attr(755,root,root) %{_libdir}/libwebrtc-audio-coding-1.so
+%attr(755,root,root) %{_libdir}/libwebrtc-audio-processing-1.so
+%{_includedir}/webrtc-audio-processing-1
+%{_pkgconfigdir}/webrtc-audio-coding-1.pc
+%{_pkgconfigdir}/webrtc-audio-processing-1.pc
%files static
%defattr(644,root,root,755)
-%{_libdir}/libwebrtc_audio_processing.a
+%{_libdir}/libwebrtc-audio-coding-1.a
+%{_libdir}/libwebrtc-audio-processing-1.a
diff --git a/webrtc-audio-processing1-abseil.patch b/webrtc-audio-processing1-abseil.patch
new file mode 100644
index 0000000..4978c24
--- /dev/null
+++ b/webrtc-audio-processing1-abseil.patch
@@ -0,0 +1,11 @@
+--- webrtc-audio-processing-1.0/meson.build.orig 2020-11-27 20:30:53.000000000 +0100
++++ webrtc-audio-processing-1.0/meson.build 2021-03-14 12:53:34.720849883 +0100
+@@ -46,7 +46,7 @@
+ cpp.find_library('absl_flags_internal'),
+ cpp.find_library('absl_flags_marshalling'),
+ cpp.find_library('absl_flags_parse'),
+- cpp.find_library('absl_flags_registry'),
++ cpp.find_library('absl_flags_reflection'),
+ cpp.find_library('absl_flags_usage_internal'),
+ cpp.find_library('absl_raw_logging_internal'),
+ cpp.find_library('absl_strings'),
diff --git a/webrtc-audio-processing1-nosimd.patch b/webrtc-audio-processing1-nosimd.patch
new file mode 100644
index 0000000..92bb26e
--- /dev/null
+++ b/webrtc-audio-processing1-nosimd.patch
@@ -0,0 +1,219 @@
+--- webrtc-audio-processing-1.0/webrtc/modules/audio_processing/aec3/adaptive_fir_filter.cc.orig 2020-11-27 20:30:53.000000000 +0100
++++ webrtc-audio-processing-1.0/webrtc/modules/audio_processing/aec3/adaptive_fir_filter.cc 2021-03-14 13:27:15.929900062 +0100
+@@ -16,7 +16,7 @@
+ #if defined(WEBRTC_HAS_NEON)
+ #include <arm_neon.h>
+ #endif
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ #include <emmintrin.h>
+ #endif
+ #include <math.h>
+@@ -86,7 +86,7 @@
+ }
+ #endif
+
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ // Computes and stores the frequency response of the filter.
+ void ComputeFrequencyResponse_Sse2(
+ size_t num_partitions,
+@@ -208,7 +208,7 @@
+ }
+ #endif
+
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ // Adapts the filter partitions. (SSE2 variant)
+ void AdaptPartitions_Sse2(const RenderBuffer& render_buffer,
+ const FftData& G,
+@@ -373,7 +373,7 @@
+ }
+ #endif
+
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ // Produces the filter output (SSE2 variant).
+ void ApplyFilter_Sse2(const RenderBuffer& render_buffer,
+ size_t num_partitions,
+@@ -552,7 +552,7 @@
+ FftData* S) const {
+ RTC_DCHECK(S);
+ switch (optimization_) {
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ case Aec3Optimization::kSse2:
+ aec3::ApplyFilter_Sse2(render_buffer, current_size_partitions_, H_, S);
+ break;
+@@ -596,7 +596,7 @@
+ H2->resize(current_size_partitions_);
+
+ switch (optimization_) {
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ case Aec3Optimization::kSse2:
+ aec3::ComputeFrequencyResponse_Sse2(current_size_partitions_, H_, H2);
+ break;
+@@ -621,7 +621,7 @@
+
+ // Adapt the filter.
+ switch (optimization_) {
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ case Aec3Optimization::kSse2:
+ aec3::AdaptPartitions_Sse2(render_buffer, G, current_size_partitions_,
+ &H_);
+--- webrtc-audio-processing-1.0/webrtc/modules/audio_processing/aec3/adaptive_fir_filter_erl.cc.orig 2020-11-27 20:30:53.000000000 +0100
++++ webrtc-audio-processing-1.0/webrtc/modules/audio_processing/aec3/adaptive_fir_filter_erl.cc 2021-03-14 13:27:55.803017384 +0100
+@@ -16,7 +16,7 @@
+ #if defined(WEBRTC_HAS_NEON)
+ #include <arm_neon.h>
+ #endif
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ #include <emmintrin.h>
+ #endif
+
+@@ -54,7 +54,7 @@
+ }
+ #endif
+
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ // Computes and stores the echo return loss estimate of the filter, which is the
+ // sum of the partition frequency responses.
+ void ErlComputer_SSE2(
+@@ -81,7 +81,7 @@
+ RTC_DCHECK_EQ(kFftLengthBy2Plus1, erl.size());
+ // Update the frequency response and echo return loss for the filter.
+ switch (optimization) {
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ case Aec3Optimization::kSse2:
+ aec3::ErlComputer_SSE2(H2, erl);
+ break;
+--- webrtc-audio-processing-1.0/webrtc/modules/audio_processing/aec3/fft_data.h.orig 2020-11-27 20:30:53.000000000 +0100
++++ webrtc-audio-processing-1.0/webrtc/modules/audio_processing/aec3/fft_data.h 2021-03-14 13:28:55.999357940 +0100
+@@ -14,7 +14,7 @@
+ // Defines WEBRTC_ARCH_X86_FAMILY, used below.
+ #include "rtc_base/system/arch.h"
+
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ #include <emmintrin.h>
+ #endif
+ #include <algorithm>
+@@ -48,7 +48,7 @@
+ rtc::ArrayView<float> power_spectrum) const {
+ RTC_DCHECK_EQ(kFftLengthBy2Plus1, power_spectrum.size());
+ switch (optimization) {
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ case Aec3Optimization::kSse2: {
+ constexpr int kNumFourBinBands = kFftLengthBy2 / 4;
+ constexpr int kLimit = kNumFourBinBands * 4;
+--- webrtc-audio-processing-1.0/webrtc/modules/audio_processing/aec3/vector_math.h.orig 2020-11-27 20:30:53.000000000 +0100
++++ webrtc-audio-processing-1.0/webrtc/modules/audio_processing/aec3/vector_math.h 2021-03-14 13:29:18.652568550 +0100
+@@ -17,7 +17,7 @@
+ #if defined(WEBRTC_HAS_NEON)
+ #include <arm_neon.h>
+ #endif
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ #include <emmintrin.h>
+ #endif
+ #include <math.h>
+@@ -43,7 +43,7 @@
+ void SqrtAVX2(rtc::ArrayView<float> x);
+ void Sqrt(rtc::ArrayView<float> x) {
+ switch (optimization_) {
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ case Aec3Optimization::kSse2: {
+ const int x_size = static_cast<int>(x.size());
+ const int vector_limit = x_size >> 2;
+@@ -123,7 +123,7 @@
+ RTC_DCHECK_EQ(z.size(), x.size());
+ RTC_DCHECK_EQ(z.size(), y.size());
+ switch (optimization_) {
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ case Aec3Optimization::kSse2: {
+ const int x_size = static_cast<int>(x.size());
+ const int vector_limit = x_size >> 2;
+@@ -173,7 +173,7 @@
+ void Accumulate(rtc::ArrayView<const float> x, rtc::ArrayView<float> z) {
+ RTC_DCHECK_EQ(z.size(), x.size());
+ switch (optimization_) {
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ case Aec3Optimization::kSse2: {
+ const int x_size = static_cast<int>(x.size());
+ const int vector_limit = x_size >> 2;
+--- webrtc-audio-processing-1.0/webrtc/modules/audio_processing/aec3/matched_filter.cc.orig 2020-11-27 20:30:53.000000000 +0100
++++ webrtc-audio-processing-1.0/webrtc/modules/audio_processing/aec3/matched_filter.cc 2021-03-14 13:29:40.592449692 +0100
+@@ -15,7 +15,7 @@
+ #if defined(WEBRTC_HAS_NEON)
+ #include <arm_neon.h>
+ #endif
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ #include <emmintrin.h>
+ #endif
+ #include <algorithm>
+@@ -142,7 +142,7 @@
+
+ #endif
+
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+
+ void MatchedFilterCore_SSE2(size_t x_start_index,
+ float x2_sum_threshold,
+@@ -358,7 +358,7 @@
+ render_buffer.buffer.size();
+
+ switch (optimization_) {
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ case Aec3Optimization::kSse2:
+ aec3::MatchedFilterCore_SSE2(x_start_index, x2_sum_threshold,
+ smoothing_, render_buffer.buffer, y,
+--- webrtc-audio-processing-1.0/webrtc/modules/audio_processing/agc2/rnn_vad/rnn.cc.orig 2020-11-27 20:30:53.000000000 +0100
++++ webrtc-audio-processing-1.0/webrtc/modules/audio_processing/agc2/rnn_vad/rnn.cc 2021-03-14 13:42:56.104806702 +0100
+@@ -16,7 +16,7 @@
+ #if defined(WEBRTC_HAS_NEON)
+ #include <arm_neon.h>
+ #endif
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ #include <emmintrin.h>
+ #endif
+ #include <algorithm>
+@@ -227,7 +227,7 @@
+ }
+ }
+
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ // Fully connected layer SSE2 implementation.
+ void ComputeFullyConnectedLayerOutputSse2(
+ size_t input_size,
+@@ -295,7 +295,7 @@
+
+ void FullyConnectedLayer::ComputeOutput(rtc::ArrayView<const float> input) {
+ switch (optimization_) {
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ case Optimization::kSse2:
+ ComputeFullyConnectedLayerOutputSse2(input_size_, output_size_, input,
+ bias_, weights_,
+@@ -355,7 +355,7 @@
+
+ void GatedRecurrentLayer::ComputeOutput(rtc::ArrayView<const float> input) {
+ switch (optimization_) {
+-#if defined(WEBRTC_ARCH_X86_FAMILY)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && defined(__SSE2__)
+ case Optimization::kSse2:
+ // TODO(bugs.chromium.org/10480): Handle Optimization::kSse2.
+ ComputeGruLayerOutput(input_size_, output_size_, input, weights_,
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/webrtc-audio-processing1.git/commitdiff/6f2a5c0a4318bf7d3a3b8a1a02609541a26d24e8
More information about the pld-cvs-commit
mailing list