Commit 73677225 authored by Wim Taymans's avatar Wim Taymans
Browse files

Added docs for the audio libs.

Original commit message from CVS:
* docs/libs/gst-plugins-base-libs-docs.sgml:
* docs/libs/gst-plugins-base-libs-sections.txt:
* gst-libs/gst/audio/gstaudioclock.c:
* gst-libs/gst/audio/gstaudioclock.h:
* gst-libs/gst/audio/gstaudiosink.c:
* gst-libs/gst/audio/gstaudiosink.h:
* gst-libs/gst/audio/gstaudiosrc.c:
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_render):
* gst-libs/gst/audio/gstbaseaudiosink.h:
* gst-libs/gst/audio/gstbaseaudiosrc.c: (gst_base_audio_src_init):
* gst-libs/gst/audio/gstbaseaudiosrc.h:
* gst-libs/gst/audio/gstringbuffer.h:
Added docs for the audio libs.
parent bb54e8cb
2006-09-27 Wim Taymans <wim@fluendo.com>
* docs/libs/gst-plugins-base-libs-docs.sgml:
* docs/libs/gst-plugins-base-libs-sections.txt:
* gst-libs/gst/audio/gstaudioclock.c:
* gst-libs/gst/audio/gstaudioclock.h:
* gst-libs/gst/audio/gstaudiosink.c:
* gst-libs/gst/audio/gstaudiosink.h:
* gst-libs/gst/audio/gstaudiosrc.c:
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_render):
* gst-libs/gst/audio/gstbaseaudiosink.h:
* gst-libs/gst/audio/gstbaseaudiosrc.c: (gst_base_audio_src_init):
* gst-libs/gst/audio/gstbaseaudiosrc.h:
* gst-libs/gst/audio/gstringbuffer.h:
Added docs for the audio libs.
2006-09-27 Tim-Philipp Müller <tim at centricular dot net> 2006-09-27 Tim-Philipp Müller <tim at centricular dot net>
   
