# 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("//media/media_options.gni")
import("//arkweb/build/features/features.gni")
# Implementations of media C++ interfaces using corresponding mojo services.
source_set("clients") {
visibility = [
":test_support",
"//chromecast/*",
# Mirroring Service needs the video accelerated encoder mojom interfaces.
"//components/mirroring/service:mirroring_service",
"//content/renderer:*",
# TODO(xhwang): Only allow //media/mojo/services:unit_tests
"//chrome/browser:*",
"//chrome/browser/thumbnail/generator",
"//content/browser:*",
"//content/gpu:*",
"//media/mojo:test_support",
"//media/mojo/services:*",
"//media/test/*",
# TODO(liberato): can we avoid this?
"//content/test/*",
"//third_party/blink/renderer/modules/mediarecorder",
"//third_party/blink/renderer/modules/peerconnection",
"//third_party/blink/renderer/modules/webcodecs",
"//third_party/blink/renderer/platform",
]
sources = [
"mojo_audio_decoder.cc",
"mojo_audio_decoder.h",
"mojo_audio_encoder.cc",
"mojo_audio_encoder.h",
"mojo_cdm.cc",
"mojo_cdm.h",
"mojo_cdm_factory.cc",
"mojo_cdm_factory.h",
"mojo_codec_factory.cc",
"mojo_codec_factory.h",
"mojo_codec_factory_mojo_decoder.cc",
"mojo_codec_factory_mojo_decoder.h",
"mojo_decoder_factory.cc",
"mojo_decoder_factory.h",
"mojo_decryptor.cc",
"mojo_decryptor.h",
"mojo_demuxer_stream_impl.cc",
"mojo_demuxer_stream_impl.h",
"mojo_gpu_video_accelerator_factories.cc",
"mojo_gpu_video_accelerator_factories.h",
"mojo_media_log_service.cc",
"mojo_media_log_service.h",
"mojo_renderer.cc",
"mojo_renderer.h",
"mojo_renderer_factory.cc",
"mojo_renderer_factory.h",
"mojo_renderer_wrapper.cc",
"mojo_renderer_wrapper.h",
"mojo_video_decoder.cc",
"mojo_video_decoder.h",
"mojo_video_encode_accelerator.cc",
"mojo_video_encode_accelerator.h",
"mojo_video_encoder_metrics_provider.cc",
"mojo_video_encoder_metrics_provider.h",
]
if (is_android) {
sources += [
"mojo_android_overlay.cc",
"mojo_android_overlay.h",
]
}
public_deps = [
"//base",
"//media",
"//media/mojo:buildflags",
"//media/mojo/mojom",
"//mojo/public/cpp/bindings",
"//mojo/public/cpp/system",
"//services/service_manager/public/mojom",
"//services/viz/public/cpp/gpu",
]
deps = [
"//media/gpu",
"//media/mojo/common",
"//services/service_manager/public/cpp",
]
if (is_android) {
deps += [
"//gpu/ipc/common",
"//ui/gl",
]
}
if (is_win) {
sources += [
"win/media_foundation_renderer_client.cc",
"win/media_foundation_renderer_client.h",
"win/media_foundation_renderer_client_factory.cc",
"win/media_foundation_renderer_client_factory.h",
]
}
if (is_fuchsia) {
sources += [
"mojo_codec_factory_fuchsia.cc",
"mojo_codec_factory_fuchsia.h",
"mojo_fuchsia_cdm_provider.cc",
"mojo_fuchsia_cdm_provider.h",
]
deps += [
"//media/fuchsia/video",
"//third_party/blink/public:blink_headers",
]
}
if (enable_arkweb) {
deps += [ "//arkweb/build/features" ]
}
if (enable_arkweb) {
public_deps += [ "//arkweb/build/features" ]
}
}
static_library("test_support") {
testonly = true
sources = [
"mock_mojo_video_encoder_metrics_provider_factory.cc",
"mock_mojo_video_encoder_metrics_provider_factory.h",
]
deps = [
":clients",
"//testing/gmock",
]
}
source_set("unit_tests") {
testonly = true
sources = [
"mojo_audio_decoder_unittest.cc",
"mojo_audio_encoder_unittest.cc",
"mojo_cdm_unittest.cc",
"mojo_decryptor_unittest.cc",
"mojo_gpu_video_accelerator_factories_unittest.cc",
"mojo_renderer_unittest.cc",
"mojo_video_encode_accelerator_unittest.cc",
"mojo_video_encoder_metrics_provider_unittest.cc",
]
deps = [
"//base",
"//base/test:test_support",
"//gpu:test_support",
"//gpu/ipc/common:test_support",
"//media:test_support",
"//media/mojo:test_support",
"//testing/gmock",
"//testing/gtest",
]
if (is_android) {
sources += [ "mojo_android_overlay_unittest.cc" ]
deps += [
"//media/mojo/mojom:test_interfaces",
"//ui/gfx:test_support",
"//ui/gl",
]
}
if (is_win) {
sources += [ "win/media_foundation_renderer_client_unittest.cc" ]
deps += [
"//content/public/renderer",
"//content/renderer",
"//media",
]
}
if (enable_arkweb) {
deps += [ "//arkweb/build/features" ]
}
# TODO(crbug.com/40031409): Fix code that adds exit-time destructors and
# enable the diagnostic by removing this line.
configs += [ "//build/config/compiler:no_exit_time_destructors" ]
}