2 * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
3 * 2005 Wim Taymans <wim@fluendo.com>
5 * gstaudioringbuffer.h:
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
17 * You should have received a copy of the GNU Library General Public
18 * License along with this library; if not, write to the
19 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 * Boston, MA 02111-1307, USA.
23 #ifndef __GST_AUDIO_RING_BUFFER_H__
24 #define __GST_AUDIO_RING_BUFFER_H__
27 #include <gst/audio/gstringbuffer.h>
31 #define GST_TYPE_AUDIO_RING_BUFFER (gst_audio_ring_buffer_get_type())
32 #define GST_AUDIO_RING_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIO_RING_BUFFER,GstAudioRingBuffer))
33 #define GST_AUDIO_RING_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIO_RING_BUFFER,GstAudioRingBufferClass))
34 #define GST_AUDIO_RING_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),GST_TYPE_AUDIO_RING_BUFFER,GstAudioRingBufferClass))
35 #define GST_IS_AUDIO_RING_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIO_RING_BUFFER))
36 #define GST_IS_AUDIO_RING_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIO_RING_BUFFER))
37 #define GST_AUDIO_RING_BUFFER_CAST(obj) ((GstAudioRingBuffer *)obj)
39 typedef struct _GstAudioRingBuffer GstAudioRingBuffer;
40 typedef struct _GstAudioRingBufferClass GstAudioRingBufferClass;
42 #include <gst/audio/gstringbufferthread.h>
45 GST_AUDIO_RING_BUFFER_MODE_UNKNOWN,
46 GST_AUDIO_RING_BUFFER_MODE_PLAYBACK,
47 GST_AUDIO_RING_BUFFER_MODE_CAPTURE
48 } GstAudioRingBufferMode;
52 * Opaque #GstAudioRingBuffer.
54 struct _GstAudioRingBuffer {
55 GstRingBuffer element;
58 GstAudioRingBufferMode mode;
59 GstRingBufferThread *thread;
61 GstAudioRingBuffer *link;
64 gpointer _gst_reserved[GST_PADDING];
68 * GstAudioRingBufferClass:
69 * @parent_class: the parent class structure.
70 * @process: Write/Read data to/from the device.
71 * @reset: Returns as quickly as possible from a write/read and flush any pending
72 * samples from the device.
74 * #GstAudioRingBuffer class. Override the vmethods to implement functionality.
76 struct _GstAudioRingBufferClass {
77 GstRingBufferClass parent_class;
81 /* write/read samples to the device */
82 gint (*process) (GstAudioRingBuffer *buf, gpointer data, guint length);
83 /* reset the audio device, unblock from a read/write */
84 void (*reset) (GstAudioRingBuffer *buf);
87 gpointer _gst_reserved[GST_PADDING];
90 GType gst_audio_ring_buffer_get_type(void);
92 gboolean gst_audio_ring_buffer_link (GstAudioRingBuffer *buf1, GstAudioRingBuffer *buf2);
94 gboolean gst_audio_ring_buffer_set_thread (GstAudioRingBuffer *buf, GstRingBufferThread *thread);
98 #endif /* __GST_AUDIO_RING_BUFFER_H__ */