Compare commits

...

No commits in common. "c8" and "c8s" have entirely different histories.
c8 ... c8s

23 changed files with 43 additions and 1338 deletions

20
.gitignore vendored
View File

@ -1 +1,19 @@
SOURCES/webrtc-audio-processing-0.3.tar.xz
/webrtc-audio-processing-0.1.tar.xz
/webrtc-audio-processing-0.2.tar.xz
/webrtc-audio-processing-0.3.tar.xz
/0001-Add-missing-windows-specific-headers.patch
/0002-build-Add-cerbero-gnustl-support-for-Android.patch
/0003-build-Don-t-blindly-link-to-pthread.patch
/0004-build-Add-required-define-for-Windows.patch
/0005-build-Properly-select-the-right-system-wrappers.patch
/0006-build-Define-MSVC-_WIN32-so-we-can-build-on-mingw.patch
/0007-Add-missing-windows-conditions-variable.patch
/0008-build-Protect-against-unsupported-CPU-types.patch
/0009-osx-Fix-type-OS_FLAGS-instead-of-OS_CFLAGS.patch
/0010-build-Sync-defines-and-libs-with-build.gn.patch
/0011-build-Use-no-undefined-to-support-both-clang-and-gcc.patch
/0012-build-Re-add-pthread-linking-on-linux.patch
/0013-build-Add-ARM-64bit-support.patch
/0014-build-fix-architecture-detection.patch
/0015-doc-file-invalid-reference-to-pulseaudio-mailing-lis.patch
/0016-build-Fix-configure-option-with-ns-mode.patch

View File

@ -1 +0,0 @@
65ed41129bcded398c37860ccb38a8cd7ae4dfe3 SOURCES/webrtc-audio-processing-0.3.tar.xz

View File

@ -1,123 +0,0 @@
From bf25c45e540d7e961704c245e7be439b580c93c2 Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Thu, 30 Jun 2016 15:08:17 -0400
Subject: [PATCH 01/16] Add missing windows specific headers
https://bugs.freedesktop.org/show_bug.cgi?id=96754
---
webrtc/base/win32.h | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 103 insertions(+)
create mode 100644 webrtc/base/win32.h
diff --git a/webrtc/base/win32.h b/webrtc/base/win32.h
new file mode 100644
index 0000000..6969c10
--- /dev/null
+++ b/webrtc/base/win32.h
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2004 The WebRTC Project Authors. All rights reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+#ifndef WEBRTC_BASE_WIN32_H_
+#define WEBRTC_BASE_WIN32_H_
+#if defined(WEBRTC_WIN)
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+// Make sure we don't get min/max macros
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+#include <winsock2.h>
+#include <windows.h>
+#ifndef SECURITY_MANDATORY_LABEL_AUTHORITY
+// Add defines that we use if we are compiling against older sdks
+#define SECURITY_MANDATORY_MEDIUM_RID (0x00002000L)
+#define TokenIntegrityLevel static_cast<TOKEN_INFORMATION_CLASS>(0x19)
+typedef struct _TOKEN_MANDATORY_LABEL {
+ SID_AND_ATTRIBUTES Label;
+} TOKEN_MANDATORY_LABEL, *PTOKEN_MANDATORY_LABEL;
+#endif // SECURITY_MANDATORY_LABEL_AUTHORITY
+#undef SetPort
+#include <string>
+#include "webrtc/base/stringutils.h"
+#include "webrtc/base/basictypes.h"
+namespace rtc {
+const char* win32_inet_ntop(int af, const void *src, char* dst, socklen_t size);
+int win32_inet_pton(int af, const char* src, void *dst);
+inline std::wstring ToUtf16(const char* utf8, size_t len) {
+ int len16 = ::MultiByteToWideChar(CP_UTF8, 0, utf8, static_cast<int>(len),
+ NULL, 0);
+ wchar_t* ws = STACK_ARRAY(wchar_t, len16);
+ ::MultiByteToWideChar(CP_UTF8, 0, utf8, static_cast<int>(len), ws, len16);
+ return std::wstring(ws, len16);
+}
+inline std::wstring ToUtf16(const std::string& str) {
+ return ToUtf16(str.data(), str.length());
+}
+inline std::string ToUtf8(const wchar_t* wide, size_t len) {
+ int len8 = ::WideCharToMultiByte(CP_UTF8, 0, wide, static_cast<int>(len),
+ NULL, 0, NULL, NULL);
+ char* ns = STACK_ARRAY(char, len8);
+ ::WideCharToMultiByte(CP_UTF8, 0, wide, static_cast<int>(len), ns, len8,
+ NULL, NULL);
+ return std::string(ns, len8);
+}
+inline std::string ToUtf8(const wchar_t* wide) {
+ return ToUtf8(wide, wcslen(wide));
+}
+inline std::string ToUtf8(const std::wstring& wstr) {
+ return ToUtf8(wstr.data(), wstr.length());
+}
+// Convert FILETIME to time_t
+void FileTimeToUnixTime(const FILETIME& ft, time_t* ut);
+// Convert time_t to FILETIME
+void UnixTimeToFileTime(const time_t& ut, FILETIME * ft);
+// Convert a Utf8 path representation to a non-length-limited Unicode pathname.
+bool Utf8ToWindowsFilename(const std::string& utf8, std::wstring* filename);
+// Convert a FILETIME to a UInt64
+inline uint64_t ToUInt64(const FILETIME& ft) {
+ ULARGE_INTEGER r = {{ft.dwLowDateTime, ft.dwHighDateTime}};
+ return r.QuadPart;
+}
+enum WindowsMajorVersions {
+ kWindows2000 = 5,
+ kWindowsVista = 6,
+};
+bool GetOsVersion(int* major, int* minor, int* build);
+inline bool IsWindowsVistaOrLater() {
+ int major;
+ return (GetOsVersion(&major, NULL, NULL) && major >= kWindowsVista);
+}
+inline bool IsWindowsXpOrLater() {
+ int major, minor;
+ return (GetOsVersion(&major, &minor, NULL) &&
+ (major >= kWindowsVista ||
+ (major == kWindows2000 && minor >= 1)));
+}
+inline bool IsWindows8OrLater() {
+ int major, minor;
+ return (GetOsVersion(&major, &minor, NULL) &&
+ (major > kWindowsVista ||
+ (major == kWindowsVista && minor >= 2)));
+}
+// Determine the current integrity level of the process.
+bool GetCurrentProcessIntegrityLevel(int* level);
+inline bool IsCurrentProcessLowIntegrity() {
+ int level;
+ return (GetCurrentProcessIntegrityLevel(&level) &&
+ level < SECURITY_MANDATORY_MEDIUM_RID);
+}
+bool AdjustCurrentProcessPrivilege(const TCHAR* privilege, bool to_enable);
+} // namespace rtc
+#endif // WEBRTC_WIN
+#endif // WEBRTC_BASE_WIN32_H_
--
2.14.3

View File

