1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
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">
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">
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>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#gst-plugins-good-plugins-audioiirfilter.synopsis" class="shortcut">Top</a>
26 <a href="#gst-plugins-good-plugins-audioiirfilter.description" class="shortcut">Description</a>
28 <a href="#gst-plugins-good-plugins-audioiirfilter.object-hierarchy" class="shortcut">Object Hierarchy</a>
30 <a href="#gst-plugins-good-plugins-audioiirfilter.properties" class="shortcut">Properties</a>
32 <a href="#gst-plugins-good-plugins-audioiirfilter.signals" class="shortcut">Signals</a>
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>
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>
42 <td valign="top" align="right"></td>
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>;
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
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
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>
74 <div class="refsect1">
75 <a name="gst-plugins-good-plugins-audioiirfilter.description"></a><h2>Description</h2>
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
82 The filter coefficients describe the numerator and denominator of the
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.
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">
98 <td class="listing_lines" align="right"><pre>1
235 <td class="listing_code"><pre class="programlisting"><span class="comment">/* GStreamer</span>
236 <span class="comment"> * Copyright (C) 2009 Sebastian Droege <sebastian.droege@collabora.co.uk></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>
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>
260 <span class="gtkdoc ppc">#include <string.h></span>
261 <span class="gtkdoc ppc">#include <math.h></span>
263 <span class="gtkdoc ppc">#include <gst/gst.h></span>
265 <span class="comment">/* Cutoff of 4000 Hz */</span>
266 <span class="gtkdoc ppc">#define CUTOFF (4000.0)</span>
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>
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">"Got ERROR"</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">"Got WARNING"</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>
289 <span class="keyword">return</span> TRUE<span class="gtkdoc opt">;</span>
290 <span class="gtkdoc opt">}</span>
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>
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">></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>
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>
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">(&</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">(&</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">, &</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">(&</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">"a"</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>
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">(&</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">, &</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">(&</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">"b"</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>
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>
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>
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">"pipeline"</span><span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
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">"audiotestsrc"</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">"wave"</span><span class="gtkdoc opt">,</span> <span class="number">5</span><span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
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">"audioiirfilter"</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">"rate-changed"</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>
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">"audioconvert"</span><span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
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">"autoaudiosink"</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>
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">"Failed to link elements"</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>
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>
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">"message"</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>
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">"Failed to go into PLAYING state"</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>
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>
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>
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>
370 <span class="keyword">return</span> <span class="number">0</span><span class="gtkdoc opt">;</span>
371 <span class="gtkdoc opt">}</span></pre></td>
380 <div class="refsynopsisdiv">
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">
388 <td><p><span class="term">plugin</span></p></td>
390 <a class="link" href="gst-plugins-good-plugins-plugin-audiofx.html#plugin-audiofx">audiofx</a>
394 <td><p><span class="term">author</span></p></td>
395 <td>Sebastian Dröge <sebastian.droege@collabora.co.uk></td>
398 <td><p><span class="term">class</span></p></td>
399 <td>Filter/Effect/Audio</td>
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">
411 <td><p><span class="term">name</span></p></td>
415 <td><p><span class="term">direction</span></p></td>
419 <td><p><span class="term">presence</span></p></td>
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>
428 <div class="variablelist"><table border="0">
429 <col align="left" valign="top">
432 <td><p><span class="term">name</span></p></td>
436 <td><p><span class="term">direction</span></p></td>
440 <td><p><span class="term">presence</span></p></td>
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>
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>
460 Opaque data structure.
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>
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>
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>
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.
490 <div class="variablelist"><table border="0">
491 <col align="left" valign="top">
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>
498 <td><p><span class="term"><em class="parameter"><code>rate</code></em> :</span></p></td>
499 <td>the new sampling rate</td>
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>
512 Generated by GTK-Doc V1.18</div>