Tizen 2.0 Release
[framework/multimedia/gst-plugins-good0.10.git] / docs / plugins / html / gst-plugins-good-plugins-audioiirfilter.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>audioiirfilter</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="index.html" title="GStreamer Good Plugins 0.10 Plugins Reference Manual">
8 <link rel="up" href="ch01.html" title="gst-plugins-good Elements">
9 <link rel="prev" href="gst-plugins-good-plugins-audiofirfilter.html" title="audiofirfilter">
10 <link rel="next" href="gst-plugins-good-plugins-audiowsincband.html" title="audiowsincband">
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-good-plugins-audiofirfilter.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="ch01.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 Good Plugins 0.10 Plugins Reference Manual</th>
21 <td><a accesskey="n" href="gst-plugins-good-plugins-audiowsincband.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-good-plugins-audioiirfilter.synopsis" class="shortcut">Top</a>
25                    | 
26                   <a href="#gst-plugins-good-plugins-audioiirfilter.description" class="shortcut">Description</a>
27                    | 
28                   <a href="#gst-plugins-good-plugins-audioiirfilter.object-hierarchy" class="shortcut">Object Hierarchy</a>
29                    | 
30                   <a href="#gst-plugins-good-plugins-audioiirfilter.properties" class="shortcut">Properties</a>
31                    | 
32                   <a href="#gst-plugins-good-plugins-audioiirfilter.signals" class="shortcut">Signals</a>
33 </td></tr>
34 </table>
35 <div class="refentry">
36 <a name="gst-plugins-good-plugins-audioiirfilter"></a><div class="titlepage"></div>
37 <div class="refnamediv"><table width="100%"><tr>
38 <td valign="top">
39 <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-audioiirfilter.top_of_page"></a>audioiirfilter</span></h2>
40 <p>audioiirfilter — Generic audio IIR filter with custom filter kernel</p>
41 </td>
42 <td valign="top" align="right"></td>
43 </tr></table></div>
44 <div class="refsynopsisdiv">
45 <a name="gst-plugins-good-plugins-audioiirfilter.synopsis"></a><h2>Synopsis</h2>
46 <a name="GstAudioIIRFilter"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-good-plugins-audioiirfilter.html#GstAudioIIRFilter-struct" title="struct GstAudioIIRFilter">GstAudioIIRFilter</a>;
47 </pre>
48 </div>
49 <div class="refsect1">
50 <a name="gst-plugins-good-plugins-audioiirfilter.object-hierarchy"></a><h2>Object Hierarchy</h2>
51 <pre class="synopsis">
52   <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
53    +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
54          +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
55                +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseTransform.html">GstBaseTransform</a>
56                      +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiofilter.html#GstAudioFilter">GstAudioFilter</a>
57                            +----GstAudioFXBaseIIRFilter
58                                  +----GstAudioIIRFilter
59 </pre>
60 </div>
61 <div class="refsect1">
62 <a name="gst-plugins-good-plugins-audioiirfilter.properties"></a><h2>Properties</h2>
63 <pre class="synopsis">
64   "<a class="link" href="gst-plugins-good-plugins-audioiirfilter.html#GstAudioIIRFilter--a" title='The "a" property'>a</a>"                        <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a>*          : Read / Write
65   "<a class="link" href="gst-plugins-good-plugins-audioiirfilter.html#GstAudioIIRFilter--b" title='The "b" property'>b</a>"                        <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a>*          : Read / Write
66 </pre>
67 </div>
68 <div class="refsect1">
69 <a name="gst-plugins-good-plugins-audioiirfilter.signals"></a><h2>Signals</h2>
70 <pre class="synopsis">
71   "<a class="link" href="gst-plugins-good-plugins-audioiirfilter.html#GstAudioIIRFilter-rate-changed" title='The "rate-changed" signal'>rate-changed</a>"                                   : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
72 </pre>
73 </div>
74 <div class="refsect1">
75 <a name="gst-plugins-good-plugins-audioiirfilter.description"></a><h2>Description</h2>
76 <p>
77 audioiirfilter implements a generic audio <a class="ulink" href="http://en.wikipedia.org/wiki/Infinite_impulse_response" target="_top">IIR filter</a>. Before usage the
78 "a" and "b" properties have to be set to the filter coefficients that
79 should be used.
80 </p>
81 <p>
82 The filter coefficients describe the numerator and denominator of the
83 transfer function.
84 </p>
85 <p>
86 To change the filter coefficients whenever the sampling rate changes the
87 "rate-changed" signal can be used. This should be done for most
88 IIR filters as they're depending on the sampling rate.
89 </p>
90 <p>
91 </p>
92 <div class="refsect2">
93 <a name="idp6176784"></a><h3>Example application</h3>
94 <div class="informalexample">
95   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
96     <tbody>
97       <tr>
98         <td class="listing_lines" align="right"><pre>1
99 2
100 3
101 4
102 5
103 6
104 7
105 8
106 9
107 10
108 11
109 12
110 13
111 14
112 15
113 16
114 17
115 18
116 19
117 20
118 21
119 22
120 23
121 24
122 25
123 26
124 27
125 28
126 29
127 30
128 31
129 32
130 33
131 34
132 35
133 36
134 37
135 38
136 39
137 40
138 41
139 42
140 43
141 44
142 45
143 46
144 47
145 48
146 49
147 50
148 51
149 52
150 53
151 54
152 55
153 56
154 57
155 58
156 59
157 60
158 61
159 62
160 63
161 64
162 65
163 66
164 67
165 68
166 69
167 70
168 71
169 72
170 73
171 74
172 75
173 76
174 77
175 78
176 79
177 80
178 81
179 82
180 83
181 84
182 85
183 86
184 87
185 88
186 89
187 90
188 91
189 92
190 93
191 94
192 95
193 96
194 97
195 98
196 99
197 100
198 101
199 102
200 103
201 104
202 105
203 106
204 107
205 108
206 109
207 110
208 111
209 112
210 113
211 114
212 115
213 116
214 117
215 118
216 119
217 120
218 121
219 122
220 123
221 124
222 125
223 126
224 127
225 128
226 129
227 130
228 131
229 132
230 133
231 134
232 135
233 136
234 137</pre></td>
235         <td class="listing_code"><pre class="programlisting"><span class="comment">/* GStreamer</span>
236 <span class="comment"> * Copyright (C) 2009 Sebastian Droege &lt;sebastian.droege&#64;collabora.co.uk&gt;</span>
237 <span class="comment"> *</span>
238 <span class="comment"> * This library is free software; you can redistribute it and/or</span>
239 <span class="comment"> * modify it under the terms of the GNU Library General Public</span>
240 <span class="comment"> * License as published by the Free Software Foundation; either</span>
241 <span class="comment"> * version 2 of the License, or (at your option) any later version.</span>
242 <span class="comment"> *</span>
243 <span class="comment"> * This library is distributed in the hope that it will be useful,</span>
244 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
245 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
246 <span class="comment"> * Library General Public License for more details.</span>
247 <span class="comment"> *</span>
248 <span class="comment"> * You should have received a copy of the GNU Library General Public</span>
249 <span class="comment"> * License along with this library; if not, write to the</span>
250 <span class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330,</span>
251 <span class="comment"> * Boston, MA 02111-1307, USA.</span>
252 <span class="comment"> */</span>
253
254 <span class="comment">/* This small sample application creates a lowpass IIR filter</span>
255 <span class="comment"> * and applies it to white noise.</span>
256 <span class="comment"> * See http://www.dspguide.com/ch19/2.htm for a description</span>
257 <span class="comment"> * of the IIR filter that is used.</span>
258 <span class="comment"> */</span>
259
260 <span class="gtkdoc ppc">#include &lt;string.h&gt;</span>
261 <span class="gtkdoc ppc">#include &lt;math.h&gt;</span>
262
263 <span class="gtkdoc ppc">#include &lt;gst/gst.h&gt;</span>
264
265 <span class="comment">/* Cutoff of 4000 Hz */</span>
266 <span class="gtkdoc ppc">#define CUTOFF (4000.0)</span>
267
268 <span class="gtkdoc kwb">static</span> gboolean
269 <span class="function">on_message</span> <span class="gtkdoc opt">(</span>GstBus <span class="gtkdoc opt">*</span> bus<span class="gtkdoc opt">,</span> GstMessage <span class="gtkdoc opt">*</span> message<span class="gtkdoc opt">,</span> gpointer user_data<span class="gtkdoc opt">)</span>
270 <span class="gtkdoc opt">{</span>
271   GMainLoop <span class="gtkdoc opt">*</span>loop <span class="gtkdoc opt">= (</span>GMainLoop <span class="gtkdoc opt">*)</span> user_data<span class="gtkdoc opt">;</span>
272
273   <span class="keyword">switch</span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstMessage.html#GST-MESSAGE-TYPE:CAPS">GST_MESSAGE_TYPE</a></span> <span class="gtkdoc opt">(</span>message<span class="gtkdoc opt">)) {</span>
274     <span class="keyword">case</span> GST_MESSAGE_ERROR<span class="gtkdoc opt">:</span>
275       <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-Message-Logging.html#g-error">g_error</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;Got ERROR&quot;</span><span class="gtkdoc opt">);</span>
276       <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-loop-quit">g_main_loop_quit</a></span> <span class="gtkdoc opt">(</span>loop<span class="gtkdoc opt">);</span>
277       <span class="keyword">break</span><span class="gtkdoc opt">;</span>
278     <span class="keyword">case</span> GST_MESSAGE_WARNING<span class="gtkdoc opt">:</span>
279       <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-Message-Logging.html#g-warning">g_warning</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;Got WARNING&quot;</span><span class="gtkdoc opt">);</span>
280       <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-loop-quit">g_main_loop_quit</a></span> <span class="gtkdoc opt">(</span>loop<span class="gtkdoc opt">);</span>
281       <span class="keyword">break</span><span class="gtkdoc opt">;</span>
282     <span class="keyword">case</span> GST_MESSAGE_EOS<span class="gtkdoc opt">:</span>
283       <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-loop-quit">g_main_loop_quit</a></span> <span class="gtkdoc opt">(</span>loop<span class="gtkdoc opt">);</span>
284       <span class="keyword">break</span><span class="gtkdoc opt">;</span>
285     <span class="keyword">default</span><span class="gtkdoc opt">:</span>
286       <span class="keyword">break</span><span class="gtkdoc opt">;</span>
287   <span class="gtkdoc opt">}</span>
288
289   <span class="keyword">return</span> TRUE<span class="gtkdoc opt">;</span>
290 <span class="gtkdoc opt">}</span>
291
292 <span class="gtkdoc kwb">static void</span>
293 <span class="function">on_rate_changed</span> <span class="gtkdoc opt">(</span>GstElement <span class="gtkdoc opt">*</span> element<span class="gtkdoc opt">,</span> gint rate<span class="gtkdoc opt">,</span> gpointer user_data<span class="gtkdoc opt">)</span>
294 <span class="gtkdoc opt">{</span>
295   GValueArray <span class="gtkdoc opt">*</span>va<span class="gtkdoc opt">;</span>
296   GValue v <span class="gtkdoc opt">= {</span> <span class="number">0</span><span class="gtkdoc opt">, };</span>
297   gdouble x<span class="gtkdoc opt">;</span>
298
299   <span class="keyword">if</span> <span class="gtkdoc opt">(</span>rate <span class="gtkdoc opt">/</span> <span class="number">2.0</span> <span class="gtkdoc opt">&gt;</span> CUTOFF<span class="gtkdoc opt">)</span>
300     x <span class="gtkdoc opt">=</span> <span class="function">exp</span> <span class="gtkdoc opt">(-</span><span class="number">2.0</span> <span class="gtkdoc opt">*</span> G_PI <span class="gtkdoc opt">* (</span>CUTOFF <span class="gtkdoc opt">/</span> rate<span class="gtkdoc opt">));</span>
301   <span class="keyword">else</span>
302     x <span class="gtkdoc opt">=</span> <span class="number">0.0</span><span class="gtkdoc opt">;</span>
303
304   va <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-new">g_value_array_new</a></span> <span class="gtkdoc opt">(</span><span class="number">1</span><span class="gtkdoc opt">);</span>
305
306   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#g-value-init">g_value_init</a></span> <span class="gtkdoc opt">(&amp;</span>v<span class="gtkdoc opt">,</span> G_TYPE_DOUBLE<span class="gtkdoc opt">);</span>
307   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-set-double">g_value_set_double</a></span> <span class="gtkdoc opt">(&amp;</span>v<span class="gtkdoc opt">,</span> <span class="number">1.0</span> <span class="gtkdoc opt">-</span> x<span class="gtkdoc opt">);</span>
308   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-append">g_value_array_append</a></span> <span class="gtkdoc opt">(</span>va<span class="gtkdoc opt">, &amp;</span>v<span class="gtkdoc opt">);</span>
309   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#g-value-reset">g_value_reset</a></span> <span class="gtkdoc opt">(&amp;</span>v<span class="gtkdoc opt">);</span>
310   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-set">g_object_set</a></span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span> <span class="gtkdoc opt">(</span>element<span class="gtkdoc opt">),</span> <span class="string">&quot;a&quot;</span><span class="gtkdoc opt">,</span> va<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
311   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-free">g_value_array_free</a></span> <span class="gtkdoc opt">(</span>va<span class="gtkdoc opt">);</span>
312
313   va <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-new">g_value_array_new</a></span> <span class="gtkdoc opt">(</span><span class="number">1</span><span class="gtkdoc opt">);</span>
314   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-set-double">g_value_set_double</a></span> <span class="gtkdoc opt">(&amp;</span>v<span class="gtkdoc opt">,</span> x<span class="gtkdoc opt">);</span>
315   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-append">g_value_array_append</a></span> <span class="gtkdoc opt">(</span>va<span class="gtkdoc opt">, &amp;</span>v<span class="gtkdoc opt">);</span>
316   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#g-value-reset">g_value_reset</a></span> <span class="gtkdoc opt">(&amp;</span>v<span class="gtkdoc opt">);</span>
317   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-set">g_object_set</a></span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span> <span class="gtkdoc opt">(</span>element<span class="gtkdoc opt">),</span> <span class="string">&quot;b&quot;</span><span class="gtkdoc opt">,</span> va<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
318   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#g-value-array-free">g_value_array_free</a></span> <span class="gtkdoc opt">(</span>va<span class="gtkdoc opt">);</span>
319 <span class="gtkdoc opt">}</span>
320
321 gint
322 <span class="function">main</span> <span class="gtkdoc opt">(</span>gint argc<span class="gtkdoc opt">,</span> gchar <span class="gtkdoc opt">*</span> argv<span class="gtkdoc opt">[])</span>
323 <span class="gtkdoc opt">{</span>
324   GstElement <span class="gtkdoc opt">*</span>pipeline<span class="gtkdoc opt">, *</span>src<span class="gtkdoc opt">, *</span>filter<span class="gtkdoc opt">, *</span>conv<span class="gtkdoc opt">, *</span>sink<span class="gtkdoc opt">;</span>
325   GstBus <span class="gtkdoc opt">*</span>bus<span class="gtkdoc opt">;</span>
326   GMainLoop <span class="gtkdoc opt">*</span>loop<span class="gtkdoc opt">;</span>
327
328   <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-Gst.html#gst-init">gst_init</a></span> <span class="gtkdoc opt">(</span>NULL<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
329
330   pipeline <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html#gst-element-factory-make">gst_element_factory_make</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;pipeline&quot;</span><span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
331
332   src <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html#gst-element-factory-make">gst_element_factory_make</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;audiotestsrc&quot;</span><span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
333   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-set">g_object_set</a></span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span> <span class="gtkdoc opt">(</span>src<span class="gtkdoc opt">),</span> <span class="string">&quot;wave&quot;</span><span class="gtkdoc opt">,</span> <span class="number">5</span><span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
334
335   filter <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html#gst-element-factory-make">gst_element_factory_make</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;audioiirfilter&quot;</span><span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
336   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#g-signal-connect">g_signal_connect</a></span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span> <span class="gtkdoc opt">(</span>filter<span class="gtkdoc opt">),</span> <span class="string">&quot;rate-changed&quot;</span><span class="gtkdoc opt">,</span>
337       <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Closures.html#G-CALLBACK:CAPS">G_CALLBACK</a></span> <span class="gtkdoc opt">(</span>on_rate_changed<span class="gtkdoc opt">),</span> NULL<span class="gtkdoc opt">);</span>
338
339   conv <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html#gst-element-factory-make">gst_element_factory_make</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;audioconvert&quot;</span><span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
340
341   sink <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElementFactory.html#gst-element-factory-make">gst_element_factory_make</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;autoaudiosink&quot;</span><span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
342   <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-Warnings-and-Assertions.html#g-return-val-if-fail">g_return_val_if_fail</a></span> <span class="gtkdoc opt">(</span>sink <span class="gtkdoc opt">!=</span> NULL<span class="gtkdoc opt">, -</span><span class="number">1</span><span class="gtkdoc opt">);</span>
343
344   <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBin.html#gst-bin-add-many">gst_bin_add_many</a></span> <span class="gtkdoc opt">(</span><span class="function">GST_BIN</span> <span class="gtkdoc opt">(</span>pipeline<span class="gtkdoc opt">),</span> src<span class="gtkdoc opt">,</span> filter<span class="gtkdoc opt">,</span> conv<span class="gtkdoc opt">,</span> sink<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
345   <span class="keyword">if</span> <span class="gtkdoc opt">(!</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-link-many">gst_element_link_many</a></span> <span class="gtkdoc opt">(</span>src<span class="gtkdoc opt">,</span> filter<span class="gtkdoc opt">,</span> conv<span class="gtkdoc opt">,</span> sink<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">)) {</span>
346     <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-Message-Logging.html#g-error">g_error</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;Failed to link elements&quot;</span><span class="gtkdoc opt">);</span>
347     <span class="keyword">return</span> <span class="gtkdoc opt">-</span><span class="number">2</span><span class="gtkdoc opt">;</span>
348   <span class="gtkdoc opt">}</span>
349
350   loop <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-loop-new">g_main_loop_new</a></span> <span class="gtkdoc opt">(</span>NULL<span class="gtkdoc opt">,</span> FALSE<span class="gtkdoc opt">);</span>
351
352   bus <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPipeline.html#gst-pipeline-get-bus">gst_pipeline_get_bus</a></span> <span class="gtkdoc opt">(</span><span class="function">GST_PIPELINE</span> <span class="gtkdoc opt">(</span>pipeline<span class="gtkdoc opt">));</span>
353   <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html#gst-bus-add-signal-watch">gst_bus_add_signal_watch</a></span> <span class="gtkdoc opt">(</span>bus<span class="gtkdoc opt">);</span>
354   <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#g-signal-connect">g_signal_connect</a></span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span> <span class="gtkdoc opt">(</span>bus<span class="gtkdoc opt">),</span> <span class="string">&quot;message&quot;</span><span class="gtkdoc opt">,</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Closures.html#G-CALLBACK:CAPS">G_CALLBACK</a></span> <span class="gtkdoc opt">(</span>on_message<span class="gtkdoc opt">),</span> loop<span class="gtkdoc opt">);</span>
355   <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html#gst-object-unref">gst_object_unref</a></span> <span class="gtkdoc opt">(</span><span class="function">GST_OBJECT</span> <span class="gtkdoc opt">(</span>bus<span class="gtkdoc opt">));</span>
356
357   <span class="keyword">if</span> <span class="gtkdoc opt">(</span><span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-set-state">gst_element_set_state</a></span> <span class="gtkdoc opt">(</span>pipeline<span class="gtkdoc opt">,</span>
358           GST_STATE_PLAYING<span class="gtkdoc opt">) ==</span> GST_STATE_CHANGE_FAILURE<span class="gtkdoc opt">) {</span>
359     <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-Message-Logging.html#g-error">g_error</a></span> <span class="gtkdoc opt">(</span><span class="string">&quot;Failed to go into PLAYING state&quot;</span><span class="gtkdoc opt">);</span>
360     <span class="keyword">return</span> <span class="gtkdoc opt">-</span><span class="number">3</span><span class="gtkdoc opt">;</span>
361   <span class="gtkdoc opt">}</span>
362
363   <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-loop-run">g_main_loop_run</a></span> <span class="gtkdoc opt">(</span>loop<span class="gtkdoc opt">);</span>
364
365   <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-set-state">gst_element_set_state</a></span> <span class="gtkdoc opt">(</span>pipeline<span class="gtkdoc opt">,</span> GST_STATE_NULL<span class="gtkdoc opt">);</span>
366
367   <span class="function"><a href="http://library.gnome.org/devel/glib/unstable/glib-The-Main-Event-Loop.html#g-main-loop-unref">g_main_loop_unref</a></span> <span class="gtkdoc opt">(</span>loop<span class="gtkdoc opt">);</span>
368   <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html#gst-object-unref">gst_object_unref</a></span> <span class="gtkdoc opt">(</span>pipeline<span class="gtkdoc opt">);</span>
369
370   <span class="keyword">return</span> <span class="number">0</span><span class="gtkdoc opt">;</span>
371 <span class="gtkdoc opt">}</span></pre></td>
372       </tr>
373     </tbody>
374   </table>
375 </div>
376
377 </div>
378 <p>
379 </p>
380 <div class="refsynopsisdiv">
381 <h2>Synopsis</h2>
382 <div class="refsect2">
383 <a name="idp9054496"></a><h3>Element Information</h3>
384 <div class="variablelist"><table border="0">
385 <col align="left" valign="top">
386 <tbody>
387 <tr>
388 <td><p><span class="term">plugin</span></p></td>
389 <td>
390             <a class="link" href="gst-plugins-good-plugins-plugin-audiofx.html#plugin-audiofx">audiofx</a>
391           </td>
392 </tr>
393 <tr>
394 <td><p><span class="term">author</span></p></td>
395 <td>Sebastian Dröge &lt;sebastian.droege@collabora.co.uk&gt;</td>
396 </tr>
397 <tr>
398 <td><p><span class="term">class</span></p></td>
399 <td>Filter/Effect/Audio</td>
400 </tr>
401 </tbody>
402 </table></div>
403 </div>
404 <hr>
405 <div class="refsect2">
406 <a name="idp5826368"></a><h3>Element Pads</h3>
407 <div class="variablelist"><table border="0">
408 <col align="left" valign="top">
409 <tbody>
410 <tr>
411 <td><p><span class="term">name</span></p></td>
412 <td>sink</td>
413 </tr>
414 <tr>
415 <td><p><span class="term">direction</span></p></td>
416 <td>sink</td>
417 </tr>
418 <tr>
419 <td><p><span class="term">presence</span></p></td>
420 <td>always</td>
421 </tr>
422 <tr>
423 <td><p><span class="term">details</span></p></td>
424 <td>audio/x-raw-float, width=(int){ 32, 64 }, endianness=(int)1234, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td>
425 </tr>
426 </tbody>
427 </table></div>
428 <div class="variablelist"><table border="0">
429 <col align="left" valign="top">
430 <tbody>
431 <tr>
432 <td><p><span class="term">name</span></p></td>
433 <td>src</td>
434 </tr>
435 <tr>
436 <td><p><span class="term">direction</span></p></td>
437 <td>source</td>
438 </tr>
439 <tr>
440 <td><p><span class="term">presence</span></p></td>
441 <td>always</td>
442 </tr>
443 <tr>
444 <td><p><span class="term">details</span></p></td>
445 <td>audio/x-raw-float, width=(int){ 32, 64 }, endianness=(int)1234, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td>
446 </tr>
447 </tbody>
448 </table></div>
449 </div>
450 </div>
451 <p>
452 </p>
453 </div>
454 <div class="refsect1">
455 <a name="gst-plugins-good-plugins-audioiirfilter.details"></a><h2>Details</h2>
456 <div class="refsect2">
457 <a name="GstAudioIIRFilter-struct"></a><h3>struct GstAudioIIRFilter</h3>
458 <pre class="programlisting">struct GstAudioIIRFilter;</pre>
459 <p>
460 Opaque data structure.
461 </p>
462 </div>
463 </div>
464 <div class="refsect1">
465 <a name="gst-plugins-good-plugins-audioiirfilter.property-details"></a><h2>Property Details</h2>
466 <div class="refsect2">
467 <a name="GstAudioIIRFilter--a"></a><h3>The <code class="literal">"a"</code> property</h3>
468 <pre class="programlisting">  "a"                        <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a>*          : Read / Write</pre>
469 <p>Filter coefficients (numerator of transfer function).</p>
470 </div>
471 <hr>
472 <div class="refsect2">
473 <a name="GstAudioIIRFilter--b"></a><h3>The <code class="literal">"b"</code> property</h3>
474 <pre class="programlisting">  "b"                        <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a>*          : Read / Write</pre>
475 <p>Filter coefficients (denominator of transfer function).</p>
476 </div>
477 </div>
478 <div class="refsect1">
479 <a name="gst-plugins-good-plugins-audioiirfilter.signal-details"></a><h2>Signal Details</h2>
480 <div class="refsect2">
481 <a name="GstAudioIIRFilter-rate-changed"></a><h3>The <code class="literal">"rate-changed"</code> signal</h3>
482 <pre class="programlisting"><span class="returnvalue">void</span>                user_function                      (<a class="link" href="gst-plugins-good-plugins-audioiirfilter.html#GstAudioIIRFilter"><span class="type">GstAudioIIRFilter</span></a> *filter,
483                                                         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>               rate,
484                                                         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>           user_data)      : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
485 <p>
486 Will be emitted when the sampling rate changes. The callbacks
487 will be called from the streaming thread and processing will
488 stop until the event is handled.
489 </p>
490 <div class="variablelist"><table border="0">
491 <col align="left" valign="top">
492 <tbody>
493 <tr>
494 <td><p><span class="term"><em class="parameter"><code>filter</code></em> :</span></p></td>
495 <td>the filter on which the signal is emitted</td>
496 </tr>
497 <tr>
498 <td><p><span class="term"><em class="parameter"><code>rate</code></em> :</span></p></td>
499 <td>the new sampling rate</td>
500 </tr>
501 <tr>
502 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
503 <td>user data set when the signal handler was connected.</td>
504 </tr>
505 </tbody>
506 </table></div>
507 </div>
508 </div>
509 </div>
510 <div class="footer">
511 <hr>
512           Generated by GTK-Doc V1.18</div>
513 </body>
514 </html>