svn commit: r481919 - in head/audio: . webrtc-audio-processing webrtc-audio-processing/files
Jan Beich
jbeich at FreeBSD.org
Fri Oct 12 18:22:11 UTC 2018
Author: jbeich
Date: Fri Oct 12 18:22:06 2018
New Revision: 481919
URL: https://svnweb.freebsd.org/changeset/ports/481919
Log:
audio/webrtc-audio-processing: add new port
Audio processing routines extracted from WebRTC project into a
standalone library. It provides the following features:
- Acoustic echo cancellation
- Acoustic echo control for mobile
- Automatic gain control
- High-pass filter
- Level estimator
- Noise suppression
- Voice activity detection
https://freedesktop.org/software/pulseaudio/webrtc-audio-processing/
Added:
head/audio/webrtc-audio-processing/
head/audio/webrtc-audio-processing/Makefile (contents, props changed)
head/audio/webrtc-audio-processing/distinfo (contents, props changed)
head/audio/webrtc-audio-processing/files/
head/audio/webrtc-audio-processing/files/patch-configure.ac (contents, props changed)
head/audio/webrtc-audio-processing/files/patch-webrtc_base_checks.cc (contents, props changed)
head/audio/webrtc-audio-processing/files/patch-webrtc_base_platform__thread.cc (contents, props changed)
head/audio/webrtc-audio-processing/files/patch-webrtc_base_stringutils.h (contents, props changed)
head/audio/webrtc-audio-processing/files/patch-webrtc_system__wrappers_source_condition__variable.cc (contents, props changed)
head/audio/webrtc-audio-processing/pkg-descr (contents, props changed)
head/audio/webrtc-audio-processing/pkg-plist (contents, props changed)
Modified:
head/audio/Makefile (contents, props changed)
Modified: head/audio/Makefile
==============================================================================
--- head/audio/Makefile Fri Oct 12 18:21:32 2018 (r481918)
+++ head/audio/Makefile Fri Oct 12 18:22:06 2018 (r481919)
@@ -869,6 +869,7 @@
SUBDIR += waveplay
SUBDIR += wavpack
SUBDIR += wavplay
+ SUBDIR += webrtc-audio-processing
SUBDIR += whysynth
SUBDIR += wildmidi
SUBDIR += wmalbum
Added: head/audio/webrtc-audio-processing/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/audio/webrtc-audio-processing/Makefile Fri Oct 12 18:22:06 2018 (r481919)
@@ -0,0 +1,18 @@
+# $FreeBSD$
+
+PORTNAME= webrtc-audio-processing
+PORTVERSION= 0.3.1
+CATEGORIES= audio
+MASTER_SITES= https://freedesktop.org/software/pulseaudio/${PORTNAME}/
+
+MAINTAINER= jbeich at FreeBSD.org
+COMMENT= AudioProcessing module from WebRTC project
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+USES= autoreconf compiler:c++11-lib libtool pkgconfig tar:xz
+USE_LDCONFIG= yes
+GNU_CONFIGURE= yes
+
+.include <bsd.port.mk>
Added: head/audio/webrtc-audio-processing/distinfo
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/audio/webrtc-audio-processing/distinfo Fri Oct 12 18:22:06 2018 (r481919)
@@ -0,0 +1,3 @@
+TIMESTAMP = 1532354746
+SHA256 (webrtc-audio-processing-0.3.1.tar.xz) = a0fdd938fd85272d67e81572c5a4d9e200a0c104753cb3c209ded175ce3c5dbf
+SIZE (webrtc-audio-processing-0.3.1.tar.xz) = 695920
Added: head/audio/webrtc-audio-processing/files/patch-configure.ac
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/audio/webrtc-audio-processing/files/patch-configure.ac Fri Oct 12 18:22:06 2018 (r481919)
@@ -0,0 +1,18 @@
+- Add WEBRTC_BSD as it's closer to WEBRTC_LINUX than WEBRTC_MAC
+
+--- configure.ac.orig 2018-07-23 14:02:57 UTC
++++ configure.ac
+@@ -63,6 +63,13 @@ AS_CASE(["${host}"],
+ OS_LDFLAGS="-lrt -lpthread"
+ HAVE_POSIX=1
+ ],
++ [*-*dragonfly*|*-*bsd*],
++ [
++ OS_CFLAGS="-DWEBRTC_BSD -DWEBRTC_THREAD_RR"
++ PLATFORM_CFLAGS="-DWEBRTC_POSIX"
++ OS_LDFLAGS="-lpthread"
++ HAVE_POSIX=1
++ ],
+ [*-*darwin*],
+ [
+ OS_CFLAGS="-DWEBRTC_MAC -DWEBRTC_THREAD_RR -DWEBRTC_CLOCK_TYPE_REALTIME"
Added: head/audio/webrtc-audio-processing/files/patch-webrtc_base_checks.cc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/audio/webrtc-audio-processing/files/patch-webrtc_base_checks.cc Fri Oct 12 18:22:06 2018 (r481919)
@@ -0,0 +1,70 @@
+- Drop unnecessary dependency on libexecinfo for GCC build
+ https://chromium.googlesource.com/external/webrtc/+/7c4dedade158%5E!/
+
+--- webrtc/base/checks.cc.orig 2018-07-23 14:02:57 UTC
++++ webrtc/base/checks.cc
+@@ -11,16 +11,10 @@
+ // Most of this was borrowed (with minor modifications) from V8's and Chromium's
+ // src/base/logging.cc.
+
+-// Use the C++ version to provide __GLIBCXX__.
+ #include <cstdarg>
+ #include <cstdio>
+ #include <cstdlib>
+
+-#if defined(__GLIBCXX__) && !defined(__UCLIBC__)
+-#include <cxxabi.h>
+-#include <execinfo.h>
+-#endif
+-
+ #if defined(WEBRTC_ANDROID)
+ #define LOG_TAG "rtc"
+ #include <android/log.h> // NOLINT
+@@ -51,39 +45,6 @@ void PrintError(const char* format, ...) {
+ va_end(args);
+ }
+
+-// TODO(ajm): This works on Mac (although the parsing fails) but I don't seem
+-// to get usable symbols on Linux. This is copied from V8. Chromium has a more
+-// advanced stace trace system; also more difficult to copy.
+-void DumpBacktrace() {
+-#if defined(__GLIBCXX__) && !defined(__UCLIBC__)
+- void* trace[100];
+- int size = backtrace(trace, sizeof(trace) / sizeof(*trace));
+- char** symbols = backtrace_symbols(trace, size);
+- PrintError("\n==== C stack trace ===============================\n\n");
+- if (size == 0) {
+- PrintError("(empty)\n");
+- } else if (symbols == NULL) {
+- PrintError("(no symbols)\n");
+- } else {
+- for (int i = 1; i < size; ++i) {
+- char mangled[201];
+- if (sscanf(symbols[i], "%*[^(]%*[(]%200[^)+]", mangled) == 1) { // NOLINT
+- PrintError("%2d: ", i);
+- int status;
+- size_t length;
+- char* demangled = abi::__cxa_demangle(mangled, NULL, &length, &status);
+- PrintError("%s\n", demangled != NULL ? demangled : mangled);
+- free(demangled);
+- } else {
+- // If parsing failed, at least print the unparsed symbol.
+- PrintError("%s\n", symbols[i]);
+- }
+- }
+- }
+- free(symbols);
+-#endif
+-}
+-
+ FatalMessage::FatalMessage(const char* file, int line) {
+ Init(file, line);
+ }
+@@ -99,7 +60,6 @@ NO_RETURN FatalMessage::~FatalMessage() {
+ fflush(stderr);
+ stream_ << std::endl << "#" << std::endl;
+ PrintError(stream_.str().c_str());
+- DumpBacktrace();
+ fflush(stderr);
+ abort();
+ }
Added: head/audio/webrtc-audio-processing/files/patch-webrtc_base_platform__thread.cc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/audio/webrtc-audio-processing/files/patch-webrtc_base_platform__thread.cc Fri Oct 12 18:22:06 2018 (r481919)
@@ -0,0 +1,48 @@
+- Implement CurrentThreadId() using global thread ID
+- Implement SetCurrentThreadName()
+
+--- webrtc/base/platform_thread.cc.orig 2018-07-23 14:02:57 UTC
++++ webrtc/base/platform_thread.cc
+@@ -19,6 +19,12 @@
+ #include <sys/syscall.h>
+ #endif
+
++#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__) // WEBRTC_BSD
++#include <pthread_np.h>
++#elif defined(__NetBSD__) // WEBRTC_BSD
++#include <lwp.h>
++#endif
++
+ namespace rtc {
+
+ PlatformThreadId CurrentThreadId() {
+@@ -32,9 +38,17 @@ PlatformThreadId CurrentThreadId() {
+ ret = syscall(__NR_gettid);
+ #elif defined(WEBRTC_ANDROID)
+ ret = gettid();
++#elif defined(__DragonFly__) // WEBRTC_BSD
++ ret = lwp_gettid();
++#elif defined(__FreeBSD__) // WEBRTC_BSD
++ ret = pthread_getthreadid_np();
++#elif defined(__NetBSD__) // WEBRTC_BSD
++ ret = _lwp_self();
+ #else
+ // Default implementation for nacl and solaris.
+- ret = reinterpret_cast<pid_t>(pthread_self());
++ // WEBRTC_BSD: pthread_t is a pointer, so cannot be casted to pid_t
++ // (aka int32_t) on 64-bit archs. Required on OpenBSD.
++ ret = reinterpret_cast<uintptr_t>(pthread_self());
+ #endif
+ #endif // defined(WEBRTC_POSIX)
+ RTC_DCHECK(ret);
+@@ -76,6 +90,10 @@ void SetCurrentThreadName(const char* name) {
+ prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name));
+ #elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
+ pthread_setname_np(name);
++#elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__) // WEBRTC_BSD
++ pthread_set_name_np(pthread_self(), name);
++#elif defined(__NetBSD__) // WEBRTC_BSD
++ pthread_setname_np(pthread_self(), "%s", (void*)name);
+ #endif
+ }
+
Added: head/audio/webrtc-audio-processing/files/patch-webrtc_base_stringutils.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/audio/webrtc-audio-processing/files/patch-webrtc_base_stringutils.h Fri Oct 12 18:22:06 2018 (r481919)
@@ -0,0 +1,13 @@
+- BSD macro (in sys/param.h) is an archaic of the (University of California) past
+
+--- webrtc/base/stringutils.h.orig 2018-07-23 14:02:57 UTC
++++ webrtc/base/stringutils.h
+@@ -23,7 +23,7 @@
+ #endif // WEBRTC_WIN
+
+ #if defined(WEBRTC_POSIX)
+-#ifdef BSD
++#ifdef WEBRTC_BSD
+ #include <stdlib.h>
+ #else // BSD
+ #include <alloca.h>
Added: head/audio/webrtc-audio-processing/files/patch-webrtc_system__wrappers_source_condition__variable.cc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/audio/webrtc-audio-processing/files/patch-webrtc_system__wrappers_source_condition__variable.cc Fri Oct 12 18:22:06 2018 (r481919)
@@ -0,0 +1,22 @@
+- Match conditional in webrtc/system_wrappers/Makefile.am
+
+--- webrtc/system_wrappers/source/condition_variable.cc.orig 2018-07-23 14:02:57 UTC
++++ webrtc/system_wrappers/source/condition_variable.cc
+@@ -14,7 +14,7 @@
+ #include <windows.h>
+ #include "webrtc/system_wrappers/source/condition_variable_event_win.h"
+ #include "webrtc/system_wrappers/source/condition_variable_native_win.h"
+-#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
++#elif defined(WEBRTC_POSIX)
+ #include <pthread.h>
+ #include "webrtc/system_wrappers/source/condition_variable_posix.h"
+ #endif
+@@ -31,7 +31,7 @@ ConditionVariableWrapper* ConditionVariableWrapper::Cr
+ ret_val = new ConditionVariableEventWin();
+ }
+ return ret_val;
+-#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
++#elif defined(WEBRTC_POSIX)
+ return ConditionVariablePosix::Create();
+ #else
+ return NULL;
Added: head/audio/webrtc-audio-processing/pkg-descr
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/audio/webrtc-audio-processing/pkg-descr Fri Oct 12 18:22:06 2018 (r481919)
@@ -0,0 +1,12 @@
+Audio processing routines extracted from WebRTC project into a
+standalone library. It provides the following features:
+
+- Acoustic echo cancellation
+- Acoustic echo control for mobile
+- Automatic gain control
+- High-pass filter
+- Level estimator
+- Noise suppression
+- Voice activity detection
+
+WWW: https://freedesktop.org/software/pulseaudio/webrtc-audio-processing/
Added: head/audio/webrtc-audio-processing/pkg-plist
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/audio/webrtc-audio-processing/pkg-plist Fri Oct 12 18:22:06 2018 (r481919)
@@ -0,0 +1,18 @@
+include/webrtc_audio_processing/webrtc/base/arraysize.h
+include/webrtc_audio_processing/webrtc/base/basictypes.h
+include/webrtc_audio_processing/webrtc/base/checks.h
+include/webrtc_audio_processing/webrtc/base/constructormagic.h
+include/webrtc_audio_processing/webrtc/base/maybe.h
+include/webrtc_audio_processing/webrtc/base/platform_file.h
+include/webrtc_audio_processing/webrtc/common.h
+include/webrtc_audio_processing/webrtc/common_types.h
+include/webrtc_audio_processing/webrtc/modules/audio_processing/beamformer/array_util.h
+include/webrtc_audio_processing/webrtc/modules/audio_processing/include/audio_processing.h
+include/webrtc_audio_processing/webrtc/modules/interface/module_common_types.h
+include/webrtc_audio_processing/webrtc/system_wrappers/include/trace.h
+include/webrtc_audio_processing/webrtc/typedefs.h
+lib/libwebrtc_audio_processing.a
+lib/libwebrtc_audio_processing.so
+lib/libwebrtc_audio_processing.so.1
+lib/libwebrtc_audio_processing.so.1.0.0
+libdata/pkgconfig/webrtc-audio-processing.pc
More information about the svn-ports-head
mailing list