Decoupling audio_device from Obj-C code
The goal of this CL is to separate Obj-C/Obj-C++ code from targets which have also C++ code (see https://bugs.chromium.org/p/webrtc/issues/detail?id=7743 for more information). To achieve this we have created 2 targets (audio_device_ios_objc and audio_device_generic) and audio_device will act as a proxy between these targets (this way we can avoid a circular dependency between audio_device_generic and audio_device_ios_objc). BUG=webrtc:7743 Review-Url: https://codereview.webrtc.org/2991343002 Cr-Commit-Position: refs/heads/master@{#19795}
This commit is contained in:
parent
2475ae2e4c
commit
bcc2176e64
@ -45,7 +45,55 @@ config("audio_device_warnings_config") {
|
||||
}
|
||||
}
|
||||
|
||||
rtc_static_library("audio_device") {
|
||||
rtc_source_set("audio_device") {
|
||||
public_deps = [
|
||||
":audio_device_generic",
|
||||
]
|
||||
if (rtc_include_internal_audio_device && is_ios) {
|
||||
public_deps += [ ":audio_device_ios_objc" ]
|
||||
}
|
||||
}
|
||||
|
||||
if (rtc_include_internal_audio_device && is_ios) {
|
||||
rtc_source_set("audio_device_ios_objc") {
|
||||
visibility = [ ":audio_device" ]
|
||||
sources = [
|
||||
"ios/audio_device_ios.h",
|
||||
"ios/audio_device_ios.mm",
|
||||
"ios/audio_device_not_implemented_ios.mm",
|
||||
"ios/audio_session_observer.h",
|
||||
"ios/objc/RTCAudioSessionDelegateAdapter.h",
|
||||
"ios/objc/RTCAudioSessionDelegateAdapter.mm",
|
||||
"ios/voice_processing_audio_unit.h",
|
||||
"ios/voice_processing_audio_unit.mm",
|
||||
]
|
||||
libs = [
|
||||
"AudioToolbox.framework",
|
||||
"AVFoundation.framework",
|
||||
"Foundation.framework",
|
||||
"UIKit.framework",
|
||||
]
|
||||
deps = [
|
||||
":audio_device_generic",
|
||||
"../../api:array_view",
|
||||
"../../rtc_base:gtest_prod",
|
||||
"../../rtc_base:rtc_base",
|
||||
"../../sdk:audio_objc",
|
||||
"../../sdk:common_objc",
|
||||
"../../system_wrappers:metrics_api",
|
||||
]
|
||||
if (!build_with_chromium && is_clang) {
|
||||
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
||||
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rtc_source_set("audio_device_generic") {
|
||||
visibility = [
|
||||
":audio_device",
|
||||
":audio_device_ios_objc",
|
||||
]
|
||||
public_configs = [ ":audio_device_config" ]
|
||||
|
||||
deps = [
|
||||
@ -176,30 +224,6 @@ rtc_static_library("audio_device") {
|
||||
"CoreGraphics.framework",
|
||||
]
|
||||
}
|
||||
if (is_ios) {
|
||||
public_deps = [
|
||||
"../../rtc_base:gtest_prod",
|
||||
"../../rtc_base:rtc_base",
|
||||
"../../sdk:audio_objc",
|
||||
"../../sdk:common_objc",
|
||||
]
|
||||
sources += [
|
||||
"ios/audio_device_ios.h",
|
||||
"ios/audio_device_ios.mm",
|
||||
"ios/audio_device_not_implemented_ios.mm",
|
||||
"ios/audio_session_observer.h",
|
||||
"ios/objc/RTCAudioSessionDelegateAdapter.h",
|
||||
"ios/objc/RTCAudioSessionDelegateAdapter.mm",
|
||||
"ios/voice_processing_audio_unit.h",
|
||||
"ios/voice_processing_audio_unit.mm",
|
||||
]
|
||||
libs = [
|
||||
"AudioToolbox.framework",
|
||||
"AVFoundation.framework",
|
||||
"Foundation.framework",
|
||||
"UIKit.framework",
|
||||
]
|
||||
}
|
||||
if (is_win) {
|
||||
sources += [
|
||||
"win/audio_device_core_win.cc",
|
||||
@ -267,6 +291,32 @@ rtc_source_set("mock_audio_device") {
|
||||
}
|
||||
|
||||
if (rtc_include_tests) {
|
||||
# TODO(kthelgason): Reenable these tests on simulator.
|
||||
# See bugs.webrtc.org/7812
|
||||
if (is_ios && !use_ios_simulator) {
|
||||
rtc_source_set("audio_device_ios_objc_unittests") {
|
||||
testonly = true
|
||||
visibility = [ ":*" ]
|
||||
sources = [
|
||||
"ios/audio_device_unittest_ios.mm",
|
||||
]
|
||||
deps = [
|
||||
":audio_device",
|
||||
":mock_audio_device",
|
||||
"../../rtc_base:rtc_base_approved",
|
||||
"../../sdk:audio_objc",
|
||||
"../../system_wrappers",
|
||||
"../../test:test_support",
|
||||
"//testing/gmock",
|
||||
"//third_party/ocmock",
|
||||
]
|
||||
if (!build_with_chromium && is_clang) {
|
||||
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
||||
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rtc_source_set("audio_device_unittests") {
|
||||
testonly = true
|
||||
|
||||
@ -285,7 +335,7 @@ if (rtc_include_tests) {
|
||||
"../../api:array_view",
|
||||
"../../api:optional",
|
||||
"../../rtc_base:rtc_base_approved",
|
||||
"../../system_wrappers:system_wrappers",
|
||||
"../../system_wrappers",
|
||||
"../../test:test_support",
|
||||
"../utility:utility",
|
||||
"//testing/gmock",
|
||||
@ -310,12 +360,6 @@ if (rtc_include_tests) {
|
||||
"../../sdk/android:libjingle_peerconnection_java",
|
||||
]
|
||||
}
|
||||
if (is_ios && !use_ios_simulator) {
|
||||
# TODO(kthelgason): Reenable these tests on simulator.
|
||||
# See bugs.webrtc.org/7812
|
||||
sources += [ "ios/audio_device_unittest_ios.mm" ]
|
||||
deps += [ "//third_party/ocmock" ]
|
||||
}
|
||||
if (!build_with_chromium && is_clang) {
|
||||
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
|
||||
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
|
||||
|
||||
@ -7,6 +7,9 @@ specific_include_rules = {
|
||||
"ensure_initialized\.cc": [
|
||||
"+base/android",
|
||||
],
|
||||
"audio_device_ios\.h": [
|
||||
"+webrtc/sdk/objc",
|
||||
],
|
||||
"audio_device_ios\.mm": [
|
||||
"+webrtc/sdk/objc",
|
||||
],
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "WebRTC/RTCMacros.h"
|
||||
#include "webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMacros.h"
|
||||
#include "webrtc/modules/audio_device/audio_device_generic.h"
|
||||
#include "webrtc/modules/audio_device/ios/audio_session_observer.h"
|
||||
#include "webrtc/modules/audio_device/ios/voice_processing_audio_unit.h"
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#import "WebRTC/RTCAudioSession.h"
|
||||
#import "webrtc/sdk/objc/Framework/Headers/WebRTC/RTCAudioSession.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "WebRTC/RTCMacros.h"
|
||||
#import "webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMacros.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user