SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
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/

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von Igalia

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JITIgalia
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!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
 

Mehr von Igalia (20)

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
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
 

Kürzlich hochgeladen

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
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
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
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
 
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
 
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
 
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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
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
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 

Kürzlich hochgeladen (20)

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
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
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
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
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
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
 
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
 
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
 
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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
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
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 

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/