// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. module media.mojom; import "media/mojo/mojom/content_decryption_module.mojom"; import "media/mojo/mojom/media_types.mojom"; struct VideoCodecInfo { // Array of VideoCodecProfiles supported. If no profiles for a // particular codec are specified, then it is assumed that all // profiles are supported by the CDM. array supported_profiles; // A boolean that contains info about whether the video codec // supports clear lead. This defaults to true except for specific // cases involving Windows codecs. bool supports_clear_lead = true; }; // TODO(xhwang): Use "set" instead of "array" if supported by mojom. struct CdmCapability { // List of audio codecs supported by the CDM (e.g. opus). This does not // include codec profiles, as in general Chromium doesn't handle audio // codec profiles separately. The list of supported codecs should be unique. array audio_codecs; // Map of video codecs and a struct containing the associated profiles // supported by the CDM (e.g. vp8) and whether clear lead is supported. map video_codecs; array encryption_schemes; array session_types; }; struct KeySystemCapability { CdmCapability? sw_secure_capability; CdmCapability? hw_secure_capability; }; // Process-wide observer used by the renderer to observe key system support // changes. `key_systems` is a map from the key system string to the // KeySystemCapability for that key system. interface KeySystemSupportObserver { // Called when there's a key system support update. OnKeySystemSupportUpdated(map key_systems); }; // Browser process singleton that a renderer process can use to subscribe to // key system updates. interface KeySystemSupport { // Adds an observer to observe key system support updates. KeySystemSupport // implementation is in the browser process, as it maintains the list of // registered CDMs, and hardware secure support check also needs to run in the // browser process because the render process is sandboxed. KeySystemSupport // clients run in the renderer process. AddObserver(pending_remote observer); };