2. About myself
➔
Working at Igalia since 2003.
➔
Involved with GNOME and Maemo.
➔
MAFW, the Media Application Framework for Maemo.
➔
GStreamer, minor contributions.
➔
Grilo.
4. Modern Media Applications
➔
Integration of content from multiple sources
YouTube, Jamendo, Vimeo, SHOUTCast, Last.fm, Local
media, iPod, UPnP, Podcasts, ...
➔ Each source requires a lot of work:
➔
➔
➔
➔
➔
➔
Learning: many protocols, APIs, support libraries, particularities, etc
Design: how do we communicate the UI with all these different
services? plugin API? Do we have the flexibility we need? etc
Implementation: we need UI and service-logic implementation on the
application side for each on them.
Maintenance: we have to keep the implementation updated and fix
bugs, react to changes in the protocols, the serivce APIs, etc
Many applications doing all this work independently
➔
➔
Application specific solutions
Can't we reuse more code?
5. Modern Media Applications
➔
Platform support for media source abstraction.
Just the same GStreamer does for media playback.
➔ Provide a framework that exposes a single, easy to
understand and use API to deal with all the services.
➔ Hide all the complexity from the UI developers.
➔ Central point for platform developers to work together.
➔
➔
➔
➔
➔
UI developers to focus on UI development.
Platform developers to focus on service integration and support.
Code a service once, reuse it in many applications.
Great complement to existing multimedia frameworks.
➔
➔
➔
The platform would be more appealing to third party developers.
This framework provides the media.
GStreamer (or others) provide the means to play it back.
7. MAFW and Maemo
➔
MAFW: Media Application Framework for
Maemo.
Developed for its Fremantle version, targetting the N900.
➔ MAFW provides platform support in Maemo for the
integration of multimedia content in applications.
➔ But it is too Maemo / Fremantle / N900 specific.
➔
➔
➔
➔
Developed with Maemo, Fremantle and the N900 in mind.
Not so easy to reuse that work in other platforms / products.
Its development is not as open as it could be.
➔
➔
Decissions are not made through public channels.
It is not easy for community developers to get involved.
9. Grilo: Overview
➔
A framework for easing access to multimedia
content from applications.
➔
Platform / application agnostic.
➔
Open development model.
➔
Free Software, licensed under the LGPL.
➔
C, Glib, GObject.
11. Grilo: Overview
➔
High level, easy to use APIs.
➔
➔
Lowers learning curve.
➔
➔
No need to learn all those different protocols, technologies
and service particularities, just learn how to use Grilo.
Lowers implementation effort.
➔
➔
Browse(), Search(), Metadata(), etc
Most of the work is done in Grilo and supporting libraries.
Reduces and shares maintenance needs.
Grilo and platform developers maintain the services.
➔ Application developers maintain their UI frontends
➔
12. Grilo: Overview
➔
Development in Grilo benefits all applications.
New plugins
➔ New features
➔ Bug fixes
➔ Performance improvements
➔ Etc
➔
➔
More efficient approach to development.
Write a backend once, reuse it everywhere. No more
application specific solutions.
➔ More developer time to work on better services for everyone.
➔
14. Grilo: Current Status
➔
Basic APIs are defined:
Browse
➔ Search
➔ Query
➔ Cancelation
➔ Metadata resolution
➔ Configuration
➔ Source / plugin loading and lookup
➔
➔
But it is not API stable yet
We are still fine tunning the APIs
➔ We are still adding more features
➔
15. Grilo: Current Status
➔
Available plugins:
Youtube
➔ Vimeo
➔ Jamendo
➔ Apple Trailers
➔ Flickr
➔ Podcasts
➔ SHOUTCast
➔ UPnP
➔ Bookmarks
➔ Filesystem
➔
Last.fm album art
➔ Metadata store
➔
16. Grilo: Current Status
➔
Bindings
Vala support
➔ Experimental introspection support
➔
➔
Documentation
Available in the project repository (--enable-gtk-doc)
➔ Overview
➔ Quick start guide
➔ Code examples
➔ API documentation
➔
17. Grilo: Current Status
➔
Test UI (grilo-test-ui)
A GTK+ playground application.
➔ Useful for plugin testing.
➔
➔
Related sub-projects:
Totem plugin.
➔ Rythmbox plugin.
➔ Grilo-mediaserver (rygel-grilo)
➔ MAFW-grilo
➔ Clutter Grilo player
➔
21. Grilo: Demos
➔
Grilo Test UI
➔
➔
Totem plugin
➔
➔
A plugin for the Totem video player.
Rhythmbox plugin
➔
➔
A GTK+ playground for testing purposes.
A plugin for the Rhythmbox audio player.
Grilo-mediaserver
A media server implementing GNOME's media server
specifications.
➔ Integration with Rygel (GNOME's UPnP media server).
➔