adding basetransform and iterator docs

Original commit message from CVS:
adding basetransform and iterator docs
This commit is contained in:
Thomas Vander Stichele 2005-06-27 14:40:09 +00:00
parent 89683e526e
commit 0b44c713a7
17 changed files with 525 additions and 60 deletions

View file

@ -1,3 +1,20 @@
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

View file

@ -8,7 +8,9 @@
<!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">
@ -22,6 +24,7 @@
<!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">
@ -34,7 +37,6 @@
<!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">
@ -57,6 +59,7 @@
<!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">
@ -112,6 +115,7 @@
&GstIndex;
&GstIndexFactory;
&GstInfo;
&GstIterator;
&GstObject;
&GstPad;
&GstPadTemplate;
@ -122,7 +126,6 @@
&GstProbe;
&GstQuery;
&GstQueue;
&GstRealPad;
&GstRegistry;
&GstRegistryPool;
&GstScheduler;
@ -154,6 +157,7 @@
</chapter>
<!--
<chapter id="gstreamer-compat">
<title>GStreamer Core Compatibility</title>
<para>
@ -164,6 +168,7 @@
&GstCompat;
</chapter>
-->
<chapter id="element-types">
<title>GStreamer Core Elements</title>
@ -204,6 +209,7 @@
&GstBaseSrc;
&GstBaseSink;
&GstBaseTransform;
</chapter>

View file

@ -323,6 +323,7 @@ gst_element_get_state
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
@ -699,6 +700,43 @@ GST_TYPE_IMPLEMENTS_INTERFACE
gst_implements_interface_get_type
</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>
@ -1693,12 +1731,19 @@ gst_filesink_get_type
<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>
@ -1708,6 +1753,10 @@ gst_basesrc_get_type
<FILE>gstbasesink</FILE>
<TITLE>GstBaseSink</TITLE>
GstBaseSink
GstBaseSinkClass
GST_BASESINK_CLOCK
GST_BASESINK_PAD
<SUBSECTION Standard>
GstBaseSinkClass
@ -1720,3 +1769,19 @@ GST_BASESINK_GET_CLASS
<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>

View file

@ -33,9 +33,11 @@ gst_xml_get_type
#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

View file

@ -35,3 +35,34 @@ GstBaseSink
</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:

View file

@ -68,3 +68,37 @@ GstBaseSrc
@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:

View file

@ -0,0 +1,34 @@
<!-- ##### 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:

View file

@ -711,6 +711,15 @@ Sets the parent of an element.
@Returns:
<!-- ##### FUNCTION gst_element_get_manager ##### -->
<para>
</para>
@element:
@Returns:
<!-- ##### FUNCTION gst_element_no_more_pads ##### -->
<para>

View file

@ -0,0 +1,245 @@
<!-- ##### 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:

View file

@ -2,7 +2,7 @@
* 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

View file

@ -28,12 +28,12 @@
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,
@ -52,7 +52,7 @@ typedef enum {
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))
@ -70,7 +70,8 @@ struct _GstBaseSrc {
GstElement element;
GstPad *srcpad;
/* only for subclass implementations */
/*< public >*/
/* available to subclass implementations */
/* MT-protected (with LIVE_LOCK) */
GMutex *live_lock;
GCond *live_cond;
@ -105,6 +106,8 @@ struct _GstBaseSrcClass {
GstElementClass parent_class;
/*< public >*/
/* virtual methods for subclasses */
/* get caps from subclass */
GstCaps* (*get_caps) (GstBaseSrc *src);
/* notify the subclass of new caps */

View file

@ -2,7 +2,7 @@
* 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
@ -28,12 +28,12 @@
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 */
@ -44,26 +44,34 @@ typedef struct _GstBaseTransform GstBaseTransform;
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

View file

@ -2230,7 +2230,7 @@ gst_element_set_manager (GstElement * element, GstPipeline * manager)
* 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.
*

View file

@ -28,18 +28,18 @@
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);
@ -51,10 +51,10 @@ typedef void (*GstIteratorFreeFunction) (GstIterator *it);
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;
@ -64,27 +64,27 @@ struct _GstIterator {
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,
guint32 *master_cookie,
GstIteratorNextFunction next,
GstIteratorItemFunction item,
GstIteratorResyncFunction resync,
GstIteratorFreeFunction free);
GstIterator* gst_iterator_new_list (GMutex *lock,
/* creating iterators */
GstIterator* gst_iterator_new (guint size,
GMutex *lock,
guint32 *master_cookie,
GstIteratorNextFunction next,
GstIteratorItemFunction item,
GstIteratorResyncFunction resync,
GstIteratorFreeFunction free);
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);
@ -101,7 +101,7 @@ GstIteratorResult gst_iterator_fold (GstIterator *iter,
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

View file

@ -2,7 +2,7 @@
* 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

View file

@ -28,12 +28,12 @@
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,
@ -52,7 +52,7 @@ typedef enum {
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))
@ -70,7 +70,8 @@ struct _GstBaseSrc {
GstElement element;
GstPad *srcpad;
/* only for subclass implementations */
/*< public >*/
/* available to subclass implementations */
/* MT-protected (with LIVE_LOCK) */
GMutex *live_lock;
GCond *live_cond;
@ -105,6 +106,8 @@ struct _GstBaseSrcClass {
GstElementClass parent_class;
/*< public >*/
/* virtual methods for subclasses */
/* get caps from subclass */
GstCaps* (*get_caps) (GstBaseSrc *src);
/* notify the subclass of new caps */

View file

@ -2,7 +2,7 @@
* 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
@ -28,12 +28,12 @@
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 */
@ -44,26 +44,34 @@ typedef struct _GstBaseTransform GstBaseTransform;
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