SlideShare a Scribd company logo
1 of 26
Download to read offline
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 (GUADEC 2012)

GRIN-Global Print Wizard 2022
GRIN-Global Print Wizard 2022GRIN-Global Print Wizard 2022
GRIN-Global Print Wizard 2022Edwin Rojas
 
Apache Hivemall and my OSS experience
Apache Hivemall and my OSS experienceApache Hivemall and my OSS experience
Apache Hivemall and my OSS experienceMakoto Yui
 
MAFWGriloSource
MAFWGriloSourceMAFWGriloSource
MAFWGriloSourcecalvaris
 
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 capabilitiesNikos Katirtzis
 
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
 
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
 
Grilo: Easy Access to Online Multimedia Content
Grilo: Easy Access to Online Multimedia ContentGrilo: Easy Access to Online Multimedia Content
Grilo: Easy Access to Online Multimedia ContentJuan A. Suárez Romero
 
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 DataValerio Cosentino
 
Writing multimedia applications with Grilo
Writing multimedia applications with GriloWriting multimedia applications with Grilo
Writing multimedia applications with GriloJuan A. Suárez Romero
 
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_patengeKarin Patenge
 
InterMine Data Browser - Google Summer of Code 2018
InterMine Data Browser - Google Summer of Code 2018InterMine Data Browser - Google Summer of Code 2018
InterMine Data Browser - Google Summer of Code 2018Adrián Rodríguez Bazaga
 
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)Igalia
 
GRIN-Global Print Wizard
GRIN-Global Print WizardGRIN-Global Print Wizard
GRIN-Global Print WizardEdwin Rojas
 
Grilo and MAFW (GUADEC 2010)
Grilo and MAFW (GUADEC 2010)Grilo and MAFW (GUADEC 2010)
Grilo and MAFW (GUADEC 2010)Igalia
 
20181123 dn2018 graph_analytics_k_patenge
20181123 dn2018 graph_analytics_k_patenge20181123 dn2018 graph_analytics_k_patenge
20181123 dn2018 graph_analytics_k_patengeKarin Patenge
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basicsidrajeev
 

Similar to Grilo: present and future (GUADEC 2012) (20)

Fisl13 gstreamer
Fisl13 gstreamerFisl13 gstreamer
Fisl13 gstreamer
 
GRIN-Global Print Wizard 2022
GRIN-Global Print Wizard 2022GRIN-Global Print Wizard 2022
GRIN-Global Print Wizard 2022
 
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
 
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
 
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...
 
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)
 
Grilo: Easy Access to Online Multimedia Content
Grilo: Easy Access to Online Multimedia ContentGrilo: Easy Access to Online Multimedia Content
Grilo: Easy Access to Online Multimedia Content
 
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
 
Git Internals
Git InternalsGit Internals
Git Internals
 
Writing multimedia applications with Grilo
Writing multimedia applications with GriloWriting multimedia applications with Grilo
Writing multimedia applications with Grilo
 
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
 
InterMine Data Browser - Google Summer of Code 2018
InterMine Data Browser - Google Summer of Code 2018InterMine Data Browser - Google Summer of Code 2018
InterMine Data Browser - Google Summer of Code 2018
 
Grilo
GriloGrilo
Grilo
 
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)
 
GRIN-Global Print Wizard
GRIN-Global Print WizardGRIN-Global Print Wizard
GRIN-Global Print Wizard
 
Grilo and MAFW (GUADEC 2010)
Grilo and MAFW (GUADEC 2010)Grilo and MAFW (GUADEC 2010)
Grilo and MAFW (GUADEC 2010)
 
20181123 dn2018 graph_analytics_k_patenge
20181123 dn2018 graph_analytics_k_patenge20181123 dn2018 graph_analytics_k_patenge
20181123 dn2018 graph_analytics_k_patenge
 
Git
GitGit
Git
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
 

More from Igalia

Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerIgalia
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in MesaIgalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIgalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera LinuxIgalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVMIgalia
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesIgalia
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSIgalia
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webIgalia
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersIgalia
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...Igalia
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on RaspberryIgalia
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Igalia
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic APIIgalia
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepIgalia
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESMIgalia
 
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...Igalia
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023Igalia
 
On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023Igalia
 
Status Update of the VKMS DRM driver – XDC 2023
Status Update of the VKMS DRM driver – XDC 2023Status Update of the VKMS DRM driver – XDC 2023
Status Update of the VKMS DRM driver – XDC 2023Igalia
 

More from Igalia (20)

Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic API
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by Step
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESM
 
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023
 
On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023
 
Status Update of the VKMS DRM driver – XDC 2023
Status Update of the VKMS DRM driver – XDC 2023Status Update of the VKMS DRM driver – XDC 2023
Status Update of the VKMS DRM driver – XDC 2023
 

Recently uploaded

Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 

Recently uploaded (20)

Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 

Grilo: present and future (GUADEC 2012)

  • 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/