From 76ff1aa19228eaa7dab2b554b12a5224418aad4a Mon Sep 17 00:00:00 2001 From: "dalecurtis@chromium.org" Date: Sat, 19 Jul 2014 04:59:52 +0000 Subject: [PATCH] Factorize media/audio into new GN. Breaks out one of the most complex media/ targets into its own BUILD.gn file for improved readibility and targetting. BUG=none TEST=media_unittests Review URL: https://codereview.chromium.org/396793003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284314 0039d316-1c4b-4281-b951-d872f2087c98 --- DEPS | 2 +- media/BUILD.gn | 296 +--------------- media/audio/BUILD.gn | 331 ++++++++++++++++++ ...audio_low_latency_input_output_unittest.cc | 12 +- media/media_options.gni | 45 +++ 5 files changed, 402 insertions(+), 284 deletions(-) create mode 100644 media/audio/BUILD.gn create mode 100644 media/media_options.gni diff --git a/DEPS b/DEPS index 6bfca2fd48ff65..19b3282bed6601 100644 --- a/DEPS +++ b/DEPS @@ -220,7 +220,7 @@ deps = { "src/third_party/ffmpeg": Var("chromium_git") + - "/chromium/third_party/ffmpeg.git@4b7b36f956209fad838ad87d0129130713fbb00c", + "/chromium/third_party/ffmpeg.git@35b6086d85dd8aa7d29c2525e11debc5937bb506", "src/third_party/libjingle/source/talk": (Var("googlecode_url") % "webrtc") + "/trunk/talk@" + diff --git a/media/BUILD.gn b/media/BUILD.gn index 37dc76f81093bb..6b710be16a25c6 100644 --- a/media/BUILD.gn +++ b/media/BUILD.gn @@ -6,48 +6,7 @@ import("//build/config/android/config.gni") import("//build/config/arm.gni") import("//build/config/ui.gni") import("//build/config/linux/pkg_config.gni") - -# These variables need to be args. - -# Override to dynamically link the cras (ChromeOS audio) library. -use_cras = false - -# Option e.g. for Linux distributions to link pulseaudio directly -# (DT_NEEDED) instead of using dlopen. This helps with automated -# detection of ABI mismatches and prevents silent errors. -# -# TODO(ajwong): Why is this prefixed "linux_"? -linux_link_pulseaudio = false - -# TODO(ajwong): Enable libvpx once that's converted. -media_use_ffmpeg = true -media_use_libvpx = false -if (is_android) { - # Android doesn't use ffmpeg or libvpx. - media_use_ffmpeg = false - media_use_libvpx = false -} - -# TODO(ajwong): how to disable embedded? -# Original conditional: (OS=="linux" or OS=="freebsd" or OS=="solaris") and embedded!=1 -use_alsa = false -use_pulseaudio = false -if (is_posix && !is_android) { - use_alsa = true - if (!use_cras) { - use_pulseaudio = true - } -} - -# TODO(ajwong): is_openbsd should be a platform define. -is_openbsd = false - -# TODO(ajwong): This should be branding controlled? -proprietary_codecs = false - -# TODO(ajwong): Where are these coming from?jk -enable_mpeg2ts_stream_parser = false -enable_browser_cdms = is_android +import("//media/media_options.gni") # Common configuration for targets in the media directory. # NOT for exporting. @@ -83,131 +42,10 @@ if (is_win) { } } -if (!linux_link_pulseaudio) { - # When libpulse is not directly linked, use stubs to allow for dlopening of - # the binary. - action("pulse_generate_stubs") { - extra_header = "audio/pulse/pulse_stub_header.fragment" - - script = "../tools/generate_stubs/generate_stubs.py" - sources = [ "audio/pulse/pulse.sigs" ] - source_prereqs = [ extra_header ] - stubs_filename_root = "pulse_stubs" - - # TODO(ajwong): these need to be included in the pulse build. - outputs = [ - "$target_gen_dir/audio/pulse/$stubs_filename_root.cc", - "$target_gen_dir/audio/pulse/$stubs_filename_root.h", - ] - args = [ - "-i", rebase_path("$target_gen_dir/audio/pulse", root_build_dir), - "-o", rebase_path("$target_gen_dir/audio/pulse", root_build_dir), - "-t", "posix_stubs", - "-e", rebase_path(extra_header, root_build_dir), - "-s", stubs_filename_root, - "-p", "media/audio/pulse", - ] - - args += rebase_path(sources, root_build_dir) - } -} - component("media") { sources = [ - "audio/agc_audio_stream.h", - "audio/audio_buffers_state.cc", - "audio/audio_buffers_state.h", - "audio/audio_device_name.cc", - "audio/audio_device_name.h", - "audio/audio_device_thread.cc", - "audio/audio_device_thread.h", - "audio/audio_input_controller.cc", - "audio/audio_input_controller.h", - "audio/audio_input_device.cc", - "audio/audio_input_device.h", - "audio/audio_input_ipc.cc", - "audio/audio_input_ipc.h", - "audio/audio_io.h", - "audio/audio_manager.cc", - "audio/audio_manager.h", - "audio/audio_manager_base.cc", - "audio/audio_manager_base.h", - "audio/audio_output_controller.cc", - "audio/audio_output_controller.h", - "audio/audio_output_device.cc", - "audio/audio_output_device.h", - "audio/audio_output_dispatcher.cc", - "audio/audio_output_dispatcher.h", - "audio/audio_output_dispatcher_impl.cc", - "audio/audio_output_dispatcher_impl.h", - "audio/audio_output_ipc.cc", - "audio/audio_output_ipc.h", - "audio/audio_output_proxy.cc", - "audio/audio_output_proxy.h", - "audio/audio_output_resampler.cc", - "audio/audio_output_resampler.h", - "audio/audio_power_monitor.cc", - "audio/audio_power_monitor.h", - "audio/audio_source_diverter.h", - "audio/clockless_audio_sink.cc", - "audio/clockless_audio_sink.h", - "audio/fake_audio_consumer.cc", - "audio/fake_audio_consumer.h", - "audio/fake_audio_input_stream.cc", - "audio/fake_audio_input_stream.h", - "audio/fake_audio_log_factory.h", - "audio/fake_audio_log_factory.cc", - "audio/fake_audio_manager.cc", - "audio/fake_audio_manager.h", - "audio/fake_audio_output_stream.cc", - "audio/fake_audio_output_stream.h", - "audio/linux/audio_manager_linux.cc", - "audio/mac/audio_auhal_mac.cc", - "audio/mac/audio_auhal_mac.h", - "audio/mac/audio_device_listener_mac.cc", - "audio/mac/audio_device_listener_mac.h", - "audio/mac/audio_input_mac.cc", - "audio/mac/audio_input_mac.h", - "audio/mac/audio_low_latency_input_mac.cc", - "audio/mac/audio_low_latency_input_mac.h", - "audio/mac/audio_manager_mac.cc", - "audio/mac/audio_manager_mac.h", - "audio/null_audio_sink.cc", - "audio/null_audio_sink.h", - "audio/sample_rates.cc", - "audio/sample_rates.h", - "audio/scoped_task_runner_observer.cc", - "audio/scoped_task_runner_observer.h", - "audio/simple_sources.cc", - "audio/simple_sources.h", - "audio/sounds/audio_stream_handler.cc", - "audio/sounds/audio_stream_handler.h", - "audio/sounds/sounds_manager.cc", - "audio/sounds/sounds_manager.h", - "audio/sounds/wav_audio_handler.cc", - "audio/sounds/wav_audio_handler.h", - "audio/virtual_audio_input_stream.cc", - "audio/virtual_audio_input_stream.h", - "audio/virtual_audio_output_stream.cc", - "audio/virtual_audio_output_stream.h", - "audio/win/audio_device_listener_win.cc", - "audio/win/audio_device_listener_win.h", - "audio/win/audio_low_latency_input_win.cc", - "audio/win/audio_low_latency_input_win.h", - "audio/win/audio_low_latency_output_win.cc", - "audio/win/audio_low_latency_output_win.h", - "audio/win/audio_manager_win.cc", - "audio/win/audio_manager_win.h", - "audio/win/avrt_wrapper_win.cc", - "audio/win/avrt_wrapper_win.h", - "audio/win/core_audio_util_win.cc", - "audio/win/core_audio_util_win.h", - "audio/win/device_enumeration_win.cc", - "audio/win/device_enumeration_win.h", - "audio/win/wavein_input_win.cc", - "audio/win/wavein_input_win.h", - "audio/win/waveout_output_win.cc", - "audio/win/waveout_output_win.h", + "base/audio_block_fifo.cc", + "base/audio_block_fifo.h", "base/audio_buffer.cc", "base/audio_buffer.h", "base/audio_buffer_queue.cc", @@ -328,6 +166,7 @@ component("media") { "base/text_track_config.h", "base/time_delta_interpolator.cc", "base/time_delta_interpolator.h", + "base/time_source.h", "base/user_input_monitor.cc", "base/user_input_monitor.h", "base/user_input_monitor_mac.cc", @@ -345,6 +184,8 @@ component("media") { "base/video_rotation.h", "base/video_util.cc", "base/video_util.h", + "base/wall_clock_time_source.cc", + "base/wall_clock_time_source.h", "base/yuv_convert.cc", "base/yuv_convert.h", "cdm/aes_decryptor.cc", @@ -581,15 +422,6 @@ component("media") { ] } else { sources += [ - "audio/android/audio_manager_android.cc", - "audio/android/audio_manager_android.h", - "audio/android/audio_record_input.cc", - "audio/android/audio_record_input.h", - "audio/android/opensles_input.cc", - "audio/android/opensles_input.h", - "audio/android/opensles_output.cc", - "audio/android/opensles_output.h", - "audio/android/opensles_wrapper.cc", "base/android/demuxer_android.h", "base/android/demuxer_stream_player_params.cc", "base/android/demuxer_stream_player_params.h", @@ -647,28 +479,11 @@ component("media") { libs += [ "asound" ] defines += [ "USE_ALSA" ] sources += [ - "audio/alsa/alsa_input.cc", - "audio/alsa/alsa_input.h", - "audio/alsa/alsa_output.cc", - "audio/alsa/alsa_output.h", - "audio/alsa/alsa_util.cc", - "audio/alsa/alsa_util.h", - "audio/alsa/alsa_wrapper.cc", - "audio/alsa/alsa_wrapper.h", - "audio/alsa/audio_manager_alsa.cc", - "audio/alsa/audio_manager_alsa.h", "midi/midi_manager_alsa.cc", "midi/midi_manager_alsa.h", ] } - if (is_openbsd) { - sources += [ - "audio/openbsd/audio_manager_openbsd.cc", - "audio/openbsd/audio_manager_openbsd.h", - ] - } - # A simple WebM encoder for animated avatars on ChromeOS. if (is_linux) { if (use_x11) { @@ -686,22 +501,6 @@ component("media") { } else { defines += [ "DISABLE_USER_INPUT_MONITOR" ] } - - if (use_cras) { - pkg_config("libcras") { - packages = [ "libcras" ] - } - configs += [ "libcras" ] - sources += [ - "audio/cras/audio_manager_cras.cc", - "audio/cras/audio_manager_cras.h", - "audio/cras/cras_input.cc", - "audio/cras/cras_input.h", - "audio/cras/cras_unified.cc", - "audio/cras/cras_unified.h", - ] - } - } if (use_ozone) { @@ -736,35 +535,8 @@ component("media") { } } - if (use_pulseaudio) { - if (linux_link_pulseaudio) { - pkg_config("libpulse") { - packages = [ "libpulse" ] - } - configs += [ ":libpulse" ] - } else { - # TODO(ajwong): Technically, this dl should go in the action. - libs += [ "dl" ] - deps += [ ":pulse_generate_stubs" ] - sources += get_target_outputs(":pulse_generate_stubs") - } - sources += [ - "audio/pulse/audio_manager_pulse.cc", - "audio/pulse/audio_manager_pulse.h", - "audio/pulse/pulse_input.cc", - "audio/pulse/pulse_input.h", - "audio/pulse/pulse_output.cc", - "audio/pulse/pulse_output.h", - "audio/pulse/pulse_util.cc", - "audio/pulse/pulse_util.h", - ] - } - if (is_mac) { libs += [ - "AudioToolbox.framework", - "AudioUnit.framework", - "CoreAudio.framework", "CoreMIDI.framework", "CoreVideo.framework", "OpenGL.framework", @@ -863,6 +635,7 @@ component("media") { "//crypto", "//crypto:platform", # TODO(ajwong): This used to be provided by crypto.gyp via export_dependent_settings "//gpu/command_buffer/common", + "//media/audio", "//skia", "//third_party/opus", "//ui/events:events_base", @@ -874,35 +647,10 @@ component("media") { test("media_unittests") { sources = [ - "audio/android/audio_android_unittest.cc", - "audio/audio_input_controller_unittest.cc", - "audio/audio_input_unittest.cc", - "audio/audio_manager_unittest.cc", - "audio/audio_output_controller_unittest.cc", - "audio/audio_output_device_unittest.cc", - "audio/audio_output_proxy_unittest.cc", - "audio/audio_parameters_unittest.cc", - "audio/audio_power_monitor_unittest.cc", - "audio/fake_audio_consumer_unittest.cc", - "audio/mac/audio_auhal_mac_unittest.cc", - "audio/mac/audio_device_listener_mac_unittest.cc", - "audio/mac/audio_low_latency_input_mac_unittest.cc", - "audio/simple_sources_unittest.cc", - "audio/sounds/audio_stream_handler_unittest.cc", - "audio/sounds/sounds_manager_unittest.cc", - "audio/sounds/test_data.cc", - "audio/sounds/test_data.h", - "audio/sounds/wav_audio_handler_unittest.cc", - "audio/virtual_audio_input_stream_unittest.cc", - "audio/virtual_audio_output_stream_unittest.cc", - "audio/win/audio_device_listener_win_unittest.cc", - "audio/win/audio_low_latency_input_win_unittest.cc", - "audio/win/audio_low_latency_output_win_unittest.cc", - "audio/win/audio_output_win_unittest.cc", - "audio/win/core_audio_util_win_unittest.cc", "base/android/media_codec_bridge_unittest.cc", "base/android/media_drm_bridge_unittest.cc", "base/android/media_source_player_unittest.cc", + "base/audio_block_fifo_unittest.cc", "base/audio_buffer_converter_unittest.cc", "base/audio_buffer_unittest.cc", "base/audio_buffer_queue_unittest.cc", @@ -944,6 +692,7 @@ test("media_unittests") { "base/video_frame_unittest.cc", "base/video_frame_pool_unittest.cc", "base/video_util_unittest.cc", + "base/wall_clock_time_source_unittest.cc", "base/yuv_convert_unittest.cc", "cdm/aes_decryptor_unittest.cc", "cdm/json_web_key_unittest.cc", @@ -1002,7 +751,7 @@ test("media_unittests") { if (!is_android) { sources += [ - "audio/audio_input_volume_unittest.cc", + "base/container_names_unittest.cc", "ffmpeg/ffmpeg_common_unittest.cc", "filters/audio_decoder_unittest.cc", @@ -1023,24 +772,10 @@ test("media_unittests") { # ] } - if (is_linux && use_cras) { - sources += [ - "audio/cras/cras_input_unittest.cc", - "audio/cras/cras_unified_unittest.cc", - ] - } - if (cpu_arch != "arm" && is_chromeos && use_x11) { sources += [ "filters/h264_bitstream_buffer_unittest.cc" ] } - if (use_alsa) { - sources += [ - "audio/alsa/alsa_output_unittest.cc", - "audio/audio_low_latency_input_output_unittest.cc", - ] - } - if (cpu_arch == "x86" || cpu_arch == "x64") { sources += [ "base/simd/convert_rgb_to_yuv_unittest.cc" ] } @@ -1100,6 +835,8 @@ test("media_unittests") { ":media", ":media_test_support", "//base/test:test_support", + "//media/audio:unittests", + "//media/audio:test_support", "//skia", # Direct dependency required to inherit config. "//testing/gmock", "//testing/gtest", @@ -1137,6 +874,7 @@ test("media_perftests") { ":media_test_support", ":shared_memory_support", "//base/test:test_support", + "//media/audio:test_support", "//testing/gmock", "//testing/gtest", "//testing/perf", @@ -1230,12 +968,6 @@ if (cpu_arch == "x86" || cpu_arch == "x64") { source_set("media_test_support") { sources = [ - "audio/mock_audio_manager.cc", - "audio/mock_audio_manager.h", - "audio/mock_audio_source_callback.cc", - "audio/mock_audio_source_callback.h", - "audio/test_audio_input_controller_factory.cc", - "audio/test_audio_input_controller_factory.h", "base/fake_audio_render_callback.cc", "base/fake_audio_render_callback.h", "base/fake_audio_renderer_sink.cc", @@ -1272,6 +1004,7 @@ source_set("media_test_support") { ] } +# TODO(dalecurtis): How to split this across audio/base directories?? component("shared_memory_support") { sources = [ "audio/audio_parameters.cc", @@ -1316,6 +1049,7 @@ if (media_use_ffmpeg) { ":media", ":media_test_support", "//base/test:test_support", + "//media/audio:test_support", "//testing/gmock", "//testing/gtest", "//third_party/ffmpeg", diff --git a/media/audio/BUILD.gn b/media/audio/BUILD.gn new file mode 100644 index 00000000000000..b4f0596bffa27b --- /dev/null +++ b/media/audio/BUILD.gn @@ -0,0 +1,331 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//media/media_options.gni") + +# When libpulse is not directly linked, use stubs to allow for dlopening of the +# binary. +if (!linux_link_pulseaudio) { + action("pulse_generate_stubs") { + extra_header = "pulse/pulse_stub_header.fragment" + + script = "../../tools/generate_stubs/generate_stubs.py" + sources = [ "pulse/pulse.sigs" ] + source_prereqs = [ extra_header ] + stubs_filename_root = "pulse_stubs" + + # TODO(ajwong): these need to be included in the pulse build. + outputs = [ + "$target_gen_dir/pulse/$stubs_filename_root.cc", + "$target_gen_dir/pulse/$stubs_filename_root.h", + ] + args = [ + "-i", rebase_path("$target_gen_dir/pulse", root_build_dir), + "-o", rebase_path("$target_gen_dir/pulse", root_build_dir), + "-t", "posix_stubs", + "-e", rebase_path(extra_header, root_build_dir), + "-s", stubs_filename_root, + "-p", "media/audio/pulse", + ] + + args += rebase_path(sources, root_build_dir) + } +} + +source_set("audio") { + sources = [ + "agc_audio_stream.h", + "audio_buffers_state.cc", + "audio_buffers_state.h", + "audio_device_name.cc", + "audio_device_name.h", + "audio_device_thread.cc", + "audio_device_thread.h", + "audio_input_controller.cc", + "audio_input_controller.h", + "audio_input_device.cc", + "audio_input_device.h", + "audio_input_ipc.cc", + "audio_input_ipc.h", + "audio_io.h", + "audio_manager.cc", + "audio_manager.h", + "audio_manager_base.cc", + "audio_manager_base.h", + "audio_output_controller.cc", + "audio_output_controller.h", + "audio_output_device.cc", + "audio_output_device.h", + "audio_output_dispatcher.cc", + "audio_output_dispatcher.h", + "audio_output_dispatcher_impl.cc", + "audio_output_dispatcher_impl.h", + "audio_output_ipc.cc", + "audio_output_ipc.h", + "audio_output_proxy.cc", + "audio_output_proxy.h", + "audio_output_resampler.cc", + "audio_output_resampler.h", + "audio_power_monitor.cc", + "audio_power_monitor.h", + "audio_source_diverter.h", + "fake_audio_consumer.cc", + "fake_audio_consumer.h", + "fake_audio_input_stream.cc", + "fake_audio_input_stream.h", + "fake_audio_log_factory.h", + "fake_audio_log_factory.cc", + "fake_audio_manager.cc", + "fake_audio_manager.h", + "fake_audio_output_stream.cc", + "fake_audio_output_stream.h", + "null_audio_sink.cc", + "null_audio_sink.h", + "sample_rates.cc", + "sample_rates.h", + "scoped_task_runner_observer.cc", + "scoped_task_runner_observer.h", + "simple_sources.cc", + "simple_sources.h", + "virtual_audio_input_stream.cc", + "virtual_audio_input_stream.h", + "virtual_audio_output_stream.cc", + "virtual_audio_output_stream.h", + ] + deps = [] + libs = [] + configs += [ "//media:media_config" ] + + if (is_chromeos) { + sources += [ + "sounds/audio_stream_handler.cc", + "sounds/audio_stream_handler.h", + "sounds/sounds_manager.cc", + "sounds/sounds_manager.h", + "sounds/wav_audio_handler.cc", + "sounds/wav_audio_handler.h", + ] + } + + if (is_mac) { + sources += [ + "mac/audio_auhal_mac.cc", + "mac/audio_auhal_mac.h", + "mac/audio_device_listener_mac.cc", + "mac/audio_device_listener_mac.h", + "mac/audio_input_mac.cc", + "mac/audio_input_mac.h", + "mac/audio_low_latency_input_mac.cc", + "mac/audio_low_latency_input_mac.h", + "mac/audio_manager_mac.cc", + "mac/audio_manager_mac.h", + ] + libs += [ + "AudioToolbox.framework", + "AudioUnit.framework", + "CoreAudio.framework", + ] + } + + if (is_win) { + sources += [ + "win/audio_device_listener_win.cc", + "win/audio_device_listener_win.h", + "win/audio_low_latency_input_win.cc", + "win/audio_low_latency_input_win.h", + "win/audio_low_latency_output_win.cc", + "win/audio_low_latency_output_win.h", + "win/audio_manager_win.cc", + "win/audio_manager_win.h", + "win/avrt_wrapper_win.cc", + "win/avrt_wrapper_win.h", + "win/core_audio_util_win.cc", + "win/core_audio_util_win.h", + "win/device_enumeration_win.cc", + "win/device_enumeration_win.h", + "win/wavein_input_win.cc", + "win/wavein_input_win.h", + "win/waveout_output_win.cc", + "win/waveout_output_win.h", + ] + } + + if (is_android) { + sources += [ + "android/audio_manager_android.cc", + "android/audio_manager_android.h", + "android/audio_record_input.cc", + "android/audio_record_input.h", + "android/opensles_input.cc", + "android/opensles_input.h", + "android/opensles_output.cc", + "android/opensles_output.h", + "android/opensles_wrapper.cc", + ] + deps += [ + "//media:media_android_jni_headers", + ] + } + + if (is_openbsd) { + sources += [ + "openbsd/audio_manager_openbsd.cc", + "openbsd/audio_manager_openbsd.h", + ] + } + + if (is_linux) { + sources += [ + "linux/audio_manager_linux.cc", + ] + } + + if (use_alsa) { + libs = [ "asound" ] + defines = [ "USE_ALSA" ] + sources += [ + "alsa/alsa_input.cc", + "alsa/alsa_input.h", + "alsa/alsa_output.cc", + "alsa/alsa_output.h", + "alsa/alsa_util.cc", + "alsa/alsa_util.h", + "alsa/alsa_wrapper.cc", + "alsa/alsa_wrapper.h", + "alsa/audio_manager_alsa.cc", + "alsa/audio_manager_alsa.h", + ] + } + + if (use_cras) { + sources += [ + "cras/audio_manager_cras.cc", + "cras/audio_manager_cras.h", + "cras/cras_input.cc", + "cras/cras_input.h", + "cras/cras_unified.cc", + "cras/cras_unified.h", + ] + + pkg_config("libcras") { + packages = [ "libcras" ] + } + configs += [ "libcras" ] + } + + if (use_pulseaudio) { + sources += [ + "pulse/audio_manager_pulse.cc", + "pulse/audio_manager_pulse.h", + "pulse/pulse_input.cc", + "pulse/pulse_input.h", + "pulse/pulse_output.cc", + "pulse/pulse_output.h", + "pulse/pulse_util.cc", + "pulse/pulse_util.h", + ] + + if (linux_link_pulseaudio) { + pkg_config("libpulse") { + packages = [ "libpulse" ] + } + configs += [ ":libpulse" ] + } else { + # TODO(ajwong): Technically, this dl should go in the action. + libs += [ "dl" ] + deps += [ ":pulse_generate_stubs" ] + sources += get_target_outputs(":pulse_generate_stubs") + } + } +} + +source_set("test_support") { + sources = [ + "clockless_audio_sink.cc", + "clockless_audio_sink.h", + "mock_audio_manager.cc", + "mock_audio_manager.h", + "mock_audio_source_callback.cc", + "mock_audio_source_callback.h", + "test_audio_input_controller_factory.cc", + "test_audio_input_controller_factory.h", + ] + deps = [ "//testing/gmock" ] + configs += [ "//media:media_config" ] +} + +source_set("unittests") { + sources = [ + "audio_input_controller_unittest.cc", + "audio_input_unittest.cc", + "audio_low_latency_input_output_unittest.cc", + "audio_manager_unittest.cc", + "audio_output_controller_unittest.cc", + "audio_output_device_unittest.cc", + "audio_output_proxy_unittest.cc", + "audio_parameters_unittest.cc", + "audio_power_monitor_unittest.cc", + "fake_audio_consumer_unittest.cc", + "simple_sources_unittest.cc", + "virtual_audio_input_stream_unittest.cc", + "virtual_audio_output_stream_unittest.cc", + ] + deps = [ + ":test_support", + "//testing/gmock", + "//testing/gtest", + ] + configs += [ "//media:media_config" ] + + if (is_android) { + sources += [ + "android/audio_android_unittest.cc", + ] + } else { + sources += [ + "audio_input_volume_unittest.cc", + ] + } + + if (is_mac) { + sources += [ + "mac/audio_auhal_mac_unittest.cc", + "mac/audio_device_listener_mac_unittest.cc", + "mac/audio_low_latency_input_mac_unittest.cc", + ] + } + + if (is_chromeos) { + sources += [ + "sounds/audio_stream_handler_unittest.cc", + "sounds/sounds_manager_unittest.cc", + "sounds/test_data.cc", + "sounds/test_data.h", + "sounds/wav_audio_handler_unittest.cc", + ] + + if (use_cras) { + sources += [ + "cras/cras_input_unittest.cc", + "cras/cras_unified_unittest.cc", + ] + } + } + + if (is_win) { + sources += [ + "win/audio_device_listener_win_unittest.cc", + "win/audio_low_latency_input_win_unittest.cc", + "win/audio_low_latency_output_win_unittest.cc", + "win/audio_output_win_unittest.cc", + "win/core_audio_util_win_unittest.cc", + ] + } + + if (use_alsa) { + sources += [ + "alsa/alsa_output_unittest.cc", + ] + } +} diff --git a/media/audio/audio_low_latency_input_output_unittest.cc b/media/audio/audio_low_latency_input_output_unittest.cc index eefd3800aabd18..56328962d3beff 100644 --- a/media/audio/audio_low_latency_input_output_unittest.cc +++ b/media/audio/audio_low_latency_input_output_unittest.cc @@ -18,8 +18,12 @@ #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -#if defined(USE_ALSA) +#if defined(USE_PULSEAUDIO) +#include "media/audio/pulse/audio_manager_pulse.h" +#elif defined(USE_ALSA) #include "media/audio/alsa/audio_manager_alsa.h" +#elif defined(USE_CRAS) +#include "media/audio/cras/audio_manager_cras.h" #elif defined(OS_MACOSX) #include "media/audio/mac/audio_manager_mac.h" #elif defined(OS_WIN) @@ -33,8 +37,12 @@ namespace media { -#if defined(USE_ALSA) +#if defined(USE_PULSEAUDIO) +typedef AudioManagerPulse AudioManagerAnyPlatform; +#elif defined(USE_ALSA) typedef AudioManagerAlsa AudioManagerAnyPlatform; +#elif defined(USE_CRAS) +typedef AudioManagerCras AudioManagerAnyPlatform; #elif defined(OS_MACOSX) typedef AudioManagerMac AudioManagerAnyPlatform; #elif defined(OS_WIN) diff --git a/media/media_options.gni b/media/media_options.gni new file mode 100644 index 00000000000000..6bd1f5a6aa0a2d --- /dev/null +++ b/media/media_options.gni @@ -0,0 +1,45 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# These variables need to be args. + +# Override to dynamically link the cras (ChromeOS audio) library. +use_cras = false + +# Option e.g. for Linux distributions to link pulseaudio directly +# (DT_NEEDED) instead of using dlopen. This helps with automated +# detection of ABI mismatches and prevents silent errors. +# +# TODO(ajwong): Why is this prefixed "linux_"? +linux_link_pulseaudio = false + +# TODO(ajwong): Enable libvpx once that's converted. +media_use_ffmpeg = true +media_use_libvpx = false +if (is_android) { + # Android doesn't use ffmpeg or libvpx. + media_use_ffmpeg = false + media_use_libvpx = false +} + +# TODO(ajwong): how to disable embedded? +# Original conditional: (OS=="linux" or OS=="freebsd" or OS=="solaris") and embedded!=1 +use_alsa = false +use_pulseaudio = false +if (is_posix && !is_android) { + use_alsa = true + if (!use_cras) { + use_pulseaudio = true + } +} + +# TODO(ajwong): is_openbsd should be a platform define. +is_openbsd = false + +# TODO(ajwong): This should be branding controlled? +proprietary_codecs = false + +# TODO(ajwong): Where are these coming from?jk +enable_mpeg2ts_stream_parser = false +enable_browser_cdms = is_android