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.