SlideShare a Scribd company logo
1 of 24
Download to read offline
Grilo: Easy Access to Online Multimedia Content




                                  LinuxCon Europe 2012, Barcelona
                       Juan A. Suarez Romero <jasuarez@igalia.com>
Grilo: Easy Access to Online Multimedia Content




                                Introduction




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
About me




       Juan A. Suárez Romero
              Computer engineer, Coruña University
              Working at Igalia since 2007
              Experience in multimedia
              Involved in Maemo and MeeGo
              Co-author of MAFW




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Outline



  1    Current problems


  2    Grilo


  3    Conclusions


  4    Thank you!




      Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Grilo: Easy Access to Online Multimedia Content




                       Current problems




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Many sources of content



    Online/offline sources
    Different protocol/API
    Sources that do not
    provide content
    (meta-information)




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Many different devices



    Different screen sizes
    Different hardware
    components
    Different platforms




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Current approach



       Develop one application per service
              Each application with different UX
              Not easily scalable: new sources require new applications
              Expensive maintenance
       In some cases, one application attending more than one
       service
              Services of the same type (e.g., Photo storage service)
              Define a common layer between application and the service

                      Not shared effort! Reinventing the wheel all time




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
What we need?




  Stop reinventing the wheel!

       Platform-level solution for accessing multimedia content
              Provide homogeneous access to all content
              Scalable with new sources of information
              Collaboration!
              Consistent user experience
                      Users care about the content, not the provider




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Grilo: Easy Access to Online Multimedia Content




                                            Grilo




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
What is Grilo?




       Framework focused on making discovery and browsing
       easy for application developers
              A single, high-level API for all the sources
              A collection plugins that provides access to the sources
              An extendable system to provide more plugins

       http://live.gnome.org/Grilo




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Architecture overview




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Media types and Keys


   Collection of keys and
   values
   Several keys provided by
   core: title, URL, author, . . .
           Plugins can extend them
           with new keys
   Support for multiple
   values
   Support for relations
   between keys




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Plugins and Sources


    Key component of the
    system
    Plugins are dynamically
    loaded by core
    Plugins create one or more
    sources
    Sources support multiple
    operations
           Browse, Search, Store,
           Remove, . . .
    All operations are optional




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Plugins and Sources


    Sources perform two main
    roles:
           Provide new media
           content
           Enrich already existent
           media content
    Sources collaborate among
    them to solve the requests




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Example of collaboration



       Developer wants to show content from UPnP server and
       play it
       They need the url to play, a title and a thumbnail to show
          1   Perform the request through core API
          2   Core checks if the requested keys are supported by the
              source
                      thumbnail is not supported by UPnP source
          3   Checks which sources are able to resolve thumbnail key
                      CoverArt source is able to
                      But it requires to know two keys: artist and album




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Example of collaboration



   4   Core checks if those required keys are supported by
       original UPnP source
              If not, repeat the process as in the case of thumbnail
   5   Perform the request in the UPnP source with the keys
       requested plus the new keys
   6   When the results arrive, send them to CoverArt source to
       include the thumbnail
   7   Send the final results to application

  Developer only needs to deal with one provider




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Implementing applications




       Main language is C
              Other languages supported through gobject introspection
              (Python, Javascript, Vala, . . . )
       Support for C++ (grilomm)
       Some initial support for Qt/QML




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Code example

 1    # ! / usr / bin / python
 2
 3    import sys
 4    from g i . r e p o s i t o r y import Grl
 5
 6    def main ( argv ) :
 7      i f l e n ( argv ) < 1 :
 8         p r i n t " Usage : m a k e _ l i s t . py < s e a r c h _ t e x t > "
 9         return 1
