xref: /aosp_15_r20/external/webrtc/modules/audio_device/BUILD.gn (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
2*d9f75844SAndroid Build Coastguard Worker#
3*d9f75844SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license
4*d9f75844SAndroid Build Coastguard Worker# that can be found in the LICENSE file in the root of the source
5*d9f75844SAndroid Build Coastguard Worker# tree. An additional intellectual property rights grant can be found
6*d9f75844SAndroid Build Coastguard Worker# in the file PATENTS.  All contributing project authors may
7*d9f75844SAndroid Build Coastguard Worker# be found in the AUTHORS file in the root of the source tree.
8*d9f75844SAndroid Build Coastguard Worker
9*d9f75844SAndroid Build Coastguard Workerimport("../../webrtc.gni")
10*d9f75844SAndroid Build Coastguard Worker
11*d9f75844SAndroid Build Coastguard Workerif (is_android) {
12*d9f75844SAndroid Build Coastguard Worker  import("//build/config/android/config.gni")
13*d9f75844SAndroid Build Coastguard Worker  import("//build/config/android/rules.gni")
14*d9f75844SAndroid Build Coastguard Worker}
15*d9f75844SAndroid Build Coastguard Worker
16*d9f75844SAndroid Build Coastguard Workerconfig("audio_device_warnings_config") {
17*d9f75844SAndroid Build Coastguard Worker  if (is_win && is_clang) {
18*d9f75844SAndroid Build Coastguard Worker    cflags = [
19*d9f75844SAndroid Build Coastguard Worker      # Disable warnings failing when compiling with Clang on Windows.
20*d9f75844SAndroid Build Coastguard Worker      # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
21*d9f75844SAndroid Build Coastguard Worker      "-Wno-microsoft-goto",
22*d9f75844SAndroid Build Coastguard Worker    ]
23*d9f75844SAndroid Build Coastguard Worker  }
24*d9f75844SAndroid Build Coastguard Worker}
25*d9f75844SAndroid Build Coastguard Worker
26*d9f75844SAndroid Build Coastguard Workerrtc_source_set("audio_device_default") {
27*d9f75844SAndroid Build Coastguard Worker  visibility = [ "*" ]
28*d9f75844SAndroid Build Coastguard Worker  sources = [ "include/audio_device_default.h" ]
29*d9f75844SAndroid Build Coastguard Worker  deps = [ ":audio_device_api" ]
30*d9f75844SAndroid Build Coastguard Worker}
31*d9f75844SAndroid Build Coastguard Worker
32*d9f75844SAndroid Build Coastguard Workerrtc_source_set("audio_device") {
33*d9f75844SAndroid Build Coastguard Worker  visibility = [ "*" ]
34*d9f75844SAndroid Build Coastguard Worker  public_deps = [
35*d9f75844SAndroid Build Coastguard Worker    ":audio_device_api",
36*d9f75844SAndroid Build Coastguard Worker
37*d9f75844SAndroid Build Coastguard Worker    # Deprecated.
38*d9f75844SAndroid Build Coastguard Worker    # TODO(webrtc:7452): Remove this public dep. audio_device_impl should
39*d9f75844SAndroid Build Coastguard Worker    # be depended on directly if needed.
40*d9f75844SAndroid Build Coastguard Worker    ":audio_device_impl",
41*d9f75844SAndroid Build Coastguard Worker  ]
42*d9f75844SAndroid Build Coastguard Worker}
43*d9f75844SAndroid Build Coastguard Worker
44*d9f75844SAndroid Build Coastguard Workerrtc_source_set("audio_device_api") {
45*d9f75844SAndroid Build Coastguard Worker  visibility = [ "*" ]
46*d9f75844SAndroid Build Coastguard Worker  sources = [
47*d9f75844SAndroid Build Coastguard Worker    "include/audio_device.h",
48*d9f75844SAndroid Build Coastguard Worker    "include/audio_device_defines.h",
49*d9f75844SAndroid Build Coastguard Worker  ]
50*d9f75844SAndroid Build Coastguard Worker  deps = [
51*d9f75844SAndroid Build Coastguard Worker    "../../api:scoped_refptr",
52*d9f75844SAndroid Build Coastguard Worker    "../../api/task_queue",
53*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:checks",
54*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:refcount",
55*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:stringutils",
56*d9f75844SAndroid Build Coastguard Worker  ]
57*d9f75844SAndroid Build Coastguard Worker}
58*d9f75844SAndroid Build Coastguard Worker
59*d9f75844SAndroid Build Coastguard Workerrtc_library("audio_device_buffer") {
60*d9f75844SAndroid Build Coastguard Worker  sources = [
61*d9f75844SAndroid Build Coastguard Worker    "audio_device_buffer.cc",
62*d9f75844SAndroid Build Coastguard Worker    "audio_device_buffer.h",
63*d9f75844SAndroid Build Coastguard Worker    "audio_device_config.h",
64*d9f75844SAndroid Build Coastguard Worker    "fine_audio_buffer.cc",
65*d9f75844SAndroid Build Coastguard Worker    "fine_audio_buffer.h",
66*d9f75844SAndroid Build Coastguard Worker  ]
67*d9f75844SAndroid Build Coastguard Worker  deps = [
68*d9f75844SAndroid Build Coastguard Worker    ":audio_device_api",
69*d9f75844SAndroid Build Coastguard Worker    "../../api:array_view",
70*d9f75844SAndroid Build Coastguard Worker    "../../api:sequence_checker",
71*d9f75844SAndroid Build Coastguard Worker    "../../api/task_queue",
72*d9f75844SAndroid Build Coastguard Worker    "../../common_audio:common_audio_c",
73*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:buffer",
74*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:checks",
75*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:event_tracer",
76*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:logging",
77*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:macromagic",
78*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:rtc_task_queue",
79*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:safe_conversions",
80*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:timestamp_aligner",
81*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:timeutils",
82*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base/synchronization:mutex",
83*d9f75844SAndroid Build Coastguard Worker    "../../system_wrappers",
84*d9f75844SAndroid Build Coastguard Worker    "../../system_wrappers:metrics",
85*d9f75844SAndroid Build Coastguard Worker  ]
86*d9f75844SAndroid Build Coastguard Worker}
87*d9f75844SAndroid Build Coastguard Worker
88*d9f75844SAndroid Build Coastguard Workerrtc_library("audio_device_generic") {
89*d9f75844SAndroid Build Coastguard Worker  sources = [
90*d9f75844SAndroid Build Coastguard Worker    "audio_device_generic.cc",
91*d9f75844SAndroid Build Coastguard Worker    "audio_device_generic.h",
92*d9f75844SAndroid Build Coastguard Worker  ]
93*d9f75844SAndroid Build Coastguard Worker  deps = [
94*d9f75844SAndroid Build Coastguard Worker    ":audio_device_api",
95*d9f75844SAndroid Build Coastguard Worker    ":audio_device_buffer",
96*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:logging",
97*d9f75844SAndroid Build Coastguard Worker  ]
98*d9f75844SAndroid Build Coastguard Worker}
99*d9f75844SAndroid Build Coastguard Worker
100*d9f75844SAndroid Build Coastguard Workerrtc_library("audio_device_name") {
101*d9f75844SAndroid Build Coastguard Worker  sources = [
102*d9f75844SAndroid Build Coastguard Worker    "audio_device_name.cc",
103*d9f75844SAndroid Build Coastguard Worker    "audio_device_name.h",
104*d9f75844SAndroid Build Coastguard Worker  ]
105*d9f75844SAndroid Build Coastguard Worker  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
106*d9f75844SAndroid Build Coastguard Worker}
107*d9f75844SAndroid Build Coastguard Worker
108*d9f75844SAndroid Build Coastguard Workerrtc_source_set("windows_core_audio_utility") {
109*d9f75844SAndroid Build Coastguard Worker  if (is_win && !build_with_chromium) {
110*d9f75844SAndroid Build Coastguard Worker    sources = [
111*d9f75844SAndroid Build Coastguard Worker      "win/core_audio_utility_win.cc",
112*d9f75844SAndroid Build Coastguard Worker      "win/core_audio_utility_win.h",
113*d9f75844SAndroid Build Coastguard Worker    ]
114*d9f75844SAndroid Build Coastguard Worker
115*d9f75844SAndroid Build Coastguard Worker    deps = [
116*d9f75844SAndroid Build Coastguard Worker      ":audio_device_api",
117*d9f75844SAndroid Build Coastguard Worker      ":audio_device_name",
118*d9f75844SAndroid Build Coastguard Worker      "../../api/units:time_delta",
119*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:checks",
120*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:logging",
121*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:macromagic",
122*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:platform_thread_types",
123*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:stringutils",
124*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base/win:windows_version",
125*d9f75844SAndroid Build Coastguard Worker    ]
126*d9f75844SAndroid Build Coastguard Worker    absl_deps = [ "//third_party/abseil-cpp/absl/strings:strings" ]
127*d9f75844SAndroid Build Coastguard Worker
128*d9f75844SAndroid Build Coastguard Worker    libs = [ "oleaut32.lib" ]
129*d9f75844SAndroid Build Coastguard Worker  }
130*d9f75844SAndroid Build Coastguard Worker}
131*d9f75844SAndroid Build Coastguard Worker
132*d9f75844SAndroid Build Coastguard Worker# An ADM with a dedicated factory method which does not depend on the
133*d9f75844SAndroid Build Coastguard Worker# audio_device_impl target. The goal is to use this new structure and
134*d9f75844SAndroid Build Coastguard Worker# gradually phase out the old design.
135*d9f75844SAndroid Build Coastguard Worker# TODO(henrika): currently only supported on Windows.
136*d9f75844SAndroid Build Coastguard Workerrtc_source_set("audio_device_module_from_input_and_output") {
137*d9f75844SAndroid Build Coastguard Worker  visibility = [ "*" ]
138*d9f75844SAndroid Build Coastguard Worker  if (is_win && !build_with_chromium) {
139*d9f75844SAndroid Build Coastguard Worker    sources = [
140*d9f75844SAndroid Build Coastguard Worker      "include/audio_device_factory.cc",
141*d9f75844SAndroid Build Coastguard Worker      "include/audio_device_factory.h",
142*d9f75844SAndroid Build Coastguard Worker    ]
143*d9f75844SAndroid Build Coastguard Worker    sources += [
144*d9f75844SAndroid Build Coastguard Worker      "win/audio_device_module_win.cc",
145*d9f75844SAndroid Build Coastguard Worker      "win/audio_device_module_win.h",
146*d9f75844SAndroid Build Coastguard Worker      "win/core_audio_base_win.cc",
147*d9f75844SAndroid Build Coastguard Worker      "win/core_audio_base_win.h",
148*d9f75844SAndroid Build Coastguard Worker      "win/core_audio_input_win.cc",
149*d9f75844SAndroid Build Coastguard Worker      "win/core_audio_input_win.h",
150*d9f75844SAndroid Build Coastguard Worker      "win/core_audio_output_win.cc",
151*d9f75844SAndroid Build Coastguard Worker      "win/core_audio_output_win.h",
152*d9f75844SAndroid Build Coastguard Worker    ]
153*d9f75844SAndroid Build Coastguard Worker
154*d9f75844SAndroid Build Coastguard Worker    deps = [
155*d9f75844SAndroid Build Coastguard Worker      ":audio_device_api",
156*d9f75844SAndroid Build Coastguard Worker      ":audio_device_buffer",
157*d9f75844SAndroid Build Coastguard Worker      ":windows_core_audio_utility",
158*d9f75844SAndroid Build Coastguard Worker      "../../api:make_ref_counted",
159*d9f75844SAndroid Build Coastguard Worker      "../../api:scoped_refptr",
160*d9f75844SAndroid Build Coastguard Worker      "../../api:sequence_checker",
161*d9f75844SAndroid Build Coastguard Worker      "../../api/task_queue",
162*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:checks",
163*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:logging",
164*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:macromagic",
165*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:platform_thread",
166*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:safe_conversions",
167*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:stringutils",
168*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:timeutils",
169*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base/win:scoped_com_initializer",
170*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base/win:windows_version",
171*d9f75844SAndroid Build Coastguard Worker    ]
172*d9f75844SAndroid Build Coastguard Worker    absl_deps = [
173*d9f75844SAndroid Build Coastguard Worker      "//third_party/abseil-cpp/absl/strings:strings",
174*d9f75844SAndroid Build Coastguard Worker      "//third_party/abseil-cpp/absl/types:optional",
175*d9f75844SAndroid Build Coastguard Worker    ]
176*d9f75844SAndroid Build Coastguard Worker  }
177*d9f75844SAndroid Build Coastguard Worker}
178*d9f75844SAndroid Build Coastguard Worker
179*d9f75844SAndroid Build Coastguard Worker# Contains default implementations of webrtc::AudioDeviceModule for Windows,
180*d9f75844SAndroid Build Coastguard Worker# Linux, Mac, iOS and Android.
181*d9f75844SAndroid Build Coastguard Workerrtc_library("audio_device_impl") {
182*d9f75844SAndroid Build Coastguard Worker  visibility = [ "*" ]
183*d9f75844SAndroid Build Coastguard Worker  deps = [
184*d9f75844SAndroid Build Coastguard Worker    ":audio_device_api",
185*d9f75844SAndroid Build Coastguard Worker    ":audio_device_buffer",
186*d9f75844SAndroid Build Coastguard Worker    ":audio_device_default",
187*d9f75844SAndroid Build Coastguard Worker    ":audio_device_generic",
188*d9f75844SAndroid Build Coastguard Worker    "../../api:array_view",
189*d9f75844SAndroid Build Coastguard Worker    "../../api:make_ref_counted",
190*d9f75844SAndroid Build Coastguard Worker    "../../api:refcountedbase",
191*d9f75844SAndroid Build Coastguard Worker    "../../api:scoped_refptr",
192*d9f75844SAndroid Build Coastguard Worker    "../../api:sequence_checker",
193*d9f75844SAndroid Build Coastguard Worker    "../../api/task_queue",
194*d9f75844SAndroid Build Coastguard Worker    "../../common_audio",
195*d9f75844SAndroid Build Coastguard Worker    "../../common_audio:common_audio_c",
196*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:buffer",
197*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:checks",
198*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:logging",
199*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:macromagic",
200*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:platform_thread",
201*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:random",
202*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:rtc_event",
203*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:rtc_task_queue",
204*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:safe_conversions",
205*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:stringutils",
206*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base:timeutils",
207*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base/synchronization:mutex",
208*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base/system:arch",
209*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base/system:file_wrapper",
210*d9f75844SAndroid Build Coastguard Worker    "../../rtc_base/task_utils:repeating_task",
211*d9f75844SAndroid Build Coastguard Worker    "../../system_wrappers",
212*d9f75844SAndroid Build Coastguard Worker    "../../system_wrappers:field_trial",
213*d9f75844SAndroid Build Coastguard Worker    "../../system_wrappers:metrics",
214*d9f75844SAndroid Build Coastguard Worker    "../utility",
215*d9f75844SAndroid Build Coastguard Worker  ]
216*d9f75844SAndroid Build Coastguard Worker  absl_deps = [
217*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/base:core_headers",
218*d9f75844SAndroid Build Coastguard Worker    "//third_party/abseil-cpp/absl/strings:strings",
219*d9f75844SAndroid Build Coastguard Worker  ]
220*d9f75844SAndroid Build Coastguard Worker  if (rtc_include_internal_audio_device && is_ios) {
221*d9f75844SAndroid Build Coastguard Worker    deps += [ "../../sdk:audio_device" ]
222*d9f75844SAndroid Build Coastguard Worker  }
223*d9f75844SAndroid Build Coastguard Worker
224*d9f75844SAndroid Build Coastguard Worker  sources = [
225*d9f75844SAndroid Build Coastguard Worker    "dummy/audio_device_dummy.cc",
226*d9f75844SAndroid Build Coastguard Worker    "dummy/audio_device_dummy.h",
227*d9f75844SAndroid Build Coastguard Worker    "dummy/file_audio_device.cc",
228*d9f75844SAndroid Build Coastguard Worker    "dummy/file_audio_device.h",
229*d9f75844SAndroid Build Coastguard Worker    "include/fake_audio_device.h",
230*d9f75844SAndroid Build Coastguard Worker    "include/test_audio_device.cc",
231*d9f75844SAndroid Build Coastguard Worker    "include/test_audio_device.h",
232*d9f75844SAndroid Build Coastguard Worker  ]
233*d9f75844SAndroid Build Coastguard Worker
234*d9f75844SAndroid Build Coastguard Worker  if (build_with_mozilla) {
235*d9f75844SAndroid Build Coastguard Worker    sources += [
236*d9f75844SAndroid Build Coastguard Worker      "opensl/single_rw_fifo.cc",
237*d9f75844SAndroid Build Coastguard Worker      "opensl/single_rw_fifo.h",
238*d9f75844SAndroid Build Coastguard Worker    ]
239*d9f75844SAndroid Build Coastguard Worker  }
240*d9f75844SAndroid Build Coastguard Worker
241*d9f75844SAndroid Build Coastguard Worker  defines = []
242*d9f75844SAndroid Build Coastguard Worker  cflags = []
243*d9f75844SAndroid Build Coastguard Worker  if (rtc_audio_device_plays_sinus_tone) {
244*d9f75844SAndroid Build Coastguard Worker    defines += [ "AUDIO_DEVICE_PLAYS_SINUS_TONE" ]
245*d9f75844SAndroid Build Coastguard Worker  }
246*d9f75844SAndroid Build Coastguard Worker  if (rtc_enable_android_aaudio) {
247*d9f75844SAndroid Build Coastguard Worker    defines += [ "WEBRTC_AUDIO_DEVICE_INCLUDE_ANDROID_AAUDIO" ]
248*d9f75844SAndroid Build Coastguard Worker  }
249*d9f75844SAndroid Build Coastguard Worker  if (rtc_include_internal_audio_device) {
250*d9f75844SAndroid Build Coastguard Worker    sources += [
251*d9f75844SAndroid Build Coastguard Worker      "audio_device_data_observer.cc",
252*d9f75844SAndroid Build Coastguard Worker      "audio_device_impl.cc",
253*d9f75844SAndroid Build Coastguard Worker      "audio_device_impl.h",
254*d9f75844SAndroid Build Coastguard Worker      "include/audio_device_data_observer.h",
255*d9f75844SAndroid Build Coastguard Worker    ]
256*d9f75844SAndroid Build Coastguard Worker    if (is_android) {
257*d9f75844SAndroid Build Coastguard Worker      sources += [
258*d9f75844SAndroid Build Coastguard Worker        "android/audio_common.h",
259*d9f75844SAndroid Build Coastguard Worker        "android/audio_device_template.h",
260*d9f75844SAndroid Build Coastguard Worker        "android/audio_manager.cc",
261*d9f75844SAndroid Build Coastguard Worker        "android/audio_manager.h",
262*d9f75844SAndroid Build Coastguard Worker        "android/audio_record_jni.cc",
263*d9f75844SAndroid Build Coastguard Worker        "android/audio_record_jni.h",
264*d9f75844SAndroid Build Coastguard Worker        "android/audio_track_jni.cc",
265*d9f75844SAndroid Build Coastguard Worker        "android/audio_track_jni.h",
266*d9f75844SAndroid Build Coastguard Worker        "android/build_info.cc",
267*d9f75844SAndroid Build Coastguard Worker        "android/build_info.h",
268*d9f75844SAndroid Build Coastguard Worker        "android/opensles_common.cc",
269*d9f75844SAndroid Build Coastguard Worker        "android/opensles_common.h",
270*d9f75844SAndroid Build Coastguard Worker        "android/opensles_player.cc",
271*d9f75844SAndroid Build Coastguard Worker        "android/opensles_player.h",
272*d9f75844SAndroid Build Coastguard Worker        "android/opensles_recorder.cc",
273*d9f75844SAndroid Build Coastguard Worker        "android/opensles_recorder.h",
274*d9f75844SAndroid Build Coastguard Worker      ]
275*d9f75844SAndroid Build Coastguard Worker      libs = [
276*d9f75844SAndroid Build Coastguard Worker        "log",
277*d9f75844SAndroid Build Coastguard Worker        "OpenSLES",
278*d9f75844SAndroid Build Coastguard Worker      ]
279*d9f75844SAndroid Build Coastguard Worker      if (rtc_enable_android_aaudio) {
280*d9f75844SAndroid Build Coastguard Worker        sources += [
281*d9f75844SAndroid Build Coastguard Worker          "android/aaudio_player.cc",
282*d9f75844SAndroid Build Coastguard Worker          "android/aaudio_player.h",
283*d9f75844SAndroid Build Coastguard Worker          "android/aaudio_recorder.cc",
284*d9f75844SAndroid Build Coastguard Worker          "android/aaudio_recorder.h",
285*d9f75844SAndroid Build Coastguard Worker          "android/aaudio_wrapper.cc",
286*d9f75844SAndroid Build Coastguard Worker          "android/aaudio_wrapper.h",
287*d9f75844SAndroid Build Coastguard Worker        ]
288*d9f75844SAndroid Build Coastguard Worker        libs += [ "aaudio" ]
289*d9f75844SAndroid Build Coastguard Worker      }
290*d9f75844SAndroid Build Coastguard Worker
291*d9f75844SAndroid Build Coastguard Worker      if (build_with_mozilla) {
292*d9f75844SAndroid Build Coastguard Worker        include_dirs += [
293*d9f75844SAndroid Build Coastguard Worker          "/config/external/nspr",
294*d9f75844SAndroid Build Coastguard Worker          "/nsprpub/lib/ds",
295*d9f75844SAndroid Build Coastguard Worker          "/nsprpub/pr/include",
296*d9f75844SAndroid Build Coastguard Worker        ]
297*d9f75844SAndroid Build Coastguard Worker      }
298*d9f75844SAndroid Build Coastguard Worker    }
299*d9f75844SAndroid Build Coastguard Worker    if (rtc_use_dummy_audio_file_devices) {
300*d9f75844SAndroid Build Coastguard Worker      defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ]
301*d9f75844SAndroid Build Coastguard Worker    } else {
302*d9f75844SAndroid Build Coastguard Worker      if (is_linux || is_chromeos) {
303*d9f75844SAndroid Build Coastguard Worker        sources += [
304*d9f75844SAndroid Build Coastguard Worker          "linux/alsasymboltable_linux.cc",
305*d9f75844SAndroid Build Coastguard Worker          "linux/alsasymboltable_linux.h",
306*d9f75844SAndroid Build Coastguard Worker          "linux/audio_device_alsa_linux.cc",
307*d9f75844SAndroid Build Coastguard Worker          "linux/audio_device_alsa_linux.h",
308*d9f75844SAndroid Build Coastguard Worker          "linux/audio_mixer_manager_alsa_linux.cc",
309*d9f75844SAndroid Build Coastguard Worker          "linux/audio_mixer_manager_alsa_linux.h",
310*d9f75844SAndroid Build Coastguard Worker          "linux/latebindingsymboltable_linux.cc",
311*d9f75844SAndroid Build Coastguard Worker          "linux/latebindingsymboltable_linux.h",
312*d9f75844SAndroid Build Coastguard Worker        ]
313*d9f75844SAndroid Build Coastguard Worker        defines += [ "WEBRTC_ENABLE_LINUX_ALSA" ]
314*d9f75844SAndroid Build Coastguard Worker        libs = [ "dl" ]
315*d9f75844SAndroid Build Coastguard Worker        if (rtc_use_x11) {
316*d9f75844SAndroid Build Coastguard Worker          libs += [ "X11" ]
317*d9f75844SAndroid Build Coastguard Worker          defines += [ "WEBRTC_USE_X11" ]
318*d9f75844SAndroid Build Coastguard Worker        }
319*d9f75844SAndroid Build Coastguard Worker        if (rtc_include_pulse_audio) {
320*d9f75844SAndroid Build Coastguard Worker          defines += [ "WEBRTC_ENABLE_LINUX_PULSE" ]
321*d9f75844SAndroid Build Coastguard Worker        }
322*d9f75844SAndroid Build Coastguard Worker        sources += [
323*d9f75844SAndroid Build Coastguard Worker          "linux/audio_device_pulse_linux.cc",
324*d9f75844SAndroid Build Coastguard Worker          "linux/audio_device_pulse_linux.h",
325*d9f75844SAndroid Build Coastguard Worker          "linux/audio_mixer_manager_pulse_linux.cc",
326*d9f75844SAndroid Build Coastguard Worker          "linux/audio_mixer_manager_pulse_linux.h",
327*d9f75844SAndroid Build Coastguard Worker          "linux/pulseaudiosymboltable_linux.cc",
328*d9f75844SAndroid Build Coastguard Worker          "linux/pulseaudiosymboltable_linux.h",
329*d9f75844SAndroid Build Coastguard Worker        ]
330*d9f75844SAndroid Build Coastguard Worker      }
331*d9f75844SAndroid Build Coastguard Worker      if (is_mac) {
332*d9f75844SAndroid Build Coastguard Worker        sources += [
333*d9f75844SAndroid Build Coastguard Worker          "mac/audio_device_mac.cc",
334*d9f75844SAndroid Build Coastguard Worker          "mac/audio_device_mac.h",
335*d9f75844SAndroid Build Coastguard Worker          "mac/audio_mixer_manager_mac.cc",
336*d9f75844SAndroid Build Coastguard Worker          "mac/audio_mixer_manager_mac.h",
337*d9f75844SAndroid Build Coastguard Worker        ]
338*d9f75844SAndroid Build Coastguard Worker        deps += [
339*d9f75844SAndroid Build Coastguard Worker          ":audio_device_impl_frameworks",
340*d9f75844SAndroid Build Coastguard Worker          "../third_party/portaudio:mac_portaudio",
341*d9f75844SAndroid Build Coastguard Worker        ]
342*d9f75844SAndroid Build Coastguard Worker      }
343*d9f75844SAndroid Build Coastguard Worker      if (is_win) {
344*d9f75844SAndroid Build Coastguard Worker        sources += [
345*d9f75844SAndroid Build Coastguard Worker          "win/audio_device_core_win.cc",
346*d9f75844SAndroid Build Coastguard Worker          "win/audio_device_core_win.h",
347*d9f75844SAndroid Build Coastguard Worker        ]
348*d9f75844SAndroid Build Coastguard Worker        libs = [
349*d9f75844SAndroid Build Coastguard Worker          # Required for the built-in WASAPI AEC.
350*d9f75844SAndroid Build Coastguard Worker          "dmoguids.lib",
351*d9f75844SAndroid Build Coastguard Worker          "wmcodecdspuuid.lib",
352*d9f75844SAndroid Build Coastguard Worker          "amstrmid.lib",
353*d9f75844SAndroid Build Coastguard Worker          "msdmo.lib",
354*d9f75844SAndroid Build Coastguard Worker          "oleaut32.lib",
355*d9f75844SAndroid Build Coastguard Worker        ]
356*d9f75844SAndroid Build Coastguard Worker        deps += [
357*d9f75844SAndroid Build Coastguard Worker          "../../rtc_base:win32",
358*d9f75844SAndroid Build Coastguard Worker          "../../rtc_base/win:scoped_com_initializer",
359*d9f75844SAndroid Build Coastguard Worker        ]
360*d9f75844SAndroid Build Coastguard Worker      }
361*d9f75844SAndroid Build Coastguard Worker      configs += [ ":audio_device_warnings_config" ]
362*d9f75844SAndroid Build Coastguard Worker    }
363*d9f75844SAndroid Build Coastguard Worker  } else {
364*d9f75844SAndroid Build Coastguard Worker    defines = [ "WEBRTC_DUMMY_AUDIO_BUILD" ]
365*d9f75844SAndroid Build Coastguard Worker  }
366*d9f75844SAndroid Build Coastguard Worker
367*d9f75844SAndroid Build Coastguard Worker  if (!build_with_chromium) {
368*d9f75844SAndroid Build Coastguard Worker    sources += [
369*d9f75844SAndroid Build Coastguard Worker      # Do not link these into Chrome since they contain static data.
370*d9f75844SAndroid Build Coastguard Worker      "dummy/file_audio_device_factory.cc",
371*d9f75844SAndroid Build Coastguard Worker      "dummy/file_audio_device_factory.h",
372*d9f75844SAndroid Build Coastguard Worker    ]
373*d9f75844SAndroid Build Coastguard Worker  }
374*d9f75844SAndroid Build Coastguard Worker}
375*d9f75844SAndroid Build Coastguard Worker
376*d9f75844SAndroid Build Coastguard Workerif (is_mac) {
377*d9f75844SAndroid Build Coastguard Worker  rtc_source_set("audio_device_impl_frameworks") {
378*d9f75844SAndroid Build Coastguard Worker    visibility = [ ":*" ]
379*d9f75844SAndroid Build Coastguard Worker    frameworks = [
380*d9f75844SAndroid Build Coastguard Worker      # Needed for CoreGraphics:
381*d9f75844SAndroid Build Coastguard Worker      "ApplicationServices.framework",
382*d9f75844SAndroid Build Coastguard Worker
383*d9f75844SAndroid Build Coastguard Worker      "AudioToolbox.framework",
384*d9f75844SAndroid Build Coastguard Worker      "CoreAudio.framework",
385*d9f75844SAndroid Build Coastguard Worker
386*d9f75844SAndroid Build Coastguard Worker      # Needed for CGEventSourceKeyState in audio_device_mac.cc:
387*d9f75844SAndroid Build Coastguard Worker      "CoreGraphics.framework",
388*d9f75844SAndroid Build Coastguard Worker    ]
389*d9f75844SAndroid Build Coastguard Worker  }
390*d9f75844SAndroid Build Coastguard Worker}
391*d9f75844SAndroid Build Coastguard Worker
392*d9f75844SAndroid Build Coastguard Workerrtc_source_set("mock_audio_device") {
393*d9f75844SAndroid Build Coastguard Worker  visibility = [ "*" ]
394*d9f75844SAndroid Build Coastguard Worker  testonly = true
395*d9f75844SAndroid Build Coastguard Worker  sources = [
396*d9f75844SAndroid Build Coastguard Worker    "include/mock_audio_device.h",
397*d9f75844SAndroid Build Coastguard Worker    "include/mock_audio_transport.h",
398*d9f75844SAndroid Build Coastguard Worker    "mock_audio_device_buffer.h",
399*d9f75844SAndroid Build Coastguard Worker  ]
400*d9f75844SAndroid Build Coastguard Worker  deps = [
401*d9f75844SAndroid Build Coastguard Worker    ":audio_device",
402*d9f75844SAndroid Build Coastguard Worker    ":audio_device_buffer",
403*d9f75844SAndroid Build Coastguard Worker    ":audio_device_impl",
404*d9f75844SAndroid Build Coastguard Worker    "../../api:make_ref_counted",
405*d9f75844SAndroid Build Coastguard Worker    "../../test:test_support",
406*d9f75844SAndroid Build Coastguard Worker  ]
407*d9f75844SAndroid Build Coastguard Worker}
408*d9f75844SAndroid Build Coastguard Worker
409*d9f75844SAndroid Build Coastguard Workerif (rtc_include_tests && !build_with_chromium) {
410*d9f75844SAndroid Build Coastguard Worker  rtc_library("audio_device_unittests") {
411*d9f75844SAndroid Build Coastguard Worker    testonly = true
412*d9f75844SAndroid Build Coastguard Worker
413*d9f75844SAndroid Build Coastguard Worker    sources = [
414*d9f75844SAndroid Build Coastguard Worker      "fine_audio_buffer_unittest.cc",
415*d9f75844SAndroid Build Coastguard Worker      "include/test_audio_device_unittest.cc",
416*d9f75844SAndroid Build Coastguard Worker    ]
417*d9f75844SAndroid Build Coastguard Worker    deps = [
418*d9f75844SAndroid Build Coastguard Worker      ":audio_device",
419*d9f75844SAndroid Build Coastguard Worker      ":audio_device_buffer",
420*d9f75844SAndroid Build Coastguard Worker      ":audio_device_impl",
421*d9f75844SAndroid Build Coastguard Worker      ":mock_audio_device",
422*d9f75844SAndroid Build Coastguard Worker      "../../api:array_view",
423*d9f75844SAndroid Build Coastguard Worker      "../../api:scoped_refptr",
424*d9f75844SAndroid Build Coastguard Worker      "../../api:sequence_checker",
425*d9f75844SAndroid Build Coastguard Worker      "../../api/task_queue",
426*d9f75844SAndroid Build Coastguard Worker      "../../api/task_queue:default_task_queue_factory",
427*d9f75844SAndroid Build Coastguard Worker      "../../common_audio",
428*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:buffer",
429*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:checks",
430*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:ignore_wundef",
431*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:logging",
432*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:macromagic",
433*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:race_checker",
434*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:rtc_event",
435*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:safe_conversions",
436*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:timeutils",
437*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base/synchronization:mutex",
438*d9f75844SAndroid Build Coastguard Worker      "../../system_wrappers",
439*d9f75844SAndroid Build Coastguard Worker      "../../test:fileutils",
440*d9f75844SAndroid Build Coastguard Worker      "../../test:test_support",
441*d9f75844SAndroid Build Coastguard Worker    ]
442*d9f75844SAndroid Build Coastguard Worker    absl_deps = [
443*d9f75844SAndroid Build Coastguard Worker      "//third_party/abseil-cpp/absl/strings",
444*d9f75844SAndroid Build Coastguard Worker      "//third_party/abseil-cpp/absl/types:optional",
445*d9f75844SAndroid Build Coastguard Worker    ]
446*d9f75844SAndroid Build Coastguard Worker    if (is_linux || is_chromeos || is_mac || is_win) {
447*d9f75844SAndroid Build Coastguard Worker      sources += [ "audio_device_unittest.cc" ]
448*d9f75844SAndroid Build Coastguard Worker    }
449*d9f75844SAndroid Build Coastguard Worker    if (is_win) {
450*d9f75844SAndroid Build Coastguard Worker      sources += [ "win/core_audio_utility_win_unittest.cc" ]
451*d9f75844SAndroid Build Coastguard Worker      deps += [
452*d9f75844SAndroid Build Coastguard Worker        ":audio_device_module_from_input_and_output",
453*d9f75844SAndroid Build Coastguard Worker        ":windows_core_audio_utility",
454*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base/win:scoped_com_initializer",
455*d9f75844SAndroid Build Coastguard Worker        "../../rtc_base/win:windows_version",
456*d9f75844SAndroid Build Coastguard Worker      ]
457*d9f75844SAndroid Build Coastguard Worker    }
458*d9f75844SAndroid Build Coastguard Worker    if (is_android) {
459*d9f75844SAndroid Build Coastguard Worker      sources += [
460*d9f75844SAndroid Build Coastguard Worker        "android/audio_device_unittest.cc",
461*d9f75844SAndroid Build Coastguard Worker        "android/audio_manager_unittest.cc",
462*d9f75844SAndroid Build Coastguard Worker        "android/ensure_initialized.cc",
463*d9f75844SAndroid Build Coastguard Worker        "android/ensure_initialized.h",
464*d9f75844SAndroid Build Coastguard Worker      ]
465*d9f75844SAndroid Build Coastguard Worker      deps += [
466*d9f75844SAndroid Build Coastguard Worker        "../../sdk/android:internal_jni",
467*d9f75844SAndroid Build Coastguard Worker        "../../sdk/android:libjingle_peerconnection_java",
468*d9f75844SAndroid Build Coastguard Worker        "../../sdk/android:native_api_jni",
469*d9f75844SAndroid Build Coastguard Worker        "../../sdk/android:native_test_jni_onload",
470*d9f75844SAndroid Build Coastguard Worker        "../utility",
471*d9f75844SAndroid Build Coastguard Worker      ]
472*d9f75844SAndroid Build Coastguard Worker    }
473*d9f75844SAndroid Build Coastguard Worker    if (!rtc_include_internal_audio_device) {
474*d9f75844SAndroid Build Coastguard Worker      defines = [ "WEBRTC_DUMMY_AUDIO_BUILD" ]
475*d9f75844SAndroid Build Coastguard Worker    }
476*d9f75844SAndroid Build Coastguard Worker  }
477*d9f75844SAndroid Build Coastguard Worker}
478*d9f75844SAndroid Build Coastguard Worker
479*d9f75844SAndroid Build Coastguard Workerif (!build_with_chromium && is_android) {
480*d9f75844SAndroid Build Coastguard Worker  rtc_android_library("audio_device_java") {
481*d9f75844SAndroid Build Coastguard Worker    sources = [
482*d9f75844SAndroid Build Coastguard Worker      "android/java/src/org/webrtc/voiceengine/BuildInfo.java",
483*d9f75844SAndroid Build Coastguard Worker      "android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
484*d9f75844SAndroid Build Coastguard Worker      "android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
485*d9f75844SAndroid Build Coastguard Worker      "android/java/src/org/webrtc/voiceengine/WebRtcAudioRecord.java",
486*d9f75844SAndroid Build Coastguard Worker      "android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
487*d9f75844SAndroid Build Coastguard Worker      "android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
488*d9f75844SAndroid Build Coastguard Worker    ]
489*d9f75844SAndroid Build Coastguard Worker    deps = [
490*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:base_java",
491*d9f75844SAndroid Build Coastguard Worker      "//third_party/androidx:androidx_annotation_annotation_java",
492*d9f75844SAndroid Build Coastguard Worker    ]
493*d9f75844SAndroid Build Coastguard Worker  }
494*d9f75844SAndroid Build Coastguard Worker}
495