| Top |
| struct | GstElement |
| struct | GstElementClass |
| enum | GstElementFlags |
| enum | GstState |
| enum | GstStateChange |
| enum | GstStateChangeReturn |
| #define | GST_ELEMENT_METADATA_AUTHOR |
| #define | GST_ELEMENT_METADATA_DESCRIPTION |
| #define | GST_ELEMENT_METADATA_DOC_URI |
| #define | GST_ELEMENT_METADATA_ICON_NAME |
| #define | GST_ELEMENT_METADATA_KLASS |
| #define | GST_ELEMENT_METADATA_LONGNAME |
#define GST_STATE_GET_NEXT(cur,pending) ((GstState)((cur) + __GST_SIGN ((gint)(pending) - (gint)(cur))))
#define GST_ELEMENT_IS_LOCKED_STATE(elem) (GST_OBJECT_FLAG_IS_SET(elem,GST_ELEMENT_FLAG_LOCKED_STATE))
void gst_element_class_add_pad_template (GstElementClass *klass,GstPadTemplate *templ);
void gst_element_class_add_static_pad_template (GstElementClass *klass,GstStaticPadTemplate *static_templ);
GstPadTemplate * gst_element_class_get_pad_template (GstElementClass *element_class,const gchar *name);
GList *
gst_element_class_get_pad_template_list
(GstElementClass *element_class);
void gst_element_class_set_metadata (GstElementClass *klass,const gchar *longname,const gchar *classification,const gchar *description,const gchar *author);
void gst_element_class_set_static_metadata (GstElementClass *klass,const gchar *longname,const gchar *classification,const gchar *description,const gchar *author);
void gst_element_class_add_metadata (GstElementClass *klass,const gchar *key,const gchar *value);
void gst_element_class_add_static_metadata (GstElementClass *klass,const gchar *key,const gchar *value);
GstPad * gst_element_get_compatible_pad (GstElement *element,GstPad *pad,GstCaps *caps);
GstPadTemplate * gst_element_get_compatible_pad_template (GstElement *element,GstPadTemplate *compattempl);
GstPad * gst_element_get_request_pad (GstElement *element,const gchar *name);
GstPad * gst_element_get_static_pad (GstElement *element,const gchar *name);
GstPad * gst_element_request_pad (GstElement *element,GstPadTemplate *templ,const gchar *name,const GstCaps *caps);
void gst_element_release_request_pad (GstElement *element,GstPad *pad);
gboolean gst_element_link_many (GstElement *element_1,GstElement *element_2,...);
void gst_element_unlink_many (GstElement *element_1,GstElement *element_2,...);
gboolean gst_element_link_pads (GstElement *src,const gchar *srcpadname,GstElement *dest,const gchar *destpadname);
gboolean gst_element_link_pads_full (GstElement *src,const gchar *srcpadname,GstElement *dest,const gchar *destpadname,GstPadLinkCheck flags);
void gst_element_unlink_pads (GstElement *src,const gchar *srcpadname,GstElement *dest,const gchar *destpadname);
gboolean gst_element_link_pads_filtered (GstElement *src,const gchar *srcpadname,GstElement *dest,const gchar *destpadname,GstCaps *filter);
gboolean gst_element_link_filtered (GstElement *src,GstElement *dest,GstCaps *filter);
const gchar * gst_element_class_get_metadata (GstElementClass *klass,const gchar *key);
void gst_element_set_base_time (GstElement *element,GstClockTime time);
void gst_element_set_start_time (GstElement *element,GstClockTime time);
GstContext * gst_element_get_context (GstElement *element,const gchar *context_type);
GstContext * gst_element_get_context_unlocked (GstElement *element,const gchar *context_type);
#define gst_element_set_name(elem,name) gst_object_set_name(GST_OBJECT_CAST(elem),name)
#define gst_element_get_name(elem) gst_object_get_name(GST_OBJECT_CAST(elem))
#define gst_element_set_parent(elem,parent) gst_object_set_parent(GST_OBJECT_CAST(elem),parent)
#define gst_element_get_parent(elem) gst_object_get_parent(GST_OBJECT_CAST(elem))
GstStateChangeReturn gst_element_set_state (GstElement *element,GstState state);
GstStateChangeReturn gst_element_get_state (GstElement *element,GstState *state,GstState *pending,GstClockTime timeout);
gboolean gst_element_set_locked_state (GstElement *element,gboolean locked_state);
GstStateChangeReturn gst_element_continue_state (GstElement *element,GstStateChangeReturn ret);
const gchar *
gst_element_state_change_return_get_name
(GstStateChangeReturn state_ret);
gboolean
gst_element_sync_state_with_parent (GstElement *element);
GstStateChangeReturn gst_element_change_state (GstElement *element,GstStateChange transition);
void gst_element_message_full (GstElement *element,GstMessageType type,GQuark domain,gint code,gchar *text,gchar *debug,const gchar *file,const gchar *function,gint line);
gboolean gst_element_post_message (GstElement *element,GstMessage *message);
gboolean gst_element_query_convert (GstElement *element,GstFormat src_format,gint64 src_val,GstFormat dest_format,gint64 *dest_val);
gboolean gst_element_query_position (GstElement *element,GstFormat format,gint64 *cur);
gboolean gst_element_query_duration (GstElement *element,GstFormat format,gint64 *duration);
gboolean gst_element_seek_simple (GstElement *element,GstFormat format,GstSeekFlags seek_flags,gint64 seek_pos);
gboolean gst_element_seek (GstElement *element,gdouble rate,GstFormat format,GstSeekFlags flags,GstSeekType start_type,gint64 start,GstSeekType stop_type,gint64 stop);
gulong gst_element_add_property_notify_watch (GstElement *element,const gchar *property_name,gboolean include_value);
gulong gst_element_add_property_deep_notify_watch (GstElement *element,const gchar *property_name,gboolean include_value);
void gst_element_remove_property_notify_watch (GstElement *element,gulong watch_id);
void (*GstElementCallAsyncFunc) (GstElement *element,gpointer user_data);
void gst_element_call_async (GstElement *element,GstElementCallAsyncFunc func,gpointer user_data,GDestroyNotify destroy_notify);
struct GstElement {
GRecMutex state_lock;
/* element state */
GCond state_cond;
guint32 state_cookie;
GstState target_state;
GstState current_state;
GstState next_state;
GstState pending_state;
GstStateChangeReturn last_return;
GstBus *bus;
/* allocated clock */
GstClock *clock;
GstClockTimeDiff base_time; /* NULL/READY: 0 - PAUSED: current time - PLAYING: difference to clock */
GstClockTime start_time;
/* element pads, these lists can only be iterated while holding
* the LOCK or checking the cookie after each LOCK. */
guint16 numpads;
GList *pads;
guint16 numsrcpads;
GList *srcpads;
guint16 numsinkpads;
GList *sinkpads;
guint32 pads_cookie;
/* with object LOCK */
GList *contexts;
};
struct GstElementClass {
GstObjectClass parent_class;
/* the element metadata */
gpointer metadata;
/* factory that the element was created from */
GstElementFactory *elementfactory;
/* templates for our pads */
GList *padtemplates;
gint numpadtemplates;
guint32 pad_templ_cookie;
/* virtual methods for subclasses */
/* request/release pads */
/* FIXME 2.0 harmonize naming with gst_element_request_pad */
GstPad* (*request_new_pad) (GstElement *element, GstPadTemplate *templ,
const gchar* name, const GstCaps *caps);
void (*release_pad) (GstElement *element, GstPad *pad);
/* state changes */
GstStateChangeReturn (*get_state) (GstElement * element, GstState * state,
GstState * pending, GstClockTime timeout);
GstStateChangeReturn (*set_state) (GstElement *element, GstState state);
GstStateChangeReturn (*change_state) (GstElement *element, GstStateChange transition);
void (*state_changed) (GstElement *element, GstState oldstate,
GstState newstate, GstState pending);
/* bus */
void (*set_bus) (GstElement * element, GstBus * bus);
/* set/get clocks */
GstClock* (*provide_clock) (GstElement *element);
gboolean (*set_clock) (GstElement *element, GstClock *clock);
/* query functions */
gboolean (*send_event) (GstElement *element, GstEvent *event);
gboolean (*query) (GstElement *element, GstQuery *query);
gboolean (*post_message) (GstElement *element, GstMessage *message);
void (*set_context) (GstElement *element, GstContext *context);
};
“no-more-pads” signalvoid user_function (GstElement *gstelement, gpointer user_data)
Flags: Run Last
“pad-added” signalvoid user_function (GstElement *gstelement, GstPad *arg1, gpointer user_data)
Flags: Run Last
“pad-removed” signalvoid user_function (GstElement *gstelement, GstPad *arg1, gpointer user_data)
Flags: Run Last