The Moving Picture Experts Group

Reference Software and Conformance

Part number: 
Activity status: 

MPEG Extensible Middleware (MXM) Reference Softwar


MPEG doc#: N11006
October 2009
Author: Christian Timmerer

The MXM reference software is currently available as Java and C++ Application Programming Interface (API) [1] and is basically composed of three packages which are briefly described in the following. For the sake of simplicity only the Java implementation is described but similar holds for the C++ version:

  • org.iso.mpeg.mxm.configuration
  • org.iso.mpeg.mxm.core
  • org.iso.mpeg.mxm.engine

Configuration. This package provides means for the initialization of MXM engines and can be used for configuration purposes. The actual configuration of an MXM engine is provided through an XML document for which the corresponding XML Schema has been defined as part of the MXM API.

Core. This package hosts the main MXM classes used by every MXM engine such as the MXMEngine – abstract class to be extended by all MXM engines – and the MXMObject – a wrapper of specific objects that can therefore be exchanged by MXM engines

Engine. This package provides means for defining the MXM APIs for the individual MXM engines. Each engine should provide means for 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), and engine-specific APIs (e.g., authorize (license, query) as part of the REL Engine, requestLicense (licenseID, serviceURL) for the License Protocol Engine)

For licensing its software, MXM adopt Open Source BSD license. This software may be subject to other third party and contributor rights, including patent rights, and no such rights are granted under this license [2].

Some example MXM applications are described in the following.

Fully Interoperable Streaming of Media Resources in Heterogeneous Environments [3]

In this application we present an interoperable multimedia delivery framework for (scalable) media resources based on various MPEG standards and IETF Requests for Comments (RFC). It can be used to transmit (scalable) media resources within heterogeneous usage environments where the properties of the usage environment (e.g., terminal/network capabilities) may change dynamically during the streaming session. The usage environment properties are signaled by interoperable description formats provided by the MPEG-21 Digital Item Adaptation (DIA) standard and encapsulated within the MPEG Extensible Middleware’s (MXM) request content protocol. Furthermore, the available media resources are queried by means of the MPEG Query Format (MPQF). Additionally, the actual adaptation and delivery of the content is done by exploiting a state-of-the-art multimedia framework such as that provided by VideoLAN Client (VLC).

Including MPEG-4 3D graphics in your application [4]

Including mp3, aac, jpeg, mp4 video in third party applications is nowadays a beginner job. The complexity of such codecs is hidden behind a very simple communication interface once the content is decoded: matrix of pixels for images and wave samples for audio. Transposing the same principle in Computer Graphics world is a challenge due to the variety of representation forms and also the complexity and heterogeneity of data to be transferred: vertex position,  normals and tangents, color and texture as well as their variation in time. The application proposed here shows how using the MXM3DGraphicsEngine and its set of APIs, the complex integration work is simplified. With only some lines of code, Ogre3D, a very well known 3D graphics rendering engine, is transformed in an MPEG-4 3D graphics player.

An MXM-based application for sharing protected content [5]

By using a client-side MXM application embedded in a Firefox plug-in, users can protect their content items, import their contacts from existing social communities and grant selected contacts rights to access their content. The same application can also be used to access protected content created by other contacts according to the rights they have been granted. A server-side MXM application provides a number of services to its subscribers such as issuing licenses, providing digital certificates, storing and delivering protected content, stats and reports, etc.


  1. MXM APIs,
  2. MXM License,
  3. Fully Interoperable Streaming of Media Resources in Heterogeneous Environments,
  4. Including MPEG-4 3D graphics in your application,
  5. An MXM-based application for sharing protected content,