COTHREAD_STACKSIZE #define COTHREAD_STACKSIZE 8192 COTHREAD_MAXTHREADS #define COTHREAD_MAXTHREADS 16 STACK_SIZE #define STACK_SIZE 0x200000 CURRENT_STACK_FRAME #define CURRENT_STACK_FRAME ({ char __csf; &__csf; }) cothread_state cothread_context cothread_func int int argc,char **argv COTHREAD_STARTED #define COTHREAD_STARTED 0x01 cothread_state struct cothread_state { cothread_context *ctx; int threadnum; cothread_func func; int argc; char **argv; int flags; int *sp; int *top_sp; int *pc; jmp_buf jmp; }; cothread_context struct cothread_context { cothread_state *threads[COTHREAD_MAXTHREADS]; int nthreads; int current; GHashTable *data; }; cothread_init cothread_context * cothread_create cothread_state * cothread_context *ctx cothread_setfunc void cothread_state *thread, cothread_func func,int argc, char **argv cothread_getcurrent int void cothread_switch void cothread_state *thread cothread_set_data void cothread_state *thread, gchar *key, gpointer data cothread_get_data gpointer cothread_state *thread, gchar *key cothread_main cothread_state * cothread_context *ctx gst_init void int *argc,char **argv[] gst_main void void gst_main_quit void void gst_bin_details extern GstElementDetails gst_bin_details; GST_TYPE_BIN #define GST_TYPE_BIN \ (gst_bin_get_type()) GST_BIN #define GST_BIN(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_BIN,GstBin)) GST_BIN_CLASS #define GST_BIN_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_BIN,GstBinClass)) GST_IS_BIN #define GST_IS_BIN(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_BIN)) GST_IS_BIN_CLASS #define GST_IS_BIN_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_BIN)) GstBinFlags typedef enum { /* this bin is a manager of child elements, i.e. a pipeline or thread */ GST_BIN_FLAG_MANAGER = GST_ELEMENT_FLAG_LAST, /* we prefer to have cothreads when its an option, over chain-based */ GST_BIN_FLAG_PREFER_COTHREADS, /* padding */ GST_BIN_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 4, } GstBinFlags; GstBin GstBinClass _GstBinChain GstBin struct GstBin { GstElement element; /* our children */ gint numchildren; GList *children; /* iteration state */ gboolean need_cothreads; GList *managed_elements; gint num_managed_elements; GList *chains; gint num_chains; GList *entries; gint num_entries; cothread_context *threadcontext; gboolean use_cothreads; }; _GstBinChain struct _GstBinChain { GList *elements; gint num_elements; GList *entries; gboolean need_cothreads; }; gst_bin_get_type GtkType void gst_bin_new GstElement * gchar *name gst_bin_destroy #define gst_bin_destroy(bin) gst_object_destroy(GST_OBJECT(bin)) gst_bin_add void GstBin *bin,GstElement *element gst_bin_remove void GstBin *bin,GstElement *element gst_bin_get_by_name GstElement * GstBin *bin,gchar *name gst_bin_get_list GList * GstBin *bin gst_bin_create_plan void GstBin *bin gst_bin_schedule void GstBin *bin gst_bin_set_state_type gboolean GstBin *bin,GstElementState state,GtkType type gst_bin_iterate void GstBin *bin gst_bin_use_cothreads void GstBin *bin,gboolean enabled GST_BUFFER #define GST_BUFFER(buf) \ ((GstBuffer *)(buf)) GST_BUFFER_FLAGS #define GST_BUFFER_FLAGS(buf) \ (GST_BUFFER(buf)->flags) GST_BUFFER_FLAG_IS_SET #define GST_BUFFER_FLAG_IS_SET(buf,flag) \ (GST_BUFFER_FLAGS(buf) & (flag)) GST_BUFFER_FLAG_SET #define GST_BUFFER_FLAG_SET(buf,flag) \ G_STMT_START{ (GST_BUFFER_FLAGS(buf) |= (flag)); }G_STMT_END GST_BUFFER_FLAG_UNSET #define GST_BUFFER_FLAG_UNSET(buf,flag) \ G_STMT_START{ (GST_BUFFER_FLAGS(buf) &= ~(flag)); }G_STMT_END GST_BUFFER_TYPE #define GST_BUFFER_TYPE(buf) (GST_BUFFER(buf)->type) GST_BUFFER_DATA #define GST_BUFFER_DATA(buf) (GST_BUFFER(buf)->data) GST_BUFFER_SIZE #define GST_BUFFER_SIZE(buf) (GST_BUFFER(buf)->size) GST_BUFFER_OFFSET #define GST_BUFFER_OFFSET(buf) (GST_BUFFER(buf)->offset) GST_BUFFER_MAXSIZE #define GST_BUFFER_MAXSIZE(buf) (GST_BUFFER(buf)->maxsize) GST_BUFFER_TIMESTAMP #define GST_BUFFER_TIMESTAMP(buf) (GST_BUFFER(buf)->timestamp) GST_BUFFER_LOCK #define GST_BUFFER_LOCK(buf) (g_mutex_lock(GST_BUFFER(buf)->lock)) GST_BUFFER_TRYLOCK #define GST_BUFFER_TRYLOCK(buf) (g_mutex_trylock(GST_BUFFER(buf)->lock)) GST_BUFFER_UNLOCK #define GST_BUFFER_UNLOCK(buf) (g_mutex_unlock(GST_BUFFER(buf)->lock)) GstBufferFlags typedef enum { GST_BUFFER_READONLY, GST_BUFFER_ORIGINAL, GST_BUFFER_DONTFREE, GST_BUFFER_FLUSH, GST_BUFFER_EOS, } GstBufferFlags; GstBuffer GstBuffer struct GstBuffer { /* locking */ GMutex *lock; /* refcounting */ #ifdef HAVE_ATOMIC_H atomic_t refcount; #define GST_BUFFER_REFCOUNT(buf) (atomic_read(&(GST_BUFFER((buf))->refcount))) #else int refcount; #define GST_BUFFER_REFCOUNT(buf) (GST_BUFFER(buf)->refcount) #endif /* data type of this buffer */ guint16 type; /* flags */ guint16 flags; /* pointer to data, its size, and offset in original source if known */ guchar *data; guint32 size; guint32 maxsize; guint32 offset; /* timestamp */ guint64 timestamp; /* max age */ guint64 maxage; /* pointer to metadata, is really lame right now */ GSList *metas; /* subbuffer support, who's my parent? */ GstBuffer *parent; /* this is a pointer to the buffer pool (if any) */ GstBufferPool *pool; }; gst_buffer_new GstBuffer * void gst_buffer_new_from_pool GstBuffer * GstBufferPool *pool gst_buffer_create_sub GstBuffer * GstBuffer *parent, guint32 offset, guint32 size gst_buffer_append GstBuffer * GstBuffer *buffer, GstBuffer *append gst_buffer_ref void GstBuffer *buffer gst_buffer_ref_by_count void GstBuffer *buffer, int count gst_buffer_unref void GstBuffer *buffer gst_buffer_destroy void GstBuffer *buffer gst_buffer_add_meta void GstBuffer *buffer, GstMeta *meta gst_buffer_remove_meta void GstBuffer *buffer, GstMeta *meta gst_buffer_get_first_meta GstMeta * GstBuffer *buffer gst_buffer_get_metas GSList * GstBuffer *buffer GstClockTime typedef guint64 GstClockTime; GstClockTimeDiff typedef gint64 GstClockTimeDiff; GST_CLOCK_DIFF #define GST_CLOCK_DIFF(s, e) (GstClockTimeDiff)((s)-(e)) GstClock GstClock struct GstClock { gchar *name; GstClockTime start_time; GstClockTime current_time; GstClockTimeDiff adjust; gboolean locking; GList *sinkobjects; gint num, num_locked; GMutex *sinkmutex; GMutex *lock; }; gst_clock_new GstClock * gchar *name gst_clock_get_system GstClock * void gst_clock_register void GstClock *clock, GstObject *obj gst_clock_set void GstClock *clock, GstClockTime time gst_clock_reset void GstClock *clock gst_clock_wait void GstClock *clock, GstClockTime time, GstObject *obj gst_clock_current_diff GstClockTimeDiff GstClock *clock, GstClockTime time GST_TYPE_CONNECTION #define GST_TYPE_CONNECTION \ (gst_connection_get_type()) GST_CONNECTION #define GST_CONNECTION(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_CONNECTION,GstConnection)) GST_CONNECTION_CLASS #define GST_CONNECTION_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_CONNECTION,GstConnectionClass)) GST_IS_CONNECTION #define GST_IS_CONNECTION(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_CONNECTION)) GST_IS_CONNECTION_CLASS #define GST_IS_CONNECTION_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_CONNECTION)) GstConnection GstConnectionClass GstConnection struct GstConnection { GstElement element; }; gst_connection_get_type GtkType void gst_connection_new GstElement * gchar *name GstElementState typedef enum { GST_STATE_NONE_PENDING = -1, GST_STATE_NULL = 0, GST_STATE_READY = 1, GST_STATE_PLAYING = 2, GST_STATE_PAUSED = 3, } GstElementState; GstElementStateReturn typedef enum { GST_STATE_FAILURE = 0, GST_STATE_SUCCESS = 1, GST_STATE_ASYNC = 2, } GstElementStateReturn; GST_STATE #define GST_STATE(obj) (GST_ELEMENT(obj)->current_state) GST_STATE_PENDING #define GST_STATE_PENDING(obj) (GST_ELEMENT(obj)->pending_state) GST_STATE_TRANSITION #define GST_STATE_TRANSITION(obj) ((GST_STATE(obj)<<4) | GST_STATE_PENDING(obj)) GST_STATE_NULL_TO_READY #define GST_STATE_NULL_TO_READY ((GST_STATE_NULL<<4) | GST_STATE_READY) GST_STATE_READY_TO_PLAYING #define GST_STATE_READY_TO_PLAYING ((GST_STATE_READY<<4) | GST_STATE_PLAYING) GST_STATE_PLAYING_TO_PAUSED #define GST_STATE_PLAYING_TO_PAUSED ((GST_STATE_PLAYING<<4) | GST_STATE_PAUSED) GST_STATE_PAUSED_TO_PLAYING #define GST_STATE_PAUSED_TO_PLAYING ((GST_STATE_PAUSED<<4) | GST_STATE_PLAYING) GST_STATE_PLAYING_TO_READY #define GST_STATE_PLAYING_TO_READY ((GST_STATE_PLAYING<<4) | GST_STATE_READY) GST_STATE_READY_TO_NULL #define GST_STATE_READY_TO_NULL ((GST_STATE_READY<<4) | GST_STATE_NULL) GST_TYPE_ELEMENT #define GST_TYPE_ELEMENT \ (gst_element_get_type()) GST_ELEMENT #define GST_ELEMENT(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_ELEMENT,GstElement)) GST_ELEMENT_CLASS #define GST_ELEMENT_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_ELEMENT,GstElementClass)) GST_IS_ELEMENT #define GST_IS_ELEMENT(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_ELEMENT)) GST_IS_ELEMENT_CLASS #define GST_IS_ELEMENT_CLASS(klass) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_ELEMENT)) GstElementFlags typedef enum { /* element is complex (for some def.) and generally require a cothread */ GST_ELEMENT_COMPLEX = GST_OBJECT_FLAG_LAST, /* input and output pads aren't directly coupled to each other examples: queues, multi-output async readers, etc. */ GST_ELEMENT_DECOUPLED, /* this element should be placed in a thread if at all possible */ GST_ELEMENT_THREAD_SUGGESTED, /* this element is incable of seeking (FIXME: does this apply to filters?) */ GST_ELEMENT_NO_SEEK, /* there is a new loopfunction ready for placement */ GST_ELEMENT_NEW_LOOPFUNC, /* the cothread holding this element needs to be stopped */ GST_ELEMENT_COTHREAD_STOPPING, /* the element has to be scheduled as a cothread for any sanity */ GST_ELEMENT_USE_COTHREAD, /* use some padding for future expansion */ GST_ELEMENT_FLAG_LAST = GST_OBJECT_FLAG_LAST + 8, } GstElementFlags; GST_ELEMENT_IS_THREAD_SUGGESTED #define GST_ELEMENT_IS_THREAD_SUGGESTED(obj) (GST_FLAG_IS_SET(obj,GST_ELEMENT_THREAD_SUGGESTED)) GST_ELEMENT_IS_COTHREAD_STOPPING #define GST_ELEMENT_IS_COTHREAD_STOPPING(obj) (GST_FLAG_IS_SET(obj,GST_ELEMENT_COTHREAD_STOPPING)) GstElement GstElementClass GstElementDetails GstElementFactory GstElementLoopFunction void GstElement *element GstElement struct GstElement { GstObject object; gchar *name; guint8 current_state; guint8 pending_state; GstElementLoopFunction loopfunc; cothread_state *threadstate; guint16 numpads; guint16 numsrcpads; guint16 numsinkpads; GList *pads; GstElement *manager; }; GstElementDetails struct GstElementDetails { gchar *longname; /* long, english name */ gchar *klass; /* type of element, kinda */ gchar *description; /* insights of one form or another */ gchar *version; /* version of the element */ gchar *author; /* who wrote this thing? */ gchar *copyright; /* copyright details (year, etc.) */ }; GstElementFactory struct GstElementFactory { gchar *name; /* name of element */ GtkType type; /* unique GtkType of element */ GstElementDetails *details; /* pointer to details struct */ GList *padtemplates; }; gst_element_get_type GtkType void gst_element_new GstElement * void gst_element_destroy #define gst_element_destroy(element) gst_object_destroy (GST_OBJECT (element)) gst_element_set_loop_function void GstElement *element,GstElementLoopFunction loop gst_element_set_name void GstElement *element, gchar *name gst_element_get_name const gchar * GstElement *element gst_element_set_manager void GstElement *element, GstElement *manager gst_element_get_manager GstElement * GstElement *element gst_element_add_pad void GstElement *element, GstPad *pad gst_element_get_pad GstPad * GstElement *element, gchar *name gst_element_get_pad_list GList * GstElement *element gst_element_get_padtemplate_list GList * GstElement *element gst_element_add_ghost_pad void GstElement *element, GstPad *pad gst_element_connect void GstElement *src, gchar *srcpadname,GstElement *dest, gchar *destpadname gst_element_set_state gint GstElement *element, GstElementState state gst_element_error void GstElement *element, gchar *error gst_element_get_factory GstElementFactory * GstElement *element gst_element_save_thyself xmlNodePtr GstElement *element, xmlNodePtr parent gst_element_load_thyself GstElement * xmlNodePtr parent, GHashTable *elements gst_elementfactory_new GstElementFactory * gchar *name,GtkType type,GstElementDetails *details gst_elementfactory_destroy void GstElementFactory *elementfactory gst_elementfactory_add_padtemplate void GstElementFactory *elementfactory,GstPadTemplate *temp gst_elementfactory_find GstElementFactory * gchar *name gst_elementfactory_get_list GList * void gst_elementfactory_can_src_caps gboolean GstElementFactory *factory,GstCaps *caps gst_elementfactory_can_sink_caps gboolean GstElementFactory *factory,GstCaps *caps gst_elementfactory_create GstElement * GstElementFactory *factory,gchar *name gst_elementfactory_make GstElement * gchar *factoryname, gchar *name gst_elementfactory_save_thyself xmlNodePtr GstElementFactory *factory, xmlNodePtr parent gst_elementfactory_load_thyself GstElementFactory * xmlNodePtr parent GST_TYPE_FILTER #define GST_TYPE_FILTER \ (gst_filter_get_type()) GST_FILTER #define GST_FILTER(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_FILTER,GstFilter)) GST_FILTER_CLASS #define GST_FILTER_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_FILTER,GstFilterClass)) GST_IS_FILTER #define GST_IS_FILTER(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_FILTER)) GST_IS_FILTER_CLASS #define GST_IS_FILTER_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_FILTER)) GstFilter GstFilterClass GST_FILTER_FLAG_LAST #define GST_FILTER_FLAG_LAST GST_ELEMENT_FLAG_LAST GstFilter struct GstFilter { GstElement element; }; gst_filter_get_type GtkType void gst_filter_new GstElement * gchar *name GST_SHOW_INFO #define GST_SHOW_INFO gst_info #define gst_info(format,args...) fprintf(stderr,format,##args) gst_info #define gst_info(format,args...) GST_META #define GST_META(meta) ((GstMeta *)(meta)) GST_META_FLAGS #define GST_META_FLAGS(meta) \ (GST_META(meta)->flags) GST_META_FLAG_IS_SET #define GST_META_FLAG_IS_SET(meta,flag) \ (GST_META_FLAGS(meta) & (flag)) GST_META_FLAG_SET #define GST_META_FLAG_SET(meta,flag) \ G_STMT_START{ (GST_META_FLAGS(meta) |= (flag)); }G_STMT_END GST_META_FLAG_UNSET #define GST_META_FLAG_UNSET(meta,flag) \ G_STMT_START{ (GST_META_FLAGS(meta) &= ~(flag)); }G_STMT_END GstMetaFlags typedef enum { GST_META_FREEABLE = 1 << 0, } GstMetaFlags; GstMeta GstMeta struct GstMeta { /* locking */ GMutex *lock; /* refcounting */ #ifdef HAVE_ATOMIC_H atomic_t refcount; #else int refcount; #endif guint16 type; guint16 flags; void *data; guint16 size; }; gst_meta_new_size GstMeta * gint size gst_meta_new #define gst_meta_new(type) (type *)gst_meta_new_size(sizeof(type)) gst_meta_ref void GstMeta *meta gst_meta_unref void GstMeta *meta GST_TYPE_OBJECT #define GST_TYPE_OBJECT \ (gst_object_get_type()) GST_OBJECT #define GST_OBJECT(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_OBJECT,GstObject)) GST_OBJECT_CLASS #define GST_OBJECT_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_OBJECT,GstObjectClass)) GST_IS_OBJECT #define GST_IS_OBJECT(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_OBJECT)) GST_IS_OBJECT_CLASS #define GST_IS_OBJECT_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_OBJECT)) GstObject GstObjectClass GST_OBJECT_FLAG_LAST #define GST_OBJECT_FLAG_LAST 4 GstObject struct GstObject { GtkObject object; /* have to have a refcount for the object */ #ifdef HAVE_ATOMIC_H atomic_t refcount; #else int refcount; #endif /* locking for all sorts of things (like the refcount) */ GMutex *lock; /* this objects parent */ GstObject *parent; }; GST_FLAGS #define GST_FLAGS(obj) GTK_OBJECT_FLAGS(obj) GST_FLAG_IS_SET #define GST_FLAG_IS_SET(obj,flag) (GST_FLAGS (obj) & (1<<(flag))) GST_FLAG_SET #define GST_FLAG_SET(obj,flag) G_STMT_START{ (GST_FLAGS (obj) |= (1<<(flag))); }G_STMT_END GST_FLAG_UNSET #define GST_FLAG_UNSET(obj,flag) G_STMT_START{ (GST_FLAGS (obj) &= ~(1<<(flag))); }G_STMT_END GST_LOCK #define GST_LOCK(obj) (g_mutex_lock(GST_OBJECT(obj)->lock)) GST_TRYLOCK #define GST_TRYLOCK(obj) (g_mutex_trylock(GST_OBJECT(obj)->lock)) GST_UNLOCK #define GST_UNLOCK(obj) (g_mutex_unlock(GST_OBJECT(obj)->lock)) gst_object_get_type GtkType void gst_object_new GstObject * void gst_object_set_parent void GstObject *object,GstObject *parent gst_object_get_parent GstObject * GstObject *object gst_object_unparent void GstObject *object gst_object_ref #define gst_object_ref(object) gtk_object_ref(GTK_OBJECT(object)); gst_object_unref #define gst_object_unref(object) gtk_object_unref(GTK_OBJECT(object)); gst_object_sink #define gst_object_sink(object) gtk_object_sink(GTK_OBJECT(object)); gst_object_destroy #define gst_object_destroy(object) gtk_object_destroy(GTK_OBJECT(object)) GST_TYPE_PAD #define GST_TYPE_PAD (gst_pad_get_type ()) GST_PAD #define GST_PAD(obj) (GTK_CHECK_CAST ((obj), GST_TYPE_PAD,GstPad)) GST_PAD_CLASS #define GST_PAD_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GST_TYPE_PAD,GstPadClass)) GST_IS_PAD #define GST_IS_PAD(obj) (GTK_CHECK_TYPE ((obj), GST_TYPE_PAD)) GST_IS_PAD_CLASS #define GST_IS_PAD_CLASS(obj) (GTK_CHECK_CLASS_TYPE ((klass), GST_TYPE_PAD)) GST_PAD_CONNECTED #define GST_PAD_CONNECTED(pad) ((pad) && (pad)->peer != NULL) GST_PAD_CAN_PULL #define GST_PAD_CAN_PULL(pad) ((pad) && (pad)->pullfunc != NULL) GstPad GstPadClass GstPadTemplate GstPadTemplateClass GstPadChainFunction void GstPad *pad,GstBuffer *buf GstPadGetFunction GstBuffer * GstPad *pad GstPadGetRegionFunction GstBuffer * GstPad *pad, gulong offset, gulong size GstPadQoSFunction void GstPad *pad, glong qos_message GstPadPushFunction void GstPad *pad, GstBuffer *buf GstPadPullFunction GstBuffer * GstPad *pad GstPadPullRegionFunction GstBuffer * GstPad *pad, gulong offset, gulong size GstPadDirection typedef enum { GST_PAD_UNKNOWN, GST_PAD_SRC, GST_PAD_SINK, } GstPadDirection; GstPadFlags typedef enum { GST_PAD_DISABLED = GST_OBJECT_FLAG_LAST, GST_PAD_EOS, GST_PAD_FLAG_LAST = GST_OBJECT_FLAG_LAST + 4, } GstPadFlags; GstPad struct GstPad { GstObject object; gchar *name; GstCaps *caps; cothread_state *threadstate; GstPadDirection direction; GstPad *peer; GstBuffer *bufpen; GstPadChainFunction chainfunc; GstPadGetFunction getfunc; GstPadGetRegionFunction getregionfunc; GstPadQoSFunction qosfunc; GstPadPushFunction pushfunc; GstPadPullFunction pullfunc; GstPadPullRegionFunction pullregionfunc; GstObject *parent; GList *ghostparents; GstPadTemplate *padtemplate; /* the template for this pad */ }; GST_TYPE_PADTEMPLATE #define GST_TYPE_PADTEMPLATE (gst_padtemplate_get_type ()) GST_PADTEMPLATE #define GST_PADTEMPLATE(obj) (GTK_CHECK_CAST ((obj), GST_TYPE_PADTEMPLATE,GstPad)) GST_PADTEMPLATE_CLASS #define GST_PADTEMPLATE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GST_TYPE_PADTEMPLATE,GstPadClass)) GST_IS_PADTEMPLATE #define GST_IS_PADTEMPLATE(obj) (GTK_CHECK_TYPE ((obj), GST_TYPE_PADTEMPLATE)) GST_IS_PADTEMPLATE_CLASS #define GST_IS_PADTEMPLATE_CLASS(obj) (GTK_CHECK_CLASS_TYPE ((klass), GST_TYPE_PADTEMPLATE)) GstPadPresence typedef enum { GST_PAD_ALWAYS, GST_PAD_SOMETIMES, } GstPadPresence; GstPadTemplate struct GstPadTemplate { GstObject object; gchar *name_template; GstPadDirection direction; GstPadPresence presence; GstCaps *caps; }; GstPadFactoryEntry typedef gpointer GstPadFactoryEntry; GstPadFactory[] typedef GstPadFactoryEntry GstPadFactory[]; GST_PAD_FACTORY_ALWAYS #define GST_PAD_FACTORY_ALWAYS GINT_TO_POINTER(GST_PAD_ALWAYS) GST_PAD_FACTORY_SOMETIMES #define GST_PAD_FACTORY_SOMETIMES GINT_TO_POINTER(GST_PAD_SOMETIMES) GST_PAD_FACTORY_SRC #define GST_PAD_FACTORY_SRC GINT_TO_POINTER(GST_PAD_SRC) GST_PAD_FACTORY_SINK #define GST_PAD_FACTORY_SINK GINT_TO_POINTER(GST_PAD_SINK) gst_pad_get_type GtkType void gst_pad_new GstPad * gchar *name, GstPadDirection direction gst_pad_destroy #define gst_pad_destroy(pad) gst_object_destroy (GST_OBJECT (pad)) gst_pad_new_from_template GstPad * GstPadTemplate *temp, gchar *name gst_pad_get_direction GstPadDirection GstPad *pad gst_pad_set_chain_function void GstPad *pad, GstPadChainFunction chain gst_pad_set_get_function void GstPad *pad, GstPadGetFunction get gst_pad_set_getregion_function void GstPad *pad, GstPadGetRegionFunction getregion gst_pad_set_qos_function void GstPad *pad, GstPadQoSFunction qos gst_pad_set_caps void GstPad *pad, GstCaps *caps gst_pad_get_caps GstCaps * GstPad *pad gst_pad_set_name void GstPad *pad, const gchar *name gst_pad_get_name const gchar * GstPad *pad gst_pad_set_parent void GstPad *pad, GstObject *parent gst_pad_get_parent GstObject * GstPad *pad gst_pad_add_ghost_parent void GstPad *pad, GstObject *parent gst_pad_remove_ghost_parent void GstPad *pad, GstObject *parent gst_pad_get_ghost_parents GList * GstPad *pad gst_pad_get_peer GstPad * GstPad *pad gst_pad_connect void GstPad *srcpad, GstPad *sinkpad gst_pad_disconnect void GstPad *srcpad, GstPad *sinkpad gst_pad_push void GstPad *pad, GstBuffer *buffer gst_pad_push #define gst_pad_push(pad,buf) G_STMT_START{ \ if ((pad)->peer->pushfunc) ((pad)->peer->pushfunc)((pad)->peer,(buf)); \ }G_STMT_END gst_pad_pull GstBuffer * GstPad *pad gst_pad_pull_region GstBuffer * GstPad *pad, gulong offset, gulong size gst_pad_pull #define gst_pad_pull(pad) \ (((pad)->peer->pullfunc) ? ((pad)->peer->pullfunc)((pad)->peer) : NULL) gst_pad_pullregion #define gst_pad_pullregion(pad,offset,size) \ (((pad)->peer->pullregionfunc) ? ((pad)->peer->pullregionfunc)((pad)->peer,(offset),(size)) : NULL) gst_pad_handle_qos void GstPad *pad, glong qos_message gst_pad_save_thyself xmlNodePtr GstPad *pad, xmlNodePtr parent gst_pad_load_and_connect void xmlNodePtr parent, GstObject *element, GHashTable *elements gst_padtemplate_get_type GtkType void gst_padtemplate_new GstPadTemplate * GstPadFactory *factory gst_padtemplate_create GstPadTemplate * gchar *name_template,GstPadDirection direction, GstPadPresence presence,GstCaps *caps gst_padtemplate_save_thyself xmlNodePtr GstPadTemplate *pad, xmlNodePtr parent gst_padtemplate_load_thyself GstPadTemplate * xmlNodePtr parent gst_pipeline_details extern GstElementDetails gst_pipeline_details; GST_TYPE_PIPELINE #define GST_TYPE_PIPELINE \ (gst_pipeline_get_type()) GST_PIPELINE #define GST_PIPELINE(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_PIPELINE,GstPipeline)) GST_PIPELINE_CLASS #define GST_PIPELINE_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_PIPELINE,GstPipelineClass)) GST_IS_PIPELINE #define GST_IS_PIPELINE(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_PIPELINE)) GST_IS_PIPELINE_CLASS #define GST_IS_PIPELINE_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_PIPELINE)) GstPipeline GstPipelineClass GstPipeline struct GstPipeline { GstBin bin; GstElement *src; /* we only allow one src element */ GList *sinks; /* and multiple sinks */ }; gst_pipeline_get_type GtkType void gst_pipeline_new GstElement * guchar *name gst_pipeline_destroy #define gst_pipeline_destroy(pipeline) gst_object_destroy(GST_OBJECT(pipeline)) gst_pipeline_add_src void GstPipeline *pipeline, GstElement *src gst_pipeline_add_sink void GstPipeline *pipeline, GstElement *sink gst_pipeline_autoplug gboolean GstPipeline *pipeline gst_pipeline_iterate void GstPipeline *pipeline GstPlugin GstPluginElement GstPlugin struct GstPlugin { gchar *name; /* name of the plugin */ gchar *longname; /* long name of plugin */ gchar *filename; /* filename it came from */ GList *types; /* list of types provided */ GList *elements; /* list of elements provided */ gboolean loaded; /* if the plugin is in memory */ }; GstPluginInitFunc GstPlugin * GModule *module gst_plugin_new GstPlugin * gchar *name gst_plugin_set_longname void GstPlugin *plugin, gchar *longname gst_plugin_load_all void void gst_plugin_load gboolean gchar *name gst_plugin_load_absolute gboolean gchar *name gst_library_load gboolean gchar *name gst_plugin_add_factory void GstPlugin *plugin, GstElementFactory *factory gst_plugin_add_type void GstPlugin *plugin, GstTypeFactory *factory gst_plugin_find GstPlugin * const gchar *name gst_plugin_get_list GList * void gst_plugin_find_elementfactory GstElementFactory * gchar *name gst_plugin_load_elementfactory GstElementFactory * gchar *name gst_plugin_load_typefactory void gchar *mime gst_plugin_save_thyself xmlNodePtr xmlNodePtr parent gst_plugin_load_thyself void xmlNodePtr parent GST_TYPE_SINK #define GST_TYPE_SINK \ (gst_sink_get_type()) GST_SINK #define GST_SINK(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_SINK,GstSink)) GST_SINK_CLASS #define GST_SINK_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_SINK,GstSinkClass)) GST_IS_SINK #define GST_IS_SINK(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_SINK)) GST_IS_SINK_CLASS #define GST_IS_SINK_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_SINK)) GstSink GstSinkClass GST_SINK_FLAG_LAST #define GST_SINK_FLAG_LAST GST_ELEMENT_FLAG_LAST GstSink struct GstSink { GstElement element; }; gst_sink_get_type GtkType void gst_sink_new GstObject * gchar *name GST_TYPE_SRC #define GST_TYPE_SRC \ (gst_src_get_type()) GST_SRC #define GST_SRC(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_SRC,GstSrc)) GST_SRC_CLASS #define GST_SRC_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_SRC,GstSrcClass)) GST_IS_SRC #define GST_IS_SRC(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_SRC)) GST_IS_SRC_CLASS #define GST_IS_SRC_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_SRC)) GstSrcFlags typedef enum { GST_SRC_ASYNC = GST_ELEMENT_FLAG_LAST, GST_SRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST +2, } GstSrcFlags; GstSrc GstSrcClass GST_SRC_IS_ASYNC #define GST_SRC_IS_ASYNC(obj) (GST_FLAG_IS_SET(obj,GST_SRC_ASYNC)) GstSrc struct GstSrc { GstElement element; }; gst_src_get_type GtkType void gst_src_signal_eos void GstSrc *src GST_TYPE_TEE #define GST_TYPE_TEE \ (gst_tee_get_type()) GST_TEE #define GST_TEE(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_TEE,GstTee)) GST_TEE_CLASS #define GST_TEE_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_TEE,GstTeeClass)) GST_IS_TEE #define GST_IS_TEE(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_TEE)) GST_IS_TEE_CLASS #define GST_IS_TEE_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_TEE)) GstTee GstTeeClass GstTee struct GstTee { GstFilter filter; GstPad *sinkpad; gint numsrcpads; GSList *srcpads; }; gst_tee_get_type GtkType void gst_tee_new GstElement * gchar *name gst_tee_new_pad gchar * GstTee *tee gst_tee_chain void GstPad *pad, GstBuffer *buf gst_thread_details extern GstElementDetails gst_thread_details; GstThreadState typedef enum { GST_THREAD_CREATE = GST_BIN_FLAG_LAST, GST_THREAD_STATE_SPINNING, GST_THREAD_STATE_REAPING, /* padding */ GST_THREAD_FLAG_LAST = GST_BIN_FLAG_LAST + 4, } GstThreadState; GST_TYPE_THREAD #define GST_TYPE_THREAD \ (gst_thread_get_type()) GST_THREAD #define GST_THREAD(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_THREAD,GstThread)) GST_THREAD_CLASS #define GST_THREAD_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_THREAD,GstThreadClass)) GST_IS_THREAD #define GST_IS_THREAD(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_THREAD)) GST_IS_THREAD_CLASS #define GST_IS_THREAD_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_THREAD)) GstThread GstThreadClass GstThread struct GstThread { GstBin bin; pthread_t thread_id; /* id of the thread, if any */ GMutex *lock; /* thread lock/condititon pair... */ GCond *cond; /* used to control the thread */ }; gst_thread_get_type GtkType void gst_thread_new GstElement * guchar *name GstTrace GstTraceEntry GstTrace struct GstTrace { /* where this trace is going */ gchar *filename; int fd; /* current buffer, size, head offset */ GstTraceEntry *buf; gint bufsize; gint bufoffset; }; GstTraceEntry struct GstTraceEntry { guint64 timestamp; guint32 sequence; guint32 data; gchar message[112]; }; gst_trace_new GstTrace * guchar *filename, gint size gst_trace_destroy void GstTrace *trace gst_trace_flush void GstTrace *trace gst_trace_get_size #define gst_trace_get_size(trace) ((trace)->bufsize) gst_trace_get_offset #define gst_trace_get_offset(trace) ((trace)->bufoffset) gst_trace_get_remaining #define gst_trace_get_remaining(trace) ((trace)->bufsize - (trace)->bufoffset) gst_trace_set_default void GstTrace *trace gst_trace_read_tsc void guint64 *dst TRACE_ENABLE #define TRACE_ENABLE gst_trace_add_entry #define gst_trace_add_entry(trace,seq,data,msg) \ if (_gst_trace_on) { \ _gst_trace_add_entry(trace,(guint32)seq,(guint32)data,msg); \ } gst_trace_add_entry #define gst_trace_add_entry(trace,seq,data,msg) GstTypeFindFunc GstCaps * GstBuffer *buf,gpointer priv GstType GstTypeFactory GstType struct GstType { guint16 id; /* type id (assigned) */ gchar *mime; /* MIME type */ gchar *exts; /* space-delimited list of extensions */ GSList *typefindfuncs; /* typefind functions */ }; GstTypeFactory struct GstTypeFactory { gchar *mime; gchar *exts; GstTypeFindFunc typefindfunc; }; gst_type_register guint16 GstTypeFactory *factory gst_type_find_by_mime guint16 gchar *mime gst_type_find_by_ext guint16 gchar *ext gst_type_find_by_id GstType * guint16 id gst_type_get_list GList * void gst_typefactory_save_thyself xmlNodePtr GstTypeFactory *factory, xmlNodePtr parent gst_typefactory_load_thyself GstTypeFactory * xmlNodePtr parent gst_util_get_int_arg gint GtkObject *object, guchar *argname gst_util_get_bool_arg gboolean GtkObject *object, guchar *argname gst_util_get_long_arg glong GtkObject *object, guchar *argname gst_util_get_float_arg gfloat GtkObject *object, guchar *argname gst_util_get_double_arg gdouble GtkObject *object, guchar *argname gst_util_get_string_arg guchar * GtkObject *object, guchar *argname gst_util_get_pointer_arg gpointer GtkObject *object, guchar *argname gst_util_get_widget_arg GtkWidget * GtkObject *object, guchar *argname gst_util_dump_mem void guchar *mem, guint size GST_TYPE_XML #define GST_TYPE_XML \ (gst_object_get_type()) GST_XML #define GST_XML(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_XML,GstXML)) GST_XML_CLASS #define GST_XML_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_XML,GstXMLClass)) GST_IS_XML #define GST_IS_XML(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_XML)) GST_IS_XML_CLASS #define GST_IS_XML_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_XML)) GstXML GstXMLClass GstXML struct GstXML { GtkObject object; GHashTable *elements; GList *topelements; }; gst_xml_get_type GtkType void gst_xml_write xmlDocPtr GstElement *element gst_xml_new GstXML * const guchar *fname, const guchar *root gst_xml_get_element GstElement * GstXML *xml, const guchar *name gst_xml_get_topelements GList * GstXML *xml GstCaps GstCapsFactoryEntry typedef gpointer GstCapsFactoryEntry; GstCapsFactory[] typedef GstCapsFactoryEntry GstCapsFactory[]; GstCaps struct GstCaps { guint16 id; /* type id (major type) */ GstProps *properties; /* properties for this capability */ }; gst_caps_new GstCaps * gchar *mime gst_caps_new_with_props GstCaps * gchar *mime, GstProps *props gst_caps_register GstCaps * GstCapsFactory *factory gst_caps_set_props GstCaps * GstCaps *caps, GstProps *props gst_caps_get_props GstProps * GstCaps *caps gst_caps_check_compatibility gboolean GstCaps *fromcaps, GstCaps *tocaps gst_caps_save_thyself xmlNodePtr GstCaps *caps, xmlNodePtr parent gst_caps_load_thyself GstCaps * xmlNodePtr parent GST_BUFFER_POOL #define GST_BUFFER_POOL(buf) \ ((GstBufferPool *)(buf)) GstBufferPool GstBufferPoolCreateFunction GstBuffer * GstBufferPool *pool, gpointer user_data GstBufferPoolDestroyFunction void GstBufferPool *pool, GstBuffer *buffer, gpointer user_data GstBufferPool struct GstBufferPool { /* will be called when a new buffer is to be created */ GstBufferPoolCreateFunction new_buffer; /* user data to pass with the new_buffer function */ gpointer new_user_data; gpointer destroy_user_data; GstBufferPoolDestroyFunction destroy_buffer; }; gst_buffer_pool_new GstBufferPool * void gst_buffer_pool_new_buffer GstBuffer * GstBufferPool *pool gst_buffer_pool_destroy_buffer void GstBufferPool *pool, GstBuffer *buffer gst_buffer_pool_set_create_function void GstBufferPool *pool,GstBufferPoolCreateFunction create,gpointer user_data gst_buffer_pool_set_destroy_function void GstBufferPool *pool,GstBufferPoolDestroyFunction destroy,gpointer user_data gst_buffer_pool_destroy void GstBufferPool *pool GstCPUFlags typedef enum { GST_CPU_FLAG_MMX = (1<<0), GST_CPU_FLAG_SSE = (1<<1), } GstCPUFlags; gst_cpu_get_flags GstCPUFlags void GET_SP #define GET_SP(target) \ __asm__("movl %%esp, %0" : "=m"(target) : : "esp", "ebp"); SET_SP #define SET_SP(source) \ __asm__("movl %0, %%esp\n" : "=m"(thread->sp)); JUMP #define JUMP(target) \ __asm__("jmp " SYMBOL_NAME_STR(cothread_stub)) SETUP_STACK #define SETUP_STACK(sp) do ; while(0) GET_SP #define GET_SP(target) \ __asm__("stw 1,%0" : "=m"(target) : : "r1"); SET_SP #define SET_SP(source) \ __asm__("lwz 1,%0" : "=m"(source)) JUMP #define JUMP(target) \ __asm__("b " SYMBOL_NAME_STR(cothread_stub)) SETUP_STACK #define SETUP_STACK(sp) \ sp = ((unsigned long *)(sp)) - 4; \ ((struct minimal_ppc_stackframe *)sp)->back_chain = 0; GST_TYPE_FILENAME #define GST_TYPE_FILENAME (gst_extra_get_filename_type()) gst_extra_get_filename_type GtkType void GST_DEBUG_ENABLED #define GST_DEBUG_ENABLED GST_DEBUG_PREFIX #define GST_DEBUG_PREFIX(format,args...) \ "DEBUG(%d:%d)" __PRETTY_FUNCTION__ ":%d" format , getpid() , cothread_getcurrent() , __LINE__ , ## args _debug_function_f void DEBUG #define DEBUG(format,args...) \ (_debug_string != NULL) ? \ fprintf(stderr,GST_DEBUG_PREFIX("%s: "format , _debug_string , ## args )) : \ fprintf(stderr,GST_DEBUG_PREFIX(": "format , ## args )) DEBUG_NOPREFIX #define DEBUG_NOPREFIX(format,args...) fprintf(stderr,format , ## args ) DEBUG_ENTER #define DEBUG_ENTER(format, args...) \ fprintf(stderr,GST_DEBUG_PREFIX(format": entering\n" , ## args )) DEBUG_SET_STRING #define DEBUG_SET_STRING(format, args...) \ gchar *_debug_string = g_strdup_printf(format , ## args ) DEBUG_ENTER_STRING #define DEBUG_ENTER_STRING DEBUG_ENTER("%s",_debug_string) DEBUG_LEAVE #define DEBUG_LEAVE(format, args...) \ if (_debug_string != NULL) g_free(_debug_string),\ fprintf(stderr,GST_DEBUG_PREFIX(format": leaving\n" , ## args )) DEBUG_LEAVE_STRING #define DEBUG_LEAVE_STRING DEBUG_LEAVE("%s",_debug_string) DEBUG #define DEBUG(format, args...) DEBUG_NOPREFIX #define DEBUG_NOPREFIX(format, args...) DEBUG_ENTER #define DEBUG_ENTER(format, args...) DEBUG_LEAVE #define DEBUG_LEAVE(format, args...) DEBUG_SET_STRING #define DEBUG_SET_STRING(format, args...) DEBUG_ENTER_STRING #define DEBUG_ENTER_STRING GST_DEBUG_PAD_NAME #define GST_DEBUG_PAD_NAME(pad) \ ((pad)->parent != NULL) ? gst_element_get_name(GST_ELEMENT((pad)->parent)) : "''", gst_pad_get_name(pad) GST_DEBUG_FUNCPTR #define GST_DEBUG_FUNCPTR(ptr) _gst_debug_register_funcptr((void *)(ptr), #ptr) GST_DEBUG_FUNCPTR_NAME #define GST_DEBUG_FUNCPTR_NAME(ptr) _gst_debug_nameof_funcptr((void *)ptr) GST_DEBUG_FUNCPTR #define GST_DEBUG_FUNCPTR(ptr) (ptr) GST_DEBUG_FUNCPTR_NAME #define GST_DEBUG_FUNCPTR_NAME(ptr) "" GstProps GstPropsFactoryEntry typedef gpointer GstPropsFactoryEntry; GstPropsFactory[] typedef GstPropsFactoryEntry GstPropsFactory[]; GstPropsListFactory[] typedef GstPropsFactory *GstPropsListFactory[]; GstPropsId typedef enum { GST_PROPS_END_ID_NUM = 0, GST_PROPS_LIST_ID_NUM, GST_PROPS_INT_ID_NUM, GST_PROPS_INT_RANGE_ID_NUM, GST_PROPS_FOURCC_ID_NUM, GST_PROPS_BOOL_ID_NUM, } GstPropsId; GST_PROPS_LIST_ID #define GST_PROPS_LIST_ID GINT_TO_POINTER(GST_PROPS_LIST_ID_NUM) GST_PROPS_INT_ID #define GST_PROPS_INT_ID GINT_TO_POINTER(GST_PROPS_INT_ID_NUM) GST_PROPS_INT_RANGE_ID #define GST_PROPS_INT_RANGE_ID GINT_TO_POINTER(GST_PROPS_INT_RANGE_ID_NUM) GST_PROPS_FOURCC_ID #define GST_PROPS_FOURCC_ID GINT_TO_POINTER(GST_PROPS_FOURCC_ID_NUM) GST_PROPS_BOOL_ID #define GST_PROPS_BOOL_ID GINT_TO_POINTER(GST_PROPS_BOOL_ID_NUM) GST_PROPS_LIST #define GST_PROPS_LIST(a...) GST_PROPS_LIST_ID,##a,NULL GST_PROPS_INT #define GST_PROPS_INT(a) GST_PROPS_INT_ID,(GINT_TO_POINTER(a)) GST_PROPS_INT_RANGE #define GST_PROPS_INT_RANGE(a,b) GST_PROPS_INT_RANGE_ID,(GINT_TO_POINTER(a)),(GINT_TO_POINTER(b)) GST_PROPS_FOURCC #define GST_PROPS_FOURCC(a,b,c,d) GST_PROPS_FOURCC_ID,(GINT_TO_POINTER((a)|(b)<<8|(c)<<16|(d)<<24)) GST_PROPS_FOURCC_INT #define GST_PROPS_FOURCC_INT(a) GST_PROPS_FOURCC_ID,(GINT_TO_POINTER(a)) GST_PROPS_BOOLEAN #define GST_PROPS_BOOLEAN(a) GST_PROPS_BOOL_ID,(GINT_TO_POINTER(a)) GstProps struct GstProps { GSList *properties; /* real properties for this property */ }; gst_props_register GstProps * GstPropsFactory factory gst_props_new GstProps * GstPropsFactoryEntry entry, ... gst_props_merge GstProps * GstProps *props, GstProps *tomerge gst_props_check_compatibility gboolean GstProps *fromprops, GstProps *toprops gst_props_save_thyself xmlNodePtr GstProps *props, xmlNodePtr parent gst_props_load_thyself GstProps * xmlNodePtr parent GstPropsEntry GstPropsEntry struct GstPropsEntry { GQuark propid; GstPropsId propstype; union { /* flat values */ gboolean bool_data; guint32 fourcc_data; gint int_data; /* structured values */ struct { GList *entries; } list_data; struct { gint min; gint max; } int_range_data; } data; }; GST_TYPE_AUTOPLUG #define GST_TYPE_AUTOPLUG \ (gst_object_get_type()) GST_AUTOPLUG #define GST_AUTOPLUG(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_AUTOPLUG,GstAutoplug)) GST_AUTOPLUG_CLASS #define GST_AUTOPLUG_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_AUTOPLUG,GstAutoplugClass)) GST_IS_AUTOPLUG #define GST_IS_AUTOPLUG(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_AUTOPLUG)) GST_IS_AUTOPLUG_CLASS #define GST_IS_AUTOPLUG_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUTOPLUG)) GstAutoplug GstAutoplugClass GST_AUTOPLUG_MAX_COST #define GST_AUTOPLUG_MAX_COST 999999 GstAutoplugCostFunction guint gpointer src, gpointer dest, gpointer data GstAutoplugListFunction GList * gpointer data GstAutoplug struct GstAutoplug { GtkObject object; }; gst_autoplug_get_type GtkType void gst_autoplug_caps GList * GstCaps *srccaps, GstCaps *sinkcaps gst_bin_schedule_func void GstBin *bin GST_TYPE_ASYNCDISKSRC #define GST_TYPE_ASYNCDISKSRC \ (gst_asyncdisksrc_get_type()) GST_ASYNCDISKSRC #define GST_ASYNCDISKSRC(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_ASYNCDISKSRC,GstAsyncDiskSrc)) GST_ASYNCDISKSRC_CLASS #define GST_ASYNCDISKSRC_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_ASYNCDISKSRC,GstAsyncDiskSrcClass)) GST_IS_ASYNCDISKSRC #define GST_IS_ASYNCDISKSRC(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_ASYNCDISKSRC)) GST_IS_ASYNCDISKSRC_CLASS #define GST_IS_ASYNCDISKSRC_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_ASYNCDISKSRC)) GstAsyncDiskSrcFlags typedef enum { GST_ASYNCDISKSRC_OPEN = GST_SRC_FLAG_LAST, GST_ASYNCDISKSRC_FLAG_LAST = GST_SRC_FLAG_LAST + 2, } GstAsyncDiskSrcFlags; GstAsyncDiskSrc GstAsyncDiskSrcClass GstAsyncDiskSrc struct GstAsyncDiskSrc { GstSrc src; /* pads */ GstPad *srcpad; /* filename */ gchar *filename; /* fd */ gint fd; /* mapping parameters */ gulong size; /* how long is the file? */ guchar *map; /* where the file is mapped to */ /* details for fallback synchronous read */ gulong curoffset; /* current offset in file */ gulong bytes_per_read; /* bytes per read */ gboolean new_seek; gulong seq; /* buffer sequence number */ }; gst_asyncdisksrc_get_type GtkType void GST_TYPE_AUDIOSINK #define GST_TYPE_AUDIOSINK \ (gst_audiosink_get_type()) GST_AUDIOSINK #define GST_AUDIOSINK(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_AUDIOSINK,GstAudioSink)) GST_AUDIOSINK_CLASS #define GST_AUDIOSINK_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIOSINK,GstAudioSinkClass)) GST_IS_AUDIOSINK #define GST_IS_AUDIOSINK(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_AUDIOSINK)) GST_IS_AUDIOSINK_CLASS #define GST_IS_AUDIOSINK_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSINK)) GstAudioSinkFlags typedef enum { GST_AUDIOSINK_OPEN = GST_SINK_FLAG_LAST, GST_AUDIOSINK_FLAG_LAST = GST_SINK_FLAG_LAST+2, } GstAudioSinkFlags; GstAudioSink GstAudioSinkClass GstAudioSink struct GstAudioSink { GstSink sink; GstPad *sinkpad; //GstClockTime clocktime; GstClock *clock; /* soundcard state */ int fd; int caps; /* the capabilities */ gint format; gint channels; gint frequency; gboolean mute; }; gst_audiosink_get_type GtkType void gst_audiosink_factory_init gboolean GstElementFactory *factory GST_TYPE_AUDIOSRC #define GST_TYPE_AUDIOSRC \ (gst_audiosrc_get_type()) GST_AUDIOSRC #define GST_AUDIOSRC(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_AUDIOSRC,GstAudioSrc)) GST_AUDIOSRC_CLASS #define GST_AUDIOSRC_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIOSRC,GstAudioSrcClass)) GST_IS_AUDIOSRC #define GST_IS_AUDIOSRC(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_AUDIOSRC)) GST_IS_AUDIOSRC_CLASS #define GST_IS_AUDIOSRC_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSRC)) GstAudioSrcFlags typedef enum { GST_AUDIOSRC_OPEN = GST_SRC_FLAG_LAST, GST_AUDIOSRC_FLAG_LAST = GST_SRC_FLAG_LAST+2, } GstAudioSrcFlags; GstAudioSrc GstAudioSrcClass GstAudioSrc struct GstAudioSrc { GstSrc src; /* pads */ GstPad *srcpad; /* sound card */ gint fd; /* audio parameters */ gint format; gint channels; gint frequency; /* blocking */ gulong curoffset; gulong bytes_per_read; gulong seq; MetaAudioRaw *meta; }; gst_audiosrc_get_type GtkType void gst_disksrc_details extern GstElementDetails gst_disksrc_details; GST_TYPE_DISKSRC #define GST_TYPE_DISKSRC \ (gst_disksrc_get_type()) GST_DISKSRC #define GST_DISKSRC(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_DISKSRC,GstDiskSrc)) GST_DISKSRC_CLASS #define GST_DISKSRC_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_DISKSRC,GstDiskSrcClass)) GST_IS_DISKSRC #define GST_IS_DISKSRC(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_DISKSRC)) GST_IS_DISKSRC_CLASS #define GST_IS_DISKSRC_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_DISKSRC)) GstDiskSrcFlags typedef enum { GST_DISKSRC_OPEN = GST_SRC_FLAG_LAST, GST_DISKSRC_FLAG_LAST = GST_SRC_FLAG_LAST+2, } GstDiskSrcFlags; GstDiskSrc GstDiskSrcClass GstDiskSrc struct GstDiskSrc { GstSrc src; /* pads */ GstPad *srcpad; /* file state */ gchar *filename; gint fd; gulong curoffset; /* current offset in file */ gulong bytes_per_read; /* bytes per read */ gboolean new_seek; gulong seq; /* buffer sequence number */ gulong size; }; gst_disksrc_get_type GtkType void GST_TYPE_ESDSINK #define GST_TYPE_ESDSINK \ (gst_esdsink_get_type()) GST_ESDSINK #define GST_ESDSINK(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_ESDSINK,GstEsdSink)) GST_ESDSINK_CLASS #define GST_ESDSINK_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_ESDSINK,GstEsdSinkClass)) GST_IS_ESDSINK #define GST_IS_ESDSINK(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_ESDSINK)) GST_IS_ESDSINK_CLASS #define GST_IS_ESDSINK_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_ESDSINK)) GstEsdSink GstEsdSinkClass GstEsdSink struct GstEsdSink { GstFilter filter; GstPad *sinkpad; /* soundcard state */ int fd; gint format; gint channels; gint frequency; }; gst_esdsink_get_type GtkType void GST_TYPE_FAKESINK #define GST_TYPE_FAKESINK \ (gst_fakesink_get_type()) GST_FAKESINK #define GST_FAKESINK(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_FAKESINK,GstFakeSink)) GST_FAKESINK_CLASS #define GST_FAKESINK_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_FAKESINK,GstFakeSinkClass)) GST_IS_FAKESINK #define GST_IS_FAKESINK(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_FAKESINK)) GST_IS_FAKESINK_CLASS #define GST_IS_FAKESINK_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_FAKESINK)) GstFakeSink GstFakeSinkClass GstFakeSink struct GstFakeSink { GstSink sink; GstPad *sinkpad; }; gst_fakesink_get_type GtkType void GstFakeSrcOutputType typedef enum { FAKESRC_FIRST_LAST_LOOP = 1, FAKESRC_LAST_FIRST_LOOP, FAKESRC_PING_PONG, FAKESRC_ORDERED_RANDOM, FAKESRC_RANDOM, FAKESRC_PATERN_LOOP, FAKESRC_PING_PONG_PATERN, FAKESRC_GET_ALWAYS_SUCEEDS, } GstFakeSrcOutputType; GST_TYPE_FAKESRC #define GST_TYPE_FAKESRC \ (gst_fakesrc_get_type()) GST_FAKESRC #define GST_FAKESRC(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_FAKESRC,GstFakeSrc)) GST_FAKESRC_CLASS #define GST_FAKESRC_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_FAKESRC,GstFakeSrcClass)) GST_IS_FAKESRC #define GST_IS_FAKESRC(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_FAKESRC)) GST_IS_FAKESRC_CLASS #define GST_IS_FAKESRC_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_FAKESRC)) GstFakeSrc GstFakeSrcClass GstFakeSrc struct GstFakeSrc { GstSrc src; gboolean loop_based; gint numsrcpads; GSList *srcpads; GstFakeSrcOutputType output; gchar *patern; GList *paternlist; }; gst_fakesrc_get_type GtkType void GST_TYPE_FDSINK #define GST_TYPE_FDSINK \ (gst_fdsink_get_type()) GST_FDSINK #define GST_FDSINK(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_FDSINK,GstFdSink)) GST_FDSINK_CLASS #define GST_FDSINK_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_FDSINK,GstFdSinkClass)) GST_IS_FDSINK #define GST_IS_FDSINK(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_FDSINK)) GST_IS_FDSINK_CLASS #define GST_IS_FDSINK_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_FDSINK)) GstFdSink GstFdSinkClass GstFdSink struct GstFdSink { GstSink sink; GstPad *sinkpad; int fd; }; gst_fdsink_get_type GtkType void GST_TYPE_FDSRC #define GST_TYPE_FDSRC \ (gst_fdsrc_get_type()) GST_FDSRC #define GST_FDSRC(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_FDSRC,GstFdSrc)) GST_FDSRC_CLASS #define GST_FDSRC_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_FDSRC,GstFdSrcClass)) GST_IS_FDSRC #define GST_IS_FDSRC(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_FDSRC)) GST_IS_FDSRC_CLASS #define GST_IS_FDSRC_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_FDSRC)) GstFdSrc GstFdSrcClass GstFdSrc struct GstFdSrc { GstSrc src; /* pads */ GstPad *srcpad; /* fd */ gint fd; gulong curoffset; /* current offset in file */ gulong bytes_per_read; /* bytes per read */ gulong seq; /* buffer sequence number */ }; gst_fdsrc_get_type GtkType void GST_TYPE_HTTPSRC #define GST_TYPE_HTTPSRC \ (gst_httpsrc_get_type()) GST_HTTPSRC #define GST_HTTPSRC(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_HTTPSRC,GstHttpSrc)) GST_HTTPSRC_CLASS #define GST_HTTPSRC_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_HTTPSRC,GstHttpSrcClass)) GST_IS_HTTPSRC #define GST_IS_HTTPSRC(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_HTTPSRC)) GST_IS_HTTPSRC_CLASS #define GST_IS_HTTPSRC_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_HTTPSRC)) GstHttpSrcFlags typedef enum { GST_HTTPSRC_OPEN = GST_SRC_FLAG_LAST, GST_HTTPSRC_FLAG_LAST = GST_SRC_FLAG_LAST+2, } GstHttpSrcFlags; GstHttpSrc GstHttpSrcClass GstHttpSrc struct GstHttpSrc { GstSrc src; /* pads */ GstPad *srcpad; gchar *url; ghttp_request *request; int fd; gulong curoffset; /* current offset in file */ gulong bytes_per_read; /* bytes per read */ }; gst_httpsrc_get_type GtkType void GST_TYPE_IDENTITY #define GST_TYPE_IDENTITY \ (gst_identity_get_type()) GST_IDENTITY #define GST_IDENTITY(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_IDENTITY,GstIdentity)) GST_IDENTITY_CLASS #define GST_IDENTITY_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_IDENTITY,GstIdentityClass)) GST_IS_IDENTITY #define GST_IS_IDENTITY(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_IDENTITY)) GST_IS_IDENTITY_CLASS #define GST_IS_IDENTITY_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_IDENTITY)) GstIdentity GstIdentityClass GstIdentity struct GstIdentity { GstFilter filter; GstPad *sinkpad; GstPad *srcpad; gboolean loop_based; }; gst_identity_get_type GtkType void GST_TYPE_QUEUE #define GST_TYPE_QUEUE \ (gst_queue_get_type()) GST_QUEUE #define GST_QUEUE(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_QUEUE,GstQueue)) GST_QUEUE_CLASS #define GST_QUEUE_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_QUEUE,GstQueueClass)) GST_IS_QUEUE #define GST_IS_QUEUE(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_QUEUE)) GST_IS_QUEUE_CLASS #define GST_IS_QUEUE_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_QUEUE)) GstQueue GstQueueClass GstQueue struct GstQueue { GstConnection Connection; GstPad *sinkpad; GstPad *srcpad; /* the queue of buffers we're keeping our grubby hands on */ GSList *queue; gint level_buffers; /* number of buffers queued here */ gint max_buffers; /* maximum number of buffers queued here */ gboolean block; /* if set to FALSE, _get returns NULL if queue empty */ gint level_bytes; /* number of bytes queued here */ gint size_buffers; /* size of queue in buffers */ gint size_bytes; /* size of queue in bytes */ GMutex *emptylock; /* used when the queue is empty */ GCond *emptycond; GMutex *fulllock; /* used when the queue is full */ GCond *fullcond; }; gst_queue_get_type GtkType void GST_TYPE_SINESRC #define GST_TYPE_SINESRC \ (gst_sinesrc_get_type()) GST_SINESRC #define GST_SINESRC(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_SINESRC,GstSineSrc)) GST_SINESRC_CLASS #define GST_SINESRC_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_SINESRC,GstSineSrcClass)) GST_IS_SINESRC #define GST_IS_SINESRC(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_SINESRC)) GST_IS_SINESRC_CLASS #define GST_IS_SINESRC_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_SINESRC)) GstSineSrc GstSineSrcClass GstSineSrc struct GstSineSrc { GstSrc src; /* pads */ GstPad *srcpad; /* parameters */ gdouble volume; gint freq; /* audio parameters */ gint format; gint channels; gint frequency; gulong seq; MetaAudioRaw meta; gboolean sentmeta; }; gst_sinesrc_get_type GtkType void GST_TYPE_TYPEFIND #define GST_TYPE_TYPEFIND \ (gst_typefind_get_type()) GST_TYPEFIND #define GST_TYPEFIND(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_TYPEFIND,GstTypeFind)) GST_TYPEFIND_CLASS #define GST_TYPEFIND_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_TYPEFIND,GstTypeFindClass)) GST_IS_TYPEFIND #define GST_IS_TYPEFIND(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_TYPEFIND)) GST_IS_TYPEFIND_CLASS #define GST_IS_TYPEFIND_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_TYPEFIND)) GstTypeFind GstTypeFindClass GstTypeFind struct GstTypeFind { GstSink sink; GstPad *sinkpad; GstCaps *caps; }; gst_typefind_get_type GtkType void GST_TYPE_PIPEFILTER #define GST_TYPE_PIPEFILTER \ (gst_pipefilter_get_type()) GST_PIPEFILTER #define GST_PIPEFILTER(obj) \ (GTK_CHECK_CAST((obj),GST_TYPE_PIPEFILTER,GstPipefilter)) GST_PIPEFILTER_CLASS #define GST_PIPEFILTER_CLASS(klass) \ (GTK_CHECK_CLASS_CAST((klass),GST_TYPE_PIPEFILTER,GstPipefilterClass)) GST_IS_PIPEFILTER #define GST_IS_PIPEFILTER(obj) \ (GTK_CHECK_TYPE((obj),GST_TYPE_PIPEFILTER)) GST_IS_PIPEFILTER_CLASS #define GST_IS_PIPEFILTER_CLASS(obj) \ (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_PIPEFILTER)) GstPipeFilterFlags typedef enum { GST_PIPEFILTER_OPEN = GST_FILTER_FLAG_LAST, GST_PIPEFILTER_FLAG_LAST = GST_FILTER_FLAG_LAST, } GstPipeFilterFlags; GstPipefilter GstPipefilterClass GstPipefilter struct GstPipefilter { GstFilter filter; GstPad *sinkpad; GstPad *srcpad; /* command */ gchar **command; gchar *orig_command; /* fd */ gint fdout[2]; gint fdin[2]; pid_t childpid; gulong curoffset; /* current offset in file */ gulong bytes_per_read; /* bytes per read */ gulong seq; /* buffer sequence number */ }; gst_pipefilter_get_type GtkType void MetaAudioRaw MetaAudioRaw struct MetaAudioRaw { GstMeta meta; /* formatting information */ gint format; gint channels; gint frequency; gint bps; }; MetaAudioSpectrum MetaAudioSpectrum struct MetaAudioSpectrum { GstMeta meta; /* data representation */ gint16 bands; /* how many bands are represented */ gint8 channels; /* how many audio channels are there? */ gboolean interleaved; /* are the channels interleaved? */ /* spectrum details */ gint16 lowfreq; gint16 highfreq; gint16 steps; }; MetaVideoRaw MetaDGA MetaOverlay OverlayClip OverlayClip struct OverlayClip { int x1, x2, y1, y2; }; MetaDGA struct MetaDGA { /* the base address of the screen */ void *base; /* the dimensions of the screen */ int swidth, sheight; /* the number of bytes in a line */ int bytes_per_line; }; MetaOverlay struct MetaOverlay { /* the position of the window */ int wx, wy; /* a reference to the object sending overlay change events */ GtkWidget *overlay_element; /* the number of overlay regions */ int clip_count; /* the overlay regions of the display window */ struct _OverlayClip overlay_clip[32]; gint width; gint height; gboolean did_overlay; gboolean fully_obscured; }; MetaVideoRaw struct MetaVideoRaw { GstMeta meta; /* formatting information */ GstColorSpaceType format; GdkVisual *visual; /* dimensions of the video buffer */ gint width; gint height; /* a pointer to the overlay info if the sink supports this */ MetaOverlay *overlay_info; /* a pointer to the DGA info if the sink supports this */ MetaDGA *dga_info; };