|  |  |  | GStreamer 1.0 Core Reference Manual |  | 
|---|---|---|---|---|
| Top | Description | Object Hierarchy | ||||
#include <gst/gst.h> struct GstProxyPad; struct GstGhostPad; GstPad * gst_ghost_pad_new (const gchar *name,GstPad *target); GstPad * gst_ghost_pad_new_no_target (const gchar *name,GstPadDirection dir); GstPad * gst_ghost_pad_new_from_template (const gchar *name,GstPad *target,GstPadTemplate *templ); GstPad * gst_ghost_pad_new_no_target_from_template (const gchar *name,GstPadTemplate *templ); gboolean gst_ghost_pad_set_target (GstGhostPad *gpad,GstPad *newtarget); GstPad * gst_ghost_pad_get_target (GstGhostPad *gpad); gboolean gst_ghost_pad_construct (GstGhostPad *gpad); gboolean gst_ghost_pad_activate_mode_default (GstPad *pad,GstObject *parent,GstPadMode mode,gboolean active); gboolean gst_ghost_pad_internal_activate_mode_default (GstPad *pad,GstObject *parent,GstPadMode mode,gboolean active); GstProxyPad * gst_proxy_pad_get_internal (GstProxyPad *pad); GstIterator * gst_proxy_pad_iterate_internal_links_default (GstPad *pad,GstObject *parent); GstFlowReturn gst_proxy_pad_chain_default (GstPad *pad,GstObject *parent,GstBuffer *buffer); GstFlowReturn gst_proxy_pad_chain_list_default (GstPad *pad,GstObject *parent,GstBufferList *list); GstFlowReturn gst_proxy_pad_getrange_default (GstPad *pad,GstObject *parent,guint64 offset,guint size,GstBuffer **buffer);
GObject +----GInitiallyUnowned +----GstObject +----GstPad +----GstProxyPad +----GstGhostPad
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.
Last reviewed on 2005-11-18 (0.9.5)
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.
| 
 | the name of the new pad, or NULL to assign a default name. [allow-none] | 
| 
 | the pad to ghost. [transfer none] | 
| Returns : | a new GstPad, or NULL in case of an error. [transfer floating] | 
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.
| 
 | the name of the new pad, or NULL to assign a default name. [allow-none] | 
| 
 | the direction of the ghostpad | 
| Returns : | a new GstPad, or NULL in case of an error. [transfer full] | 
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.
| 
 | the name of the new pad, or NULL to assign a default name. [allow-none] | 
| 
 | the pad to ghost. [transfer none] | 
| 
 | the GstPadTemplate to use on the ghostpad. [transfer none] | 
| Returns : | a new GstPad, or NULL in case of an error. [transfer full] | 
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.
| 
 | the name of the new pad, or NULL to assign a default name. [allow-none] | 
| 
 | the GstPadTemplate to create the ghostpad from. [transfer none] | 
| Returns : | a new GstPad, or NULL in case of an error. [transfer full] | 
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.
| 
 | the GstGhostPad | 
| 
 | the new pad target. [transfer none][allow-none] | 
| Returns : | TRUE if the new target could be set. This function can return FALSE when the internal pads could not be linked. [transfer full] | 
GstPad *            gst_ghost_pad_get_target            (GstGhostPad *gpad);
Get the target pad of gpad. Unref target pad after usage.
| 
 | the GstGhostPad | 
| Returns : | the target GstPad, can be NULL if the ghostpad has no target set. Unref target pad after usage. [transfer full] | 
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 GstProxyPad | 
| Returns : | the target GstProxyPad, can be NULL. Unref target pad after usage. [transfer full] | 
GstIterator * gst_proxy_pad_iterate_internal_links_default (GstPad *pad,GstObject *parent);
Invoke the default iterate internal links function of the proxy pad.
| 
 | the GstPad to get the internal links of. | 
| 
 | the parent of pador NULL. [allow-none] | 
| Returns : | a GstIterator of GstPad, or NULL if padhas no parent. Unref each
returned pad withgst_object_unref(). | 
GstFlowReturn gst_proxy_pad_chain_default (GstPad *pad,GstObject *parent,GstBuffer *buffer);
Invoke the default chain function of the proxy pad.
| 
 | a sink GstPad, returns GST_FLOW_ERROR if not. | 
| 
 | the parent of pador NULL. [allow-none] | 
| 
 | the GstBuffer to send, return GST_FLOW_ERROR if not. [transfer full] | 
| Returns : | a GstFlowReturn from the pad. | 
GstFlowReturn gst_proxy_pad_chain_list_default (GstPad *pad,GstObject *parent,GstBufferList *list);
Invoke the default chain list function of the proxy pad.
| 
 | a sink GstPad, returns GST_FLOW_ERROR if not. | 
| 
 | the parent of pador NULL. [allow-none] | 
| 
 | the GstBufferList to send, return GST_FLOW_ERROR if not. [transfer full] | 
| Returns : | a GstFlowReturn from the pad. | 
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.
| 
 | a src GstPad, returns GST_FLOW_ERROR if not. | 
| 
 | the parent of pad | 
| 
 | The start offset of the buffer | 
| 
 | The length of the buffer | 
| 
 | a pointer to hold the GstBuffer,
returns GST_FLOW_ERROR if NULL. [out callee-allocates] | 
| Returns : | a GstFlowReturn from the pad. |