10
11       Grl . i n i t ( [ ] )
12       r e g i s t r y = Grl . R e g i s t r y . g e t _ d e f a u l t ( )
13       registry . load_all_plugins ( )
14       keys = [ Grl .METADATA_KEY_DURATION,
15           Grl . METADATA_KEY_TITLE,
16           Grl .METADATA_KEY_URL]
17       o p t i o n s = Grl . OperationOptions . new ( None )
18       options . set_count ( 2 0 0 ) ;
19       r e s u l t s = Grl . m u l t i p l e _ s e a r c h _ s y n c ( None , argv [ 0 ] , keys , o p t i o n s )
20
21       p r i n t " #EXT3MU"
22       f o r media in r e s u l t s :
23           i f i s i n s t a n c e ( media , Grl . MediaAudio ) :
24               p r i n t " #EXT3INF : " + s t r ( media . g e t _ d u r a t i o n ( ) ) + " , " + media . g e t _ t i t l e ( )
25               p r i n t media . g e t _ u r l ( )
26
27    i f __name__ == " __main__ " :
28       main ( sys . argv [ 1 : ] )




     Grilo: Easy Access to Online Multimedia Content                      LinuxCon Europe 2012, Barcelona
Implementing plugins

       Plugins must be written in C
       Adding support for writing plugins declaratively (in XML)
       Adding support for other languages (Lua)




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Grilo: Easy Access to Online Multimedia Content




                                Conclusions




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Resources


       Wiki
              http://live.gnome.org/Grilo
       Source code
              http://git.gnome.org/browse/grilo
              http://git.gnome.org/browse/grilo-plugins
              http://git.gnome.org/browse/grilomm
       IRC
              #grilo at irc.gnome.org
       Mailing list
              http://mail.gnome.org/mailman/listinfo/
              grilo-list

  Do not miss our booth in ground floor (in front of Rossini
  room)


   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Grilo: Easy Access to Online Multimedia Content




                                  Thank you!




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona
Images used in this presentation




       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




   Grilo: Easy Access to Online Multimedia Content   LinuxCon Europe 2012, Barcelona

More Related Content

What's hot

OpenChain: How to manage OSS licenses for CI/CD development
OpenChain: How to manage OSS licenses for CI/CD developmentOpenChain: How to manage OSS licenses for CI/CD development
OpenChain: How to manage OSS licenses for CI/CD developmentShane Coughlan
 
Toyota and Strategic Collaboration with the Community
Toyota and Strategic Collaboration with the CommunityToyota and Strategic Collaboration with the Community
Toyota and Strategic Collaboration with the CommunityShane Coughlan
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxLeon Anavi
 
Getting started with .NET Core on Linux
Getting started with .NET Core on LinuxGetting started with .NET Core on Linux
Getting started with .NET Core on LinuxJochen Kirstätter
 
Not my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructureNot my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructureYshay Yaacobi
 
Aliaksei Skobeleu "Taking Control Over Code Metrics"
Aliaksei Skobeleu "Taking Control Over Code Metrics"Aliaksei Skobeleu "Taking Control Over Code Metrics"
Aliaksei Skobeleu "Taking Control Over Code Metrics"LogeekNightUkraine
 
Contributing to Automotive Grade Linux (AGL) and GENIVI Development Platform ...
Contributing to Automotive Grade Linux (AGL) and GENIVI Development Platform ...Contributing to Automotive Grade Linux (AGL) and GENIVI Development Platform ...
Contributing to Automotive Grade Linux (AGL) and GENIVI Development Platform ...Leon Anavi
 
PDQ Programming Languages plus an overview of Alice - Frank Ducrest
PDQ Programming Languages plus an overview of Alice - Frank DucrestPDQ Programming Languages plus an overview of Alice - Frank Ducrest
PDQ Programming Languages plus an overview of Alice - Frank DucrestMatthew Turland
 
Docker, Microservices, and the Service Mesh
Docker, Microservices, and the Service MeshDocker, Microservices, and the Service Mesh
Docker, Microservices, and the Service MeshTony Pujals
 
What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? Shady Selim
 
Introduction on Mobile development
Introduction on Mobile developmentIntroduction on Mobile development
Introduction on Mobile developmentShady Selim
 
Native Script by Sebastian Witalec
Native Script by Sebastian WitalecNative Script by Sebastian Witalec
Native Script by Sebastian WitalecSimone Basso
 
Tech Days 2015: Multi-language Programming with GPRbuild
Tech Days 2015: Multi-language Programming with GPRbuildTech Days 2015: Multi-language Programming with GPRbuild
Tech Days 2015: Multi-language Programming with GPRbuildAdaCore
 
