# 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("//build/config/android/config.gni") import("//build/config/arm.gni") import("//build/config/features.gni") import("//build/config/linux/pkg_config.gni") import("//build/config/ozone.gni") import("//build/config/ui.gni") import("//media/media_options.gni") import("//testing/libfuzzer/fuzzer_test.gni") if (is_android) { import("//build/config/android/rules.gni") } source_set("base") { # Do not expand the visibility here without double-checking with OWNERS, this # is a roll-up target which is part of the //media component. Most other DEPs # should be using //media and not directly DEP this roll-up target. visibility = media_subcomponent_deps visibility += [ "//media" ] # TODO(dalecurtis): Replace this with empty targets on non-mac so # we can just include //media/base/mac in media_subcomponent_deps. if (is_apple) { visibility += [ "//media/base/mac" ] } if (is_android) { visibility += [ "//gpu/command_buffer/service:android_texture_owner_unittests" ] } sources = [ "android_overlay_config.cc", "android_overlay_config.h", "android_overlay_mojo_factory.h", "async_destroy_video_decoder.h", "async_destroy_video_encoder.h", "audio_block_fifo.cc", "audio_block_fifo.h", "audio_buffer.cc", "audio_buffer.h", "audio_buffer_converter.cc", "audio_buffer_converter.h", "audio_buffer_queue.cc", "audio_buffer_queue.h", "audio_capturer_source.h", "audio_codecs.cc", "audio_codecs.h", "audio_converter.cc", "audio_converter.h", "audio_decoder.cc", "audio_decoder.h", "audio_decoder_config.cc", "audio_decoder_config.h", "audio_discard_helper.cc", "audio_discard_helper.h", "audio_encoder.cc", "audio_encoder.h", "audio_fifo.cc", "audio_fifo.h", "audio_hash.cc", "audio_hash.h", "audio_power_monitor.cc", "audio_power_monitor.h", "audio_processing.cc", "audio_processing.h", "audio_pull_fifo.cc", "audio_pull_fifo.h", "audio_push_fifo.cc", "audio_push_fifo.h", "audio_renderer.cc", "audio_renderer.h", "audio_renderer_mixer.cc", "audio_renderer_mixer.h", "audio_renderer_mixer_input.cc", "audio_renderer_mixer_input.h", "audio_renderer_mixer_pool.h", "audio_renderer_sink.h", "audio_shifter.cc", "audio_shifter.h", "audio_timestamp_helper.cc", "audio_timestamp_helper.h", "bind_to_current_loop.h", "bit_reader.cc", "bit_reader.h", "bit_reader_core.cc", "bit_reader_core.h", "bitstream_buffer.cc", "bitstream_buffer.h", "buffering_state.cc", "buffering_state.h", "byte_queue.cc", "byte_queue.h", "callback_holder.h", "callback_registry.h", "cdm_callback_promise.cc", "cdm_callback_promise.h", "cdm_config.h", "cdm_context.cc", "cdm_context.h", "cdm_factory.cc", "cdm_factory.h", "cdm_initialized_promise.cc", "cdm_initialized_promise.h", "cdm_key_information.cc", "cdm_key_information.h", "cdm_promise.cc", "cdm_promise.h", "cdm_promise_adapter.cc", "cdm_promise_adapter.h", "cdm_session_tracker.cc", "cdm_session_tracker.h", "channel_mixer.cc", "channel_mixer.h", "channel_mixing_matrix.cc", "channel_mixing_matrix.h", "color_plane_layout.cc", "color_plane_layout.h", "container_names.cc", "container_names.h", "content_decryption_module.cc", "content_decryption_module.h", "data_buffer.cc", "data_buffer.h", "data_source.cc", "data_source.h", "decode_status.cc", "decode_status.h", "decoder.cc", "decoder.h", "decoder_buffer.cc", "decoder_buffer.h", "decoder_buffer_queue.cc", "decoder_buffer_queue.h", "decoder_factory.cc", "decoder_factory.h", "decrypt_config.cc", "decrypt_config.h", "decryptor.cc", "decryptor.h", "demuxer.cc", "demuxer.h", "demuxer_memory_limit.h", "demuxer_stream.cc", "demuxer_stream.h", "djb2.cc", "djb2.h", "eme_constants.h", "encryption_pattern.cc", "encryption_pattern.h", "encryption_scheme.cc", "encryption_scheme.h", "fake_audio_worker.cc", "fake_audio_worker.h", "fallback_video_decoder.cc", "fallback_video_decoder.h", "feedback_signal_accumulator.h", "flinging_controller.h", "format_utils.cc", "format_utils.h", "frame_rate_estimator.cc", "frame_rate_estimator.h", "key_system_names.cc", "key_system_names.h", "key_system_properties.cc", "key_system_properties.h", "key_systems.cc", "key_systems.h", "localized_strings.cc", "localized_strings.h", "logging_override_if_enabled.h", "loopback_audio_converter.cc", "loopback_audio_converter.h", "media.cc", "media.h", "media_client.cc", "media_client.h", "media_content_type.cc", "media_content_type.h", "media_controller.h", "media_export.h", "media_log.cc", "media_log.h", "media_log_events.cc", "media_log_events.h", "media_log_message_levels.cc", "media_log_message_levels.h", "media_log_properties.cc", "media_log_properties.h", "media_log_record.h", "media_log_type_enforcement.h", "media_observer.cc", "media_observer.h", "media_permission.cc", "media_permission.h", "media_resource.cc", "media_resource.h", "media_serializers.h", "media_serializers_base.h", "media_status.cc", "media_status.h", "media_status_observer.h", "media_switches.cc", "media_switches.h", "media_track.cc", "media_track.h", "media_tracks.cc", "media_tracks.h", "media_types.cc", "media_types.h", "media_url_demuxer.cc", "media_url_demuxer.h", "media_url_params.cc", "media_url_params.h", "media_util.cc", "media_util.h", "memory_dump_provider_proxy.cc", "memory_dump_provider_proxy.h", "mime_util.cc", "mime_util.h", "mime_util_internal.cc", "mime_util_internal.h", "moving_average.cc", "moving_average.h", "multi_channel_resampler.cc", "multi_channel_resampler.h", "null_video_sink.cc", "null_video_sink.h", "offloading_video_encoder.cc", "offloading_video_encoder.h", "output_device_info.cc", "output_device_info.h", "overlay_info.cc", "overlay_info.h", "pipeline.h", "pipeline_impl.cc", "pipeline_impl.h", "pipeline_metadata.cc", "pipeline_metadata.h", "pipeline_status.cc", "pipeline_status.h", "provision_fetcher.h", "ranges.cc", "ranges.h", "reentrancy_checker.cc", "reentrancy_checker.h", "renderer.cc", "renderer.h", "renderer_client.cc", "renderer_client.h", "renderer_factory.cc", "renderer_factory.h", "renderer_factory_selector.cc", "renderer_factory_selector.h", "routing_token_callback.h", "sample_rates.cc", "sample_rates.h", "scoped_async_trace.cc", "scoped_async_trace.h", "seekable_buffer.cc", "seekable_buffer.h", "serial_runner.cc", "serial_runner.h", "silent_sink_suspender.cc", "silent_sink_suspender.h", "simple_sync_token_client.cc", "simple_sync_token_client.h", "simple_watch_timer.cc", "simple_watch_timer.h", "sinc_resampler.cc", "sinc_resampler.h", "status.cc", "status.h", "status_codes.cc", "status_codes.h", "stream_parser.cc", "stream_parser.h", "stream_parser_buffer.cc", "stream_parser_buffer.h", "subsample_entry.cc", "subsample_entry.h", "supported_types.cc", "supported_types.h", "text_cue.cc", "text_cue.h", "text_ranges.cc", "text_ranges.h", "text_renderer.cc", "text_renderer.h", "text_track.h", "text_track_config.cc", "text_track_config.h", "time_delta_interpolator.cc", "time_delta_interpolator.h", "time_source.h", "timestamp_constants.h", "tuneable.cc", "tuneable.h", "unaligned_shared_memory.cc", "unaligned_shared_memory.h", "use_after_free_checker.h", "user_input_monitor.cc", "user_input_monitor.h", "video_bitrate_allocation.cc", "video_bitrate_allocation.h", "video_codecs.cc", "video_codecs.h", "video_color_space.cc", "video_color_space.h", "video_decoder.cc", "video_decoder.h", "video_decoder_config.cc", "video_decoder_config.h", "video_encoder.cc", "video_encoder.h", "video_frame.cc", "video_frame.h", "video_frame_feedback.cc", "video_frame_feedback.h", "video_frame_layout.cc", "video_frame_layout.h", "video_frame_metadata.cc", "video_frame_metadata.h", "video_frame_pool.cc", "video_frame_pool.h", "video_renderer.cc", "video_renderer.h", "video_thumbnail_decoder.cc", "video_thumbnail_decoder.h", "video_transformation.cc", "video_transformation.h", "video_types.cc", "video_types.h", "video_util.cc", "video_util.h", "wait_and_replace_sync_token_client.cc", "wait_and_replace_sync_token_client.h", "waiting.h", "wall_clock_time_source.cc", "wall_clock_time_source.h", "watch_time_keys.cc", "watch_time_keys.h", "webvtt_util.h", ] defines = [] public_deps = [ ":video_facing", "//media:media_buildflags", "//media:shared_memory_support", "//ui/gfx:color_space", "//ui/gl", ] deps = [ "//base/allocator:buildflags", "//base/util/values:values_util", "//build:chromeos_buildflags", "//components/system_media_controls/linux/buildflags", "//gpu/command_buffer/client:interface_base", "//gpu/command_buffer/common", "//gpu/ipc/common:common", "//third_party/libyuv", "//third_party/widevine/cdm:headers", "//ui/display:display", "//ui/events:events", "//ui/events:events_base", "//url:url", ] libs = [] configs += [ "//build/config:precompiled_headers", # TODO(crbug.com/167187): Fix size_t to int truncations. "//build/config/compiler:no_size_t_to_int_warning", "//media:subcomponent_config", ] if (media_use_ffmpeg) { deps += [ "//third_party/ffmpeg", "//third_party/ffmpeg:ffmpeg_features", ] } if (media_use_libvpx) { deps += [ "//third_party/libvpx" ] } if (use_x11 || ozone_platform_x11) { sources += [ "user_input_monitor_linux.cc" ] deps += [ "//ui/base:features", "//ui/events:events_base", "//ui/events/devices/x11", "//ui/gfx/x", ] } else if (is_mac) { sources += [ "user_input_monitor_mac.cc" ] frameworks = [ "CoreVideo.framework", "CoreFoundation.framework", "CoreGraphics.framework", "IOSurface.framework", ] } else if (is_win) { sources += [ "user_input_monitor_win.cc" ] } else { defines += [ "DISABLE_USER_INPUT_MONITOR" ] } if (use_x11) { deps += [ "//ui/base/x" ] } if (use_ozone) { deps += [ "//ui/ozone" ] } # Note: should also work on is_posix || is_fuchsia if (is_linux || is_chromeos) { sources += [ "scopedfd_helper.cc", "scopedfd_helper.h", ] } if (is_win) { public_deps += [ "//media/base/win:mf_cdm_proxy" ] } # TODO(ziyangch): Check |is_chromecast| first when using cast media pipeline # on Android cast devices. if (is_android) { sources += [ "demuxer_memory_limit_android.cc" ] } else if (is_chromecast) { sources += [ "demuxer_memory_limit_cast.cc" ] } else if (is_fuchsia) { sources += [ "demuxer_memory_limit_low.cc" ] } else { sources += [ "demuxer_memory_limit_default.cc" ] } if (!is_android) { sources += [ "speech_recognition_client.h" ] } if (enable_media_drm_storage) { sources += [ "media_drm_key_type.h", "media_drm_storage.cc", "media_drm_storage.h", ] } } source_set("video_facing") { sources = [ "video_facing.h" ] } if (is_android) { java_cpp_enum("java_enums") { sources = [ "container_names.h", "encryption_scheme.h", "video_codecs.h", ] } } # Note: Only specific internal targets that roll up into the //media component # should depend on this, external targets should use //media:test_support. static_library("test_support") { visibility = [ "//media:test_support", "//media/audio:test_support", "//media/base/android:test_support", "//media/filters:test_support", "//media/formats:test_support", "//media/video:test_support", ] testonly = true sources = [ "fake_audio_render_callback.cc", "fake_audio_render_callback.h", "fake_audio_renderer_sink.cc", "fake_audio_renderer_sink.h", "fake_demuxer_stream.cc", "fake_demuxer_stream.h", "fake_localized_strings.cc", "fake_localized_strings.h", "fake_single_thread_task_runner.cc", "fake_single_thread_task_runner.h", "fake_text_track_stream.cc", "fake_text_track_stream.h", "mock_audio_renderer_sink.cc", "mock_audio_renderer_sink.h", "mock_demuxer_host.cc", "mock_demuxer_host.h", "mock_filters.cc", "mock_filters.h", "mock_media_log.cc", "mock_media_log.h", "test_data_util.cc", "test_data_util.h", "test_helpers.cc", "test_helpers.h", "test_random.h", ] configs += [ "//media:media_config" ] # Do not add any other //media deps except this; this ensures other # test_support targets all use the same //media component to avoid duplicate # and undefined symbol issues on Windows. public_deps = [ "//media" ] deps = [ "//base", "//base/test:test_support", "//testing/gmock", "//ui/gfx:test_support", "//url", ] if (is_win) { public_deps += [ "//media/base/win:test_support" ] } } source_set("unit_tests") { testonly = true sources = [ "audio_block_fifo_unittest.cc", "audio_buffer_converter_unittest.cc", "audio_buffer_queue_unittest.cc", "audio_buffer_unittest.cc", "audio_bus_unittest.cc", "audio_converter_unittest.cc", "audio_discard_helper_unittest.cc", "audio_fifo_unittest.cc", "audio_hash_unittest.cc", "audio_latency_unittest.cc", "audio_parameters_unittest.cc", "audio_point_unittest.cc", "audio_power_monitor_unittest.cc", "audio_pull_fifo_unittest.cc", "audio_push_fifo_unittest.cc", "audio_renderer_mixer_input_unittest.cc", "audio_renderer_mixer_unittest.cc", "audio_sample_types_unittest.cc", "audio_shifter_unittest.cc", "audio_timestamp_helper_unittest.cc", "bind_to_current_loop_unittest.cc", "bit_reader_unittest.cc", "callback_holder_unittest.cc", "callback_registry_unittest.cc", "channel_mixer_unittest.cc", "channel_mixing_matrix_unittest.cc", "container_names_unittest.cc", "data_buffer_unittest.cc", "decoder_buffer_queue_unittest.cc", "decoder_buffer_unittest.cc", "decrypt_config_unittest.cc", "djb2_unittest.cc", "fake_audio_worker_unittest.cc", "fake_demuxer_stream_unittest.cc", "fallback_video_decoder_unittest.cc", "feedback_signal_accumulator_unittest.cc", "frame_rate_estimator_unittest.cc", "key_systems_unittest.cc", "media_log_unittest.cc", "media_serializers_unittest.cc", "media_url_demuxer_unittest.cc", "mime_util_unittest.cc", "moving_average_unittest.cc", "multi_channel_resampler_unittest.cc", "null_video_sink_unittest.cc", "offloading_video_encoder_unittest.cc", "pipeline_impl_unittest.cc", "ranges_unittest.cc", "reentrancy_checker_unittest.cc", "renderer_factory_selector_unittest.cc", "seekable_buffer_unittest.cc", "serial_runner_unittest.cc", "silent_sink_suspender_unittest.cc", "sinc_resampler_unittest.cc", "status_unittest.cc", "stream_parser_unittest.cc", "subsample_entry_unittest.cc", "supported_types_unittest.cc", "text_ranges_unittest.cc", "text_renderer_unittest.cc", "time_delta_interpolator_unittest.cc", "tuneable_unittest.cc", "unaligned_shared_memory_unittest.cc", "user_input_monitor_unittest.cc", "vector_math_unittest.cc", "video_bitrate_allocation_unittest.cc", "video_codecs_unittest.cc", "video_color_space_unittest.cc", "video_decoder_config_unittest.cc", "video_frame_layout_unittest.cc", "video_frame_pool_unittest.cc", "video_frame_unittest.cc", "video_thumbnail_decoder_unittest.cc", "video_types_unittest.cc", "video_util_unittest.cc", "wall_clock_time_source_unittest.cc", ] configs += [ # TODO(crbug.com/167187): Fix size_t to int truncations. "//build/config/compiler:no_size_t_to_int_warning", "//media:media_config", ] deps = [ "//base/test:test_support", "//build:chromeos_buildflags", "//components/viz/common", "//gpu/command_buffer/common", "//media:test_support", "//testing/gmock", "//testing/gtest", "//third_party/libyuv", "//third_party/widevine/cdm:headers", "//ui/gfx", ] if (is_apple) { deps += [ "//media/base/mac:unit_tests" ] } if (is_win) { sources += [ "win/dxgi_device_scope_handle_unittest.cc" ] deps += [ "//media/base/win:media_foundation_util" ] libs = [ "d3d11.lib", "mfplat.lib", ] } if (is_chromecast && !is_android) { sources += [ "demuxer_memory_limit_cast_unittest.cc" ] } } source_set("perftests") { testonly = true sources = [ "audio_bus_perftest.cc", "audio_converter_perftest.cc", "run_all_perftests.cc", "sinc_resampler_perftest.cc", "vector_math_perftest.cc", ] configs += [ # TODO(crbug.com/167187): Fix size_t to int truncations. "//build/config/compiler:no_size_t_to_int_warning", "//media:media_config", ] deps = [ "//base", "//base/test:test_support", "//media:test_support", "//testing/gmock", "//testing/gtest", "//testing/perf", ] } fuzzer_test("media_bit_reader_fuzzer") { sources = [ "bit_reader_fuzzertest.cc" ] deps = [ "//base", "//media:test_support", ] } fuzzer_test("media_container_names_fuzzer") { sources = [ "container_names_fuzzertest.cc" ] deps = [ "//base", "//media:test_support", ] }