GstPad

Name

GstPad -- The connection between Elements

Synopsis


#include <gst/gst.h>


#define     GST_PAD_NAME                    (pad)
#define     GST_PAD_ELEMENT_PRIVATE         (pad)
#define     GST_PAD_PARENT                  (pad)
#define     GST_PAD_PAD_TEMPLATE            (pad)
#define     GST_PAD_REALIZE                 (pad)
#define     GST_PAD_DIRECTION               (pad)
#define     GST_PAD_CAPS                    (pad)
#define     GST_PAD_PEER                    (pad)
#define     GST_PAD_CAN_PULL                (pad)
#define     GST_PAD_IS_SINK                 (pad)
#define     GST_PAD_IS_SRC                  (pad)
#define     GST_PAD_IS_CONNECTED            (pad)
struct      GstPad;
void        (*GstPadChainFunction)          (GstPad *pad,
                                             GstBuffer *buf);
GstBuffer*  (*GstPadGetFunction)            (GstPad *pad);
GstBufferPool* (*GstPadBufferPoolFunction)  (GstPad *pad);
GstCaps*    (*GstPadGetCapsFunction)        (GstPad *pad,
                                             GstCaps *caps);
gboolean    (*GstPadEventFunction)          (GstPad *pad,
                                             GstEvent *event);
GstPadConnectReturn (*GstPadConnectFunction)
                                            (GstPad *pad,
                                             GstCaps *caps);
enum        GstPadConnectReturn;
gboolean    (*GstPadConvertFunction)        (GstPad *pad,
                                             GstFormat src_format,
                                             gint64 src_value,
                                             GstFormat *dest_format,
                                             gint64 *dest_value);
gboolean    (*GstPadDispatcherFunc)         (GstPad *pad,
                                             gpointer data);
GList*      (*GstPadIntConnFunction)        (GstPad *pad);
enum        GstPadQueryType;
gboolean    (*GstPadQueryFunction)          (GstPad *pad,
                                             GstPadQueryType type,
                                             GstFormat *format,
                                             gint64 *value);
enum        GstPadDirection;
enum        GstPadFlags;
GstPad*     gst_pad_new                     (const gchar *name,
                                             GstPadDirection direction);
GstPad*     gst_pad_custom_new              (GType type,
                                             const gchar *name,
                                             GstPadDirection direction);
GstPad*     gst_pad_custom_new_from_template
                                            (GType type,
                                             GstPadTemplate *templ,
                                             const gchar *name);
#define     gst_pad_destroy                 (pad)
GstPad*     gst_pad_new_from_template       (GstPadTemplate *templ,
                                             const gchar *name);
GstPadDirection gst_pad_get_direction       (GstPad *pad);
void        gst_pad_set_chain_function      (GstPad *pad,
                                             GstPadChainFunction chain);
void        gst_pad_set_get_function        (GstPad *pad,
                                             GstPadGetFunction get);
void        gst_pad_set_bufferpool_function (GstPad *pad,
                                             GstPadBufferPoolFunction bufpool);
void        gst_pad_set_connect_function    (GstPad *pad,
                                             GstPadConnectFunction connect);
void        gst_pad_set_getcaps_function    (GstPad *pad,
                                             GstPadGetCapsFunction getcaps);
gboolean    gst_pad_try_set_caps            (GstPad *pad,
                                             GstCaps *caps);
GstCaps*    gst_pad_get_caps                (GstPad *pad);
gboolean    gst_pad_check_compatibility     (GstPad *srcpad,
                                             GstPad *sinkpad);
void        gst_pad_set_name                (GstPad *pad,
                                             const gchar *name);
const gchar* gst_pad_get_name               (GstPad *pad);
void        gst_pad_set_element_private     (GstPad *pad,
                                             gpointer priv);
gpointer    gst_pad_get_element_private     (GstPad *pad);
void        gst_pad_set_parent              (GstPad *pad,
                                             GstObject *parent);
GstElement* gst_pad_get_parent              (GstPad *pad);
GstScheduler* gst_pad_get_scheduler         (GstPad *pad);
void        gst_pad_set_scheduler           (GstPad *pad,
                                             GstScheduler *sched);
