| // Copyright 2015 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. |
| |
| module media.mojom; |
| |
| import "media/mojo/interfaces/audio_decoder.mojom"; |
| import "media/mojo/interfaces/cdm_proxy.mojom"; |
| import "media/mojo/interfaces/content_decryption_module.mojom"; |
| import "media/mojo/interfaces/renderer.mojom"; |
| import "media/mojo/interfaces/video_decoder.mojom"; |
| |
| // A factory for creating media mojo interfaces. Renderers can only access |
| // ContentDecryptionModules created with the same factory. |
| interface InterfaceFactory { |
| CreateAudioDecoder(AudioDecoder& audio_decoder); |
| CreateVideoDecoder(VideoDecoder& video_decoder); |
| |
| // Creates a Renderer. |
| // The audio stream will be played on |audio_device_id|, which is defined in |
| // media/audio/audio_device_description.h. If |audio_device_id| is empty, |
| // kDefaultDeviceId will be used. |
| CreateRenderer(string audio_device_id, Renderer& renderer); |
| |
| // Creates a CDM based on the |key_system| provided. A |key_system| is a |
| // generic term for a decryption mechanism and/or content protection provider. |
| // It should be a reverse domain name, e.g. "com.example.somesystem". However, |
| // this call may be initiated by an untrusted process (e.g. renderer), so the |
| // implementation must fully validate |key_system| before creating the CDM. |
| CreateCdm(string key_system, ContentDecryptionModule& cdm); |
| |
| // Creates a CdmProxy that proxies part of CDM functionalities to a different |
| // entity, e.g. hardware CDM modules. The created |cdm_proxy| must match the |
| // type of the CDM, identified by |cdm_guid|. |
| // TODO(crbug.com/676224): Conditionally enable this when EnabledIf attribute |
| // is supported in mojom files. |
| // TODO(xhwang): Add a helper type for GUID to avoid passing string here. |
| CreateCdmProxy(string cdm_guid, CdmProxy& cdm_proxy); |
| }; |