SlideShare a Scribd company logo
Grilo: present and future

  Juan A. Suárez Romero <jasuarez@igalia.com>
Outline
●   Why Grilo?
●   What is Grilo?
●   Next coming
Playing Content




Fetch   Multimedia    Play
        application
Playing Content



                      Format? ogg, mkv, avi
Fetch   Multimedia    Codec? mp3, h264, theora

        application
Playing Content




Fetch   Multimedia    Gstreamer
                          .
        application    Plugins
Fetching Content




GVFS/GIO/POSIX   Multimedia    Gstreamer
                                   .
                 application    Plugins
Fetching Content



Online/offline content
Different protocols
Different APIs
                         Multimedia    Gstreamer
                                           .
                         application    Plugins
Fetching Content
Fetching Content




 Grilo       Multimedia    Gstreamer
   .                           .
Plugins      application    Plugins
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
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
Grilo Sources



                   GrlMediaSource                                              GrlMetadataSource




GrlYoutubeSource   GrlJamendoSource      GrlUpnpSource
                                          GrlUpnpSource    GrlGravatarSource               GrlLasfmSource
                                           GrlUpnpSource




libgrlyoutube.so    libgrljamendo.so      libgrlupnp.so    libgrlgravatar.so               libgrllastfm-albumart.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)


                      search (tracker, “offspring”,            search (tracker, “offspring”,
                      url, lyrics,
                            lyrics                             url, lyrics,
                      title, thumbnail,
                             thumbnail                         title, thumbnail,      Media Source
                      album)                                   album, artist)
                                                                         artist
        Application                               Grilo core API                      GrlTrackerMedia


                       send                                           creates
                                           GrlMedia
                                           GrlMedia
                                            GrlMedia

Metadata Source                                                                        Metadata Source
                                  lyrics                     thumbnail
 GrlLyricsSource                                                                        GrlLastfmSource
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


 GrlMediaPlugin




GrlMetadataSource   GrlLastfmAlbumartSource




 GrlMediasource       GrlJamendoSource
Plugins Hierarchy

                          1..*
GrlPlugin                             GrlSource




              GrlMetadataSource                    GrlMediasource




            GrlLastfmAlbumartSource               GrlJamendoSource
Plugins Hierarchy

                          1..*
GrlPlugin                             GrlSource




            GrlLastfmAlbumartSource               GrlJamendoSource
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/

More Related Content

Similar to Grilo: present and future

Fisl13 gstreamer
Fisl13 gstreamerFisl13 gstreamer
Fisl13 gstreamer
Thiago Santos
 
Grilo: Feeding applications with multimedia content (GUADEC 2010)
Grilo: Feeding applications with multimedia content (GUADEC 2010)Grilo: Feeding applications with multimedia content (GUADEC 2010)
Grilo: Feeding applications with multimedia content (GUADEC 2010)
Igalia
 
Improving your team's source code searching capabilities - Voxxed Thessalonik...
Improving your team's source code searching capabilities - Voxxed Thessalonik...Improving your team's source code searching capabilities - Voxxed Thessalonik...
Improving your team's source code searching capabilities - Voxxed Thessalonik...
Nikos Katirtzis
 
Improving your team’s source code searching capabilities
Improving your team’s source code searching capabilitiesImproving your team’s source code searching capabilities
Improving your team’s source code searching capabilities
Nikos Katirtzis
 
Apache Hivemall and my OSS experience
Apache Hivemall and my OSS experienceApache Hivemall and my OSS experience
Apache Hivemall and my OSS experience
Makoto Yui
 
MAFWGriloSource
MAFWGriloSourceMAFWGriloSource
MAFWGriloSource
calvaris
 
20181019 code.talks graph_analytics_k_patenge
20181019 code.talks graph_analytics_k_patenge20181019 code.talks graph_analytics_k_patenge
20181019 code.talks graph_analytics_k_patenge
Karin Patenge
 
StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis
StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis
StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis
Phil Tully
 
Grilo: Easy Access to Online Multimedia Content (LinuxCon Europe 2012)
Grilo: Easy Access to Online Multimedia Content (LinuxCon Europe 2012)Grilo: Easy Access to Online Multimedia Content (LinuxCon Europe 2012)
Grilo: Easy Access to Online Multimedia Content (LinuxCon Europe 2012)
Igalia
 