void        gst_pad_unset_scheduler         (GstPad *pad);
GstElement* gst_pad_get_real_parent         (GstPad *pad);
void        gst_pad_add_ghost_pad           (GstPad *pad,
                                             GstPad *ghostpad);
void        gst_pad_remove_ghost_pad        (GstPad *pad,
                                             GstPad *ghostpad);
GList*      gst_pad_get_ghost_pad_list      (GstPad *pad);
GstPad*     gst_pad_get_peer                (GstPad *pad);
gboolean    gst_pad_connect                 (GstPad *srcpad,
                                             GstPad *sinkpad);
gboolean    gst_pad_connect_filtered        (GstPad *srcpad,
                                             GstPad *sinkpad,
                                             GstCaps *filtercaps);
gboolean    gst_pad_reconnect_filtered      (GstPad *srcpad,
                                             GstPad *sinkpad,
                                             GstCaps *filtercaps);
gboolean    gst_pad_try_reconnect_filtered  (GstPad *srcpad,
                                             GstPad *sinkpad,
                                             GstCaps *filtercaps);
void        gst_pad_disconnect              (GstPad *srcpad,
                                             GstPad *sinkpad);
gboolean    gst_pad_can_connect             (GstPad *srcpad,
                                             GstPad *sinkpad);
gboolean    gst_pad_can_connect_filtered    (GstPad *srcpad,
                                             GstPad *sinkpad,
                                             GstCaps *filtercaps);
void        gst_pad_push                    (GstPad *pad,
                                             GstBuffer *buf);
GstBuffer*  gst_pad_pull                    (GstPad *pad);
GstBufferPool* gst_pad_get_bufferpool       (GstPad *pad);
void        gst_pad_load_and_connect        (xmlNodePtr self,
                                             GstObject *parent);
GstPadConnectReturn gst_pad_proxy_connect   (GstPad *pad,
                                             GstCaps *caps);
GstPadTemplate* gst_pad_get_pad_template    (GstPad *pad);
GstCaps*    gst_pad_get_pad_template_caps   (GstPad *pad);
GstCaps*    gst_pad_get_allowed_caps        (GstPad *pad);
gboolean    gst_pad_recalc_allowed_caps     (GstPad *pad);
gboolean    gst_pad_perform_negotiate       (GstPad *srcpad,
                                             GstPad *sinkpad);
xmlNodePtr  gst_pad_ghost_save_thyself      (GstPad *pad,
                                             GstElement *bin,
                                             xmlNodePtr parent);
GstBuffer*  gst_pad_peek                    (GstPad *pad);
GstPad*     gst_pad_select                  (GList *padlist);
GstPad*     gst_pad_selectv                 (GstPad *pad,
                                             ...);
gboolean    gst_pad_dispatcher              (GstPad *pad,
                                             GstPadDispatcherFunc dispatch,
                                             gpointer data);
gboolean    gst_pad_send_event              (GstPad *pad,
                                             GstEvent *event);
gboolean    gst_pad_event_default           (GstPad *pad,
                                             GstEvent *event);
void        gst_pad_set_event_function      (GstPad *pad,
                                             GstPadEventFunction event);
void        gst_pad_set_convert_function    (GstPad *pad,
                                             GstPadConvertFunction convert);
gboolean    gst_pad_convert                 (GstPad *pad,
                                             GstFormat src_format,
                                             gint64 src_value,
                                             GstFormat *dest_format,
                                             gint64 *dest_value);
gboolean    gst_pad_convert_default         (GstPad *pad,
                                             GstFormat src_format,
                                             gint64 src_value,
                                             GstFormat *dest_format,
                                             gint64 *dest_value);
GList*      gst_pad_get_internal_connections
                                            (GstPad *pad);
GList*      gst_pad_get_internal_connections_default
                                            (GstPad *pad);
void        gst_pad_set_internal_connection_function
                                            (GstPad *pad,
                                             GstPadIntConnFunction intconn);
void        gst_pad_set_query_function      (GstPad *pad,
                                             GstPadQueryFunction query);
gboolean    gst_pad_query                   (GstPad *pad,
                                             GstPadQueryType type,
                                             GstFormat *format,
                                             gint64 *value);
