SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
GStreamer: An overview
Rodrigo Costa
Pontifical Catholic University of Rio de Janeiro
TeleM´ıdia Lab.
rodrigocosta@telemidia.puc-rio.br
April 16, 2015
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 1 / 22
Overview
1 GStreamer
Overview
Pipelines
Basic Concepts
Synchronization
Examples
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 2 / 22
What is GStreamer?
A framework for multimedia applications
Linux, Windows, OS X, . . .
10+ years old project
Similar to DirectShow, QuickTime, etc.
Designed to make it easy to write applications that handle audiovisual
contents
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 3 / 22
GStreamer overview
What GStreamer NOT is?
A codec implementation
An application itself
Features
Fully extensible by plugins
Flexible
Low and high level API
Often wraps other libraries (decoders, encoders, filters, etc.)
Integration with other frameworks and projects
WebKit, Firefox, Gnome, Android, iOS, . . .
Pipeline-based
Bindings to multiple languages
C/C++, Python, Java, Ruby, Pearl, etc.
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 4 / 22
GStreamer overview
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 5 / 22
Design
The fundamental design comes from the video pipeline at Oregon
Graduate Institute: Infopipes
Infopipes (2001)
High-level abstraction for building blocks that handle information
flows
Goal: simplify the task of building distributed streaming
applications by providing basic elements such as pipes, filters, buffers,
and pumps
Motivated by the lack of support of RPC-like technologies to develop
streaming and processing of distributed information
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 6 / 22
Infopipes
Infopipe example:
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 7 / 22
GStreamer pipeline
GStreamer pipeline example:
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 8 / 22
Basic Concepts
Elements
The most important class of objects in GStreamer
Each one has a specific function: read a file, receive data from
network, decode, multiplex, present the data, . . .
A chain of elements is created and linked together for the data to
flow through it
GStreamer ships with a large set of elements
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 9 / 22
Basic Concepts
Elements (cont)
Source
Filters, converters, demuxers, muxers, codecs
Sink
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 10 / 22
Basic Concepts
Pads
Connection points between elements
Source pads produce data
Sink pads consume data
Data always flows from src to sink pads
Can operate in pull or push mode
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 11 / 22
Basic Concepts
Pads (cont)
Each pad have a predefined set of properties called Capabilities or
Caps
Caps are used to validate the communication between elements (caps
restrict the type of data that flows through it)
A source pad can only be linked to a sink pad if their allowed data
types are compatible
For instance, a source pad that produces a video stream cannot be
linked to a sink pad that consumes audio streams
Elements can negotiate with each other on format to use (caps
negotiation)
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 12 / 22
Basic Concepts
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 13 / 22
Basic Concepts
Bins
Elements can be grouped into a container called bin
It can be manipulated as it were an element
It also manages the state of its children elements
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 14 / 22
Basic Concepts
Pipeline
A pipeline is a top-level bin
It provides a bus for communication purposes
It manages the playout synchronization
It runs in a separate thread
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 15 / 22
Basic Concepts
Communication:
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 16 / 22
Synchronization
GstClock objects provide clock time
GstClock always returns the absolute-time
The pipeline maintains a GstClock object and a base-time (time when
it goes to PLAYING state)
running-time = absolute-time - base-time
Sink elements are responsible for present the buffers in their
respective presentation time
If a buffer is delayed, the sink drops it
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 17 / 22
Pipeline Example
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 18 / 22
Example 1
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 19 / 22
Example 2
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 20 / 22
Example 3
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 21 / 22
Example 4
Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 22 / 22

Mais conteúdo relacionado

Mais procurados

Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDPDaniel T. Lee
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축철구 김
 
Ipmi Server Management
Ipmi Server ManagementIpmi Server Management
Ipmi Server Managementsjtu1234567
 
A crash course in CRUSH
A crash course in CRUSHA crash course in CRUSH
A crash course in CRUSHSage Weil
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsBrendan Gregg
 
CI/CD 101
CI/CD 101CI/CD 101
CI/CD 101djdule
 
How Linux Processes Your Network Packet - Elazar Leibovich
How Linux Processes Your Network Packet - Elazar LeibovichHow Linux Processes Your Network Packet - Elazar Leibovich
How Linux Processes Your Network Packet - Elazar LeibovichDevOpsDays Tel Aviv
 
Systemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveSystemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveAlison Chaiken
 
