class ContentDecryptionModule

Defined at line 5357 of file fidling/gen/sdk/fidl/fuchsia.media.drm/fuchsia.media.drm/hlcpp/fuchsia/media/drm/cpp/fidl.h

A protocol for managing content license sessions and providing decryption of

media content. There may be zero to many active [`LicenseSession`]s

associated with a `ContentDecryptionModule`, each with their own sets of

keys.

From an EME client's perspective, this protocol has a 1:1 relationship with

the MediaKeys object.

Public Methods

void ~ContentDecryptionModule ()
void SetServerCertificate (::std::vector<uint8_t> certificate, SetServerCertificateCallback callback)

Sets the certificate to be used for encrypting outgoing messages.

+ request `certificate` a buffer containing the certificate to be used.

* error an [`Error`] indicating the reason for failure.

void CreateLicenseSession (::fuchsia::media::drm::LicenseSessionType session_type, ::fidl::InterfaceRequest< ::fuchsia::media::drm::LicenseSession> license_session, CreateLicenseSessionCallback callback)

Creates a new session for the given type.

The `session_id` will be generated by the [`ContentDecryptionModule`]

and can be used to reload the session after closing. If the

`session_type` is not supported by the underlying DRM system, it will

immediately close the `license_session`.

+ request `session_type` a field containing either

[`LicenseSessionType.TEMPORARY`] or

[`LicenseSessionType.PERSISTENT_LICENSE`]

+ request `license_session` the server endpoint of the

[`LicenseSession`]

- response `session_id` an identifier that can be used to reload the

session later (if persistent).

void LoadLicenseSession (::std::string session_id, ::fidl::InterfaceRequest< ::fuchsia::media::drm::LicenseSession> license_session)

Loads an existing session from storage using the given `session_id`.

If the session is not found, then the `license_session` will be closed.

+ request `session_id` contains an identifier of which session should be

loaded from storage.

+ request `license_session` the server endpoint of the

[`LicenseSession`].

void CreateDecryptor (::fuchsia::media::drm::DecryptorParams params, ::fidl::InterfaceRequest< ::fuchsia::media::StreamProcessor> decryptor)

Creates a Decryptor [`fuchsia.media/StreamProcessor`] to be used to

decrypt content.

This `decryptor` would have access to the union of keys created by all

the active sessions for this [`ContentDecryptionModule`].

+ request `params` the parameters with which to create the `decryptor`.

+ request `decryptor` the server endpoint of the

`fuchsia.media/StreamProcessor`.

void GetKeyStatusForHdcpVersion (::std::string hdcp_version, GetKeyStatusForHdcpVersionCallback callback)

Queries the status of a hypothetical key associated with an HDCP policy.

This aids clients in determining which content type to fetch prior to

establishing a [`LicenseSession`]. For example, if the device would

restrict output for HDCP 1.x, then the client can choose to fetch SD

content rather than HD.

+ request `hdcp_version` a field containing the HDCP version to check,

such as "1.2" or "2.0".

- response `key_status` a field indicating what the status of a

hypothetical key would be for this device if one could be licensed.

void GetSupportedEncryptionSchemes (GetSupportedEncryptionSchemesCallback callback)

Queries for the list of supported encryption schemes.

This returns a list of the supported encryption schemes that the

`ContentDecryptionModule` supports, such as 'cenc' or 'cbcs'. If the

implementation supports passing unencrypted frames through decryption

prior to license arrival, it should also report

`fuchsia.media.UNENCRYPTED` as a supported scheme.

- response `encryption_schemes` a list of the supported encryption

schemes.