gboolean    gst_pad_query_default           (GstPad *pad,
                                             GstPadQueryType type,
                                             GstFormat *format,
                                             gint64 *value);
struct      GstRealPad;
#define     GST_RPAD_SCHED                  (pad)
#define     GST_RPAD_DIRECTION              (pad)
#define     GST_RPAD_CAPS                   (pad)
#define     GST_RPAD_PEER                   (pad)
#define     GST_RPAD_BUFPEN                 (pad)
#define     GST_RPAD_CHAINFUNC              (pad)
#define     GST_RPAD_FILTER                 (pad)
#define     GST_RPAD_APPFILTER              (pad)
#define     GST_RPAD_GETFUNC                (pad)
#define     GST_RPAD_BUFFERPOOLFUNC         (pad)
#define     GST_RPAD_CHAINHANDLER           (pad)
#define     GST_RPAD_EVENTFUNC              (pad)
#define     GST_RPAD_EVENTHANDLER           (pad)
#define     GST_RPAD_GETHANDLER             (pad)
#define     GST_RPAD_CONNECTFUNC            (pad)
#define     GST_RPAD_GETCAPSFUNC            (pad)
#define     GST_RPAD_CONVERTFUNC            (pad)
#define     GST_RPAD_INTCONNFUNC            (pad)
#define     GST_RPAD_QUERYFUNC              (pad)
#define     GST_GPAD_REALPAD                (pad)
struct      GstGhostPad;
GstPad*     gst_ghost_pad_new               (gchar *name,
                                             GstPad *pad);

Object Hierarchy


  GObject
   +----GstObject
         +----GstPad

Description

GstElement are connected to each other via "pads", which are extremely light-weight generic connections. After two pad are retrieved from an element with gst_element_get_pad(), the pads can be connected with gst_pad_connect().

Pads are typically created from a GstPadTemplate with gst_pad_new_from_template().

Pad have GstCaps attached to it to describe the media type they are capable of dealing with. gst_pad_get_caps() and gst_pad_set_caps() are used to manipulate the caps of the pads. Pads created from a padtemplate cannot set capabilities that are incompatible with the padtemplates capabilities.

Pads without padtemplates can be created with gst_pad_new() which takes a direction and a name as an argument.

gst_pad_get_parent() will retrieve the GstElement that owns the pad.

GstElements creating a pad will typicilally use the various gst_pad_set_*_function() calls to register callbacks for various events on the pads.

GstElements will use gst_pad_push() and gst_pad_pull() to push out or pull a buffer in. The gst_pad_pullregion() function can be used to request for a buffer with a specific offset (in time or in bytes). gst_pad_select() and gst_pad_selectv() are use by plugins to wait on a set of pads for a new GstBuffer or GstEvent.

To send an event on a pad, use gst_pad_send_event().

Details

GST_PAD_NAME()

#define GST_PAD_NAME(pad)		(GST_OBJECT_NAME(pad))

Get the name of the pad.


GST_PAD_ELEMENT_PRIVATE()

#define GST_PAD_ELEMENT_PRIVATE(pad)	(((GstPad *)(pad))->element_private)

Get the private data set by the element that owns the pad.


GST_PAD_PARENT()

#define GST_PAD_PARENT(pad)		((GstElement *)(GST_OBJECT_PARENT(pad)))

Get the parent element of this pad.


GST_PAD_PAD_TEMPLATE()

#define GST_PAD_PAD_TEMPLATE(pad)	(((GstPad *)(pad))->padtemplate)

Get the padtemplate that was used to create this pad. NULL if no padtemplate was used.


GST_PAD_REALIZE()

#define GST_PAD_REALIZE(pad)		(GST_IS_REAL_PAD(pad) ? ((GstRealPad *)(pad)) : GST_GPAD_REALPAD(pad))

Return the real pad of this pad.


GST_PAD_DIRECTION()

#define GST_PAD_DIRECTION(pad)		GST_RPAD_DIRECTION(GST_PAD_REALIZE(pad))

Get the pad direction.


GST_PAD_CAPS()

#define GST_PAD_CAPS(pad)		GST_RPAD_CAPS(GST_PAD_REALIZE(pad))

