From 9254824faca99b40fe820b6b0e61c8d76f7d0c2f Mon Sep 17 00:00:00 2001 From: Peter Korsgaard Date: Thu, 13 Feb 2025 10:33:14 +0100 Subject: [PATCH] package/rnnoise: new package RNNoise is a noise suppression library based on a recurrent neural network. Add an upstream post-0.2 patch to fix a build issue. Signed-off-by: Peter Korsgaard [Julien: remove --disable-doc in _CONF_OPTS already in infra] Signed-off-by: Julien Olivain --- DEVELOPERS | 1 + package/Config.in | 1 + .../rnnoise/0001-Fix-compilation-errors.patch | 147 ++++++++++++++++++ package/rnnoise/Config.in | 7 + package/rnnoise/rnnoise.hash | 3 + package/rnnoise/rnnoise.mk | 15 ++ 6 files changed, 174 insertions(+) create mode 100644 package/rnnoise/0001-Fix-compilation-errors.patch create mode 100644 package/rnnoise/Config.in create mode 100644 package/rnnoise/rnnoise.hash create mode 100644 package/rnnoise/rnnoise.mk diff --git a/DEVELOPERS b/DEVELOPERS index 4914acba0d..6827866db1 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2657,6 +2657,7 @@ F: package/python-texttable/ F: package/python-validators/ F: package/python-webob/ F: package/python-websocket-client/ +F: package/rnnoise/ F: package/sedutil/ F: package/tpm2-totp/ F: package/triggerhappy/ diff --git a/package/Config.in b/package/Config.in index 6f79eafc4b..bd3a00abc3 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1559,6 +1559,7 @@ menu "Audio/Sound" source "package/opus/Config.in" source "package/opusfile/Config.in" source "package/portaudio/Config.in" + source "package/rnnoise/Config.in" source "package/sbc/Config.in" source "package/spandsp/Config.in" source "package/speex/Config.in" diff --git a/package/rnnoise/0001-Fix-compilation-errors.patch b/package/rnnoise/0001-Fix-compilation-errors.patch new file mode 100644 index 0000000000..bbe710012e --- /dev/null +++ b/package/rnnoise/0001-Fix-compilation-errors.patch @@ -0,0 +1,147 @@ +From 372f7b4b76cde4ca1ec4605353dd17898a99de38 Mon Sep 17 00:00:00 2001 +From: "Timothy B. Terriberry" +Date: Mon, 15 Apr 2024 11:27:25 -0700 +Subject: [PATCH] Fix compilation errors. + +vec_avx.h needs x86cpu.h, and x86cpu.h needs to detect SSE2 (or + greater) without the Opus macros. +Also, nobody was defining OPUS_CLEAR (but several things were + including the non-existent os_support.h where it is defined in + libopus), so replace those calls with RNN_CLEAR and remove the + erroneous includes. +Take the opportunity to hoist OPUS_GNUC_PREREQ to common.h, too, + since it is needed in multiple places now. + +Fixes GitHub #222 + +Upstream: https://github.com/xiph/rnnoise/commit/372f7b4b76cde4ca1ec4605353dd17898a99de38 +Signed-off-by: Peter Korsgaard +--- + src/common.h | 8 ++++++++ + src/vec.h | 9 ++++----- + src/vec_avx.h | 2 +- + src/vec_neon.h | 5 +++-- + src/x86/x86cpu.h | 4 ++-- + 5 files changed, 18 insertions(+), 10 deletions(-) + +diff --git a/src/common.h b/src/common.h +index 5005bff..f9095ca 100644 +--- a/src/common.h ++++ b/src/common.h +@@ -43,6 +43,14 @@ static RNN_INLINE void rnnoise_free (void *ptr) + #define RNN_CLEAR(dst, n) (memset((dst), 0, (n)*sizeof(*(dst)))) + #endif + ++# if !defined(OPUS_GNUC_PREREQ) ++# if defined(__GNUC__)&&defined(__GNUC_MINOR__) ++# define OPUS_GNUC_PREREQ(_maj,_min) \ ++ ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) ++# else ++# define OPUS_GNUC_PREREQ(_maj,_min) 0 ++# endif ++# endif + + + #endif +diff --git a/src/vec.h b/src/vec.h +index 8e96cbf..71b7afb 100644 +--- a/src/vec.h ++++ b/src/vec.h +@@ -30,6 +30,7 @@ + #define VEC_H + + #include "opus_types.h" ++#include "common.h" + #include + #include "arch.h" + #include "x86/x86_arch_macros.h" +@@ -41,8 +42,6 @@ + #include "vec_neon.h" + #else + +-#include "os_support.h" +- + #define MAX_INPUTS (2048) + + #define NO_OPTIMIZATIONS +@@ -50,7 +49,7 @@ + static inline void sgemv16x1(float *out, const float *weights, int rows, int cols, int col_stride, const float *x) + { + int i, j; +- OPUS_CLEAR(out, rows); ++ RNN_CLEAR(out, rows); + for (i=0;i + #include +-/*#include "celt/x86/x86cpu.h"*/ ++#include "x86/x86cpu.h" + + #define MAX_INPUTS (2048) + +diff --git a/src/vec_neon.h b/src/vec_neon.h +index e6432e2..31b736c 100644 +--- a/src/vec_neon.h ++++ b/src/vec_neon.h +@@ -32,7 +32,8 @@ + #define VEC_NEON_H + + #include +-#include "os_support.h" ++#include "opus_types.h" ++#include "common.h" + + #if defined(__arm__) && !defined(__aarch64__) && (__ARM_ARCH < 8 || !defined(__clang__)) + /* Emulate vcvtnq_s32_f32() for ARMv7 Neon. */ +@@ -302,7 +303,7 @@ static inline void sgemv(float *out, const float *weights, int rows, int cols, i + static inline void sparse_sgemv8x4(float *out, const float *w, const int *idx, int rows, const float *x) + { + int i, j; +- OPUS_CLEAR(out, rows); ++ RNN_CLEAR(out, rows); + for (i=0;i