Yocto Project introduction
Yocto Project introductionYocto Project introduction
Yocto Project introductionYi-Hsiu Hsu
 
Introduction to DPDK
Introduction to DPDKIntroduction to DPDK
Introduction to DPDKKernel TLV
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectYen-Chin Lee
 
Continuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIContinuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIDavid Hahn
 
Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking ExplainedThomas Graf
 

Mais procurados (20)

Linux Systems: Getting started with setting up an Embedded platform
Linux Systems: Getting started with setting up an Embedded platformLinux Systems: Getting started with setting up an Embedded platform
Linux Systems: Getting started with setting up an Embedded platform
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
 
Gitlab CI/CD
Gitlab CI/CDGitlab CI/CD
Gitlab CI/CD
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축
 
Ipmi Server Management
Ipmi Server ManagementIpmi Server Management
Ipmi Server Management
 
A crash course in CRUSH
A crash course in CRUSHA crash course in CRUSH
A crash course in CRUSH
 
Linux PV on HVM
Linux PV on HVMLinux PV on HVM
Linux PV on HVM
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
 
Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)
 
CI/CD 101
CI/CD 101CI/CD 101
CI/CD 101
 
How Linux Processes Your Network Packet - Elazar Leibovich
How Linux Processes Your Network Packet - Elazar LeibovichHow Linux Processes Your Network Packet - Elazar Leibovich
How Linux Processes Your Network Packet - Elazar Leibovich
 
Systemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveSystemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to love
 
Yocto Project introduction
Yocto Project introductionYocto Project introduction
Yocto Project introduction
 
Introduction to DPDK
Introduction to DPDKIntroduction to DPDK
Introduction to DPDK
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
 
Continuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIContinuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CI
 
Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking Explained
 
Podman rootless containers
Podman rootless containersPodman rootless containers
Podman rootless containers
 
GitOps w/argocd
GitOps w/argocdGitOps w/argocd
GitOps w/argocd
 

Destaque

About GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginnersAbout GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginnersShota TAMURA
 
Gstreamer plugin devpt_1
Gstreamer plugin devpt_1Gstreamer plugin devpt_1
Gstreamer plugin devpt_1shiv_nj
 
Tg discussion guide90
Tg discussion guide90Tg discussion guide90
Tg discussion guide90lschmidt1170
 
Geog 5 fa 2012 schmidt fri
Geog 5 fa 2012 schmidt friGeog 5 fa 2012 schmidt fri
Geog 5 fa 2012 schmidt frilschmidt1170
 
Isabelle: Not Only a Proof Assistant
Isabelle: Not Only a Proof AssistantIsabelle: Not Only a Proof Assistant
Isabelle: Not Only a Proof AssistantAchim D. Brucker
 
學生學習歷程簡報
學生學習歷程簡報學生學習歷程簡報
學生學習歷程簡報Fang-fang
 
Pi3 Ef 7 Pe Revision Class
Pi3 Ef 7 Pe Revision ClassPi3 Ef 7 Pe Revision Class
Pi3 Ef 7 Pe Revision ClassAna Menezes
 
오픈세미나 플러그인만들기(한번더)
오픈세미나 플러그인만들기(한번더)오픈세미나 플러그인만들기(한번더)
오픈세미나 플러그인만들기(한번더)승훈 오
 
Tutorial para crear cuenta en slideshare
Tutorial para crear cuenta en slideshareTutorial para crear cuenta en slideshare
Tutorial para crear cuenta en slideshareAnnie Nitzschke Peña
 

Destaque (20)

About GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginnersAbout GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginners
 
Gstreamer plugin devpt_1
Gstreamer plugin devpt_1Gstreamer plugin devpt_1
Gstreamer plugin devpt_1
 
GStreamer Instruments
GStreamer InstrumentsGStreamer Instruments
GStreamer Instruments
 
Building Digital TV Support in Linux
Building Digital TV Support in LinuxBuilding Digital TV Support in Linux
Building Digital TV Support in Linux
 
CV_SANJAY SOHIL
CV_SANJAY SOHILCV_SANJAY SOHIL
CV_SANJAY SOHIL
 
Device driver
Device driverDevice driver
Device driver
 
Tg discussion guide90
Tg discussion guide90Tg discussion guide90
Tg discussion guide90
 
Geog 5 fa 2012 schmidt fri
Geog 5 fa 2012 schmidt friGeog 5 fa 2012 schmidt fri
Geog 5 fa 2012 schmidt fri
 
