/* vim: set filetype=c: */ % ClassName GstAudioSrc % TYPE_CLASS_NAME GST_TYPE_AUDIO_SRC % pads srcpad-audio % pkg-config gstreamer-audio-1.0 % includes #include % prototypes static gboolean gst_replace_open (GstAudioSrc * src); static gboolean gst_replace_prepare (GstAudioSrc * src, GstAudioRingBufferSpec * spec); static gboolean gst_replace_unprepare (GstAudioSrc * src); static gboolean gst_replace_close (GstAudioSrc * src); static guint gst_replace_read (GstAudioSrc * src, gpointer data, guint length, GstClockTime * timestamp); static guint gst_replace_delay (GstAudioSrc * src); static void gst_replace_reset (GstAudioSrc * src); % declare-class GstAudioSrcClass *audio_src_class = GST_AUDIO_SRC_CLASS (klass); % set-methods audio_src_class->open = GST_DEBUG_FUNCPTR (gst_replace_open); audio_src_class->prepare = GST_DEBUG_FUNCPTR (gst_replace_prepare); audio_src_class->unprepare = GST_DEBUG_FUNCPTR (gst_replace_unprepare); audio_src_class->close = GST_DEBUG_FUNCPTR (gst_replace_close); audio_src_class->read = GST_DEBUG_FUNCPTR (gst_replace_read); audio_src_class->delay = GST_DEBUG_FUNCPTR (gst_replace_delay); audio_src_class->reset = GST_DEBUG_FUNCPTR (gst_replace_reset); % methods /* open the device with given specs */ static gboolean gst_replace_open (GstAudioSrc * src) { GstReplace *replace = GST_REPLACE (src); GST_DEBUG_OBJECT (replace, "open"); return TRUE; } /* prepare resources and state to operate with the given specs */ static gboolean gst_replace_prepare (GstAudioSrc * src, GstAudioRingBufferSpec * spec) { GstReplace *replace = GST_REPLACE (src); GST_DEBUG_OBJECT (replace, "prepare"); return TRUE; } /* undo anything that was done in prepare() */ static gboolean gst_replace_unprepare (GstAudioSrc * src) { GstReplace *replace = GST_REPLACE (src); GST_DEBUG_OBJECT (replace, "unprepare"); return TRUE; } /* close the device */ static gboolean gst_replace_close (GstAudioSrc * src) { GstReplace *replace = GST_REPLACE (src); GST_DEBUG_OBJECT (replace, "close"); return TRUE; } /* read samples from the device */ static guint gst_replace_read (GstAudioSrc * src, gpointer data, guint length, GstClockTime * timestamp) { GstReplace *replace = GST_REPLACE (src); GST_DEBUG_OBJECT (replace, "read"); return 0; } /* get number of samples queued in the device */ static guint gst_replace_delay (GstAudioSrc * src) { GstReplace *replace = GST_REPLACE (src); GST_DEBUG_OBJECT (replace, "delay"); return 0; } /* reset the audio device, unblock from a write */ static void gst_replace_reset (GstAudioSrc * src) { GstReplace *replace = GST_REPLACE (src); GST_DEBUG_OBJECT (replace, "reset"); } % end