Words from the inside

of Igalia

1 Comment

GUADEC’2010 talks about Grilo

Thanks to Flumotion, you can access and view the awesome talks that happened at GUADEC 2010.

I have got those related with Grilo, and put them here. Besides the original WebM format videos, I provide also Theora version (in lower quality, intended to those who can not play WebM yet), and the slides too.

The first is a complete talk about Grilo: what is Grilo, what provides, and some of its features.

The second one is a 5 minutes lightning talk, about using Grilo to create a daemon that is able to provide content to other clients through DBus.

The thid one, is also a 5 minutes lightning talk, that explains the port of Grilo to Maemo 5, and how it was used to add more multimedia sources to N900‘s Mediaplayer.

Enjoy them!


mafw-gst-eq-renderer 0.2.2010.07-2-1 released

After Nokia releasing PR1.2 firmware for N900, I’ve updated mafw-gst-eq-renderer so it can be installed with that firmware.

Issues with mafw-gst-eq-renderer

Some people have reported problems with this renderer, mainly related with glitches and even sound that is stopped for a while when more applications than Mediaplayer are opened.

Unfortunately, equalizer elements seems to require quite a lot of CPU. I guess as gstreamer’s equalizer element is not a key element in Maemo, very likely it is not optimized.

Thus, if you become tired of those glitches, I suggest to not install this element. This is one of the reasons why I did not put mafw-gst-eq-renderer on extras-devel.


mafw-gst-eq-renderer 0.1.2009.47-1-1 released

A new version of mafw-gst-eq-renderer has been released: 0.1.2009.47-1-1.

mafw-gst-eq-renderer is a renderer plugin for MAFW, the multimedia framework used in Maemo 5. It is a fork of original MAFW renderer plugin which adds an equalizer.

This release integrates all changes from original mafw-gst-renderer v0.1.2009.47-1 plugin. So it should have all features as original (and unfortunately all bugs too).

If you want to use it with the default mediaplayer, I suggest to install MGR flavour.

Installing mafw-gst-eq-renderer

Installing mafw-gst-eq-renderer (I’m assuming you want to install MGR flavour) is very easy: download it and from a terminal, install it, uninstall original mafw-gst-renderer and reboot the device.

For those that need a detailed step by step:

  1. sudo gainroot
  2. dpkg -i mafw-gst-eq-renderer_0.1.2009.47-1-1mgr_armel.deb
  3. apt-get remove mafw-gst-renderer
  4. reboot

Uninstalling mafw-gst-eq-renderer

If for any reason you want to uninstall it, it is easy too: you must restore original mafw-gst-renderer and then remove the fork.

Again, step by step:

  1. sudo gainroot
  2. apt-get install mafw-gst-renderer mp-fremantle-generic-pr
  3. apt-get remove mafw-gst-eq-renderer
  4. reboot

After this, everything should work fine.


MAFW renderer plugin with equalizer

Reading Maemo Brainstorm I happened upon a complaint: Mediaplayer and other players do not have an equalizer. Though I don’t use equalizers very often, sometimes I did it, and I find a bit upset not having one in such cool device.

Being a MAFW development, I think MAFW can provide this feature. So I made a fork from mafw-gst-renderer, and I’m pleased to announce mafw-gst-eq-renderer, which can be summarized as mafw-gst-renderer + equalizer. It’s totally open, and you can follow its development from gitorious. It must be clear that this plugin is not part of official MAFW, but a community plugin that I did in my free time.

The main goals for this fork were adding equalizing capabilities to mafw-gst-renderer, and providing a graphical equalizer. I think both were achieved.

Both in Gitorious and Projects Maemo you can find two branches/flavours.

MTR (master branch) is the upstream development: this provides Mafw-Gst-Eq-Renderer-Plugin, which creates a Mafw-Gst-Eq-Renderer source, which is accessed through gsteqrenderer UUID. If you install it in your N900, you’ll have two renderers: the original one (mafw-gst-renderer) and the new one (mafw-gst-eq-renderer).

Unfortunately, Mediaplayer only handles mafw-gst-renderer. If you want to use mafw-gst-eq-renderer instead, you must replace mafw-gst-renderer with the MGR flavour (mafw-gst-renderer branch). It provides the same capabilities as MTR flavour, but inherits the names from mafw-gst-renderer: the plugin provided is named Mafw-Gst-Renderer-Plugin, which creates a Mafw-Gst-Renderer source that can be accessed through gstrenderer UUID. Install this flavour and remove mafw-gst-renderer and Mediaplayer will be able to use the equalizer.

Setting equalizer values is as easy as changing values in GConf. If you’re writting your own mediaplayer, you can provide your own equalizer but reading/writting gconf values. For those that doesn’t have an equalizer (like Mediaplayer) a Control Panel applet is provided. With the applet a set of predefined presets are provided, though applet allow to save user configurations.

My aim is to synchronize this development with original mafw-gst-renderer, integrating all relevant changes whenever new versions are released.

I hope you find this plugin useful.


M&M’s issue

No, I’m not going to talk about those little and tasty pieces of chocolate, but about Maemo and Multimedia :-)

If you have a fresh installation of Maemo 5 Beta2 SDK, and you have tried to play a mp3 either with MAFW or just with gst-launch, you should have noticed it doesn’t work. That’s because, as pointed out in the Developer Guide, SDK is distributed with almost no codecs, being the mp3 one of those missing codecs.

