Proposed DLNA-compliant MediaEngine plugin
Submitted by Craig Pratt
Link to original bug (#722888)
Description
Created attachment 267100 ODIDMediaEngine (v0.1)
Attached is a patch that defines a Rygel MediaEngine plugin that works in concert with the Rygel MediaServer described in bug 722724 and utilizes the MediaObject, HTTP processing, and MediaEngine API enhancements described in the bug 720128, bug 720220, and bug 720223.
This MediaEngine exposes and operates on AV content files in an on-disk item/resource/metadata directory structure ("ODID"). It can provide scaled/trick content streams (PlaySpeed), time-seek support, DTCP protection, and multi-resource representations. CableLabs has released tools for producing odid content items from common flat-file AV content files. See https://github.com/cablelabs/server-ingest for more information.
CableLabs currently is using the ODIDMediaEngine and server-ingest tools to perform DLNA CVP-2 client compliance testing. But this ME can be used to host content from other sources - such as pre-transcoded content, device-supplied content that includes metadata, and/or pre-scaled content streams. And it illustrates how a MediaEngine can utilize multiple content/metadata files behind-the-scenes. This kind of indirection can be of particular use for devices which wish to utilize Rygel to host device-supplied content via DLNA - where the device may provide metadata and/or have unique forms of content access.
We will try to supply more complete documentation/examples of the ODID (on-disk item directory) layout & metadata format in the near future. Currently, we are adding support for limited-operation and live streaming modes to the ME as well as fully-asynchronous IO. So expect a new version of this plugin shortly.
Comments and feedback are welcome.
Patch 267100, "ODIDMediaEngine (v0.1)":
changed.odid-media-engine.diff
Version: git master