@ -1,60 +0,0 @@
From 560f300a3d84bbd2b48173aaee5166584d917c44 Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Thu, 30 Jun 2016 16:19:49 -0400
Subject: [PATCH 02/16] build: Add cerbero gnustl support for Android
---
configure.ac | 17 ++++++++++++++++-
webrtc/modules/audio_processing/Makefile.am | 1 +
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 6f9553b..f34be72 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,6 +26,21 @@ AS_CASE(["x${with_ns_mode}"],
[NS_FIXED=0])
AM_CONDITIONAL(NS_FIXED, [test "x${NS_FIXED}" = "x1"])
+AC_ARG_WITH(
+ gnustl,
+ AC_HELP_STRING(
+ [--with-gnustl],
+ [use gnustl @<:@default=no@:>@]),
+ [AS_CASE(
+ [$withval], [no], [], [yes], [],
+ [AC_MSG_ERROR([bad value "$withval" for --with-gnustl])])],
+ [with_gnustl=no])
+if test "x$with_gnustl" != "xno"; then
+ PKG_CHECK_MODULES(GNUSTL, gnustl)
+fi
+AC_SUBST(GNUSTL_LIBS)
+AC_SUBST(GNUSTL_CFLAGS)
+
# Borrowed from gst-plugins-bad
AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
@@ -104,7 +119,7 @@ AS_IF([test "x$enable_neon" != "xno"],
AM_CONDITIONAL([HAVE_NEON], [test "x$HAVE_NEON" = "x1"])
COMMON_CFLAGS="-DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD ${PLATFORM_CFLAGS} ${OS_CFLAGS} ${ARCH_CFLAGS} -DNDEBUG -I\$(top_srcdir)"
-COMMON_CXXFLAGS="-std=c++11 -DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD ${PLATFORM_CFLAGS} ${OS_CFLAGS} ${ARCH_CFLAGS} -DNDEBUG -I\$(top_srcdir)"
+COMMON_CXXFLAGS="-std=c++11 -DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD ${PLATFORM_CFLAGS} ${OS_CFLAGS} ${ARCH_CFLAGS} ${GNUSTL_CFLAGS} -DNDEBUG -I\$(top_srcdir)"
AC_SUBST([COMMON_CFLAGS])
AC_SUBST([COMMON_CXXFLAGS])
diff --git a/webrtc/modules/audio_processing/Makefile.am b/webrtc/modules/audio_processing/Makefile.am
index 30ca898..eb9bfc0 100644
--- a/webrtc/modules/audio_processing/Makefile.am
+++ b/webrtc/modules/audio_processing/Makefile.am
@@ -173,6 +173,7 @@ libwebrtc_audio_processing_la_LIBADD = $(top_builddir)/webrtc/libwebrtc.la \
$(top_builddir)/webrtc/common_audio/libcommon_audio.la \
$(top_builddir)/webrtc/modules/audio_coding/libaudio_coding.la \
$(LIBWEBRTC_PRIVATEARCH) \
+ $(GNUSTL_LIBS) \
-lpthread
libwebrtc_audio_processing_la_LDFLAGS = $(AM_LDFLAGS) \
-Wl,--no-undefined \
--
2.14.3

View File

@ -1,30 +0,0 @@
From 44cf7726cac66c88afa0a752aff461e0c2918ebd Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Thu, 30 Jun 2016 16:49:16 -0400
Subject: [PATCH 03/16] build: Don't blindly link to pthread
This otherwise breaks the build on Android and Windows. The flag is
required on some Linux builds, and is readded in a subsequent commit.
https://bugs.freedesktop.org/show_bug.cgi?id=96754
---
webrtc/modules/audio_processing/Makefile.am | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/webrtc/modules/audio_processing/Makefile.am b/webrtc/modules/audio_processing/Makefile.am
index eb9bfc0..8e45e3d 100644
--- a/webrtc/modules/audio_processing/Makefile.am
+++ b/webrtc/modules/audio_processing/Makefile.am
@@ -173,8 +173,7 @@ libwebrtc_audio_processing_la_LIBADD = $(top_builddir)/webrtc/libwebrtc.la \
$(top_builddir)/webrtc/common_audio/libcommon_audio.la \
$(top_builddir)/webrtc/modules/audio_coding/libaudio_coding.la \
$(LIBWEBRTC_PRIVATEARCH) \
- $(GNUSTL_LIBS) \
- -lpthread
+ $(GNUSTL_LIBS)
libwebrtc_audio_processing_la_LDFLAGS = $(AM_LDFLAGS) \
-Wl,--no-undefined \
-version-info $(LIBWEBRTC_AUDIO_PROCESSING_VERSION_INFO)
--
2.14.3

View File

@ -1,33 +0,0 @@
From 12ac8441f75bab2a256278926fe32450a311af1b Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Mon, 4 Jul 2016 15:07:48 -0400
Subject: [PATCH 04/16] build: Add required define for Windows
This will also add it to the .pc file as WEBRTC_WIN leaks into the
public interface and undefined __STRICT_ANSI__ so M_PI is available.
https://bugs.freedesktop.org/show_bug.cgi?id=96754
---
configure.ac | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index f34be72..ccaa758 100644
--- a/configure.ac
+++ b/configure.ac
@@ -65,8 +65,11 @@ AS_CASE(["${host}"],
[OS_FLAGS="-DWEBRTC_MAC -DWEBRTC_IOS"],
[OS_FLAGS="-DWEBRTC_MAC"])
PLATFORM_CFLAGS="-DWEBRTC_POSIX"
+ ],
+ [*-mingw32*],
+ [
+ PLATFORM_CFLAGS="-DWEBRTC_WIN -U__STRICT_ANSI__"
]
- # FIXME: Add Windows support
)
AC_SUBST(PLATFORM_CFLAGS)
--
2.14.3

View File

@ -1,80 +0,0 @@
From bf6b9de143edfe45ec6f40845510bdb655f866aa Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Mon, 4 Jul 2016 16:02:29 -0400
Subject: [PATCH 05/16] build: Properly select the right system wrappers
This is needed for windows build to be usable.
https://bugs.freedesktop.org/show_bug.cgi?id=96754
---
configure.ac | 6 ++++++
webrtc/system_wrappers/Makefile.am | 12 ++++++++++--
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index ccaa758..92706e7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -53,11 +53,13 @@ AS_CASE(["${host}"],
[
OS_CFLAGS="-DWEBRTC_ANDROID -DWEBRTC_LINUX"
PLATFORM_CFLAGS="-DWEBRTC_POSIX"
+ HAVE_POSIX=1
],
[*-*linux*],
[
OS_CFLAGS="-DWEBRTC_LINUX"
PLATFORM_CFLAGS="-DWEBRTC_POSIX"
+ HAVE_POSIX=1
],
[*-*darwin*],
[
@@ -65,13 +67,17 @@ AS_CASE(["${host}"],
[OS_FLAGS="-DWEBRTC_MAC -DWEBRTC_IOS"],
[OS_FLAGS="-DWEBRTC_MAC"])
PLATFORM_CFLAGS="-DWEBRTC_POSIX"
+ HAVE_POSIX=1
],
[*-mingw32*],
[
PLATFORM_CFLAGS="-DWEBRTC_WIN -U__STRICT_ANSI__"
+ HAVE_WIN=1
]
)
AC_SUBST(PLATFORM_CFLAGS)
+AM_CONDITIONAL(HAVE_POSIX, [test "x${HAVE_POSIX}" = "x1"])
+AM_CONDITIONAL(HAVE_WIN, [test "x${HAVE_WIN}" = "x1"])
AS_CASE(["${host_cpu}"],
[i?86|x86_64],
diff --git a/webrtc/system_wrappers/Makefile.am b/webrtc/system_wrappers/Makefile.am
index 6c9f4ee..8215013 100644
--- a/webrtc/system_wrappers/Makefile.am
+++ b/webrtc/system_wrappers/Makefile.am
@@ -42,13 +42,21 @@ libsystem_wrappers_la_SOURCES = include/aligned_malloc.h \
source/trace_impl.h \
source/trace_posix.h \
source/trace_win.h
-# This assumes that we want the POSIX implementation -- should eventually be
-# converted to a conditional to include Windows support
+if HAVE_POSIX
libsystem_wrappers_la_SOURCES += source/critical_section_posix.cc \
source/event_timer_posix.cc \
source/rw_lock_posix.cc \
source/thread_posix.cc \
source/trace_posix.cc
+endif
+if HAVE_WIN
+libsystem_wrappers_la_SOURCES += source/critical_section_win.cc \
+ source/event_timer_win.cc \
+ source/rw_lock_win.cc \
+ source/rw_lock_generic.cc \
+ source/thread_win.cc \
+ source/trace_win.cc
+endif
libsystem_wrappers_la_CXXFLAGS = $(AM_CXXFLAGS) $(COMMON_CXXFLAGS)
EXTRA_DIST = BUILD.gn \
--
2.14.3

View File

@ -1,26 +0,0 @@
From db2f422578140ba6aaf7a2a1d54caacf832fbee2 Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Mon, 4 Jul 2016 17:54:45 -0400
Subject: [PATCH 06/16] build: Define MSVC _WIN32 so we can build on mingw
https://bugs.freedesktop.org/show_bug.cgi?id=96754
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 92706e7..5ec8517 100644
--- a/configure.ac
+++ b/configure.ac
@@ -71,7 +71,7 @@ AS_CASE(["${host}"],
],
[*-mingw32*],
[
- PLATFORM_CFLAGS="-DWEBRTC_WIN -U__STRICT_ANSI__"
+ PLATFORM_CFLAGS="-DWEBRTC_WIN -D_WIN32 -U__STRICT_ANSI__"
HAVE_WIN=1
]
)
--
2.14.3

