We have got a couple of MXM publications in books and journals recently we’d like to share. We do hope they help understanding the MXM and we also highlight some use cases:
- Christian Timmerer, Filippo Chiariglione, Marius Preda, and Victor Rodriguez Doncel, Accelerating Media Business Developments with the MPEG Extensible Middleware, IEEE Multimedia, vol. 17 no. 3, pp. 74-78, July-September 2010. [IEEE-MM]
- Víctor Rodríguez Doncel, Jaime Delgado, Filippo Chiariglione, Marius Preda and Christian Timmerer, Interoperable digital rights management based on the MPEG Extensible Middleware, Multimedia Tools and Applications, April 7, 2010. [Springer] [PDF]
- Christian Timmerer, Filippo Chiariglione, Marius Preda, and Victor Rodriguez Doncel, Accelerating Media Business Developments with the MPEG Extensible Middleware, in: Georgios Tselentis, Alex Galis, Anastasius Gavras, Srdjan Krco, Volkmar Lotz, Elena Simperl, Burkhard Stiller, Theodore Zahariadis (eds.), Towards the Future Internet - Emerging Trends from European Research, IOS Press, pp. 217-226, 2010. [PDF] [IOSPress]
Please provide feedback in the comments section if you like…
The MXM specifications have been updated to “Study of FCD” level which means that we are going to Final Draft International Standard (FDIS) at the next meeting.
…and APIs available online have been updated too.
Please let us know if you have any comments. It is your last chance before the standards are going to be finally approved by MPEG. Of course, there is room and space for amendments and new editions but that is another story…
We had a poster presentation at the Future Internet Assembly in Stockholm which is provided here in a more general form.
Furthermore, we had a PowerPoint presentation running during the poster sessions which is also provided here:
The MXM session at the 90th MPEG Meeting in Xi’an, China concluded with a couple of very interesting features to be included into the MXM standard:
- MPEG-7 Visual API is now covering both video and image media resources;
- A basic MPEG-4 Audio API has been proposed supporting both encoding and decoding;
- The Generic Metadata API has been revised in order to accommodate modifications within the W3C Media Annotation API;
- The exception handling for C++ has been improved;
- MXM protocol improvements and extensions
- Improvement of the base protocol message;
- Improvement of the IPMP tool protocols;
- Addition of an Event Reporting Collecting Device and corresponding protocols;
We have also received a proposal for including a format identification engine which shall provide means for identifying the coding/transport format of a given bitstream. However, a few open issues needs to be solved before it can be included in the standard and the proponents are encouraged to provide a revised input at the next meeting.
Furthermore, we have produced a couple of so-called 1-pagers (or overview papers) which will appear at MPEG’s Technology Web site soon.
Currently, editors are working on the “Study of …” documents to incorporate the above mentioned additions. These documents have an editing period and we will post here once they are available.
Finally, an MXM presentation entitled Accelerating Media Business Developments has been given at the workshop at Xidian University the day after the 90th MPEG meeting closed.
A preliminary implementation of the LicenseProtocolEngine has been committed to the MXM svn repository. This can be used to perform the client and the server part of the MXM License Protocols defined in 23006-4:
- On the client side, the engine can be used
- to store License templates on a License Provider Device. See org.dmp.chillout.mxm.licenseprotocolengine.StoreLicenseProtocolDispatcher
- to request a License to a License Provider Device. See org.dmp.chillout.mxm.licenseprotocolengine.AccessLicenseProtocolDispatcher
- On the Server side, it can be used to parse the received messages and generate the response.
A very basic example of an MXM-based License Provider Device has also been provided in folder /JAVA/trunk/mxm-apps/chillout-mxm-lpd. After building the project using maven, the generated chillout-mxm-lpd-0.2.0.war file can be deployed under Tomcat. If the server is running, by visiting the URL http://localhost:8080/chillout-mxm-lpd/servlet/AxisServlet (or http://localhost:8080/chillout-mxm-lpd-0.2.0/servlet/AxisServlet depending on your Tomcat configuration) you will see the two services: StoreLicenseRequestProcessor and RequestLicenseProcessor up and running.
To test the client side of the LicenseProtocolEngine, the following test classes can be run as JUnit tests:
If the chillout-mxm-lpd web application is running, the tests will be executed successfully.
Thank you in advance for your feedback.
The MPEG Extensible Middleware (MXM) standard, formally known as ISO/IEC 23006, is currently at Final Committee Draft (FCD) stage. It comprises four parts, all are publicly available:
* … this part was previously known as ISO/IEC 29116-2 (Part 2 of the Supplemental Media Technologies) and has been recently moved to MXM.
Furthermore, the MXM license can be found here which basically adopts the BSD license as posted previously. Other publicly available documents - such as requirements, context & objectives, etc. - can be found under the “General” section elsewhere.
According to SC29, the FCD ballot is open until 9th of January 2010 but in case you have any questions or suggestions, please let us know by commenting here or joining the Ad-hoc Group (AhG). The next MPEG meeting is approaching and we expect that any MXM-related inputs will find their way into so-called “Study of …” documents of the respective standards. That is, intermediate versions of the individual parts that may form the basis when drafting the Final Draft International Standard (FDIS) which will probably happen in January 2010.
Not having a single line of code in this project in C++, and having successfully compiled the C++ projects, makes me an ideal commentor for “How to Start Development in C++”.
These are the stages you will have to follow.
- First, take a look at this previous post. .
- Obtain the code from the repository.
- Install a Visual C++ 2008 compiler. If you cannot pay the license, you can download the “Visual C++ 2008 Express” edition. It is free and it has everything you may need to start working.
- Install “log4cxx” and compile it. It is the equivalent of log4j in c++. You may be a hero, and correct the several bug this version has (unconceivable, but it is so). Or you may trust others heros who did it. The resulting log4cxx.dll file should be available in the PATH. Don´t forget making available the .lib files to the linker.
- Install “codexynthesis XSD“. It generates C++ wrappers from XSD schemas, much like JAXB does. It includes Xerces for C++, whose .lib should be available for the MXM projects. The XSD executable, should be available in the PATH also.
- Open the MXM projects from Visual Studio and compile. If you adore black screens, you can also install ant (or even worse, maven). But before, you should make Visual Studio binaries in the path, running VCVARS32.bat (available in the bin folder of Visual Studio).
- If you use Visual Studio, you will have to update all the directories (folders for includes, etc.) to your computer´s configuration.
- Voila! It should compile.
- To test the metadata engine, there is a .EXE application which needs three parameters to be run (log4cxx.properties, MXMConfiguration.xml properties and metadata.xml itself)…. You should create an adequate log4cxx.properties file, and you should change the parameters in the MXMConfiguration.xml to your choice (for example, change the folders etc.)
- Good luck!
A first release of the C++ source code for the modules mxm-core, mxm-dataobject, basic-metadata-engine and metadata_mxm_test have been committed today on the MXM svn repository.
The committed source code can be retrieved with an svn-update and it’s located in
The project files for win32 (visual studio 9.0) are located in
The project files for linux (g++) are located in
With the mxm_core you can enjoy loading and managing the different MXM engines in a common enviroment. The mxm_dataobject can be used to wrap a generic MXM schema in a set of C++ classes. The basic_metadata_engine is a very simple implementation of the MXM MetadataEngine (it retrieves the mpeg-7 title of a mpeg-7 document) and can be used as an example on how to create a MXM engine. Finally, the metadata_mxm_test is deployed to test the basic_metadata_engine.
Any information regarding the MXM C++ source code can be found here: http://mxm.wg11.sc29.org/?page_id=60
Enjoy the MXM C++ code
The copyright in this software is being made available under the BSD License, included below. This software may be subject to other third party and contributor rights, including patent rights, and no such rights are granted under this license.
<OWNER> = Regents of the University of California
<ORGANIZATION> = University of California, Berkeley
<YEAR> = 1998
Copyright (c) <YEAR>, <OWNER>
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.