Top |
GObject ╰── GInitiallyUnowned ╰── GstObject ╰── GstPad ╰── GstProxyPad ╰── GstGhostPad
GhostPads are useful when organizing pipelines with GstBin like elements. The idea here is to create hierarchical element graphs. The bin element contains a sub-graph. Now one would like to treat the bin-element like any other GstElement. This is where GhostPads come into play. A GhostPad acts as a proxy for another pad. Thus the bin can have sink and source ghost-pads that are associated with sink and source pads of the child elements.
If the target pad is known at creation time, gst_ghost_pad_new()
is the
function to use to get a ghost-pad. Otherwise one can use gst_ghost_pad_new_no_target()
to create the ghost-pad and use gst_ghost_pad_set_target()
to establish the
association later on.
Note that GhostPads add overhead to the data processing of a pipeline.
GstPad * gst_ghost_pad_new (const gchar *name
,GstPad *target
);
Create a new ghostpad with target
as the target. The direction will be taken
from the target pad. target
must be unlinked.
Will ref the target.
name |
the name of the new pad, or |
[allow-none] |
target |
the pad to ghost. |
[transfer none] |
GstPad * gst_ghost_pad_new_no_target (const gchar *name
,GstPadDirection dir
);
Create a new ghostpad without a target with the given direction.
A target can be set on the ghostpad later with the
gst_ghost_pad_set_target()
function.
The created ghostpad will not have a padtemplate.
name |
the name of the new pad, or |
[allow-none] |
dir |
the direction of the ghostpad |
GstPad * gst_ghost_pad_new_from_template (const gchar *name
,GstPad *target
,GstPadTemplate *templ
);
Create a new ghostpad with target
as the target. The direction will be taken
from the target pad. The template used on the ghostpad will be template
.
Will ref the target.
name |
the name of the new pad, or |
[allow-none] |
target |
the pad to ghost. |
[transfer none] |
templ |
the GstPadTemplate to use on the ghostpad. |
[transfer none] |
GstPad * gst_ghost_pad_new_no_target_from_template (const gchar *name
,GstPadTemplate *templ
);
Create a new ghostpad based on templ
, without setting a target. The
direction will be taken from the templ
.
name |
the name of the new pad, or |
[allow-none] |
templ |
the GstPadTemplate to create the ghostpad from. |
[transfer none] |
gboolean gst_ghost_pad_set_target (GstGhostPad *gpad
,GstPad *newtarget
);
Set the new target of the ghostpad gpad
. Any existing target
is unlinked and links to the new target are established. if newtarget
is
NULL
the target will be cleared.
GstPad *
gst_ghost_pad_get_target (GstGhostPad *gpad
);
Get the target pad of gpad
. Unref target pad after usage.
gboolean
gst_ghost_pad_construct (GstGhostPad *gpad
);
Finish initialization of a newly allocated ghost pad.
This function is most useful in language bindings and when subclassing
GstGhostPad; plugin and application developers normally will not call this
function. Call this function directly after a call to g_object_new
(GST_TYPE_GHOST_PAD, "direction", dir
, ..., NULL).
gboolean gst_ghost_pad_activate_mode_default (GstPad *pad
,GstObject *parent
,GstPadMode mode
,gboolean active
);
Invoke the default activate mode function of a ghost pad.
gboolean gst_ghost_pad_internal_activate_mode_default (GstPad *pad
,GstObject *parent
,GstPadMode mode
,gboolean active
);
Invoke the default activate mode function of a proxy pad that is owned by a ghost pad.
GstProxyPad *
gst_proxy_pad_get_internal (GstProxyPad *pad
);
Get the internal pad of pad
. Unref target pad after usage.
The internal pad of a GstGhostPad is the internally used pad of opposite direction, which is used to link to the target.
the target GstProxyPad, can
be NULL
. Unref target pad after usage.
[transfer full][nullable]
GstIterator * gst_proxy_pad_iterate_internal_links_default (GstPad *pad
,GstObject *parent
);
Invoke the default iterate internal links function of the proxy pad.
a GstIterator of GstPad, or NULL
if pad
has no parent. Unref each returned pad with gst_object_unref()
.
[nullable]
GstFlowReturn gst_proxy_pad_chain_default (GstPad *pad
,GstObject *parent
,GstBuffer *buffer
);
Invoke the default chain function of the proxy pad.
GstFlowReturn gst_proxy_pad_chain_list_default (GstPad *pad
,GstObject *parent
,GstBufferList *list
);
Invoke the default chain list function of the proxy pad.
pad |
a sink GstPad, returns GST_FLOW_ERROR if not. |
|
parent |
the parent of |
[allow-none] |
list |
the GstBufferList to send, return GST_FLOW_ERROR if not. |
[transfer full] |
GstFlowReturn gst_proxy_pad_getrange_default (GstPad *pad
,GstObject *parent
,guint64 offset
,guint size
,GstBuffer **buffer
);
Invoke the default getrange function of the proxy pad.
pad |
a src GstPad, returns GST_FLOW_ERROR if not. |
|
parent |
the parent of |
|
offset |
The start offset of the buffer |
|
size |
The length of the buffer |
|
buffer |
a pointer to hold the GstBuffer,
returns GST_FLOW_ERROR if |
[out callee-allocates] |