Kpi publikovani 2
Kpi publikovani 2Kpi publikovani 2
Kpi publikovani 2
 
Isabelle: Not Only a Proof Assistant
Isabelle: Not Only a Proof AssistantIsabelle: Not Only a Proof Assistant
Isabelle: Not Only a Proof Assistant
 
Rreflexion cuento
Rreflexion cuentoRreflexion cuento
Rreflexion cuento
 
Heap and Partners
Heap and PartnersHeap and Partners
Heap and Partners
 
學生學習歷程簡報
學生學習歷程簡報學生學習歷程簡報
學生學習歷程簡報
 
Pi3 Ef 7 Pe Revision Class
Pi3 Ef 7 Pe Revision ClassPi3 Ef 7 Pe Revision Class
Pi3 Ef 7 Pe Revision Class
 
Grouping objects
Grouping objectsGrouping objects
Grouping objects
 
오픈세미나 플러그인만들기(한번더)
오픈세미나 플러그인만들기(한번더)오픈세미나 플러그인만들기(한번더)
오픈세미나 플러그인만들기(한번더)
 
Tutorial para crear cuenta en slideshare
Tutorial para crear cuenta en slideshareTutorial para crear cuenta en slideshare
Tutorial para crear cuenta en slideshare
 
CV_Jeeshan CPE
CV_Jeeshan CPECV_Jeeshan CPE
CV_Jeeshan CPE
 
Brain maturation
Brain maturationBrain maturation
Brain maturation
 
r3-4-2009f_xts5000_new
r3-4-2009f_xts5000_newr3-4-2009f_xts5000_new
r3-4-2009f_xts5000_new
 

Semelhante a Gstreamer: an Overview

gstreamerv2-150416084351-conversion-gate02.pptx
gstreamerv2-150416084351-conversion-gate02.pptxgstreamerv2-150416084351-conversion-gate02.pptx
gstreamerv2-150416084351-conversion-gate02.pptxAkshitAgiwal1
 
Real-time user profiling based on Spark streaming and HBase by Arkadiusz Jach...
Real-time user profiling based on Spark streaming and HBase by Arkadiusz Jach...Real-time user profiling based on Spark streaming and HBase by Arkadiusz Jach...
Real-time user profiling based on Spark streaming and HBase by Arkadiusz Jach...Big Data Spain
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key conceptsICS
 
IPTC News Exchange Formats Working Party Autumn 2012
IPTC News Exchange Formats Working Party Autumn 2012IPTC News Exchange Formats Working Party Autumn 2012
IPTC News Exchange Formats Working Party Autumn 2012Stuart Myles
 
Ontology of citizen science @ Siena 2016 11 24
Ontology of citizen science @ Siena 2016 11 24Ontology of citizen science @ Siena 2016 11 24
Ontology of citizen science @ Siena 2016 11 24Luigi Ceccaroni
 
NYC Titanium User's Group - tiConf US Revisited
NYC Titanium User's Group - tiConf US RevisitedNYC Titanium User's Group - tiConf US Revisited
NYC Titanium User's Group - tiConf US RevisitedJohn Oliva
 
Nubomedia IETF96 hackthon - Kurento
Nubomedia IETF96 hackthon - KurentoNubomedia IETF96 hackthon - Kurento
Nubomedia IETF96 hackthon - KurentoIvan Gracia
 
FOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with KurentoFOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with KurentoLuis Lopez
 
ICWE2017 BigDataEurope
ICWE2017 BigDataEuropeICWE2017 BigDataEurope
ICWE2017 BigDataEuropeBigData_Europe
 
Live topic generation from event streams
Live topic generation from event streamsLive topic generation from event streams
Live topic generation from event streamsRaphael Troncy
 
Making an OpenSource Automotive IVI Media Manager
Making an OpenSource Automotive IVI Media ManagerMaking an OpenSource Automotive IVI Media Manager
Making an OpenSource Automotive IVI Media ManagerICS
 
Realtime statistics using Java, Kafka and Graphite
Realtime statistics using Java, Kafka and GraphiteRealtime statistics using Java, Kafka and Graphite
Realtime statistics using Java, Kafka and GraphiteHung Nguyen
 
Open source IoT
Open source IoTOpen source IoT
Open source IoTIoT613
 