Get the capabilities of a pad.


GST_PAD_PEER()

#define GST_PAD_PEER(pad)		GST_PAD_CAST(GST_RPAD_PEER(GST_PAD_REALIZE(pad)))

Get the peerpad of this pad.


GST_PAD_CAN_PULL()

#define GST_PAD_CAN_PULL(pad)		(GST_IS_REAL_PAD(pad) && GST_REAL_PAD(pad)->gethandler != NULL)

Can this pad be used to pull a buffer.


GST_PAD_IS_SINK()

#define GST_PAD_IS_SINK(pad)		(GST_PAD_DIRECTION(pad) == GST_PAD_SINK)

Check if the pad is a sinkpad.


GST_PAD_IS_SRC()

#define GST_PAD_IS_SRC(pad)		(GST_PAD_DIRECTION(pad) == GST_PAD_SRC)

Check if the pad is a srcpad.


GST_PAD_IS_CONNECTED()

#define GST_PAD_IS_CONNECTED(pad)	(GST_PAD_PEER(pad) != NULL)

Checks if the pad is connected


struct GstPad

struct GstPad;


GstPadChainFunction ()

void        (*GstPadChainFunction)          (GstPad *pad,
                                             GstBuffer *buf);

The function that will be called when chaining buffers.


GstPadGetFunction ()

GstBuffer*  (*GstPadGetFunction)            (GstPad *pad);

The function that will be called when pulling a buffer.


GstPadBufferPoolFunction ()

GstBufferPool* (*GstPadBufferPoolFunction)  (GstPad *pad);

The function that will be called when a bufferpool is requested from this pad.


GstPadGetCapsFunction ()

GstCaps*    (*GstPadGetCapsFunction)        (GstPad *pad,
                                             GstCaps *caps);

Return the caps of the specified pad. By default this function will return the pad template caps but can optionally be overridden.


GstPadEventFunction ()

gboolean    (*GstPadEventFunction)          (GstPad *pad,
                                             GstEvent *event);

Function signature to handle an event for the pad.


GstPadConnectFunction ()

GstPadConnectReturn (*GstPadConnectFunction)
                                            (GstPad *pad,
                                             GstCaps *caps);

Function signature to handle a new connection on the pad.


enum GstPadConnectReturn

typedef enum {
  GST_PAD_CONNECT_REFUSED = -1,
  GST_PAD_CONNECT_DELAYED =  0,
  GST_PAD_CONNECT_OK      =  1,
  GST_PAD_CONNECT_DONE    =  2
} GstPadConnectReturn;

The result of a pad connection.


GstPadConvertFunction ()

gboolean    (*GstPadConvertFunction)        (GstPad *pad,
                                             GstFormat src_format,
                                             gint64 src_value,
                                             GstFormat *dest_format,
                                             gint64 *dest_value);

The signature of a convert function.


GstPadDispatcherFunc ()

gboolean    (*GstPadDispatcherFunc)         (GstPad *pad,
                                             gpointer data);

The signature of the dispatcher callback.


GstPadIntConnFunction ()

GList*      (*GstPadIntConnFunction)        (GstPad *pad);

The signature of the internal pad connection function


enum GstPadQueryType

typedef enum {
  GST_PAD_QUERY_TOTAL,
  GST_PAD_QUERY_POSITION,
  GST_PAD_QUERY_LATENCY,
  GST_PAD_QUERY_JITTER
} GstPadQueryType;

The different supported query types


GstPadQueryFunction ()

gboolean    (*GstPadQueryFunction)          (GstPad *pad,
                                             GstPadQueryType type,
                                             GstFormat *format,
                                             gint64 *value);

The signature of query function


enum GstPadDirection

typedef enum {
  GST_PAD_UNKNOWN,
  GST_PAD_SRC,
  GST_PAD_SINK
} GstPadDirection;

The direction this pad is.


enum GstPadFlags

typedef enum {
  GST_PAD_DISABLED		= GST_OBJECT_FLAG_LAST,
  GST_PAD_EOS,

  GST_PAD_FLAG_LAST		= GST_OBJECT_FLAG_LAST + 4
} GstPadFlags;

Flags for the pad.


gst_pad_new ()

