MeeGo TV & XBMC
Many questions not many answers. Unless you go to the MeeGo conferences and manage to find the right person, this info is fairly hard to come by so I thought i'd make this blog post.
MeeGo TV 1.2
MeeGo TV is an effort to bring a new vertical to MeeGo. (see MeeGo Tablet, IVI, Handset, etc...). It currently only targets the Intel CE4100 and CE4200 SOC platform - Sodaville/Groveland (same as on Boxee Box/Google TV/Telecom Italia cubovision/Free Revolution). A MeeGo TV 1.2 release is expected in the open sometime soon (despite the 1.2 there has never been any other MeeGo TV releases). More on this here.
XBMC has been chosen as a test UI for MeeGo TV while waiting for the TV vertical to create a dedicated TV UI. System integrators are expected to build their own UI on top of the stack and are not expected to reuse this UI.
XBMC in MeeGo TV 1.2
- UMMS player backend (GStreamer based). More on UMMS here.
- Removal of settings that make no sense in confluence and XBMC
- Extension of python API so plugins can unmap XBMC's window to save CPU
- Removal of all ffmpeg codecs
- Removal of GPLv3' licenses. See debate on MeeGo IVI list here.
How media playback works on this XBMC build
The new player backend uses Dbus to talk to madeo-uplayer a UMMS prototype player service. A URI is given to this service and when the play signal is sent the GStreamer pipeline is started (it really is that simple ;-)).
On a CE4100 there are 4 full planes (there are 6 total), and we have X11 running in the 3rd plane. The gdlsink GStreamer element outputs the video on the first plane. Planes are all blended in hardware to provide the final output. In order to show the video in the UI we use the OpenGL ALPHA value to set the region of video transparent. Therefore the UI (3rd plane) and the video (1st plane) get blended in hardware at very little CPU cost. More on GDL here.
Because the ISMD (Intel Streaming Media Driver) has well proven GStreamer plugins, and GStreamer is the preferred MeeGo media playback API (and also most other Linux distributions). More information on GStreamer ISMD plugins and Intel ISMD capabilities can be found here. The UMMS spec does not require you to use GStreamer so you can use anything you want.
XBMC on ARM
Alot of people would like to see MeeGo TV on different architectures. That's a question for the MeeGo TV list, but I can answer why XBMC is not currently compiling for ARM on OBS. Currently we use GDL transparency to provide video playback within the UI. That's simply not going to work on any architectures not running this kind of hardware. More on GDL here and here.
Still that doesn't excuse why the package is failing to build in OBS, and it will be fixed sooner rather than later. You can track progress here.
We would really like the UMMS player backend to make it to XBMC upstream. However currently the madeo-uplayer API (the prototype UMMS player written in python) is far from stable and is probably going to be replaced for a C based GStreamer player soon.
The python API extension to unmap XBMC's X11 window would be a great addition to XBMC's API, opinions on that would also be great.
The current license/patent cleanup would also be a great thing to add to XBMC upstream. I understand most people would like to keep ffmpeg codecs, however a compile time option and a cleanup script to create clean source tarballs and be able to compile without dvdplayer/paplayer would be great. I'd really like some input on how this would best be done.
Wait, can I run this code?
Yes you can run the code on a MeeGo 1.2 device, however video playback as explained above will not work properly. Once MeeGo TV 1.2 is released you'll be able to run this code on any sodaville box (you'll probably have to update the CEFDK), you can get 'open' boxes from Cocom here or Videon here.
I encourage any questions to go to the Meego-TV mailing list.