GstPipeline

A #GstPipeline is a special #GstBin used as the toplevel container for the filter graph. The #GstPipeline will manage the selection and distribution of a global #GstClock as well as provide a #GstBus to the application.

gst.pipeline.Pipeline.new_ is used to create a pipeline. when you are done with the pipeline, use gst.object.ObjectGst.unref to free its resources including all added #GstElement objects (if not otherwise referenced).

Elements are added and removed from the pipeline using the #GstBin methods like gst.bin.Bin.add and gst.bin.Bin.remove (see #GstBin).

Before changing the state of the #GstPipeline (see #GstElement) a #GstBus should be retrieved with gst.pipeline.Pipeline.getBus. This #GstBus should then be used to receive #GstMessage from the elements in the pipeline. Listening to the #GstBus is necessary for retrieving error messages from the #GstPipeline and otherwise the #GstPipeline might stop without any indication, why. Furthermore, the #GstPipeline posts messages even if nobody listens on the #GstBus, which will pile up and use up memory.

By default, a #GstPipeline will automatically flush the pending #GstBus messages when going to the NULL state to ensure that no circular references exist when no messages are read from the #GstBus. This behaviour can be changed with gst.pipeline.Pipeline.setAutoFlushBus.

When the #GstPipeline performs the PAUSED to PLAYING state change it will select a clock for the elements. The clock selection algorithm will by default select a clock provided by an element that is most upstream (closest to the source). For live pipelines (ones that return #GST_STATE_CHANGE_NO_PREROLL from the gst.element.Element.setState call) this will select the clock provided by the live source. For normal pipelines this will select a clock provided by the sinks (most likely the audio sink). If no element provides a clock, a default #GstSystemClock is used.

The clock selection can be controlled with the gst.pipeline.Pipeline.useClock method, which will enforce a given clock on the pipeline. With gst.pipeline.Pipeline.autoClock the default clock selection algorithm can be restored.

A #GstPipeline maintains a running time for the elements. The running time is defined as the difference between the current clock time and the base time. When the pipeline goes to READY or a flushing seek is performed on it, the running time is reset to 0. When the pipeline is set from PLAYING to PAUSED, the current clock time is sampled and used to configure the base time for the elements when the pipeline is set to PLAYING again. The effect is that the running time (as the difference between the clock time and the base time) will count how much time was spent in the PLAYING state. This default behaviour can be changed with the gst.element.Element.setStartTime method.

Members

Variables

GstReserved
void*[4] GstReserved;
bin
GstBin bin;
delay
GstClockTime delay;

Extra delay added to base_time to compensate for computing delays when setting elements to PLAYING.

fixedClock
GstClock* fixedClock;

The fixed clock of the pipeline, used when GST_PIPELINE_FLAG_FIXED_CLOCK is set.

priv
GstPipelinePrivate* priv;
streamTime
GstClockTime streamTime;

The stream time of the pipeline. A better name for this property would be the running_time, the total time spent in the PLAYING state without being flushed. (deprecated, use the start_time on GstElement).