| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>spectrum: GStreamer Good Plugins 1.0 Plugins Reference Manual</title> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> |
| <link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual"> |
| <link rel="up" href="ch01.html" title="gst-plugins-good Elements"> |
| <link rel="prev" href="gst-plugins-good-plugins-souphttpsrc.html" title="souphttpsrc"> |
| <link rel="next" href="gst-plugins-good-plugins-speexenc.html" title="speexenc"> |
| <meta name="generator" content="GTK-Doc V1.24 (XML mode)"> |
| <link rel="stylesheet" href="style.css" type="text/css"> |
| </head> |
| <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
| <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> |
| <td width="100%" align="left" class="shortcuts"> |
| <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> |
| <a href="#gst-plugins-good-plugins-spectrum.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> |
| <a href="#gst-plugins-good-plugins-spectrum.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> |
| <a href="#gst-plugins-good-plugins-spectrum.properties" class="shortcut">Properties</a></span> |
| </td> |
| <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> |
| <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> |
| <td><a accesskey="p" href="gst-plugins-good-plugins-souphttpsrc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> |
| <td><a accesskey="n" href="gst-plugins-good-plugins-speexenc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> |
| </tr></table> |
| <div class="refentry"> |
| <a name="gst-plugins-good-plugins-spectrum"></a><div class="titlepage"></div> |
| <div class="refnamediv"><table width="100%"><tr> |
| <td valign="top"> |
| <h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-spectrum.top_of_page"></a>spectrum</span></h2> |
| <p>spectrum — Run an FFT on the audio signal, output spectrum data</p> |
| </td> |
| <td class="gallery_image" valign="top" align="right"></td> |
| </tr></table></div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-spectrum.properties"></a><h2>Properties</h2> |
| <div class="informaltable"><table border="0"> |
| <colgroup> |
| <col width="150px" class="properties_type"> |
| <col width="300px" class="properties_name"> |
| <col width="200px" class="properties_flags"> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--bands" title="The “bands” property">bands</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| <tr> |
| <td class="property_type"><span class="type">guint64</span></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--interval" title="The “interval” property">interval</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--message" title="The “message” property">message</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--threshold" title="The “threshold” property">threshold</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--message-magnitude" title="The “message-magnitude” property">message-magnitude</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--message-phase" title="The “message-phase” property">message-phase</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--post-messages" title="The “post-messages” property">post-messages</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| <tr> |
| <td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td> |
| <td class="property_name"><a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--multi-channel" title="The “multi-channel” property">multi-channel</a></td> |
| <td class="property_flags">Read / Write</td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <a name="GstSpectrum"></a><div class="refsect1"> |
| <a name="gst-plugins-good-plugins-spectrum.other"></a><h2>Types and Values</h2> |
| <div class="informaltable"><table width="100%" border="0"> |
| <colgroup> |
| <col width="150px" class="name"> |
| <col class="description"> |
| </colgroup> |
| <tbody><tr> |
| <td class="datatype_keyword">struct</td> |
| <td class="function_name"><a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum-struct" title="struct GstSpectrum">GstSpectrum</a></td> |
| </tr></tbody> |
| </table></div> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-spectrum.object-hierarchy"></a><h2>Object Hierarchy</h2> |
| <pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> |
| <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a> |
| <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a> |
| <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a> |
| <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseTransform.html">GstBaseTransform</a> |
| <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiofilter.html#GstAudioFilter">GstAudioFilter</a> |
| <span class="lineart">╰──</span> GstSpectrum |
| </pre> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-spectrum.description"></a><h2>Description</h2> |
| <p>The Spectrum element analyzes the frequency spectrum of an audio signal. |
| If the <a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--post-messages" title="The “post-messages” property"><span class="type">“post-messages”</span></a> property is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><span class="type">TRUE</span></a>, it sends analysis results |
| as element messages named</p> |
| <code class="classname">"spectrum"</code> after each interval of time given |
| <p>by the <a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--interval" title="The “interval” property"><span class="type">“interval”</span></a> property.</p> |
| <p>The message's structure contains some combination of these fields:</p> |
| <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
| <li class="listitem"><p> |
| <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> |
| <code class="classname">"timestamp"</code>: |
| the timestamp of the buffer that triggered the message. |
| </p></li> |
| <li class="listitem"><p> |
| <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> |
| <code class="classname">"stream-time"</code>: |
| the stream time of the buffer. |
| </p></li> |
| <li class="listitem"><p> |
| <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> |
| <code class="classname">"running-time"</code>: |
| the running_time of the buffer. |
| </p></li> |
| <li class="listitem"><p> |
| <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> |
| <code class="classname">"duration"</code>: |
| the duration of the buffer. |
| </p></li> |
| <li class="listitem"><p> |
| <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> |
| <code class="classname">"endtime"</code>: |
| the end time of the buffer that triggered the message as stream time (this |
| is deprecated, as it can be calculated from stream-time + duration) |
| </p></li> |
| <li class="listitem"><p> |
| <span class="type">GstValueList</span> of <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> |
| <code class="classname">"magnitude"</code>: |
| the level for each frequency band in dB. All values below the value of the |
| <a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--threshold" title="The “threshold” property"><span class="type">“threshold”</span></a> property will be set to the threshold. Only present |
| if the <a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--message-magnitude" title="The “message-magnitude” property"><span class="type">“message-magnitude”</span></a> property is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>. |
| </p></li> |
| <li class="listitem"><p> |
| <span class="type">GstValueList</span> of <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> |
| <code class="classname">"phase"</code>: |
| The phase for each frequency band. The value is between -pi and pi. Only |
| present if the <a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--message-phase" title="The “message-phase” property"><span class="type">“message-phase”</span></a> property is <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>. |
| </p></li> |
| </ul></div> |
| <p>If <a class="link" href="gst-plugins-good-plugins-spectrum.html#GstSpectrum--multi-channel" title="The “multi-channel” property"><span class="type">“multi-channel”</span></a> property is set to true. magnitude and phase |
| fields will be each a nested <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstControlSource.html#GstValueArray"><span class="type">GstValueArray</span></a>. The first dimension are the |
| channels and the second dimension are the values.</p> |
| <div class="refsect2"> |
| <a name="id-1.2.142.7.8"></a><h3>Example application</h3> |
| <div class="informalexample"> |
| <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> |
| <tbody> |
| <tr> |
| <td class="listing_lines" align="right"><pre>1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
| 36 |
| 37 |
| 38 |
| 39 |
| 40 |
| 41 |
| 42 |
| 43 |
| 44 |
| 45 |
| 46 |
| 47 |
| 48 |
| 49 |
| 50 |
| 51 |
| 52 |
| 53 |
| 54 |
| 55 |
| 56 |
| 57 |
| 58 |
| 59 |
| 60 |
| 61 |
| 62 |
| 63 |
| 64 |
| 65 |
| 66 |
| 67 |
| 68 |
| 69 |
| 70 |
| 71 |
| 72 |
| 73 |
| 74 |
| 75 |
| 76 |
| 77 |
| 78 |
| 79 |
| 80 |
| 81 |
| 82 |
| 83 |
| 84 |
| 85 |
| 86 |
| 87 |
| 88 |
| 89 |
| 90 |
| 91 |
| 92 |
| 93 |
| 94 |
| 95 |
| 96 |
| 97 |
| 98 |
| 99 |
| 100 |
| 101 |
| 102 |
| 103 |
| 104 |
| 105 |
| 106 |
| 107 |
| 108 |
| 109 |
| 110 |
| 111 |
| 112 |
| 113 |
| 114 |
| 115 |
| 116 |
| 117 |
| 118 |
| 119 |
| 120 |
| 121 |
| 122 |
| 123 |
| 124</pre></td> |
| <td class="listing_code"><pre class="programlisting"><span class="comment">/* GStreamer</span> |
| <span class="comment"> * Copyright (C) 2006 Stefan Kost <ensonic@users.sf.net></span> |
| <span class="comment"> * Copyright (C) 2008 Jan Schmidt <jan.schmidt@sun.com></span> |
| <span class="comment"> *</span> |
| <span class="comment"> * This library is free software; you can redistribute it and/or</span> |
| <span class="comment"> * modify it under the terms of the GNU Library General Public</span> |
| <span class="comment"> * License as published by the Free Software Foundation; either</span> |
| <span class="comment"> * version 2 of the License, or (at your option) any later version.</span> |
| <span class="comment"> *</span> |
| <span class="comment"> * This library is distributed in the hope that it will be useful,</span> |
| <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span> |
| <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span> |
| <span class="comment"> * Library General Public License for more details.</span> |
| <span class="comment"> *</span> |
| <span class="comment"> * You should have received a copy of the GNU Library General Public</span> |
| <span class="comment"> * License along with this library; if not, write to the</span> |
| <span class="comment"> * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span> |
| <span class="comment"> * Boston, MA 02110-1301, USA.</span> |
| <span class="comment"> */</span> |
| |
| <span class="gtkdoc ppc">#include <stdio.h></span> |
| <span class="gtkdoc ppc">#include <string.h></span> |
| <span class="gtkdoc ppc">#include <stdlib.h></span> |
| <span class="gtkdoc ppc">#include <gst/gst.h></span> |
| |
| <span class="gtkdoc kwb">static</span> guint spect_bands <span class="gtkdoc opt">=</span> <span class="number">20</span><span class="gtkdoc opt">;</span> |
| |
| <span class="gtkdoc ppc">#define AUDIOFREQ 32000</span> |
| |
| <span class="comment">/* receive spectral data from element message */</span> |
| <span class="gtkdoc kwb">static</span> gboolean |
| <span class="function">message_handler</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 data<span class="gtkdoc opt">)</span> |
| <span class="gtkdoc opt">{</span> |
| <span class="keyword">if</span> <span class="gtkdoc opt">(</span>message<span class="gtkdoc opt">-></span>type <span class="gtkdoc opt">==</span> GST_MESSAGE_ELEMENT<span class="gtkdoc opt">) {</span> |
| <span class="gtkdoc kwb">const</span> GstStructure <span class="gtkdoc opt">*</span>s <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html#gst-message-get-structure">gst_message_get_structure</a></span> <span class="gtkdoc opt">(</span>message<span class="gtkdoc opt">);</span> |
| <span class="gtkdoc kwb">const</span> gchar <span class="gtkdoc opt">*</span>name <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html#gst-structure-get-name">gst_structure_get_name</a></span> <span class="gtkdoc opt">(</span>s<span class="gtkdoc opt">);</span> |
| GstClockTime endtime<span class="gtkdoc opt">;</span> |
| |
| <span class="keyword">if</span> <span class="gtkdoc opt">(</span><span class="function">strcmp</span> <span class="gtkdoc opt">(</span>name<span class="gtkdoc opt">,</span> <span class="string">"spectrum"</span><span class="gtkdoc opt">) ==</span> <span class="number">0</span><span class="gtkdoc opt">) {</span> |
| <span class="gtkdoc kwb">const</span> GValue <span class="gtkdoc opt">*</span>magnitudes<span class="gtkdoc opt">;</span> |
| <span class="gtkdoc kwb">const</span> GValue <span class="gtkdoc opt">*</span>phases<span class="gtkdoc opt">;</span> |
| <span class="gtkdoc kwb">const</span> GValue <span class="gtkdoc opt">*</span>mag<span class="gtkdoc opt">, *</span>phase<span class="gtkdoc opt">;</span> |
| gdouble freq<span class="gtkdoc opt">;</span> |
| guint i<span class="gtkdoc opt">;</span> |
| |
| <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/GstStructure.html#gst-structure-get-clock-time">gst_structure_get_clock_time</a></span> <span class="gtkdoc opt">(</span>s<span class="gtkdoc opt">,</span> <span class="string">"endtime"</span><span class="gtkdoc opt">, &</span>endtime<span class="gtkdoc opt">))</span> |
| endtime <span class="gtkdoc opt">=</span> GST_CLOCK_TIME_NONE<span class="gtkdoc opt">;</span> |
| |
| <span class="function"><a href="https://developer.gnome.org/glib/unstable/glib-Warnings-and-Assertions.html#g-print">g_print</a></span> <span class="gtkdoc opt">(</span><span class="string">"New spectrum message, endtime %"</span> GST_TIME_FORMAT <span class="string">"</span><span class="gtkdoc esc">\n</span><span class="string">"</span><span class="gtkdoc opt">,</span> |
| <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstInfo.html#GST-TIME-ARGS:CAPS">GST_TIME_ARGS</a></span> <span class="gtkdoc opt">(</span>endtime<span class="gtkdoc opt">));</span> |
| |
| magnitudes <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html#gst-structure-get-value">gst_structure_get_value</a></span> <span class="gtkdoc opt">(</span>s<span class="gtkdoc opt">,</span> <span class="string">"magnitude"</span><span class="gtkdoc opt">);</span> |
| phases <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstStructure.html#gst-structure-get-value">gst_structure_get_value</a></span> <span class="gtkdoc opt">(</span>s<span class="gtkdoc opt">,</span> <span class="string">"phase"</span><span class="gtkdoc opt">);</span> |
| |
| <span class="keyword">for</span> <span class="gtkdoc opt">(</span>i <span class="gtkdoc opt">=</span> <span class="number">0</span><span class="gtkdoc opt">;</span> i <span class="gtkdoc opt"><</span> spect_bands<span class="gtkdoc opt">; ++</span>i<span class="gtkdoc opt">) {</span> |
| freq <span class="gtkdoc opt">= (</span>gdouble<span class="gtkdoc opt">) ((</span>AUDIOFREQ <span class="gtkdoc opt">/</span> <span class="number">2</span><span class="gtkdoc opt">) *</span> i <span class="gtkdoc opt">+</span> AUDIOFREQ <span class="gtkdoc opt">/</span> <span class="number">4</span><span class="gtkdoc opt">) /</span> spect_bands<span class="gtkdoc opt">;</span> |
| mag <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstValue.html#gst-value-list-get-value">gst_value_list_get_value</a></span> <span class="gtkdoc opt">(</span>magnitudes<span class="gtkdoc opt">,</span> i<span class="gtkdoc opt">);</span> |
| phase <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstValue.html#gst-value-list-get-value">gst_value_list_get_value</a></span> <span class="gtkdoc opt">(</span>phases<span class="gtkdoc opt">,</span> i<span class="gtkdoc opt">);</span> |
| |
| <span class="keyword">if</span> <span class="gtkdoc opt">(</span>mag <span class="gtkdoc opt">!=</span> NULL <span class="gtkdoc opt">&&</span> phase <span class="gtkdoc opt">!=</span> NULL<span class="gtkdoc opt">) {</span> |
| <span class="function"><a href="https://developer.gnome.org/glib/unstable/glib-Warnings-and-Assertions.html#g-print">g_print</a></span> <span class="gtkdoc opt">(</span><span class="string">"band %d (freq %g): magnitude %f dB phase %f</span><span class="gtkdoc esc">\n</span><span class="string">"</span><span class="gtkdoc opt">,</span> i<span class="gtkdoc opt">,</span> freq<span class="gtkdoc opt">,</span> |
| <span class="function"><a href="https://developer.gnome.org/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-float">g_value_get_float</a></span> <span class="gtkdoc opt">(</span>mag<span class="gtkdoc opt">),</span> <span class="function"><a href="https://developer.gnome.org/gobject/unstable/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-float">g_value_get_float</a></span> <span class="gtkdoc opt">(</span>phase<span class="gtkdoc opt">));</span> |
| <span class="gtkdoc opt">}</span> |
| <span class="gtkdoc opt">}</span> |
| <span class="function"><a href="https://developer.gnome.org/glib/unstable/glib-Warnings-and-Assertions.html#g-print">g_print</a></span> <span class="gtkdoc opt">(</span><span class="string">"</span><span class="gtkdoc esc">\n</span><span class="string">"</span><span class="gtkdoc opt">);</span> |
| <span class="gtkdoc opt">}</span> |
| <span class="gtkdoc opt">}</span> |
| <span class="keyword">return</span> TRUE<span class="gtkdoc opt">;</span> |
| <span class="gtkdoc opt">}</span> |
| |
| <span class="gtkdoc kwb">int</span> |
| <span class="function">main</span> <span class="gtkdoc opt">(</span><span class="gtkdoc kwb">int</span> argc<span class="gtkdoc opt">,</span> <span class="gtkdoc kwb">char</span> <span class="gtkdoc opt">*</span>argv<span class="gtkdoc opt">[])</span> |
| <span class="gtkdoc opt">{</span> |
| GstElement <span class="gtkdoc opt">*</span>bin<span class="gtkdoc opt">;</span> |
| GstElement <span class="gtkdoc opt">*</span>src<span class="gtkdoc opt">, *</span>audioconvert<span class="gtkdoc opt">, *</span>spectrum<span class="gtkdoc opt">, *</span>sink<span class="gtkdoc opt">;</span> |
| GstBus <span class="gtkdoc opt">*</span>bus<span class="gtkdoc opt">;</span> |
| GstCaps <span class="gtkdoc opt">*</span>caps<span class="gtkdoc opt">;</span> |
| GMainLoop <span class="gtkdoc opt">*</span>loop<span class="gtkdoc opt">;</span> |
| |
| <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>argc<span class="gtkdoc opt">, &</span>argv<span class="gtkdoc opt">);</span> |
| |
| bin <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPipeline.html#gst-pipeline-new">gst_pipeline_new</a></span> <span class="gtkdoc opt">(</span><span class="string">"bin"</span><span class="gtkdoc opt">);</span> |
| |
| 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> <span class="string">"src"</span><span class="gtkdoc opt">);</span> |
| <span class="function"><a href="https://developer.gnome.org/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="https://developer.gnome.org/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">0</span><span class="gtkdoc opt">,</span> <span class="string">"freq"</span><span class="gtkdoc opt">,</span> <span class="number">6000.0</span><span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span> |
| audioconvert <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> |
| <span class="function"><a href="https://developer.gnome.org/glib/unstable/glib-Testing.html#g-assert">g_assert</a></span> <span class="gtkdoc opt">(</span>audioconvert<span class="gtkdoc opt">);</span> |
| |
| spectrum <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">"spectrum"</span><span class="gtkdoc opt">,</span> <span class="string">"spectrum"</span><span class="gtkdoc opt">);</span> |
| <span class="function"><a href="https://developer.gnome.org/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="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span> <span class="gtkdoc opt">(</span>spectrum<span class="gtkdoc opt">),</span> <span class="string">"bands"</span><span class="gtkdoc opt">,</span> spect_bands<span class="gtkdoc opt">,</span> <span class="string">"threshold"</span><span class="gtkdoc opt">, -</span><span class="number">80</span><span class="gtkdoc opt">,</span> |
| <span class="string">"post-messages"</span><span class="gtkdoc opt">,</span> TRUE<span class="gtkdoc opt">,</span> <span class="string">"message-phase"</span><span class="gtkdoc opt">,</span> TRUE<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span> |
| |
| 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">"fakesink"</span><span class="gtkdoc opt">,</span> <span class="string">"sink"</span><span class="gtkdoc opt">);</span> |
| <span class="function"><a href="https://developer.gnome.org/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="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span> <span class="gtkdoc opt">(</span>sink<span class="gtkdoc opt">),</span> <span class="string">"sync"</span><span class="gtkdoc opt">,</span> TRUE<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span> |
| |
| <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>bin<span class="gtkdoc opt">),</span> src<span class="gtkdoc opt">,</span> audioconvert<span class="gtkdoc opt">,</span> spectrum<span class="gtkdoc opt">,</span> sink<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span> |
| |
| caps <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html#gst-caps-new-simple">gst_caps_new_simple</a></span> <span class="gtkdoc opt">(</span><span class="string">"audio/x-raw"</span><span class="gtkdoc opt">,</span> |
| <span class="string">"rate"</span><span class="gtkdoc opt">,</span> G_TYPE_INT<span class="gtkdoc opt">,</span> AUDIOFREQ<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span> |
| |
| <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">gst_element_link</a></span> <span class="gtkdoc opt">(</span>src<span class="gtkdoc opt">,</span> audioconvert<span class="gtkdoc opt">) ||</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-filtered">gst_element_link_filtered</a></span> <span class="gtkdoc opt">(</span>audioconvert<span class="gtkdoc opt">,</span> spectrum<span class="gtkdoc opt">,</span> caps<span class="gtkdoc opt">) ||</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">gst_element_link</a></span> <span class="gtkdoc opt">(</span>spectrum<span class="gtkdoc opt">,</span> sink<span class="gtkdoc opt">)) {</span> |
| <span class="function">fprintf</span> <span class="gtkdoc opt">(</span>stderr<span class="gtkdoc opt">,</span> <span class="string">"can't link elements</span><span class="gtkdoc esc">\n</span><span class="string">"</span><span class="gtkdoc opt">);</span> |
| <span class="function">exit</span> <span class="gtkdoc opt">(</span><span class="number">1</span><span class="gtkdoc opt">);</span> |
| <span class="gtkdoc opt">}</span> |
| <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html#gst-caps-unref">gst_caps_unref</a></span> <span class="gtkdoc opt">(</span>caps<span class="gtkdoc opt">);</span> |
| |
| bus <span class="gtkdoc opt">=</span> <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-get-bus">gst_element_get_bus</a></span> <span class="gtkdoc opt">(</span>bin<span class="gtkdoc opt">);</span> |
| <span class="function"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html#gst-bus-add-watch">gst_bus_add_watch</a></span> <span class="gtkdoc opt">(</span>bus<span class="gtkdoc opt">,</span> message_handler<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span> |
| <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>bus<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>bin<span class="gtkdoc opt">,</span> GST_STATE_PLAYING<span class="gtkdoc opt">);</span> |
| |
| <span class="comment">/* we need to run a GLib main loop to get the messages */</span> |
| loop <span class="gtkdoc opt">=</span> <span class="function"><a href="https://developer.gnome.org/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> |
| <span class="function"><a href="https://developer.gnome.org/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> |
| |
| <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>bin<span class="gtkdoc opt">,</span> GST_STATE_NULL<span class="gtkdoc opt">);</span> |
| |
| <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>bin<span class="gtkdoc opt">);</span> |
| |
| <span class="keyword">return</span> <span class="number">0</span><span class="gtkdoc opt">;</span> |
| <span class="gtkdoc opt">}</span></pre></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| |
| </div> |
| <div class="refsynopsisdiv"> |
| <h2>Synopsis</h2> |
| <div class="refsect2"> |
| <a name="id-1.2.142.7.9.1"></a><h3>Element Information</h3> |
| <div class="variablelist"><table border="0" class="variablelist"> |
| <colgroup> |
| <col align="left" valign="top"> |
| <col> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td><p><span class="term">plugin</span></p></td> |
| <td> |
| <a class="link" href="gst-plugins-good-plugins-plugin-spectrum.html#plugin-spectrum">spectrum</a> |
| </td> |
| </tr> |
| <tr> |
| <td><p><span class="term">author</span></p></td> |
| <td>Erik Walthinsen <omega@cse.ogi.edu>, Stefan Kost <ensonic@users.sf.net>, Sebastian Dröge <sebastian.droege@collabora.co.uk></td> |
| </tr> |
| <tr> |
| <td><p><span class="term">class</span></p></td> |
| <td>Filter/Analyzer/Audio</td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="id-1.2.142.7.9.2"></a><h3>Element Pads</h3> |
| <div class="variablelist"><table border="0" class="variablelist"> |
| <colgroup> |
| <col align="left" valign="top"> |
| <col> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td><p><span class="term">name</span></p></td> |
| <td>sink</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">direction</span></p></td> |
| <td>sink</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">presence</span></p></td> |
| <td>always</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">details</span></p></td> |
| <td>audio/x-raw, format=(string){ S16LE, S24LE, S32LE, F32LE, F64LE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string)interleaved</td> |
| </tr> |
| </tbody> |
| </table></div> |
| <div class="variablelist"><table border="0" class="variablelist"> |
| <colgroup> |
| <col align="left" valign="top"> |
| <col> |
| </colgroup> |
| <tbody> |
| <tr> |
| <td><p><span class="term">name</span></p></td> |
| <td>src</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">direction</span></p></td> |
| <td>source</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">presence</span></p></td> |
| <td>always</td> |
| </tr> |
| <tr> |
| <td><p><span class="term">details</span></p></td> |
| <td>audio/x-raw, format=(string){ S16LE, S24LE, S32LE, F32LE, F64LE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string)interleaved</td> |
| </tr> |
| </tbody> |
| </table></div> |
| </div> |
| </div> |
| <p> |
| </p> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-spectrum.functions_details"></a><h2>Functions</h2> |
| <p></p> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-spectrum.other_details"></a><h2>Types and Values</h2> |
| <div class="refsect2"> |
| <a name="GstSpectrum-struct"></a><h3>struct GstSpectrum</h3> |
| <pre class="programlisting">struct GstSpectrum;</pre> |
| <p> |
| </p> |
| </div> |
| </div> |
| <div class="refsect1"> |
| <a name="gst-plugins-good-plugins-spectrum.property-details"></a><h2>Property Details</h2> |
| <div class="refsect2"> |
| <a name="GstSpectrum--bands"></a><h3>The <code class="literal">“bands”</code> property</h3> |
| <pre class="programlisting"> “bands” <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> |
| <p>Number of frequency bands.</p> |
| <p>Flags: Read / Write</p> |
| <p>Allowed values: [2,1073741824]</p> |
| <p>Default value: 128</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstSpectrum--interval"></a><h3>The <code class="literal">“interval”</code> property</h3> |
| <pre class="programlisting"> “interval” <span class="type">guint64</span></pre> |
| <p>Interval of time between message posts (in nanoseconds).</p> |
| <p>Flags: Read / Write</p> |
| <p>Allowed values: >= 1</p> |
| <p>Default value: 100000000</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstSpectrum--message"></a><h3>The <code class="literal">“message”</code> property</h3> |
| <pre class="programlisting"> “message” <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre> |
| <p>Whether to post a 'spectrum' element message on the bus for each passed interval (deprecated, use post-messages).</p> |
| <p>Flags: Read / Write</p> |
| <p>Default value: TRUE</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstSpectrum--threshold"></a><h3>The <code class="literal">“threshold”</code> property</h3> |
| <pre class="programlisting"> “threshold” <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a></pre> |
| <p>dB threshold for result. All lower values will be set to this.</p> |
| <p>Flags: Read / Write</p> |
| <p>Allowed values: <= 0</p> |
| <p>Default value: -60</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstSpectrum--message-magnitude"></a><h3>The <code class="literal">“message-magnitude”</code> property</h3> |
| <pre class="programlisting"> “message-magnitude” <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre> |
| <p>Whether to add a 'magnitude' field to the structure of any 'spectrum' element messages posted on the bus.</p> |
| <p>Flags: Read / Write</p> |
| <p>Default value: TRUE</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstSpectrum--message-phase"></a><h3>The <code class="literal">“message-phase”</code> property</h3> |
| <pre class="programlisting"> “message-phase” <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre> |
| <p>Whether to add a 'phase' field to the structure of any 'spectrum' element messages posted on the bus.</p> |
| <p>Flags: Read / Write</p> |
| <p>Default value: FALSE</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstSpectrum--post-messages"></a><h3>The <code class="literal">“post-messages”</code> property</h3> |
| <pre class="programlisting"> “post-messages” <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre> |
| <p>Whether to post a 'spectrum' element message on the bus for each passed interval.</p> |
| <p>Flags: Read / Write</p> |
| <p>Default value: TRUE</p> |
| </div> |
| <hr> |
| <div class="refsect2"> |
| <a name="GstSpectrum--multi-channel"></a><h3>The <code class="literal">“multi-channel”</code> property</h3> |
| <pre class="programlisting"> “multi-channel” <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre> |
| <p>Send separate results for each channel.</p> |
| <p>Flags: Read / Write</p> |
| <p>Default value: FALSE</p> |
| </div> |
| </div> |
| </div> |
| <div class="footer"> |
| <hr>Generated by GTK-Doc V1.24</div> |
| </body> |
| </html> |