CDM Implementation Models
The CDM can be implemented various ways, some of which are more functional than others.
1. CDM is directly implemented by the UA
The CDM is implemented as a binary which is accessed from the UA via a proprietary interface.
2. CDM implemented as binary tightly bound to UA
The CDM is implemented as a binary which is accessed from the UA via a proprietary interface. This interface may not be used without a bi-lateral trust relationship between the CDM and UA implementors.
Examples: Google Widevine, Microsoft Playready, Adobe Access
3. CDM implemented as binary loosely bound to UA
The CDM is implemented as a binary which is accessed from the UA via a published interface. This interface may be used as long as some trust relationship exists between the CDM and UA implementors (i.e. PKI model).
4. CDM implemented as extension
1. CDM update
Download of software security updates to CDM: The CDM requires update e.g. to recover from a hack, in order to maintain compliance or add new security features after changing industry requirements or change in legal framework. Category: Constraints: CDM needs to be notified about the update requirement CDM needs ability to download and install the patch
2. CDM initialization from central server
CDM performs a call to a centralized server to initialize or configure. Similar use case for periodic or triggered re-configuration. Configurations may be depend on content independent properties like region our output controls or local legal requirements like parental ratings. Category: Constraints: CDM needs to have access to central server CDM needs to be able to create different process on first call.
3. Direct CDM communication to license server
CDM contacts license server out of band, may be required for some of the use cases above and to support current implementations. Category: Constraints: EME may use needkey, isTypeSupported() and CreateSession() and the CDM may use initData, but will not GetLicense via the Application but contact a license server directly.
An individual CDM is not longer allowed to receive content. May be included as part of CDM updates (Case 1) or may be a re-initialization (case 2) Category: Constraints: Requires CDM to receive revocation list or individual revocation.