| /* vim: set filetype=c: */ |
| % ClassName |
| GstAudioSrc |
| % TYPE_CLASS_NAME |
| GST_TYPE_AUDIO_SRC |
| % pads |
| srcpad-audio |
| % pkg-config |
| gstreamer-audio-1.0 |
| % includes |
| #include <gst/audio/gstaudiosrc.h> |
| % 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 |