By Juan A. Suárez Romero.
This talk will focus on Grilo[1], a framework which purpose is to provide media application developers with proper tools to access online and offline multimedia. More specifically, Grilo provides:
- A single, high-level API that abstracts the differences among various media content providers, allowing application developers to browse and search content from various services and sources with little work on the application side.
- A collection of plugins for accessing content from various media providers. Developers can share efforts and code by writing plugins for the framework that are application agnostic.
- A flexible API that allows plugin developers to write plugins of various kinds.
Today, Grilo is already being used by various GNOME applications, such as Totem[2], Rhythmbox[3] or MediaExplorer[4] and it will have even more relevance in the future of the platform, where it is expected to be a key component of the new multimedia applications[5][6].
During this talk we will look at the current version of Grilo, and we will cover the new features that are coming for the 0.2 release: new API aimed to be extensible, new capabilities for filtering, a new design of plugins architecture, support for declarative plugin development, and, of course, the new plugins.
[1] http://live.gnome.org/Grilo
[2] http://projects.gnome.org/totem/
[3] http://projects.gnome.org/rhythmbox/
[4] http://media-explorer.org/
[5] http://live.gnome.org/Design/Apps/Music
[6] http://live.gnome.org/Design/Apps/Videos
10. Grilo Key Components
Plugin
registers Registry registers
Metadata
Metadata
Metadata enriches Key
Metadata
Source 1..*
Source
Source
Data contains Low level API
Media
Media Media
Media provides 1..*
Source
Source
Source High level API
Audio Video Image Box
Provided by plugins
11. Grilo Sources
● Provides the multimedia content
● Plugins
– Dynamic loaded libraries
– Each plugin provides one or more sources
● Two types of sources:
– Media Sources
– Metadata Sources
17. Caps/Opts
● How to filter results?
– Filter by type
– Filter by specific key
● Problems
– Support in sources
– Too many parameters in function signature
19. Caps/Opts
● Capabilities (GrlCaps)
– Defines what the source can do
– Currently, different types of filtering
● Filter by media type
● Filter by key
● Filter by range
– Extend for other capabilities
● Sorting
20. Caps/Opts
● Options (GrlOperationOptions)
– Defines what the application want to do
– Matches the source capabilities
– Simplifies the function signature
search (GrlMediaSource *source,
const gchar *text,
const GList *keys,
GrlOperationOptions *options,
GrlMediaSourceResultCb callback,
gpointer user_data);
24. Improved full resolution algorithm
● Several metadata sources solving the same
key
– If one fails, try the next one
● Dependency not provided by media source
– Chain the resolution
25. Resources
● Wiki
– http://live.gnome.org/Grilo
● Source code
– git://git.gnome.org/grilo
– git://git.gnome.org/grilo-plugins
● IRC
– #grilo at irc.gnome.org
● Mailing list
– http://mail.gnome.org/mailman/listinfo/grilo-list
26. Credits
● Television Icon by The Noun Project (CC Attribution)
http://www.iconspedia.com/icon/television-icon-19995.html
● Icon Mobile Phone by Jean Victor Balin http://openclipart.org/detail/29119
● Hard Disk Icon by Mazenl77 (CC Attribution) http://www.iconspedia.com/icon/hard-disk-1600.html
● Memory Card Icon by Custom Icon Design Studio
http://www.gettyicons.com/free-icon/103/pretty-office-2-icon-set/free-memory-card-icon-png/
● Vimeo, Flickr, Jamendo, YouTube and UpnP logos under copyright of their own brands
● Option by rofltosh (CC BY-NC 2.0) http://www.flickr.com/photos/atomicbartbeans/71575328/
● Hold on by Andrew Pescod (CC BY-NC-SA 2.0) http://www.flickr.com/photos/andrewpescod/175668680/
● Train by Andifeelfine (CC BY-NC-ND 2.0) http://www.flickr.com/photos/andifeelfine/235779841/