GstPad*     gst_pad_new                     (const gchar *name,
                                             GstPadDirection direction);

Create a new pad with given name.


gst_pad_custom_new ()

GstPad*     gst_pad_custom_new              (GType type,
                                             const gchar *name,
                                             GstPadDirection direction);

Create a new pad with given name from the given type.


gst_pad_custom_new_from_template ()

GstPad*     gst_pad_custom_new_from_template
                                            (GType type,
                                             GstPadTemplate *templ,
                                             const gchar *name);

Create a new pad with given name from the given template.


gst_pad_destroy()

#define			gst_pad_destroy(pad)			gst_object_destroy (GST_OBJECT (pad))

Destroy the pad.


gst_pad_new_from_template ()

GstPad*     gst_pad_new_from_template       (GstPadTemplate *templ,
                                             const gchar *name);

Create a new pad with given name from the given template.


gst_pad_get_direction ()

GstPadDirection gst_pad_get_direction       (GstPad *pad);

Get the direction of the pad.


gst_pad_set_chain_function ()

void        gst_pad_set_chain_function      (GstPad *pad,
                                             GstPadChainFunction chain);

Set the given chain function for the pad.


gst_pad_set_get_function ()

void        gst_pad_set_get_function        (GstPad *pad,
                                             GstPadGetFunction get);

Set the given get function for the pad.


gst_pad_set_bufferpool_function ()

void        gst_pad_set_bufferpool_function (GstPad *pad,
                                             GstPadBufferPoolFunction bufpool);

Set the given bufferpool function for the pad.


gst_pad_set_connect_function ()

void        gst_pad_set_connect_function    (GstPad *pad,
                                             GstPadConnectFunction connect);

Set the given connect function for the pad. It will be called when the pad is connected or reconnected with caps.


gst_pad_set_getcaps_function ()

void        gst_pad_set_getcaps_function    (GstPad *pad,
                                             GstPadGetCapsFunction getcaps);

Set the given getcaps function for the pad.


gst_pad_try_set_caps ()

gboolean    gst_pad_try_set_caps            (GstPad *pad,
                                             GstCaps *caps);

Try to set the caps on the given pad.


gst_pad_get_caps ()

GstCaps*    gst_pad_get_caps                (GstPad *pad);

Get the capabilities of this pad.


gst_pad_check_compatibility ()

gboolean    gst_pad_check_compatibility     (GstPad *srcpad,
                                             GstPad *sinkpad);

Check if two pads have compatible capabilities.


gst_pad_set_name ()

void        gst_pad_set_name                (GstPad *pad,
                                             const gchar *name);

Set the name of a pad.


gst_pad_get_name ()

const gchar* gst_pad_get_name               (GstPad *pad);

Get the name of a pad.


gst_pad_set_element_private ()

void        gst_pad_set_element_private     (GstPad *pad,
                                             gpointer priv);

Set the given private data pointer to the pad. This function can only be used by the element that own the pad.


gst_pad_get_element_private ()

gpointer    gst_pad_get_element_private     (GstPad *pad);

Get the private data of a pad. The private data can only be set by the parent element of this pad.


gst_pad_set_parent ()

void        gst_pad_set_parent              (GstPad *pad,
                                             GstObject *parent);

Sets the parent object of a pad.


gst_pad_get_parent ()

GstElement* gst_pad_get_parent              (GstPad *pad);

Get the parent object of this pad.


gst_pad_get_scheduler ()

GstScheduler* gst_pad_get_scheduler         (GstPad *pad);

Get the scheduler of the pad


gst_pad_set_scheduler ()

void        gst_pad_set_scheduler           (GstPad *pad,
                                             GstScheduler *sched);

Set the scheduler for the pad


gst_pad_unset_scheduler ()

void        gst_pad_unset_scheduler         (GstPad *pad);

Unset the scheduler for the pad


gst_pad_get_real_parent ()

GstElement* gst_pad_get_real_parent         (GstPad *pad);

Get the real parent object of this pad. If the pad is a ghostpad, the actual owner of the real pad is returned, as opposed to the gst_pad_get_parent().


gst_pad_add_ghost_pad ()

