# Copyright 2016 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/chromeos/ui_mode.gni")
import("//build/config/features.gni")
import("//build/config/ui.gni")
import("//media/media_options.gni")
import("//testing/test.gni")

group("capture") {
  public_deps = [
    ":capture_lib",
    "//media/capture/mojom:image_capture",
    "//media/capture/mojom:image_capture_types",
    "//media/capture/mojom:video_capture",
    "//services/service_manager/public/cpp",
  ]
}

component("capture_switches") {
  defines = [ "CAPTURE_IMPLEMENTATION" ]
  sources = [
    "capture_export.h",
    "capture_switches.cc",
    "capture_switches.h",
  ]
}

# Things needed by //media/capture/mojom/video_capture_types.mojom.
component("capture_base") {
  defines = [ "CAPTURE_IMPLEMENTATION" ]
  sources = [
    "capture_export.h",
    "video/video_capture_device_descriptor.cc",
    "video/video_capture_device_descriptor.h",
    "video/video_capture_device_info.cc",
    "video/video_capture_device_info.h",
    "video_capture_types.cc",
    "video_capture_types.h",
  ]
  deps = [
    "//base",
    "//base:i18n",
    "//media",
    "//ui/gfx",
  ]
}

# Target which allows breakout of Android BUILD.gn files.
source_set("capture_device_specific") {
  visibility = [
    ":capture_lib",
    "//media/capture/content/android",
    "//media/capture/video/android",
  ]
  if (is_win) {
    # TODO(jschuh): https://crbug.com/167187 fix size_t to int truncations.
    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
  }
  defines = [ "CAPTURE_IMPLEMENTATION" ]
  sources = [
    "content/animated_content_sampler.cc",
    "content/animated_content_sampler.h",
    "content/capture_resolution_chooser.cc",
    "content/capture_resolution_chooser.h",
    "content/smooth_event_sampler.cc",
    "content/smooth_event_sampler.h",
    "content/video_capture_oracle.cc",
    "content/video_capture_oracle.h",
    "video/blob_utils.cc",
    "video/blob_utils.h",
    "video/fake_video_capture_device.cc",
    "video/fake_video_capture_device.h",
    "video/fake_video_capture_device_factory.cc",
    "video/fake_video_capture_device_factory.h",
    "video/file_video_capture_device.cc",
    "video/file_video_capture_device.h",
    "video/file_video_capture_device_factory.cc",
    "video/file_video_capture_device_factory.h",
    "video/gpu_memory_buffer_utils.cc",
    "video/gpu_memory_buffer_utils.h",
    "video/video_capture_buffer_handle.cc",
    "video/video_capture_buffer_handle.h",
    "video/video_capture_device.cc",
    "video/video_capture_device.h",
    "video/video_capture_device_factory.cc",
    "video/video_capture_device_factory.h",
  ]

  public_deps = [ ":capture_base" ]
  deps = [
    "//base",
    "//base:i18n",
    "//build:chromeos_buildflags",
    "//gpu/command_buffer/client",
    "//gpu/ipc/common:common",
    "//media",
    "//media/capture/mojom:image_capture",
    "//media/capture/mojom:image_capture_types",
    "//media/mojo/mojom",
    "//media/parsers",
    "//skia",
    "//third_party/libyuv",
    "//ui/gfx",
  ]
}