View File

@ -1,616 +0,0 @@
From 6ad2f51e9e94daf6b5925590c4cc08459a2e0833 Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Mon, 4 Jul 2016 22:12:20 -0400
Subject: [PATCH 07/16] Add missing windows conditions variable
Those are used by generic RW lock implementation.
https://bugs.freedesktop.org/show_bug.cgi?id=96754
---
webrtc/system_wrappers/Makefile.am | 41 ++++-
.../include/condition_variable_wrapper.h | 42 +++++
.../system_wrappers/source/condition_variable.cc | 41 +++++
.../source/condition_variable_event_win.cc | 195 +++++++++++++++++++++
.../source/condition_variable_event_win.h | 46 +++++
.../source/condition_variable_native_win.cc | 104 +++++++++++
.../source/condition_variable_native_win.h | 54 ++++++
7 files changed, 514 insertions(+), 9 deletions(-)
create mode 100644 webrtc/system_wrappers/include/condition_variable_wrapper.h
create mode 100644 webrtc/system_wrappers/source/condition_variable.cc
create mode 100644 webrtc/system_wrappers/source/condition_variable_event_win.cc
create mode 100644 webrtc/system_wrappers/source/condition_variable_event_win.h
create mode 100644 webrtc/system_wrappers/source/condition_variable_native_win.cc
create mode 100644 webrtc/system_wrappers/source/condition_variable_native_win.h
diff --git a/webrtc/system_wrappers/Makefile.am b/webrtc/system_wrappers/Makefile.am
index 8215013..09973a7 100644
--- a/webrtc/system_wrappers/Makefile.am
+++ b/webrtc/system_wrappers/Makefile.am
@@ -2,6 +2,7 @@ noinst_LTLIBRARIES = libsystem_wrappers.la
noinst_HEADERS = include/aligned_array.h \
include/asm_defines.h \
+ include/condition_variable_wrapper.h \
include/compile_assert_c.h \
include/event_wrapper.h \
include/scoped_vector.h \
@@ -42,27 +43,49 @@ libsystem_wrappers_la_SOURCES = include/aligned_malloc.h \
source/trace_impl.h \
source/trace_posix.h \
source/trace_win.h
+
+EXTRA_DIST = BUILD.gn
+
if HAVE_POSIX
libsystem_wrappers_la_SOURCES += source/critical_section_posix.cc \
source/event_timer_posix.cc \
source/rw_lock_posix.cc \
source/thread_posix.cc \
source/trace_posix.cc
+else
+EXTRA_DIST += source/critical_section_posix.cc \
+ source/event_timer_posix.cc \
+ source/rw_lock_posix.cc \
+ source/thread_posix.cc \
+ source/trace_posix.cc
endif
+
if HAVE_WIN
-libsystem_wrappers_la_SOURCES += source/critical_section_win.cc \
+libsystem_wrappers_la_SOURCES += include/fix_interlocked_exchange_pointer_win.h \
+ source/critical_section_win.cc \
+ source/condition_variable.cc \
+ source/condition_variable_event_win.cc \
+ source/condition_variable_event_win.h \
+ source/condition_variable_native_win.cc \
+ source/condition_variable_native_win.h \
source/event_timer_win.cc \
source/rw_lock_win.cc \
source/rw_lock_generic.cc \
source/thread_win.cc \
source/trace_win.cc
+else
+EXTRA_DIST += include/fix_interlocked_exchange_pointer_win.h \
+ source/critical_section_win.cc \
+ source/condition_variable.cc \
+ source/condition_variable_event_win.cc \
+ source/condition_variable_event_win.h \
+ source/condition_variable_native_win.cc \
+ source/condition_variable_native_win.h \
+ source/event_timer_win.cc \
+ source/rw_lock_generic.cc \
+ source/rw_lock_win.cc \
+ source/thread_win.cc \
+ source/trace_win.cc
endif
-libsystem_wrappers_la_CXXFLAGS = $(AM_CXXFLAGS) $(COMMON_CXXFLAGS)
-EXTRA_DIST = BUILD.gn \
- source/critical_section_win.cc \
- source/event_timer_win.cc \
- source/rw_lock_generic.cc \
- source/rw_lock_win.cc \
- source/thread_win.cc \
- source/trace_win.cc
+libsystem_wrappers_la_CXXFLAGS = $(AM_CXXFLAGS) $(COMMON_CXXFLAGS)
diff --git a/webrtc/system_wrappers/include/condition_variable_wrapper.h b/webrtc/system_wrappers/include/condition_variable_wrapper.h
new file mode 100644
index 0000000..37ca30f
--- /dev/null
+++ b/webrtc/system_wrappers/include/condition_variable_wrapper.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef WEBRTC_SYSTEM_WRAPPERS_INCLUDE_CONDITION_VARIABLE_WRAPPER_H_
+#define WEBRTC_SYSTEM_WRAPPERS_INCLUDE_CONDITION_VARIABLE_WRAPPER_H_
+
+namespace webrtc {
+
+class CriticalSectionWrapper;
+
+class ConditionVariableWrapper {
+ public:
+ // Factory method, constructor disabled.
+ static ConditionVariableWrapper* CreateConditionVariable();
+
+ virtual ~ConditionVariableWrapper() {}
+
+ // Calling thread will atomically release crit_sect and wait until next
+ // some other thread calls Wake() or WakeAll().
+ virtual void SleepCS(CriticalSectionWrapper& crit_sect) = 0;
+
+ // Same as above but with a timeout.
+ virtual bool SleepCS(CriticalSectionWrapper& crit_sect,
+ unsigned long max_time_in_ms) = 0;
+
+ // Wakes one thread calling SleepCS().
+ virtual void Wake() = 0;
+
+ // Wakes all threads calling SleepCS().
+ virtual void WakeAll() = 0;
+};
+
+} // namespace webrtc
+
+#endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_CONDITION_VARIABLE_WRAPPER_H_
diff --git a/webrtc/system_wrappers/source/condition_variable.cc b/webrtc/system_wrappers/source/condition_variable.cc
new file mode 100644
index 0000000..f5ae93a
--- /dev/null
+++ b/webrtc/system_wrappers/source/condition_variable.cc
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "webrtc/system_wrappers/include/condition_variable_wrapper.h"
+
+#if defined(_WIN32)
+#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)
+#include <pthread.h>
+#include "webrtc/system_wrappers/source/condition_variable_posix.h"
+#endif
+
+namespace webrtc {
+
+ConditionVariableWrapper* ConditionVariableWrapper::CreateConditionVariable() {
+#if defined(_WIN32)
+ // Try to create native condition variable implementation.
+ ConditionVariableWrapper* ret_val = ConditionVariableNativeWin::Create();
+ if (!ret_val) {
+ // Native condition variable implementation does not exist. Create generic
+ // condition variable based on events.
+ ret_val = new ConditionVariableEventWin();
+ }
+ return ret_val;
+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
+ return ConditionVariablePosix::Create();
+#else
+ return NULL;
+#endif
+}
+
+} // namespace webrtc
diff --git a/webrtc/system_wrappers/source/condition_variable_event_win.cc b/webrtc/system_wrappers/source/condition_variable_event_win.cc
new file mode 100644
index 0000000..41b019d
--- /dev/null
+++ b/webrtc/system_wrappers/source/condition_variable_event_win.cc
@@ -0,0 +1,195 @@
+/*
+Source:
+http://www1.cse.wustl.edu/~schmidt/ACE-copying.html
+
+License:
+Copyright and Licensing Information for ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM),
+and CoSMIC(TM)
+
+ACE(TM), TAO(TM), CIAO(TM), DAnCE>(TM), and CoSMIC(TM) (henceforth referred to
+as "DOC software") are copyrighted by Douglas C. Schmidt and his research
+group at Washington University, University of California, Irvine, and
+Vanderbilt University, Copyright (c) 1993-2009, all rights reserved. Since DOC
+software is open-source, freely available software, you are free to use,
+modify, copy, and distribute--perpetually and irrevocably--the DOC software
+source code and object code produced from the source, as well as copy and
+distribute modified versions of this software. You must, however, include this
+copyright statement along with any code built using DOC software that you
+release. No copyright statement needs to be provided if you just ship binary
+executables of your software products.
+You can use DOC software in commercial and/or binary software releases and are
+under no obligation to redistribute any of your source code that is built
+using DOC software. Note, however, that you may not misappropriate the DOC
+software code, such as copyrighting it yourself or claiming authorship of the
+DOC software code, in a way that will prevent DOC software from being
+distributed freely using an open-source development model. You needn't inform
+anyone that you're using DOC software in your software, though we encourage
+you to let us know so we can promote your project in the DOC software success
+stories.
+
+The ACE, TAO, CIAO, DAnCE, and CoSMIC web sites are maintained by the DOC
+Group at the Institute for Software Integrated Systems (ISIS) and the Center
+for Distributed Object Computing of Washington University, St. Louis for the
+development of open-source software as part of the open-source software
+community. Submissions are provided by the submitter ``as is'' with no
+warranties whatsoever, including any warranty of merchantability,
+noninfringement of third party intellectual property, or fitness for any
+particular purpose. In no event shall the submitter be liable for any direct,
+indirect, special, exemplary, punitive, or consequential damages, including
+without limitation, lost profits, even if advised of the possibility of such
+damages. Likewise, DOC software is provided as is with no warranties of any
+kind, including the warranties of design, merchantability, and fitness for a
+particular purpose, noninfringement, or arising from a course of dealing,
+usage or trade practice. Washington University, UC Irvine, Vanderbilt
+University, their employees, and students shall have no liability with respect
+to the infringement of copyrights, trade secrets or any patents by DOC
+software or any part thereof. Moreover, in no event will Washington
+University, UC Irvine, or Vanderbilt University, their employees, or students
+be liable for any lost revenue or profits or other special, indirect and
+consequential damages.
+
+DOC software is provided with no support and without any obligation on the
+part of Washington University, UC Irvine, Vanderbilt University, their
+employees, or students to assist in its use, correction, modification, or
+enhancement. A number of companies around the world provide commercial support
+for DOC software, however. DOC software is Y2K-compliant, as long as the
+underlying OS platform is Y2K-compliant. Likewise, DOC software is compliant
+with the new US daylight savings rule passed by Congress as "The Energy Policy
+Act of 2005," which established new daylight savings times (DST) rules for the
+United States that expand DST as of March 2007. Since DOC software obtains
+time/date and calendaring information from operating systems users will not be
+affected by the new DST rules as long as they upgrade their operating systems
+accordingly.
+
+The names ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), CoSMIC(TM), Washington
+University, UC Irvine, and Vanderbilt University, may not be used to endorse
+or promote products or services derived from this source without express
+written permission from Washington University, UC Irvine, or Vanderbilt
+University. This license grants no permission to call products or services
+derived from this source ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), or CoSMIC(TM),
+nor does it grant permission for the name Washington University, UC Irvine, or
+Vanderbilt University to appear in their names.
+*/
+
+/*
+ * This source code contain modifications to the original source code
+ * which can be found here:
+ * http://www.cs.wustl.edu/~schmidt/win32-cv-1.html (section 3.2).
+ * Modifications:
+ * 1) Dynamic detection of native support for condition variables.
+ * 2) Use of WebRTC defined types and classes. Renaming of some functions.
+ * 3) Introduction of a second event for wake all functionality. This prevents
+ * a thread from spinning on the same condition variable, preventing other
+ * threads from waking up.
+ */
+
+#include "webrtc/system_wrappers/source/condition_variable_event_win.h"
+#include "webrtc/system_wrappers/source/critical_section_win.h"
+
+namespace webrtc {
+
+ConditionVariableEventWin::ConditionVariableEventWin() : eventID_(WAKEALL_0) {
+ memset(&num_waiters_[0], 0, sizeof(num_waiters_));
+
+ InitializeCriticalSection(&num_waiters_crit_sect_);
+
+ events_[WAKEALL_0] = CreateEvent(NULL, // no security attributes
+ TRUE, // manual-reset, sticky event
+ FALSE, // initial state non-signaled
+ NULL); // no name for event
+
+ events_[WAKEALL_1] = CreateEvent(NULL, // no security attributes
+ TRUE, // manual-reset, sticky event
+ FALSE, // initial state non-signaled
+ NULL); // no name for event
+
+ events_[WAKE] = CreateEvent(NULL, // no security attributes
+ FALSE, // auto-reset, sticky event
+ FALSE, // initial state non-signaled
+ NULL); // no name for event
+}
+
+ConditionVariableEventWin::~ConditionVariableEventWin() {
+ CloseHandle(events_[WAKE]);
+ CloseHandle(events_[WAKEALL_1]);
+ CloseHandle(events_[WAKEALL_0]);
+
+ DeleteCriticalSection(&num_waiters_crit_sect_);
+}
+
+void ConditionVariableEventWin::SleepCS(CriticalSectionWrapper& crit_sect) {
+ SleepCS(crit_sect, INFINITE);
+}
+
+bool ConditionVariableEventWin::SleepCS(CriticalSectionWrapper& crit_sect,
+ unsigned long max_time_in_ms) {
+ EnterCriticalSection(&num_waiters_crit_sect_);
+
+ // Get the eventID for the event that will be triggered by next
+ // WakeAll() call and start waiting for it.
+ const EventWakeUpType eventID =
+ (WAKEALL_0 == eventID_) ? WAKEALL_1 : WAKEALL_0;
+
+ ++(num_waiters_[eventID]);
+ LeaveCriticalSection(&num_waiters_crit_sect_);
+
+ CriticalSectionWindows* cs =
+ static_cast<CriticalSectionWindows*>(&crit_sect);
+ LeaveCriticalSection(&cs->crit);
+ HANDLE events[2];
+ events[0] = events_[WAKE];
+ events[1] = events_[eventID];
+ const DWORD result = WaitForMultipleObjects(2, // Wait on 2 events.
+ events,
+ FALSE, // Wait for either.
+ max_time_in_ms);
+
+ const bool ret_val = (result != WAIT_TIMEOUT);
+
+ EnterCriticalSection(&num_waiters_crit_sect_);
+ --(num_waiters_[eventID]);
+
+ // Last waiter should only be true for WakeAll(). WakeAll() correspond
+ // to position 1 in events[] -> (result == WAIT_OBJECT_0 + 1)
+ const bool last_waiter = (result == WAIT_OBJECT_0 + 1) &&
+ (num_waiters_[eventID] == 0);
+ LeaveCriticalSection(&num_waiters_crit_sect_);
+
+ if (last_waiter) {
+ // Reset/unset the WakeAll() event since all threads have been
+ // released.
+ ResetEvent(events_[eventID]);
+ }
+
+ EnterCriticalSection(&cs->crit);
+ return ret_val;
+}
+
+void ConditionVariableEventWin::Wake() {
+ EnterCriticalSection(&num_waiters_crit_sect_);
+ const bool have_waiters = (num_waiters_[WAKEALL_0] > 0) ||
+ (num_waiters_[WAKEALL_1] > 0);
+ LeaveCriticalSection(&num_waiters_crit_sect_);
+
+ if (have_waiters) {
+ SetEvent(events_[WAKE]);
+ }
+}
+
+void ConditionVariableEventWin::WakeAll() {
+ EnterCriticalSection(&num_waiters_crit_sect_);
+
+ // Update current WakeAll() event
+ eventID_ = (WAKEALL_0 == eventID_) ? WAKEALL_1 : WAKEALL_0;
+
+ // Trigger current event
+ const EventWakeUpType eventID = eventID_;
+ const bool have_waiters = num_waiters_[eventID] > 0;
+ LeaveCriticalSection(&num_waiters_crit_sect_);
+
+ if (have_waiters) {
+ SetEvent(events_[eventID]);
+ }
+}
+
+} // namespace webrtc
diff --git a/webrtc/system_wrappers/source/condition_variable_event_win.h b/webrtc/system_wrappers/source/condition_variable_event_win.h
new file mode 100644
index 0000000..cdcef7d
--- /dev/null
+++ b/webrtc/system_wrappers/source/condition_variable_event_win.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_CONDITION_VARIABLE_EVENT_WIN_H_
+#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_CONDITION_VARIABLE_EVENT_WIN_H_
+
+#include <windows.h>
+
+#include "webrtc/system_wrappers/include/condition_variable_wrapper.h"
+
+namespace webrtc {
+
+class ConditionVariableEventWin : public ConditionVariableWrapper {
+ public:
+ ConditionVariableEventWin();
+ virtual ~ConditionVariableEventWin();
+
+ void SleepCS(CriticalSectionWrapper& crit_sect);
+ bool SleepCS(CriticalSectionWrapper& crit_sect, unsigned long max_time_inMS);
+ void Wake();
+ void WakeAll();
+
+ private:
+ enum EventWakeUpType {
+ WAKEALL_0 = 0,
+ WAKEALL_1 = 1,
+ WAKE = 2,
+ EVENT_COUNT = 3
+ };
+
+ unsigned int num_waiters_[2];
+ EventWakeUpType eventID_;
+ CRITICAL_SECTION num_waiters_crit_sect_;
+ HANDLE events_[EVENT_COUNT];
+};
+
+} // namespace webrtc
+
+#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_CONDITION_VARIABLE_EVENT_WIN_H_
diff --git a/webrtc/system_wrappers/source/condition_variable_native_win.cc b/webrtc/system_wrappers/source/condition_variable_native_win.cc
new file mode 100644
index 0000000..45225f2
--- /dev/null
+++ b/webrtc/system_wrappers/source/condition_variable_native_win.cc
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "webrtc/system_wrappers/include/trace.h"
+#include "webrtc/system_wrappers/source/condition_variable_native_win.h"
+#include "webrtc/system_wrappers/source/critical_section_win.h"
+
+namespace webrtc {
+
+static HMODULE library = NULL;
+static bool win_support_condition_variables_primitive = false;
+
+PInitializeConditionVariable PInitializeConditionVariable_;
+PSleepConditionVariableCS PSleepConditionVariableCS_;
+PWakeConditionVariable PWakeConditionVariable_;
+PWakeAllConditionVariable PWakeAllConditionVariable_;
+
+typedef void (WINAPI *PInitializeConditionVariable)(PCONDITION_VARIABLE);
+typedef BOOL (WINAPI *PSleepConditionVariableCS)(PCONDITION_VARIABLE,
+ PCRITICAL_SECTION, DWORD);
+typedef void (WINAPI *PWakeConditionVariable)(PCONDITION_VARIABLE);
+typedef void (WINAPI *PWakeAllConditionVariable)(PCONDITION_VARIABLE);
+
+ConditionVariableNativeWin::ConditionVariableNativeWin() {
+}
+
+ConditionVariableNativeWin::~ConditionVariableNativeWin() {
+}
+
+ConditionVariableWrapper* ConditionVariableNativeWin::Create() {
+ ConditionVariableNativeWin* ret_val = new ConditionVariableNativeWin();
+ if (!ret_val->Init()) {
+ delete ret_val;
+ return NULL;
+ }
+ return ret_val;
+}
+
+bool ConditionVariableNativeWin::Init() {
+ if (!library) {
+ // Native implementation is supported on Vista+.
+ library = LoadLibrary(TEXT("Kernel32.dll"));
+ // TODO(henrike): this code results in an attempt to load the above dll
+ // every time the previous attempt failed. Only try to load once.
+ if (library) {
+ // TODO(henrike): not thread safe as reading and writing to library is not
+ // serialized. Fix.
+ WEBRTC_TRACE(kTraceStateInfo, kTraceUtility, -1, "Loaded Kernel.dll");
+
+ PInitializeConditionVariable_ =
+ (PInitializeConditionVariable) GetProcAddress(
+ library, "InitializeConditionVariable");
+ PSleepConditionVariableCS_ = (PSleepConditionVariableCS) GetProcAddress(
+ library, "SleepConditionVariableCS");
+ PWakeConditionVariable_ = (PWakeConditionVariable) GetProcAddress(
+ library, "WakeConditionVariable");
+ PWakeAllConditionVariable_ = (PWakeAllConditionVariable) GetProcAddress(
+ library, "WakeAllConditionVariable");
+
+ if (PInitializeConditionVariable_ && PSleepConditionVariableCS_
+ && PWakeConditionVariable_ && PWakeAllConditionVariable_) {
+ WEBRTC_TRACE(
+ kTraceStateInfo, kTraceUtility, -1,
+ "Loaded native condition variables");
+ win_support_condition_variables_primitive = true;
+ }
+ }
+ }
+ if (!win_support_condition_variables_primitive) {
+ return false;
+ }
+ PInitializeConditionVariable_(&condition_variable_);
+ return true;
+}
+
+void ConditionVariableNativeWin::SleepCS(CriticalSectionWrapper& crit_sect) {
+ SleepCS(crit_sect, INFINITE);
+}
+
+bool ConditionVariableNativeWin::SleepCS(CriticalSectionWrapper& crit_sect,
+ unsigned long max_time_in_ms) {
+ CriticalSectionWindows* cs =
+ static_cast<CriticalSectionWindows*>(&crit_sect);
+ BOOL ret_val = PSleepConditionVariableCS_(&condition_variable_,
+ &(cs->crit), max_time_in_ms);
+ return ret_val != 0;
+}
+
+void ConditionVariableNativeWin::Wake() {
+ PWakeConditionVariable_(&condition_variable_);
+}
+
+void ConditionVariableNativeWin::WakeAll() {
+ PWakeAllConditionVariable_(&condition_variable_);
+}
+
+} // namespace webrtc
diff --git a/webrtc/system_wrappers/source/condition_variable_native_win.h b/webrtc/system_wrappers/source/condition_variable_native_win.h
new file mode 100644
index 0000000..c22787f
--- /dev/null
+++ b/webrtc/system_wrappers/source/condition_variable_native_win.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_CONDITION_VARIABLE_NATIVE_WIN_H_
+#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_CONDITION_VARIABLE_NATIVE_WIN_H_
+
+#include <windows.h>
+
+#include "webrtc/system_wrappers/include/condition_variable_wrapper.h"
+
+namespace webrtc {
+
+#if !defined CONDITION_VARIABLE_INIT
+typedef struct RTL_CONDITION_VARIABLE_ {
+ void* Ptr;
+} RTL_CONDITION_VARIABLE, *PRTL_CONDITION_VARIABLE;
+
+typedef RTL_CONDITION_VARIABLE CONDITION_VARIABLE, *PCONDITION_VARIABLE;
+#endif
+
+typedef void (WINAPI* PInitializeConditionVariable)(PCONDITION_VARIABLE);
+typedef BOOL (WINAPI* PSleepConditionVariableCS)(PCONDITION_VARIABLE,
+ PCRITICAL_SECTION, DWORD);
+typedef void (WINAPI* PWakeConditionVariable)(PCONDITION_VARIABLE);
+typedef void (WINAPI* PWakeAllConditionVariable)(PCONDITION_VARIABLE);
+
+class ConditionVariableNativeWin : public ConditionVariableWrapper {
+ public:
+ static ConditionVariableWrapper* Create();
+ virtual ~ConditionVariableNativeWin();
+
+ void SleepCS(CriticalSectionWrapper& crit_sect);
+ bool SleepCS(CriticalSectionWrapper& crit_sect, unsigned long max_time_inMS);
+ void Wake();
+ void WakeAll();
+
+ private:
+ ConditionVariableNativeWin();
+
+ bool Init();
+
+ CONDITION_VARIABLE condition_variable_;
+};
+
+} // namespace webrtc
+
+#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_CONDITION_VARIABLE_NATIVE_WIN_H_
--
2.14.3

