# 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("//mojo/public/tools/bindings/mojom.gni") mojom("mojom") { generate_java = true # TODO(crbug.com/676224): Conditionally add source files in this list when we # support EnabledIf attribute in mojom files. sources = [ "audio_data_pipe.mojom", "audio_decoder.mojom", "audio_encoder.mojom", "audio_input_stream.mojom", "audio_logging.mojom", "audio_output_stream.mojom", "audio_parameters.mojom", "audio_processing.mojom", "audio_stream_factory.mojom", "capture_handle.mojom", "cdm_document_service.mojom", "cdm_service.mojom", "cdm_storage.mojom", "content_decryption_module.mojom", "decryptor.mojom", "demuxer_stream.mojom", "display_media_information.mojom", "frame_interface_factory.mojom", "interface_factory.mojom", "key_system_support.mojom", "media_log.mojom", "media_metrics_provider.mojom", "media_player.mojom", "media_service.mojom", "media_types.mojom", "output_protection.mojom", "playback_events_recorder.mojom", "provision_fetcher.mojom", "renderer.mojom", "renderer_extensions.mojom", "video_decode_perf_history.mojom", "video_decode_stats_recorder.mojom", "video_decoder.mojom", "video_encode_accelerator.mojom", "video_encoder_info.mojom", "video_encoder_metrics_provider.mojom", "watch_time_recorder.mojom", "webrtc_video_perf.mojom", ] if (enable_media_drm_storage) { sources += [ "media_drm_storage.mojom" ] } if (is_android) { sources += [ "android_overlay.mojom" ] } else { sources += [ "speech_recognition_service.mojom" ] } # TODO(crbug.com/1293520): Revisit this after the cast renderer has been # deprecated and removed. if (is_castos || is_cast_android) { sources += [ "cast_application_media_info_manager.mojom" ] } if (is_win) { sources += [ "dcomp_surface_registry.mojom", "media_foundation_preferences.mojom", "media_foundation_service.mojom", ] } public_deps = [ ":audio_data", ":encryption_pattern", "//gpu/ipc/common:interfaces", "//media/learning/mojo/public/mojom", "//media/mojo/mojom/stable:stable_video_decoder", "//mojo/public/mojom/base", "//sandbox/policy/mojom", "//services/media_session/public/mojom", "//services/network/public/mojom", "//services/network/public/mojom:cookies_mojom", "//services/service_manager/public/mojom", "//ui/gfx/geometry/mojom", "//ui/gfx/mojom", "//ui/gfx/mojom:hdr_metadata", "//ui/gl/mojom", "//url/mojom:url_mojom_gurl", "//url/mojom:url_mojom_origin", ] if (is_mac) { # TODO(xhwang): Ideally media should not worry about sandbox. Find a way to # remove this dependency. public_deps += [ "//sandbox/mac/mojom" ] } if (!is_android) { public_deps += [ ":speech_recognition" ] } enabled_features = [] if (is_linux || is_chromeos || is_tizen) { enabled_features += [ "is_linux_or_chromeos" ] } # Help select ServiceSandbox for media_service.mojom. if (mojo_media_host == "browser") { enabled_features += [ "mojo_media_in_browser" ] } else if (mojo_media_host == "gpu") { enabled_features += [ "mojo_media_in_gpu" ] } else if (mojo_media_host == "") { enabled_features += [ "mojo_media_service_unused" ] } else { assert(false, "Invalid mojo media host: $mojo_media_host") } if (enable_cast_renderer) { enabled_features += [ "enable_cast_renderer" ] } if (tizen_multimedia) { enabled_features += [ "tizen_multimedia" ] } if (tizen_video_hole) { enabled_features += [ "tizen_video_hole" ] } if (tizen_product_tv) { enabled_features += [ "is_tizen_tv" ] } shared_typemaps = [ { types = [ { mojom = "media.mojom.AudioParameters" cpp = "::media::AudioParameters" }, ] traits_headers = [ "//media/base/ipc/media_param_traits.h" ] traits_public_deps = [ "//media", "//media/base/ipc", ] }, { types = [ { mojom = "media.mojom.AudioProcessingSettings" cpp = "::media::AudioProcessingSettings" }, { mojom = "media.mojom.AudioProcessingStats" cpp = "::media::AudioProcessingStats" }, ] traits_headers = [ "audio_processing_mojom_traits.h" ] traits_public_deps = [ ":shared_mojom_traits" ] }, { types = [ { mojom = "media.mojom.FullscreenVideoStatus" cpp = "::blink::WebFullscreenVideoStatus" }, ] traits_headers = [ "//media/base/ipc/media_param_traits_macros.h" ] }, { types = [ { mojom = "media.mojom.MediaContentType" cpp = "::media::MediaContentType" }, ] traits_headers = [ "//media/base/ipc/media_param_traits_macros.h" ] traits_public_deps = [ "//base", "//media", "//media/base/ipc", ] }, { types = [ { mojom = "media.mojom.VideoFrameMetadata" cpp = "::media::VideoFrameMetadata" }, ] traits_headers = [ "video_frame_metadata_mojom_traits.h" ] traits_public_deps = [ ":shared_mojom_traits" ] }, ] cpp_typemaps = [ { types = [ { mojom = "media.mojom.AudioDecoderConfig" cpp = "::media::AudioDecoderConfig" }, { mojom = "media.mojom.AudioDecoderType" cpp = "::media::AudioDecoderType" }, ] traits_headers = [ "audio_decoder_config_mojom_traits.h" ] traits_sources = [ "audio_decoder_config_mojom_traits.cc" ] traits_public_deps = [ "//base", "//media", "//media/base/ipc", ] }, { types = [ { mojom = "media.mojom.AudioEncoderConfig" cpp = "::media::AudioEncoder::Options" }, ] traits_headers = [ "audio_encoder_config_mojom_traits.h" ] traits_sources = [ "audio_encoder_config_mojom_traits.cc" ] traits_public_deps = [ "//base", "//media", "//media/base/ipc", ] }, { types = [ { mojom = "media.mojom.EncodedAudioBuffer" cpp = "::media::EncodedAudioBuffer" move_only = true }, ] traits_headers = [ "encoded_audio_buffer_traits.h" ] traits_sources = [ "encoded_audio_buffer_traits.cc" ] traits_public_deps = [ "//base", "//media", ] }, { types = [ { mojom = "media.mojom.CdmKeyInformation" cpp = "::std::unique_ptr<::media::CdmKeyInformation>" move_only = true }, { mojom = "media.mojom.CdmKeyStatus" cpp = "::media::CdmKeyInformation::KeyStatus" }, ] traits_headers = [ "cdm_key_information_mojom_traits.h" ] traits_sources = [ "cdm_key_information_mojom_traits.cc" ] traits_public_deps = [ "//media" ] }, { types = [ { mojom = "media.mojom.VideoRotation" cpp = "::media::VideoRotation" }, { mojom = "media.mojom.VideoTransformation" cpp = "::media::VideoTransformation" }, ] traits_headers = [ "video_transformation_mojom_traits.h" ] traits_sources = [ "video_transformation_mojom_traits.cc" ] }, { types = [ { mojom = "media.mojom.CdmConfig" cpp = "::media::CdmConfig" }, { mojom = "media.mojom.CdmPromiseResult.Exception" cpp = "::media::CdmPromise::Exception" }, { mojom = "media.mojom.CdmSessionType" cpp = "::media::CdmSessionType" }, { mojom = "media.mojom.CdmMessageType" cpp = "::media::CdmMessageType" }, { mojom = "media.mojom.Decryptor.Status" cpp = "::media::Decryptor::Status" }, { mojom = "media.mojom.Decryptor.StreamType" cpp = "::media::Decryptor::StreamType" }, { mojom = "media.mojom.DemuxerStream.Status" cpp = "::media::DemuxerStream::Status" }, { mojom = "media.mojom.DemuxerStream.Type" cpp = "::media::DemuxerStream::Type" }, { mojom = "media.mojom.EmeInitDataType" cpp = "::media::EmeInitDataType" }, { mojom = "media.mojom.HdcpVersion" cpp = "::media::HdcpVersion" }, { mojom = "media.mojom.SessionData.KeyType" cpp = "::media::MediaDrmKeyType" }, ] traits_headers = [ "//media/base/ipc/media_param_traits_macros.h" ] traits_public_deps = [ "//media", "//media/base/ipc", ] }, { types = [ { mojom = "media.mojom.PipelineStatistics" cpp = "::media::PipelineStatistics" }, { mojom = "media.mojom.AudioPipelineInfo" cpp = "::media::AudioPipelineInfo" }, { mojom = "media.mojom.VideoPipelineInfo" cpp = "::media::VideoPipelineInfo" }, { mojom = "media.mojom.AudioDecoderType" cpp = "::media::AudioDecoderType" }, { mojom = "media.mojom.VideoDecoderType" cpp = "::media::VideoDecoderType" }, ] traits_headers = [ "pipeline_status_mojom_traits.h" ] }, { types = [ { mojom = "media.mojom.StatusData" cpp = "::media::internal::StatusData" }, { mojom = "media.mojom.EncoderStatus" cpp = "::media::EncoderStatus" }, { mojom = "media.mojom.DecoderStatus" cpp = "::media::DecoderStatus" }, { mojom = "media.mojom.PipelineStatus" cpp = "::media::PipelineStatus" }, ] traits_headers = [ "status_mojom_traits.h" ] traits_sources = [ "status_mojom_traits.cc" ] }, { types = [ { mojom = "media.mojom.VideoColorSpace.PrimaryID" cpp = "::media::VideoColorSpace::PrimaryID" }, { mojom = "media.mojom.VideoColorSpace.TransferID:" cpp = "::media::VideoColorSpace::TransferID" }, { mojom = "media.mojom.VideoColorSpace.MatrixID:" cpp = "::media::VideoColorSpace::MatrixID" }, { mojom = "media.mojom.VideoColorSpace.RangeID:" cpp = "::gfx::ColorSpace::RangeID" }, { mojom = "media.mojom.VideoColorSpace:" cpp = "::media::VideoColorSpace" }, ] traits_headers = [ "video_color_space_mojom_traits.h" ] }, { types = [ { mojom = "media.mojom.OverlayInfo" cpp = "::media::OverlayInfo" }, { mojom = "media.mojom.SupportedVideoDecoderConfig" cpp = "::media::SupportedVideoDecoderConfig" }, { mojom = "media.mojom.VideoDecoderType" cpp = "::media::VideoDecoderType" }, ] traits_headers = [ "supported_video_decoder_config_mojom_traits.h", "//media/base/ipc/media_param_traits_macros.h", ] traits_sources = [ "supported_video_decoder_config_mojom_traits.cc" ] traits_public_deps = [ "//base", "//media", "//media/base/ipc", "//media/gpu/ipc/common", "//ui/gfx/geometry/mojom:mojom_traits", ] }, { types = [ { mojom = "media.mojom.VideoDecoderConfig" cpp = "::media::VideoDecoderConfig" }, ] traits_headers = [ "//media/base/video_decoder_config.h" ] traits_private_headers = [ "video_decoder_config_mojom_traits.h" ] traits_sources = [ "video_decoder_config_mojom_traits.cc" ] traits_public_deps = [ "//base", "//media", "//media/base/ipc", "//ui/gfx/geometry/mojom:mojom_traits", ] }, { types = [ { mojom = "media.mojom.BitstreamBufferMetadata" cpp = "::media::BitstreamBufferMetadata" }, { mojom = "media.mojom.VideoBitrateAllocation" cpp = "::media::VideoBitrateAllocation" }, { mojom = "media.mojom.VideoEncodeAccelerator.Error" cpp = "::media::VideoEncodeAccelerator::Error" }, { mojom = "media.mojom.VideoEncodeOptions" cpp = "::media::VideoEncoder::EncodeOptions" }, { mojom = "media.mojom.VideoEncodeAcceleratorConfig" cpp = "::media::VideoEncodeAccelerator::Config" }, { mojom = "media.mojom.SVCInterLayerPredMode" cpp = "::media::SVCInterLayerPredMode" }, { mojom = "media.mojom.SpatialLayer" cpp = "::media::VideoEncodeAccelerator::Config::SpatialLayer" }, { mojom = "media.mojom.SVCScalabilityMode" cpp = "::media::SVCScalabilityMode" }, { mojom = "media.mojom.VariableBitrate" cpp = "::media::Bitrate" }, { mojom = "media.mojom.ConstantBitrate" cpp = "::media::Bitrate" }, { mojom = "media.mojom.Bitrate" cpp = "::media::Bitrate" }, { mojom = "media.mojom.VideoEncodeAcceleratorSupportedProfile" cpp = "::media::VideoEncodeAccelerator::SupportedProfile" }, { mojom = "media.mojom.Vp8Metadata" cpp = "::media::Vp8Metadata" }, { mojom = "media.mojom.Vp9Metadata" cpp = "::media::Vp9Metadata" }, ] traits_headers = [ "video_encode_accelerator_mojom_traits.h" ] traits_sources = [ "video_encode_accelerator_mojom_traits.cc" ] traits_public_deps = [ "//base", "//media", "//media/base/ipc", "//ui/gfx/geometry/mojom:mojom_traits", ] }, { types = [ { mojom = "media.mojom.ResolutionBitrateLimit" cpp = "::media::ResolutionBitrateLimit" }, { mojom = "media.mojom.VideoEncoderInfo" cpp = "::media::VideoEncoderInfo" }, ] traits_headers = [ "video_encoder_info_mojom_traits.h" ] traits_sources = [ "video_encoder_info_mojom_traits.cc" ] traits_public_deps = [ "//base", "//media", "//media/base/ipc", "//ui/gfx/geometry/mojom:mojom_traits", ] }, { types = [ { mojom = "media.mojom.AudioCodec" cpp = "::media::AudioCodec" }, { mojom = "media.mojom.AudioCodecProfile" cpp = "::media::AudioCodecProfile" }, { mojom = "media.mojom.BufferingState" cpp = "::media::BufferingState" }, { mojom = "media.mojom.BufferingStateChangeReason" cpp = "::media::BufferingStateChangeReason" }, { mojom = "media.mojom.ChannelLayout" cpp = "::media::ChannelLayout" }, { mojom = "media.mojom.DecodeStatus" cpp = "::media::DecodeStatus" }, { mojom = "media.mojom.EncryptionScheme" cpp = "::media::EncryptionScheme" }, { mojom = "media.mojom.MediaContainerName" cpp = "::media::container_names::MediaContainerName" }, { mojom = "media.mojom.MediaLogRecord" cpp = "::media::MediaLogRecord" }, { mojom = "media.mojom.OutputDeviceStatus" cpp = "::media::OutputDeviceStatus" }, { mojom = "media.mojom.PipelineStatus" cpp = "::media::PipelineStatus" }, { mojom = "media.mojom.SampleFormat" cpp = "::media::SampleFormat" }, { mojom = "media.mojom.SubsampleEntry" cpp = "::media::SubsampleEntry" }, { mojom = "media.mojom.VideoCodec" cpp = "::media::VideoCodec" }, { mojom = "media.mojom.VideoCodecProfile" cpp = "::media::VideoCodecProfile" }, { mojom = "media.mojom.VideoPixelFormat" cpp = "::media::VideoPixelFormat" }, { mojom = "media.mojom.WaitingReason" cpp = "::media::WaitingReason" }, { mojom = "media.mojom.WatchTimeKey" cpp = "::media::WatchTimeKey" }, { mojom = "media.mojom.MediaStatusState" cpp = "::media::MediaStatus::State" }, { mojom = "media.mojom.StatusCode" cpp = "::media::StatusCode" }, ] traits_headers = [ "//media/base/ipc/media_param_traits_macros.h" ] }, { types = [ { mojom = "media.mojom.VideoFrame" cpp = "::scoped_refptr<::media::VideoFrame>" nullable_is_same_type = true }, ] traits_headers = [ "video_frame_mojom_traits.h" ] traits_sources = [ "video_frame_mojom_traits.cc" ] traits_public_deps = [ "//ui/gfx/geometry/mojom" ] }, { types = [ { mojom = "media.mojom.CdmCapability" cpp = "::media::CdmCapability" }, ] traits_headers = [ "cdm_capability_mojom_traits.h" ] traits_sources = [ "cdm_capability_mojom_traits.cc" ] traits_public_deps = [ "//media" ] }, { types = [ { mojom = "media.mojom.CdmSessionClosedReason" cpp = "::media::CdmSessionClosedReason" }, ] traits_headers = [ "media_types_enum_mojom_traits.h" ] }, { types = [ { mojom = "media.mojom.RendererType" cpp = "::media::RendererType" }, ] traits_headers = [ "media_types_enum_mojom_traits.h" ] }, ] if (is_win) { cpp_typemaps += [ { types = [ { mojom = "media.mojom.CdmEvent" cpp = "::media::CdmEvent" }, ] traits_headers = [ "media_types_enum_mojom_traits.h" ] }, { types = [ { mojom = "media.mojom.MediaFoundationCdmData" cpp = "::std::unique_ptr<::media::MediaFoundationCdmData>" move_only = true }, ] traits_headers = [ "media_foundation_cdm_data_mojom_traits.h" ] traits_sources = [ "media_foundation_cdm_data_mojom_traits.cc" ] traits_public_deps = [ "//media" ] }, { types = [ { mojom = "media.mojom.MediaFoundationRenderingMode" cpp = "::media::MediaFoundationRenderingMode" }, ] traits_headers = [ "media_foundation_rendering_mode_mojom_traits.h" ] traits_public_deps = [ "//media" ] }, ] } if (is_fuchsia) { sources += [ "fuchsia_media.mojom" ] shared_typemaps += [ { types = [ { mojom = "media.mojom.CdmRequest" cpp = "::fidl::InterfaceRequest<::fuchsia::media::drm::ContentDecryptionModule>" move_only = true }, { mojom = "media.mojom.StreamProcessorRequest" cpp = "::fidl::InterfaceRequest<::fuchsia::media::StreamProcessor>" move_only = true }, ] traits_headers = [ "fuchsia_media_mojom_traits.h" ] traits_public_deps = [ "//mojo/public/cpp/base/fuchsia:traits", "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.media:fuchsia.media_hlcpp", "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.media.drm:fuchsia.media.drm_hlcpp", ] }, ] } cpp_typemaps += shared_typemaps blink_cpp_typemaps = shared_typemaps export_class_attribute_blink = "BLINK_PLATFORM_EXPORT" export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1" export_header_blink = "third_party/blink/public/platform/web_common.h" } mojom("audio_data") { generate_java = true sources = [ "audio_data.mojom" ] } mojom("encryption_pattern") { generate_java = true sources = [ "encryption_pattern.mojom" ] cpp_typemaps = [ { types = [ { mojom = "media.mojom.EncryptionPattern" cpp = "::media::EncryptionPattern" }, ] traits_headers = [ "encryption_pattern_mojom_traits.h" ] traits_sources = [ "encryption_pattern_mojom_traits.cc" ] traits_public_deps = [ "//media", "//media/base/ipc", ] }, ] } # Speech recognition API used between renderer/browser/service and between # LaCrOS/Ash. mojom("speech_recognition") { sources = [ "speech_recognition.mojom" ] cpp_typemaps = [ { types = [ { mojom = "media.mojom.HypothesisParts" cpp = "::media::HypothesisParts" }, { mojom = "media.mojom.TimingInformation" cpp = "::media::TimingInformation" }, { mojom = "media.mojom.SpeechRecognitionResult" cpp = "::media::SpeechRecognitionResult" }, ] traits_headers = [ "speech_recognition_result_mojom_traits.h", "speech_recognition_result.h", ] traits_sources = [ "speech_recognition_result.cc", "speech_recognition_result_mojom_traits.cc", ] traits_public_deps = [ "//base" ] }, ] public_deps = [ ":audio_data", "//mojo/public/mojom/base", "//sandbox/policy/mojom", "//ui/gfx/geometry/mojom", ] } source_set("shared_mojom_traits") { sources = [ "audio_processing_mojom_traits.cc", "audio_processing_mojom_traits.h", "video_frame_metadata_mojom_traits.cc", "video_frame_metadata_mojom_traits.h", ] public_deps = [ ":mojom_shared", "//gpu/ipc/common", "//media", "//media/base/ipc:ipc", "//mojo/public/mojom/base", "//ui/gfx/geometry/mojom:mojom_traits", ] } mojom("remoting_common") { sources = [ "remoting_common.mojom" ] } mojom("remoting") { sources = [ "remoting.mojom" ] public_deps = [ ":mojom", ":remoting_common", ] } mojom("test_interfaces") { testonly = true sources = [ "traits_test_service.mojom" ] public_deps = [ ":mojom" ] } source_set("unit_tests") { testonly = true sources = [ "audio_decoder_config_mojom_traits_unittest.cc", "audio_processing_mojom_traits_unittest.cc", "cdm_key_information_mojom_traits_unittest.cc", "video_decoder_config_mojom_traits_unittest.cc", "video_encode_accelerator_mojom_traits_unittest.cc", "video_frame_metadata_mojom_traits_unittest.cc", "video_frame_mojom_traits_unittest.cc", ] if (!is_android) { sources += [ "speech_recognition_result_mojom_traits_unittest.cc" ] } deps = [ "//base", "//base/test:test_support", "//media:test_support", "//media/mojo:test_support", "//mojo/public/cpp/test_support:test_utils", "//testing/gmock", "//testing/gtest", "//ui/gfx:test_support", ] if (!is_android) { deps += [ ":speech_recognition" ] } }