• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2014 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//media/media_options.gni")
6
7# When libpulse is not directly linked, use stubs to allow for dlopening of the
8# binary.
9if (!linux_link_pulseaudio) {
10  action("pulse_generate_stubs") {
11    extra_header = "pulse/pulse_stub_header.fragment"
12
13    script = "../../tools/generate_stubs/generate_stubs.py"
14    sources = [ "pulse/pulse.sigs" ]
15    source_prereqs = [ extra_header ]
16    stubs_filename_root = "pulse_stubs"
17
18    # TODO(ajwong): these need to be included in the pulse build.
19    outputs = [
20      "$target_gen_dir/pulse/$stubs_filename_root.cc",
21      "$target_gen_dir/pulse/$stubs_filename_root.h",
22    ]
23    args = [
24      "-i", rebase_path("$target_gen_dir/pulse", root_build_dir),
25      "-o", rebase_path("$target_gen_dir/pulse", root_build_dir),
26      "-t", "posix_stubs",
27      "-e", rebase_path(extra_header, root_build_dir),
28      "-s", stubs_filename_root,
29      "-p", "media/audio/pulse",
30    ]
31
32    args += rebase_path(sources, root_build_dir)
33  }
34}
35
36source_set("audio") {
37  sources = [
38    "agc_audio_stream.h",
39    "audio_buffers_state.cc",
40    "audio_buffers_state.h",
41    "audio_device_name.cc",
42    "audio_device_name.h",
43    "audio_device_thread.cc",
44    "audio_device_thread.h",
45    "audio_input_controller.cc",
46    "audio_input_controller.h",
47    "audio_input_device.cc",
48    "audio_input_device.h",
49    "audio_input_ipc.cc",
50    "audio_input_ipc.h",
51    "audio_io.h",
52    "audio_manager.cc",
53    "audio_manager.h",
54    "audio_manager_base.cc",
55    "audio_manager_base.h",
56    "audio_output_controller.cc",
57    "audio_output_controller.h",
58    "audio_output_device.cc",
59    "audio_output_device.h",
60    "audio_output_dispatcher.cc",
61    "audio_output_dispatcher.h",
62    "audio_output_dispatcher_impl.cc",
63    "audio_output_dispatcher_impl.h",
64    "audio_output_ipc.cc",
65    "audio_output_ipc.h",
66    "audio_output_proxy.cc",
67    "audio_output_proxy.h",
68    "audio_output_resampler.cc",
69    "audio_output_resampler.h",
70    "audio_power_monitor.cc",
71    "audio_power_monitor.h",
72    "audio_source_diverter.h",
73    "fake_audio_consumer.cc",
74    "fake_audio_consumer.h",
75    "fake_audio_input_stream.cc",
76    "fake_audio_input_stream.h",
77    "fake_audio_log_factory.h",
78    "fake_audio_log_factory.cc",
79    "fake_audio_manager.cc",
80    "fake_audio_manager.h",
81    "fake_audio_output_stream.cc",
82    "fake_audio_output_stream.h",
83    "null_audio_sink.cc",
84    "null_audio_sink.h",
85    "sample_rates.cc",
86    "sample_rates.h",
87    "scoped_task_runner_observer.cc",
88    "scoped_task_runner_observer.h",
89    "simple_sources.cc",
90    "simple_sources.h",
91    "sounds/audio_stream_handler.cc",
92    "sounds/audio_stream_handler.h",
93    "sounds/sounds_manager.cc",
94    "sounds/sounds_manager.h",
95    "sounds/wav_audio_handler.cc",
96    "sounds/wav_audio_handler.h",
97    "virtual_audio_input_stream.cc",
98    "virtual_audio_input_stream.h",
99    "virtual_audio_output_stream.cc",
100    "virtual_audio_output_stream.h",
101  ]
102  deps = []
103  libs = []
104  configs += [ "//media:media_config" ]
105
106  if (is_mac) {
107    sources += [
108      "mac/audio_auhal_mac.cc",
109      "mac/audio_auhal_mac.h",
110      "mac/audio_device_listener_mac.cc",
111      "mac/audio_device_listener_mac.h",
112      "mac/audio_input_mac.cc",
113      "mac/audio_input_mac.h",
114      "mac/audio_low_latency_input_mac.cc",
115      "mac/audio_low_latency_input_mac.h",
116      "mac/audio_manager_mac.cc",
117      "mac/audio_manager_mac.h",
118    ]
119    libs += [
120      "AudioToolbox.framework",
121      "AudioUnit.framework",
122      "CoreAudio.framework",
123    ]
124  }
125
126  if (is_win) {
127    sources += [
128      "win/audio_device_listener_win.cc",
129      "win/audio_device_listener_win.h",
130      "win/audio_low_latency_input_win.cc",
131      "win/audio_low_latency_input_win.h",
132      "win/audio_low_latency_output_win.cc",
133      "win/audio_low_latency_output_win.h",
134      "win/audio_manager_win.cc",
135      "win/audio_manager_win.h",
136      "win/avrt_wrapper_win.cc",
137      "win/avrt_wrapper_win.h",
138      "win/core_audio_util_win.cc",
139      "win/core_audio_util_win.h",
140      "win/device_enumeration_win.cc",
141      "win/device_enumeration_win.h",
142      "win/wavein_input_win.cc",
143      "win/wavein_input_win.h",
144      "win/waveout_output_win.cc",
145      "win/waveout_output_win.h",
146    ]
147  }
148
149  if (is_android) {
150    sources += [
151      "android/audio_manager_android.cc",
152      "android/audio_manager_android.h",
153      "android/audio_record_input.cc",
154      "android/audio_record_input.h",
155      "android/opensles_input.cc",
156      "android/opensles_input.h",
157      "android/opensles_output.cc",
158      "android/opensles_output.h",
159      "android/opensles_wrapper.cc",
160    ]
161    deps += [
162      "//media/base/android:media_jni_headers",
163    ]
164  }
165
166  if (is_openbsd) {
167    sources += [
168      "openbsd/audio_manager_openbsd.cc",
169      "openbsd/audio_manager_openbsd.h",
170    ]
171  }
172
173  if (is_linux) {
174    sources += [
175      "linux/audio_manager_linux.cc",
176    ]
177  }
178
179  if (use_alsa) {
180    libs += [ "asound" ]
181    defines = [ "USE_ALSA" ]
182    sources += [
183      "alsa/alsa_input.cc",
184      "alsa/alsa_input.h",
185      "alsa/alsa_output.cc",
186      "alsa/alsa_output.h",
187      "alsa/alsa_util.cc",
188      "alsa/alsa_util.h",
189      "alsa/alsa_wrapper.cc",
190      "alsa/alsa_wrapper.h",
191      "alsa/audio_manager_alsa.cc",
192      "alsa/audio_manager_alsa.h",
193    ]
194  }
195
196  if (use_cras) {
197    sources += [
198      "cras/audio_manager_cras.cc",
199      "cras/audio_manager_cras.h",
200      "cras/cras_input.cc",
201      "cras/cras_input.h",
202      "cras/cras_unified.cc",
203      "cras/cras_unified.h",
204    ]
205
206    pkg_config("libcras") {
207      packages = [ "libcras" ]
208    }
209    configs += [ "libcras" ]
210  }
211
212  if (use_pulseaudio) {
213    sources += [
214      "pulse/audio_manager_pulse.cc",
215      "pulse/audio_manager_pulse.h",
216      "pulse/pulse_input.cc",
217      "pulse/pulse_input.h",
218      "pulse/pulse_output.cc",
219      "pulse/pulse_output.h",
220      "pulse/pulse_util.cc",
221      "pulse/pulse_util.h",
222    ]
223
224    if (linux_link_pulseaudio) {
225      pkg_config("libpulse") {
226        packages = [ "libpulse" ]
227      }
228      configs += [ ":libpulse" ]
229    } else {
230      # TODO(ajwong): Technically, this dl should go in the action.
231      libs += [ "dl" ]
232      deps += [ ":pulse_generate_stubs" ]
233      sources += get_target_outputs(":pulse_generate_stubs")
234    }
235  }
236}
237
238source_set("test_support") {
239  testonly = true
240  sources = [
241    "clockless_audio_sink.cc",
242    "clockless_audio_sink.h",
243    "mock_audio_manager.cc",
244    "mock_audio_manager.h",
245    "mock_audio_source_callback.cc",
246    "mock_audio_source_callback.h",
247    "test_audio_input_controller_factory.cc",
248    "test_audio_input_controller_factory.h",
249  ]
250  deps = [ "//testing/gmock" ]
251  configs += [ "//media:media_config" ]
252}
253
254source_set("unittests") {
255  testonly = true
256  sources = [
257    "audio_input_controller_unittest.cc",
258    "audio_input_unittest.cc",
259    "audio_low_latency_input_output_unittest.cc",
260    "audio_manager_unittest.cc",
261    "audio_output_controller_unittest.cc",
262    "audio_output_device_unittest.cc",
263    "audio_output_proxy_unittest.cc",
264    "audio_parameters_unittest.cc",
265    "audio_power_monitor_unittest.cc",
266    "fake_audio_consumer_unittest.cc",
267    "simple_sources_unittest.cc",
268    "virtual_audio_input_stream_unittest.cc",
269    "virtual_audio_output_stream_unittest.cc",
270  ]
271  deps = [
272    ":test_support",
273    "//testing/gmock",
274    "//testing/gtest",
275  ]
276  configs += [ "//media:media_config" ]
277
278  if (is_android) {
279    sources += [
280      "android/audio_android_unittest.cc",
281    ]
282  } else {
283    sources += [
284      "audio_input_volume_unittest.cc",
285    ]
286  }
287
288  if (is_mac) {
289    sources += [
290      "mac/audio_auhal_mac_unittest.cc",
291      "mac/audio_device_listener_mac_unittest.cc",
292      "mac/audio_low_latency_input_mac_unittest.cc",
293    ]
294  }
295
296  if (is_chromeos) {
297    sources += [
298      "sounds/audio_stream_handler_unittest.cc",
299      "sounds/sounds_manager_unittest.cc",
300      "sounds/test_data.cc",
301      "sounds/test_data.h",
302      "sounds/wav_audio_handler_unittest.cc",
303    ]
304
305    if (use_cras) {
306      sources += [
307        "cras/cras_input_unittest.cc",
308        "cras/cras_unified_unittest.cc",
309      ]
310    }
311  }
312
313  if (is_win) {
314    sources += [
315      "win/audio_device_listener_win_unittest.cc",
316      "win/audio_low_latency_input_win_unittest.cc",
317      "win/audio_low_latency_output_win_unittest.cc",
318      "win/audio_output_win_unittest.cc",
319      "win/core_audio_util_win_unittest.cc",
320    ]
321  }
322
323  if (use_alsa) {
324    sources += [
325      "alsa/alsa_output_unittest.cc",
326    ]
327  }
328}
329