mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 22:36:09 +03:00
75 lines
3.5 KiB
Plaintext
75 lines
3.5 KiB
Plaintext
// 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";
|
|
|
|
// Defines the types of renderers that can be hosted by a mojo Renderer.
|
|
enum HostedRendererType {
|
|
// media::DefaultRenderer: Used to offload normal rendering scenarios to a
|
|
// different process, for stability or performance reasons.
|
|
kDefault,
|
|
|
|
// content::MediaPlayerRenderer: Used to handle HLS videos on Android. Also
|
|
// used on older Android devices, that don't have platform decode support, and
|
|
// are better off using the native Android MediaPlayer.
|
|
[EnableIf=is_android]
|
|
kMediaPlayer,
|
|
|
|
// content::FlingingRenderer: Used to control a CastSession, in the context
|
|
// of RemotePlayback. The CastSession must have already been started via the
|
|
// PresentationService. This renderer does not actually render anything on the
|
|
// local device, but instead serves as a link to/from media content playing on
|
|
// a cast device.
|
|
[EnableIf=is_android]
|
|
kFlinging,
|
|
};
|
|
|
|
// 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, using |type| to choose which concrete media::Renderer
|
|
// implementation to host. Different values of |type| might affect how the
|
|
// request is ultimately routed (i.e. |type| will determine in which process
|
|
// the mojom::Renderer is created).
|
|
// |type_specific_id| represents a different kind of ID, based off of |type|.
|
|
// The usage of |type_specific_id| per |type| is defined as follows:
|
|
// - kDefault: represents an audio device ID, which is defined in
|
|
// media/audio/audio_device_description.h.
|
|
// If |type_specific_id| is empty, kDefaultDeviceId will be used.
|
|
// - kMediaPlayer: unused.
|
|
// - kFlinging: represents a PresentationID for a session that has already
|
|
// been started. If the ID cannot be found (e.g. the session has already
|
|
// ended), CreateRenderer will be a no-op.
|
|
CreateRenderer(HostedRendererType type, string type_specific_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.
|
|
// TODO(xhwang): Add a helper type for GUID to avoid passing string here.
|
|
CreateCdmProxy(string cdm_guid, CdmProxy& cdm_proxy);
|
|
};
|