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
10. Caps negotiation
10.1. Caps negotiation use cases
10.2. Fixed caps
10.3. Downstream caps negotiation
10.3.1. Negotiating caps embedded in input caps
10.3.2. Parsing and setting caps
10.4. Upstream caps (re)negotiation
10.5. Implementing a getcaps function
11. Different scheduling modes
11.1. The pad activation stage
11.2. Pads driving the pipeline
11.3. Providing random access
12. Types and Properties
12.1. Building a Simple Format for Testing
12.2. Typefind Functions and Autoplugging
12.3. List of Defined Types
13. Request and Sometimes pads
13.1. Sometimes pads
13.2. Request pads
14. Clocking
14.1. Types of time
14.2. Clocks
14.3. Flow of data between elements and time
14.4. Obligations of each element.
14.4.1. Source elements
14.4.2. Sink elements
15. Supporting Dynamic Parameters
15.1. Getting Started
15.2. The Data Processing Loop
15.2.1. The Data Processing Loop for Video Elements
15.2.2. The Data Processing Loop for Audio Elements
16. Interfaces
16.1. How to Implement Interfaces
16.2. URI interface
16.3. Mixer Interface
16.4. Tuner Interface
16.5. Color Balance Interface
16.6. Property Probe Interface
16.7. X Overlay Interface
16.8. Navigation Interface
17. Tagging (Metadata and Streaminfo)
17.1. Overview
17.2. Reading Tags from Streams
17.3. Writing Tags to Streams
18. Events: Seeking, Navigation and More
18.1. Downstream events
18.2. Upstream events
18.3. All Events Together
18.3.1. End of Stream (EOS)
18.3.2. Flush Start
18.3.3. Flush Stop
18.3.4. New Segment
18.3.5. Seek Request
18.3.6. Navigation
18.3.7. Tag (metadata)