Ontology Summit - Track D Standards Summary & Provocative Use Cases
Ontology Summit - Track D Standards Summary & Provocative Use CasesOntology Summit - Track D Standards Summary & Provocative Use Cases
Ontology Summit - Track D Standards Summary & Provocative Use CasesMark Underwood
 
Fast App development with SwellRT
Fast App development  with SwellRTFast App development  with SwellRT
Fast App development with SwellRTSamer Hassan
 
How to Gain Visibility into Containers, VM’s and Multi-Cloud Environments Usi...
How to Gain Visibility into Containers, VM’s and Multi-Cloud Environments Usi...How to Gain Visibility into Containers, VM’s and Multi-Cloud Environments Usi...
How to Gain Visibility into Containers, VM’s and Multi-Cloud Environments Usi...InfluxData
 
NASA Web World Wind: welcome to the new era of virtual globes
NASA Web World Wind: welcome to the new era of virtual globes NASA Web World Wind: welcome to the new era of virtual globes
NASA Web World Wind: welcome to the new era of virtual globes Maria Antonia Brovelli
 
OpenTelemetry For Architects
OpenTelemetry For ArchitectsOpenTelemetry For Architects
OpenTelemetry For ArchitectsKevin Brockhoff
 
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...ITCamp
 

Semelhante a Gstreamer: an Overview (20)

gstreamerv2-150416084351-conversion-gate02.pptx
gstreamerv2-150416084351-conversion-gate02.pptxgstreamerv2-150416084351-conversion-gate02.pptx
gstreamerv2-150416084351-conversion-gate02.pptx
 
Real-time user profiling based on Spark streaming and HBase by Arkadiusz Jach...
Real-time user profiling based on Spark streaming and HBase by Arkadiusz Jach...Real-time user profiling based on Spark streaming and HBase by Arkadiusz Jach...
Real-time user profiling based on Spark streaming and HBase by Arkadiusz Jach...
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key concepts
 
IPTC News Exchange Formats Working Party Autumn 2012
IPTC News Exchange Formats Working Party Autumn 2012IPTC News Exchange Formats Working Party Autumn 2012
IPTC News Exchange Formats Working Party Autumn 2012
 
Ontology of citizen science @ Siena 2016 11 24
Ontology of citizen science @ Siena 2016 11 24Ontology of citizen science @ Siena 2016 11 24
Ontology of citizen science @ Siena 2016 11 24
 
NYC Titanium User's Group - tiConf US Revisited
NYC Titanium User's Group - tiConf US RevisitedNYC Titanium User's Group - tiConf US Revisited
NYC Titanium User's Group - tiConf US Revisited
 
Nubomedia IETF96 hackthon - Kurento
Nubomedia IETF96 hackthon - KurentoNubomedia IETF96 hackthon - Kurento
Nubomedia IETF96 hackthon - Kurento
 
FOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with KurentoFOSDEM 2016 - Creating rich WebRTC Applications with Kurento
FOSDEM 2016 - Creating rich WebRTC Applications with Kurento
 
ICWE2017 BigDataEurope
ICWE2017 BigDataEuropeICWE2017 BigDataEurope
ICWE2017 BigDataEurope
 
Live topic generation from event streams
Live topic generation from event streamsLive topic generation from event streams
Live topic generation from event streams
 
Making an OpenSource Automotive IVI Media Manager
Making an OpenSource Automotive IVI Media ManagerMaking an OpenSource Automotive IVI Media Manager
Making an OpenSource Automotive IVI Media Manager
 
Realtime statistics using Java, Kafka and Graphite
Realtime statistics using Java, Kafka and GraphiteRealtime statistics using Java, Kafka and Graphite
Realtime statistics using Java, Kafka and Graphite
 
Tpdl2015 kochw
Tpdl2015 kochwTpdl2015 kochw
Tpdl2015 kochw
 
Open source IoT
Open source IoTOpen source IoT
Open source IoT
 
Ontology Summit - Track D Standards Summary & Provocative Use Cases
Ontology Summit - Track D Standards Summary & Provocative Use CasesOntology Summit - Track D Standards Summary & Provocative Use Cases
Ontology Summit - Track D Standards Summary & Provocative Use Cases
 
Fast App development with SwellRT
Fast App development  with SwellRTFast App development  with SwellRT
Fast App development with SwellRT
 