Setting up multilingual websites with Content Management Systems
Setting up multilingual websites with  Content Management SystemsSetting up multilingual websites with  Content Management Systems
Setting up multilingual websites with Content Management SystemsQabiria
 
VR API Evolution, Generic Interfaces, and Factoring
VR API Evolution, Generic Interfaces, and FactoringVR API Evolution, Generic Interfaces, and Factoring
VR API Evolution, Generic Interfaces, and FactoringRyan A. Pavlik
 
BUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open SourceBUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open SourceLinaro
 
Tech Days 2015: SPARK 2014
Tech Days 2015: SPARK 2014Tech Days 2015: SPARK 2014
Tech Days 2015: SPARK 2014AdaCore
 
OmegaT "Team Project" feature: a case study
OmegaT "Team Project" feature: a case studyOmegaT "Team Project" feature: a case study
OmegaT "Team Project" feature: a case studyQabiria
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and AndroidShady Selim
 

What's hot (20)

OpenChain: How to manage OSS licenses for CI/CD development
OpenChain: How to manage OSS licenses for CI/CD developmentOpenChain: How to manage OSS licenses for CI/CD development
OpenChain: How to manage OSS licenses for CI/CD development
 
Toyota and Strategic Collaboration with the Community
Toyota and Strategic Collaboration with the CommunityToyota and Strategic Collaboration with the Community
Toyota and Strategic Collaboration with the Community
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade Linux
 
Getting started with .NET Core on Linux
Getting started with .NET Core on LinuxGetting started with .NET Core on Linux
Getting started with .NET Core on Linux
 
Not my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructureNot my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructure
 
WordLift 2.0
WordLift 2.0WordLift 2.0
WordLift 2.0
 
Aliaksei Skobeleu "Taking Control Over Code Metrics"
Aliaksei Skobeleu "Taking Control Over Code Metrics"Aliaksei Skobeleu "Taking Control Over Code Metrics"
Aliaksei Skobeleu "Taking Control Over Code Metrics"
 
Contributing to Automotive Grade Linux (AGL) and GENIVI Development Platform ...
Contributing to Automotive Grade Linux (AGL) and GENIVI Development Platform ...Contributing to Automotive Grade Linux (AGL) and GENIVI Development Platform ...
Contributing to Automotive Grade Linux (AGL) and GENIVI Development Platform ...
 
PDQ Programming Languages plus an overview of Alice - Frank Ducrest
PDQ Programming Languages plus an overview of Alice - Frank DucrestPDQ Programming Languages plus an overview of Alice - Frank Ducrest
PDQ Programming Languages plus an overview of Alice - Frank Ducrest
 
Docker, Microservices, and the Service Mesh
Docker, Microservices, and the Service MeshDocker, Microservices, and the Service Mesh
Docker, Microservices, and the Service Mesh
 
What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How?
 
Introduction on Mobile development
Introduction on Mobile developmentIntroduction on Mobile development
Introduction on Mobile development
 
Native Script by Sebastian Witalec
Native Script by Sebastian WitalecNative Script by Sebastian Witalec
Native Script by Sebastian Witalec
 
Tech Days 2015: Multi-language Programming with GPRbuild
Tech Days 2015: Multi-language Programming with GPRbuildTech Days 2015: Multi-language Programming with GPRbuild
Tech Days 2015: Multi-language Programming with GPRbuild
 
Setting up multilingual websites with Content Management Systems
Setting up multilingual websites with  Content Management SystemsSetting up multilingual websites with  Content Management Systems
Setting up multilingual websites with Content Management Systems
 
VR API Evolution, Generic Interfaces, and Factoring
VR API Evolution, Generic Interfaces, and FactoringVR API Evolution, Generic Interfaces, and Factoring
VR API Evolution, Generic Interfaces, and Factoring
 
BUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open SourceBUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open Source
 
Tech Days 2015: SPARK 2014
Tech Days 2015: SPARK 2014Tech Days 2015: SPARK 2014
Tech Days 2015: SPARK 2014
 
