5. 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
9. Requirements
● Define what we need
● Type of content
– Any kind?
– Only video? Music?
● Metadata keys
– URL
– Title
– Thumbnail
– ... 55 metadata keys
10. 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
11. Information to show
- Title
- Author
- Duration
- Thumbnail
- URL
- Title
- Author
- Duration
- Thumbnail
- URL
Browse Search
13. Problems
● Two problems to solve
● Source not handling some keys
● Too much expensive to retrieve some keys
14. 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
15. 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
18. 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
20. 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
22. 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