component("capture_lib") {
  defines = [ "CAPTURE_IMPLEMENTATION" ]
  sources = [
    "video/create_video_capture_device_factory.cc",
    "video/create_video_capture_device_factory.h",
    "video/scoped_buffer_pool_reservation.h",
    "video/shared_memory_buffer_tracker.cc",
    "video/shared_memory_buffer_tracker.h",
    "video/video_capture_buffer_pool.h",
    "video/video_capture_buffer_pool_impl.cc",
    "video/video_capture_buffer_pool_impl.h",
    "video/video_capture_buffer_tracker.cc",
    "video/video_capture_buffer_tracker.h",
    "video/video_capture_buffer_tracker_factory.h",
    "video/video_capture_buffer_tracker_factory_impl.cc",
    "video/video_capture_buffer_tracker_factory_impl.h",
    "video/video_capture_device_client.cc",
    "video/video_capture_device_client.h",
    "video/video_capture_metrics.cc",
    "video/video_capture_metrics.h",
    "video/video_capture_system.h",
    "video/video_capture_system_impl.cc",
    "video/video_capture_system_impl.h",
    "video/video_frame_receiver.h",
    "video/video_frame_receiver_on_task_runner.cc",
    "video/video_frame_receiver_on_task_runner.h",
    "video_capturer_source.cc",
    "video_capturer_source.h",
  ]

  public_deps = [
    ":capture_base",
    ":capture_device_specific",
  ]

  deps = [
    "//base",
    "//base:i18n",
    "//build:chromeos_buildflags",
    "//media",
    "//media/capture/mojom:image_capture",
    "//media/capture/mojom:image_capture_types",
    "//media/capture/mojom:video_capture",
    "//media/mojo/mojom",
    "//services/service_manager/public/cpp",
    "//third_party/libyuv",
    "//ui/display",
    "//ui/gfx",
  ]

  if (is_android) {
    public_deps += [
      "content/android",
      "video/android",
    ]
    deps += [
      "content/android:screen_capture_jni_headers",
      "video/android:capture_jni_headers",
    ]
  }

  if (is_mac) {
    sources += [
      "video/mac/gpu_memory_buffer_tracker_mac.cc",
      "video/mac/gpu_memory_buffer_tracker_mac.h",
      "video/mac/pixel_buffer_pool_mac.cc",
      "video/mac/pixel_buffer_pool_mac.h",
      "video/mac/pixel_buffer_transferer_mac.cc",
      "video/mac/pixel_buffer_transferer_mac.h",
      "video/mac/sample_buffer_transformer_mac.cc",
      "video/mac/sample_buffer_transformer_mac.h",
      "video/mac/video_capture_device_avfoundation_legacy_mac.h",
      "video/mac/video_capture_device_avfoundation_legacy_mac.mm",
      "video/mac/video_capture_device_avfoundation_mac.h",
      "video/mac/video_capture_device_avfoundation_mac.mm",
      "video/mac/video_capture_device_avfoundation_protocol_mac.h",
      "video/mac/video_capture_device_avfoundation_utils_mac.h",
      "video/mac/video_capture_device_avfoundation_utils_mac.mm",
      "video/mac/video_capture_device_decklink_mac.h",
      "video/mac/video_capture_device_decklink_mac.mm",
      "video/mac/video_capture_device_factory_mac.h",
      "video/mac/video_capture_device_factory_mac.mm",
      "video/mac/video_capture_device_mac.h",
      "video/mac/video_capture_device_mac.mm",
    ]
    deps += [
      "//services/video_capture/public/uma",
      "//third_party/decklink",
    ]
    frameworks = [
      "AVFoundation.framework",
      "CoreFoundation.framework",
      "CoreGraphics.framework",
      "CoreMedia.framework",
      "CoreVideo.framework",
      "Foundation.framework",
      "IOSurface.framework",
      "VideoToolbox.framework",
    ]
  }

  if (is_win) {
    sources += [
      "video/win/capability_list_win.cc",
      "video/win/capability_list_win.h",
      "video/win/filter_base_win.cc",
      "video/win/filter_base_win.h",
      "video/win/metrics.cc",
      "video/win/metrics.h",
      "video/win/pin_base_win.cc",
      "video/win/pin_base_win.h",
      "video/win/sink_filter_observer_win.h",
      "video/win/sink_filter_win.cc",
      "video/win/sink_filter_win.h",
      "video/win/sink_input_pin_win.cc",
      "video/win/sink_input_pin_win.h",
      "video/win/video_capture_device_factory_win.cc",
      "video/win/video_capture_device_factory_win.h",
      "video/win/video_capture_device_mf_win.cc",
      "video/win/video_capture_device_mf_win.h",
      "video/win/video_capture_device_utils_win.cc",
      "video/win/video_capture_device_utils_win.h",
      "video/win/video_capture_device_win.cc",
      "video/win/video_capture_device_win.h",
      "video/win/video_capture_dxgi_device_manager.cc",
      "video/win/video_capture_dxgi_device_manager.h",
    ]
    deps += [ "//media/base/win:media_foundation_util" ]
    libs = [
      "d3d11.lib",
      "mf.lib",
      "mfplat.lib",
      "mfreadwrite.lib",
      "mfuuid.lib",
    ]
    ldflags = [
      "/DELAYLOAD:d3d11.dll",
      "/DELAYLOAD:mf.dll",
      "/DELAYLOAD:mfplat.dll",
      "/DELAYLOAD:mfreadwrite.dll",
    ]

    # TODO(jschuh): https://crbug.com/167187 fix size_t to int truncations.
    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
  }

  # This includes the case of ChromeOS
  # TODO: As we move to separately version Chrome from ChromeOS, we may need to split
  # these sources into linux, chromeos, and common.
  if (is_linux || is_chromeos) {
    sources += [
      "video/linux/scoped_v4l2_device_fd.cc",
      "video/linux/scoped_v4l2_device_fd.h",
      "video/linux/v4l2_capture_delegate.cc",
      "video/linux/v4l2_capture_delegate.h",
      "video/linux/v4l2_capture_device.h",
      "video/linux/v4l2_capture_device_impl.cc",
      "video/linux/v4l2_capture_device_impl.h",
      "video/linux/video_capture_device_factory_linux.cc",
      "video/linux/video_capture_device_factory_linux.h",
      "video/linux/video_capture_device_linux.cc",
      "video/linux/video_capture_device_linux.h",
    ]
  }

  if (is_chromeos_ash) {
    sources += [
      "video/chromeos/camera_3a_controller.cc",
      "video/chromeos/camera_3a_controller.h",
      "video/chromeos/camera_app_device_bridge_impl.cc",
      "video/chromeos/camera_app_device_bridge_impl.h",
      "video/chromeos/camera_app_device_impl.cc",
      "video/chromeos/camera_app_device_impl.h",
      "video/chromeos/camera_app_device_provider_impl.cc",
      "video/chromeos/camera_app_device_provider_impl.h",
      "video/chromeos/camera_buffer_factory.cc",
      "video/chromeos/camera_buffer_factory.h",
      "video/chromeos/camera_device_context.cc",
      "video/chromeos/camera_device_context.h",
      "video/chromeos/camera_device_delegate.cc",
      "video/chromeos/camera_device_delegate.h",
      "video/chromeos/camera_hal_delegate.cc",
      "video/chromeos/camera_hal_delegate.h",
      "video/chromeos/camera_hal_dispatcher_impl.cc",
      "video/chromeos/camera_hal_dispatcher_impl.h",
      "video/chromeos/camera_metadata_utils.cc",
      "video/chromeos/camera_metadata_utils.h",
      "video/chromeos/capture_metadata_dispatcher.h",
      "video/chromeos/display_rotation_observer.cc",
      "video/chromeos/display_rotation_observer.h",
      "video/chromeos/gpu_memory_buffer_tracker.cc",
      "video/chromeos/gpu_memory_buffer_tracker.h",
      "video/chromeos/pixel_format_utils.cc",
      "video/chromeos/pixel_format_utils.h",
      "video/chromeos/request_builder.cc",
      "video/chromeos/request_builder.h",
      "video/chromeos/request_manager.cc",
      "video/chromeos/request_manager.h",
      "video/chromeos/scoped_video_capture_jpeg_decoder.cc",
      "video/chromeos/scoped_video_capture_jpeg_decoder.h",
      "video/chromeos/stream_buffer_manager.cc",
      "video/chromeos/stream_buffer_manager.h",
      "video/chromeos/token_manager.cc",
      "video/chromeos/token_manager.h",
      "video/chromeos/vendor_tag_ops_delegate.cc",
      "video/chromeos/vendor_tag_ops_delegate.h",
      "video/chromeos/video_capture_device_chromeos_delegate.cc",
      "video/chromeos/video_capture_device_chromeos_delegate.h",
      "video/chromeos/video_capture_device_chromeos_halv3.cc",
      "video/chromeos/video_capture_device_chromeos_halv3.h",
      "video/chromeos/video_capture_device_factory_chromeos.cc",
      "video/chromeos/video_capture_device_factory_chromeos.h",
      "video/chromeos/video_capture_features_chromeos.cc",
      "video/chromeos/video_capture_features_chromeos.h",
      "video/chromeos/video_capture_jpeg_decoder.h",
      "video/chromeos/video_capture_jpeg_decoder_impl.cc",
      "video/chromeos/video_capture_jpeg_decoder_impl.h",
      "video/linux/camera_config_chromeos.cc",
      "video/linux/camera_config_chromeos.h",
      "video/linux/video_capture_device_chromeos.cc",
      "video/linux/video_capture_device_chromeos.h",
    ]
    public_deps += [ "//media/capture/video/chromeos/public" ]
    deps += [
      "//build/config/linux/libdrm",
      "//chromeos/constants",
      "//chromeos/dbus/power",
      "//components/chromeos_camera:mojo_mjpeg_decode_accelerator",
      "//components/chromeos_camera/common",
      "//gpu/ipc/common:common",
      "//media/capture/video/chromeos/mojom:cros_camera",
      "//third_party/libsync",
    ]
  }

  if (is_fuchsia) {
    sources += [
      "video/fuchsia/video_capture_device_factory_fuchsia.cc",
      "video/fuchsia/video_capture_device_factory_fuchsia.h",
      "video/fuchsia/video_capture_device_fuchsia.cc",
      "video/fuchsia/video_capture_device_fuchsia.h",
    ]
    deps += [
      "//media/fuchsia/common",
      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.camera3",
      "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
      "//third_party/libyuv",
    ]
  }
}

