Title: MXM Architecture
1MXM Architecture
Filippo Chiariglione Technology consultant,
CEDEO.net CEO/CTO SmartRM Inc.
- 1st International MPEG Extensible Middleware
Developers Day - 30 June 2009
2An impressive number of standards
MPEG-7 Visual
Advanced Audio Coding
LASeR
MDS
Event Reporting
Reconfigurable Video Coding
BIFS
HE AAC
IPMPX
Digital Item Processing
Digital Item Declaration
File Format
Audio Lossless Coding
Intellectual Property Management and Protection
Media Value Chain Ontology
Rights Expression Language
Digital Item Identification
XML IPMP messages
Digital Item Streaming
IPMP Components
Digital Item Adaptation
MPQF
3A practical case the Ref SW for MAFs
- For each standard the reference software has
always been provided - In most cases the quality of the MPEG reference
software is high - but
- Often reference software of specific tecnologies
has been re-written from scratch - Sometimes its more costly to adapt what
existing reference software does rather than
re-developing it from scratch because no clear
high-level APIs have been defined
4What if
- applications could draw from a repository ALL
the software modules implementing MPEG standards?
- no need to have in-depth knowledge of specific
MPEG technologies in order to use them - possibilities to develop innovative applications
based on multiple MPEG technologies combined in
specific ways - infinite number of innovative business models
based on MPEG technologies could be developed at
a much reduced costs - possibility of replacing individual blocks (MXM
Engines) with optimised ones
5The power of MXM
- A set of APIs to access possibly all MPEG
technologies - Simple methods to call complex functionalities
inside MXM engines - thin applications because the complexity is in
the MXM engines - Replacement of MXM engines with better performing
ones at no cost - Creation of a global market of MXM Engines, MXM
Applications and MXM Devices
6ISO/IEC 23006
- The MXM standard is subdivided in three (soon
four) parts - Part 1 - MXM Architecture and Technologies
specifies the MXM architecture and references the
technologies that are part of an MXM
implementation - Part 2 - MXM Application Programming Interfaces
(APIs) specifies the MXM APIs - Part 3 - MXM Conformance and Reference Software
specifies conformance tests and the software
implementation of the standard - Part 4 MXM Protocols specifies a set of
protocols enabling distributed applications to
exchange information related to content items and
parts thereof, including rights and protection
information
7MXM Application 1
MXM Application 2
MXM Engine APIs?
MXM Device
MPEG21 File Engine
Digital Item Engine
REL Engine
IPMP Engine
Other Engines
Security Engine
Content Metadata Engine
Media Framework Engine
Scene Engine
OS
Drivers, Accelerators, Controllers, etc.
HW
8MXM Application 3
MXM Application 1
MXM Application 2
MXM Orchestrator API?
MXM Device
MPEG21 File Engine
Digital Item Engine
REL Engine
IPMP Engine
Orchestrator Engine
Other Engines
Security Engine
Content Metadata Engine
Media Framework Engine
Scene Engine
OS
Drivers, Accelerators, Controllers, etc.
HW
9MXM Protocols
License Provider Device
Content Identific. Device
Content Creation Device
End-User Device
Content Provider Device
DRM Tool Provider Device
10Enabling MXM Apps to communicate
MXM Application
MXM Application
OS
MXM
OS
MXM
Computing Platform
Computing Platform
11List of MXM Engines
- ContentProtocolEngine
- ContentSearchEngine
- DIAEngine
- DIDEngine
- DISEngine
- DomainEngine
- EREngine
- IPMPEngine
- IPMPToolProtocolEngine
- LicenseProtocolEngine
- MediaFrameworkEngine
- MetadataEngine
- MPEG21FileEngine
- MVCOEngine
- OrchestratorEngine
- RELEngine
- RenderingEngine
- SecurityEngine
12MXM APIs of each engine have been divided into
- Creation e.g.
- encode a raw audio track
- create an MPEG-7 metadata description
- Access e.g.
- get data from a Digital Item
- Decode a video
- Editing e.g.
- Add an elementary stream to a multiplexed content
- Engine-specific e.g.
- RELEngine authorise(license, query)
- LicenseProtocolEngine requestLicense (licenseID,
serviceURL)
13MXM software
Shared among MXM Applications
Specific implementations of an MXM Engine
Shared among MXM Applications
Specific implementations of an MXM Engine
14The MXM Config file /1
- ltMXMConfigurationgt
- ltMetadataEngine id2gt
- ltClassNamegtorg.iso.mpeg.mxm.test.MetadataE
nginelt/ClassNamegt - lt! engine-specific params --gt
- lt/MetadataEnginegt
- ltDIDEngine id7gt
- ltClassNamegtorg.iso.mpeg.mxm.test.DIDEngin
elt/ClassNamegt - lt! engine-specific params --gt
- lt/DIDEnginegt
- lt/MXMConfigurationgt
15The MXM Config file /2
- ltMXMConfigurationgt
- ltDIDEngine id1gt
- ltClassNamegtorg.iso.mpeg.mxm.FirstDIDEngin
elt/ClassNamegt - lt! engine-specific params --gt
- lt/DIDEnginegt
- ltDIDEngine id2gt
- ltClassNamegtorg.iso.mpeg.mxm.SecondDIDEngi
nelt/ClassNamegt - lt! engine-specific params --gt
- lt/DIDEnginegt
- lt/MXMConfigurationgt
16How does MXM work /1
MXM App
MXM Config file
MXM
Engine 1
Engine 2
Engine 3
17How does MXM work /2
MXM App
MXM Config file
MXM
Engine 1
Engine 2
Engine 3
18How does MXM work /3
MXM App
MXM Config file
MXM
Orchestrator Engine
Engine 2
Engine 3
19MXMObject MXMAdapter
- Interface org.iso.mpeg.mxm.core.MXMObject
- String getMxmVersion ()
- boolean hasContent ()
- Object getContent ()
- String getContentType ()
- Class org.iso.mpeg.mxm.core.MXMAdapter
- a wrapper of specific objects that can therefore
be exchanged by MXM Engines. - By means of an MXMAdapter it is possible to
convert any object into an MXMObject by doing the
following - Foo foo new Foo()
- MXMObject fooObject new MXMAdapter(foo)
20MXM
- Class org.iso.mpeg.mxm.core.MXM
- static MXM getInstance (File mxmConfigFile)
throws MXMConfigurationException - void initialize (File mxmConfigFile) throws
MXMConfigurationException - MXMEngine getEngine (MXMEngineName engineName,
String engineID) throws MXMEngineNotFoundException
- MXMEngine getDefaultEngine (MXMEngineName
engineName) throws MXMEngineNotFoundException
21MXMEngine
- abstract class org.iso.mpeg.mxm.core.MXMEngine
- void initialise (String engineID,
MXMGenericParameters mxmParameters) - String getEngineID ()
- String getPropertyValue (String key)
- void setProperty (String key, String value)
- abstract MXMEngineName getEngineName ()
22MXMEngineLoader
- Class org.iso.mpeg.mxm.core.engine.management.MXME
ngineLoader - MXMEngine load (JAXBElementlt?extends
MXMEngineType gt mxmEngineElement) throws
MXMConfigurationException - Classlt?gt cls Class.forName(engineClassName)
- MXMEngine mxmEngine (MXMEngine)cls.newInstance()
- mxmEngine.initialise(engineID, engineParameters)
- return mxmEngine
23An example DIDEngine
- abstract class org.iso.mpeg.mxm.engine.didengine.D
IDEngine - abstract DIParser getDIParser ()
- abstract DICreator getDICreator ()
- abstract ItemCreator getItemCreator ()
- abstract ResourceCreator getResourceCreator ()
- abstract DIEditor getDIEditor ()
- abstract ItemEditor getItemEditor ()
24Example license authorisation using MXM
- File f new File(getClass().getClassLoader().getR
esource("MXMConfiguration.xml").getFile()) - MXM mxm MXM.getInstance(f)
- mxm.listEnginesAndProperties()
- SecurityEngine securityEngine
(SecurityEngine)mxm.getDefaultEngine(MXMEngineName
.SecurityEngine) - RELEngine relEngine (RELEngine)mxm.getDefaultEng
ine(MXMEngineName.RELEngine) - LicenseParser licenseParser loadLicense(relEngin
e, SOURCE_LICENSE_FILE_NAME) - LicenseParser queryOKParser loadLicense(relEngin
e, SOURCE_QUERY_FILE_NAME_OK) - AuthorisationManager authorisationManager
relEngine.getAuthorisationManager() - AuthorisationResult result authorisationManager.
authorise(licenseParser, queryOKParser,
securityEngine)
25Java MXM Engines already available
- DIDEngine
- To create/parse a Digital Item
- IPMPEngine
- To create/parse IPMP Components and IPMP XML
messages - DIAEngine
- To access Digital Item Adaptation technologies
- MPEG21FileEngine
- To create/parse MPEG-21 files
- MetadataEngine
- To create/parse MPEG-7 metadata descriptions
- RELEngine
- To create/parse MPEG-21 REL licenses and
performing basic authorisation - SecurityEngine
- To perform basic security-related functionalities
26For developers
- The build of all MXM engines is handled by Maven
- Project Object Model defining project
dependencies - Easy integration in Eclipse
- Uniform project structure
- src/main/java source class files
- src/main/resources various resources
- src/test/java source test class files
- src/test/resources resources used in test
classes - Java classes for creating and parsing XML data
structures have been generated using JAXB
starting from the MPEG schemas
27Join the MXM development team!
- Why you should join
- Plenty of interesting work still has to be done
- You can choose between java, C or start a new
implementation in another language! - It gives you visibility on a broad set of MPEG
technologies - Web site, blog, reflector, and soon more
utilities - Friendly and collaborative environment ?
28Thank you!
- http//mxm.wg11.sc29.org/
- mxm_at_lists.uni-klu.ac.at
- http//wg11.sc29.org/mxmsvn/repos
filippo_at_cedeo.net