Skip to content

mlasak/open-content-decryption-module

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open Content Decryption Module

The Open Content Decryption Module (OCDM) is a Content Decryption Module (CDM) according to W3C EME [1] specification to be used with HTML5 based browser environments and ecosystems [5]. The implementation enables DRM interoperability. OCDM is built with a modular concept in mind to be easily extendible and flexible. The open source code already provides support for the CDMi specification [4], which essentially requires the CDM to use the operating system's native RPC mechanisms to forward EME calls to the CDMi. Furthermore, the media sample transmission between a browser decoupled media engine and the CDMi can be secured via a DRM-specific authenticated interface. The CDMi itself contains most CDM logic and is a c++ wrapper for the embedded platform DRM.

Fraunhofer FOKUS has developed the Open Content Decryption Module (OCDM) according to W3C EME specification to be used with HTML5 based browser environments. The implementation enables DRM interoperability. We would be happy to see a broad adoption of our implementation and encourage contributions. A first e2e implementation has been done testing with a Microsoft PlayReady CDMi implementation.

Introduction / Purpose / Why this?

  • Interoperable HTML5 based protected video delivery
  • DRM interoperability
    • CENC, DASH
  • plugin based integration (Pepper Plugin API)
  • [architecture figure]:
    • EME, CDM, CDMi
  • CDMi allows open source browsers to support DRM without licensing it
  • e2e tested with Microsoft PlayReady DRM system

[tbd]

References

[tbd]

Supported Browsers and Platforms

Currently OCDM development is targeted for following Web browers:

  • chromium
  • linux
  • Opera
  • linux
  • QtWebengine
  • linux

For more details see the milestones page.

How to build

...as Pepper Plugin for Chromium

  • clone this repository, e.g. into ~/opencdm
  • create the following symbolic link
  • $ ln -s ~opencdm/src $CHROMIUM_ROOT/src/media/cdm/ppapi/external_open_cdm
  • add include into the $CHROMIUM_ROOT/src/media/media.gyp file to contain this:
  'includes': [
    'media_cdm.gypi',
    './cdm/ppapi/external_open_cdm/browser/media_open_cdm.gypi'
    ]
  • apply changes by generating the project files
  • $ cd $CHROMIUM_ROOT/src
  • $ build/gyp_chromium
  • build the following target (please follow Build notes for Chromium section before building)
  • $ ninja -C out/Debug open_cdmadapter

How to run

  • integrate OCDM with your browser
  • example to be found in src/browser folder
  • setup communication to DRM system
  • sample code for this will be provided in the separate CDMi repository

In practice the Pepper Plugin API based OCDM implementation can be launched as follows:

./out/Debug/chrome --register-pepper-plugins="out/Debug/libopen_cdmadapter.so;application/x-ppapi-open-cdm"
  • To enable logging specify in addition:
./out/Debug/chrome --vmodule=ppb*=1 --enable-logging=stderr --register-pepper-plugins="out/Debug/libopen_cdmadapter.so;application/x-ppapi-open-cdm"

Folder Structure

Navigate the folders and see the readme files for further information.

How to contribute

See the wiki for information on how to contribute to this project.

Known Issues / Comments

This is a preliminary version of OCDM. Please file any issues or comments.

License

Copyright 2014 Fraunhofer FOKUS

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

Open Content Decryption Module (CDM)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published