1 # Copyright 2014 The Chromium Authors
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 import("//build/config/chromecast_build.gni")
6 import("//build/config/chromeos/ui_mode.gni")
7 import("//media/gpu/args.gni")
8 import("//media/media_options.gni")
9 import("//mojo/public/tools/fuzzers/mojolpm.gni")
10 import("//testing/test.gni")
12 enable_playback_events_recorder =
13 enable_cast_receiver && (is_fuchsia || is_android)
15 component("services") {
16 output_name = "media_mojo_services"
18 "deferred_destroy_unique_receiver_set.h",
19 "gpu_mojo_media_client.cc",
20 "gpu_mojo_media_client.h",
21 "interface_factory_impl.cc",
22 "interface_factory_impl.h",
23 "media_metrics_provider.cc",
24 "media_metrics_provider.h",
25 "media_mojo_export.h",
26 "media_resource_shim.cc",
27 "media_resource_shim.h",
30 "media_service_factory.cc",
31 "media_service_factory.h",
32 "mojo_audio_decoder_service.cc",
33 "mojo_audio_decoder_service.h",
34 "mojo_audio_encoder_service.cc",
35 "mojo_audio_encoder_service.h",
36 "mojo_audio_input_stream.cc",
37 "mojo_audio_input_stream.h",
38 "mojo_cdm_promise.cc",
40 "mojo_cdm_service.cc",
42 "mojo_cdm_service_context.cc",
43 "mojo_cdm_service_context.h",
44 "mojo_decryptor_service.cc",
45 "mojo_decryptor_service.h",
46 "mojo_demuxer_stream_adapter.cc",
47 "mojo_demuxer_stream_adapter.h",
48 "mojo_media_client.cc",
49 "mojo_media_client.h",
52 "mojo_provision_fetcher.cc",
53 "mojo_provision_fetcher.h",
54 "mojo_renderer_service.cc",
55 "mojo_renderer_service.h",
56 "mojo_video_decoder_service.cc",
57 "mojo_video_decoder_service.h",
58 "mojo_video_encode_accelerator_provider.cc",
59 "mojo_video_encode_accelerator_provider.h",
60 "mojo_video_encode_accelerator_service.cc",
61 "mojo_video_encode_accelerator_service.h",
62 "mojo_video_encoder_metrics_provider_service.cc",
63 "mojo_video_encoder_metrics_provider_service.h",
64 "test_mojo_media_client.cc",
65 "test_mojo_media_client.h",
66 "video_decode_perf_history.cc",
67 "video_decode_perf_history.h",
68 "video_decode_stats_recorder.cc",
69 "video_decode_stats_recorder.h",
70 "watch_time_recorder.cc",
71 "watch_time_recorder.h",
72 "webrtc_video_perf_history.cc",
73 "webrtc_video_perf_history.h",
74 "webrtc_video_perf_recorder.cc",
75 "webrtc_video_perf_recorder.h",
78 if (enable_playback_events_recorder) {
80 "playback_events_recorder.cc",
81 "playback_events_recorder.h",
85 defines = [ "IS_MEDIA_MOJO_IMPL" ]
91 "//media/gpu/ipc/common",
92 "//media/mojo:buildflags",
94 "//mojo/public/cpp/bindings",
95 "//mojo/public/cpp/system",
96 "//services/service_manager/public/cpp",
101 "//build:chromeos_buildflags",
104 "//media:shared_memory_support",
106 "//media/gpu:buildflags",
107 "//media/gpu/ipc/service",
108 "//media/learning/impl",
109 "//media/learning/mojo:impl",
110 "//media/mojo/common",
111 "//services/metrics/public/cpp:metrics_cpp",
112 "//services/metrics/public/cpp:ukm_builders",
113 "//services/service_manager/public/mojom",
117 sources += [ "gpu_mojo_media_client_android.cc" ]
118 } else if (is_apple) {
119 sources += [ "gpu_mojo_media_client_mac.cc" ]
121 sources += [ "gpu_mojo_media_client_win.cc" ]
122 } else if (use_vaapi || use_v4l2_codec) {
124 sources += [ "gpu_mojo_media_client_linux.cc" ]
126 sources += [ "gpu_mojo_media_client_cros.cc" ]
129 sources += [ "gpu_mojo_media_client_stubs.cc" ]
134 [ "//chromeos/components/cdm_factory_daemon:cdm_factory_daemon_gpu" ]
137 if (is_linux || is_chromeos || is_tizen) {
139 "mojo_video_encode_accelerator_provider_factory.cc",
140 "mojo_video_encode_accelerator_provider_factory.h",
146 "android_mojo_media_client.cc",
147 "android_mojo_media_client.h",
148 "android_mojo_util.cc",
149 "android_mojo_util.h",
153 if (enable_media_drm_storage) {
155 "mojo_media_drm_storage.cc",
156 "mojo_media_drm_storage.h",
160 if (enable_library_cdms) {
164 "cdm_service_broker.cc",
165 "cdm_service_broker.h",
168 # TODO(xhwang): Ideally media should not worry about sandbox. Find a way to
169 # remove this dependency.
171 deps += [ "//sandbox" ]
175 if (is_win || enable_library_cdms) {
177 "mojo_cdm_allocator.cc",
178 "mojo_cdm_allocator.h",
179 "mojo_cdm_file_io.cc",
180 "mojo_cdm_file_io.h",
181 "mojo_cdm_helper.cc",
184 deps += [ "//media/cdm:cdm_api" ]
189 "media_foundation_gpu_info_monitor.cc",
190 "media_foundation_gpu_info_monitor.h",
191 "media_foundation_mojo_media_client.cc",
192 "media_foundation_mojo_media_client.h",
193 "media_foundation_preferences.cc",
194 "media_foundation_preferences.h",
195 "media_foundation_renderer_wrapper.cc",
196 "media_foundation_renderer_wrapper.h",
197 "media_foundation_service.cc",
198 "media_foundation_service.h",
199 "media_foundation_service_broker.cc",
200 "media_foundation_service_broker.h",
202 deps += [ "//ui/gfx/mojom:dxgi_info" ]
205 if ((is_chromeos_ash || is_linux) && (use_vaapi || use_v4l2_codec)) {
207 "stable_video_decoder_factory_process_service.cc",
208 "stable_video_decoder_factory_process_service.h",
209 "stable_video_decoder_factory_service.cc",
210 "stable_video_decoder_factory_service.h",
211 "stable_video_decoder_service.cc",
212 "stable_video_decoder_service.h",
215 public_deps += [ "//media/mojo/mojom/stable:stable_video_decoder" ]
218 "//components/viz/common",
219 "//media/gpu/chromeos",
225 "fuchsia_cdm_manager.cc",
226 "fuchsia_cdm_manager.h",
227 "fuchsia_cdm_provisioning_fetcher_impl.cc",
228 "fuchsia_cdm_provisioning_fetcher_impl.h",
231 public_deps += [ "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.media.drm:fuchsia.media.drm_hlcpp" ]
232 deps += [ "//third_party/fuchsia-sdk/sdk/pkg/fit-promise" ]
236 source_set("unit_tests") {
240 "deferred_destroy_unique_receiver_set_unittest.cc",
241 "media_metrics_provider_unittest.cc",
242 "media_service_unittest.cc",
243 "mojo_audio_input_stream_unittest.cc",
244 "mojo_demuxer_stream_adapter_unittest.cc",
245 "mojo_video_encode_accelerator_service_unittest.cc",
246 "mojo_video_encoder_metrics_provider_service_unittest.cc",
249 "video_decode_perf_history_unittest.cc",
250 "video_decode_stats_recorder_unittest.cc",
251 "watch_time_recorder_unittest.cc",
252 "webrtc_video_perf_history_unittest.cc",
253 "webrtc_video_perf_recorder_unittest.cc",
256 if (enable_playback_events_recorder) {
257 sources += [ "playback_events_recorder_test.cc" ]
263 "//base/test:test_support",
264 "//components/ukm:test_support",
265 "//media:test_support",
266 "//media/learning/common",
267 "//media/mojo:test_support",
268 "//media/mojo/clients",
269 "//media/mojo/common",
270 "//media/mojo/mojom",
271 "//mojo/core/embedder",
272 "//mojo/public/interfaces/bindings/tests:test_interfaces",
273 "//services/metrics/public/cpp:ukm_builders",
274 "//services/service_manager/public/cpp",
275 "//services/service_manager/public/cpp/test:test_support",
280 if (enable_library_cdms) {
282 "cdm_service_broker_unittest.cc",
283 "cdm_service_unittest.cc",
284 "mojo_cdm_allocator_unittest.cc",
285 "mojo_cdm_file_io_unittest.cc",
286 "mojo_cdm_helper_unittest.cc",
290 "//media/cdm:cdm_api",
291 "//media/cdm:cdm_paths",
295 if (is_chromeos_ash) {
297 "//components/chromeos_camera:mjpeg_decode_accelerator_service_unittest",
301 if ((is_chromeos_ash || is_linux) && (use_vaapi || use_v4l2_codec)) {
302 sources += [ "stable_video_decoder_service_unittest.cc" ]
307 "fuchsia_cdm_manager_unittest.cc",
308 "fuchsia_cdm_provisioning_fetcher_impl_unittest.cc",
311 deps += [ "//third_party/fuchsia-sdk/sdk/pkg/fit-promise" ]
315 mojolpm_fuzzer_test("webrtc_video_perf_mojolpm_fuzzer") {
316 sources = [ "webrtc_video_perf_mojolpm_fuzzer.cc" ]
318 proto_source = "webrtc_video_perf_mojolpm_fuzzer.proto"
319 testcase_proto_kind = "media.fuzzing.webrtc_video_perf.proto.Testcase"
321 seed_corpus_sources = [
322 "webrtc_video_perf_fuzzer_seed_corpus/update_record_and_get_perf.textproto",
325 proto_deps = [ "//third_party/blink/public/mojom:mojom_platform_mojolpm" ]
330 "//base/test:test_support",
331 "//components/leveldb_proto:test_support",
332 "//content/public/browser",
334 "//media/capabilities:webrtc_video_stats_proto",
335 "//third_party/libprotobuf-mutator",