03.02.10
Grilo 0.1.3 released
Check out details here.
- This is the weblog of Iago Toral -
In my last post I mentioned I was working on a Totem plugin based on Grilo, last week I put some more effort on that and I got a beta version, you can check out some pics below:
I have also recorded an ogv video showing the plugin at work in more detail, you can check it out here.
Also, I uploaded the code to gitorious if you feel curious about it. If you want to build the plugin from the sources check the HACKING file on the repository. Also, I suggest you build Grilo from the sources as well or wait for the release 0.1.3 which should be coming out later today.
Now to the more interesting part, the good thing about Grilo is not just the plugins, it is the fact that you can interact with them with a common API. As a matter of a fact, I could now add more plugins to Grilo and those would show up in Totem without having to code anything extra, not a single line on Totem or its Grilo plugin, it would just work: you would be able to browse the new plugins if they are browseable in the Browse view and/or you would be able to search them if they are searchable in the Search view, etc.
The plugin is not really finished, it can still use some extra work, particularly in these areas:
but all in all, it is good enough already for others to try and give feedback, so if you have any, please drop me a comment!
That’s all for now, I am looking forward to seeing this on the upstream Totem at some point in the future, so if some Totem developer is reading this, please let me know how you feel about that.
Some updates on Grilo since my announcement post (in chronological order):
After working for quite some time in MAFW for Maemo I thought it was about time we exported some of the ideas to other platforms, including the desktop, of course. For those who haven’t heard of MAFW yet, you can get a good description of it in the abstract of the talk I gave at GUADEC last year.
MAFW takes care of quite a few things related to high level multimedia development, but there is one in particular I find specially interesting, which is source abstraction. Basically, MAFW defines a set of interfaces for accessing media content providers (a.k.a. Youtube, UPnP servers, local media, radio streams, podcasts, etc). in a generic way (one API to rule them all), easing a lot the effort required on the application side to write modern media players that integrate many of these services.
MAFW was a step forward in this regard, but probably too tied to Maemo in general and to its Fremantle iteration and the N900 in particular. I think the ideas behind MAFW about media browsing are totally valid outside Maemo, however I find its implementation and design packed with Maemo specific (or even N900 specific) choices. I guess this is ok for Nokia since Maemo is its major priority when developing software, but for those willing to export these ideas to other contexts, like me, it is not good enough. And this is is why we have created Grilo.
Grilo is a framework focused on making media discovery and browsing easy for application developers which has been developed following some of the good ideas behind MAFW but with a broader target in mind and adding some extra interesting features as well. In few words, Grilo provides:
At the moment, even though we are still starting the work, we have a bunch of plugins already available that provide support for various kinds of services:
We also have a simple GTK+ test user interface that allows users to browse, search and query these plugins for available media, for those who want to get a grasp on how the framework can be used from an application. We also have a Last.FM album art plugin too.
Grilo is LGPL and its source code is available on Gitorious. We welcome interested users and developers to check it out and provide feedback, patches or new plugins. We are still in the early stages of the framework definition and we are looking forward to incorporate new ideas into it.
The advantages of having a framework like Grilo are easy to spot:
I guess this post is getting long enough for now, so I’ll stop here and write more about Grilo some other day…
Last week I was pretty busy with various things and I did not have much time to post about Maemo Summit, but here I go:
I also had a presentation about MAFW there which I hope helped some people with getting started on writing plugins for MAFW. I have to admit that I had thought of giving a very different type of presentation, more based on actual source code than slides, but anyway… I just provided insight on some key ideas around MAFW and its plugins, and then I left the source code examples (which you can grab from previous post) for those willing to get their hands dirty with the details.
The session was nice, I got some interesting questions/feedback during and after the session and I hope all that feedback translates into a better MAFW at some point in the future. Some highlights (in no particular order):
I also had other interesting corridor chats with people about how one would write a Youtube source plugin for MAFW, how to integrate a Mozilla Flash renderer with Media Player, enabling applications to access additional metadata using Internet services, etc.
So overall I had a great time there and I think it was well worth my time. I am already looking forward to the next edition
So here is the thing, when I was preparing this presentation I thought it would be a good idea to give the audience some actual source code of both source and renderer plugins for MAFW. Yeah, we already have some plugins in MAFW that you can look into but those are full of optimizations and pack quite many features so I thought they might be a bit complicated to understand the basics. So, I devoted a few hours to write a couple of very simple plugins (a source and a renderer), they are really simple, they only provide the most basic stuff, they are not complete,they sure have bugs, etc but the code is simple, easy to read and understand and it is full of comments to guide readers.
Unfortunately, 20 minutes is not a lot of time to explain what MAFW is about and go into the details of the plugins’ source code. So here is the deal, do you prefer to see me showing you the code and explaining how it works, or do you prefer slides covering the basic ideas and leave the source code off the presentation?
In any case, you can get the pluigins’ source code here:
UPDATE: You can now also check out the slides here:
Today I attended a bunch of interesting talks. My highlights:
I will be talking about MAFW, the Media Application Framework for Maemo, at the Desktop Summit in Gran Canaria. That will be a nice place to introduce MAFW to the desktop community as well as an opportunity to showcase it to those interested.
The talk is scheduled on Wednesday 8th July, for details on MAFW and the contents of the talk you can take a look here.
Today we have added our test GUI to the garage repository (component mafw-test-gui). This is by no means a product quality application, but it is a good sandbox for testing MAFW while we work on it. Maemo developers interested in writing multimedia applications based on MAFW can use this application as a reference. If you just want to give MAFW a try, this application is a good place to start as well.
If you missed the previous posts, you can find MAFW’s repository here.
Enjoy!
UPDATE: Zeeshan just remembered me that I forgot to mention that this UI is based on gupnp-av-cp code
Bad Behavior has blocked 25 access attempts in the last 7 days.