NOTE: the new code is disabled by default in the WebRtcAudioManager to ensure that OpenSL ES is not accidentally activated in existing clients. There are still some unresolved issues to sort out before it can be utilized. Enables possibility to use OpenSL ES based audio in both directions for WebRTC. All unit tests and demo clients have been tested with the new implementation but the new support is behind a flag (see above). More testing is needed before it can be used in the field and additional support for hardware effects is still missing. BUG=webrtc:5925 R=tommi@webrtc.org Review URL: https://codereview.webrtc.org/2119633004 . Cr-Commit-Position: refs/heads/master@{#14290}
263 lines
9.8 KiB
Python
263 lines
9.8 KiB
Python
# Copyright (c) 2012 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.
|
|
|
|
{
|
|
'targets': [
|
|
{
|
|
'target_name': 'audio_device',
|
|
'type': 'static_library',
|
|
'dependencies': [
|
|
'webrtc_utility',
|
|
'<(webrtc_root)/base/base.gyp:rtc_base_approved',
|
|
'<(webrtc_root)/common.gyp:webrtc_common',
|
|
'<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
|
|
'<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
|
|
],
|
|
'include_dirs': [
|
|
'.',
|
|
'../include',
|
|
'include',
|
|
'dummy', # Contains dummy audio device implementations.
|
|
],
|
|
'direct_dependent_settings': {
|
|
'include_dirs': [
|
|
'../include',
|
|
'include',
|
|
],
|
|
},
|
|
# TODO(xians): Rename files to e.g. *_linux.{ext}, remove sources in conditions section
|
|
'sources': [
|
|
'include/audio_device.h',
|
|
'include/audio_device_defines.h',
|
|
'audio_device_buffer.cc',
|
|
'audio_device_buffer.h',
|
|
'audio_device_generic.cc',
|
|
'audio_device_generic.h',
|
|
'audio_device_config.h',
|
|
'dummy/audio_device_dummy.cc',
|
|
'dummy/audio_device_dummy.h',
|
|
'dummy/file_audio_device.cc',
|
|
'dummy/file_audio_device.h',
|
|
'fine_audio_buffer.cc',
|
|
'fine_audio_buffer.h',
|
|
],
|
|
'conditions': [
|
|
['OS=="linux"', {
|
|
'include_dirs': [
|
|
'linux',
|
|
],
|
|
}], # OS==linux
|
|
['OS=="ios"', {
|
|
'include_dirs': [
|
|
'ios',
|
|
],
|
|
}], # OS==ios
|
|
['OS=="mac"', {
|
|
'include_dirs': [
|
|
'mac',
|
|
],
|
|
}], # OS==mac
|
|
['OS=="win"', {
|
|
'include_dirs': [
|
|
'win',
|
|
],
|
|
}],
|
|
['OS=="android"', {
|
|
'include_dirs': [
|
|
'android',
|
|
],
|
|
}], # OS==android
|
|
['include_internal_audio_device==0', {
|
|
'defines': [
|
|
'WEBRTC_DUMMY_AUDIO_BUILD',
|
|
],
|
|
}],
|
|
['build_with_chromium==0', {
|
|
'sources': [
|
|
# Don't link these into Chrome since they contain static data.
|
|
'dummy/file_audio_device_factory.cc',
|
|
'dummy/file_audio_device_factory.h',
|
|
],
|
|
}],
|
|
['include_internal_audio_device==1', {
|
|
'sources': [
|
|
'audio_device_impl.cc',
|
|
'audio_device_impl.h',
|
|
],
|
|
'conditions': [
|
|
['use_dummy_audio_file_devices==1', {
|
|
'defines': [
|
|
'WEBRTC_DUMMY_FILE_DEVICES',
|
|
],
|
|
}, { # use_dummy_audio_file_devices==0, so use a platform device.
|
|
'conditions': [
|
|
['OS=="android"', {
|
|
'sources': [
|
|
'android/audio_device_template.h',
|
|
'android/audio_manager.cc',
|
|
'android/audio_manager.h',
|
|
'android/audio_record_jni.cc',
|
|
'android/audio_record_jni.h',
|
|
'android/audio_track_jni.cc',
|
|
'android/audio_track_jni.h',
|
|
'android/build_info.cc',
|
|
'android/build_info.h',
|
|
'android/opensles_common.cc',
|
|
'android/opensles_common.h',
|
|
'android/opensles_player.cc',
|
|
'android/opensles_player.h',
|
|
'android/opensles_recorder.cc',
|
|
'android/opensles_recorder.h',
|
|
],
|
|
'link_settings': {
|
|
'libraries': [
|
|
'-llog',
|
|
'-lOpenSLES',
|
|
],
|
|
},
|
|
}],
|
|
['OS=="linux"', {
|
|
'sources': [
|
|
'linux/alsasymboltable_linux.cc',
|
|
'linux/alsasymboltable_linux.h',
|
|
'linux/audio_device_alsa_linux.cc',
|
|
'linux/audio_device_alsa_linux.h',
|
|
'linux/audio_mixer_manager_alsa_linux.cc',
|
|
'linux/audio_mixer_manager_alsa_linux.h',
|
|
'linux/latebindingsymboltable_linux.cc',
|
|
'linux/latebindingsymboltable_linux.h',
|
|
],
|
|
'defines': [
|
|
'LINUX_ALSA',
|
|
],
|
|
'link_settings': {
|
|
'libraries': [
|
|
'-ldl','-lX11',
|
|
],
|
|
},
|
|
'conditions': [
|
|
['include_pulse_audio==1', {
|
|
'defines': [
|
|
'LINUX_PULSE',
|
|
],
|
|
'sources': [
|
|
'linux/audio_device_pulse_linux.cc',
|
|
'linux/audio_device_pulse_linux.h',
|
|
'linux/audio_mixer_manager_pulse_linux.cc',
|
|
'linux/audio_mixer_manager_pulse_linux.h',
|
|
'linux/pulseaudiosymboltable_linux.cc',
|
|
'linux/pulseaudiosymboltable_linux.h',
|
|
],
|
|
}],
|
|
],
|
|
}],
|
|
['OS=="mac"', {
|
|
'sources': [
|
|
'mac/audio_device_mac.cc',
|
|
'mac/audio_device_mac.h',
|
|
'mac/audio_mixer_manager_mac.cc',
|
|
'mac/audio_mixer_manager_mac.h',
|
|
'mac/portaudio/pa_memorybarrier.h',
|
|
'mac/portaudio/pa_ringbuffer.c',
|
|
'mac/portaudio/pa_ringbuffer.h',
|
|
],
|
|
'link_settings': {
|
|
'libraries': [
|
|
'$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework',
|
|
'$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework',
|
|
],
|
|
},
|
|
}],
|
|
['OS=="ios"', {
|
|
'dependencies': [
|
|
'<(webrtc_root)/base/base.gyp:rtc_base',
|
|
'<(webrtc_root)/sdk/sdk.gyp:rtc_sdk_common_objc',
|
|
],
|
|
'export_dependent_settings': [
|
|
'<(webrtc_root)/sdk/sdk.gyp:rtc_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/RTCAudioSession+Configuration.mm',
|
|
'ios/objc/RTCAudioSession+Private.h',
|
|
'ios/objc/RTCAudioSession.h',
|
|
'ios/objc/RTCAudioSession.mm',
|
|
'ios/objc/RTCAudioSessionConfiguration.h',
|
|
'ios/objc/RTCAudioSessionConfiguration.m',
|
|
'ios/objc/RTCAudioSessionDelegateAdapter.h',
|
|
'ios/objc/RTCAudioSessionDelegateAdapter.mm',
|
|
'ios/voice_processing_audio_unit.h',
|
|
'ios/voice_processing_audio_unit.mm',
|
|
],
|
|
'xcode_settings': {
|
|
'CLANG_ENABLE_OBJC_ARC': 'YES',
|
|
},
|
|
'link_settings': {
|
|
'xcode_settings': {
|
|
'OTHER_LDFLAGS': [
|
|
'-framework AudioToolbox',
|
|
'-framework AVFoundation',
|
|
'-framework Foundation',
|
|
'-framework UIKit',
|
|
],
|
|
},
|
|
},
|
|
}],
|
|
['OS=="win"', {
|
|
'sources': [
|
|
'win/audio_device_core_win.cc',
|
|
'win/audio_device_core_win.h',
|
|
'win/audio_device_wave_win.cc',
|
|
'win/audio_device_wave_win.h',
|
|
'win/audio_mixer_manager_win.cc',
|
|
'win/audio_mixer_manager_win.h',
|
|
],
|
|
'link_settings': {
|
|
'libraries': [
|
|
# Required for the built-in WASAPI AEC.
|
|
'-ldmoguids.lib',
|
|
'-lwmcodecdspuuid.lib',
|
|
'-lamstrmid.lib',
|
|
'-lmsdmo.lib',
|
|
],
|
|
},
|
|
}],
|
|
['OS=="win" and clang==1', {
|
|
'msvs_settings': {
|
|
'VCCLCompilerTool': {
|
|
'AdditionalOptions': [
|
|
# Disable warnings failing when compiling with Clang on Windows.
|
|
# https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
|
|
'-Wno-bool-conversion',
|
|
'-Wno-delete-non-virtual-dtor',
|
|
'-Wno-logical-op-parentheses',
|
|
'-Wno-microsoft-extra-qualification',
|
|
'-Wno-microsoft-goto',
|
|
'-Wno-missing-braces',
|
|
'-Wno-parentheses-equality',
|
|
'-Wno-reorder',
|
|
'-Wno-shift-overflow',
|
|
'-Wno-tautological-compare',
|
|
'-Wno-unused-private-field',
|
|
],
|
|
},
|
|
},
|
|
}],
|
|
], # conditions (for non-dummy devices)
|
|
}], # use_dummy_audio_file_devices check
|
|
], # conditions
|
|
}], # include_internal_audio_device==1
|
|
], # conditions
|
|
},
|
|
],
|
|
}
|
|
|