| # Copyright 2014 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("//media/media_options.gni") |
| import("//testing/test.gni") |
| import("//mojo/public/mojo_application.gni") |
| import("//mojo/public/mojo_application_manifest.gni") |
| |
| # Target naming conventions: |
| # - proxy: C++ implementations supported by mojo services. |
| # - service: Mojo interface implementations. |
| # - test: Tests for a particular app, e.g. media. |
| |
| config("mojo_media_config") { |
| if (!enable_mojo_media) { |
| assert(mojo_media_services == [], "Mojo media is not enabled") |
| assert(mojo_media_host == "none", "Mojo media is not enabled") |
| } else { |
| defines = [ "ENABLE_MOJO_MEDIA" ] |
| |
| assert(mojo_media_services != [], "No mojo media service specified") |
| foreach(service, mojo_media_services) { |
| if (service == "renderer") { |
| defines += [ "ENABLE_MOJO_RENDERER" ] |
| } else if (service == "cdm") { |
| defines += [ "ENABLE_MOJO_CDM" ] |
| } else if (service == "audio_decoder") { |
| defines += [ "ENABLE_MOJO_AUDIO_DECODER" ] |
| } else if (service == "video_decoder") { |
| defines += [ "ENABLE_MOJO_VIDEO_DECODER" ] |
| } else { |
| assert(false, "Invalid mojo media service: $service") |
| } |
| } |
| |
| if (mojo_media_host == "browser") { |
| defines += [ "ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS" ] |
| } else if (mojo_media_host == "gpu") { |
| defines += [ "ENABLE_MOJO_MEDIA_IN_GPU_PROCESS" ] |
| } else if (mojo_media_host == "utility") { |
| defines += [ "ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS" ] |
| } else { |
| assert(false, "Invalid mojo media host: $mojo_media_host") |
| } |
| } |
| } |
| |
| # Implementations of media C++ interfaces using corresponding mojo services. |
| source_set("proxy") { |
| sources = [ |
| "mojo_audio_decoder.cc", |
| "mojo_audio_decoder.h", |
| "mojo_cdm.cc", |
| "mojo_cdm.h", |
| "mojo_cdm_factory.cc", |
| "mojo_cdm_factory.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_renderer_factory.cc", |
| "mojo_renderer_factory.h", |
| "mojo_renderer_impl.cc", |
| "mojo_renderer_impl.h", |
| "mojo_type_trait.h", |
| "mojo_video_decoder.cc", |
| "mojo_video_decoder.h", |
| ] |
| |
| public_configs = [ ":mojo_media_config" ] |
| |
| deps = [ |
| "//base", |
| "//media", |
| "//media/mojo/common", |
| "//media/mojo/interfaces", |
| "//mojo/common", |
| "//mojo/public/c/system:for_component", |
| "//mojo/shell/public/interfaces", |
| ] |
| } |
| |
| source_set("cdm_service") { |
| deps = [ |
| "//base", |
| "//media", |
| "//media/mojo/common", |
| "//media/mojo/interfaces", |
| "//mojo/common", |
| "//mojo/public/c/system:for_component", |
| "//mojo/shell/public/interfaces", |
| ] |
| |
| sources = [ |
| "mojo_cdm_allocator.cc", |
| "mojo_cdm_allocator.h", |
| "mojo_cdm_promise.cc", |
| "mojo_cdm_promise.h", |
| "mojo_cdm_service.cc", |
| "mojo_cdm_service.h", |
| "mojo_cdm_service_context.cc", |
| "mojo_cdm_service_context.h", |
| "mojo_decryptor_service.cc", |
| "mojo_decryptor_service.h", |
| "mojo_type_trait.h", |
| ] |
| |
| if (is_android) { |
| sources += [ |
| "mojo_provision_fetcher.cc", |
| "mojo_provision_fetcher.h", |
| ] |
| } |
| |
| # TODO(xhwang): Needed because targets can depend on cdm_service directly, |
| # which is a bit hacky since we need to access CdmService directly |
| # from C++ code (AVDA). In the future we'll make those decoders part of |
| # MojoMediaApplication, then we won't need this. |
| public_configs = [ ":mojo_media_config" ] |
| |
| configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] |
| } |
| |
| source_set("renderer_service") { |
| sources = [ |
| "demuxer_stream_provider_shim.cc", |
| "demuxer_stream_provider_shim.h", |
| "mojo_demuxer_stream_adapter.cc", |
| "mojo_demuxer_stream_adapter.h", |
| "mojo_renderer_service.cc", |
| "mojo_renderer_service.h", |
| ] |
| |
| deps = [ |
| ":cdm_service", |
| "//base", |
| "//media", |
| "//media:shared_memory_support", |
| "//media/mojo/common", |
| "//media/mojo/interfaces", |
| "//mojo/common", |
| ] |
| } |
| |
| source_set("application") { |
| sources = [ |
| "mojo_media_application.cc", |
| "mojo_media_application.h", |
| "mojo_media_client.cc", |
| "mojo_media_client.h", |
| "service_factory_impl.cc", |
| "service_factory_impl.h", |
| ] |
| |
| public_configs = [ ":mojo_media_config" ] |
| |
| deps = [ |
| ":cdm_service", |
| ":renderer_service", |
| "//base", |
| "//media", |
| "//mojo/shell/public/cpp", |
| ] |
| } |
| |
| source_set("application_factory") { |
| sources = [ |
| "mojo_media_application_factory.cc", |
| "mojo_media_application_factory.h", |
| ] |
| |
| public_configs = [ ":mojo_media_config" ] |
| |
| deps = [ |
| ":application", |
| "//base", |
| "//media", |
| ] |
| |
| if (enable_test_mojo_media_client) { |
| defines = [ "ENABLE_TEST_MOJO_MEDIA_CLIENT" ] |
| sources += [ |
| "test_mojo_media_client.cc", |
| "test_mojo_media_client.h", |
| ] |
| } else if (is_android) { |
| sources += [ |
| "android_mojo_media_client.cc", |
| "android_mojo_media_client.h", |
| ] |
| } else { |
| sources += [ |
| "default_mojo_media_client.cc", |
| "default_mojo_media_client.h", |
| ] |
| } |
| } |
| |
| mojo_native_application("media") { |
| testonly = true |
| |
| sources = [ |
| "main.cc", |
| "test_mojo_media_client.cc", |
| "test_mojo_media_client.h", |
| ] |
| |
| deps = [ |
| ":application", |
| "//mojo/logging", |
| "//mojo/public/c/system:for_shared_library", |
| ] |
| } |
| |
| # Note, the following tests must be loaded via mojo_runner as an app, e.g. |
| # |
| # mojo/tools/apptest_runner.py |
| # --apptest-filter mojo:media_apptests out/Debug |
| # |
| # mojo/tools/apptest_runner.py |
| # --apptest-filter mojo:media_pipeline_integration_apptests out/Debug |
| # |
| mojo_native_application("media_apptests") { |
| testonly = true |
| |
| sources = [ |
| "media_apptest.cc", |
| ] |
| |
| deps = [ |
| ":proxy", |
| "//media/base:test_support", |
| "//mojo/shell/public/cpp:test_support", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| |
| data_deps = [ |
| ":apptest_manifest", |
| ":media", |
| ] |
| } |
| |
| mojo_application_manifest("apptest_manifest") { |
| application_name = "media_apptests" |
| source = "apptest_manifest.json" |
| } |
| |
| mojo_native_application("media_pipeline_integration_apptests") { |
| testonly = true |
| |
| deps = [ |
| "//media/test:mojo_pipeline_integration_tests", |
| ] |
| |
| data_deps = [ |
| ":media", |
| ":pipeline_apptest_manifest", |
| ] |
| } |
| |
| mojo_application_manifest("pipeline_apptest_manifest") { |
| application_name = "media_pipeline_integration_apptests" |
| source = "pipeline_apptest_manifest.json" |
| } |
| |
| group("tests") { |
| testonly = true |
| deps = [ |
| ":media_apptests", |
| ":media_pipeline_integration_apptests", |
| ] |
| } |