+2005-06-27 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * docs/gst/gstreamer-docs.sgml:
+ * docs/gst/gstreamer-sections.txt:
+ * docs/gst/gstreamer.types:
+ * docs/gst/tmpl/gstbasesink.sgml:
+ * docs/gst/tmpl/gstbasesrc.sgml:
+ * docs/gst/tmpl/gstbasetransform.sgml:
+ * docs/gst/tmpl/gstelement.sgml:
+ * docs/gst/tmpl/gstiterator.sgml:
+ * gst/base/gstbasesrc.c:
+ * gst/base/gstbasesrc.h:
+ * gst/base/gstbasetransform.h:
+ * gst/gstelement.c:
+ * gst/gstiterator.h:
+ adding basetransform and iterator docs
+
2005-06-27 Andy Wingo <wingo@pobox.com>
* docs/design/part-activation.txt: Notes on how activation should
<!ENTITY GstBuffer SYSTEM "xml/gstbuffer.xml">
<!ENTITY GstCaps SYSTEM "xml/gstcaps.xml">
<!ENTITY GstClock SYSTEM "xml/gstclock.xml">
+<!--
<!ENTITY GstCompat SYSTEM "xml/gstcompat.xml">
+-->
<!ENTITY GstConfig SYSTEM "xml/gstconfig.xml">
<!ENTITY GstElement SYSTEM "xml/gstelement.xml">
<!ENTITY GstElementDetails SYSTEM "xml/gstelementdetails.xml">
<!ENTITY GstIndex SYSTEM "xml/gstindex.xml">
<!ENTITY GstIndexFactory SYSTEM "xml/gstindexfactory.xml">
<!ENTITY GstInfo SYSTEM "xml/gstinfo.xml">
+<!ENTITY GstIterator SYSTEM "xml/gstiterator.xml">
<!ENTITY GstMacros SYSTEM "xml/gstmacros.xml">
<!ENTITY GstMemChunk SYSTEM "xml/gstmemchunk.xml">
<!ENTITY GstObject SYSTEM "xml/gstobject.xml">
<!ENTITY GstProbe SYSTEM "xml/gstprobe.xml">
<!ENTITY GstQuery SYSTEM "xml/gstquery.xml">
<!ENTITY GstQueue SYSTEM "xml/gstqueue.xml">
-<!ENTITY GstRealPad SYSTEM "xml/gstrealpad.xml">
<!ENTITY GstRegistry SYSTEM "xml/gstregistry.xml">
<!ENTITY GstRegistryPool SYSTEM "xml/gstregistrypool.xml">
<!ENTITY GstScheduler SYSTEM "xml/gstscheduler.xml">
<!ENTITY GstBaseSrc SYSTEM "xml/gstbasesrc.xml">
<!ENTITY GstBaseSink SYSTEM "xml/gstbasesink.xml">
+<!ENTITY GstBaseTransform SYSTEM "xml/gstbasetransform.xml">
<!ENTITY GstFakeSrc SYSTEM "xml/gstfakesrc.xml">
<!ENTITY GstFakeSink SYSTEM "xml/gstfakesink.xml">
&GstIndex;
&GstIndexFactory;
&GstInfo;
+ &GstIterator;
&GstObject;
&GstPad;
&GstPadTemplate;
&GstProbe;
&GstQuery;
&GstQueue;
- &GstRealPad;
&GstRegistry;
&GstRegistryPool;
&GstScheduler;
</chapter>
+<!--
<chapter id="gstreamer-compat">
<title>GStreamer Core Compatibility</title>
<para>
&GstCompat;
</chapter>
+-->
<chapter id="element-types">
<title>GStreamer Core Elements</title>
&GstBaseSrc;
&GstBaseSink;
+ &GstBaseTransform;
</chapter>
gst_element_set_state
gst_element_state_get_name
gst_element_get_factory
+gst_element_get_manager
gst_element_no_more_pads
<SUBSECTION Standard>
GST_ELEMENT
</SECTION>
<SECTION>
+<FILE>gstiterator</FILE>
+<TITLE>GstIterator</TITLE>
+GstIterator
+
+GstIteratorItem
+GstIteratorResult
+
+GstIteratorDisposeFunction
+GstIteratorNextFunction
+GstIteratorItemFunction
+GstIteratorResyncFunction
+GstIteratorFreeFunction
+GstIteratorFoldFunction
+
+GST_ITERATOR
+GST_ITERATOR_LOCK
+GST_ITERATOR_COOKIE
+GST_ITERATOR_ORIG_COOKIE
+
+gst_iterator_new
+gst_iterator_new_list
+
+gst_iterator_next
+gst_iterator_resync
+gst_iterator_free
+gst_iterator_push
+gst_iterator_filter
+gst_iterator_fold
+gst_iterator_foreach
+gst_iterator_find_custom
+
+
+<SUBSECTION Standard>
+<SUBSECTION Private>
+</SECTION>
+
+<SECTION>
<FILE>gstmacros</FILE>
<TITLE>GstMacros</TITLE>
<SUBSECTION Private>
<TITLE>GstBaseSrc</TITLE>
GstBaseSrc
GstBaseSrcClass
+GstBaseSrcFlags
+
+gst_basesrc_is_live
+gst_basesrc_set_live
+
+GST_BASESRC_PAD
<SUBSECTION Standard>
GST_BASESRC
GST_IS_BASESRC
GST_TYPE_BASESRC
GST_BASESRC_CLASS
GST_IS_BASESRC_CLASS
+GST_BASESRC_GET_CLASS
<SUBSECTION Private>
gst_basesrc_get_type
</SECTION>
<FILE>gstbasesink</FILE>
<TITLE>GstBaseSink</TITLE>
GstBaseSink
+GstBaseSinkClass
+
+GST_BASESINK_CLOCK
+GST_BASESINK_PAD
<SUBSECTION Standard>
GstBaseSinkClass
<SUBSECTION Private>
gst_basesink_get_type
</SECTION>
+
+<SECTION>
+<FILE>gstbasetransform</FILE>
+<TITLE>GstBaseTransform</TITLE>
+GstBaseTransform
+GstBaseTransformClass
+<SUBSECTION Standard>
+GST_BASETRANSFORM
+GST_IS_BASETRANSFORM
+GST_TYPE_BASETRANSFORM
+GST_BASETRANSFORM_CLASS
+GST_IS_BASETRANSFORM_CLASS
+GST_BASETRANSFORM_GET_CLASS
+<SUBSECTION Private>
+gst_basetransform_get_type
+</SECTION>
#include <gst/base/gstbasesrc.h>
#include <gst/base/gstbasesink.h>
+#include <gst/base/gstbasetransform.h>
gst_basesrc_get_type
gst_basesink_get_type
+gst_base_transform_get_type
% elements
</para>
+<!-- ##### STRUCT GstBaseSinkClass ##### -->
+<para>
+
+</para>
+
+@parent_class:
+@get_caps:
+@set_caps:
+@buffer_alloc:
+@get_times:
+@unlock:
+@event:
+@preroll:
+@render:
+
+<!-- ##### MACRO GST_BASESINK_CLOCK ##### -->
+<para>
+
+</para>
+
+@obj:
+
+
+<!-- ##### MACRO GST_BASESINK_PAD ##### -->
+<para>
+
+</para>
+
+@obj:
+
+
@event:
@create:
+<!-- ##### ENUM GstBaseSrcFlags ##### -->
+<para>
+
+</para>
+
+@GST_BASESRC_STARTED:
+@GST_BASESRC_FLAG_LAST:
+
+<!-- ##### FUNCTION gst_basesrc_is_live ##### -->
+<para>
+
+</para>
+
+@src:
+@Returns:
+
+
+<!-- ##### FUNCTION gst_basesrc_set_live ##### -->
+<para>
+
+</para>
+
+@src:
+@live:
+
+
+<!-- ##### MACRO GST_BASESRC_PAD ##### -->
+<para>
+
+</para>
+
+@obj:
+
+
--- /dev/null
+<!-- ##### SECTION Title ##### -->
+GstBaseTransform
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### STRUCT GstBaseTransform ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT GstBaseTransformClass ##### -->
+<para>
+
+</para>
+
+@parent_class:
+@set_caps:
+@start:
+@stop:
+@event:
+@transform:
+
@Returns:
+<!-- ##### FUNCTION gst_element_get_manager ##### -->
+<para>
+
+</para>
+
+@element:
+@Returns:
+
+
<!-- ##### FUNCTION gst_element_no_more_pads ##### -->
<para>
--- /dev/null
+<!-- ##### SECTION Title ##### -->
+GstIterator
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### STRUCT GstIterator ##### -->
+<para>
+
+</para>
+
+@next:
+@item:
+@resync:
+@free:
+@pushed:
+@lock:
+@cookie:
+@master_cookie:
+
+<!-- ##### ENUM GstIteratorItem ##### -->
+<para>
+
+</para>
+
+@GST_ITERATOR_ITEM_SKIP:
+@GST_ITERATOR_ITEM_PASS:
+@GST_ITERATOR_ITEM_END:
+
+<!-- ##### ENUM GstIteratorResult ##### -->
+<para>
+
+</para>
+
+@GST_ITERATOR_DONE:
+@GST_ITERATOR_OK:
+@GST_ITERATOR_RESYNC:
+@GST_ITERATOR_ERROR:
+
+<!-- ##### USER_FUNCTION GstIteratorDisposeFunction ##### -->
+<para>
+
+</para>
+
+@owner:
+
+
+<!-- ##### USER_FUNCTION GstIteratorNextFunction ##### -->
+<para>
+
+</para>
+
+@it:
+@result:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION GstIteratorItemFunction ##### -->
+<para>
+
+</para>
+
+@it:
+@item:
+@Returns:
+
+
+<!-- ##### USER_FUNCTION GstIteratorResyncFunction ##### -->
+<para>
+
+</para>
+
+@it:
+
+
+<!-- ##### USER_FUNCTION GstIteratorFreeFunction ##### -->
+<para>
+
+</para>
+
+@it:
+
+
+<!-- ##### USER_FUNCTION GstIteratorFoldFunction ##### -->
+<para>
+
+</para>
+
+@item:
+@ret:
+@user_data:
+@Returns:
+
+
+<!-- ##### MACRO GST_ITERATOR ##### -->
+<para>
+
+</para>
+
+@it:
+
+
+<!-- ##### MACRO GST_ITERATOR_LOCK ##### -->
+<para>
+
+</para>
+
+@it:
+
+
+<!-- ##### MACRO GST_ITERATOR_COOKIE ##### -->
+<para>
+
+</para>
+
+@it:
+
+
+<!-- ##### MACRO GST_ITERATOR_ORIG_COOKIE ##### -->
+<para>
+
+</para>
+
+@it:
+
+
+<!-- ##### FUNCTION gst_iterator_new ##### -->
+<para>
+
+</para>
+
+@size:
+@lock:
+@master_cookie:
+@next:
+@item:
+@resync:
+@free:
+@Returns:
+
+
+<!-- ##### FUNCTION gst_iterator_new_list ##### -->
+<para>
+
+</para>
+
+@lock:
+@master_cookie:
+@list:
+@owner:
+@item:
+@free:
+@Returns:
+
+
+<!-- ##### FUNCTION gst_iterator_next ##### -->
+<para>
+
+</para>
+
+@it:
+@result:
+@Returns:
+
+
+<!-- ##### FUNCTION gst_iterator_resync ##### -->
+<para>
+
+</para>
+
+@it:
+
+
+<!-- ##### FUNCTION gst_iterator_free ##### -->
+<para>
+
+</para>
+
+@it:
+
+
+<!-- ##### FUNCTION gst_iterator_push ##### -->
+<para>
+
+</para>
+
+@it:
+@other:
+
+
+<!-- ##### FUNCTION gst_iterator_filter ##### -->
+<para>
+
+</para>
+
+@it:
+@func:
+@user_data:
+@Returns:
+
+
+<!-- ##### FUNCTION gst_iterator_fold ##### -->
+<para>
+
+</para>
+
+@iter:
+@func:
+@ret:
+@user_data:
+@Returns:
+
+
+<!-- ##### FUNCTION gst_iterator_foreach ##### -->
+<para>
+
+</para>
+
+@iter:
+@func:
+@user_data:
+@Returns:
+
+
+<!-- ##### FUNCTION gst_iterator_find_custom ##### -->
+<para>
+
+</para>
+
+@it:
+@func:
+@user_data:
+@Returns:
+
+
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
* 2000,2005 Wim Taymans <wim@fluendo.com>
*
- * gstbasesrc.c:
+ * gstbasesrc.c:
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
G_BEGIN_DECLS
-#define GST_TYPE_BASESRC (gst_basesrc_get_type())
-#define GST_BASESRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASESRC,GstBaseSrc))
-#define GST_BASESRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BASESRC,GstBaseSrcClass))
+#define GST_TYPE_BASESRC (gst_basesrc_get_type())
+#define GST_BASESRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASESRC,GstBaseSrc))
+#define GST_BASESRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BASESRC,GstBaseSrcClass))
#define GST_BASESRC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_BASESRC, GstBaseSrcClass))
-#define GST_IS_BASESRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASESRC))
-#define GST_IS_BASESRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASESRC))
+#define GST_IS_BASESRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASESRC))
+#define GST_IS_BASESRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASESRC))
typedef enum {
GST_BASESRC_STARTED = GST_ELEMENT_FLAG_LAST,
typedef struct _GstBaseSrc GstBaseSrc;
typedef struct _GstBaseSrcClass GstBaseSrcClass;
-#define GST_BASESRC_PAD(obj) (GST_BASESRC (obj)->srcpad)
+#define GST_BASESRC_PAD(obj) (GST_BASESRC (obj)->srcpad)
#define GST_LIVE_GET_LOCK(elem) (GST_BASESRC(elem)->live_lock)
#define GST_LIVE_LOCK(elem) g_mutex_lock(GST_LIVE_GET_LOCK(elem))
GstElement element;
GstPad *srcpad;
- /* only for subclass implementations */
+ /*< public >*/
+ /* available to subclass implementations */
/* MT-protected (with LIVE_LOCK) */
GMutex *live_lock;
GCond *live_cond;
GstElementClass parent_class;
/*< public >*/
+ /* virtual methods for subclasses */
+
/* get caps from subclass */
GstCaps* (*get_caps) (GstBaseSrc *src);
/* notify the subclass of new caps */
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
* 2005 Wim Taymans <wim@fluendo.com>
*
- * gstbasetransform.h:
+ * gstbasetransform.h:
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
G_BEGIN_DECLS
-#define GST_TYPE_BASE_TRANSFORM (gst_base_transform_get_type())
-#define GST_BASE_TRANSFORM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASE_TRANSFORM,GstBaseTransform))
+#define GST_TYPE_BASE_TRANSFORM (gst_base_transform_get_type())
+#define GST_BASE_TRANSFORM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASE_TRANSFORM,GstBaseTransform))
#define GST_BASE_TRANSFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BASE_TRANSFORM,GstBaseTransformClass))
#define GST_BASE_TRANSFORM_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj),GST_TYPE_BASE_TRANSFORM,GstBaseTransformClass))
-#define GST_IS_BASE_TRANSFORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASE_TRANSFORM))
+#define GST_IS_BASE_TRANSFORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASE_TRANSFORM))
#define GST_IS_BASE_TRANSFORM_CLASS(obj)(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASE_TRANSFORM))
/* the names of the templates for the sink and source pads */
typedef struct _GstBaseTransformClass GstBaseTransformClass;
struct _GstBaseTransform {
- GstElement element;
+ GstElement element;
/* source and sink pads */
- GstPad *sinkpad;
- GstPad *srcpad;
+ GstPad *sinkpad;
+ GstPad *srcpad;
};
struct _GstBaseTransformClass {
GstElementClass parent_class;
+ /*< public >*/
+ /* virtual methods for subclasses */
+
+
+ /* notify the subclass of new caps */
gboolean (*set_caps) (GstBaseTransform *trans, GstCaps *caps);
+ /* start and stop processing, ideal for opening/closing the resource */
gboolean (*start) (GstBaseTransform *trans);
gboolean (*stop) (GstBaseTransform *trans);
gboolean (*event) (GstBaseTransform *trans, GstEvent *event);
+
+ /* transform one incoming buffer to one outgoing buffer */
GstFlowReturn (*transform) (GstBaseTransform *trans, GstBuffer *inbuf, GstBuffer **outbuf);
};
-GType gst_base_transform_get_type(void);
+GType gst_base_transform_get_type (void);
G_END_DECLS
* gst_element_get_manager:
* @element: a #GstElement to get the manager of.
*
- * Returns the manager of the element.
+ * Returns the manager of the element.
*
* Returns: the element's #GstPipeline. unref after usage.
*
G_BEGIN_DECLS
typedef enum {
- GST_ITERATOR_DONE = 0, /* no more items in the iterator */
- GST_ITERATOR_OK = 1, /* item retrieved */
- GST_ITERATOR_RESYNC = 2, /* datastructures changed while iterating */
- GST_ITERATOR_ERROR = 3, /* some error happened */
+ GST_ITERATOR_DONE = 0, /* no more items in the iterator */
+ GST_ITERATOR_OK = 1, /* item retrieved */
+ GST_ITERATOR_RESYNC = 2, /* datastructures changed while iterating */
+ GST_ITERATOR_ERROR = 3, /* some error happened */
} GstIteratorResult;
typedef struct _GstIterator GstIterator;
typedef enum {
- GST_ITERATOR_ITEM_SKIP = 0, /* skip item */
- GST_ITERATOR_ITEM_PASS = 1, /* return item */
- GST_ITERATOR_ITEM_END = 2, /* stop after this item */
+ GST_ITERATOR_ITEM_SKIP = 0, /* skip item */
+ GST_ITERATOR_ITEM_PASS = 1, /* return item */
+ GST_ITERATOR_ITEM_END = 2, /* stop after this item */
} GstIteratorItem;
typedef void (*GstIteratorDisposeFunction) (gpointer owner);
typedef gboolean (*GstIteratorFoldFunction) (gpointer item, GValue *ret, gpointer user_data);
-#define GST_ITERATOR(it) ((GstIterator*)(it))
-#define GST_ITERATOR_LOCK(it) (GST_ITERATOR(it)->lock)
-#define GST_ITERATOR_COOKIE(it) (GST_ITERATOR(it)->cookie)
-#define GST_ITERATOR_ORIG_COOKIE(it) (GST_ITERATOR(it)->master_cookie)
+#define GST_ITERATOR(it) ((GstIterator*)(it))
+#define GST_ITERATOR_LOCK(it) (GST_ITERATOR(it)->lock)
+#define GST_ITERATOR_COOKIE(it) (GST_ITERATOR(it)->cookie)
+#define GST_ITERATOR_ORIG_COOKIE(it) (GST_ITERATOR(it)->master_cookie)
struct _GstIterator {
GstIteratorNextFunction next;
GstIterator *pushed; /* pushed iterator */
- GMutex *lock;
+ GMutex *lock;
guint32 cookie; /* cookie of the iterator */
guint32 *master_cookie; /* pointer to guint32 holding the cookie when this
iterator was created */
};
-
+
/* creating iterators */
-GstIterator* gst_iterator_new (guint size,
- GMutex *lock,
+GstIterator* gst_iterator_new (guint size,
+ GMutex *lock,
guint32 *master_cookie,
- GstIteratorNextFunction next,
- GstIteratorItemFunction item,
- GstIteratorResyncFunction resync,
- GstIteratorFreeFunction free);
+ GstIteratorNextFunction next,
+ GstIteratorItemFunction item,
+ GstIteratorResyncFunction resync,
+ GstIteratorFreeFunction free);
-GstIterator* gst_iterator_new_list (GMutex *lock,
+GstIterator* gst_iterator_new_list (GMutex *lock,
guint32 *master_cookie,
GList **list,
gpointer owner,
- GstIteratorItemFunction item,
- GstIteratorDisposeFunction free);
+ GstIteratorItemFunction item,
+ GstIteratorDisposeFunction free);
/* using iterators */
GstIteratorResult gst_iterator_next (GstIterator *it, gpointer *result);
GValue *ret, gpointer user_data);
GstIteratorResult gst_iterator_foreach (GstIterator *iter,
GFunc func, gpointer user_data);
-gpointer gst_iterator_find_custom (GstIterator *it, GCompareFunc func,
+gpointer gst_iterator_find_custom (GstIterator *it, GCompareFunc func,
gpointer user_data);
G_END_DECLS
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
* 2000,2005 Wim Taymans <wim@fluendo.com>
*
- * gstbasesrc.c:
+ * gstbasesrc.c:
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
G_BEGIN_DECLS
-#define GST_TYPE_BASESRC (gst_basesrc_get_type())
-#define GST_BASESRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASESRC,GstBaseSrc))
-#define GST_BASESRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BASESRC,GstBaseSrcClass))
+#define GST_TYPE_BASESRC (gst_basesrc_get_type())
+#define GST_BASESRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASESRC,GstBaseSrc))
+#define GST_BASESRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BASESRC,GstBaseSrcClass))
#define GST_BASESRC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_BASESRC, GstBaseSrcClass))
-#define GST_IS_BASESRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASESRC))
-#define GST_IS_BASESRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASESRC))
+#define GST_IS_BASESRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASESRC))
+#define GST_IS_BASESRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASESRC))
typedef enum {
GST_BASESRC_STARTED = GST_ELEMENT_FLAG_LAST,
typedef struct _GstBaseSrc GstBaseSrc;
typedef struct _GstBaseSrcClass GstBaseSrcClass;
-#define GST_BASESRC_PAD(obj) (GST_BASESRC (obj)->srcpad)
+#define GST_BASESRC_PAD(obj) (GST_BASESRC (obj)->srcpad)
#define GST_LIVE_GET_LOCK(elem) (GST_BASESRC(elem)->live_lock)
#define GST_LIVE_LOCK(elem) g_mutex_lock(GST_LIVE_GET_LOCK(elem))
GstElement element;
GstPad *srcpad;
- /* only for subclass implementations */
+ /*< public >*/
+ /* available to subclass implementations */
/* MT-protected (with LIVE_LOCK) */
GMutex *live_lock;
GCond *live_cond;
GstElementClass parent_class;
/*< public >*/
+ /* virtual methods for subclasses */
+
/* get caps from subclass */
GstCaps* (*get_caps) (GstBaseSrc *src);
/* notify the subclass of new caps */
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
* 2005 Wim Taymans <wim@fluendo.com>
*
- * gstbasetransform.h:
+ * gstbasetransform.h:
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
G_BEGIN_DECLS
-#define GST_TYPE_BASE_TRANSFORM (gst_base_transform_get_type())
-#define GST_BASE_TRANSFORM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASE_TRANSFORM,GstBaseTransform))
+#define GST_TYPE_BASE_TRANSFORM (gst_base_transform_get_type())
+#define GST_BASE_TRANSFORM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASE_TRANSFORM,GstBaseTransform))
#define GST_BASE_TRANSFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BASE_TRANSFORM,GstBaseTransformClass))
#define GST_BASE_TRANSFORM_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj),GST_TYPE_BASE_TRANSFORM,GstBaseTransformClass))
-#define GST_IS_BASE_TRANSFORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASE_TRANSFORM))
+#define GST_IS_BASE_TRANSFORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASE_TRANSFORM))
#define GST_IS_BASE_TRANSFORM_CLASS(obj)(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASE_TRANSFORM))
/* the names of the templates for the sink and source pads */
typedef struct _GstBaseTransformClass GstBaseTransformClass;
struct _GstBaseTransform {
- GstElement element;
+ GstElement element;
/* source and sink pads */
- GstPad *sinkpad;
- GstPad *srcpad;
+ GstPad *sinkpad;
+ GstPad *srcpad;
};
struct _GstBaseTransformClass {
GstElementClass parent_class;
+ /*< public >*/
+ /* virtual methods for subclasses */
+
+
+ /* notify the subclass of new caps */
gboolean (*set_caps) (GstBaseTransform *trans, GstCaps *caps);
+ /* start and stop processing, ideal for opening/closing the resource */
gboolean (*start) (GstBaseTransform *trans);
gboolean (*stop) (GstBaseTransform *trans);
gboolean (*event) (GstBaseTransform *trans, GstEvent *event);
+
+ /* transform one incoming buffer to one outgoing buffer */
GstFlowReturn (*transform) (GstBaseTransform *trans, GstBuffer *inbuf, GstBuffer **outbuf);
};
-GType gst_base_transform_get_type(void);
+GType gst_base_transform_get_type (void);
G_END_DECLS