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. Caps negotiation
11.1. Caps negotiation use cases
11.2. Fixed caps
11.3. Downstream caps negotiation
11.3.1. Negotiating caps embedded in input caps
11.3.2. Parsing and setting caps
11.4. Upstream caps (re)negotiation
11.5. Implementing a CAPS query function
12. Memory allocation
12.1. GstMemory
12.1.1. GstMemory API example
12.1.2. Implementing a GstAllocator
12.2. GstBuffer
12.2.1. GstBuffer writability
12.2.2. GstBuffer API examples
12.3. GstMeta
12.3.1. GstMeta API example
12.3.2. Implementing new GstMeta
12.4. GstBufferPool
12.4.1. GstBufferPool API example
12.4.2. Implementing a new GstBufferPool
12.5. GST_QUERY_ALLOCATION
12.5.1. ALLOCATION query example
12.5.2. The ALLOCATION query in base classes
13. Different scheduling modes
13.1. The pad activation stage
13.2. Pads driving the pipeline
13.3. Providing random access
14. Types and Properties
14.1. Building a Simple Format for Testing
14.2. Typefind Functions and Autoplugging
14.3. List of Defined Types
15. Request and Sometimes pads
15.1. Sometimes pads
15.2. Request pads
16. Clocking
16.1. Clocks
16.2. Clock running-time
16.3. Buffer running-time
16.4. Obligations of each element.
16.4.1. Non-live source elements
16.4.2. Live source elements
16.4.3. Parser elements
16.4.4. Demuxer elements
16.4.5. Sink elements
17. Supporting Dynamic Parameters
17.1. Getting Started
17.2. The Data Processing Loop
17.2.1. The Data Processing Loop for Video Elements
17.2.2. The Data Processing Loop for Audio Elements
18. Interfaces
18.1. How to Implement Interfaces
18.2. URI interface
18.3. Color Balance Interface
18.4. Video Overlay Interface
18.5. Navigation Interface
19. Tagging (Metadata and Streaminfo)
19.1. Overview
19.2. Reading Tags from Streams
19.3. 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. Stream Start
20.3.2. Caps
20.3.3. Segment
20.3.4. Tag (metadata)
20.3.5. End of Stream (EOS)
20.3.6. Table Of Contents
20.3.7. Gap
20.3.8. Flush Start
20.3.9. Flush Stop
20.3.10. Quality Of Service (QOS)
20.3.11. Seek Request
20.3.12. Navigation