RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
Papers & Presentations Archive
1. PrivateStreamAbstractionMPD::ProcessContentProtection
Spawns thread to create DRM session for that keyID
2. AampDRMSessionManager::createDrmSession
AampDrmSessionFactory::GetDrmSession(systemId);
drmSession->generateAampDRMSession(initDataPtr, dataLength);
drmSession->aampGenerateKeyRequest(destinationURL);
SecClient_AcquireLicense(....); OR AampDRMSessionManager's getLicense()
drmSession->aampDRMProcessKey(key);
3. Handling GST_EVENT_PROTECTION in gst_aampcdmidecryptor_sink_event
4. qtdemux and playready/widevine plugins.
4.A) qtdemux detects stream encryption
4.B) qtdemux sends need context message for preferred-drm
4.C) bus_sync_handler in AAMPGstPlayer responds with preferred-drm
4.D) qtdemux sends protection event for preferred-drm
4.E) playready/widevine plugins receives the protection event, only the preferred plugin process it and other one discards it.
4.F) gst_aampcdmidecryptor_transform_ip is invoked, where buffer is decrypted
Below is the diagram showing MSE-EME’s stack overview, we follow almost same flow in AAMP.
https://www.w3.org/TR/encrypted-media/stack_overview.svg
https://w3c.github.io/encrypted-media/format-registry/stream/mp4.html
https://w3c.github.io/encrypted-media/format-registry/initdata/cenc.html
DISCLAIMER: Please note that the use of the RDK Wiki is subject to its Privacy Policy & Terms of Use. In addition, this Wiki may be accessed by all RDK licensees and their contractors.
Powered by a free Atlassian Confluence Open Source Project License granted to RDKCentral. Evaluate Confluence today.