SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
GRILO

static void
_f_do_barnacle_install_properties(GObjectClass
*gobject_class)
{
GParamSpec *pspec;
/* Party code attribute */
pspec = g_param_spec_uint64
(F_DO_BARNACLE_CODE,
"Barnacle code.",
"Barnacle code",
0,
G_MAXUINT64,
G_MAXUINT64 /*
default value */,
G_PARAM_READABLE
| G_PARAM_WRITABLE |
G_PARAM_PRIVATE);

Easing integration of multimedia
content in applications

g_object_class_install_property (gobject_class,
F_DO_BARNACLE_PROP_CODE,

LinuxTag, Berlin, June 2010

Iago Toral Quiroga
itoral@igalia.com
About myself
➔

Working at Igalia since 2003.

➔

Involved with GNOME and Maemo.
➔

MAFW, the Media Application Framework for Maemo.

➔

GStreamer, minor contributions.

➔

Grilo.
Modern Media Applications
- Service Integration -
Modern Media Applications
➔

Integration of content from multiple sources
YouTube, Jamendo, Vimeo, SHOUTCast, Last.fm, Local
media, iPod, UPnP, Podcasts, ...
➔ Each source requires a lot of work:
➔

➔
➔

➔

➔

➔

Learning: many protocols, APIs, support libraries, particularities, etc
Design: how do we communicate the UI with all these different
services? plugin API? Do we have the flexibility we need? etc
Implementation: we need UI and service-logic implementation on the
application side for each on them.
Maintenance: we have to keep the implementation updated and fix
bugs, react to changes in the protocols, the serivce APIs, etc

Many applications doing all this work independently
➔
➔

Application specific solutions
Can't we reuse more code?
Modern Media Applications
➔

Platform support for media source abstraction.
Just the same GStreamer does for media playback.
➔ Provide a framework that exposes a single, easy to
understand and use API to deal with all the services.
➔ Hide all the complexity from the UI developers.
➔ Central point for platform developers to work together.
➔

➔
➔
➔

➔

UI developers to focus on UI development.
Platform developers to focus on service integration and support.
Code a service once, reuse it in many applications.

Great complement to existing multimedia frameworks.
➔
➔
➔

The platform would be more appealing to third party developers.
This framework provides the media.
GStreamer (or others) provide the means to play it back.
A solution for Maemo
- MAFW -
MAFW and Maemo
➔

MAFW: Media Application Framework for
Maemo.
Developed for its Fremantle version, targetting the N900.
➔ MAFW provides platform support in Maemo for the
integration of multimedia content in applications.
➔ But it is too Maemo / Fremantle / N900 specific.
➔

➔
➔

➔

Developed with Maemo, Fremantle and the N900 in mind.
Not so easy to reuse that work in other platforms / products.

Its development is not as open as it could be.
➔
➔

Decissions are not made through public channels.
It is not easy for community developers to get involved.
A solution for everyone:
Grilo
- Overview -
Grilo: Overview
➔

A framework for easing access to multimedia
content from applications.

➔

Platform / application agnostic.

➔

Open development model.

➔

Free Software, licensed under the LGPL.

➔

C, Glib, GObject.
Grilo: Overview
Grilo: Overview
➔

High level, easy to use APIs.
➔

➔

Lowers learning curve.
➔

➔

No need to learn all those different protocols, technologies
and service particularities, just learn how to use Grilo.

Lowers implementation effort.
➔

➔

Browse(), Search(), Metadata(), etc

Most of the work is done in Grilo and supporting libraries.

Reduces and shares maintenance needs.
Grilo and platform developers maintain the services.
➔ Application developers maintain their UI frontends
➔
Grilo: Overview
➔

Development in Grilo benefits all applications.
New plugins
➔ New features
➔ Bug fixes
➔ Performance improvements
➔ Etc
➔

➔

More efficient approach to development.
Write a backend once, reuse it everywhere. No more
application specific solutions.
➔ More developer time to work on better services for everyone.
➔
Grilo
- Current Status -
Grilo: Current Status
➔

Basic APIs are defined:
Browse
➔ Search
➔ Query
➔ Cancelation
➔ Metadata resolution
➔ Configuration
➔ Source / plugin loading and lookup
➔

➔

But it is not API stable yet
We are still fine tunning the APIs
➔ We are still adding more features
➔
Grilo: Current Status
➔

Available plugins:
Youtube
➔ Vimeo
➔ Jamendo
➔ Apple Trailers
➔ Flickr
➔ Podcasts
➔ SHOUTCast
➔ UPnP
➔ Bookmarks
➔ Filesystem
➔

Last.fm album art
➔ Metadata store
➔
Grilo: Current Status
➔

Bindings
Vala support
➔ Experimental introspection support
➔

➔

Documentation
Available in the project repository (--enable-gtk-doc)
➔ Overview
➔ Quick start guide
➔ Code examples
➔ API documentation
➔
Grilo: Current Status
➔

Test UI (grilo-test-ui)
A GTK+ playground application.
➔ Useful for plugin testing.
➔

➔

Related sub-projects:
Totem plugin.
➔ Rythmbox plugin.
➔ Grilo-mediaserver (rygel-grilo)
➔ MAFW-grilo
➔ Clutter Grilo player
➔
Collaborate with us!
Collaborate with us!
➔

Project hosted by GNOME
Wiki: http://live.gnome.org/Grilo
➔ Git repositories:
➔

➔
➔
➔

git://git.gnome.org/grilo
git://git.gnome.org/grilo-plugins
git://git.gnome.org/rygel-grilo

IRC: grilo @ GIMPNet
➔ Mailing list:
➔

➔

➔

http://mail.gnome.org/mailman/listinfo/grilo-list

Bugzilla:
➔
➔

http://bugzilla.gnome.org
Category: Other, Product: grilo
Demos
Grilo: Demos
➔

Grilo Test UI
➔

➔

Totem plugin
➔

➔

A plugin for the Totem video player.

Rhythmbox plugin
➔

➔

A GTK+ playground for testing purposes.

A plugin for the Rhythmbox audio player.

Grilo-mediaserver
A media server implementing GNOME's media server
specifications.
➔ Integration with Rygel (GNOME's UPnP media server).
➔
Thanks!

Mais conteúdo relacionado

Semelhante a Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)

Grilo: Integrating Multimedia Content in Applications (ELCE 2010)
Grilo: Integrating Multimedia Content in Applications (ELCE 2010)Grilo: Integrating Multimedia Content in Applications (ELCE 2010)
Grilo: Integrating Multimedia Content in Applications (ELCE 2010)Igalia
 
Rejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainRejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainŁukasz Piątkowski
 
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
 
Advantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksKaty Slemon
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textToma Velev
 
It's Not Continuous Delivery If You Can't Deploy Right Now
It's Not Continuous Delivery If You Can't Deploy Right NowIt's Not Continuous Delivery If You Can't Deploy Right Now
It's Not Continuous Delivery If You Can't Deploy Right NowKen Mugrage
 
Scaling applications with go
Scaling applications with goScaling applications with go
Scaling applications with goVimlesh Sharma
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to GoSimon Hewitt
 
GitHub Actions - using Free Oracle Cloud Infrastructure (OCI)
GitHub Actions - using Free Oracle Cloud Infrastructure (OCI)GitHub Actions - using Free Oracle Cloud Infrastructure (OCI)
GitHub Actions - using Free Oracle Cloud Infrastructure (OCI)Phil Wilkins
 
Sana_Final_Project_Documentation
Sana_Final_Project_DocumentationSana_Final_Project_Documentation
Sana_Final_Project_DocumentationSameer Srinivas
 
GUI toolkits comparison for python
GUI toolkits comparison for pythonGUI toolkits comparison for python
GUI toolkits comparison for pythonDarren Su
 
Go_ Building Web Applications ( PDFDrive.com ).pdf
Go_ Building Web Applications ( PDFDrive.com ).pdfGo_ Building Web Applications ( PDFDrive.com ).pdf
Go_ Building Web Applications ( PDFDrive.com ).pdfRicardoSousa631355
 
TIMES cloud Service TIMES/MIRO App
TIMES cloud Service  TIMES/MIRO AppTIMES cloud Service  TIMES/MIRO App
TIMES cloud Service TIMES/MIRO AppIEA-ETSAP
 
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...What is Django | Django Tutorial for Beginners | Python Django Training | Edu...
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...Edureka!
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Figma – What Makes it Such a Popular Design Tool.pdf
Figma – What Makes it Such a Popular Design Tool.pdfFigma – What Makes it Such a Popular Design Tool.pdf
Figma – What Makes it Such a Popular Design Tool.pdfWebGuru Infosystems Pvt. Ltd.
 
Developer Nirvana with IBM Bluemix™
Developer Nirvana with IBM Bluemix™Developer Nirvana with IBM Bluemix™
Developer Nirvana with IBM Bluemix™IBM
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024Cloud Native NoVA
 

Semelhante a Grilo: Easing integration of multimedia content in applications (LinuxTag 2010) (20)

Grilo: Integrating Multimedia Content in Applications (ELCE 2010)
Grilo: Integrating Multimedia Content in Applications (ELCE 2010)Grilo: Integrating Multimedia Content in Applications (ELCE 2010)
Grilo: Integrating Multimedia Content in Applications (ELCE 2010)
 
Rejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainRejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform Gain
 
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...
 
Advantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworks
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - text
 
It's Not Continuous Delivery If You Can't Deploy Right Now
It's Not Continuous Delivery If You Can't Deploy Right NowIt's Not Continuous Delivery If You Can't Deploy Right Now
It's Not Continuous Delivery If You Can't Deploy Right Now
 
Scaling applications with go
Scaling applications with goScaling applications with go
Scaling applications with go
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
GitHub Actions - using Free Oracle Cloud Infrastructure (OCI)
GitHub Actions - using Free Oracle Cloud Infrastructure (OCI)GitHub Actions - using Free Oracle Cloud Infrastructure (OCI)
GitHub Actions - using Free Oracle Cloud Infrastructure (OCI)
 
Sana_Final_Project_Documentation
Sana_Final_Project_DocumentationSana_Final_Project_Documentation
Sana_Final_Project_Documentation
 
GUI toolkits comparison for python
GUI toolkits comparison for pythonGUI toolkits comparison for python
GUI toolkits comparison for python
 
Custom plugin
Custom pluginCustom plugin
Custom plugin
 
Grails Custom Plugin
Grails Custom PluginGrails Custom Plugin
Grails Custom Plugin
 
Go_ Building Web Applications ( PDFDrive.com ).pdf
Go_ Building Web Applications ( PDFDrive.com ).pdfGo_ Building Web Applications ( PDFDrive.com ).pdf
Go_ Building Web Applications ( PDFDrive.com ).pdf
 
TIMES cloud Service TIMES/MIRO App
TIMES cloud Service  TIMES/MIRO AppTIMES cloud Service  TIMES/MIRO App
TIMES cloud Service TIMES/MIRO App
 
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...What is Django | Django Tutorial for Beginners | Python Django Training | Edu...
What is Django | Django Tutorial for Beginners | Python Django Training | Edu...
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Figma – What Makes it Such a Popular Design Tool.pdf
Figma – What Makes it Such a Popular Design Tool.pdfFigma – What Makes it Such a Popular Design Tool.pdf
Figma – What Makes it Such a Popular Design Tool.pdf
 
Developer Nirvana with IBM Bluemix™
Developer Nirvana with IBM Bluemix™Developer Nirvana with IBM Bluemix™
Developer Nirvana with IBM Bluemix™
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
 

Mais de Igalia

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEIgalia
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesIgalia
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceIgalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfIgalia
 
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
 

Mais de Igalia (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
 
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
 

Último

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 

Último (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 

Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)

  • 1. GRILO static void _f_do_barnacle_install_properties(GObjectClass *gobject_class) { GParamSpec *pspec; /* Party code attribute */ pspec = g_param_spec_uint64 (F_DO_BARNACLE_CODE, "Barnacle code.", "Barnacle code", 0, G_MAXUINT64, G_MAXUINT64 /* default value */, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_PRIVATE); Easing integration of multimedia content in applications g_object_class_install_property (gobject_class, F_DO_BARNACLE_PROP_CODE, LinuxTag, Berlin, June 2010 Iago Toral Quiroga itoral@igalia.com
  • 2. About myself ➔ Working at Igalia since 2003. ➔ Involved with GNOME and Maemo. ➔ MAFW, the Media Application Framework for Maemo. ➔ GStreamer, minor contributions. ➔ Grilo.
  • 3. Modern Media Applications - Service Integration -
  • 4. Modern Media Applications ➔ Integration of content from multiple sources YouTube, Jamendo, Vimeo, SHOUTCast, Last.fm, Local media, iPod, UPnP, Podcasts, ... ➔ Each source requires a lot of work: ➔ ➔ ➔ ➔ ➔ ➔ Learning: many protocols, APIs, support libraries, particularities, etc Design: how do we communicate the UI with all these different services? plugin API? Do we have the flexibility we need? etc Implementation: we need UI and service-logic implementation on the application side for each on them. Maintenance: we have to keep the implementation updated and fix bugs, react to changes in the protocols, the serivce APIs, etc Many applications doing all this work independently ➔ ➔ Application specific solutions Can't we reuse more code?
  • 5. Modern Media Applications ➔ Platform support for media source abstraction. Just the same GStreamer does for media playback. ➔ Provide a framework that exposes a single, easy to understand and use API to deal with all the services. ➔ Hide all the complexity from the UI developers. ➔ Central point for platform developers to work together. ➔ ➔ ➔ ➔ ➔ UI developers to focus on UI development. Platform developers to focus on service integration and support. Code a service once, reuse it in many applications. Great complement to existing multimedia frameworks. ➔ ➔ ➔ The platform would be more appealing to third party developers. This framework provides the media. GStreamer (or others) provide the means to play it back.
  • 6. A solution for Maemo - MAFW -
  • 7. MAFW and Maemo ➔ MAFW: Media Application Framework for Maemo. Developed for its Fremantle version, targetting the N900. ➔ MAFW provides platform support in Maemo for the integration of multimedia content in applications. ➔ But it is too Maemo / Fremantle / N900 specific. ➔ ➔ ➔ ➔ Developed with Maemo, Fremantle and the N900 in mind. Not so easy to reuse that work in other platforms / products. Its development is not as open as it could be. ➔ ➔ Decissions are not made through public channels. It is not easy for community developers to get involved.
  • 8. A solution for everyone: Grilo - Overview -
  • 9. Grilo: Overview ➔ A framework for easing access to multimedia content from applications. ➔ Platform / application agnostic. ➔ Open development model. ➔ Free Software, licensed under the LGPL. ➔ C, Glib, GObject.
  • 11. Grilo: Overview ➔ High level, easy to use APIs. ➔ ➔ Lowers learning curve. ➔ ➔ No need to learn all those different protocols, technologies and service particularities, just learn how to use Grilo. Lowers implementation effort. ➔ ➔ Browse(), Search(), Metadata(), etc Most of the work is done in Grilo and supporting libraries. Reduces and shares maintenance needs. Grilo and platform developers maintain the services. ➔ Application developers maintain their UI frontends ➔
  • 12. Grilo: Overview ➔ Development in Grilo benefits all applications. New plugins ➔ New features ➔ Bug fixes ➔ Performance improvements ➔ Etc ➔ ➔ More efficient approach to development. Write a backend once, reuse it everywhere. No more application specific solutions. ➔ More developer time to work on better services for everyone. ➔
  • 14. Grilo: Current Status ➔ Basic APIs are defined: Browse ➔ Search ➔ Query ➔ Cancelation ➔ Metadata resolution ➔ Configuration ➔ Source / plugin loading and lookup ➔ ➔ But it is not API stable yet We are still fine tunning the APIs ➔ We are still adding more features ➔
  • 15. Grilo: Current Status ➔ Available plugins: Youtube ➔ Vimeo ➔ Jamendo ➔ Apple Trailers ➔ Flickr ➔ Podcasts ➔ SHOUTCast ➔ UPnP ➔ Bookmarks ➔ Filesystem ➔ Last.fm album art ➔ Metadata store ➔
  • 16. Grilo: Current Status ➔ Bindings Vala support ➔ Experimental introspection support ➔ ➔ Documentation Available in the project repository (--enable-gtk-doc) ➔ Overview ➔ Quick start guide ➔ Code examples ➔ API documentation ➔
  • 17. Grilo: Current Status ➔ Test UI (grilo-test-ui) A GTK+ playground application. ➔ Useful for plugin testing. ➔ ➔ Related sub-projects: Totem plugin. ➔ Rythmbox plugin. ➔ Grilo-mediaserver (rygel-grilo) ➔ MAFW-grilo ➔ Clutter Grilo player ➔
  • 19. Collaborate with us! ➔ Project hosted by GNOME Wiki: http://live.gnome.org/Grilo ➔ Git repositories: ➔ ➔ ➔ ➔ git://git.gnome.org/grilo git://git.gnome.org/grilo-plugins git://git.gnome.org/rygel-grilo IRC: grilo @ GIMPNet ➔ Mailing list: ➔ ➔ ➔ http://mail.gnome.org/mailman/listinfo/grilo-list Bugzilla: ➔ ➔ http://bugzilla.gnome.org Category: Other, Product: grilo
  • 20. Demos
  • 21. Grilo: Demos ➔ Grilo Test UI ➔ ➔ Totem plugin ➔ ➔ A plugin for the Totem video player. Rhythmbox plugin ➔ ➔ A GTK+ playground for testing purposes. A plugin for the Rhythmbox audio player. Grilo-mediaserver A media server implementing GNOME's media server specifications. ➔ Integration with Rygel (GNOME's UPnP media server). ➔