Enabling interoperable and rights-aware DRM using the Semantic Web
Enabling interoperable and rights-aware DRM using the Semantic WebEnabling interoperable and rights-aware DRM using the Semantic Web
Enabling interoperable and rights-aware DRM using the Semantic Web
Roberto García
 
20181123 dn2018 graph_analytics_k_patenge
20181123 dn2018 graph_analytics_k_patenge20181123 dn2018 graph_analytics_k_patenge
20181123 dn2018 graph_analytics_k_patenge
Karin Patenge
 
Perceval, Graal and Arthur: The Quest for Software Project Data
Perceval, Graal and Arthur: The Quest for Software Project DataPerceval, Graal and Arthur: The Quest for Software Project Data
Perceval, Graal and Arthur: The Quest for Software Project Data
Valerio Cosentino
 
Android application analyzer
Android application analyzerAndroid application analyzer
Android application analyzer
Sanjay Gondaliya
 
Peering DB Frontend Translation Project
Peering DB Frontend Translation Project Peering DB Frontend Translation Project
Peering DB Frontend Translation Project
APNIC
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
idrajeev
 
ML Best Practices: Prepare Data, Build Models, and Manage Lifecycle (AIM396-S...
ML Best Practices: Prepare Data, Build Models, and Manage Lifecycle (AIM396-S...ML Best Practices: Prepare Data, Build Models, and Manage Lifecycle (AIM396-S...
ML Best Practices: Prepare Data, Build Models, and Manage Lifecycle (AIM396-S...
Amazon Web Services
 
Fast and Furious: Searching in a Distributed World with Highly Available Spri...
Fast and Furious: Searching in a Distributed World with Highly Available Spri...Fast and Furious: Searching in a Distributed World with Highly Available Spri...
Fast and Furious: Searching in a Distributed World with Highly Available Spri...
VMware Tanzu
 
SDEC2011 Essentials of Pig
SDEC2011 Essentials of PigSDEC2011 Essentials of Pig
SDEC2011 Essentials of Pig
Korea Sdec
 
Git Internals
Git InternalsGit Internals
Git Internals
Vivek Tikar
 
Grilo and MAFW (GUADEC 2010)
Grilo and MAFW (GUADEC 2010)Grilo and MAFW (GUADEC 2010)
Grilo and MAFW (GUADEC 2010)
Igalia
 

Similar to Grilo: present and future (20)

Fisl13 gstreamer
Fisl13 gstreamerFisl13 gstreamer
Fisl13 gstreamer
 
Grilo: Feeding applications with multimedia content (GUADEC 2010)
Grilo: Feeding applications with multimedia content (GUADEC 2010)Grilo: Feeding applications with multimedia content (GUADEC 2010)
Grilo: Feeding applications with multimedia content (GUADEC 2010)
 
Improving your team's source code searching capabilities - Voxxed Thessalonik...
Improving your team's source code searching capabilities - Voxxed Thessalonik...Improving your team's source code searching capabilities - Voxxed Thessalonik...
Improving your team's source code searching capabilities - Voxxed Thessalonik...
 
Improving your team’s source code searching capabilities
Improving your team’s source code searching capabilitiesImproving your team’s source code searching capabilities
Improving your team’s source code searching capabilities
 
Apache Hivemall and my OSS experience
Apache Hivemall and my OSS experienceApache Hivemall and my OSS experience
Apache Hivemall and my OSS experience
 
MAFWGriloSource
MAFWGriloSourceMAFWGriloSource
MAFWGriloSource
 
20181019 code.talks graph_analytics_k_patenge
20181019 code.talks graph_analytics_k_patenge20181019 code.talks graph_analytics_k_patenge
20181019 code.talks graph_analytics_k_patenge
 
StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis
StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis
StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis
 
Grilo: Easy Access to Online Multimedia Content (LinuxCon Europe 2012)
Grilo: Easy Access to Online Multimedia Content (LinuxCon Europe 2012)Grilo: Easy Access to Online Multimedia Content (LinuxCon Europe 2012)
Grilo: Easy Access to Online Multimedia Content (LinuxCon Europe 2012)
 
Enabling interoperable and rights-aware DRM using the Semantic Web
Enabling interoperable and rights-aware DRM using the Semantic WebEnabling interoperable and rights-aware DRM using the Semantic Web
Enabling interoperable and rights-aware DRM using the Semantic Web
 
20181123 dn2018 graph_analytics_k_patenge
20181123 dn2018 graph_analytics_k_patenge20181123 dn2018 graph_analytics_k_patenge
20181123 dn2018 graph_analytics_k_patenge
 
Perceval, Graal and Arthur: The Quest for Software Project Data
Perceval, Graal and Arthur: The Quest for Software Project DataPerceval, Graal and Arthur: The Quest for Software Project Data
Perceval, Graal and Arthur: The Quest for Software Project Data
 
Android application analyzer
Android application analyzerAndroid application analyzer
Android application analyzer
 
Peering DB Frontend Translation Project
Peering DB Frontend Translation Project Peering DB Frontend Translation Project
Peering DB Frontend Translation Project
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
 
ML Best Practices: Prepare Data, Build Models, and Manage Lifecycle (AIM396-S...
ML Best Practices: Prepare Data, Build Models, and Manage Lifecycle (AIM396-S...ML Best Practices: Prepare Data, Build Models, and Manage Lifecycle (AIM396-S...
ML Best Practices: Prepare Data, Build Models, and Manage Lifecycle (AIM396-S...
 
Fast and Furious: Searching in a Distributed World with Highly Available Spri...
Fast and Furious: Searching in a Distributed World with Highly Available Spri...Fast and Furious: Searching in a Distributed World with Highly Available Spri...
Fast and Furious: Searching in a Distributed World with Highly Available Spri...
 
SDEC2011 Essentials of Pig
SDEC2011 Essentials of PigSDEC2011 Essentials of Pig
SDEC2011 Essentials of Pig
 
Git Internals
Git InternalsGit Internals
Git Internals
 
Grilo and MAFW (GUADEC 2010)
Grilo and MAFW (GUADEC 2010)Grilo and MAFW (GUADEC 2010)
Grilo and MAFW (GUADEC 2010)
 

More from Juan A. Suárez Romero

Graphics stack updates for Raspberry Pi devices (FOSDEM 2024)
Graphics stack updates for Raspberry Pi devices (FOSDEM 2024)Graphics stack updates for Raspberry Pi devices (FOSDEM 2024)
Graphics stack updates for Raspberry Pi devices (FOSDEM 2024)
Juan A. Suárez Romero
 
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...
Juan A. Suárez Romero
 
Writing multimedia applications with Grilo
Writing multimedia applications with GriloWriting multimedia applications with Grilo
Writing multimedia applications with Grilo
Juan A. Suárez Romero
 
MSL2009. Valgrind
MSL2009. ValgrindMSL2009. Valgrind
MSL2009. Valgrind
Juan A. Suárez Romero
 
MSL2009. Gdb
MSL2009. GdbMSL2009. Gdb
Logical Volume Manager. An Introduction
Logical Volume Manager. An IntroductionLogical Volume Manager. An Introduction
Logical Volume Manager. An Introduction
Juan A. Suárez Romero
 
Una Arquitectura Multiagente Inteligente para la Detección de Intrusos
Una Arquitectura Multiagente Inteligente para la Detección de IntrusosUna Arquitectura Multiagente Inteligente para la Detección de Intrusos
Una Arquitectura Multiagente Inteligente para la Detección de Intrusos
Juan A. Suárez Romero
 
A New Learning Method for Single Layer Neural Networks Based on a Regularized...
A New Learning Method for Single Layer Neural Networks Based on a Regularized...A New Learning Method for Single Layer Neural Networks Based on a Regularized...
A New Learning Method for Single Layer Neural Networks Based on a Regularized...
Juan A. Suárez Romero
 
A Tool for Agent Communication in Mozart/Oz
A Tool for Agent Communication in Mozart/OzA Tool for Agent Communication in Mozart/Oz
A Tool for Agent Communication in Mozart/Oz
Juan A. Suárez Romero
 
A Multi-Agent Architecture for Intrusion Detection
A Multi-Agent Architecture for Intrusion DetectionA Multi-Agent Architecture for Intrusion Detection
A Multi-Agent Architecture for Intrusion Detection
Juan A. Suárez Romero
 
The KNITTER System: KQML for Erlang
The KNITTER System: KQML for ErlangThe KNITTER System: KQML for Erlang
The KNITTER System: KQML for Erlang
Juan A. Suárez Romero
 

More from Juan A. Suárez Romero (11)

Graphics stack updates for Raspberry Pi devices (FOSDEM 2024)
Graphics stack updates for Raspberry Pi devices (FOSDEM 2024)Graphics stack updates for Raspberry Pi devices (FOSDEM 2024)
Graphics stack updates for Raspberry Pi devices (FOSDEM 2024)
 
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...
On-going challenges in the Raspberry Pi driver stack: OpenGL 3, Vulkan and mo...
 
Writing multimedia applications with Grilo
Writing multimedia applications with GriloWriting multimedia applications with Grilo
Writing multimedia applications with Grilo
 
MSL2009. Valgrind
MSL2009. ValgrindMSL2009. Valgrind
MSL2009. Valgrind
 
MSL2009. Gdb
MSL2009. GdbMSL2009. Gdb
MSL2009. Gdb
 
Logical Volume Manager. An Introduction
Logical Volume Manager. An IntroductionLogical Volume Manager. An Introduction
Logical Volume Manager. An Introduction
 
Una Arquitectura Multiagente Inteligente para la Detección de Intrusos
Una Arquitectura Multiagente Inteligente para la Detección de IntrusosUna Arquitectura Multiagente Inteligente para la Detección de Intrusos
Una Arquitectura Multiagente Inteligente para la Detección de Intrusos
 
A New Learning Method for Single Layer Neural Networks Based on a Regularized...
A New Learning Method for Single Layer Neural Networks Based on a Regularized...A New Learning Method for Single Layer Neural Networks Based on a Regularized...
A New Learning Method for Single Layer Neural Networks Based on a Regularized...
 
A Tool for Agent Communication in Mozart/Oz
A Tool for Agent Communication in Mozart/OzA Tool for Agent Communication in Mozart/Oz
A Tool for Agent Communication in Mozart/Oz
 
A Multi-Agent Architecture for Intrusion Detection
A Multi-Agent Architecture for Intrusion DetectionA Multi-Agent Architecture for Intrusion Detection
A Multi-Agent Architecture for Intrusion Detection
 
The KNITTER System: KQML for Erlang
The KNITTER System: KQML for ErlangThe KNITTER System: KQML for Erlang
The KNITTER System: KQML for Erlang
 

Recently uploaded

High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
Vadym Kazulkin
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
Enterprise Knowledge
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
christinelarrosa
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
Fwdays
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
ScyllaDB
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
UiPathCommunity
 
From Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMsFrom Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMs
Sease
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
Fwdays
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
zjhamm304
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 

Recently uploaded (20)

High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin..."$10 thousand per minute of downtime: architecture, queues, streaming and fin...
"$10 thousand per minute of downtime: architecture, queues, streaming and fin...
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
 
From Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMsFrom Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMs
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 

Grilo: present and future

  • 1. Grilo: present and future Juan A. Suárez Romero <jasuarez@igalia.com>
  • 2. Outline ● Why Grilo? ● What is Grilo? ● Next coming
  • 3. Playing Content Fetch Multimedia Play application
  • 4. Playing Content Format? ogg, mkv, avi Fetch Multimedia Codec? mp3, h264, theora application
  • 5. Playing Content Fetch Multimedia Gstreamer . application Plugins
  • 6. Fetching Content GVFS/GIO/POSIX Multimedia Gstreamer . application Plugins
  • 7. Fetching Content Online/offline content Different protocols Different APIs Multimedia Gstreamer . application Plugins
  • 9. Fetching Content Grilo Multimedia Gstreamer . . Plugins application Plugins
  • 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
  • 12. Grilo Sources GrlMediaSource GrlMetadataSource GrlYoutubeSource GrlJamendoSource GrlUpnpSource GrlUpnpSource GrlGravatarSource GrlLasfmSource GrlUpnpSource libgrlyoutube.so libgrljamendo.so libgrlupnp.so libgrlgravatar.so libgrllastfm-albumart.so
  • 13. 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
  • 14. Grilo Sources ● Cooperation between sources (full resolution) search (tracker, “offspring”, search (tracker, “offspring”, url, lyrics, lyrics url, lyrics, title, thumbnail, thumbnail title, thumbnail, Media Source album) album, artist) artist Application Grilo core API GrlTrackerMedia send creates GrlMedia GrlMedia GrlMedia Metadata Source Metadata Source lyrics thumbnail GrlLyricsSource GrlLastfmSource
  • 17. Caps/Opts ● How to filter results? – Filter by type – Filter by specific key ● Problems – Support in sources – Too many parameters in function signature
  • 18. Caps/Opts search (GrlMediaSource *source,  const gchar *text,  const GList *keys,  guint skip,  guint count,  GrlMetadataResolutionFlags *flags,  GrlMediaSourceResultCb callback,  gpointer user_data);
  • 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);
  • 21. Plugins Hierarchy GrlMediaPlugin GrlMetadataSource GrlLastfmAlbumartSource GrlMediasource GrlJamendoSource
  • 22. Plugins Hierarchy 1..* GrlPlugin GrlSource GrlMetadataSource GrlMediasource GrlLastfmAlbumartSource GrlJamendoSource
  • 23. Plugins Hierarchy 1..* GrlPlugin GrlSource GrlLastfmAlbumartSource GrlJamendoSource
  • 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/

Editor's Notes

  1. Why Grilo exists What is exactly Grilo, and his components What is coming for the next releases of Grilo
  2. Let&apos;s figure out we are implementing a multimedia application Roughly speaking, we need to fetch content and play it Let&apos;s see what happens when we have the media to play
  3. When trying to play a content there are different combinations of options Content can be inside different containers Content can use different codecs The hardware to render the content can have different properties: different sizes, resolutions, some of them can have accelerated hardware, etc. So how to handle all this mess? More important, how to allow the application working even new codecs appears in the future?
  4. The solution that most people use is Gstreamer It&apos;s a pluggable framework that isolates all those details from the application, so it doesn&apos;t need to deal with them Each plugin is in charge of solving one of those details So if a new codec is added, just implementing the proper plugin the application will able to play it
  5. What happens with the fetch? Until some years ago, everything was stored locally Hard disks, USB pendrives, memory cards All these storages shares the same structure: they are a filesystem So using a filesystem API like syscalls, GIO, or other, you can fetch the content to play But this was until some years ago.
  6. Now, everything is connected Content can be everywhere: YouTube, flickr, jamendo, etc. Each place uses their own protocol and API But users want to play the content anyway in their devices How is this done? A good example is to look how the TV manufacturers does with their smart TVs
  7. As it can be seen, basically each service is a different application, with their own dependencies, and user experience There is no single application to access all the service in a consistent way Looking carefully one of those applications, besides the libraries to implement the UI and to play the content, they use specific libraries to access the content of the service If the application want to support other service, it needs to use the libraries specific for this new service The API is different for each library. But if you think about it, there are common structures in all this services For instance, most services allows to search, which means sending a text and getting the results. The difference is how the application needs to send the text, and how the results are encoded So it would be great to follow the same approach as Gstreamer, and have a system where all these differences are hidden, and have a common API to access the services
  8. This is Grilo: a pluggable framework that allows application to discover content and fetch it New sources of information can be added by adding new plugins to the system So now our multimedia application can use the same API to access different services, making it simple and reusable
  9. Let&apos;s see the main components in Grilo Basically, Grilo is composed of several sources that provide the multimedia content containing the information requested by users (titles, artists, albums, urls, so forth) User uses the registry to know the available sources and also what information can be requested, which are the metadata keys
  10. Sources provides the content This is the extensible part: plugins can be added as dynamic libraries, which can be loaded and can create one or more sources There are two types of sources Media sources provide new content like audio, video or images Metadata sources extend existent content (coming from any media source) with new information
  11. We can see here examples of those sources We have media sources which provide content from YouTube, Jamendo o UpnP servers. Each source is provided by its own plugin. Note that upnp plugin provides multiple sources, each for one server. So when a new server comes up a new source representing it is created, and when it goes away the source disappears There are also a coumple of metadata sources, one for Gravatar and another for thumbnails for music