blob: 86beb52ff09358f8b5cc024639bef4f7837062f0 [file] [log] [blame]
// 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/decryptor.mojom";
import "media/mojo/interfaces/content_decryption_module.mojom";
import "media/mojo/interfaces/renderer.mojom";
import "media/mojo/interfaces/video_decoder.mojom";
import "mojo/public/mojom/base/token.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 regular media::Renderer (DefaultRendererFactory).
CreateDefaultRenderer(string audio_device_id, Renderer& renderer);
[EnableIf=is_android]
// Creates a MediaPlayerRenderer (MediaPlayerRendererFactory).
CreateMediaPlayerRenderer(Renderer& renderer);
[EnableIf=is_android]
// Creates a FlingingRenderer (FlingingRendererFactory).
// The |presentation_id| is used to find an already set-up RemotePlayback
// session (see blink::RemotePlayback).
CreateFlingingRenderer(string presentation_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 Decryptor associated with the |cdm_id|.
CreateDecryptor(int32 cdm_id, Decryptor& decryptor);
// 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.
CreateCdmProxy(mojo_base.mojom.Token cdm_guid, CdmProxy& cdm_proxy);
};