void        gst_pad_add_ghost_pad           (GstPad *pad,
                                             GstPad *ghostpad);

Add a ghost pad to a pad.


gst_pad_remove_ghost_pad ()

void        gst_pad_remove_ghost_pad        (GstPad *pad,
                                             GstPad *ghostpad);

Remove a ghost pad from a pad.


gst_pad_get_ghost_pad_list ()

GList*      gst_pad_get_ghost_pad_list      (GstPad *pad);

Get the ghost parents of this pad.


gst_pad_get_peer ()

GstPad*     gst_pad_get_peer                (GstPad *pad);

Get the peer pad of this pad.


gst_pad_connect ()

gboolean    gst_pad_connect                 (GstPad *srcpad,
                                             GstPad *sinkpad);

Connects the source pad to the sink pad.


gst_pad_connect_filtered ()

gboolean    gst_pad_connect_filtered        (GstPad *srcpad,
                                             GstPad *sinkpad,
                                             GstCaps *filtercaps);

Connects the source pad to the sink pad. The filter indicates the media type that should flow trought this connection.


gst_pad_reconnect_filtered ()

gboolean    gst_pad_reconnect_filtered      (GstPad *srcpad,
                                             GstPad *sinkpad,
                                             GstCaps *filtercaps);

Try to reconnect this pad and its peer with the specified caps.


gst_pad_try_reconnect_filtered ()

gboolean    gst_pad_try_reconnect_filtered  (GstPad *srcpad,
                                             GstPad *sinkpad,
                                             GstCaps *filtercaps);

Try to reconnect this pad and its peer with the specified caps


gst_pad_disconnect ()

void        gst_pad_disconnect              (GstPad *srcpad,
                                             GstPad *sinkpad);

Disconnects the source pad from the sink pad.


gst_pad_can_connect ()

gboolean    gst_pad_can_connect             (GstPad *srcpad,
                                             GstPad *sinkpad);

Checks if the source pad can be connected to the sink pad.


gst_pad_can_connect_filtered ()

gboolean    gst_pad_can_connect_filtered    (GstPad *srcpad,
                                             GstPad *sinkpad,
                                             GstCaps *filtercaps);

Checks if the source pad and the sink pad can be connected. The filter indicates the media type that should flow trought this connection.


gst_pad_push ()

void        gst_pad_push                    (GstPad *pad,
                                             GstBuffer *buf);

Push a buffer to the peer of the pad.


gst_pad_pull ()

GstBuffer*  gst_pad_pull                    (GstPad *pad);

Pull a buffer from the peer pad.


gst_pad_get_bufferpool ()

GstBufferPool* gst_pad_get_bufferpool       (GstPad *pad);

Get the bufferpool of the peer pad of the given pad.


gst_pad_load_and_connect ()

void        gst_pad_load_and_connect        (xmlNodePtr self,
                                             GstObject *parent);

Read the pad definition from the XML node and connect the given pad in element to a pad of an element up in the hierarchy.


gst_pad_proxy_connect ()

GstPadConnectReturn gst_pad_proxy_connect   (GstPad *pad,
                                             GstCaps *caps);

Proxy the connect function to the specified pad.


gst_pad_get_pad_template ()

GstPadTemplate* gst_pad_get_pad_template    (GstPad *pad);

Get the padtemplate object of this pad.


gst_pad_get_pad_template_caps ()

GstCaps*    gst_pad_get_pad_template_caps   (GstPad *pad);

Get the capabilities of this pad.


gst_pad_get_allowed_caps ()

GstCaps*    gst_pad_get_allowed_caps        (GstPad *pad);

Get the caps of the allowed media types that can go through this pad.


gst_pad_recalc_allowed_caps ()

gboolean    gst_pad_recalc_allowed_caps     (GstPad *pad);

Attempt to reconnect the pad to its peer through its filter, set with gst_pad_[re]connect_filtered. This function is useful when a plugin has new capabilities on a pad and wants to notify the peer.


gst_pad_perform_negotiate ()

gboolean    gst_pad_perform_negotiate       (GstPad *srcpad,
                                             GstPad *sinkpad);

Try to negotiate the pads.


gst_pad_ghost_save_thyself ()

