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 5 import("//media/media_options.gni") 6 7 # When libpulse is not directly linked, use stubs to allow for dlopening of the 8 # binary. 9 if (!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 36 source_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 238 source_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 254 source_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