struct
_GstElement
{
GstObject object;
GStaticRecMutex *state_lock;
GCond *state_cond;
guint32 state_cookie;
GstState current_state;
GstState next_state;
GstState pending_state;
GstStateChangeReturn last_return;
GstBus *bus;
GstClock *
clock
;
GstClockTimeDiff base_time;
guint16 numpads;
GList *pads;
guint16 numsrcpads;
GList *srcpads;
guint16 numsinkpads;
GList *sinkpads;
guint32 pads_cookie;
union
{
struct
{
GstState target_state;
GstClockTime start_time;
} ABI;
gpointer _gst_reserved[GST_PADDING + 0];
} abidata;
};
struct
_GstElementClass
{
GstObjectClass parent_class;
GstElementDetails details;
GstElementFactory *elementfactory;
GList *padtemplates;
gint numpadtemplates;
guint32 pad_templ_cookie;
void
(*pad_added) (GstElement *element, GstPad *pad);
void
(*pad_removed) (GstElement *element, GstPad *pad);
void
(*no_more_pads) (GstElement *element);
GstPad* (*request_new_pad) (GstElement *element, GstPadTemplate *templ,
const
gchar* name);
void
(*release_pad) (GstElement *element, GstPad *pad);
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
(*set_bus) (GstElement * element, GstBus * bus);
GstClock* (*provide_clock) (GstElement *element);
gboolean (*set_clock) (GstElement *element, GstClock *
clock
);
GstIndex* (*get_index) (GstElement *element);
void
(*set_index) (GstElement *element, GstIndex *index);
gboolean (*send_event) (GstElement *element, GstEvent *event);
const
GstQueryType* (*get_query_types) (GstElement *element);
gboolean (*query) (GstElement *element, GstQuery *query);
gpointer meta_data;
GstPad* (*request_new_pad_full) (GstElement *element, GstPadTemplate *templ,
const
gchar* name,
const
GstCaps *caps);
void
(*state_changed) (GstElement *element, GstState oldstate,
GstState newstate, GstState pending);
gpointer _gst_reserved[GST_PADDING-3];
};