Introduction
The input document M16306 [1] describes a proposal for MPEG-V reference software compliant to the MXM standard [2]. This could be adopted as a general policy for MPEG reference software. That is, reference software being developed as part of an MPEG standard shall also define APIs which are compliant to the APIs defined in the MXM standard. This aspect has been discussed at the meeting. In particular, the following question has been discussed and is subject to further investigation. What are the pros and cons regarding the policy of having MPEG reference software in the form of an MXM engine if applicable?
- Pros:
- Easy development of applications that exercise the reference software because the new engine can be easily integrated with the other existing engines.
- Easy reuse of the engine by other developers of MPEG standards (or even by the industry) thanks to the existence of the interfaces.
- This would follow a common trend in the standardization environment.
- Facilitate the upgrade of service provisioning.
- Cons:
- Additional effort to specify and implement the API.
- Need for the developers to understand the MXM framework.
- Notes:
- Need to be clear about the normative value of the API.
- By developing an API the designers have to pay more attention to the requirements of the technology.
- Need to look into versioning issues.
Guidelines for Normative APIs compliant to the MXM Framework for Future MPEG Standards
The following guidelines are based on the Java definition of the MXM API but similar holds for the C++ definition.
- Each engine shall import and extend org.iso.mpeg.mxm.core.MXMEngine. Thus, each implementation of this engine will also have to implement the methods defined by the MXMEngine.
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
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 ()
- Each engine shall make use of org.iso.mpeg.mxm.core.MXMObject for capturing the essence of information pertaining to this engine. For example, an MXMObject may contain a video, audio, or metadata object corresponding to an MPEG standard.
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)
- Each engine shall implement a standardized API that provides means for creating, accessing, and/or editing the information representation within the engine. Note that engine-specific functionalities may be provided also.
- 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
References:
- M. Waltl, C. Timmerer, “An API for Sensory Effect Metadata compliant to the MPEG Extensible Middleware (MXM)”, ISO/IEC JTC1/SC29/WG11/M16301, Maui, USA, April 2009.
- MXM Web site, http://mxm.wg11.sc29.org/