22
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); g_object_class_install_property (gobject_class, F_DO_BARNACLE_PROP_CODE, LinuxTag, Berlin, June 2010 Iago Toral Quiroga [email protected] GRILO Easing integration of multimedia content in applications

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

  • Upload
    igalia

  • View
    86

  • Download
    0

Embed Size (px)

DESCRIPTION

By Iago Toral Quiroga.

Citation preview

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

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);

g_object_class_install_property (gobject_class,

F_DO_BARNACLE_PROP_CODE,

LinuxTag, Berlin, June 2010

Iago Toral [email protected]

GRILOEasing integration of multimedia content in applications

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

About myself

➔ Working at Igalia since 2003.

➔ Involved with GNOME and Maemo.

➔ MAFW, the Media Application Framework for Maemo.➔ GStreamer, minor contributions.➔ Grilo.

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

Modern Media Applications- Service Integration -

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

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?

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

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.

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

A solution for Maemo- MAFW -

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

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.

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

A solution for everyone:Grilo

- Overview -

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

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.

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

Grilo: Overview

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

Grilo: Overview

➔ High level, easy to use APIs.➔ Browse(), Search(), Metadata(), etc

➔ Lowers learning curve.➔ No need to learn all those different protocols, technologies

and service particularities, just learn how to use Grilo.

➔ Lowers implementation effort.➔ 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

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

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.

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

Grilo- Current Status -

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

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

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

Grilo: Current Status

➔ Available plugins:➔ Youtube➔ Vimeo➔ Jamendo➔ Apple Trailers➔ Flickr➔ Podcasts➔ SHOUTCast➔ UPnP➔ Bookmarks➔ Filesystem

➔ Last.fm album art➔ Metadata store

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

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

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

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

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

Collaborate with us!

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

Collaborate with us!

➔ Project hosted by GNOME➔ Wiki: http://live.gnome.org/Grilo➔ Git repositories:

➔ git://git.gnome.org/grilo➔ git://git.gnome.org/grilo-plugins➔ git://git.gnome.org/rygel-grilo

➔ IRC: grilo @ GIMPNet➔ Mailing list:

➔ http://mail.gnome.org/mailman/listinfo/grilo-list➔ Bugzilla:

➔ http://bugzilla.gnome.org➔ Category: Other, Product: grilo

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

Demos

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

Grilo: Demos

➔ Grilo Test UI➔ A GTK+ playground for testing purposes.

➔ Totem plugin➔ A plugin for the Totem video player.

➔ Rhythmbox plugin➔ 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).

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

Thanks!