|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.gstreamer.lowlevel.NativeValue
org.gstreamer.lowlevel.Handle
org.gstreamer.lowlevel.NativeObject
org.gstreamer.lowlevel.RefCountedObject
org.gstreamer.GObject
org.gstreamer.GstObject
org.gstreamer.Element
org.gstreamer.Bin
org.gstreamer.Pipeline
public class Pipeline
A Pipeline
is a special Bin
used as the toplevel container for
the filter graph. The Pipeline will manage the selection and
distribution of a global Clock
as well as provide a Bus
to
the application. It will also implement a default behavour for managing
seek events (see seek
).
Elements are added and removed from the pipeline using the Bin
methods like add
and remove
.
Before changing the state of the Pipeline (see Element
) a
Bus
can be retrieved with getBus
. This bus can then
be used to receive Message
s from the elements in the pipeline.
By default, a Pipeline will automatically flush the pending Bus
messages when going to the NULL state to ensure that no circular
references exist when no messages are read from the Bus. This
behaviour can be changed with setAutoFlushBus
When the Pipeline 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
StateChangeReturn.NO_PREROLL
from the
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 SystemClock 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 Pipeline maintains a stream time for the elements. The stream
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 stream 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. This default behaviour can be changed with the
gst_pipeline_set_new_stream_time() method.
When sending a flushing seek event to a GstPipeline (see
seek
), it will make sure that the pipeline is properly
PAUSED and resumed as well as set the new stream time to 0 when the
seek succeeded.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.gstreamer.Bin |
---|
Bin.ELEMENT_ADDED, Bin.ELEMENT_REMOVED |
Nested classes/interfaces inherited from class org.gstreamer.Element |
---|
Element.HANDOFF, Element.NO_MORE_PADS, Element.PAD_ADDED, Element.PAD_REMOVED |
Nested classes/interfaces inherited from class org.gstreamer.GObject |
---|
GObject.GCallback |
Nested classes/interfaces inherited from class org.gstreamer.lowlevel.NativeObject |
---|
NativeObject.Initializer |
Field Summary |
---|
Fields inherited from class org.gstreamer.Bin |
---|
DEBUG_GRAPH_SHOW_ALL, DEBUG_GRAPH_SHOW_CAPS_DETAILS, DEBUG_GRAPH_SHOW_MEDIA_TYPE, DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS, DEBUG_GRAPH_SHOW_STATES |
Fields inherited from class org.gstreamer.lowlevel.NativeObject |
---|
defaultInit, ownsHandle |
Constructor Summary | |
---|---|
Pipeline()
Creates a new instance of Pipeline with a unique name. |
|
Pipeline(NativeObject.Initializer init)
|
|
Pipeline(java.lang.String name)
Creates a new instance of Pipeline with the given name. |
Method Summary | |
---|---|
boolean |
getAutoFlushBus()
Checks if the pipeline will automatically flush messages when going to the NULL state. |
Bus |
getBus()
Gets the Bus this pipeline uses for messages. |
Clock |
getClock()
Return the current Clock used by the pipeline. |
boolean |
isPlaying()
Tests if the Pipeline is currently playing. |
static Pipeline |
launch(java.lang.String... pipelineDecription)
Creates a pipeline from a text pipeline description. |
static Pipeline |
launch(java.lang.String pipelineDecription)
Creates a pipeline from a text pipeline description. |
void |
pause()
Tells the Pipeline to pause playing the media stream. |
void |
play()
Tells the Pipeline to start playing the media stream. |
ClockTime |
queryDuration()
Gets the time duration of the current media stream. |
long |
queryDuration(Format format)
Gets the duration of the current media stream in terms of the specified Format . |
long |
queryDuration(java.util.concurrent.TimeUnit unit)
Gets the time duration of the current media stream. |
ClockTime |
queryPosition()
Gets the current position in the media stream in units of time. |
long |
queryPosition(Format format)
Gets the current position in terms of the specified Format . |
long |
queryPosition(java.util.concurrent.TimeUnit unit)
Gets the current position in the media stream. |
Segment |
querySegment()
Gets the Segment for the current media stream in terms of the specified Format . |
Segment |
querySegment(Format format)
Gets the Segment for the current media stream in terms of the specified Format . |
boolean |
seek(ClockTime time)
Sets the position in the media stream to time. |
boolean |
seek(double rate,
Format format,
int flags,
SeekType startType,
long start,
SeekType stopType,
long stop)
Seeks to a new position in the media stream. |
boolean |
seek(long time,
java.util.concurrent.TimeUnit unit)
Sets the current position in the media stream. |
void |
setAutoFlushBus(boolean flush)
Sets this pipeline to automatically flush Bus messages or not. |
boolean |
setClock(Clock clock)
Set the clock for pipeline. |
void |
stop()
Tells the Pipeline to pause playing the media stream. |
void |
useClock(Clock clock)
Force the Pipeline to use the a specific clock. |
Methods inherited from class org.gstreamer.Bin |
---|
add, addMany, connect, connect, debugToDotFile, debugToDotFile, disconnect, disconnect, getElementByInterface, getElementByName, getElementByNameRecurseUp, getElements, getElementsRecursive, getElementsSorted, getSinks, getSources, remove, removeMany |
Methods inherited from class org.gstreamer.Element |
---|
addPad, connect, connect, connect, connect, disconnect, disconnect, disconnect, disconnect, getBaseTime, getFactory, getPad, getPads, getRequestPad, getSinkPads, getSrcPads, getState, getState, getState, getState, getStaticPad, link, link, linkMany, linkPads, linkPadsFiltered, makeRawElement, postMessage, releaseRequestPad, removePad, sendEvent, setCaps, setState, syncStateWithParent, unlink, unlinkMany, unlinkPads |
Methods inherited from class org.gstreamer.GstObject |
---|
addListenerProxy, getName, getParent, initializer, initializer, objectFor, objectFor, ref, removeListenerProxy, setName, steal, toString, unref |
Methods inherited from class org.gstreamer.GObject |
---|
addCallback, connect, connect, connect, disconnect, disconnect, disposeNativeHandle, g_signal_connect, get, getPointer, getPropertyDefaultValue, getPropertyMaximumValue, getPropertyMinimumValue, invalidate, objectFor, removeCallback, set |
Methods inherited from class org.gstreamer.lowlevel.NativeObject |
---|
classFor, disown, dispose, equals, finalize, getNativeAddress, handle, hashCode, initializer, instanceFor, isDisposed, nativeValue, objectFor, objectFor |
Methods inherited from class java.lang.Object |
---|
clone, getClass, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public Pipeline(NativeObject.Initializer init)
public Pipeline()
public Pipeline(java.lang.String name)
name
- The name used to identify this pipeline.Method Detail |
---|
public static Pipeline launch(java.lang.String pipelineDecription)
pipelineDecription
- the command line describing the pipeline
public static Pipeline launch(java.lang.String... pipelineDecription)
pipelineDecription
- An array of strings containing the command line describing the pipeline.
public void setAutoFlushBus(boolean flush)
Bus
messages or not.
flush
- true if automatic flushing is desired, else false.public boolean getAutoFlushBus()
public boolean setClock(Clock clock)
MT safe
clock
- The Clock
to use
public Clock getClock()
Clock
used by the pipeline.
getClock
in class Element
Clock
currently in use.public void useClock(Clock clock)
MT safe
clock
- The Clock
to use. If clock is null, all clocking is
disabled, and the pipeline will run as fast as possible.public Bus getBus()
Bus
this pipeline uses for messages.
getBus
in class Element
Bus
that this pipeline uses.public boolean seek(ClockTime time)
time
- The time to change the position to.
public boolean seek(long time, java.util.concurrent.TimeUnit unit)
time
- the time to change the position to.unit
- the TimeUnit
the time is expressed in.
public boolean seek(double rate, Format format, int flags, SeekType startType, long start, SeekType stopType, long stop)
The start and stop values are expressed in format.
A rate of 1.0 means normal playback rate, 2.0 means double speed. Negative values means backwards playback. A value of 0.0 for the rate is not allowed and should be accomplished instead by PAUSING the pipeline.
A pipeline has a default playback segment configured with a start position of 0, a stop position of -1 and a rate of 1.0. The currently configured playback segment can be queried with #GST_QUERY_SEGMENT.
When the rate is positive and start has been updated, playback will start
from the newly configured start position.
For negative rates, playback will start from the newly configured stop
position (if any). If the stop position if updated, it must be different from
-1 for negative rates.
It is not possible to seek relative to the current playback position, to do
this, PAUSE the pipeline, query the current playback position with
SeekType.NONE
means
that the position should not be updated.
queryPosition
and update the playback segment
current position with a SeekType.SET
to the desired position.
rate
- the new playback rateformat
- the format of the seek valuesflags
- the optional seek flagsstartType
- the type and flags for the new start positionstart
- the value of the new start positionstopType
- the type and flags for the new stop positionstop
- the value of the new stop position
public ClockTime queryPosition()
public long queryPosition(java.util.concurrent.TimeUnit unit)
unit
- the TimeUnit
to return the position in terms of.
public long queryPosition(Format format)
Format
.
format
- The Format
to return the position in.
public ClockTime queryDuration()
public long queryDuration(java.util.concurrent.TimeUnit unit)
unit
- the TimeUnit
to return the position in.
public long queryDuration(Format format)
Format
.
format
- the Format
to return the duration in.
public Segment querySegment()
Segment
for the current media stream in terms of the specified Format
.
Segment
.public Segment querySegment(Format format)
Segment
for the current media stream in terms of the specified Format
.
format
- the Format
to return the segment in.
Segment
.public boolean isPlaying()
public void play()
public void pause()
public void stop()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |