# Copyright 2014 The Chromium Authors
# 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" ]

  if (!enable_library_cdms) {
    # cdm_type_conversion is not part of media_subcomponent_deps.
    visibility += [ "//media/cdm:cdm_type_conversion" ]
  }

  # 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_win) {
    visibility += [ "//media/base/win:color_space_util_win" ]
    visibility += [ "//media/base/win:media_foundation_util" ]
  }

  if (is_android) {
    visibility +=
        [ "//gpu/command_buffer/service:android_texture_owner_unittests" ]
  }

  sources = [
    "amplitude_peak_detector.cc",
    "amplitude_peak_detector.h",
    "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_glitch_info.cc",
    "audio_glitch_info.h",
    "audio_hash.cc",
    "audio_hash.h",
    "audio_power_monitor.cc",
    "audio_power_monitor.h",
    "audio_processing.cc",
    "audio_processing.h",
    "audio_processor_controls.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",
    "bit_reader.cc",
    "bit_reader.h",
    "bit_reader_core.cc",
    "bit_reader_core.h",
    "bitrate.cc",
    "bitrate.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",
    "callback_timeout_helpers.h",
    "cdm_callback_promise.cc",
    "cdm_callback_promise.h",
    "cdm_config.cc",
    "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",
    "converting_audio_fifo.cc",
    "converting_audio_fifo.h",
    "crc_16.h",
    "cross_origin_data_source.h",
    "data_buffer.cc",
    "data_buffer.h",
    "data_source.cc",
    "data_source.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",
    "decoder_status.cc",
    "decoder_status.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",
    "encoder_status.h",
    "encryption_pattern.cc",
    "encryption_pattern.h",
    "encryption_scheme.cc",
    "encryption_scheme.h",
    "fake_audio_worker.cc",
    "fake_audio_worker.h",
    "feedback_signal_accumulator.h",
    "flinging_controller.h",
    "format_utils.cc",
    "format_utils.h",
    "frame_rate_estimator.cc",
    "frame_rate_estimator.h",
    "key_system_info.cc",
    "key_system_info.h",
    "key_system_names.cc",
    "key_system_names.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_player_logging_id.cc",
    "media_player_logging_id.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_audio_encoder.cc",
    "offloading_audio_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",
    "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",
    "supported_video_decoder_config.cc",
    "supported_video_decoder_config.h",
    "svc_scalability_mode.cc",
    "svc_scalability_mode.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",
    "use_after_free_checker.h",
    "user_input_monitor.cc",
    "user_input_monitor.h",
    "video_aspect_ratio.cc",
    "video_aspect_ratio.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_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_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",
    "//media/gpu:buildflags",
    "//ui/gfx:color_space",
    "//ui/gl",
  ]
  deps = [
    "//base",
    "//base/allocator:buildflags",
    "//build:chromeos_buildflags",
    "//components/system_media_controls/linux/buildflags",
    "//gpu/command_buffer/client:interface_base",
    "//gpu/command_buffer/client:raster_interface",
    "//gpu/command_buffer/common",
    "//gpu/ipc/common:common",
    "//media/cdm:clear_key_cdm_common",
    "//net",
    "//skia",
    "//third_party/libyuv",
    "//third_party/widevine/cdm:headers",
    "//ui/display:display",
    "//ui/events:events",
    "//ui/events:events_base",
    "//ui/events:keyboard_hook",
    "//url:url",
  ]

  libs = []
  configs += [
    "//build/config:precompiled_headers",

    "//media:subcomponent_config",
  ]

  if (media_use_ffmpeg) {
    deps += [
      "//third_party/ffmpeg",
      "//third_party/ffmpeg:ffmpeg_features",
    ]
  }

  if (is_chromeos_ash) {
    deps += [ "//ash/constants" ]
  }

  if (media_use_libvpx) {
    deps += [ "//third_party/libvpx" ]
  }

  if (is_linux && !is_castos) {
    sources += [ "user_input_monitor_linux.cc" ]
  } 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_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:dcomp_texture_wrapper",
      "//media/base/win:mf_cdm_proxy",
      "//media/base/win:overlay_state_observer_subscription",
    ]
    sources += [
      "win/mf_feature_checks.cc",
      "win/mf_feature_checks.h",
    ]
  }

  if (is_android) {
    sources += [ "demuxer_memory_limit_android.cc" ]
  } else if (is_castos) {
    sources += [ "demuxer_memory_limit_cast.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 = [
      "audio_parameters.h",
      "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/renderers: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",
    "mock_video_renderer_sink.cc",
    "mock_video_renderer_sink.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",
    "//build:chromeos_buildflags",
    "//testing/gmock",
    "//ui/gfx:test_support",
    "//url",
  ]

  if (is_win) {
    public_deps += [ "//media/base/win:test_support" ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "amplitude_peak_detector_unittest.cc",
    "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_glitch_info_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",
    "bit_reader_unittest.cc",
    "bitrate_unittest.cc",
    "callback_holder_unittest.cc",
    "callback_registry_unittest.cc",
    "callback_timeout_helpers_unittest.cc",
    "channel_mixer_unittest.cc",
    "channel_mixing_matrix_unittest.cc",
    "container_names_unittest.cc",
    "converting_audio_fifo_unittest.cc",
    "crc_16_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",
    "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_audio_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",
    "supported_video_decoder_config_unittest.cc",
    "text_ranges_unittest.cc",
    "text_renderer_unittest.cc",
    "time_delta_interpolator_unittest.cc",
    "tuneable_unittest.cc",
    "user_input_monitor_unittest.cc",
    "vector_math_unittest.cc",
    "video_aspect_ratio_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_transformation_unittest.cc",
    "video_types_unittest.cc",
    "video_util_unittest.cc",
    "wall_clock_time_source_unittest.cc",
  ]
  configs += [ "//media:media_config" ]
  deps = [
    "//base/test:test_support",
    "//build:chromeos_buildflags",
    "//components/viz/common",
    "//gpu/command_buffer/common",
    "//media:test_support",
    "//net",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/libyuv",
    "//third_party/widevine/cdm:headers",
    "//ui/gfx",
  ]

  if (is_mac) {
    deps += [ "//media/base/mac:unit_tests" ]
  }

  if (is_win) {
    sources += [ "win/dxgi_device_scope_handle_unittest.cc" ]
    deps += [
      "//media",
      "//ui/events:test_support",
    ]
    libs = [
      "d3d11.lib",
      "mfplat.lib",
    ]
  }

  if (is_castos) {
    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 += [ "//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",
  ]
}