* tests/check/Makefile.am: * tests/check/Makefile.am:
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
&GstTuner; &GstTuner;
&GstTunerChannel; &GstTunerChannel;
&GstTunerNorm; &GstTunerNorm;
&GstVideoorientation; &GstVideoOrientation;
&GstXOverlay; &GstXOverlay;
</chapter> </chapter>
......
...@@ -23,17 +23,16 @@ gst_audio_structure_set_int ...@@ -23,17 +23,16 @@ gst_audio_structure_set_int
<FILE>gstaudioclock</FILE> <FILE>gstaudioclock</FILE>
<INCLUDE>gst/audio/gstaudioclock.h</INCLUDE> <INCLUDE>gst/audio/gstaudioclock.h</INCLUDE>
GstAudioClock GstAudioClock
GstAudioClockClass
GstAudioClockGetTimeFunc GstAudioClockGetTimeFunc
gst_audio_clock_new gst_audio_clock_new
<SUBSECTION Standard> <SUBSECTION Standard>
GstAudioClockClass
GST_AUDIO_CLOCK GST_AUDIO_CLOCK
GST_IS_AUDIO_CLOCK GST_IS_AUDIO_CLOCK
GST_TYPE_AUDIO_CLOCK GST_TYPE_AUDIO_CLOCK
gst_audio_clock_get_type gst_audio_clock_get_type
GST_AUDIO_CLOCK_CLASS GST_AUDIO_CLOCK_CLASS
GST_IS_AUDIO_CLOCK_CLASS GST_IS_AUDIO_CLOCK_CLASS
GST_AUDIO_CLOCK_GET_CLASS
</SECTION> </SECTION>
<SECTION> <SECTION>
...@@ -458,6 +457,20 @@ GST_IS_TUNER_NORM_CLASS ...@@ -458,6 +457,20 @@ GST_IS_TUNER_NORM_CLASS
gst_tuner_norm_get_type gst_tuner_norm_get_type
</SECTION> </SECTION>
<SECTION>
<FILE>gstvideoorientation</FILE>
<INCLUDE>gst/interfaces/videoorientation.h</INCLUDE>
GstVideoOrientation
GstVideoOrientationInterface
<SUBSECTION Standard>
GST_TYPE_VIDEO_ORIENTATION
GST_VIDEO_ORIENTATION
GST_VIDEO_ORIENTATION_CLASS
GST_IS_VIDEO_ORIENTATION
GST_IS_VIDEO_ORIENTATION_CLASS
gst_video_orientation_get_type
</SECTION>
<SECTION> <SECTION>
<FILE>gstxoverlay</FILE> <FILE>gstxoverlay</FILE>
<INCLUDE>gst/interfaces/xoverlay.h</INCLUDE> <INCLUDE>gst/interfaces/xoverlay.h</INCLUDE>
...@@ -800,7 +813,6 @@ gst_rtp_buffer_get_seq ...@@ -800,7 +813,6 @@ gst_rtp_buffer_get_seq
gst_rtp_buffer_get_ssrc gst_rtp_buffer_get_ssrc
gst_rtp_buffer_get_timestamp gst_rtp_buffer_get_timestamp
gst_rtp_buffer_get_version gst_rtp_buffer_get_version
gst_rtp_buffer_new
gst_rtp_buffer_new_allocate gst_rtp_buffer_new_allocate
gst_rtp_buffer_new_allocate_len gst_rtp_buffer_new_allocate_len
gst_rtp_buffer_new_copy_data gst_rtp_buffer_new_copy_data
......
...@@ -20,6 +20,19 @@ ...@@ -20,6 +20,19 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
/**
* SECTION:gstaudioclock
* @short_description: Helper object for implementing audio clocks
* @see_also: #GstBaseAudioSink, #GstSystemClock
*
* #GstAudioClock makes it easy for elements to implement a #GstClock, they
* simply need to provide a function that returns the current clock time.
*
* This object is internally used to implement the clock in #GstBaseAudioSink.
*
* Last reviewed on 2006-09-27 (0.10.12)
*/
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif #endif
...@@ -86,6 +99,18 @@ gst_audio_clock_init (GstAudioClock * clock) ...@@ -86,6 +99,18 @@ gst_audio_clock_init (GstAudioClock * clock)
GST_OBJECT_FLAG_SET (clock, GST_CLOCK_FLAG_CAN_SET_MASTER); GST_OBJECT_FLAG_SET (clock, GST_CLOCK_FLAG_CAN_SET_MASTER);
} }
/**
* gst_audio_clock_new:
* @name: the name of the clock
* @func: a function
* @user_data: user data
*
* Create a new #GstAudioClock instance. Whenever the clock time should be
* calculated it will call @func with @user_data. When @func returns
* #GST_CLOCK_TIME_NONE, the clock will return the last reported time.
*
* Returns: a new #GstAudioClock casted to a #GstClock.
*/
GstClock * GstClock *
gst_audio_clock_new (gchar * name, GstAudioClockGetTimeFunc func, gst_audio_clock_new (gchar * name, GstAudioClockGetTimeFunc func,
gpointer user_data) gpointer user_data)
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
#ifndef __GST_AUDIO_CLOCK_H__ #ifndef __GST_AUDIO_CLOCK_H__
#define __GST_AUDIO_CLOCK_H__ #define __GST_AUDIO_CLOCK_H__
...@@ -42,8 +41,26 @@ G_BEGIN_DECLS ...@@ -42,8 +41,26 @@ G_BEGIN_DECLS
typedef struct _GstAudioClock GstAudioClock; typedef struct _GstAudioClock GstAudioClock;
typedef struct _GstAudioClockClass GstAudioClockClass; typedef struct _GstAudioClockClass GstAudioClockClass;
/**
* GstAudioClockGetTimeFunc:
* @clock: the #GstAudioClock
* @user_data: user data
*
* This function will be called whenever the current clock time needs to be
* calculated. If this function returns #GST_CLOCK_TIME_NONE, the last reported
* time will be returned by the clock.
*
* Returns: the current time or #GST_CLOCK_TIME_NONE if the previous time should
* be used.
*/
typedef GstClockTime (*GstAudioClockGetTimeFunc) (GstClock *clock, gpointer user_data); typedef GstClockTime (*GstAudioClockGetTimeFunc) (GstClock *clock, gpointer user_data);
/**
* GstAudioClock:
* @clock: parent #GstSystemClock
*
* Opaque #GstAudioClock.
*/
struct _GstAudioClock { struct _GstAudioClock {
GstSystemClock clock; GstSystemClock clock;
......
...@@ -20,6 +20,53 @@ ...@@ -20,6 +20,53 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
/**
* SECTION:gstaudiosink
* @short_description: Simple base class for audio sinks
* @see_also: #GstBaseAudioSink, #GstRingBuffer, #GstAudioSink.
*
* This is the most simple base class for audio sinks that only requires
* subclasses to implement a set of simple functions:
*
* <variablelist>
* <varlistentry>
* <term>open()</term>
* <listitem><para>Open the device.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term>prepare()</term>
* <listitem><para>Configure the device with the specified format.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term>write()</term>
* <listitem><para>Write samples to the device.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term>reset()</term>
* <listitem><para>Unblock writes and flush the device.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term>delay()</term>
* <listitem><para>Get the number of samples written but not yet played
* by the device.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term>unprepare()</term>
* <listitem><para>Undo operations done by prepare.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term>close()</term>
* <listitem><para>Close the device.</para></listitem>
* </varlistentry>
* </variablelist>
*
* All scheduling of samples and timestamps is done in this base class
* together with #GstBaseAudioSink using a default implementation of a
* #GstRingBuffer that uses threads.
*
* Last reviewed on 2006-09-27 (0.10.12)
*/
#include <string.h> #include <string.h>
#include "gstaudiosink.h" #include "gstaudiosink.h"
......
...@@ -20,22 +20,6 @@ ...@@ -20,22 +20,6 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
/* a base class for simple audio sinks.
*
* This base class only requires subclasses to implement a set
* of simple functions.
*
* - open: open the device with the specified caps
* - write: write the samples to the audio device
* - close: close the device
* - delay: the number of samples queued in the device
* - reset: unblock a write to the device and reset.
*
* All scheduling of samples and timestamps is done in this
* base class together with the GstBaseAudioSink using a
* default implementation of a ringbuffer that uses threads.
*/
#ifndef __GST_AUDIO_SINK_H__ #ifndef __GST_AUDIO_SINK_H__
#define __GST_AUDIO_SINK_H__ #define __GST_AUDIO_SINK_H__
...@@ -54,6 +38,11 @@ G_BEGIN_DECLS ...@@ -54,6 +38,11 @@ G_BEGIN_DECLS
typedef struct _GstAudioSink GstAudioSink; typedef struct _GstAudioSink GstAudioSink;
typedef struct _GstAudioSinkClass GstAudioSinkClass; typedef struct _GstAudioSinkClass GstAudioSinkClass;
/**
* GstAudioSink:
*
* Opaque #GstAudioSink.
*/
struct _GstAudioSink { struct _GstAudioSink {
GstBaseAudioSink element; GstBaseAudioSink element;
...@@ -64,6 +53,22 @@ struct _GstAudioSink { ...@@ -64,6 +53,22 @@ struct _GstAudioSink {
gpointer _gst_reserved[GST_PADDING]; gpointer _gst_reserved[GST_PADDING];
}; };
/**
* GstAudioSinkClass:
* @parent_class: the parent class structure.
* @open: Open the device. No configuration needs to be done at this point.
* This function is also used to check if the device is available.
* @prepare: Prepare the device to operate with the specified parameters.
* @unprepare: Undo operations done in prepare.
* @close: Close the device.
* @write: Write data to the device.
* @delay: Return how many samples are still in the device. This is used to
* drive the synchronisation.
* @reset: Returns as quickly as possible from a write and flush any pending
* samples from the device.
*
* #GstAudioSink class. Override the vmethods to implement functionality.
*/
struct _GstAudioSinkClass { struct _GstAudioSinkClass {
GstBaseAudioSinkClass parent_class; GstBaseAudioSinkClass parent_class;
......
...@@ -20,6 +20,53 @@ ...@@ -20,6 +20,53 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
/**
* SECTION:gstaudiosrc
* @short_description: Simple base class for audio sources
* @see_also: #GstBaseAudioSrc, #GstRingBuffer, #GstAudioSrc.
*
* This is the most simple base class for audio sources that only requires
* subclasses to implement a set of simple functions:
*
* <variablelist>
* <varlistentry>
* <term>open()</term>
* <listitem><para>Open the device.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term>prepare()</term>
* <listitem><para>Configure the device with the specified format.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term>read()</term>
* <listitem><para>Read samples from the device.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term>reset()</term>
* <listitem><para>Unblock reads and flush the device.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term>delay()</term>
* <listitem><para>Get the number of samples in the device but not yet read.
* </para></listitem>
* </varlistentry>
* <varlistentry>
* <term>unprepare()</term>
* <listitem><para>Undo operations done by prepare.</para></listitem>
* </varlistentry>
* <varlistentry>
* <term>close()</term>
* <listitem><para>Close the device.</para></listitem>
* </varlistentry>
* </variablelist>
*
* All scheduling of samples and timestamps is done in this base class
* together with #GstBaseAudioSrc using a default implementation of a
* #GstRingBuffer that uses threads.
*
* Last reviewed on 2006-09-27 (0.10.12)
*/
#include <string.h> #include <string.h>
#include "gstaudiosrc.h" #include "gstaudiosrc.h"
......
...@@ -20,6 +20,18 @@ ...@@ -20,6 +20,18 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
/**
* SECTION:gstbaseaudiosink
* @short_description: Base class for audio sinks
* @see_also: #GstAudioSink, #GstRingBuffer.
*
* This is the base class for audio sinks. Subclasses need to implement the
* ::create_ringbuffer vmethod. This base class will then take care of
* writing samples to the ringbuffer, synchronisation, clipping and flushing.
*
* Last reviewed on 2006-09-27 (0.10.12)
*/
#include <string.h> #include <string.h>
#include "gstbaseaudiosink.h" #include "gstbaseaudiosink.h"
...@@ -629,8 +641,11 @@ gst_base_audio_sink_render (GstBaseSink * bsink, GstBuffer * buf) ...@@ -629,8 +641,11 @@ gst_base_audio_sink_render (GstBaseSink * bsink, GstBuffer * buf)
} else { } else {
/* timestamps drifted apart from previous samples too much, we need to /* timestamps drifted apart from previous samples too much, we need to
* resync. We log this as an element warning. */ * resync. We log this as an element warning. */
GST_ELEMENT_WARNING (sink, CORE, CLOCK, (NULL), GST_ELEMENT_WARNING (sink, CORE, CLOCK,
("Unexpected discontinuity in audio timestamps of more than half a second")); ("Compensating for audio synchronisation problems"),
("Unexpected discontinuity in audio timestamps of more "
"than half a second (%" GST_TIME_FORMAT "), resyncing",
GST_TIME_ARGS (diff)));
} }
no_align: no_align:
...@@ -701,6 +716,16 @@ stopping: ...@@ -701,6 +716,16 @@ stopping:
} }
} }
/**
* gst_base_audio_sink_create_ringbuffer:
* @sink: a #GstBaseAudioSink.
*
* Create and return the #GstRingBuffer for @sink. This function will call the
* ::create_ringbuffer vmethod and will set @sink as the parent of the returned
* buffer (see gst_object_set_parent()).
*
* Returns: The new ringbuffer of @sink.
*/
GstRingBuffer * GstRingBuffer *
gst_base_audio_sink_create_ringbuffer (GstBaseAudioSink * sink) gst_base_audio_sink_create_ringbuffer (GstBaseAudioSink * sink)
{ {
......
...@@ -63,12 +63,29 @@ G_BEGIN_DECLS ...@@ -63,12 +63,29 @@ G_BEGIN_DECLS
#define GST_IS_BASE_AUDIO_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASE_AUDIO_SINK)) #define GST_IS_BASE_AUDIO_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASE_AUDIO_SINK))
#define GST_IS_BASE_AUDIO_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASE_AUDIO_SINK)) #define GST_IS_BASE_AUDIO_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASE_AUDIO_SINK))
/**
* GST_BASE_AUDIO_SINK_CLOCK:
* @obj: a #GstBaseAudioSink
*
* Get the #GstClock of @obj.
*/
#define GST_BASE_AUDIO_SINK_CLOCK(obj) (GST_BASE_AUDIO_SINK (obj)->clock) #define GST_BASE_AUDIO_SINK_CLOCK(obj) (GST_BASE_AUDIO_SINK (obj)->clock)
/**
* GST_BASE_AUDIO_SINK_PAD:
* @obj: a #GstBaseAudioSink
*
* Get the sink #GstPad of @obj.
*/
#define GST_BASE_AUDIO_SINK_PAD(obj) (GST_BASE_SINK (obj)->sinkpad) #define GST_BASE_AUDIO_SINK_PAD(obj) (GST_BASE_SINK (obj)->sinkpad)
typedef struct _GstBaseAudioSink GstBaseAudioSink; typedef struct _GstBaseAudioSink GstBaseAudioSink;
typedef struct _GstBaseAudioSinkClass GstBaseAudioSinkClass; typedef struct _GstBaseAudioSinkClass GstBaseAudioSinkClass;
/**
* GstBaseAudioSink:
*
* Opaque #GstBaseAudioSink.
*/
struct _GstBaseAudioSink { struct _GstBaseAudioSink {
GstBaseSink element; GstBaseSink element;
...@@ -77,8 +94,8 @@ struct _GstBaseAudioSink { ...@@ -77,8 +94,8 @@ struct _GstBaseAudioSink {
GstRingBuffer *ringbuffer; GstRingBuffer *ringbuffer;
/* required buffer and latency in microseconds */ /* required buffer and latency in microseconds */
guint64 buffer_time; guint64 buffer_time;
guint64 latency_time; guint64 latency_time;
/* the next sample to write */ /* the next sample to write */
guint64 next_sample; guint64 next_sample;
...@@ -91,6 +108,14 @@ struct _GstBaseAudioSink { ...@@ -91,6 +108,14 @@ struct _GstBaseAudioSink {
gpointer _gst_reserved[GST_PADDING]; gpointer _gst_reserved[GST_PADDING];
}; };
/**
* GstBaseAudioSinkClass:
* @parent_class: the parent class.
* @create_ringbuffer: create and return a #GstRingBuffer to write to.
*
* #GstBaseAudioSink class. Override the vmethod to implement
* functionality.
*/
struct _GstBaseAudioSinkClass { struct _GstBaseAudioSinkClass {
GstBaseSinkClass parent_class; GstBaseSinkClass parent_class;
......
...@@ -20,6 +20,18 @@ ...@@ -20,6 +20,18 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
/**
* SECTION:gstbaseaudiosrc
* @short_description: Base class for audio sources
* @see_also: #GstAudioSrc, #GstRingBuffer.
*
* This is the base class for audio sources. Subclasses need to implement the
* ::create_ringbuffer vmethod. This base class will then take care of
* reading samples from the ringbuffer, synchronisation and flushing.
*
* Last reviewed on 2006-09-27 (0.10.12)
*/
#include <string.h> #include <string.h>
#include "gstbaseaudiosrc.h" #include "gstbaseaudiosrc.h"
...@@ -144,6 +156,7 @@ gst_base_audio_src_init (GstBaseAudioSrc * baseaudiosrc, ...@@ -144,6 +156,7 @@ gst_base_audio_src_init (GstBaseAudioSrc * baseaudiosrc,
/* we are always a live source */ /* we are always a live source */
gst_base_src_set_live (GST_BASE_SRC (baseaudiosrc), TRUE); gst_base_src_set_live (GST_BASE_SRC (baseaudiosrc), TRUE);
/* we operate in time */
gst_base_src_set_format (GST_BASE_SRC (baseaudiosrc), GST_FORMAT_TIME); gst_base_src_set_format (GST_BASE_SRC (baseaudiosrc), GST_FORMAT_TIME);
} }
...@@ -527,6 +540,16 @@ stopped: ...@@ -527,6 +540,16 @@ stopped:
} }
} }
/**
* gst_base_audio_src_create_ringbuffer:
* @src: a #GstBaseAudioSrc.
*
* Create and return the #GstRingBuffer for @src. This function will call the
* ::create_ringbuffer vmethod and will set @src as the parent of the returned
* buffer (see gst_object_set_parent()).
*
* Returns: The new ringbuffer of @src.
*/
GstRingBuffer * GstRingBuffer *
gst_base_audio_src_create_ringbuffer (GstBaseAudioSrc * src) gst_base_audio_src_create_ringbuffer (GstBaseAudioSrc * src)
{ {
......
...@@ -40,12 +40,29 @@ G_BEGIN_DECLS ...@@ -40,12 +40,29 @@ G_BEGIN_DECLS
#define GST_IS_BASE_AUDIO_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASE_AUDIO_SRC)) #define GST_IS_BASE_AUDIO_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASE_AUDIO_SRC))
#define GST_IS_BASE_AUDIO_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASE_AUDIO_SRC)) #define GST_IS_BASE_AUDIO_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASE_AUDIO_SRC))
/**
* GST_BASE_AUDIO_SRC_CLOCK:
* @obj: a #GstBaseAudioSrc
*
* Get the #GstClock of @obj.
*/
#define GST_BASE_AUDIO_SRC_CLOCK(obj) (GST_BASE_AUDIO_SRC (obj)->clock) #define GST_BASE_AUDIO_SRC_CLOCK(obj) (GST_BASE_AUDIO_SRC (obj)->clock)
/**
* GST_BASE_AUDIO_SRC_PAD:
* @obj: a #GstBaseAudioSrc
*
* Get the source #GstPad of @obj.
*/
#define GST_BASE_AUDIO_SRC_PAD(obj) (GST_BASE_SRC (obj)->srcpad) #define GST_BASE_AUDIO_SRC_PAD(obj) (GST_BASE_SRC (obj)->srcpad)
typedef struct _GstBaseAudioSrc GstBaseAudioSrc; typedef struct _GstBaseAudioSrc GstBaseAudioSrc;
typedef struct _GstBaseAudioSrcClass GstBaseAudioSrcClass; typedef struct _GstBaseAudioSrcClass GstBaseAudioSrcClass;
/**
* GstBaseAudioSrc:
*
* Opaque #GstBaseAudioSrc.
*/
struct _GstBaseAudioSrc { struct _GstBaseAudioSrc {
GstPushSrc element; GstPushSrc element;
...@@ -67,6 +84,14 @@ struct _GstBaseAudioSrc { ...@@ -67,6 +84,14 @@ struct _GstBaseAudioSrc {
gpointer _gst_reserved[GST_PADDING]; gpointer _gst_reserved[GST_PADDING];