source_set("test_support") {
  testonly = true

  sources = [
    "video/mock_device.cc",
    "video/mock_device.h",
    "video/mock_device_factory.cc",
    "video/mock_device_factory.h",
    "video/mock_gpu_memory_buffer_manager.cc",
    "video/mock_gpu_memory_buffer_manager.h",
    "video/mock_video_capture_device_client.cc",
    "video/mock_video_capture_device_client.h",
    "video/mock_video_frame_receiver.cc",
    "video/mock_video_frame_receiver.h",
  ]

  deps = [
    ":capture_lib",
    "//base/test:test_support",
    "//build:chromeos_buildflags",
    "//gpu/command_buffer/client",
    "//gpu/command_buffer/common:common",
    "//media:test_support",
    "//media/capture/mojom:image_capture",
    "//media/capture/mojom:image_capture_types",
    "//testing/gmock",
    "//ui/gfx:test_support",
  ]

  if (is_linux || is_chromeos) {
    sources += [
      "video/linux/fake_device_provider.cc",
      "video/linux/fake_device_provider.h",
      "video/linux/fake_v4l2_impl.cc",
      "video/linux/fake_v4l2_impl.h",
    ]
  }

  if (is_chromeos_ash) {
    sources += [
      "video/chromeos/mock_camera_module.cc",
      "video/chromeos/mock_camera_module.h",
      "video/chromeos/mock_vendor_tag_ops.cc",
      "video/chromeos/mock_vendor_tag_ops.h",
      "video/chromeos/mock_video_capture_client.cc",
      "video/chromeos/mock_video_capture_client.h",
    ]
    deps += [
      "//media/capture/video/chromeos/mojom:cros_camera",
      "//media/capture/video/chromeos/public",
    ]
  }

  testonly = true
}

