Jump to Navigation

QtMediaHub: The implementation of a XBMC inspired media player in QML

Session Summary: 
6 months ago we decided to attempt to implement the XBMC media player in QML. In this session we share our progress, our findings, QML centric strengths, pain points, best practices and our findings across our broad, aggressive usage of QML. We deliberately hammered on QML and the super-set of new Qt functional modules, including but not limited to: Qt Mobility (Multimedia, location, etc) Qt3D Qt Components in order to stress test the use of QML and our extended offerings in developing key centric applications for large screen devices. Assuming Meego as a base system furthered allowed one to extend our applications functionality since the presence of services (avahi (zeroconf), dbus, etc) is guaranteed on Meego targets, and the base functional capabilities of the application can therefor be set at the platform layer rather than constrained to Qt, which represents a subset of the platforms broader capabilities.
Session Abstract: 

XBMC is a good looking long standing Media Center that has spawned several derivative works and has seen wide spread usage both directly and indirectly. It is available under permissive licensing, and it looks every bit as professional/appealing as proprietary set top box UIs.

The XBMC UI is a logical QML use case:

1) Its entirely pixmap centric
2) It is animation rich
3) It lends itself to states
4) It is designed for high resolutions (720p/1080p) where the use of our OpenGL painting backend pays the most dividends

It has a fairly complex theming engine which attempts to solve a similar problem set to that addressed by QML. They use an XML format to specify (hard coded) positions, animations and other properties and this is interpreted at runtime by a theming engine.

The greater XBMC functionality is also facilitated through the use of Qt:

1) Rendering web content via Webkit
2) Multimedia playback via the Qt Mobility MultimediaKit QML bindings

Our demo has met with positive reception at various (embedded) software events, and the demo will be demonstrated across several targets to give a direct impression of QML performance in this use case.

The project homepage is here:

http://www.qtmediahub.com

The code to the project is available here:

http://gitorious.org/qtmediahub