SlideShare a Scribd company logo
4
Most read
11
Most read
12
Most read
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

More Related Content

PDF
MIPI DevCon 2016: A Developer's Guide to MIPI I3C Implementation
PPTX
Erosion and dilation
PPTX
Chapter 9 morphological image processing
PPT
Fundamentals of Data Communication and Computer Networks
PPTX
QEMU - Binary Translation
PDF
PDF
Generative AI
MIPI DevCon 2016: A Developer's Guide to MIPI I3C Implementation
Erosion and dilation
Chapter 9 morphological image processing
Fundamentals of Data Communication and Computer Networks
QEMU - Binary Translation
Generative AI

What's hot (20)

PDF
Gstreamer Basics
PPT
gstreamer.ppt
PPT
GStreamer 101
PPTX
Gstreamer plugin development
PPT
Gstreamer plugin devpt_1
PDF
Embedded Android : System Development - Part IV
PPTX
Gstreamer internals
PPTX
Introduction to Gstreamer
PDF
GoLang Introduction
PDF
Embedded Android : System Development - Part IV (Android System Services)
PDF
GeoServer Developers Workshop
PDF
Advanced GitHub Enterprise Administration
PDF
Linux programming - Getting self started
PDF
gRPC in Go
PDF
Multimedia on android
PDF
Embedded Android : System Development - Part III (Audio / Video HAL)
PDF
Dexador Rises
PPTX
U-boot and Android Verified Boot 2.0
PDF
SIP Testing with FreeSWITCH
PDF
Explore Android Internals
Gstreamer Basics
gstreamer.ppt
GStreamer 101
Gstreamer plugin development
Gstreamer plugin devpt_1
Embedded Android : System Development - Part IV
Gstreamer internals
Introduction to Gstreamer
GoLang Introduction
Embedded Android : System Development - Part IV (Android System Services)
GeoServer Developers Workshop
Advanced GitHub Enterprise Administration
Linux programming - Getting self started
gRPC in Go
Multimedia on android
Embedded Android : System Development - Part III (Audio / Video HAL)
Dexador Rises
U-boot and Android Verified Boot 2.0
SIP Testing with FreeSWITCH
Explore Android Internals
Ad

Viewers also liked (19)

PDF
About GStreamer 1.0 application development for beginners
ODP
GStreamer Instruments
PDF
Building Digital TV Support in Linux
DOC
CV_SANJAY SOHIL
PPT
Device driver
PPT
Tg discussion guide90
PDF
Geog 5 fa 2012 schmidt fri
DOCX
Kpi publikovani 2
PDF
Isabelle: Not Only a Proof Assistant
PPTX
Rreflexion cuento
PPTX
Heap and Partners
PPT
學生學習歷程簡報
PPT
Pi3 Ef 7 Pe Revision Class
PPT
Grouping objects
PPTX
오픈세미나 플러그인만들기(한번더)
PDF
Tutorial para crear cuenta en slideshare
PDF
CV_Jeeshan CPE
PPT
Brain maturation
PDF
r3-4-2009f_xts5000_new
About GStreamer 1.0 application development for beginners
GStreamer Instruments
Building Digital TV Support in Linux
CV_SANJAY SOHIL
Device driver
Tg discussion guide90
Geog 5 fa 2012 schmidt fri
Kpi publikovani 2
Isabelle: Not Only a Proof Assistant
Rreflexion cuento
Heap and Partners
學生學習歷程簡報
Pi3 Ef 7 Pe Revision Class
Grouping objects
오픈세미나 플러그인만들기(한번더)
Tutorial para crear cuenta en slideshare
CV_Jeeshan CPE
Brain maturation
r3-4-2009f_xts5000_new
Ad

Similar to Gstreamer: an Overview (20)

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

Recently uploaded (20)

PPTX
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
PPTX
Advanced SystemCare Ultimate Crack + Portable (2025)
PDF
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
PPTX
history of c programming in notes for students .pptx
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
AutoCAD Professional Crack 2025 With License Key
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PDF
Complete Guide to Website Development in Malaysia for SMEs
PDF
Nekopoi APK 2025 free lastest update
PPTX
Why Generative AI is the Future of Content, Code & Creativity?
PDF
Cost to Outsource Software Development in 2025
PDF
medical staffing services at VALiNTRY
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
L1 - Introduction to python Backend.pptx
DOCX
Greta — No-Code AI for Building Full-Stack Web & Mobile Apps
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Digital Systems & Binary Numbers (comprehensive )
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
assetexplorer- product-overview - presentation
AMADEUS TRAVEL AGENT SOFTWARE | AMADEUS TICKETING SYSTEM
Advanced SystemCare Ultimate Crack + Portable (2025)
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
history of c programming in notes for students .pptx
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
AutoCAD Professional Crack 2025 With License Key
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
Complete Guide to Website Development in Malaysia for SMEs
Nekopoi APK 2025 free lastest update
Why Generative AI is the Future of Content, Code & Creativity?
Cost to Outsource Software Development in 2025
medical staffing services at VALiNTRY
How to Choose the Right IT Partner for Your Business in Malaysia
L1 - Introduction to python Backend.pptx
Greta — No-Code AI for Building Full-Stack Web & Mobile Apps
CHAPTER 2 - PM Management and IT Context
Reimagine Home Health with the Power of Agentic AI​
Digital Systems & Binary Numbers (comprehensive )
wealthsignaloriginal-com-DS-text-... (1).pdf
assetexplorer- product-overview - presentation

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