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