OmegaT "Team Project" feature: a case study
OmegaT "Team Project" feature: a case studyOmegaT "Team Project" feature: a case study
OmegaT "Team Project" feature: a case study
 
Kotlin native for iOS and Android
Kotlin native for iOS and AndroidKotlin native for iOS and Android
Kotlin native for iOS and Android
 

Similar to Grilo: Easy Access to Online Multimedia Content (LinuxCon Europe 2012)

Software Heritage: Archiving the Free Software Commons for Fun & Profit
Software Heritage: Archiving the Free Software Commons for Fun & ProfitSoftware Heritage: Archiving the Free Software Commons for Fun & Profit
Software Heritage: Archiving the Free Software Commons for Fun & ProfitSpeck&Tech
 
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...Niklas Heidloff
 
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...Alessandro Binhara - Presentación en la Convención Internacional de Interoper...
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...Asociación Ecuatoriana de Software AESOFT
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsLeon Anavi
 
Stefano Fornari - Come creare e far crescere un progetto ed una community ope...
Stefano Fornari - Come creare e far crescere un progetto ed una community ope...Stefano Fornari - Come creare e far crescere un progetto ed una community ope...
Stefano Fornari - Come creare e far crescere un progetto ed una community ope...Better Software
 
Nokia and maemo in the new GNOME mobile context
 Nokia and maemo in the new GNOME mobile context Nokia and maemo in the new GNOME mobile context
Nokia and maemo in the new GNOME mobile contextqgil
 
Introduction to Python GUI development with Delphi for Python - Part 1: Del...
Introduction to Python GUI development with Delphi for Python - Part 1:   Del...Introduction to Python GUI development with Delphi for Python - Part 1:   Del...
Introduction to Python GUI development with Delphi for Python - Part 1: Del...Embarcadero Technologies
 
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
 
2014 10-14: GitHub plus FOSS == 1 million SPDX
2014 10-14: GitHub plus FOSS == 1 million SPDX2014 10-14: GitHub plus FOSS == 1 million SPDX
2014 10-14: GitHub plus FOSS == 1 million SPDXNuno Brito
 
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Amanda Lam
 
Primers or Reminders? The Effects of Existing Review Comments on Code Review
Primers or Reminders? The Effects of Existing Review Comments on Code ReviewPrimers or Reminders? The Effects of Existing Review Comments on Code Review
Primers or Reminders? The Effects of Existing Review Comments on Code ReviewDelft University of Technology
 
Complex Made Simple @ LF Energy Conference in Paris
Complex Made Simple @ LF Energy Conference in ParisComplex Made Simple @ LF Energy Conference in Paris
Complex Made Simple @ LF Energy Conference in ParisShane Coughlan
 
Python 101 For The Net Developer
Python 101 For The Net DeveloperPython 101 For The Net Developer
Python 101 For The Net DeveloperSarah Dutkiewicz
 
OpenChain Automation Case Study - September to December 2021
OpenChain Automation Case Study - September to December 2021OpenChain Automation Case Study - September to December 2021
OpenChain Automation Case Study - September to December 2021Shane Coughlan
 
Modern IoT and Embedded Linux Deployment - Berlin
Modern IoT and Embedded Linux Deployment - BerlinModern IoT and Embedded Linux Deployment - Berlin
Modern IoT and Embedded Linux Deployment - BerlinDjalal Harouni
 
<Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Ente...
<Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Ente...<Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Ente...
<Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Ente...Nicolas Brousse
 
PyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdfPyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdfEmbarcadero Technologies
 
Complex Made Simple @ Bird&Birds OpenChain Seminar
Complex Made Simple @ Bird&Birds OpenChain SeminarComplex Made Simple @ Bird&Birds OpenChain Seminar
Complex Made Simple @ Bird&Birds OpenChain SeminarShane Coughlan
 
Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project Alessandro Binhara
 

Similar to Grilo: Easy Access to Online Multimedia Content (LinuxCon Europe 2012) (20)

