Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)
Upcoming SlideShare
Loading in...5

Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)



By Iago Toral Quiroga.

By Iago Toral Quiroga.



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Grilo: Easing integration of multimedia content in applications (LinuxTag 2010) Grilo: Easing integration of multimedia content in applications (LinuxTag 2010) Presentation Transcript

  • GRILO static void _f_do_barnacle_install_properties(GObjectClass *gobject_class) { GParamSpec *pspec; /* Party code attribute */ pspec = g_param_spec_uint64 (F_DO_BARNACLE_CODE, "Barnacle code.", "Barnacle code", 0, G_MAXUINT64, G_MAXUINT64 /* default value */, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_PRIVATE); Easing integration of multimedia content in applications g_object_class_install_property (gobject_class, F_DO_BARNACLE_PROP_CODE, LinuxTag, Berlin, June 2010 Iago Toral Quiroga
  • About myself ➔ Working at Igalia since 2003. ➔ Involved with GNOME and Maemo. ➔ MAFW, the Media Application Framework for Maemo. ➔ GStreamer, minor contributions. ➔ Grilo.
  • Modern Media Applications - Service Integration - View slide
  • Modern Media Applications ➔ Integration of content from multiple sources YouTube, Jamendo, Vimeo, SHOUTCast,, 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? View slide
  • 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.
  • A solution for Maemo - MAFW -
  • 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.
  • A solution for everyone: Grilo - Overview -
  • 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.
  • Grilo: Overview
  • 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 ➔
  • 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. ➔
  • Grilo - Current Status -
  • 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 ➔
  • Grilo: Current Status ➔ Available plugins: Youtube ➔ Vimeo ➔ Jamendo ➔ Apple Trailers ➔ Flickr ➔ Podcasts ➔ SHOUTCast ➔ UPnP ➔ Bookmarks ➔ Filesystem ➔ album art ➔ Metadata store ➔
  • 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 ➔
  • 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 ➔
  • Collaborate with us!
  • Collaborate with us! ➔ Project hosted by GNOME Wiki: ➔ Git repositories: ➔ ➔ ➔ ➔ git:// git:// git:// IRC: grilo @ GIMPNet ➔ Mailing list: ➔ ➔ ➔ Bugzilla: ➔ ➔ Category: Other, Product: grilo
  • Demos
  • 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). ➔
  • Thanks!