View File

@ -1,37 +0,0 @@
From 75ef0de24167daa84c11774f4bc9d1b4a9eaacfa Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Tue, 5 Jul 2016 18:07:45 -0400
Subject: [PATCH 08/16] build: Protect against unsupported CPU types
---
configure.ac | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index 5ec8517..1fcbd53 100644
--- a/configure.ac
+++ b/configure.ac
@@ -73,7 +73,8 @@ AS_CASE(["${host}"],
[
PLATFORM_CFLAGS="-DWEBRTC_WIN -D_WIN32 -U__STRICT_ANSI__"
HAVE_WIN=1
- ]
+ ],
+ [AC_MSG_ERROR([Unsupported host $host])]
)
AC_SUBST(PLATFORM_CFLAGS)
AM_CONDITIONAL(HAVE_POSIX, [test "x${HAVE_POSIX}" = "x1"])
@@ -94,8 +95,9 @@ AS_CASE(["${host_cpu}"],
[
HAVE_ARM=1
ARCH_CFLAGS="-DWEBRTC_ARCH_ARM"
- ]
+ ],
# FIXME: Add MIPS support, see webrtc/BUILD.gn for defines
+ [AC_MSG_ERROR([Unsupported CPU type $host_cpu])]
)
AM_CONDITIONAL(HAVE_X86, [test "x${HAVE_X86}" = "x1"])
AM_CONDITIONAL(HAVE_ARM, [test "x${HAVE_ARM}" = "x1"])
--
2.14.3