Software Heritage: Archiving the Free Software Commons for Fun & Profit
Software Heritage: Archiving the Free Software Commons for Fun & ProfitSoftware Heritage: Archiving the Free Software Commons for Fun & Profit
Software Heritage: Archiving the Free Software Commons for Fun & Profit
 
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
 
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...Alessandro Binhara - Presentación en la Convención Internacional de Interoper...
Alessandro Binhara - Presentación en la Convención Internacional de Interoper...
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
Stefano Fornari - Come creare e far crescere un progetto ed una community ope...
Stefano Fornari - Come creare e far crescere un progetto ed una community ope...Stefano Fornari - Come creare e far crescere un progetto ed una community ope...
Stefano Fornari - Come creare e far crescere un progetto ed una community ope...
 
Nokia and maemo in the new GNOME mobile context
 Nokia and maemo in the new GNOME mobile context Nokia and maemo in the new GNOME mobile context
Nokia and maemo in the new GNOME mobile context
 
Introduction to Python GUI development with Delphi for Python - Part 1: Del...
Introduction to Python GUI development with Delphi for Python - Part 1:   Del...Introduction to Python GUI development with Delphi for Python - Part 1:   Del...
Introduction to Python GUI development with Delphi for Python - Part 1: Del...
 
Asf icfoss-mentoring
Asf icfoss-mentoringAsf icfoss-mentoring
Asf icfoss-mentoring
 
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)
 
2014 10-14: GitHub plus FOSS == 1 million SPDX
2014 10-14: GitHub plus FOSS == 1 million SPDX2014 10-14: GitHub plus FOSS == 1 million SPDX
2014 10-14: GitHub plus FOSS == 1 million SPDX
 
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
 
Primers or Reminders? The Effects of Existing Review Comments on Code Review
Primers or Reminders? The Effects of Existing Review Comments on Code ReviewPrimers or Reminders? The Effects of Existing Review Comments on Code Review
Primers or Reminders? The Effects of Existing Review Comments on Code Review
 
Complex Made Simple @ LF Energy Conference in Paris
Complex Made Simple @ LF Energy Conference in ParisComplex Made Simple @ LF Energy Conference in Paris
Complex Made Simple @ LF Energy Conference in Paris
 
Python 101 For The Net Developer
Python 101 For The Net DeveloperPython 101 For The Net Developer
Python 101 For The Net Developer
 
OpenChain Automation Case Study - September to December 2021
OpenChain Automation Case Study - September to December 2021OpenChain Automation Case Study - September to December 2021
OpenChain Automation Case Study - September to December 2021
 
Modern IoT and Embedded Linux Deployment - Berlin
Modern IoT and Embedded Linux Deployment - BerlinModern IoT and Embedded Linux Deployment - Berlin
Modern IoT and Embedded Linux Deployment - Berlin
 
<Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Ente...
<Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Ente...<Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Ente...
<Programming> 2019 - ICW'19: The Issue of Monorepo and Polyrepo In Large Ente...
 
PyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdfPyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdf
 
Complex Made Simple @ Bird&Birds OpenChain Seminar
Complex Made Simple @ Bird&Birds OpenChain SeminarComplex Made Simple @ Bird&Birds OpenChain Seminar
Complex Made Simple @ Bird&Birds OpenChain Seminar
 
Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project
 

More from 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
 

More from 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
 

