| Top |  |  |  |  | 
GObject ╰── GInitiallyUnowned ╰── GstObject ╰── GstElement ╰── GstBaseSrc ╰── GstPushSrc ╰── GstAudioBaseSrc ╰── GstAudioSrc
This is the most simple base class for audio sources that only requires subclasses to implement a set of simple functions:
open()
prepare()
read()
reset()
delay()
unprepare()
close()
All scheduling of samples and timestamps is done in this base class together with GstAudioBaseSrc using a default implementation of a GstAudioRingBuffer that uses threads.
struct GstAudioSrcClass {
  GstAudioBaseSrcClass parent_class;
  /* vtable */
  /* open the device with given specs */
  gboolean (*open)      (GstAudioSrc *src);
  /* prepare resources and state to operate with the given specs */
  gboolean (*prepare)   (GstAudioSrc *src, GstAudioRingBufferSpec *spec);
  /* undo anything that was done in prepare() */
  gboolean (*unprepare) (GstAudioSrc *src);
  /* close the device */
  gboolean (*close)     (GstAudioSrc *src);
  /* read samples from the device */
  guint    (*read)      (GstAudioSrc *src, gpointer data, guint length,
      GstClockTime *timestamp);
  /* get number of frames queued in the device */
  guint    (*delay)     (GstAudioSrc *src);
  /* reset the audio device, unblock from a write */
  void     (*reset)     (GstAudioSrc *src);
};
GstAudioSrc class. Override the vmethod to implement functionality.