Last week, in Daegu, Korea, we made a small demonstration of what we have implemented so far from the MPEG DASH specification in GPAC. The MPEG input document is available here.
New GPAC installer for Windows
Some people might be interested in trying out the latest version of the GPAC tools, but don’t have time to compile it from scratch. For those persons, I have generated an installer for Windows from the SVN (revision 2634). It contains the usual things (audio/video support, MPEG-4 Systems stuff (BIFS and LASeR)) but also our latest developments on MPEG-U Widgets and on MPEG-B DASH (Dynamic Adaptive HTTP Streaming).
GPAC on Galaxy Tab
Here is a small (bad quality) video showing that GPAC runs on Android platforms, here a Samsung Galaxy Tab.
[youtube]http://www.youtube.com/watch?v=himalbWpga4[/youtube]
Publication at MMSys 2011
Recently, I have been playing with two technologies on which I’ve been working for a while: interactive content and multimedia delivery. The result is a publication at MMSys 2011, which will be presented in February 2011 (See the program for the conference here). The paper is about how to deliver interactive applications (written in HTML5 or MPEG-4 BIFS) using HTTP Streaming technologies such as MPEG DASH or 3GPP AHS.
[textimport http://biblio.telecom-paristech.fr/cgi-bin/ws/biblio.cgi?author=concolato&type=inproceedings&etat=toappear,published&lang=en&dept=tsi&year=2011]
GPAC and Digital Radio Services
This video shows how some of the GPAC tools can be used to encode, deliver and play Digital Radio Services according to the T-DMB standard. It also shows GPAC running on iPad.
[youtube]http://www.youtube.com/watch?v=Bmer91TZhCo[/youtube]
GPAC Widgets Video on YouTube
I have finally had a bit of time to post on YouTube some old videos that we did to demonstrate the combined use of the W3C Widgets Packaging and Configuration specification and of the MPEG-U Widgets standard. These videos show: simple widget managment (with different GUI styles), communication between widgets and widget migration. Let me know if you have comments. Continue reading GPAC Widgets Video on YouTube
End of Intermedia
After 4 years of working together with european partners on the topic of “user-centric media” in the Network of Excellence Intermedia, the project is now finished. The reviewers said:
Excellent work, exemplary integration of heterogeneous partners has been achieved. The collaboration of the partners and the integration of their work have been successfully proved. The work on the collaboration and integration has been very fruitful as it is proven by the many demonstrators and proof of concepts that have been produced. Broad range of sub-projects covering a variety of multi-media interactions, infrastructure and application scenarios were shown to the public that may generate significant social impact. In general, achievements are on par with work being done in industrial labs elsewhere. The quantity and the quality of the publications are impressive. The coordination work had key role to the success of the project. Although it is a NoE, the technical achievements have been significant.
I would not agree on all points, and would have suggestions on how to improve our work but I’m happy about the result.
Digital Radio Player and Memory Footprint
As some of you know, the GPAC player is compliant Digital Radio player, according to the T-DMB standard (i.e. according to MPEG-2 TS, MPEG-4 SL, MPEG-4 AAC and MPEG-4 BIFS). Given the fact that GPAC is big and implements many standards, the question on its footprint was raised when considering embedded platforms. In the GPAC code, there is a possibility to compile the code, removing a lot of unnecessary features. On Windows, you have to tweak the include/gpac/configuration.h file. On linux, you have to deal with the configure script. Here is an example:
Using SVN revision 2136.
concolat@virtualubuntu:~/svn/gpac/bin/gcc$ ./configure --use-js=no --use-mad=no --use-xvid=no --use-ffmpeg=no --use-ogg=no --use-vorbis=no --use-theora=no --use-openjpeg=no --disable-streaming --disable-isoff-frag --disable-isoff-hint --disable-isoff-write --disable-loader-xmt --disable-loader-bt --disable-loader-isoff --disable-scene-encode --disable-mcrypt --disable-od-dump --disable-scene-dump --disable-scene-stats --disable-swf --disable-export --disable-import --disable-m2ps --disable-ogg -disable-avi --disable-qtvr --disable-beng --disable-x3d --disable-3d --disable-ssl --disable-jack --disable-pulse --use-a52=no --disable-odf --disable-isoff --disable-parsers --disable-m2ts-mux
With this you can compile, just the MP4Client application and the few plugins needed (MPEG-2 TS, BIFS, ODF, AAC, Video ouput, audio output, rasterizer and font engine) and you will be able to play T-DMB files (no MP4, no BT or XMT).
The result of a Windows XP 32 bits compilation is the following:
MP4Client application: 76 KB
GPAC Core library: 1240 KB
AAC decoder plugin: 244 KB
BIFS decoder plugin: 7.5 KB
ODF decoder plugin: 8.5 KB
MPEG-2 TS plugin: 16.5 KB
DirectX Audio/Video plugin: 64 KB
FreeType font engine plugin: 360 KB
Rasterizer plugin: 32.5 KB
JPEG & PNG decoder plugin: 72 KB
This make a total T-DMB player for 2.07 MB (759 KB as a 7z archive !!). There is no other dependency (except the C runtime, Direct X runtime). This is good but could be improved (e.g. the BIFS decoder could be simplified to support only the nodes in the T-DMB profile, all unnecessary functions in the core library are not excluded from the compilation …).
On Ubuntu 10.10, 32 bits, compiled with -Os and stripped, the results are:
MP4Client application: 63 KB
GPAC Core library: 1726 KB
AAC decoder plugin: 9.5 KB
BIFS decoder plugin: 5.5 KB
ODF decoder plugin: 5.5 KB
MPEG-2 TS plugin: 26 KB
OSS Audio plugin: 9.5 KB
X11 Video plugin: 22 KB
FreeType font engine plugin: 34 KB
Rasterizer plugin: 52 KB
JPEG & PNG decoder plugin: 13.5 KB
This make a TAR package of 1.9 MB and a TGZ of 743 KB. Very light, I think, even if in this case some dependencies are hidden on my system (libm, libz, libjpeg, libpng12, libpthread, libdl, and libc).
InterMedia Final Review
These two days (Oct. 5th and 6th) are the days for the final review of the European InterMedia Network of Excellence to which we participated. This project has given us the opportunity to collaborate with different european research centers and to prepare several demos:
- A demo of video adaptation with RWTH Aachen (Germany) and IBBT-MMLAB (Belgium)
- A demo of audio adaptation with OFFIS (Germany)
- A demo of image adaptation based on virtual camera motion with the University of Klagenfurt (Austria)
- A demo of streaming mobility with the University of Genova (Italy)
- A demo related to the use of UPnP with the University of Klagenfurt (Austria) and Telefonica R&D (Spain)
- A demo for a comparison between different methods for controlling remote devices (hw button, sw buttons …) with Fraunhofer FIT.
Most of these demos led to publications and to modifications of GPAC:
- Improved support for H264|AVC video
- Addition of a new type of plugin for audio filters
- Addition of a UPnP stack, first using the Intel Tools and then using Platinum
Test suite and validation
Most standards produce test suites to demonstrate the features of the standard. This is also very useful to test implementations. GPAC also has a (very limited) test suite to test that the code does not regress. However, when the tests need to be clicked on or when there is animation, the validation of a test may get quite complex.
There are several ways to solve this problem. Erik Dahlström from Opera told me that they use additional JavaScript with specific APIs to do their regression testing. This is interesting but I’m concerned by the time it takes to author this Javascript. So I thought about another way.
Within GPAC, I’ve implemented a small plugin which enables two things:
- to play a test, record the interactions (in an XML file) and take PNG snapshots upon specific events;
- and then to replay the content, reproduce the interactions and compare the snapshots to indicate if the result is valid or not.
A playlist of test sequences can then be created and the validation can be automatic. It doesn’t take much time to record the interactions, what I called the validation script.
You should see this soon on GPAC SVN.