Grilo: present and future
Juan A. Suárez Romero <[email protected]>
Outline
● Why Grilo?● What is Grilo?● Next coming
Playing Content
Multimediaapplication
Fetch Play
Playing Content
Multimediaapplication
Fetch Format? ogg, mkv, avi Codec? mp3, h264, theora
Playing Content
Multimediaapplication
Fetch Gstreamer
Plugins.
Fetching Content
Multimediaapplication
GVFS/GIO/POSIX Gstreamer
Plugins.
Fetching Content
Multimediaapplication
Online/offline contentDifferent protocolsDifferent APIs Gstreamer
Plugins.
Fetching Content
Fetching Content
Multimediaapplication
Gstreamer
Plugins.
Grilo
Plugins.
Grilo Key Components
MediaSource
MediaSource
MediaSource
MetadataSource
MetadataSource
MetadataSource
PluginRegistry
Audio Video Image Box
Data
MetadataKey
1..*
1..*
contains
provides Media
enriches
registersregisters
High level API
Low level API
Provided by plugins
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
GrlUpnpSourceGrlUpnpSource
Grilo Sources
GrlMediaSource
GrlYoutubeSource GrlJamendoSource GrlUpnpSource
GrlMetadataSource
GrlGravatarSource GrlLasfmSource
libgrlyoutube.so libgrljamendo.so libgrlupnp.so libgrllastfm-albumart.solibgrlgravatar.so
Grilo Sources
● Source can declare new metadata keys● Trade-off between application and plugin
developers● Operations
– Media source: browse, search, metadata, remove, store, notify changes
– Metadata source: resolve, store specific metadata
Grilo Sources
● Cooperation between sources (full resolution)
Application GrlTrackerMedia
GrlMediaGrlMediaGrlMedia
search (tracker, “offspring”, url, lyricslyrics, title, thumbnailthumbnail, album)
createssend
Media Source
GrlLastfmSource
Metadata Source
GrlLyricsSource
Metadata Sourcelyrics thumbnail
Grilo core API
search (tracker, “offspring”, url, lyrics, title, thumbnail, album, artistartist)
What's coming?
XML Plugins
Caps/Opts
● How to filter results?– Filter by type
– Filter by specific key
● Problems– Support in sources
– Too many parameters in function signature
Caps/Opts
search (GrlMediaSource *source,
const gchar *text, const GList *keys, guint skip, guint count, GrlMetadataResolutionFlags *flags, GrlMediaSourceResultCb callback, gpointer user_data);
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
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);
Plugins Hierarchy
GrlMetadataSource
GrlMediasource
GrlMediaPlugin
GrlLastfmAlbumartSource
GrlJamendoSource
Plugins Hierarchy
GrlMetadataSource GrlMediasource
GrlPlugin
GrlLastfmAlbumartSource GrlJamendoSource
GrlSource1..*
Plugins Hierarchy
GrlPlugin
GrlLastfmAlbumartSource GrlJamendoSource
GrlSource1..*
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
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
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/
Recommended