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
11. How scheduling works
11.1. The Basic Scheduler
11.2. The Optimal Scheduler
12. How a loopfunc works
12.1. Multi-Input Elements
12.2. The Bytestream Object
12.3. Adding a second output
12.4. Modifying the test application
13. Types and Properties
13.1. Building a Simple Format for Testing
13.2. Typefind Functions and Autoplugging
13.3. List of Defined Types
14. Request and Sometimes pads
14.1. Sometimes pads
14.2. Request pads
15. Clocking
15.1. Types of time
15.2. Clocks
15.3. Flow of data between elements and time
15.4. Obligations of each element.
15.4.1. Source elements
15.4.2. Sink elements
16. Supporting Dynamic Parameters
16.1. Comparing Dynamic Parameters with GObject Properties
16.2. Getting Started
16.3. Defining Parameter Specifications
16.3.1. Direct Method
16.3.2. Callback Method
16.3.3. Array Method
16.4. The Data Processing Loop
16.4.1. DParam Manager Modes
16.4.2. Dynamic Parameters for Video
17. MIDI
18. Interfaces
18.1. How to Implement Interfaces
18.2. Mixer Interface
18.3. Tuner Interface
18.4. Color Balance Interface
18.5. Property Probe Interface
18.6. Profile Interface
18.7. X Overlay Interface
18.8. Navigation Interface
19. Tagging (Metadata and Streaminfo)
19.1. Reading Tags from Streams
19.2. Writing Tags to Streams
20. Events: Seeking, Navigation and More
20.1. Downstream events
20.2. Upstream events
20.3. All Events Together
20.3.1. End of Stream (EOS)
20.3.2. Flush
20.3.3. Stream Discontinuity
20.3.4. Seek Request
20.3.5. Stream Filler
20.3.6. Interruption
20.3.7. Navigation
20.3.8. Tag (metadata)