![Page 1: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/1.jpg)
static void_g_digicam_manager_class_init (GDigicamManagerClass
*klass){
GObjectClass *object_class = (GObjectClass*) klass;
g_assert (G_DIGICAM_IS_MANAGER_CLASS (klass));
parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (GDigicamManagerPrivate));
/* Override virtual functions */ object_class->finalize = _g_digicam_manager_finalize;
/** * GDigicamManager::focus-done:
* @manager: the gdigicam manager
Juan A. Suárez [email protected]
Writing multimedia applications with Grilo
![Page 2: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/2.jpg)
Opening
![Page 3: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/3.jpg)
Sources
![Page 4: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/4.jpg)
Sources
![Page 5: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/5.jpg)
Grilo
● Framework focused on making discovery and browsing easy for application developers● A single, high-level API for all the sources
● Plugins● Provides access to multimedia content● Extendable
![Page 6: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/6.jpg)
Grilo
SOURCESOURCESOURCE
SOURCESOURCEMEDIASOURCESOURCE
METADATAKEYS
crea
tes
contains
provides
YoutubeJamendoFlickrIMDB...
AudioVideoImage...
TitleArtistAlbum...
![Page 7: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/7.jpg)
Totem
![Page 8: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/8.jpg)
Totem
![Page 9: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/9.jpg)
Requirements
● Define what we need● Type of content
– Any kind?– Only video? Music?
● Metadata keys– URL– Title– Thumbnail– ... 55 metadata keys
![Page 10: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/10.jpg)
Content to show
● Ignore any source that does not provide Videos● In “browse” view, ignore any source that does
not support browsing● In “search” view, ignore any source that does
not support searching
![Page 11: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/11.jpg)
Information to show
- Title- Author- Duration- Thumbnail- URL
- Title- Author- Duration- Thumbnail- URL
Browse Search
![Page 12: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/12.jpg)
Invoke Grilo
- Title- Author- Duration- Thumbnail- URL
- Title- Author- Duration- Thumbnail- URL
Browse Search
![Page 13: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/13.jpg)
Problems
● Two problems to solve● Source not handling some keys● Too much expensive to retrieve some keys
![Page 14: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/14.jpg)
Totem
● Flags to control content retrieval● Normal: provides the known requested content
– GRL_RESOLVE_NORMAL● Fast only: provides the known requested content
that does not penalize the operation in terms of performance– GRL_RESOLVE_FAST_ONLY
● Full: provides the known requested content using all the available sources– GRL_RESOLVE_FULL
![Page 15: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/15.jpg)
Reduce the problems
● Request content in chunks● Request fast only in first iteration● While current chunk is visible
● Ask for each visible media element the discarded keys (using full flag)
● URL key case: slow key and not shown in the UI● Request it when user wants to play
![Page 16: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/16.jpg)
GNOME Music
![Page 17: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/17.jpg)
GNOME MusicCover Art
![Page 18: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/18.jpg)
GNOME Music
● Music defines its own structure
● Grilo's one is different● Does not have concept of “Artist” or “Album”
● They are “boxes”
● Needs to sort the results
![Page 19: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/19.jpg)
GNOME Music
![Page 20: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/20.jpg)
Approaches
● Request content from Tracker directly● Create Grilo Media elements to add missing information
(Cover Art)
● Instruct Grilo's Tracker plugin how to construct the medias
● Use query() function● Very specific to the plugin● In case of Tracker plugin, use SPARQL to make the query
– First column is the media to build– Use alias to map each SPARQL column to specific metadata keys
![Page 21: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/21.jpg)
Closing
![Page 22: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/22.jpg)
Other use-cases
● Application to upload audio/video content to web services● store() function
● Mediaplayer with auto-resume● “playback-interrupted-time” key● store_metadata() function
– Metadata Store source handles it
![Page 23: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/23.jpg)
Show me a code
![Page 24: Writing multimedia applications with Grilo (GUADEC 2013)](https://reader034.vdocuments.us/reader034/viewer/2022052623/559c9fa81a28ab3d3f8b4670/html5/thumbnails/24.jpg)
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