[M120 Migration][MM][CAPI] Fix the logic for media using capi player.
[platform/framework/web/chromium-efl.git] / media / mojo / services / BUILD.gn
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.
4
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")
11
12 enable_playback_events_recorder =
13     enable_cast_receiver && (is_fuchsia || is_android)
14
15 component("services") {
16   output_name = "media_mojo_services"
17   sources = [
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",
28     "media_service.cc",
29     "media_service.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",
39     "mojo_cdm_promise.h",
40     "mojo_cdm_service.cc",
41     "mojo_cdm_service.h",
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",
50     "mojo_media_log.cc",
51     "mojo_media_log.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",
76   ]
77
78   if (enable_playback_events_recorder) {
79     sources += [
80       "playback_events_recorder.cc",
81       "playback_events_recorder.h",
82     ]
83   }
84
85   defines = [ "IS_MEDIA_MOJO_IMPL" ]
86
87   public_deps = [
88     "//base",
89     "//media",
90     "//media/gpu",
91     "//media/gpu/ipc/common",
92     "//media/mojo:buildflags",
93     "//media/mojo/mojom",
94     "//mojo/public/cpp/bindings",
95     "//mojo/public/cpp/system",
96     "//services/service_manager/public/cpp",
97     "//url",
98   ]
99
100   deps = [
101     "//build:chromeos_buildflags",
102     "//gpu/ipc/service",
103     "//media",
104     "//media:shared_memory_support",
105     "//media/gpu",
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",
114   ]
115
116   if (is_android) {
117     sources += [ "gpu_mojo_media_client_android.cc" ]
118   } else if (is_apple) {
119     sources += [ "gpu_mojo_media_client_mac.cc" ]
120   } else if (is_win) {
121     sources += [ "gpu_mojo_media_client_win.cc" ]
122   } else if (use_vaapi || use_v4l2_codec) {
123     if (is_linux) {
124       sources += [ "gpu_mojo_media_client_linux.cc" ]
125     } else {
126       sources += [ "gpu_mojo_media_client_cros.cc" ]
127     }
128   } else {
129     sources += [ "gpu_mojo_media_client_stubs.cc" ]
130   }
131
132   if (is_chromeos) {
133     deps +=
134         [ "//chromeos/components/cdm_factory_daemon:cdm_factory_daemon_gpu" ]
135   }
136
137   if (is_linux || is_chromeos || is_tizen) {
138     sources += [
139       "mojo_video_encode_accelerator_provider_factory.cc",
140       "mojo_video_encode_accelerator_provider_factory.h",
141     ]
142   }
143
144   if (is_android) {
145     sources += [
146       "android_mojo_media_client.cc",
147       "android_mojo_media_client.h",
148       "android_mojo_util.cc",
149       "android_mojo_util.h",
150     ]
151   }
152
153   if (enable_media_drm_storage) {
154     sources += [
155       "mojo_media_drm_storage.cc",
156       "mojo_media_drm_storage.h",
157     ]
158   }
159
160   if (enable_library_cdms) {
161     sources += [
162       "cdm_service.cc",
163       "cdm_service.h",
164       "cdm_service_broker.cc",
165       "cdm_service_broker.h",
166     ]
167
168     # TODO(xhwang): Ideally media should not worry about sandbox. Find a way to
169     # remove this dependency.
170     if (is_mac) {
171       deps += [ "//sandbox" ]
172     }
173   }
174
175   if (is_win || enable_library_cdms) {
176     sources += [
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",
182       "mojo_cdm_helper.h",
183     ]
184     deps += [ "//media/cdm:cdm_api" ]
185   }
186
187   if (is_win) {
188     sources += [
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",
201     ]
202     deps += [ "//ui/gfx/mojom:dxgi_info" ]
203   }
204
205   if ((is_chromeos_ash || is_linux) && (use_vaapi || use_v4l2_codec)) {
206     sources += [
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",
213     ]
214
215     public_deps += [ "//media/mojo/mojom/stable:stable_video_decoder" ]
216
217     deps += [
218       "//components/viz/common",
219       "//media/gpu/chromeos",
220     ]
221   }
222
223   if (is_fuchsia) {
224     sources += [
225       "fuchsia_cdm_manager.cc",
226       "fuchsia_cdm_manager.h",
227       "fuchsia_cdm_provisioning_fetcher_impl.cc",
228       "fuchsia_cdm_provisioning_fetcher_impl.h",
229     ]
230
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" ]
233   }
234 }
235
236 source_set("unit_tests") {
237   testonly = true
238
239   sources = [
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",
247     "test_helpers.cc",
248     "test_helpers.h",
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",
254   ]
255
256   if (enable_playback_events_recorder) {
257     sources += [ "playback_events_recorder_test.cc" ]
258   }
259
260   deps = [
261     ":services",
262     "//base",
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",
276     "//testing/gmock",
277     "//testing/gtest",
278   ]
279
280   if (enable_library_cdms) {
281     sources += [
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",
287     ]
288
289     deps += [
290       "//media/cdm:cdm_api",
291       "//media/cdm:cdm_paths",
292     ]
293   }
294
295   if (is_chromeos_ash) {
296     deps += [
297       "//components/chromeos_camera:mjpeg_decode_accelerator_service_unittest",
298     ]
299   }
300
301   if ((is_chromeos_ash || is_linux) && (use_vaapi || use_v4l2_codec)) {
302     sources += [ "stable_video_decoder_service_unittest.cc" ]
303   }
304
305   if (is_fuchsia) {
306     sources += [
307       "fuchsia_cdm_manager_unittest.cc",
308       "fuchsia_cdm_provisioning_fetcher_impl_unittest.cc",
309     ]
310
311     deps += [ "//third_party/fuchsia-sdk/sdk/pkg/fit-promise" ]
312   }
313 }
314
315 mojolpm_fuzzer_test("webrtc_video_perf_mojolpm_fuzzer") {
316   sources = [ "webrtc_video_perf_mojolpm_fuzzer.cc" ]
317
318   proto_source = "webrtc_video_perf_mojolpm_fuzzer.proto"
319   testcase_proto_kind = "media.fuzzing.webrtc_video_perf.proto.Testcase"
320
321   seed_corpus_sources = [
322     "webrtc_video_perf_fuzzer_seed_corpus/update_record_and_get_perf.textproto",
323   ]
324
325   proto_deps = [ "//third_party/blink/public/mojom:mojom_platform_mojolpm" ]
326
327   deps = [
328     ":services",
329     "//base",
330     "//base/test:test_support",
331     "//components/leveldb_proto:test_support",
332     "//content/public/browser",
333     "//media",
334     "//media/capabilities:webrtc_video_stats_proto",
335     "//third_party/libprotobuf-mutator",
336   ]
337 }