View File

@ -1,27 +0,0 @@
From 1378babdf0f56938408d8137595023efe1bd7c2d Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Tue, 5 Jul 2016 18:44:19 -0400
Subject: [PATCH 09/16] osx: Fix type OS_FLAGS instead of OS_CFLAGS
---
configure.ac | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index 1fcbd53..41d521c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -64,8 +64,8 @@ AS_CASE(["${host}"],
[*-*darwin*],
[
AS_IF([test "$HAVE_IOS" = "yes"],
- [OS_FLAGS="-DWEBRTC_MAC -DWEBRTC_IOS"],
- [OS_FLAGS="-DWEBRTC_MAC"])
+ [OS_CFLAGS="-DWEBRTC_MAC -DWEBRTC_IOS"],
+ [OS_CFLAGS="-DWEBRTC_MAC"])
PLATFORM_CFLAGS="-DWEBRTC_POSIX"
HAVE_POSIX=1
],
--
2.14.3

View File

@ -1,75 +0,0 @@
From c9cffb9e3d632b61465afbca5d10c36512888035 Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Wed, 6 Jul 2016 11:32:55 -0400
Subject: [PATCH 10/16] build: Sync defines and libs with build.gn
---
configure.ac | 13 +++++++++----
webrtc/modules/audio_processing/Makefile.am | 2 +-
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/configure.ac b/configure.ac
index 41d521c..bdefd72 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,26 +51,29 @@ AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IO
AS_CASE(["${host}"],
[*android*],
[
- OS_CFLAGS="-DWEBRTC_ANDROID -DWEBRTC_LINUX"
+ OS_CFLAGS="-DWEBRTC_ANDROID -DWEBRTC_LINUX -DWEBRTC_THREAD_RR -DWEBRTC_CLOCK_TYPE_REALTIME"
+ OS_LDFLAGS="-llog"
PLATFORM_CFLAGS="-DWEBRTC_POSIX"
HAVE_POSIX=1
],
[*-*linux*],
[
- OS_CFLAGS="-DWEBRTC_LINUX"
+ OS_CFLAGS="-DWEBRTC_LINUX -DWEBRTC_THREAD_RR"
PLATFORM_CFLAGS="-DWEBRTC_POSIX"
+ OS_LDFLAGS="-lrt"
HAVE_POSIX=1
],
[*-*darwin*],
[
+ OS_CFLAGS="-DWEBRTC_MAC -DWEBRTC_THREAD_RR -DWEBRTC_CLOCK_TYPE_REALTIME"
AS_IF([test "$HAVE_IOS" = "yes"],
- [OS_CFLAGS="-DWEBRTC_MAC -DWEBRTC_IOS"],
- [OS_CFLAGS="-DWEBRTC_MAC"])
+ [OS_CFLAGS+=" -DWEBRTC_IOS"])
PLATFORM_CFLAGS="-DWEBRTC_POSIX"
HAVE_POSIX=1
],
[*-mingw32*],
[
+ OS_LDFLAGS="-lwinmm"
PLATFORM_CFLAGS="-DWEBRTC_WIN -D_WIN32 -U__STRICT_ANSI__"
HAVE_WIN=1
],
@@ -131,8 +134,10 @@ AM_CONDITIONAL([HAVE_NEON], [test "x$HAVE_NEON" = "x1"])
COMMON_CFLAGS="-DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD ${PLATFORM_CFLAGS} ${OS_CFLAGS} ${ARCH_CFLAGS} -DNDEBUG -I\$(top_srcdir)"
COMMON_CXXFLAGS="-std=c++11 -DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD ${PLATFORM_CFLAGS} ${OS_CFLAGS} ${ARCH_CFLAGS} ${GNUSTL_CFLAGS} -DNDEBUG -I\$(top_srcdir)"
+COMMON_LDFLAGS="${OS_LDFLAGS}"
AC_SUBST([COMMON_CFLAGS])
AC_SUBST([COMMON_CXXFLAGS])
+AC_SUBST([COMMON_LDFLAGS])
AC_CONFIG_FILES([
webrtc-audio-processing.pc
diff --git a/webrtc/modules/audio_processing/Makefile.am b/webrtc/modules/audio_processing/Makefile.am
index 8e45e3d..de259f0 100644
--- a/webrtc/modules/audio_processing/Makefile.am
+++ b/webrtc/modules/audio_processing/Makefile.am
@@ -174,7 +174,7 @@ libwebrtc_audio_processing_la_LIBADD = $(top_builddir)/webrtc/libwebrtc.la \
$(top_builddir)/webrtc/modules/audio_coding/libaudio_coding.la \
$(LIBWEBRTC_PRIVATEARCH) \
$(GNUSTL_LIBS)
-libwebrtc_audio_processing_la_LDFLAGS = $(AM_LDFLAGS) \
+libwebrtc_audio_processing_la_LDFLAGS = $(AM_LDFLAGS) $(COMMON_LDFLAGS) \
-Wl,--no-undefined \
-version-info $(LIBWEBRTC_AUDIO_PROCESSING_VERSION_INFO)
--
2.14.3

View File

@ -1,25 +0,0 @@
From b8be6d1095df620bf0e2b5855818fa4340244254 Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Wed, 6 Jul 2016 13:44:15 -0400
Subject: [PATCH 11/16] build: Use -no-undefined to support both clang and gcc
---
webrtc/modules/audio_processing/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/webrtc/modules/audio_processing/Makefile.am b/webrtc/modules/audio_processing/Makefile.am
index de259f0..5a98913 100644
--- a/webrtc/modules/audio_processing/Makefile.am
+++ b/webrtc/modules/audio_processing/Makefile.am
@@ -175,7 +175,7 @@ libwebrtc_audio_processing_la_LIBADD = $(top_builddir)/webrtc/libwebrtc.la \
$(LIBWEBRTC_PRIVATEARCH) \
$(GNUSTL_LIBS)
libwebrtc_audio_processing_la_LDFLAGS = $(AM_LDFLAGS) $(COMMON_LDFLAGS) \
- -Wl,--no-undefined \
+ -no-undefined \
-version-info $(LIBWEBRTC_AUDIO_PROCESSING_VERSION_INFO)
# FIXME: The MIPS optimisations need to be hooked up once we have the
--
2.14.3

View File

@ -1,25 +0,0 @@
From 7a37a8bca386faf206fef32cd8cdf0f8ea3313d5 Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Wed, 6 Jul 2016 13:57:00 -0400
Subject: [PATCH 12/16] build: Re-add pthread linking on linux
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index bdefd72..a0c194a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -60,7 +60,7 @@ AS_CASE(["${host}"],
[
OS_CFLAGS="-DWEBRTC_LINUX -DWEBRTC_THREAD_RR"
PLATFORM_CFLAGS="-DWEBRTC_POSIX"
- OS_LDFLAGS="-lrt"
+ OS_LDFLAGS="-lrt -lpthread"
HAVE_POSIX=1
],
[*-*darwin*],
--
2.14.3

View File

@ -1,28 +0,0 @@
From 7d15b10fb0829d456486da6a49a84492dd3eca4f Mon Sep 17 00:00:00 2001
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: Wed, 6 Jul 2016 15:18:15 -0400
Subject: [PATCH 13/16] build: Add ARM 64bit support
---
configure.ac | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/configure.ac b/configure.ac
index a0c194a..b4b9ddf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -99,6 +99,11 @@ AS_CASE(["${host_cpu}"],
HAVE_ARM=1
ARCH_CFLAGS="-DWEBRTC_ARCH_ARM"
],
+ [aarch64*],
+ [
+ HAVE_NEON=1
+ ARCH_CFLAGS="-DWEBRTC_HAS_NEON -DWEBRTC_ARCH_ARM64"
+ ],
# FIXME: Add MIPS support, see webrtc/BUILD.gn for defines
[AC_MSG_ERROR([Unsupported CPU type $host_cpu])]
)
--
2.14.3

View File

@ -1,94 +0,0 @@
From ff77a85c28564d939d554ba264480d1876cbc316 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 6 Aug 2016 11:02:43 +0200
Subject: [PATCH 14/16] build: fix architecture detection
The current architecture detection, based on the "host_cpu" part of the
tuple does not work properly for a number of reason:
- The code assumes that if host_cpu starts with "arm" then ARM
instructions are available, which is incorrect. Indeed, Cortex-M
platforms can run Linux, they are ARM platforms (so host_cpu = arm),
but they don't support ARM instructions: they support only the
Thumb-2 instruction set.
- The armv7 case is also not very useful, as it is not standard at all
to pass armv7 as host_cpu even if the host system is actually ARMv7
based.
- For the same reason, the armv8 case is not very useful: ARMv8 is
AArch64, and there is already a separate case to handle this
architecture.
So, this commit moves away from a host_cpu based logic, and instead
tests using AC_CHECK_DECLS() the built-in definitions of the compiler:
- If we have __ARM_ARCH_ISA_ARM defined, then it's an ARM processor
that supports the ARM instruction set (this allows to exclude Thumb-2
only processors).
- If we have __ARM_ARCH_7A__, then we have an ARMv7-A processor, and
we can enable the corresponding optimizations
- Same for __aarch64__, __i386__ and __x86_64__.
In addition, we remove the AC_MSG_ERROR() that makes the build fail for
all architectures but the ones that are explicitly supported. Indeed,
webrtc-audio-processing builds just fine for other architectures (tested
on MIPS), it's just that none of the architecture-specific optimizations
will be used.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
configure.ac | 35 +++++++++++------------------------
1 file changed, 11 insertions(+), 24 deletions(-)
diff --git a/configure.ac b/configure.ac
index b4b9ddf..acbb3e2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -83,30 +83,17 @@ AC_SUBST(PLATFORM_CFLAGS)
AM_CONDITIONAL(HAVE_POSIX, [test "x${HAVE_POSIX}" = "x1"])
AM_CONDITIONAL(HAVE_WIN, [test "x${HAVE_WIN}" = "x1"])
-AS_CASE(["${host_cpu}"],
- [i?86|x86_64],
- [
- HAVE_X86=1
- ],
- [armv7*|armv8*],
- [
- HAVE_ARM=1
- HAVE_ARMV7=1
- ARCH_CFLAGS="-DWEBRTC_ARCH_ARM -DWEBRTC_ARCH_ARM_V7"
- ],
- [arm*],
- [
- HAVE_ARM=1
- ARCH_CFLAGS="-DWEBRTC_ARCH_ARM"
- ],
- [aarch64*],
- [
- HAVE_NEON=1
- ARCH_CFLAGS="-DWEBRTC_HAS_NEON -DWEBRTC_ARCH_ARM64"
- ],
- # FIXME: Add MIPS support, see webrtc/BUILD.gn for defines
- [AC_MSG_ERROR([Unsupported CPU type $host_cpu])]
-)
+# Testing __ARM_ARCH_ISA_ARM since the code contains ARM instructions,
+# which don't work on Thumb-2 only platforms (ARMv7-M).
+AC_CHECK_DECLS([__ARM_ARCH_ISA_ARM],
+ [HAVE_ARM=1; ARCH_CFLAGS="${ARCH_CFLAGS} -DWEBRTC_ARCH_ARM"])
+AC_CHECK_DECLS([__ARM_ARCH_7A__],
+ [HAVE_ARMV7=1; ARCH_CFLAGS="${ARCH_CFLAGS} -DWEBRTC_ARCH_ARM_V7"])
+AC_CHECK_DECLS([__aarch64__],
+ [HAVE_NEON=1; ARCH_CFLAGS="${ARCH_CFLAGS} -DWEBRTC_HAS_NEON -DWEBRTC_ARCH_ARM64"])
+AC_CHECK_DECLS([__i386__], [HAVE_X86=1])
+AC_CHECK_DECLS([__x86_64__], [HAVE_X86=1])
+
AM_CONDITIONAL(HAVE_X86, [test "x${HAVE_X86}" = "x1"])
AM_CONDITIONAL(HAVE_ARM, [test "x${HAVE_ARM}" = "x1"])
AM_CONDITIONAL(HAVE_ARMV7, [test "x${HAVE_ARMV7}" = "x1"])
--
2.14.3

View File

@ -1,26 +0,0 @@
From 0d937fbc7152f34f32cd4cd016ed623434b90796 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 6 Aug 2016 11:03:27 +0200
Subject: [PATCH 15/16] doc: file invalid reference to pulseaudio mailing list
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 03de756..9133f17 100644
--- a/README.md
+++ b/README.md
@@ -18,7 +18,7 @@ Feedback
========
Patches, suggestions welcome. You can send them to the PulseAudio mailing
-list[2] or to me at the address below.
+list[3] or to me at the address below.
-- Arun Raghavan <mail@arunraghavan.net>
--
2.14.3

View File

@ -1,30 +0,0 @@
From ee8cfef49b8417c2f0ba65a249d2ee8c360d19ab Mon Sep 17 00:00:00 2001
From: Mirko Vogt <mirko-dev@nanl.de>
Date: Fri, 6 Jan 2017 03:04:20 +0100
Subject: [PATCH 16/16] build: Fix configure option '--with-ns-mode'
Make *really* take '--with-ns-mode'-option into account.
Before it was bogus (wrong if-check) and it always resulted
in the float version being used.
Signed-off-by: Mirko Vogt <mirko-dev@nanl.de>
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index acbb3e2..e78bf27 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@ AC_LANG_CPLUSPLUS
AC_ARG_WITH([ns-mode],
AS_HELP_STRING([--with-ns-mode=float|fixed], [Noise suppresion mode to use. Default is float]))
-AS_CASE(["x${with_ns_mode}"],
+AS_CASE(["${with_ns_mode}"],
["fixed"], [NS_FIXED=1],
["float"], [NS_FIXED=0],
[NS_FIXED=0])
--
2.14.3

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-8
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: desktop-qe.desktop-ci.tier1-gating.functional}

17
sources Normal file
View File

@ -0,0 +1,17 @@
SHA512 (webrtc-audio-processing-0.3.tar.xz) = fac99ae0c28290afedce8745bb159af1d375bf17e448a4e020b3b04f4ade24929d1d110923c4363c06a963675a201135621f0d20e57edff42bbcfbaedf91b4d0
SHA512 (0001-Add-missing-windows-specific-headers.patch) = 8cac02a28b629e2a8222c8a70eb2fe344cab105236fde4d1fed40f5816acc66b3825e681ab99e4ed8c6d3c6607d4d5364feaaa3118bc5e30d60214ec968a73b3
SHA512 (0002-build-Add-cerbero-gnustl-support-for-Android.patch) = 8875fd15857834519d80e49d72a47042ebdc355bae0bfcc59c08af59d278a37d2f4d3b8d5176bcd21e0ab71d5cc4c57a16e6298e5b91a05fbc60a985bedd876e
SHA512 (0003-build-Don-t-blindly-link-to-pthread.patch) = 26c5799277f3571303669ab45adc9dd7f4d0c2015aa0d45b6a1bcbf73f1591358594373aa5a46a2b1ccbab78d6b693e3ec974917b5a1ace4a21a7aa9231c5b32
SHA512 (0004-build-Add-required-define-for-Windows.patch) = 39797a10ae99fef8fdf382c4b231621734e6bcb373a747e4add447a24ea3f7952d6fbdf7ae38dcf7f241d254449c33980572213b7669b2eaf2c37fe9240e02dd
SHA512 (0005-build-Properly-select-the-right-system-wrappers.patch) = 410143e61e51686412f5a180d9fab9511dc6adc1512a41f652d7dc6451ee1b51fb1b5aa3abce799456b80f7700c0c008c81460d188c7f7e364c6daf5585a8631
SHA512 (0006-build-Define-MSVC-_WIN32-so-we-can-build-on-mingw.patch) = 9baaa8219a198da38a5b89530255b04647f51e99777a79a4a111c3b43520797a17a9cd7fb29b362835722e2565070f040ffc0aa17bcb0312d5317ac196d23c57
SHA512 (0007-Add-missing-windows-conditions-variable.patch) = b9a1476d413daa5695c2067aa148696bcb934d1b44238cf5644d034b1531e6967386b8fcf9bccc81897c9c4a026413cbf24366648644fc0cef8e9afcd31b6891
SHA512 (0008-build-Protect-against-unsupported-CPU-types.patch) = 2679a024b6813ae32f87f8937b9ae85628f55eba4c2f907b4c51298c737e9e0e8f4bee7f9542e21ac46ba1c4abc89d8a628f60b1fc528247a292448606833e2f
SHA512 (0009-osx-Fix-type-OS_FLAGS-instead-of-OS_CFLAGS.patch) = 6b05f191ea558911decb1ae7df265c9007144a47a0a9b74f2b7eec7ee5181410540528dfe2c3a2ee6d498d70141eb40bfe08709ed842bbe7fc56e4af4f26f4a3
SHA512 (0010-build-Sync-defines-and-libs-with-build.gn.patch) = 1a4d8eb6bbd3ba315192115bd45ddc806df2fbd4c5b0e5a3456e13dff99edf58f11cf67c135e0ec54772e26581b7cd57c7796c104c822ba0b269ba000ac8a7e4
SHA512 (0011-build-Use-no-undefined-to-support-both-clang-and-gcc.patch) = 9efa423e98cb43ceeb706389f185b9ff546ac668af618a5ed499aa3fc8bce3c7e215ffbc7381bb2cce67fe935d88a25cea28aa4af0f56bda72c555190c7c8fbf
SHA512 (0012-build-Re-add-pthread-linking-on-linux.patch) = a184ba2e4edc5dbe05623bc7534cd81568f173cc9e7ee1bd74051d59592c654fa17a25bee5fb5b64217e3c1fea21ea44c465cd45557afdb6df695dd8b0857ecb
SHA512 (0013-build-Add-ARM-64bit-support.patch) = 463e971c267b37ded9f94126ffa845a5df62f98fc63844562e648330cc2059c0a6913d68289b7189238884371de9a11c702289f951613defa5043d74798a7b5f
SHA512 (0014-build-fix-architecture-detection.patch) = d4750b51fb1bc3b2f2be37538d04385722bfd4bc212ab273d9b19bb4d8e5385e471957023e92945a8e81ca1ee50fd73c8d5cb334af0f4d992ed9697db54f6110
SHA512 (0015-doc-file-invalid-reference-to-pulseaudio-mailing-lis.patch) = d7a1046cdc18257eec62af5854755aadfea755627c246a360bab6d09e0b1b91357a3221e6fc6a7f67cf3b93dff9ce7b0221955754309f555b2dd119c9a204192
SHA512 (0016-build-Fix-configure-option-with-ns-mode.patch) = 6369b6ad9ece26aa5c4faf4c56afd85cc1d7ad0488c3c537ea3600a3cf6be821d0530fdcf4de77002eee4e28ea95c02cb63826e5536321cb0361fbb724efa277

View File

@ -84,7 +84,7 @@ find %{buildroot} -type f -name "*.la" -delete
%changelog
* Tue Jan 11 2021 Tomas Popela <tpopela@redhat.com> 0.3-10
* Tue Jan 11 2022 Tomas Popela <tpopela@redhat.com> 0.3-10
- Include devel package in CRB
- Resolves: #2036956