Recently uploaded

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
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
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Recently uploaded (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
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
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

Grilo: Easy Access to Online Multimedia Content (LinuxCon Europe 2012)

  • 1. Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona Juan A. Suarez Romero <jasuarez@igalia.com>
  • 2. Grilo: Easy Access to Online Multimedia Content Introduction Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 3. About me Juan A. Suárez Romero Computer engineer, Coruña University Working at Igalia since 2007 Experience in multimedia Involved in Maemo and MeeGo Co-author of MAFW Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 4. Outline 1 Current problems 2 Grilo 3 Conclusions 4 Thank you! Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 5. Grilo: Easy Access to Online Multimedia Content Current problems Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 6. Many sources of content Online/offline sources Different protocol/API Sources that do not provide content (meta-information) Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 7. Many different devices Different screen sizes Different hardware components Different platforms Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 8. Current approach Develop one application per service Each application with different UX Not easily scalable: new sources require new applications Expensive maintenance In some cases, one application attending more than one service Services of the same type (e.g., Photo storage service) Define a common layer between application and the service Not shared effort! Reinventing the wheel all time Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 9. What we need? Stop reinventing the wheel! Platform-level solution for accessing multimedia content Provide homogeneous access to all content Scalable with new sources of information Collaboration! Consistent user experience Users care about the content, not the provider Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 10. Grilo: Easy Access to Online Multimedia Content Grilo Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 11. What is Grilo? Framework focused on making discovery and browsing easy for application developers A single, high-level API for all the sources A collection plugins that provides access to the sources An extendable system to provide more plugins http://live.gnome.org/Grilo Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 12. Architecture overview Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 13. Media types and Keys Collection of keys and values Several keys provided by core: title, URL, author, . . . Plugins can extend them with new keys Support for multiple values Support for relations between keys Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 14. Plugins and Sources Key component of the system Plugins are dynamically loaded by core Plugins create one or more sources Sources support multiple operations Browse, Search, Store, Remove, . . . All operations are optional Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 15. Plugins and Sources Sources perform two main roles: Provide new media content Enrich already existent media content Sources collaborate among them to solve the requests Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 16. Example of collaboration Developer wants to show content from UPnP server and play it They need the url to play, a title and a thumbnail to show 1 Perform the request through core API 2 Core checks if the requested keys are supported by the source thumbnail is not supported by UPnP source 3 Checks which sources are able to resolve thumbnail key CoverArt source is able to But it requires to know two keys: artist and album Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 17. Example of collaboration 4 Core checks if those required keys are supported by original UPnP source If not, repeat the process as in the case of thumbnail 5 Perform the request in the UPnP source with the keys requested plus the new keys 6 When the results arrive, send them to CoverArt source to include the thumbnail 7 Send the final results to application Developer only needs to deal with one provider Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 18. Implementing applications Main language is C Other languages supported through gobject introspection (Python, Javascript, Vala, . . . ) Support for C++ (grilomm) Some initial support for Qt/QML Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 19. Code example 1 # ! / usr / bin / python 2 3 import sys 4 from g i . r e p o s i t o r y import Grl 5 6 def main ( argv ) : 7 i f l e n ( argv ) < 1 : 8 p r i n t " Usage : m a k e _ l i s t . py < s e a r c h _ t e x t > " 9 return 1 10 11 Grl . i n i t ( [ ] ) 12 r e g i s t r y = Grl . R e g i s t r y . g e t _ d e f a u l t ( ) 13 registry . load_all_plugins ( ) 14 keys = [ Grl .METADATA_KEY_DURATION, 15 Grl . METADATA_KEY_TITLE, 16 Grl .METADATA_KEY_URL] 17 o p t i o n s = Grl . OperationOptions . new ( None ) 18 options . set_count ( 2 0 0 ) ; 19 r e s u l t s = Grl . m u l t i p l e _ s e a r c h _ s y n c ( None , argv [ 0 ] , keys , o p t i o n s ) 20 21 p r i n t " #EXT3MU" 22 f o r media in r e s u l t s : 23 i f i s i n s t a n c e ( media , Grl . MediaAudio ) : 24 p r i n t " #EXT3INF : " + s t r ( media . g e t _ d u r a t i o n ( ) ) + " , " + media . g e t _ t i t l e ( ) 25 p r i n t media . g e t _ u r l ( ) 26 27 i f __name__ == " __main__ " : 28 main ( sys . argv [ 1 : ] ) Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 20. Implementing plugins Plugins must be written in C Adding support for writing plugins declaratively (in XML) Adding support for other languages (Lua) Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 21. Grilo: Easy Access to Online Multimedia Content Conclusions Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 22. Resources Wiki http://live.gnome.org/Grilo Source code http://git.gnome.org/browse/grilo http://git.gnome.org/browse/grilo-plugins http://git.gnome.org/browse/grilomm IRC #grilo at irc.gnome.org Mailing list http://mail.gnome.org/mailman/listinfo/ grilo-list Do not miss our booth in ground floor (in front of Rossini room) Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 23. Grilo: Easy Access to Online Multimedia Content Thank you! Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona
  • 24. Images used in this presentation 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 Grilo: Easy Access to Online Multimedia Content LinuxCon Europe 2012, Barcelona