Class Pipeline
- All Implemented Interfaces:
Proxy
,ChildProxy
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_new() is used to create a pipeline. when you are done with
the pipeline, use gst_object_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_add() and gst_bin_remove() (see GstBin
).
Before changing the state of the GstPipeline
(see GstElement
) a GstBus
should be retrieved with gst_pipeline_get_bus(). 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_set_auto_flush_bus().
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_set_state() 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_use_clock() method, which will enforce a given clock on the pipeline. With gst_pipeline_auto_clock() 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_set_start_time() method.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Pipeline.Builder<B extends Pipeline.Builder<B>>
Inner class implementing a builder pattern to construct a GObject with properties.static class
Nested classes/interfaces inherited from class org.freedesktop.gstreamer.gst.Bin
Bin.BinClass, Bin.DeepElementAddedCallback, Bin.DeepElementRemovedCallback, Bin.DoLatencyCallback, Bin.ElementAddedCallback, Bin.ElementRemovedCallback
Nested classes/interfaces inherited from class org.freedesktop.gstreamer.gst.Element
Element.ElementClass, Element.ElementImpl, Element.NoMorePadsCallback, Element.PadAddedCallback, Element.PadRemovedCallback
Nested classes/interfaces inherited from class org.freedesktop.gstreamer.gst.GstObject
GstObject.DeepNotifyCallback, GstObject.ObjectClass, GstObject.ObjectImpl
Nested classes/interfaces inherited from class org.gnome.gobject.InitiallyUnowned
InitiallyUnowned.InitiallyUnownedClass
Nested classes/interfaces inherited from class org.gnome.gobject.GObject
GObject.NotifyCallback
Nested classes/interfaces inherited from interface org.freedesktop.gstreamer.gst.ChildProxy
ChildProxy.ChildAddedCallback, ChildProxy.ChildProxyImpl, ChildProxy.ChildProxyInterface, ChildProxy.ChildRemovedCallback
-
Constructor Summary
ConstructorDescriptionPipeline()
CallsPipeline(java.lang.String)
with name =null
Create a new pipeline with the given name.Pipeline
(MemorySegment address) Create a Pipeline proxy instance for the provided memory address. -
Method Summary
Modifier and TypeMethodDescriptionprotected Pipeline
asParent()
Returns this instance as if it were its parent type.void
Let this Pipeline select a clock automatically.static Pipeline.Builder
<? extends Pipeline.Builder> builder()
APipeline.Builder
object constructs aPipeline
with the specified properties.boolean
Check if this Pipeline will automatically flush messages when going to the NULL state.getBus()
Gets theGstBus
of this Pipeline.getClock()
Gets the current clock used by this Pipeline.Return the configured latency on this Pipeline.getDelay()
Get the configured delay (see gst_pipeline_set_delay()).Gets the latency that should be configured on the pipeline.static MemoryLayout
The memory layout of the native struct.Gets the current clock used by this Pipeline.static Type
getType()
Get the GType of the Pipeline classboolean
isLive()
Check if this Pipeline is live.void
setAutoFlushBus
(boolean autoFlush) Usually, when a pipeline goes from READY to NULL state, it automatically flushes all pending messages on the bus, which is done for refcounting purposes, to break circular references.boolean
Set the clock for this Pipeline.void
Set the expected delay needed for all elements to perform the PAUSED to PLAYING state change.void
setLatency
(ClockTime latency) Sets the latency that should be configured on the pipeline.void
Force this Pipeline to use the givenclock
.Methods inherited from class org.freedesktop.gstreamer.gst.Bin
add, addElement, addMany, deepElementAdded, deepElementRemoved, doLatency, elementAdded, elementRemoved, emitDeepElementAdded, emitDeepElementRemoved, emitDoLatency, emitElementAdded, emitElementRemoved, findUnlinkedPad, getByInterface, getByName, getByNameRecurseUp, getSuppressedFlags, handleMessage, iterateAllByElementFactoryName, iterateAllByInterface, iterateElements, iterateRecurse, iterateSinks, iterateSorted, iterateSources, onDeepElementAdded, onDeepElementRemoved, onDoLatency, onElementAdded, onElementRemoved, recalculateLatency, remove, removeElement, removeMany, setSuppressedFlags, setSuppressedFlags, syncChildrenStates
Methods inherited from class org.freedesktop.gstreamer.gst.Element
abortState, addPad, addPropertyDeepNotifyWatch, addPropertyNotifyWatch, callAsync, changeState, continueState, createAllPads, decorateStreamId, decorateStreamIdPrintf, emitNoMorePads, emitPadAdded, emitPadRemoved, foreachPad, foreachSinkPad, foreachSrcPad, getBaseTime, getCompatiblePad, getCompatiblePadTemplate, getContext, getContexts, getContextUnlocked, getCurrentClockTime, getCurrentRunningTime, getFactory, getMetadata, getPadTemplate, getPadTemplateList, getRequestPad, getStartTime, getState, getStaticPad, isLockedState, iteratePads, iterateSinkPads, iterateSrcPads, link, linkFiltered, linkMany, linkPads, linkPadsFiltered, linkPadsFull, linkPadsFull, lostState, makeFromUri, messageFull, messageFull, messageFullWithDetails, messageFullWithDetails, noMorePads, onNoMorePads, onPadAdded, onPadRemoved, padAdded, padRemoved, postMessage, provideClock, query, queryConvert, queryDuration, queryPosition, register, releasePad, releaseRequestPad, removePad, removePropertyNotifyWatch, requestPad, requestPadSimple, seek, seek, seekSimple, seekSimple, sendEvent, setBaseTime, setBus, setContext, setLockedState, setStartTime, setState, stateChanged, stateChangeReturnGetName, stateGetName, syncStateWithParent, typeSetSkipDocumentation, unlink, unlinkMany, unlinkPads
Methods inherited from class org.freedesktop.gstreamer.gst.GstObject
addControlBinding, checkUniqueness, deepNotify, defaultDeepNotify, defaultError, emitDeepNotify, getControlBinding, getControlRate, getGValueArray, getName, getParent, getPathString, getValue, getValueArray, hasActiveControlBindings, hasAncestor, hasAsAncestor, hasAsParent, onDeepNotify, ref, refSink, removeControlBinding, replace, setControlBindingDisabled, setControlBindingsDisabled, setControlRate, setName, setParent, suggestNextSync, syncValues, unparent, unref
Methods inherited from class org.gnome.gobject.GObject
addToggleRef, addWeakPointer, bindProperty, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, connect, constructed, disconnect, dispatchPropertiesChanged, dispose, dupData, dupQdata, emit, emitNotify, finalize_, forceFloating, freezeNotify, get, getData, getProperty, getProperty, getProperty, getQdata, getv, interfaceFindProperty, interfaceInstallProperty, interfaceListProperties, isFloating, newInstance, newInstance, newInstance, newInstance, newv, notify_, notify_, notifyByPspec, onNotify, refSink, removeToggleRef, removeWeakPointer, replaceData, replaceQdata, runDispose, set, setData, setDataFull, setProperty, setProperty, setProperty, setQdata, setQdataFull, setv, stealData, stealQdata, takeRef, thawNotify, watchClosure, weakRef, weakUnref, withProperties
Methods inherited from class org.gnome.gobject.TypeInstance
callParent, callParent, getPrivate, readGClass, writeGClass
Methods inherited from class io.github.jwharm.javagi.base.ProxyInstance
equals, handle, hashCode
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.freedesktop.gstreamer.gst.ChildProxy
childAdded, childRemoved, emitChildAdded, emitChildRemoved, get, getChildByIndex, getChildByName, getChildByNameRecurse, getChildrenCount, getProperty, lookup, onChildAdded, onChildRemoved, set, setProperty
-
Constructor Details
-
Pipeline
Create a Pipeline proxy instance for the provided memory address.- Parameters:
address
- the memory address of the native object
-
Pipeline
Create a new pipeline with the given name.- Parameters:
name
- name of new pipeline
-
Pipeline
public Pipeline()CallsPipeline(java.lang.String)
with name =null
-
-
Method Details
-
getType
-
getMemoryLayout
The memory layout of the native struct.- Returns:
- the memory layout
-
asParent
Returns this instance as if it were its parent type. This is mostly synonymous to the Javasuper
keyword, but will set the native typeclass function pointers to the parent type. When overriding a native virtual method in Java, "chaining up" withsuper.methodName()
doesn't work, because it invokes the overridden function pointer again. To chain up, callasParent().methodName()
. This will call the native function pointer of this virtual method in the typeclass of the parent type. -
autoClock
public void autoClock()Let this Pipeline select a clock automatically. This is the default behaviour.Use this function if you previous forced a fixed clock with gst_pipeline_use_clock() and want to restore the default pipeline clock selection algorithm.
MT safe.
-
getAutoFlushBus
public boolean getAutoFlushBus()Check if this Pipeline will automatically flush messages when going to the NULL state.- Returns:
- whether the pipeline will automatically flush its bus when
going from READY to NULL state or not.
MT safe.
-
getBus
-
getClock
Gets the current clock used by this Pipeline. Users of object oriented languages should use gst_pipeline_get_pipeline_clock() to avoid confusion with gst_element_get_clock() which has a different behavior.Unlike gst_element_get_clock(), this function will always return a clock, even if the pipeline is not in the PLAYING state.
-
getConfiguredLatency
Return the configured latency on this Pipeline.- Returns:
- this Pipeline configured latency, or
GST_CLOCK_TIME_NONE
if none has been configured because this Pipeline did not reach the PLAYING state yet.MT safe.
-
getDelay
Get the configured delay (see gst_pipeline_set_delay()).- Returns:
- The configured delay.
MT safe.
-
getLatency
Gets the latency that should be configured on the pipeline. See gst_pipeline_set_latency().- Returns:
- Latency to configure on the pipeline or GST_CLOCK_TIME_NONE
-
getPipelineClock
Gets the current clock used by this Pipeline.Unlike gst_element_get_clock(), this function will always return a clock, even if the pipeline is not in the PLAYING state.
- Returns:
- a
GstClock
, unref after usage.
-
isLive
public boolean isLive()Check if this Pipeline is live.- Returns:
true
if this Pipeline is live,false
if not or if it did not reach the PAUSED state yet.MT safe.
-
setAutoFlushBus
public void setAutoFlushBus(boolean autoFlush) Usually, when a pipeline goes from READY to NULL state, it automatically flushes all pending messages on the bus, which is done for refcounting purposes, to break circular references.This means that applications that update state using (async) bus messages (e.g. do certain things when a pipeline goes from PAUSED to READY) might not get to see messages when the pipeline is shut down, because they might be flushed before they can be dispatched in the main thread. This behaviour can be disabled using this function.
It is important that all messages on the bus are handled when the automatic flushing is disabled else memory leaks will be introduced.
MT safe.
- Parameters:
autoFlush
- whether or not to automatically flush the bus when the pipeline goes from READY to NULL state
-
setClock
Set the clock for this Pipeline. The clock will be distributed to all the elements managed by the pipeline. -
setDelay
Set the expected delay needed for all elements to perform the PAUSED to PLAYING state change.delay
will be added to the base time of the elements so that they wait an additionaldelay
amount of time before starting to process buffers and cannot beGST_CLOCK_TIME_NONE
.This option is used for tuning purposes and should normally not be used.
MT safe.
- Parameters:
delay
- the delay
-
setLatency
Sets the latency that should be configured on the pipeline. Setting GST_CLOCK_TIME_NONE will restore the default behaviour of using the minimum latency from the LATENCY query. Setting this is usually not required and the pipeline will figure out an appropriate latency automatically.Setting a too low latency, especially lower than the minimum latency from the LATENCY query, will most likely cause the pipeline to fail.
- Parameters:
latency
- latency to configure
-
useClock
Force this Pipeline to use the givenclock
. The pipeline will always use the given clock even if new clock providers are added to this pipeline.If
clock
isnull
all clocking will be disabled which will make the pipeline run as fast as possible.MT safe.
- Parameters:
clock
- the clock to use
-
builder
APipeline.Builder
object constructs aPipeline
with the specified properties. Use the variousset...()
methods to set properties, and finish construction withPipeline.Builder.build()
.
-