Your SlideShare is downloading. ×
An MXM-based Application for Sharing Protected Content
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

An MXM-based Application for Sharing Protected Content

478
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
478
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. An MXM-based application for sharing protected content Angelo Difino MXM DevDay, London, 2009-06-28
  • 2. A 'concrete' MXM application An MXM-based application for sharing protected content List of technologies Mpeg21FileEngine MediaFrameworkEngine DIDEngine IPMPEngine MetadataEngine SecurityEngine RELEngine First α-release due to the end of July
  • 3. MXM (c++) idea/architecture MXM MXM MXM app1 app2 appN MXM Engine APIs MXM MXM MXM Engine1 Engine2 EngineN MXM Engine Factories MXM core APIs MXM share/use MXM Configuration MXM MXM Schema uses core schemas dataobj uses
  • 4. MXM configuration file <MXMConfiguration //cut// xsi:schemaLocation="urn:org:iso:mpeg:mxm:configuration:schema mxmConfiguration.xsd"> <MXMParameters> <entry key="app.add.resource.path">chillout_eud/target/classes</entry> (not yet used) <ComplexParameter> <bar:CustomMXMParam xmlns:bar="urn:bar">A complex MXM configuration parameter</ bar:CustomMXMParam> </ComplexParameter> </MXMParameters> <MediaFrameworkEngine id="1"> <DynamicLibrary> <LibraryPath>//path//to//gst_media_framework_engine.dll</LibraryPath>(.so in linux) </DynamicLibrary> <ClassName>GSTMXMMediaFrameworkEngine</ClassName> (not yet used) </MediaFrameworkEngine>
  • 5. MXM configuration file <MediaFrameworkEngine id="0"> <DynamicLibrary> <LibraryPath>//path//to//vlc_media_framework_engine.dll</LibraryPath> </DynamicLibrary> <ClassName>VLCMXMMediaFrameworkEngine</ClassName> </MediaFrameworkEngine> <DIDEngine id="0"> <DynamicLibrary> <LibraryPath>//path//to//basic_did_engine.dll</LibraryPath> </DynamicLibrary> <ClassName>BasicMXMDIDEngine</ClassName> <DIDProfileCompliance>urn:mpeg:maf:schema:mediastreaming</DIDProfileCompliance> </DIDEngine>
  • 6. From MXM schema to MXM dataobject didl.xsd didl-msx.xsd didmodel.xsd dii.xsd ipmpdidl.xsd ipmpinfo.xsd ipmpinfo-msx.xsd ipmpmsg.xsd XSD mpeg4ipmp.xsd mpeg7smp.xsd rel-m1x.xsd rel-m2x.xsd rel-m3x.xsd rel-mx.xsd rel-r.xsd rel-sx.xsd xenc.xsd dsig.xsd xml.xsd
  • 7. MXM engine MXMEngine::MXMEngine_t enginetype typedef enum { DIPEngine, LicenseProtocolEngine, SecurityEngine, AudioMetadataEngine, DISEngine, MediaFrameworkEngine, VideoMetadataEngine, MetadataEngine, DomainEngine, MPEG21FileEngine, Graphics3DEngine, ContentProtocolEngine, EREngine, MVCOEngine, NOT_DEFINED, ContentSearchEngine, ImageMetadataEngine, OrchestratorEngine, MXMENGINE_NUM DIAEngine, IPMPEngine, RELEngine, } MXMEngine_t; DIDEngine, IPMPToolProtocolEngine, RenderingEngine, MXMEngine(const string& enginename, const MXMEngine_t& enginetype) MXMEngine(int argn, const char *const * argv) template < class T > class MXMEngineFactory protect and share your secrets @ ease
  • 8. BasicDIDEngine: a MXM skeleton engine DEFINITION on H class BasicDIDEngine : public DIDEngine { public: BasicDIDEngine(int argn, const char *const * argv); virtual ~BasicDIDEngine(); DIParser* getDIParser(); ....// other MXM DIDEngine api definition }; IMPLEMENTATION on CPP class Factory : BasicDIDEngine::BasicDIDEngine public MXMEngineFactory< BasicDIDEngine > (int nparam, const char *const * vparam) : { }; DIDEngine("BasicDIDEngine") { MXM_DLL_EXPORT void * factory0( void ) .... { } return new Factory(); } //other MXM DIDEngine api implementation protect and share your secrets @ ease
  • 9. Supported SO and dependencies Win32 XSD CODESYNTHESIS http://www.codesynthesis.com/ MSVisual C++ compiler Linux APACHE LOG4Cxx http://logging.apache.org/log4cxx/ G++ compiler MacOSX APACHE XERCES (used by XSD) ... http://xerces.apache.org/xerces-c/
  • 10. Using MXM APIs MxM* mxm = MxM::getInstance(argc, argv) MXMEngineContainer* metaEngineContainer = mxm->getDefaultEngineContainer(MXMEngine::MetadataEngine); MXMEngineContainer* didEngineContainer = mxm->getDefaultEngineContainer(MXMEngine::DIDEngine); MetadataEngine* _metaengine= (MetadataEngine*) metaEngineContainer->getEngine(); DIDEngine* _didengine= (DIDEngine*) didEngineContainer->getEngine(); DIParser* di_parser=_didengine->getDIParser(); di_parser->parseDI(dci_url); //can be parseDI(MXMObject*) MXMObject* metadata=0; di_parser->getContentMetadata(metadata); MetadataParser* meta_parser= _metaengine->getMetadataParser(); meta_parser->parseMetadataObj(metadata); std::string title(""); meta_parser->getTitle(title);
  • 11. Using MXM APIs .... LicenseParser* licence_parser->parseLicense(license); GrantParser* first_gp; list< GrantParser* > l; if (licence_parser->getGrants( l )) { list< GrantParser* >::const_iterator it = l.begin(); while(it != l.end()) { first_gp=*it; if (first_gp->containsProtectedResource()) { ProtectedResourceParser* protectedresource; first_gp->getProtectedResource(protectedresource); MXMObject* master_encrypted=0; protectedresource->getEncryptedKey(master_encrypted); .... _mfengine->setIPMPTool(drmtools); _mfengine->open(resource_url); _mfengine->play(); .... _mfengine->pause(); .... _mfengine->stop();
  • 12. MXM engine todo MXM engine parameters MXM exception MXM core as singleton MXM configuration file updated live MXM loader / adapter (like java side) protect and share your secrets @ ease
  • 13. A test MXM application An MXM-based application for access protected content Integrated with chillout functionalities (for creation) Two media frameworks (MF APIs) VLC (0.9.9.a) and GSTREAMER (0.10 → 1½ year old!!!) On win32 GTK++ (with glib) GSTREAMER and VLC (easy to install) OPENSSL (for some protection/security aspect) SQLite
  • 14. MXM info MXM Mailing list mxm@lists.uni-klu.ac.at Website http://mxm.wg11.sc29.org/ (my)Personal contacts angelo@smartrm.com skype: angelo.difino
  • 15. Thank you for your attention! angelo@smartrm.com protect and share your secrets @ ease