tizen 2.3 release
[framework/multimedia/gst-plugins-base0.10.git] / docs / libs / html / gst-plugins-base-libs-gstringbuffer.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>gstringbuffer</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="index.html" title="GStreamer Base Plugins 0.10 Library Reference Manual">
8 <link rel="up" href="gstreamer-audio.html" title="Audio Library">
9 <link rel="prev" href="gst-plugins-base-libs-gstmultichannel.html" title="gstmultichannel">
10 <link rel="next" href="gst-plugins-base-libs-gstaudioiec61937.html" title="gstaudioiec61937">
11 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
16 <tr valign="middle">
17 <td><a accesskey="p" href="gst-plugins-base-libs-gstmultichannel.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="gstreamer-audio.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
19 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
20 <th width="100%" align="center">GStreamer Base Plugins 0.10 Library Reference Manual</th>
21 <td><a accesskey="n" href="gst-plugins-base-libs-gstaudioiec61937.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
22 </tr>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#gst-plugins-base-libs-gstringbuffer.synopsis" class="shortcut">Top</a>
25                    | 
26                   <a href="#gst-plugins-base-libs-gstringbuffer.description" class="shortcut">Description</a>
27                    | 
28                   <a href="#gst-plugins-base-libs-gstringbuffer.object-hierarchy" class="shortcut">Object Hierarchy</a>
29 </td></tr>
30 </table>
31 <div class="refentry">
32 <a name="gst-plugins-base-libs-gstringbuffer"></a><div class="titlepage"></div>
33 <div class="refnamediv"><table width="100%"><tr>
34 <td valign="top">
35 <h2><span class="refentrytitle"><a name="gst-plugins-base-libs-gstringbuffer.top_of_page"></a>gstringbuffer</span></h2>
36 <p>gstringbuffer — Base class for audio ringbuffer implementations</p>
37 </td>
38 <td valign="top" align="right"></td>
39 </tr></table></div>
40 <div class="refsynopsisdiv">
41 <a name="gst-plugins-base-libs-gstringbuffer.synopsis"></a><h2>Synopsis</h2>
42 <a name="GstRingBuffer"></a><pre class="synopsis">
43 #include &lt;gst/audio/gstringbuffer.h&gt;
44
45 struct              <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer-struct" title="struct GstRingBuffer">GstRingBuffer</a>;
46 struct              <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferClass" title="struct GstRingBufferClass">GstRingBufferClass</a>;
47 struct              <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferSpec" title="struct GstRingBufferSpec">GstRingBufferSpec</a>;
48 <span class="returnvalue">void</span>                (<a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferCallback" title="GstRingBufferCallback ()">*GstRingBufferCallback</a>)            (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *rbuf</code></em>,
49                                                          <em class="parameter"><code><span class="type">guint8</span> *data</code></em>,
50                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> len</code></em>,
51                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
52 enum                <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferSegState" title="enum GstRingBufferSegState">GstRingBufferSegState</a>;
53 enum                <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferState" title="enum GstRingBufferState">GstRingBufferState</a>;
54 enum                <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstBufferFormat" title="enum GstBufferFormat">GstBufferFormat</a>;
55 enum                <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstBufferFormatType" title="enum GstBufferFormatType">GstBufferFormatType</a>;
56 #define             <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GST-RING-BUFFER-BROADCAST:CAPS" title="GST_RING_BUFFER_BROADCAST()">GST_RING_BUFFER_BROADCAST</a>           (buf)
57 #define             <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GST-RING-BUFFER-GET-COND:CAPS" title="GST_RING_BUFFER_GET_COND()">GST_RING_BUFFER_GET_COND</a>            (buf)
58 #define             <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GST-RING-BUFFER-SIGNAL:CAPS" title="GST_RING_BUFFER_SIGNAL()">GST_RING_BUFFER_SIGNAL</a>              (buf)
59 #define             <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GST-RING-BUFFER-WAIT:CAPS" title="GST_RING_BUFFER_WAIT()">GST_RING_BUFFER_WAIT</a>                (buf)
60 <span class="returnvalue">void</span>                <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-set-callback" title="gst_ring_buffer_set_callback ()">gst_ring_buffer_set_callback</a>        (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
61                                                          <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferCallback" title="GstRingBufferCallback ()"><span class="type">GstRingBufferCallback</span></a> cb</code></em>,
62                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
63 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-acquire" title="gst_ring_buffer_acquire ()">gst_ring_buffer_acquire</a>             (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
64                                                          <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferSpec" title="struct GstRingBufferSpec"><span class="type">GstRingBufferSpec</span></a> *spec</code></em>);
65 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-release" title="gst_ring_buffer_release ()">gst_ring_buffer_release</a>             (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
66 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-is-acquired" title="gst_ring_buffer_is_acquired ()">gst_ring_buffer_is_acquired</a>         (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
67 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-activate" title="gst_ring_buffer_activate ()">gst_ring_buffer_activate</a>            (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
68                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> active</code></em>);
69 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-is-active" title="gst_ring_buffer_is_active ()">gst_ring_buffer_is_active</a>           (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
70 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-start" title="gst_ring_buffer_start ()">gst_ring_buffer_start</a>               (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
71 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-pause" title="gst_ring_buffer_pause ()">gst_ring_buffer_pause</a>               (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
72 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-stop" title="gst_ring_buffer_stop ()">gst_ring_buffer_stop</a>                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
73 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-delay" title="gst_ring_buffer_delay ()">gst_ring_buffer_delay</a>               (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
74 <span class="returnvalue">guint64</span>             <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-samples-done" title="gst_ring_buffer_samples_done ()">gst_ring_buffer_samples_done</a>        (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
75 <span class="returnvalue">void</span>                <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-set-sample" title="gst_ring_buffer_set_sample ()">gst_ring_buffer_set_sample</a>          (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
76                                                          <em class="parameter"><code><span class="type">guint64</span> sample</code></em>);
77 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-commit" title="gst_ring_buffer_commit ()">gst_ring_buffer_commit</a>              (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
78                                                          <em class="parameter"><code><span class="type">guint64</span> sample</code></em>,
79                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guchar"><span class="type">guchar</span></a> *data</code></em>,
80                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> len</code></em>);
81 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-commit-full" title="gst_ring_buffer_commit_full ()">gst_ring_buffer_commit_full</a>         (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
82                                                          <em class="parameter"><code><span class="type">guint64</span> *sample</code></em>,
83                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guchar"><span class="type">guchar</span></a> *data</code></em>,
84                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> in_samples</code></em>,
85                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> out_samples</code></em>,
86                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *accum</code></em>);
87 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-convert" title="gst_ring_buffer_convert ()">gst_ring_buffer_convert</a>             (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
88                                                          <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a> src_fmt</code></em>,
89                                                          <em class="parameter"><code><span class="type">gint64</span> src_val</code></em>,
90                                                          <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a> dest_fmt</code></em>,
91                                                          <em class="parameter"><code><span class="type">gint64</span> *dest_val</code></em>);
92 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-prepare-read" title="gst_ring_buffer_prepare_read ()">gst_ring_buffer_prepare_read</a>        (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
93                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *segment</code></em>,
94                                                          <em class="parameter"><code><span class="type">guint8</span> **readptr</code></em>,
95                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *len</code></em>);
96 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-read" title="gst_ring_buffer_read ()">gst_ring_buffer_read</a>                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
97                                                          <em class="parameter"><code><span class="type">guint64</span> sample</code></em>,
98                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guchar"><span class="type">guchar</span></a> *data</code></em>,
99                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> len</code></em>);
100 <span class="returnvalue">void</span>                <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-clear" title="gst_ring_buffer_clear ()">gst_ring_buffer_clear</a>               (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
101                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> segment</code></em>);
102 <span class="returnvalue">void</span>                <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-clear-all" title="gst_ring_buffer_clear_all ()">gst_ring_buffer_clear_all</a>           (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
103 <span class="returnvalue">void</span>                <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-advance" title="gst_ring_buffer_advance ()">gst_ring_buffer_advance</a>             (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
104                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> advance</code></em>);
105 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-close-device" title="gst_ring_buffer_close_device ()">gst_ring_buffer_close_device</a>        (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
106 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-open-device" title="gst_ring_buffer_open_device ()">gst_ring_buffer_open_device</a>         (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
107 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-device-is-open" title="gst_ring_buffer_device_is_open ()">gst_ring_buffer_device_is_open</a>      (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);
108 <span class="returnvalue">void</span>                <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-may-start" title="gst_ring_buffer_may_start ()">gst_ring_buffer_may_start</a>           (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
109                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> allowed</code></em>);
110 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-parse-caps" title="gst_ring_buffer_parse_caps ()">gst_ring_buffer_parse_caps</a>          (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferSpec" title="struct GstRingBufferSpec"><span class="type">GstRingBufferSpec</span></a> *spec</code></em>,
111                                                          <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *caps</code></em>);
112 <span class="returnvalue">void</span>                <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-set-flushing" title="gst_ring_buffer_set_flushing ()">gst_ring_buffer_set_flushing</a>        (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
113                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> flushing</code></em>);
114 </pre>
115 </div>
116 <div class="refsect1">
117 <a name="gst-plugins-base-libs-gstringbuffer.object-hierarchy"></a><h2>Object Hierarchy</h2>
118 <pre class="synopsis">
119   <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
120    +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
121          +----GstRingBuffer
122 </pre>
123 </div>
124 <div class="refsect1">
125 <a name="gst-plugins-base-libs-gstringbuffer.description"></a><h2>Description</h2>
126 <p>
127 </p>
128 <div class="refsect2">
129 <a name="idp12967152"></a><p>
130 This object is the base class for audio ringbuffers used by the base
131 audio source and sink classes.
132 </p>
133 <p>
134 The ringbuffer abstracts a circular buffer of data. One reader and
135 one writer can operate on the data from different threads in a lockfree
136 manner. The base class is sufficiently flexible to be used as an
137 abstraction for DMA based ringbuffers as well as a pure software
138 implementations.
139 </p>
140 </div>
141 <p>
142 </p>
143 <p>
144 Last reviewed on 2006-02-02 (0.10.4)
145 </p>
146 </div>
147 <div class="refsect1">
148 <a name="gst-plugins-base-libs-gstringbuffer.details"></a><h2>Details</h2>
149 <div class="refsect2">
150 <a name="GstRingBuffer-struct"></a><h3>struct GstRingBuffer</h3>
151 <pre class="programlisting">struct GstRingBuffer {
152   GCond                 *cond;
153   gboolean               open;
154   gboolean               acquired;
155   GstBuffer             *data;
156   GstRingBufferSpec      spec;
157   GstRingBufferSegState *segstate;
158   gint                   samples_per_seg;
159   guint8                *empty_seg;
160
161   gint                   state;
162   gint                   segdone;
163   gint                   segbase;
164   gint                   waiting;
165 };
166 </pre>
167 <p>
168 The ringbuffer base class structure.
169 </p>
170 <div class="variablelist"><table border="0">
171 <col align="left" valign="top">
172 <tbody>
173 <tr>
174 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Threads.html#GCond"><span class="type">GCond</span></a> *<em class="structfield"><code><a name="GstRingBuffer-struct.cond"></a>cond</code></em>;</span></p></td>
175 <td>used to signal start/stop/pause/resume actions</td>
176 </tr>
177 <tr>
178 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstRingBuffer-struct.open"></a>open</code></em>;</span></p></td>
179 <td>boolean indicating that the ringbuffer is open</td>
180 </tr>
181 <tr>
182 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstRingBuffer-struct.acquired"></a>acquired</code></em>;</span></p></td>
183 <td>boolean indicating that the ringbuffer is acquired</td>
184 </tr>
185 <tr>
186 <td><p><span class="term"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a> *<em class="structfield"><code><a name="GstRingBuffer-struct.data"></a>data</code></em>;</span></p></td>
187 <td>data in the ringbuffer</td>
188 </tr>
189 <tr>
190 <td><p><span class="term"><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferSpec" title="struct GstRingBufferSpec"><span class="type">GstRingBufferSpec</span></a> <em class="structfield"><code><a name="GstRingBuffer-struct.spec"></a>spec</code></em>;</span></p></td>
191 <td>format and layout of the ringbuffer data</td>
192 </tr>
193 <tr>
194 <td><p><span class="term"><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferSegState" title="enum GstRingBufferSegState"><span class="type">GstRingBufferSegState</span></a> *<em class="structfield"><code><a name="GstRingBuffer-struct.segstate"></a>segstate</code></em>;</span></p></td>
195 <td>status of each segment in the ringbuffer (unused)</td>
196 </tr>
197 <tr>
198 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBuffer-struct.samples-per-seg"></a>samples_per_seg</code></em>;</span></p></td>
199 <td>number of samples in one segment</td>
200 </tr>
201 <tr>
202 <td><p><span class="term"><span class="type">guint8</span> *<em class="structfield"><code><a name="GstRingBuffer-struct.empty-seg"></a>empty_seg</code></em>;</span></p></td>
203 <td>pointer to memory holding one segment of silence samples</td>
204 </tr>
205 <tr>
206 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBuffer-struct.state"></a>state</code></em>;</span></p></td>
207 <td>state of the buffer</td>
208 </tr>
209 <tr>
210 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBuffer-struct.segdone"></a>segdone</code></em>;</span></p></td>
211 <td>readpointer in the ringbuffer</td>
212 </tr>
213 <tr>
214 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBuffer-struct.segbase"></a>segbase</code></em>;</span></p></td>
215 <td>segment corresponding to segment 0 (unused)</td>
216 </tr>
217 <tr>
218 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBuffer-struct.waiting"></a>waiting</code></em>;</span></p></td>
219 <td>is a reader or writer waiting for a free segment</td>
220 </tr>
221 </tbody>
222 </table></div>
223 </div>
224 <hr>
225 <div class="refsect2">
226 <a name="GstRingBufferClass"></a><h3>struct GstRingBufferClass</h3>
227 <pre class="programlisting">struct GstRingBufferClass {
228   GstObjectClass parent_class;
229
230   gboolean     (*open_device)  (GstRingBuffer *buf);
231   gboolean     (*acquire)      (GstRingBuffer *buf, GstRingBufferSpec *spec);
232   gboolean     (*release)      (GstRingBuffer *buf);
233   gboolean     (*close_device) (GstRingBuffer *buf);
234
235   gboolean     (*start)        (GstRingBuffer *buf);
236   gboolean     (*pause)        (GstRingBuffer *buf);
237   gboolean     (*resume)       (GstRingBuffer *buf);
238   gboolean     (*stop)         (GstRingBuffer *buf);
239
240   guint        (*delay)        (GstRingBuffer *buf);
241
242   /* ABI added */
243   gboolean     (*activate)     (GstRingBuffer *buf, gboolean active);
244
245   guint        (*commit)       (GstRingBuffer * buf, guint64 *sample,
246                                 guchar * data, gint in_samples,
247                                 gint out_samples, gint * accum);
248
249   void         (*clear_all)    (GstRingBuffer * buf);
250 };
251 </pre>
252 <p>
253 The vmethods that subclasses can override to implement the ringbuffer.
254 </p>
255 <div class="variablelist"><table border="0">
256 <col align="left" valign="top">
257 <tbody>
258 <tr>
259 <td><p><span class="term"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html#GstObjectClass"><span class="type">GstObjectClass</span></a> <em class="structfield"><code><a name="GstRingBufferClass.parent-class"></a>parent_class</code></em>;</span></p></td>
260 <td>parent class</td>
261 </tr>
262 <tr>
263 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.open-device"></a>open_device</code></em> ()</span></p></td>
264 <td>open the device, don't set any params or allocate anything</td>
265 </tr>
266 <tr>
267 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.acquire"></a>acquire</code></em> ()</span></p></td>
268 <td>allocate the resources for the ringbuffer using the given spec</td>
269 </tr>
270 <tr>
271 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.release"></a>release</code></em> ()</span></p></td>
272 <td>free resources of the ringbuffer</td>
273 </tr>
274 <tr>
275 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.close-device"></a>close_device</code></em> ()</span></p></td>
276 <td>close the device</td>
277 </tr>
278 <tr>
279 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.start"></a>start</code></em> ()</span></p></td>
280 <td>start processing of samples</td>
281 </tr>
282 <tr>
283 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.pause"></a>pause</code></em> ()</span></p></td>
284 <td>pause processing of samples</td>
285 </tr>
286 <tr>
287 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.resume"></a>resume</code></em> ()</span></p></td>
288 <td>resume processing of samples after pause</td>
289 </tr>
290 <tr>
291 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.stop"></a>stop</code></em> ()</span></p></td>
292 <td>stop processing of samples</td>
293 </tr>
294 <tr>
295 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.delay"></a>delay</code></em> ()</span></p></td>
296 <td>get number of samples queued in device</td>
297 </tr>
298 <tr>
299 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.activate"></a>activate</code></em> ()</span></p></td>
300 <td>activate the thread that starts pulling and monitoring the
301 consumed segments in the device. Since 0.10.22</td>
302 </tr>
303 <tr>
304 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.commit"></a>commit</code></em> ()</span></p></td>
305 <td>write samples into the ringbuffer</td>
306 </tr>
307 <tr>
308 <td><p><span class="term"><em class="structfield"><code><a name="GstRingBufferClass.clear-all"></a>clear_all</code></em> ()</span></p></td>
309 <td>clear the entire ringbuffer Since 0.10.24</td>
310 </tr>
311 </tbody>
312 </table></div>
313 </div>
314 <hr>
315 <div class="refsect2">
316 <a name="GstRingBufferSpec"></a><h3>struct GstRingBufferSpec</h3>
317 <pre class="programlisting">struct GstRingBufferSpec {
318   /* in */
319   GstCaps  *caps;               /* the caps of the buffer */
320
321   /* in/out */
322   GstBufferFormatType   type;
323   GstBufferFormat format;
324   gboolean  sign;
325   gboolean  bigend;
326   gint      width;
327   gint      depth;
328   gint      rate;
329   gint      channels;
330
331   guint64  latency_time;        /* the required/actual latency time, this is the
332                                  * actual the size of one segment and the
333                                  * minimum possible latency we can achieve. */
334   guint64  buffer_time;         /* the required/actual time of the buffer, this is
335                                  * the total size of the buffer and maximum
336                                  * latency we can compensate for. */
337   gint     segsize;             /* size of one buffer segment in bytes, this value
338                                  * should be chosen to match latency_time as
339                                  * well as possible. */
340   gint     segtotal;            /* total number of segments, this value is the
341                                  * number of segments of @segsize and should be
342                                  * chosen so that it matches buffer_time as
343                                  * close as possible. */
344   /* out */
345   gint     bytes_per_sample;    /* number of bytes of one sample */
346   guint8   silence_sample[32];  /* bytes representing silence */
347
348   /* ABI added 0.10.20 */
349   gint     seglatency;          /* number of segments queued in the lower
350                                  * level device, defaults to segtotal. */
351 };
352 </pre>
353 <p>
354 The structure containing the format specification of the ringbuffer.
355 </p>
356 <div class="variablelist"><table border="0">
357 <col align="left" valign="top">
358 <tbody>
359 <tr>
360 <td><p><span class="term"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *<em class="structfield"><code><a name="GstRingBufferSpec.caps"></a>caps</code></em>;</span></p></td>
361 <td>The caps that generated the Spec.</td>
362 </tr>
363 <tr>
364 <td><p><span class="term"><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstBufferFormatType" title="enum GstBufferFormatType"><span class="type">GstBufferFormatType</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.type"></a>type</code></em>;</span></p></td>
365 <td>the sample type</td>
366 </tr>
367 <tr>
368 <td><p><span class="term"><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstBufferFormat" title="enum GstBufferFormat"><span class="type">GstBufferFormat</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.format"></a>format</code></em>;</span></p></td>
369 <td>the sample format</td>
370 </tr>
371 <tr>
372 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.sign"></a>sign</code></em>;</span></p></td>
373 <td>the sample sign</td>
374 </tr>
375 <tr>
376 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.bigend"></a>bigend</code></em>;</span></p></td>
377 <td>the endianness of the samples</td>
378 </tr>
379 <tr>
380 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.width"></a>width</code></em>;</span></p></td>
381 <td>the width of the samples</td>
382 </tr>
383 <tr>
384 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.depth"></a>depth</code></em>;</span></p></td>
385 <td>th depth of the samples</td>
386 </tr>
387 <tr>
388 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.rate"></a>rate</code></em>;</span></p></td>
389 <td>the samplerate</td>
390 </tr>
391 <tr>
392 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.channels"></a>channels</code></em>;</span></p></td>
393 <td>the number of channels</td>
394 </tr>
395 <tr>
396 <td><p><span class="term"><span class="type">guint64</span> <em class="structfield"><code><a name="GstRingBufferSpec.latency-time"></a>latency_time</code></em>;</span></p></td>
397 <td>the latency in microseconds</td>
398 </tr>
399 <tr>
400 <td><p><span class="term"><span class="type">guint64</span> <em class="structfield"><code><a name="GstRingBufferSpec.buffer-time"></a>buffer_time</code></em>;</span></p></td>
401 <td>the total buffer size in microseconds</td>
402 </tr>
403 <tr>
404 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.segsize"></a>segsize</code></em>;</span></p></td>
405 <td>the size of one segment in bytes</td>
406 </tr>
407 <tr>
408 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.segtotal"></a>segtotal</code></em>;</span></p></td>
409 <td>the total number of segments</td>
410 </tr>
411 <tr>
412 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.bytes-per-sample"></a>bytes_per_sample</code></em>;</span></p></td>
413 <td>number of bytes in one sample</td>
414 </tr>
415 <tr>
416 <td><p><span class="term"><span class="type">guint8</span> <em class="structfield"><code><a name="GstRingBufferSpec.silence-sample"></a>silence_sample</code></em>[32];</span></p></td>
417 <td>bytes representing one sample of silence</td>
418 </tr>
419 <tr>
420 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstRingBufferSpec.seglatency"></a>seglatency</code></em>;</span></p></td>
421 <td>number of segments queued in the lower level device,
422 defaults to segtotal</td>
423 </tr>
424 </tbody>
425 </table></div>
426 </div>
427 <hr>
428 <div class="refsect2">
429 <a name="GstRingBufferCallback"></a><h3>GstRingBufferCallback ()</h3>
430 <pre class="programlisting"><span class="returnvalue">void</span>                (*GstRingBufferCallback)            (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *rbuf</code></em>,
431                                                          <em class="parameter"><code><span class="type">guint8</span> *data</code></em>,
432                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> len</code></em>,
433                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
434 <p>
435 This function is set with <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-set-callback" title="gst_ring_buffer_set_callback ()"><code class="function">gst_ring_buffer_set_callback()</code></a> and is
436 called to fill the memory at <em class="parameter"><code>data</code></em> with <em class="parameter"><code>len</code></em> bytes of samples.
437 </p>
438 <div class="variablelist"><table border="0">
439 <col align="left" valign="top">
440 <tbody>
441 <tr>
442 <td><p><span class="term"><em class="parameter"><code>rbuf</code></em> :</span></p></td>
443 <td>a <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a>
444 </td>
445 </tr>
446 <tr>
447 <td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
448 <td>target to fill</td>
449 </tr>
450 <tr>
451 <td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
452 <td>amount to fill</td>
453 </tr>
454 <tr>
455 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
456 <td>user data</td>
457 </tr>
458 </tbody>
459 </table></div>
460 </div>
461 <hr>
462 <div class="refsect2">
463 <a name="GstRingBufferSegState"></a><h3>enum GstRingBufferSegState</h3>
464 <pre class="programlisting">typedef enum {
465   GST_SEGSTATE_INVALID,
466   GST_SEGSTATE_EMPTY,
467   GST_SEGSTATE_FILLED,
468   GST_SEGSTATE_PARTIAL
469 } GstRingBufferSegState;
470 </pre>
471 <p>
472 The state of a segment in the ringbuffer.
473 </p>
474 <div class="variablelist"><table border="0">
475 <col align="left" valign="top">
476 <tbody>
477 <tr>
478 <td><p><a name="GST-SEGSTATE-INVALID:CAPS"></a><span class="term"><code class="literal">GST_SEGSTATE_INVALID</code></span></p></td>
479 <td>The content of the segment is invalid
480 </td>
481 </tr>
482 <tr>
483 <td><p><a name="GST-SEGSTATE-EMPTY:CAPS"></a><span class="term"><code class="literal">GST_SEGSTATE_EMPTY</code></span></p></td>
484 <td>The segment is empty
485 </td>
486 </tr>
487 <tr>
488 <td><p><a name="GST-SEGSTATE-FILLED:CAPS"></a><span class="term"><code class="literal">GST_SEGSTATE_FILLED</code></span></p></td>
489 <td>The segment contains valid data
490 </td>
491 </tr>
492 <tr>
493 <td><p><a name="GST-SEGSTATE-PARTIAL:CAPS"></a><span class="term"><code class="literal">GST_SEGSTATE_PARTIAL</code></span></p></td>
494 <td>The segment partially contains valid data
495 </td>
496 </tr>
497 </tbody>
498 </table></div>
499 </div>
500 <hr>
501 <div class="refsect2">
502 <a name="GstRingBufferState"></a><h3>enum GstRingBufferState</h3>
503 <pre class="programlisting">typedef enum {
504   GST_RING_BUFFER_STATE_STOPPED,
505   GST_RING_BUFFER_STATE_PAUSED,
506   GST_RING_BUFFER_STATE_STARTED
507 } GstRingBufferState;
508 </pre>
509 <p>
510 The state of the ringbuffer.
511 </p>
512 <div class="variablelist"><table border="0">
513 <col align="left" valign="top">
514 <tbody>
515 <tr>
516 <td><p><a name="GST-RING-BUFFER-STATE-STOPPED:CAPS"></a><span class="term"><code class="literal">GST_RING_BUFFER_STATE_STOPPED</code></span></p></td>
517 <td>The ringbuffer is stopped
518 </td>
519 </tr>
520 <tr>
521 <td><p><a name="GST-RING-BUFFER-STATE-PAUSED:CAPS"></a><span class="term"><code class="literal">GST_RING_BUFFER_STATE_PAUSED</code></span></p></td>
522 <td>The ringbuffer is paused
523 </td>
524 </tr>
525 <tr>
526 <td><p><a name="GST-RING-BUFFER-STATE-STARTED:CAPS"></a><span class="term"><code class="literal">GST_RING_BUFFER_STATE_STARTED</code></span></p></td>
527 <td>The ringbuffer is started
528 </td>
529 </tr>
530 </tbody>
531 </table></div>
532 </div>
533 <hr>
534 <div class="refsect2">
535 <a name="GstBufferFormat"></a><h3>enum GstBufferFormat</h3>
536 <pre class="programlisting">typedef enum {
537   GST_UNKNOWN,
538
539   GST_S8,
540   GST_U8,
541
542   GST_S16_LE,
543   GST_S16_BE,
544   GST_U16_LE,
545   GST_U16_BE,
546
547   GST_S24_LE,
548   GST_S24_BE,
549   GST_U24_LE,
550   GST_U24_BE,
551
552   GST_S32_LE,
553   GST_S32_BE,
554   GST_U32_LE,
555   GST_U32_BE,
556
557   GST_S24_3LE,
558   GST_S24_3BE,
559   GST_U24_3LE,
560   GST_U24_3BE,
561   GST_S20_3LE,
562   GST_S20_3BE,
563   GST_U20_3LE,
564   GST_U20_3BE,
565   GST_S18_3LE,
566   GST_S18_3BE,
567   GST_U18_3LE,
568   GST_U18_3BE,
569
570   GST_FLOAT32_LE,
571   GST_FLOAT32_BE,
572
573   GST_FLOAT64_LE,
574   GST_FLOAT64_BE,
575
576   GST_MU_LAW,
577   GST_A_LAW,
578   GST_IMA_ADPCM,
579   GST_MPEG,
580   GST_GSM,
581   GST_IEC958,
582   GST_AC3,
583   GST_EAC3,
584   GST_DTS,
585   GST_MPEG2_AAC,
586   GST_MPEG4_AAC,
587 } GstBufferFormat;
588 </pre>
589 <p>
590 The detailed format of the samples in the ringbuffer.
591 </p>
592 <div class="variablelist"><table border="0">
593 <col align="left" valign="top">
594 <tbody>
595 <tr>
596 <td><p><a name="GST-UNKNOWN:CAPS"></a><span class="term"><code class="literal">GST_UNKNOWN</code></span></p></td>
597 <td>unspecified
598 </td>
599 </tr>
600 <tr>
601 <td><p><a name="GST-S8:CAPS"></a><span class="term"><code class="literal">GST_S8</code></span></p></td>
602 <td>integer signed 8 bit
603 </td>
604 </tr>
605 <tr>
606 <td><p><a name="GST-U8:CAPS"></a><span class="term"><code class="literal">GST_U8</code></span></p></td>
607 <td>integer unsigned 8 bit
608 </td>
609 </tr>
610 <tr>
611 <td><p><a name="GST-S16-LE:CAPS"></a><span class="term"><code class="literal">GST_S16_LE</code></span></p></td>
612 <td>integer signed 16 bit little endian
613 </td>
614 </tr>
615 <tr>
616 <td><p><a name="GST-S16-BE:CAPS"></a><span class="term"><code class="literal">GST_S16_BE</code></span></p></td>
617 <td>integer signed 16 bit big endian
618 </td>
619 </tr>
620 <tr>
621 <td><p><a name="GST-U16-LE:CAPS"></a><span class="term"><code class="literal">GST_U16_LE</code></span></p></td>
622 <td>integer unsigned 16 bit little endian
623 </td>
624 </tr>
625 <tr>
626 <td><p><a name="GST-U16-BE:CAPS"></a><span class="term"><code class="literal">GST_U16_BE</code></span></p></td>
627 <td>integer unsigned 16 bit big endian
628 </td>
629 </tr>
630 <tr>
631 <td><p><a name="GST-S24-LE:CAPS"></a><span class="term"><code class="literal">GST_S24_LE</code></span></p></td>
632 <td>integer signed 24 bit little endian
633 </td>
634 </tr>
635 <tr>
636 <td><p><a name="GST-S24-BE:CAPS"></a><span class="term"><code class="literal">GST_S24_BE</code></span></p></td>
637 <td>integer signed 24 bit big endian
638 </td>
639 </tr>
640 <tr>
641 <td><p><a name="GST-U24-LE:CAPS"></a><span class="term"><code class="literal">GST_U24_LE</code></span></p></td>
642 <td>integer unsigned 24 bit little endian
643 </td>
644 </tr>
645 <tr>
646 <td><p><a name="GST-U24-BE:CAPS"></a><span class="term"><code class="literal">GST_U24_BE</code></span></p></td>
647 <td>integer unsigned 24 bit big endian
648 </td>
649 </tr>
650 <tr>
651 <td><p><a name="GST-S32-LE:CAPS"></a><span class="term"><code class="literal">GST_S32_LE</code></span></p></td>
652 <td>integer signed 32 bit little endian
653 </td>
654 </tr>
655 <tr>
656 <td><p><a name="GST-S32-BE:CAPS"></a><span class="term"><code class="literal">GST_S32_BE</code></span></p></td>
657 <td>integer signed 32 bit big endian
658 </td>
659 </tr>
660 <tr>
661 <td><p><a name="GST-U32-LE:CAPS"></a><span class="term"><code class="literal">GST_U32_LE</code></span></p></td>
662 <td>integer unsigned 32 bit little endian
663 </td>
664 </tr>
665 <tr>
666 <td><p><a name="GST-U32-BE:CAPS"></a><span class="term"><code class="literal">GST_U32_BE</code></span></p></td>
667 <td>integer unsigned 32 bit big endian
668 </td>
669 </tr>
670 <tr>
671 <td><p><a name="GST-S24-3LE:CAPS"></a><span class="term"><code class="literal">GST_S24_3LE</code></span></p></td>
672 <td>integer signed 24 bit little endian packed in 3 bytes
673 </td>
674 </tr>
675 <tr>
676 <td><p><a name="GST-S24-3BE:CAPS"></a><span class="term"><code class="literal">GST_S24_3BE</code></span></p></td>
677 <td>integer signed 24 bit big endian packed in 3 bytes
678 </td>
679 </tr>
680 <tr>
681 <td><p><a name="GST-U24-3LE:CAPS"></a><span class="term"><code class="literal">GST_U24_3LE</code></span></p></td>
682 <td>integer unsigned 24 bit little endian packed in 3 bytes
683 </td>
684 </tr>
685 <tr>
686 <td><p><a name="GST-U24-3BE:CAPS"></a><span class="term"><code class="literal">GST_U24_3BE</code></span></p></td>
687 <td>integer unsigned 24 bit big endian packed in 3 bytes
688 </td>
689 </tr>
690 <tr>
691 <td><p><a name="GST-S20-3LE:CAPS"></a><span class="term"><code class="literal">GST_S20_3LE</code></span></p></td>
692 <td>integer signed 20 bit little endian packed in 3 bytes
693 </td>
694 </tr>
695 <tr>
696 <td><p><a name="GST-S20-3BE:CAPS"></a><span class="term"><code class="literal">GST_S20_3BE</code></span></p></td>
697 <td>integer signed 20 bit big endian packed in 3 bytes
698 </td>
699 </tr>
700 <tr>
701 <td><p><a name="GST-U20-3LE:CAPS"></a><span class="term"><code class="literal">GST_U20_3LE</code></span></p></td>
702 <td>integer unsigned 20 bit little endian packed in 3 bytes
703 </td>
704 </tr>
705 <tr>
706 <td><p><a name="GST-U20-3BE:CAPS"></a><span class="term"><code class="literal">GST_U20_3BE</code></span></p></td>
707 <td>integer unsigned 20 bit big endian packed in 3 bytes
708 </td>
709 </tr>
710 <tr>
711 <td><p><a name="GST-S18-3LE:CAPS"></a><span class="term"><code class="literal">GST_S18_3LE</code></span></p></td>
712 <td>integer signed 18 bit little endian packed in 3 bytes
713 </td>
714 </tr>
715 <tr>
716 <td><p><a name="GST-S18-3BE:CAPS"></a><span class="term"><code class="literal">GST_S18_3BE</code></span></p></td>
717 <td>integer signed 18 bit big endian packed in 3 bytes
718 </td>
719 </tr>
720 <tr>
721 <td><p><a name="GST-U18-3LE:CAPS"></a><span class="term"><code class="literal">GST_U18_3LE</code></span></p></td>
722 <td>integer unsigned 18 bit little endian packed in 3 bytes
723 </td>
724 </tr>
725 <tr>
726 <td><p><a name="GST-U18-3BE:CAPS"></a><span class="term"><code class="literal">GST_U18_3BE</code></span></p></td>
727 <td>integer unsigned 18 bit big endian packed in 3 bytes
728 </td>
729 </tr>
730 <tr>
731 <td><p><a name="GST-FLOAT32-LE:CAPS"></a><span class="term"><code class="literal">GST_FLOAT32_LE</code></span></p></td>
732 <td>floating 32 bit little endian
733 </td>
734 </tr>
735 <tr>
736 <td><p><a name="GST-FLOAT32-BE:CAPS"></a><span class="term"><code class="literal">GST_FLOAT32_BE</code></span></p></td>
737 <td>floating 32 bit big endian
738 </td>
739 </tr>
740 <tr>
741 <td><p><a name="GST-FLOAT64-LE:CAPS"></a><span class="term"><code class="literal">GST_FLOAT64_LE</code></span></p></td>
742 <td>floating 64 bit little endian
743 </td>
744 </tr>
745 <tr>
746 <td><p><a name="GST-FLOAT64-BE:CAPS"></a><span class="term"><code class="literal">GST_FLOAT64_BE</code></span></p></td>
747 <td>floating 64 bit big endian
748 </td>
749 </tr>
750 <tr>
751 <td><p><a name="GST-MU-LAW:CAPS"></a><span class="term"><code class="literal">GST_MU_LAW</code></span></p></td>
752 <td>mu-law
753 </td>
754 </tr>
755 <tr>
756 <td><p><a name="GST-A-LAW:CAPS"></a><span class="term"><code class="literal">GST_A_LAW</code></span></p></td>
757 <td>a-law
758 </td>
759 </tr>
760 <tr>
761 <td><p><a name="GST-IMA-ADPCM:CAPS"></a><span class="term"><code class="literal">GST_IMA_ADPCM</code></span></p></td>
762 <td>ima adpcm
763 </td>
764 </tr>
765 <tr>
766 <td><p><a name="GST-MPEG:CAPS"></a><span class="term"><code class="literal">GST_MPEG</code></span></p></td>
767 <td>mpeg audio (but not aac)
768 </td>
769 </tr>
770 <tr>
771 <td><p><a name="GST-GSM:CAPS"></a><span class="term"><code class="literal">GST_GSM</code></span></p></td>
772 <td>gsm
773 </td>
774 </tr>
775 <tr>
776 <td><p><a name="GST-IEC958:CAPS"></a><span class="term"><code class="literal">GST_IEC958</code></span></p></td>
777 <td>IEC958 frames
778 </td>
779 </tr>
780 <tr>
781 <td><p><a name="GST-AC3:CAPS"></a><span class="term"><code class="literal">GST_AC3</code></span></p></td>
782 <td>ac3
783 </td>
784 </tr>
785 <tr>
786 <td><p><a name="GST-EAC3:CAPS"></a><span class="term"><code class="literal">GST_EAC3</code></span></p></td>
787 <td>eac3
788 </td>
789 </tr>
790 <tr>
791 <td><p><a name="GST-DTS:CAPS"></a><span class="term"><code class="literal">GST_DTS</code></span></p></td>
792 <td>dts
793 </td>
794 </tr>
795 <tr>
796 <td><p><a name="GST-MPEG2-AAC:CAPS"></a><span class="term"><code class="literal">GST_MPEG2_AAC</code></span></p></td>
797 <td>mpeg-2 aac
798 </td>
799 </tr>
800 <tr>
801 <td><p><a name="GST-MPEG4-AAC:CAPS"></a><span class="term"><code class="literal">GST_MPEG4_AAC</code></span></p></td>
802 <td>mpeg-4 aac
803 </td>
804 </tr>
805 </tbody>
806 </table></div>
807 </div>
808 <hr>
809 <div class="refsect2">
810 <a name="GstBufferFormatType"></a><h3>enum GstBufferFormatType</h3>
811 <pre class="programlisting">typedef enum {
812   GST_BUFTYPE_LINEAR,
813   GST_BUFTYPE_FLOAT,
814   GST_BUFTYPE_MU_LAW,
815   GST_BUFTYPE_A_LAW,
816   GST_BUFTYPE_IMA_ADPCM,
817   GST_BUFTYPE_MPEG,
818   GST_BUFTYPE_GSM,
819   GST_BUFTYPE_IEC958,
820   GST_BUFTYPE_AC3,
821   GST_BUFTYPE_EAC3,
822   GST_BUFTYPE_DTS,
823   GST_BUFTYPE_MPEG2_AAC,
824   GST_BUFTYPE_MPEG4_AAC,
825 } GstBufferFormatType;
826 </pre>
827 <p>
828 The format of the samples in the ringbuffer.
829 </p>
830 <div class="variablelist"><table border="0">
831 <col align="left" valign="top">
832 <tbody>
833 <tr>
834 <td><p><a name="GST-BUFTYPE-LINEAR:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_LINEAR</code></span></p></td>
835 <td>samples in linear PCM
836 </td>
837 </tr>
838 <tr>
839 <td><p><a name="GST-BUFTYPE-FLOAT:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_FLOAT</code></span></p></td>
840 <td>samples in float
841 </td>
842 </tr>
843 <tr>
844 <td><p><a name="GST-BUFTYPE-MU-LAW:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_MU_LAW</code></span></p></td>
845 <td>samples in mulaw
846 </td>
847 </tr>
848 <tr>
849 <td><p><a name="GST-BUFTYPE-A-LAW:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_A_LAW</code></span></p></td>
850 <td>samples in alaw
851 </td>
852 </tr>
853 <tr>
854 <td><p><a name="GST-BUFTYPE-IMA-ADPCM:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_IMA_ADPCM</code></span></p></td>
855 <td>samples in ima adpcm
856 </td>
857 </tr>
858 <tr>
859 <td><p><a name="GST-BUFTYPE-MPEG:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_MPEG</code></span></p></td>
860 <td>samples in mpeg audio (but not AAC) format
861 </td>
862 </tr>
863 <tr>
864 <td><p><a name="GST-BUFTYPE-GSM:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_GSM</code></span></p></td>
865 <td>samples in gsm format
866 </td>
867 </tr>
868 <tr>
869 <td><p><a name="GST-BUFTYPE-IEC958:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_IEC958</code></span></p></td>
870 <td>samples in IEC958 frames (e.g. AC3)
871 </td>
872 </tr>
873 <tr>
874 <td><p><a name="GST-BUFTYPE-AC3:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_AC3</code></span></p></td>
875 <td>samples in AC3 format
876 </td>
877 </tr>
878 <tr>
879 <td><p><a name="GST-BUFTYPE-EAC3:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_EAC3</code></span></p></td>
880 <td>samples in EAC3 format
881 </td>
882 </tr>
883 <tr>
884 <td><p><a name="GST-BUFTYPE-DTS:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_DTS</code></span></p></td>
885 <td>samples in DTS format
886 </td>
887 </tr>
888 <tr>
889 <td><p><a name="GST-BUFTYPE-MPEG2-AAC:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_MPEG2_AAC</code></span></p></td>
890 <td>samples in MPEG-2 AAC format
891 </td>
892 </tr>
893 <tr>
894 <td><p><a name="GST-BUFTYPE-MPEG4-AAC:CAPS"></a><span class="term"><code class="literal">GST_BUFTYPE_MPEG4_AAC</code></span></p></td>
895 <td>samples in MPEG-4 AAC format
896 </td>
897 </tr>
898 </tbody>
899 </table></div>
900 </div>
901 <hr>
902 <div class="refsect2">
903 <a name="GST-RING-BUFFER-BROADCAST:CAPS"></a><h3>GST_RING_BUFFER_BROADCAST()</h3>
904 <pre class="programlisting">#define GST_RING_BUFFER_BROADCAST(buf)(g_cond_broadcast (GST_RING_BUFFER_GET_COND (buf)))
905 </pre>
906 </div>
907 <hr>
908 <div class="refsect2">
909 <a name="GST-RING-BUFFER-GET-COND:CAPS"></a><h3>GST_RING_BUFFER_GET_COND()</h3>
910 <pre class="programlisting">#define GST_RING_BUFFER_GET_COND(buf) (((GstRingBuffer *)buf)-&gt;cond)
911 </pre>
912 </div>
913 <hr>
914 <div class="refsect2">
915 <a name="GST-RING-BUFFER-SIGNAL:CAPS"></a><h3>GST_RING_BUFFER_SIGNAL()</h3>
916 <pre class="programlisting">#define GST_RING_BUFFER_SIGNAL(buf)   (g_cond_signal (GST_RING_BUFFER_GET_COND (buf)))
917 </pre>
918 </div>
919 <hr>
920 <div class="refsect2">
921 <a name="GST-RING-BUFFER-WAIT:CAPS"></a><h3>GST_RING_BUFFER_WAIT()</h3>
922 <pre class="programlisting">#define GST_RING_BUFFER_WAIT(buf)     (g_cond_wait (GST_RING_BUFFER_GET_COND (buf), GST_OBJECT_GET_LOCK (buf)))
923 </pre>
924 </div>
925 <hr>
926 <div class="refsect2">
927 <a name="gst-ring-buffer-set-callback"></a><h3>gst_ring_buffer_set_callback ()</h3>
928 <pre class="programlisting"><span class="returnvalue">void</span>                gst_ring_buffer_set_callback        (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
929                                                          <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferCallback" title="GstRingBufferCallback ()"><span class="type">GstRingBufferCallback</span></a> cb</code></em>,
930                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
931 <p>
932 Sets the given callback function on the buffer. This function
933 will be called every time a segment has been written to a device.
934 </p>
935 <p>
936 MT safe.
937 </p>
938 <div class="variablelist"><table border="0">
939 <col align="left" valign="top">
940 <tbody>
941 <tr>
942 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
943 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to set the callback on</td>
944 </tr>
945 <tr>
946 <td><p><span class="term"><em class="parameter"><code>cb</code></em> :</span></p></td>
947 <td>the callback to set</td>
948 </tr>
949 <tr>
950 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
951 <td>user data passed to the callback</td>
952 </tr>
953 </tbody>
954 </table></div>
955 </div>
956 <hr>
957 <div class="refsect2">
958 <a name="gst-ring-buffer-acquire"></a><h3>gst_ring_buffer_acquire ()</h3>
959 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_acquire             (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
960                                                          <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferSpec" title="struct GstRingBufferSpec"><span class="type">GstRingBufferSpec</span></a> *spec</code></em>);</pre>
961 <p>
962 Allocate the resources for the ringbuffer. This function fills
963 in the data pointer of the ring buffer with a valid <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstBuffer.html#GstBuffer"><span class="type">GstBuffer</span></a>
964 to which samples can be written.
965 </p>
966 <div class="variablelist"><table border="0">
967 <col align="left" valign="top">
968 <tbody>
969 <tr>
970 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
971 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to acquire</td>
972 </tr>
973 <tr>
974 <td><p><span class="term"><em class="parameter"><code>spec</code></em> :</span></p></td>
975 <td>the specs of the buffer</td>
976 </tr>
977 <tr>
978 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
979 <td>TRUE if the device could be acquired, FALSE on error.
980 MT safe.</td>
981 </tr>
982 </tbody>
983 </table></div>
984 </div>
985 <hr>
986 <div class="refsect2">
987 <a name="gst-ring-buffer-release"></a><h3>gst_ring_buffer_release ()</h3>
988 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_release             (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
989 <p>
990 Free the resources of the ringbuffer.
991 </p>
992 <div class="variablelist"><table border="0">
993 <col align="left" valign="top">
994 <tbody>
995 <tr>
996 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
997 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to release</td>
998 </tr>
999 <tr>
1000 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1001 <td>TRUE if the device could be released, FALSE on error.
1002 MT safe.</td>
1003 </tr>
1004 </tbody>
1005 </table></div>
1006 </div>
1007 <hr>
1008 <div class="refsect2">
1009 <a name="gst-ring-buffer-is-acquired"></a><h3>gst_ring_buffer_is_acquired ()</h3>
1010 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_is_acquired         (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
1011 <p>
1012 Check if the ringbuffer is acquired and ready to use.
1013 </p>
1014 <div class="variablelist"><table border="0">
1015 <col align="left" valign="top">
1016 <tbody>
1017 <tr>
1018 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1019 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to check</td>
1020 </tr>
1021 <tr>
1022 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1023 <td>TRUE if the ringbuffer is acquired, FALSE on error.
1024 MT safe.</td>
1025 </tr>
1026 </tbody>
1027 </table></div>
1028 </div>
1029 <hr>
1030 <div class="refsect2">
1031 <a name="gst-ring-buffer-activate"></a><h3>gst_ring_buffer_activate ()</h3>
1032 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_activate            (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
1033                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> active</code></em>);</pre>
1034 <p>
1035 Activate <em class="parameter"><code>buf</code></em> to start or stop pulling data.
1036 </p>
1037 <p>
1038 MT safe.
1039 </p>
1040 <div class="variablelist"><table border="0">
1041 <col align="left" valign="top">
1042 <tbody>
1043 <tr>
1044 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1045 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to activate</td>
1046 </tr>
1047 <tr>
1048 <td><p><span class="term"><em class="parameter"><code>active</code></em> :</span></p></td>
1049 <td>the new mode</td>
1050 </tr>
1051 <tr>
1052 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1053 <td>TRUE if the device could be activated in the requested mode,
1054 FALSE on error.</td>
1055 </tr>
1056 </tbody>
1057 </table></div>
1058 <p class="since">Since 0.10.22.</p>
1059 </div>
1060 <hr>
1061 <div class="refsect2">
1062 <a name="gst-ring-buffer-is-active"></a><h3>gst_ring_buffer_is_active ()</h3>
1063 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_is_active           (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
1064 <p>
1065 Check if <em class="parameter"><code>buf</code></em> is activated.
1066 </p>
1067 <p>
1068 MT safe.
1069 </p>
1070 <div class="variablelist"><table border="0">
1071 <col align="left" valign="top">
1072 <tbody>
1073 <tr>
1074 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1075 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a>
1076 </td>
1077 </tr>
1078 <tr>
1079 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1080 <td>TRUE if the device is active.</td>
1081 </tr>
1082 </tbody>
1083 </table></div>
1084 <p class="since">Since 0.10.22.</p>
1085 </div>
1086 <hr>
1087 <div class="refsect2">
1088 <a name="gst-ring-buffer-start"></a><h3>gst_ring_buffer_start ()</h3>
1089 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_start               (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
1090 <p>
1091 Start processing samples from the ringbuffer.
1092 </p>
1093 <div class="variablelist"><table border="0">
1094 <col align="left" valign="top">
1095 <tbody>
1096 <tr>
1097 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1098 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to start</td>
1099 </tr>
1100 <tr>
1101 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1102 <td>TRUE if the device could be started, FALSE on error.
1103 MT safe.</td>
1104 </tr>
1105 </tbody>
1106 </table></div>
1107 </div>
1108 <hr>
1109 <div class="refsect2">
1110 <a name="gst-ring-buffer-pause"></a><h3>gst_ring_buffer_pause ()</h3>
1111 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_pause               (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
1112 <p>
1113 Pause processing samples from the ringbuffer.
1114 </p>
1115 <div class="variablelist"><table border="0">
1116 <col align="left" valign="top">
1117 <tbody>
1118 <tr>
1119 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1120 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to pause</td>
1121 </tr>
1122 <tr>
1123 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1124 <td>TRUE if the device could be paused, FALSE on error.
1125 MT safe.</td>
1126 </tr>
1127 </tbody>
1128 </table></div>
1129 </div>
1130 <hr>
1131 <div class="refsect2">
1132 <a name="gst-ring-buffer-stop"></a><h3>gst_ring_buffer_stop ()</h3>
1133 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_stop                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
1134 <p>
1135 Stop processing samples from the ringbuffer.
1136 </p>
1137 <div class="variablelist"><table border="0">
1138 <col align="left" valign="top">
1139 <tbody>
1140 <tr>
1141 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1142 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to stop</td>
1143 </tr>
1144 <tr>
1145 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1146 <td>TRUE if the device could be stopped, FALSE on error.
1147 MT safe.</td>
1148 </tr>
1149 </tbody>
1150 </table></div>
1151 </div>
1152 <hr>
1153 <div class="refsect2">
1154 <a name="gst-ring-buffer-delay"></a><h3>gst_ring_buffer_delay ()</h3>
1155 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               gst_ring_buffer_delay               (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
1156 <p>
1157 Get the number of samples queued in the audio device. This is
1158 usually less than the segment size but can be bigger when the
1159 implementation uses another internal buffer between the audio
1160 device.
1161 </p>
1162 <p>
1163 For playback ringbuffers this is the amount of samples transfered from the
1164 ringbuffer to the device but still not played.
1165 </p>
1166 <p>
1167 For capture ringbuffers this is the amount of samples in the device that are
1168 not yet transfered to the ringbuffer.
1169 </p>
1170 <div class="variablelist"><table border="0">
1171 <col align="left" valign="top">
1172 <tbody>
1173 <tr>
1174 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1175 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to query</td>
1176 </tr>
1177 <tr>
1178 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1179 <td>The number of samples queued in the audio device.
1180 MT safe.</td>
1181 </tr>
1182 </tbody>
1183 </table></div>
1184 </div>
1185 <hr>
1186 <div class="refsect2">
1187 <a name="gst-ring-buffer-samples-done"></a><h3>gst_ring_buffer_samples_done ()</h3>
1188 <pre class="programlisting"><span class="returnvalue">guint64</span>             gst_ring_buffer_samples_done        (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
1189 <p>
1190 Get the number of samples that were processed by the ringbuffer
1191 since it was last started. This does not include the number of samples not
1192 yet processed (see <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-delay" title="gst_ring_buffer_delay ()"><code class="function">gst_ring_buffer_delay()</code></a>).
1193 </p>
1194 <div class="variablelist"><table border="0">
1195 <col align="left" valign="top">
1196 <tbody>
1197 <tr>
1198 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1199 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to query</td>
1200 </tr>
1201 <tr>
1202 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1203 <td>The number of samples processed by the ringbuffer.
1204 MT safe.</td>
1205 </tr>
1206 </tbody>
1207 </table></div>
1208 </div>
1209 <hr>
1210 <div class="refsect2">
1211 <a name="gst-ring-buffer-set-sample"></a><h3>gst_ring_buffer_set_sample ()</h3>
1212 <pre class="programlisting"><span class="returnvalue">void</span>                gst_ring_buffer_set_sample          (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
1213                                                          <em class="parameter"><code><span class="type">guint64</span> sample</code></em>);</pre>
1214 <p>
1215 Make sure that the next sample written to the device is
1216 accounted for as being the <em class="parameter"><code>sample</code></em> sample written to the
1217 device. This value will be used in reporting the current
1218 sample position of the ringbuffer.
1219 </p>
1220 <p>
1221 This function will also clear the buffer with silence.
1222 </p>
1223 <p>
1224 MT safe.
1225 </p>
1226 <div class="variablelist"><table border="0">
1227 <col align="left" valign="top">
1228 <tbody>
1229 <tr>
1230 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1231 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to use</td>
1232 </tr>
1233 <tr>
1234 <td><p><span class="term"><em class="parameter"><code>sample</code></em> :</span></p></td>
1235 <td>the sample number to set</td>
1236 </tr>
1237 </tbody>
1238 </table></div>
1239 </div>
1240 <hr>
1241 <div class="refsect2">
1242 <a name="gst-ring-buffer-commit"></a><h3>gst_ring_buffer_commit ()</h3>
1243 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               gst_ring_buffer_commit              (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
1244                                                          <em class="parameter"><code><span class="type">guint64</span> sample</code></em>,
1245                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guchar"><span class="type">guchar</span></a> *data</code></em>,
1246                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> len</code></em>);</pre>
1247 <p>
1248 Same as <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-commit-full" title="gst_ring_buffer_commit_full ()"><code class="function">gst_ring_buffer_commit_full()</code></a> but with a in_samples and out_samples
1249 equal to <em class="parameter"><code>len</code></em>, ignoring accum.
1250 </p>
1251 <div class="variablelist"><table border="0">
1252 <col align="left" valign="top">
1253 <tbody>
1254 <tr>
1255 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1256 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to commit</td>
1257 </tr>
1258 <tr>
1259 <td><p><span class="term"><em class="parameter"><code>sample</code></em> :</span></p></td>
1260 <td>the sample position of the data</td>
1261 </tr>
1262 <tr>
1263 <td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
1264 <td>the data to commit</td>
1265 </tr>
1266 <tr>
1267 <td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
1268 <td>the number of samples in the data to commit</td>
1269 </tr>
1270 <tr>
1271 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1272 <td>The number of samples written to the ringbuffer or -1 on
1273 error.
1274 MT safe.</td>
1275 </tr>
1276 </tbody>
1277 </table></div>
1278 </div>
1279 <hr>
1280 <div class="refsect2">
1281 <a name="gst-ring-buffer-commit-full"></a><h3>gst_ring_buffer_commit_full ()</h3>
1282 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               gst_ring_buffer_commit_full         (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
1283                                                          <em class="parameter"><code><span class="type">guint64</span> *sample</code></em>,
1284                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guchar"><span class="type">guchar</span></a> *data</code></em>,
1285                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> in_samples</code></em>,
1286                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> out_samples</code></em>,
1287                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *accum</code></em>);</pre>
1288 <p>
1289 Commit <em class="parameter"><code>in_samples</code></em> samples pointed to by <em class="parameter"><code>data</code></em> to the ringbuffer <em class="parameter"><code>buf</code></em>. 
1290 </p>
1291 <p>
1292 <em class="parameter"><code>in_samples</code></em> and <em class="parameter"><code>out_samples</code></em> define the rate conversion to perform on the
1293 samples in <em class="parameter"><code>data</code></em>. For negative rates, <em class="parameter"><code>out_samples</code></em> must be negative and
1294 <em class="parameter"><code>in_samples</code></em> positive.
1295 </p>
1296 <p>
1297 When <em class="parameter"><code>out_samples</code></em> is positive, the first sample will be written at position <em class="parameter"><code>sample</code></em>
1298 in the ringbuffer. When <em class="parameter"><code>out_samples</code></em> is negative, the last sample will be written to
1299 <em class="parameter"><code>sample</code></em> in reverse order.
1300 </p>
1301 <p>
1302 <em class="parameter"><code>out_samples</code></em> does not need to be a multiple of the segment size of the ringbuffer
1303 although it is recommended for optimal performance. 
1304 </p>
1305 <p>
1306 <em class="parameter"><code>accum</code></em> will hold a temporary accumulator used in rate conversion and should be
1307 set to 0 when this function is first called. In case the commit operation is
1308 interrupted, one can resume the processing by passing the previously returned
1309 <em class="parameter"><code>accum</code></em> value back to this function.
1310 </p>
1311 <p>
1312 MT safe.
1313 </p>
1314 <div class="variablelist"><table border="0">
1315 <col align="left" valign="top">
1316 <tbody>
1317 <tr>
1318 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1319 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to commit</td>
1320 </tr>
1321 <tr>
1322 <td><p><span class="term"><em class="parameter"><code>sample</code></em> :</span></p></td>
1323 <td>the sample position of the data</td>
1324 </tr>
1325 <tr>
1326 <td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
1327 <td>the data to commit</td>
1328 </tr>
1329 <tr>
1330 <td><p><span class="term"><em class="parameter"><code>in_samples</code></em> :</span></p></td>
1331 <td>the number of samples in the data to commit</td>
1332 </tr>
1333 <tr>
1334 <td><p><span class="term"><em class="parameter"><code>out_samples</code></em> :</span></p></td>
1335 <td>the number of samples to write to the ringbuffer</td>
1336 </tr>
1337 <tr>
1338 <td><p><span class="term"><em class="parameter"><code>accum</code></em> :</span></p></td>
1339 <td>accumulator for rate conversion.</td>
1340 </tr>
1341 <tr>
1342 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1343 <td>The number of samples written to the ringbuffer or -1 on error. The
1344 number of samples written can be less than <em class="parameter"><code>out_samples</code></em> when <em class="parameter"><code>buf</code></em> was interrupted
1345 with a flush or stop.</td>
1346 </tr>
1347 </tbody>
1348 </table></div>
1349 <p class="since">Since 0.10.11.</p>
1350 </div>
1351 <hr>
1352 <div class="refsect2">
1353 <a name="gst-ring-buffer-convert"></a><h3>gst_ring_buffer_convert ()</h3>
1354 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_convert             (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
1355                                                          <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a> src_fmt</code></em>,
1356                                                          <em class="parameter"><code><span class="type">gint64</span> src_val</code></em>,
1357                                                          <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a> dest_fmt</code></em>,
1358                                                          <em class="parameter"><code><span class="type">gint64</span> *dest_val</code></em>);</pre>
1359 <p>
1360 Convert <em class="parameter"><code>src_val</code></em> in <em class="parameter"><code>src_fmt</code></em> to the equivalent value in <em class="parameter"><code>dest_fmt</code></em>. The result
1361 will be put in <em class="parameter"><code>dest_val</code></em>.
1362 </p>
1363 <div class="variablelist"><table border="0">
1364 <col align="left" valign="top">
1365 <tbody>
1366 <tr>
1367 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1368 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a>
1369 </td>
1370 </tr>
1371 <tr>
1372 <td><p><span class="term"><em class="parameter"><code>src_fmt</code></em> :</span></p></td>
1373 <td>the source format</td>
1374 </tr>
1375 <tr>
1376 <td><p><span class="term"><em class="parameter"><code>src_val</code></em> :</span></p></td>
1377 <td>the source value</td>
1378 </tr>
1379 <tr>
1380 <td><p><span class="term"><em class="parameter"><code>dest_fmt</code></em> :</span></p></td>
1381 <td>the destination format</td>
1382 </tr>
1383 <tr>
1384 <td><p><span class="term"><em class="parameter"><code>dest_val</code></em> :</span></p></td>
1385 <td>a location to store the converted value</td>
1386 </tr>
1387 <tr>
1388 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1389 <td>TRUE if the conversion succeeded.</td>
1390 </tr>
1391 </tbody>
1392 </table></div>
1393 <p class="since">Since 0.10.22.</p>
1394 </div>
1395 <hr>
1396 <div class="refsect2">
1397 <a name="gst-ring-buffer-prepare-read"></a><h3>gst_ring_buffer_prepare_read ()</h3>
1398 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_prepare_read        (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
1399                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *segment</code></em>,
1400                                                          <em class="parameter"><code><span class="type">guint8</span> **readptr</code></em>,
1401                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *len</code></em>);</pre>
1402 <p>
1403 Returns a pointer to memory where the data from segment <em class="parameter"><code>segment</code></em>
1404 can be found. This function is mostly used by subclasses.
1405 </p>
1406 <div class="variablelist"><table border="0">
1407 <col align="left" valign="top">
1408 <tbody>
1409 <tr>
1410 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1411 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to read from</td>
1412 </tr>
1413 <tr>
1414 <td><p><span class="term"><em class="parameter"><code>segment</code></em> :</span></p></td>
1415 <td>the segment to read</td>
1416 </tr>
1417 <tr>
1418 <td><p><span class="term"><em class="parameter"><code>readptr</code></em> :</span></p></td>
1419 <td>the pointer to the memory where samples can be read</td>
1420 </tr>
1421 <tr>
1422 <td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
1423 <td>the number of bytes to read</td>
1424 </tr>
1425 <tr>
1426 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1427 <td>FALSE if the buffer is not started.
1428 MT safe.</td>
1429 </tr>
1430 </tbody>
1431 </table></div>
1432 </div>
1433 <hr>
1434 <div class="refsect2">
1435 <a name="gst-ring-buffer-read"></a><h3>gst_ring_buffer_read ()</h3>
1436 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>               gst_ring_buffer_read                (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
1437                                                          <em class="parameter"><code><span class="type">guint64</span> sample</code></em>,
1438                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guchar"><span class="type">guchar</span></a> *data</code></em>,
1439                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> len</code></em>);</pre>
1440 <p>
1441 Read <em class="parameter"><code>len</code></em> samples from the ringbuffer into the memory pointed 
1442 to by <em class="parameter"><code>data</code></em>.
1443 The first sample should be read from position <em class="parameter"><code>sample</code></em> in
1444 the ringbuffer.
1445 </p>
1446 <p>
1447 <em class="parameter"><code>len</code></em> should not be a multiple of the segment size of the ringbuffer
1448 although it is recommended.
1449 </p>
1450 <div class="variablelist"><table border="0">
1451 <col align="left" valign="top">
1452 <tbody>
1453 <tr>
1454 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1455 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to read from</td>
1456 </tr>
1457 <tr>
1458 <td><p><span class="term"><em class="parameter"><code>sample</code></em> :</span></p></td>
1459 <td>the sample position of the data</td>
1460 </tr>
1461 <tr>
1462 <td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
1463 <td>where the data should be read</td>
1464 </tr>
1465 <tr>
1466 <td><p><span class="term"><em class="parameter"><code>len</code></em> :</span></p></td>
1467 <td>the number of samples in data to read</td>
1468 </tr>
1469 <tr>
1470 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1471 <td>The number of samples read from the ringbuffer or -1 on
1472 error.
1473 MT safe.</td>
1474 </tr>
1475 </tbody>
1476 </table></div>
1477 </div>
1478 <hr>
1479 <div class="refsect2">
1480 <a name="gst-ring-buffer-clear"></a><h3>gst_ring_buffer_clear ()</h3>
1481 <pre class="programlisting"><span class="returnvalue">void</span>                gst_ring_buffer_clear               (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
1482                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> segment</code></em>);</pre>
1483 <p>
1484 Clear the given segment of the buffer with silence samples.
1485 This function is used by subclasses.
1486 </p>
1487 <p>
1488 MT safe.
1489 </p>
1490 <div class="variablelist"><table border="0">
1491 <col align="left" valign="top">
1492 <tbody>
1493 <tr>
1494 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1495 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to clear</td>
1496 </tr>
1497 <tr>
1498 <td><p><span class="term"><em class="parameter"><code>segment</code></em> :</span></p></td>
1499 <td>the segment to clear</td>
1500 </tr>
1501 </tbody>
1502 </table></div>
1503 </div>
1504 <hr>
1505 <div class="refsect2">
1506 <a name="gst-ring-buffer-clear-all"></a><h3>gst_ring_buffer_clear_all ()</h3>
1507 <pre class="programlisting"><span class="returnvalue">void</span>                gst_ring_buffer_clear_all           (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
1508 <p>
1509 Fill the ringbuffer with silence.
1510 </p>
1511 <p>
1512 MT safe.
1513 </p>
1514 <div class="variablelist"><table border="0">
1515 <col align="left" valign="top">
1516 <tbody><tr>
1517 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1518 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to clear</td>
1519 </tr></tbody>
1520 </table></div>
1521 </div>
1522 <hr>
1523 <div class="refsect2">
1524 <a name="gst-ring-buffer-advance"></a><h3>gst_ring_buffer_advance ()</h3>
1525 <pre class="programlisting"><span class="returnvalue">void</span>                gst_ring_buffer_advance             (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
1526                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> advance</code></em>);</pre>
1527 <p>
1528 Subclasses should call this function to notify the fact that 
1529 <em class="parameter"><code>advance</code></em> segments are now processed by the device.
1530 </p>
1531 <p>
1532 MT safe.
1533 </p>
1534 <div class="variablelist"><table border="0">
1535 <col align="left" valign="top">
1536 <tbody>
1537 <tr>
1538 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1539 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to advance</td>
1540 </tr>
1541 <tr>
1542 <td><p><span class="term"><em class="parameter"><code>advance</code></em> :</span></p></td>
1543 <td>the number of segments written</td>
1544 </tr>
1545 </tbody>
1546 </table></div>
1547 </div>
1548 <hr>
1549 <div class="refsect2">
1550 <a name="gst-ring-buffer-close-device"></a><h3>gst_ring_buffer_close_device ()</h3>
1551 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_close_device        (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
1552 <p>
1553 Close the audio device associated with the ring buffer. The ring buffer
1554 should already have been released via <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#gst-ring-buffer-release" title="gst_ring_buffer_release ()"><code class="function">gst_ring_buffer_release()</code></a>.
1555 </p>
1556 <div class="variablelist"><table border="0">
1557 <col align="left" valign="top">
1558 <tbody>
1559 <tr>
1560 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1561 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a>
1562 </td>
1563 </tr>
1564 <tr>
1565 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1566 <td>TRUE if the device could be closed, FALSE on error.
1567 MT safe.</td>
1568 </tr>
1569 </tbody>
1570 </table></div>
1571 </div>
1572 <hr>
1573 <div class="refsect2">
1574 <a name="gst-ring-buffer-open-device"></a><h3>gst_ring_buffer_open_device ()</h3>
1575 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_open_device         (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
1576 <p>
1577 Open the audio device associated with the ring buffer. Does not perform any
1578 setup on the device. You must open the device before acquiring the ring
1579 buffer.
1580 </p>
1581 <div class="variablelist"><table border="0">
1582 <col align="left" valign="top">
1583 <tbody>
1584 <tr>
1585 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1586 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a>
1587 </td>
1588 </tr>
1589 <tr>
1590 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1591 <td>TRUE if the device could be opened, FALSE on error.
1592 MT safe.</td>
1593 </tr>
1594 </tbody>
1595 </table></div>
1596 </div>
1597 <hr>
1598 <div class="refsect2">
1599 <a name="gst-ring-buffer-device-is-open"></a><h3>gst_ring_buffer_device_is_open ()</h3>
1600 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_device_is_open      (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>);</pre>
1601 <p>
1602 Checks the status of the device associated with the ring buffer.
1603 </p>
1604 <div class="variablelist"><table border="0">
1605 <col align="left" valign="top">
1606 <tbody>
1607 <tr>
1608 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1609 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a>
1610 </td>
1611 </tr>
1612 <tr>
1613 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1614 <td>TRUE if the device was open, FALSE if it was closed.
1615 MT safe.</td>
1616 </tr>
1617 </tbody>
1618 </table></div>
1619 </div>
1620 <hr>
1621 <div class="refsect2">
1622 <a name="gst-ring-buffer-may-start"></a><h3>gst_ring_buffer_may_start ()</h3>
1623 <pre class="programlisting"><span class="returnvalue">void</span>                gst_ring_buffer_may_start           (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
1624                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> allowed</code></em>);</pre>
1625 <p>
1626 Tell the ringbuffer that it is allowed to start playback when
1627 the ringbuffer is filled with samples. 
1628 </p>
1629 <p>
1630 MT safe.
1631 </p>
1632 <div class="variablelist"><table border="0">
1633 <col align="left" valign="top">
1634 <tbody>
1635 <tr>
1636 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1637 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a>
1638 </td>
1639 </tr>
1640 <tr>
1641 <td><p><span class="term"><em class="parameter"><code>allowed</code></em> :</span></p></td>
1642 <td>the new value</td>
1643 </tr>
1644 </tbody>
1645 </table></div>
1646 <p class="since">Since 0.10.6</p>
1647 </div>
1648 <hr>
1649 <div class="refsect2">
1650 <a name="gst-ring-buffer-parse-caps"></a><h3>gst_ring_buffer_parse_caps ()</h3>
1651 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_ring_buffer_parse_caps          (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBufferSpec" title="struct GstRingBufferSpec"><span class="type">GstRingBufferSpec</span></a> *spec</code></em>,
1652                                                          <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> *caps</code></em>);</pre>
1653 <p>
1654 Parse <em class="parameter"><code>caps</code></em> into <em class="parameter"><code>spec</code></em>.
1655 </p>
1656 <div class="variablelist"><table border="0">
1657 <col align="left" valign="top">
1658 <tbody>
1659 <tr>
1660 <td><p><span class="term"><em class="parameter"><code>spec</code></em> :</span></p></td>
1661 <td>a spec</td>
1662 </tr>
1663 <tr>
1664 <td><p><span class="term"><em class="parameter"><code>caps</code></em> :</span></p></td>
1665 <td>a <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>
1666 </td>
1667 </tr>
1668 <tr>
1669 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1670 <td>TRUE if the caps could be parsed.</td>
1671 </tr>
1672 </tbody>
1673 </table></div>
1674 </div>
1675 <hr>
1676 <div class="refsect2">
1677 <a name="gst-ring-buffer-set-flushing"></a><h3>gst_ring_buffer_set_flushing ()</h3>
1678 <pre class="programlisting"><span class="returnvalue">void</span>                gst_ring_buffer_set_flushing        (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> *buf</code></em>,
1679                                                          <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> flushing</code></em>);</pre>
1680 <p>
1681 Set the ringbuffer to flushing mode or normal mode.
1682 </p>
1683 <p>
1684 MT safe.
1685 </p>
1686 <div class="variablelist"><table border="0">
1687 <col align="left" valign="top">
1688 <tbody>
1689 <tr>
1690 <td><p><span class="term"><em class="parameter"><code>buf</code></em> :</span></p></td>
1691 <td>the <a class="link" href="gst-plugins-base-libs-gstringbuffer.html#GstRingBuffer"><span class="type">GstRingBuffer</span></a> to flush</td>
1692 </tr>
1693 <tr>
1694 <td><p><span class="term"><em class="parameter"><code>flushing</code></em> :</span></p></td>
1695 <td>the new mode</td>
1696 </tr>
1697 </tbody>
1698 </table></div>
1699 </div>
1700 </div>
1701 <div class="refsect1">
1702 <a name="gst-plugins-base-libs-gstringbuffer.see-also"></a><h2>See Also</h2>
1703 <a class="link" href="gst-plugins-base-libs-gstbaseaudiosink.html#GstBaseAudioSink"><span class="type">GstBaseAudioSink</span></a>, <a class="link" href="gst-plugins-base-libs-gstaudiosink.html#GstAudioSink"><span class="type">GstAudioSink</span></a>
1704 </div>
1705 </div>
1706 <div class="footer">
1707 <hr>
1708           Generated by GTK-Doc V1.18</div>
1709 </body>
1710 </html>