The basic tool that an element uses to push a buffer is the gst_pad_push function: GstFlowReturn gst_pad_push (GstPad * pad, GstBuffer * buffer) Ī buffer push is actually a series of intricate function calls and locks being taken, the sequence is as follows: When an element wishes to send a buffer with data to the next element, it "pushes" it onto its source pad which then chains it to the sink pad which calls into the next element.
To create a connection between two elements, the application programmer connects the source pad of one element to the sink pad of another. Each element has a pad for each possible connection, a pad can either be a "source pad" which the element uses to output buffers or a "sink pad" that it uses to input buffers. One of the essential tasks of GStreamer is to move (push) buffers from an upstream element to the next downstream element, making the pipeline progress.īut what does pushing a buffer mean from a low level point of view?Įlements are connected through pads. The latter in particular provides an important boost in throughput, opening the gate to high bitrate video streaming.
It sits at the core of many systems used in a wide array of industries, from WebRTC, to SIP (IP telephony), and from RTSP (security cameras) to RIST and SMPTE ST 2022 (broadcast TV backend).īeing a flexible, Open Source framework, GStreamer is used in a variety of applications. RTP is the dominant protocol for low latency audio and video transport.