How to Gain Visibility into Containers, VM’s and Multi-Cloud Environments Usi...
How to Gain Visibility into Containers, VM’s and Multi-Cloud Environments Usi...How to Gain Visibility into Containers, VM’s and Multi-Cloud Environments Usi...
How to Gain Visibility into Containers, VM’s and Multi-Cloud Environments Usi...
 
NASA Web World Wind: welcome to the new era of virtual globes
NASA Web World Wind: welcome to the new era of virtual globes NASA Web World Wind: welcome to the new era of virtual globes
NASA Web World Wind: welcome to the new era of virtual globes
 
OpenTelemetry For Architects
OpenTelemetry For ArchitectsOpenTelemetry For Architects
OpenTelemetry For Architects
 
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
The Fine Art of Time Travelling - Implementing Event Sourcing - Andrea Saltar...
 

Último

What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 

Último (20)

What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 

Gstreamer: an Overview

  • 1. GStreamer: An overview Rodrigo Costa Pontifical Catholic University of Rio de Janeiro TeleM´ıdia Lab. rodrigocosta@telemidia.puc-rio.br April 16, 2015 Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 1 / 22
  • 2. Overview 1 GStreamer Overview Pipelines Basic Concepts Synchronization Examples Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 2 / 22
  • 3. What is GStreamer? A framework for multimedia applications Linux, Windows, OS X, . . . 10+ years old project Similar to DirectShow, QuickTime, etc. Designed to make it easy to write applications that handle audiovisual contents Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 3 / 22
  • 4. GStreamer overview What GStreamer NOT is? A codec implementation An application itself Features Fully extensible by plugins Flexible Low and high level API Often wraps other libraries (decoders, encoders, filters, etc.) Integration with other frameworks and projects WebKit, Firefox, Gnome, Android, iOS, . . . Pipeline-based Bindings to multiple languages C/C++, Python, Java, Ruby, Pearl, etc. Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 4 / 22
  • 5. GStreamer overview Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 5 / 22
  • 6. Design The fundamental design comes from the video pipeline at Oregon Graduate Institute: Infopipes Infopipes (2001) High-level abstraction for building blocks that handle information flows Goal: simplify the task of building distributed streaming applications by providing basic elements such as pipes, filters, buffers, and pumps Motivated by the lack of support of RPC-like technologies to develop streaming and processing of distributed information Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 6 / 22
  • 7. Infopipes Infopipe example: Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 7 / 22
  • 8. GStreamer pipeline GStreamer pipeline example: Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 8 / 22
  • 9. Basic Concepts Elements The most important class of objects in GStreamer Each one has a specific function: read a file, receive data from network, decode, multiplex, present the data, . . . A chain of elements is created and linked together for the data to flow through it GStreamer ships with a large set of elements Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 9 / 22
  • 10. Basic Concepts Elements (cont) Source Filters, converters, demuxers, muxers, codecs Sink Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 10 / 22
  • 11. Basic Concepts Pads Connection points between elements Source pads produce data Sink pads consume data Data always flows from src to sink pads Can operate in pull or push mode Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 11 / 22
  • 12. Basic Concepts Pads (cont) Each pad have a predefined set of properties called Capabilities or Caps Caps are used to validate the communication between elements (caps restrict the type of data that flows through it) A source pad can only be linked to a sink pad if their allowed data types are compatible For instance, a source pad that produces a video stream cannot be linked to a sink pad that consumes audio streams Elements can negotiate with each other on format to use (caps negotiation) Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 12 / 22
  • 13. Basic Concepts Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 13 / 22
  • 14. Basic Concepts Bins Elements can be grouped into a container called bin It can be manipulated as it were an element It also manages the state of its children elements Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 14 / 22
  • 15. Basic Concepts Pipeline A pipeline is a top-level bin It provides a bus for communication purposes It manages the playout synchronization It runs in a separate thread Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 15 / 22
  • 16. Basic Concepts Communication: Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 16 / 22
  • 17. Synchronization GstClock objects provide clock time GstClock always returns the absolute-time The pipeline maintains a GstClock object and a base-time (time when it goes to PLAYING state) running-time = absolute-time - base-time Sink elements are responsible for present the buffers in their respective presentation time If a buffer is delayed, the sink drops it Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 17 / 22
  • 18. Pipeline Example Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 18 / 22
  • 19. Example 1 Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 19 / 22
  • 20. Example 2 Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 20 / 22
  • 21. Example 3 Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 21 / 22
  • 22. Example 4 Rodrigo Costa (TeleM´ıdia Lab.) GStreamer April 16, 2015 22 / 22