Skip to content
Wouter lucas van Boesschoten edited this page Dec 12, 2018 · 1 revision

Introduction

OpenCDM is stands for Open Content Decryption module is a CDM system originally written by Frauhenhofer fokus for EME v1. The project started off with support for Microsoft PlayReady. However as WebKit and W3 evolved the original OpenCDM project did not. Leaving it incompatible with the latest EME v3 specification and certain features (e.g. multi key session support). As a result the WPE group has rewritten the OpenCDM implementation and tried to stay true to the original OpenCDM architecture and API specification. Though inevitably some extensions where made to support the latest feature set.

OpenCDM

The OpenCDM server implementation can be found as part of the open source plugins for WPE Framework here. The WPE Framework supports several CDMi modules that integrate with different DRM SDKs, such as PlayReady and Widevine. Several SOC specific implementations are available too, such as SOC specific SVP wrapped PlayReady or Widevine SDKs.

meta-wpe

This Yocto layer supports building OpenCDM and its CDMi modules. Please note that in order to fulfill the dependencies a required DRM SDK must be provided through another meta layer. As that cannot be redistributed through this meta layer. For example in order to build the PlayReady support another layer must be added that provides the PlayReady package, since the recipes maintained in this layer wpeframework-ocdm-playready_git.bb will add a DEPENDS += " playready".

To enable OpenCDM

To make the configuration and selection of DRM modules easier, we've added opencdm and their DRM counterparts as a distro features.

For example to enable OpenCDM add the following in local.conf:

DISTRO_FEATURES_append = " opencdm "

To enable PlayReady and OpenCDM:

DISTRO_FEATURES_append = " opencdm playready"

Additional available distro features:

opencdm   - Enables the main OpenCDM server
clearkey  - Enables the clearkey CDMI module
playready - Enables PlayReady CDMI module
widevine  - Enables Widevine CDMI module

This will automatically trigger the PACKAGE CONFIG to include the OpenCDM server and respective CDMI module that is available in wpeframework-plugins.

If you bring in your own OpenCDMi module, you can just enable opencdm in the DISTRO_FEATURES and include your own CDMI module as part of IMAGE_INSTALL or otherwise.