As I work with a lot of mp3 when developing MAFW, I’ve decided to put here the required package to be able to play mp3 files in the scratchbox (x86 target). Basically, it’s the same package that comes in Debian Stable, but compiled for scratchbox. Install and you’ll be able to play your mp3 collection.

Enjoy your tasty and musical environment!


MAFW on Desktop

If you assisted the talk Iago did at GCDS’09 about MAFW, maybe you remember he showed a demo to explain some of the concepts managed in MAFW. And if you paid attention too ;-) you noticed the demo was running on a standard desktop, not in scratchbox. Yes, cool!

Though MAFW is a key component in Maemo 5, it doesn’t have a lot of dependencies from Maemo. Thus, it is relatively simple to port. And to allow people to play with MAFW even without a scratchbox, we ported it to desktop. So this post is about how to build and/or use MAFW on desktop. Continue Reading →


MAFW, what’s up?

Some weeks ago, Maemo 5 Beta 2 SDK was announced. Eleven weeks passed since the first version. During this time, we have been working hard in MAFW, the multimedia framework that comes in Maemo 5. Most of the work we did consisted of bugfixing and improving the framework, while keeping as much as possible the current API.

What are the main differences in MAFW between Beta 1 and Beta 2? Basically bugfixes and improvements, but other changes happened too. Let’s summarize the changes in the new versions of mafw, mafw-shared, mafw-tracker-source, mafw-upnp-source, mafw-iradio-source, mafw-gst-renderer and mafw-test-gui:

  • Volume is now managed through PulseAudio.
  • The uPnP source now can handle uPnP servers with transcoding support (like Rygel). Thus, mafw-upnp-source is able to provide all the links from a specific uPnP item, and mafw-gst-renderer will use the link that can be played.
  • Added new metadata keys.
  • Added new error codes.
  • Added a new function to get the current media’s object ID and its metadata from the renderer (mafw_renderer_get_current_metadata). So far, the way to get metadata from an object ID was through the source’s API. But sometimes renderers are able to find new information while they are playing. An example is when playing an internet stream. This information was sent at the same time it was discovered, but now this new function allows to query it at any moment.
  • Added a new function to get metadata from several media’s object ID at the same time (mafw_source_get_metadatas).  In previous releases, mafw_source_get_metadata function was provided to get metadata from a single object ID; if several metadatas for several objects were needed, we had to invoke mafw_source_get_metadata several times. As it is quite common trying to get metadata from several object IDs, we have added a new function that works like mafw_source_get_metadata, but allows to specify several objects instead just one.
  • Sources can now notify clients when they are updating. Imagine that suddenly, thousands of multimedia clips are available. Sources can take a while until all this clips are available to be used (for exampe, after copying them). In our case, mafw-tracker-source uses tracker to index all the clips, and tracker could take a while to index all the new clips. How a source can notify the client that it is updating its content (or specifically in the case of mafw-tracker-source, that tracker is indexing the new elements)? We have added a new signal to sources, updating, that it is used to notify when the source is updating. It does it by telling the percentage of completeness, how may elements has been processed, how many items remain to be processed, and the estimated time to finish the update. Besides this new signal, a new function has been provided, mafw_source_get_update_progress, which can be used to ask at any moment if a source is updating. All these new functions are meant to those sources that can take some time to update their content; therefore, not all sources uses this signal (right now, only mafw-tracker-source use it).
  • Extended MAFW_METADATA_KEY_CHILDCOUNT. This is, perhaps the only break in the API. Browsing in MAFW sources is thought to be hierarchical. In the case of mafw-tracker-source, for example, below Music category are Playlists, Songs, Genres, Artists and Albums. When entering in Genres category, a list of all available genres are shown. At the same time, browsing through one of the genres, the list of all artists for that genre are obtained. Following one of those artists, we would get the list of albums for that artist and genre. And finally, browsing through a specific genre, artist and album, the list of all clips for that genre, artist and album will be obtained. MAFW_METADATA_KEY_CHILDCOUNT listed the number of elements in a branch. For example, the value of this key for the Genres category was the number of available genres, while the value for a specific genre was the number of artists in that genre, and its value for an artist got the number of albums for that artist in that genre. But how to get the number of albums of a specific genre? So far, it was not possible to do it in a direct way, and workarounds were needed. But we changed this childcount key, so it now uses a parameter to tell at which level are we interested. Thus, for example, when requesting metadata from a specific genre, MAFW_METADATA_KEY_CHILDCOUNT_1 is the number of artists in that genre, MAFW_METADATA_KEY_CHILDCOUNT_2 is the number of albums in that genre, and MAFW_METADATA_KEY_CHILDCOUNT_3 is the number of clips in that genre. Up to 9 levels are provided in MAFW, but the user can use the macro MAFW_METADATA_KEY_CHILDCOUNT to build the level she wants. Of course, it’s up to the source to be able to resolve the value for that level. It’s worth to mention that this is a compatibility breakage, as in previous versions MAFW_METADATA_KEY_CHILDCOUNT was a proper metadata key, but now it’s a macro to build new keys. Therefore, applications based in previous MAFW releases that were using this key must update to use the equivalent one, MAFW_METADATA_KEY_CHILDCOUNT_1.

As it can be seen, few changes happened, and most of the work was targeted to fix bugs and to improve the framework. We tried to keep the same functionality as possible. This helps people trying to implement their own player, providing a stable platform were to develop. So give it a try and implement your own player or utility for Maemo 5!