test("capture_unittests") {
  use_xvfb = use_xvfb_in_this_config

  sources = [
    "content/animated_content_sampler_unittest.cc",
    "content/capture_resolution_chooser_unittest.cc",
    "content/smooth_event_sampler_unittest.cc",
    "content/video_capture_oracle_unittest.cc",
    "run_all_unittests.cc",
    "video/fake_video_capture_device_unittest.cc",
    "video/file_video_capture_device_unittest.cc",
    "video/video_capture_device_client_unittest.cc",
    "video/video_capture_device_unittest.cc",
    "video/video_capture_metrics_unittest.cc",
    "video_capture_types_unittest.cc",
  ]

  data = [ "//media/test/data/bear.mjpeg" ]

  deps = [
    ":capture",
    ":test_support",
    "//base/test:test_support",
    "//build:chromeos_buildflags",
    "//gpu/command_buffer/client",
    "//media:test_support",
    "//media/capture/mojom:image_capture",
    "//media/capture/mojom:image_capture_types",
    "//mojo/core/embedder",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/libyuv:libyuv",
    "//ui/gfx:test_support",
  ]

  if (is_linux || is_chromeos) {
    sources += [
      "video/linux/v4l2_capture_delegate_unittest.cc",
      "video/linux/video_capture_device_factory_linux_unittest.cc",
    ]
  }

  if (is_chromeos_ash) {
    sources += [ "video/linux/camera_config_chromeos_unittest.cc" ]
  }

  if (is_android) {
    deps += [
      "//media/capture/video/android",
      "//media/capture/video/android:capture_java",
    ]
  }

  if (is_fuchsia) {
    deps += [
      "//media/fuchsia/camera:test_support",
      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.camera3",
      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.sysmem",
      "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
    ]
    sources += [
      "video/fuchsia/video_capture_device_factory_fuchsia_test.cc",
      "video/fuchsia/video_capture_device_fuchsia_test.cc",
    ]
  }

  if (is_mac) {
    sources += [
      "video/mac/pixel_buffer_pool_mac_unittest.mm",
      "video/mac/pixel_buffer_transferer_mac_unittest.mm",
      "video/mac/sample_buffer_transformer_mac_unittest.mm",
      "video/mac/test/mock_video_capture_device_avfoundation_frame_receiver_mac.h",
      "video/mac/test/mock_video_capture_device_avfoundation_frame_receiver_mac.mm",
      "video/mac/test/pixel_buffer_test_utils_mac.cc",
      "video/mac/test/pixel_buffer_test_utils_mac.h",
      "video/mac/test/video_capture_test_utils_mac.h",
      "video/mac/test/video_capture_test_utils_mac.mm",
      "video/mac/video_capture_device_avfoundation_mac_unittest.mm",
      "video/mac/video_capture_device_factory_mac_unittest.mm",
      "video/mac/video_capture_device_mac_unittest.mm",
    ]
    frameworks = [
      "AVFoundation.framework",
      "CoreMedia.framework",
      "CoreVideo.framework",
      "IOSurface.framework",
    ]
  }

  if (is_win) {
    sources += [
      "video/win/video_capture_device_factory_win_unittest.cc",
      "video/win/video_capture_device_mf_win_unittest.cc",
    ]
    libs = [
      "mf.lib",
      "mfplat.lib",
      "mfreadwrite.lib",
      "mfuuid.lib",
    ]
    ldflags = [
      "/DELAYLOAD:mf.dll",
      "/DELAYLOAD:mfplat.dll",
      "/DELAYLOAD:mfreadwrite.dll",
    ]

    # TODO(jschuh): https://crbug.com/167187 fix size_t to int truncations.
    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

    deps += [ "//media/base/win:media_foundation_util" ]
  }

  # TODO(https://crbug.com/1043007): use is_linux.
  if (is_chromeos_ash) {
    deps += [ "//media/gpu/test:local_gpu_memory_buffer_manager" ]
  }

  if (is_chromeos_ash) {
    sources += [
      "video/chromeos/camera_3a_controller_unittest.cc",
      "video/chromeos/camera_device_delegate_unittest.cc",
      "video/chromeos/camera_hal_delegate_unittest.cc",
      "video/chromeos/camera_hal_dispatcher_impl_unittest.cc",
      "video/chromeos/request_manager_unittest.cc",
      "video/chromeos/token_manager_unittest.cc",
    ]
    deps += [
      "//build/config/linux/libdrm",
      "//chromeos/dbus/power",
      "//media/capture/video/chromeos/mojom:cros_camera",
      "//media/capture/video/chromeos/public",
      "//mojo/core/embedder",
      "//third_party/libsync",
      "//third_party/minigbm",
    ]
  }
}
