Part III. Advanced Filter Concepts

By now, you should be able to create basic filter elements that can receive and send data. This is the simple model that GStreamer stands for. But GStreamer can do much more than only this! In this chapter, various advanced topics will be discussed, such as scheduling, special pad types, clocking, events, interfaces, tagging and more. These topics are the sugar that makes GStreamer so easy to use for applications.

Table of Contents

12. Request and Sometimes pads
Sometimes pads
Request pads
13. Different scheduling modes
The pad activation stage
Pads driving the pipeline
Providing random access
14. Caps negotiation
Caps negotiation basics
Caps negotiation use cases
Fixed negotiation
Transform negotiation
Dynamic negotiation
Upstream caps (re)negotiation
Implementing a CAPS query function
Pull-mode Caps negotiation
15. Memory allocation
GstMemory API example
Implementing a GstAllocator
GstBuffer writability
GstBuffer API examples
GstMeta API example
Implementing new GstMeta
GstBufferPool API example
Implementing a new GstBufferPool
ALLOCATION query example
The ALLOCATION query in base classes
16. Types and Properties
Building a Simple Format for Testing
Typefind Functions and Autoplugging
List of Defined Types
17. Events: Seeking, Navigation and More
Downstream events
Upstream events
All Events Together
Stream Start
Tag (metadata)
End of Stream (EOS)
Table Of Contents
Flush Start
Flush Stop
Quality Of Service (QOS)
Seek Request
18. Clocking
Clock running-time
Buffer running-time
Obligations of each element.
Non-live source elements
Live source elements
Parser/Decoder/Encoder elements
Demuxer elements
Muxer elements
Sink elements
19. Quality Of Service (QoS)
Measuring QoS
Handling QoS
Short term correction
Long term correction
QoS Messages
20. Supporting Dynamic Parameters
Getting Started
The Data Processing Loop
The Data Processing Loop for Video Elements
The Data Processing Loop for Audio Elements
21. Interfaces
How to Implement Interfaces
URI interface
Color Balance Interface
Video Overlay Interface
Navigation Interface
22. Tagging (Metadata and Streaminfo)
Reading Tags from Streams
Writing Tags to Streams