xmlNodePtr  gst_pad_ghost_save_thyself      (GstPad *pad,
                                             GstElement *bin,
                                             xmlNodePtr parent);

Saves the ghost pad into an xml representation.


gst_pad_peek ()

GstBuffer*  gst_pad_peek                    (GstPad *pad);

Peek for a buffer from the peer pad.


gst_pad_select ()

GstPad*     gst_pad_select                  (GList *padlist);

Wait for a buffer on the list of pads.


gst_pad_selectv ()

GstPad*     gst_pad_selectv                 (GstPad *pad,
                                             ...);

Wait for a buffer on the given of pads.


gst_pad_dispatcher ()

gboolean    gst_pad_dispatcher              (GstPad *pad,
                                             GstPadDispatcherFunc dispatch,
                                             gpointer data);

Invoke the given dispatcher function on all internally connected pads of the given pad. The GstPadDispatcherFunc should return TRUE when no further pads need to be preocessed.


gst_pad_send_event ()

gboolean    gst_pad_send_event              (GstPad *pad,
                                             GstEvent *event);

Send the event to the pad.


gst_pad_event_default ()

gboolean    gst_pad_event_default           (GstPad *pad,
                                             GstEvent *event);

Invoke the default event handler for the given pad.


gst_pad_set_event_function ()

void        gst_pad_set_event_function      (GstPad *pad,
                                             GstPadEventFunction event);

Set the given event handler for the pad.


gst_pad_set_convert_function ()

void        gst_pad_set_convert_function    (GstPad *pad,
                                             GstPadConvertFunction convert);

Set the given convert function for the pad.


gst_pad_convert ()

gboolean    gst_pad_convert                 (GstPad *pad,
                                             GstFormat src_format,
                                             gint64 src_value,
                                             GstFormat *dest_format,
                                             gint64 *dest_value);

Invoke a conversion on the pad.


gst_pad_convert_default ()

gboolean    gst_pad_convert_default         (GstPad *pad,
                                             GstFormat src_format,
                                             gint64 src_value,
                                             GstFormat *dest_format,
                                             gint64 *dest_value);

Invoke the default converter on a pad. This will forward the call to the pad obtained using the internal connection of the element.


gst_pad_get_internal_connections ()

GList*      gst_pad_get_internal_connections
                                            (GstPad *pad);

Get a GList of pads that this pad is connected to internally to the parent element.


gst_pad_get_internal_connections_default ()

GList*      gst_pad_get_internal_connections_default
                                            (GstPad *pad);

Get a GList of pads that this pad is connected to internally to the parent element.


gst_pad_set_internal_connection_function ()

void        gst_pad_set_internal_connection_function
                                            (GstPad *pad,
                                             GstPadIntConnFunction intconn);

Set the given internal connection function for the pad.


gst_pad_set_query_function ()

void        gst_pad_set_query_function      (GstPad *pad,
                                             GstPadQueryFunction query);

Set the given query function for the pad.


gst_pad_query ()

gboolean    gst_pad_query                   (GstPad *pad,
                                             GstPadQueryType type,
                                             GstFormat *format,
                                             gint64 *value);

Query a pad for one of the available GstPadQuery properties.


gst_pad_query_default ()

gboolean    gst_pad_query_default           (GstPad *pad,
                                             GstPadQueryType type,
                                             GstFormat *format,
                                             gint64 *value);

Invoke the default query function on a pad.


struct GstRealPad

struct GstRealPad {
  GstPad 			pad;

  GstCaps 			*caps;
  GstCaps 			*filter;
  GstCaps 			*appfilter;
  GstPadDirection 		direction;

  GstScheduler			*sched;
  gpointer			sched_private;

  GstRealPad 			*peer;

  GstBuffer 			*bufpen;

  GstPadChainFunction 		chainfunc;
  GstPadChainFunction 		chainhandler;
  GstPadGetFunction 		getfunc;
  GstPadGetFunction		gethandler;

  GstPadEventFunction		eventfunc;
  GstPadEventFunction		eventhandler;
  GstPadConvertFunction		convertfunc;
  GstPadQueryFunction		queryfunc;
  GstPadIntConnFunction		intconnfunc;

  GstPadGetCapsFunction 	getcapsfunc;
  GstPadConnectFunction 	connectfunc;
  GstPadBufferPoolFunction 	bufferpoolfunc;

  GList *ghostpads;
};


GST_RPAD_SCHED()

#define GST_RPAD_SCHED(pad)		(((GstRealPad *)(pad))->sched)

Get the scheduler of this real pad.


GST_RPAD_DIRECTION()

#define GST_RPAD_DIRECTION(pad)		(((GstRealPad *)(pad))->direction)

Get the direction of the real pad.


GST_RPAD_CAPS()

#define GST_RPAD_CAPS(pad)		(((GstRealPad *)(pad))->caps)

Get the caps of the real pad.


GST_RPAD_PEER()

#define GST_RPAD_PEER(pad)		(((GstRealPad *)(pad))->peer)

Get the peer element of the real pad.


GST_RPAD_BUFPEN()

#define GST_RPAD_BUFPEN(pad)		(((GstRealPad *)(pad))->bufpen)

Get the bufpen of the real pad.


GST_RPAD_CHAINFUNC()

#define GST_RPAD_CHAINFUNC(pad)		(((GstRealPad *)(pad))->chainfunc)

Get the chain function of the real pad.


GST_RPAD_FILTER()

#define GST_RPAD_FILTER(pad)		(((GstRealPad *)(pad))->filter)

Get the filter from the pad


GST_RPAD_APPFILTER()

#define GST_RPAD_APPFILTER(pad)		(((GstRealPad *)(pad))->appfilter)

Get the application filter for this pad


GST_RPAD_GETFUNC()

#define GST_RPAD_GETFUNC(pad)		(((GstRealPad *)(pad))->getfunc)

Get get getfunction of the real pad.


GST_RPAD_BUFFERPOOLFUNC()

#define GST_RPAD_BUFFERPOOLFUNC(pad)	(((GstRealPad *)(pad))->bufferpoolfunc)

Get the bufferpoolfunction from the real pad.


GST_RPAD_CHAINHANDLER()

#define GST_RPAD_CHAINHANDLER(pad)	(((GstRealPad *)(pad))->chainhandler)

Get the eventhandler function from the real pad.


GST_RPAD_EVENTFUNC()

#define GST_RPAD_EVENTFUNC(pad)		(((GstRealPad *)(pad))->eventfunc)

Get the event function of this real pad.


GST_RPAD_EVENTHANDLER()

#define GST_RPAD_EVENTHANDLER(pad)	(((GstRealPad *)(pad))->eventhandler)

Get the eventhandler function of this real pad.


GST_RPAD_GETHANDLER()

#define GST_RPAD_GETHANDLER(pad)	(((GstRealPad *)(pad))->gethandler)

Get the gethandler function of this real pad.


GST_RPAD_CONNECTFUNC()

#define GST_RPAD_CONNECTFUNC(pad)	(((GstRealPad *)(pad))->connectfunc)

Get the connect function of the pad


GST_RPAD_GETCAPSFUNC()

#define GST_RPAD_GETCAPSFUNC(pad)	(((GstRealPad *)(pad))->getcapsfunc)

Get the getcaps function of this pad


GST_RPAD_CONVERTFUNC()

#define GST_RPAD_CONVERTFUNC(pad)	(((GstRealPad *)(pad))->convertfunc)

Get the convert function of this pad


GST_RPAD_INTCONNFUNC()

#define GST_RPAD_INTCONNFUNC(pad)	(((GstRealPad *)(pad))->intconnfunc)

Get the internal connection function of this pad


GST_RPAD_QUERYFUNC()

#define GST_RPAD_QUERYFUNC(pad)		(((GstRealPad *)(pad))->queryfunc)

Get the query function of this pad


GST_GPAD_REALPAD()

#define GST_GPAD_REALPAD(pad)		(((GstGhostPad *)(pad))->realpad)

Get the real pad of this ghost pad.


struct GstGhostPad

struct GstGhostPad;


gst_ghost_pad_new ()

GstPad*     gst_ghost_pad_new               (gchar *name,
                                             GstPad *pad);

Create a new ghost pad associated with the given pad.

See Also

GstPadTemplate, GstElement, GstEvent