Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > dc9b9eb224888fd532330fad8ee0ffc5 > files > 134

audacious-devel-2.4.5-1.fc14.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Audacious: equalizer.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Audacious&#160;<span id="projectnumber">$Id:Doxyfile42802007-03-2104:39:00Znenolod$</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<h1>equalizer.c</h1>  </div>
</div>
<div class="contents">
<a href="equalizer_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> *  Equalizer filter, implementation of a 10 band time domain graphic equalizer</span>
<a name="l00003"></a>00003 <span class="comment"> *  using IIR filters.  The IIR filters are implemented using a Direct Form II</span>
<a name="l00004"></a>00004 <span class="comment"> *  approach, modified (b1 == 0 always) to save computation.</span>
<a name="l00005"></a>00005 <span class="comment"> *</span>
<a name="l00006"></a>00006 <span class="comment"> *  This software has been released under the terms of the GNU General Public</span>
<a name="l00007"></a>00007 <span class="comment"> *  license.  See http://www.gnu.org/copyleft/gpl.html for details.</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> *  Copyright 2001 Anders Johansson &lt;ajh@atri.curtin.edu.au&gt;</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> *  Adapted for Audacious by John Lindgren, 2010</span>
<a name="l00012"></a>00012 <span class="comment"> */</span>
<a name="l00013"></a>00013 
<a name="l00014"></a>00014 <span class="preprocessor">#include &lt;glib.h&gt;</span>
<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;math.h&gt;</span>
<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;string.h&gt;</span>
<a name="l00017"></a>00017 
<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;libaudcore/hook.h&gt;</span>
<a name="l00019"></a>00019 
<a name="l00020"></a>00020 <span class="preprocessor">#include &quot;<a class="code" href="audconfig_8h.html">audconfig.h</a>&quot;</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include &quot;<a class="code" href="equalizer_8h.html">equalizer.h</a>&quot;</span>
<a name="l00022"></a>00022 
<a name="l00023"></a><a class="code" href="equalizer_8c.html#a2e536b415325861345e7a1b847c73e68">00023</a> <span class="preprocessor">#define EQ_BANDS AUD_EQUALIZER_NBANDS</span>
<a name="l00024"></a><a class="code" href="equalizer_8c.html#ac69ee46f4a51ed14f0d68628c2dec71d">00024</a> <span class="preprocessor"></span><span class="preprocessor">#define MAX_CHANNELS 10</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="comment">/* Q value for band-pass filters 1.2247 = (3/2)^(1/2)</span>
<a name="l00027"></a>00027 <span class="comment"> * Gives 4 dB suppression at Fc*2 and Fc/2 */</span>
<a name="l00028"></a><a class="code" href="equalizer_8c.html#acbcee443d6d55cb8600b3f240f5cf907">00028</a> <span class="preprocessor">#define Q 1.2247449</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span>
<a name="l00030"></a>00030 <span class="comment">/* Center frequencies for band-pass filters (Hz) */</span>
<a name="l00031"></a>00031 <span class="comment">/* These are not the historical WinAmp frequencies, because the IIR filters used</span>
<a name="l00032"></a>00032 <span class="comment"> * here are designed for each frequency to be twice the previous.  Using WinAmp</span>
<a name="l00033"></a>00033 <span class="comment"> * frequencies leads to too much gain in some bands and too little in others. */</span>
<a name="l00034"></a><a class="code" href="equalizer_8c.html#a0f75c823d78e6738b7b83ca57a410b3e">00034</a> <span class="keyword">static</span> <span class="keyword">const</span> gfloat <a class="code" href="equalizer_8c.html#a0f75c823d78e6738b7b83ca57a410b3e">CF</a>[<a class="code" href="equalizer_8c.html#a2e536b415325861345e7a1b847c73e68">EQ_BANDS</a>] = {31.25, 62.5, 125, 250, 500, 1000, 2000,
<a name="l00035"></a>00035  4000, 8000, 16000};
<a name="l00036"></a>00036 
<a name="l00037"></a><a class="code" href="equalizer_8c.html#a30f70d669e1b23269d4c361e5f800481">00037</a> <span class="keyword">static</span> GStaticMutex <a class="code" href="equalizer_8c.html#a30f70d669e1b23269d4c361e5f800481">mutex</a> = G_STATIC_MUTEX_INIT;
<a name="l00038"></a><a class="code" href="equalizer_8c.html#ae80c811f792cc70608a4cb45804e8e9f">00038</a> <span class="keyword">static</span> <a class="code" href="configdb-api_8h.html#a3ac4dad7ee7fd2890139bff9a134ee9a">gboolean</a> <a class="code" href="equalizer_8c.html#ae80c811f792cc70608a4cb45804e8e9f">active</a>;
<a name="l00039"></a><a class="code" href="equalizer_8c.html#aaeb28a161c72156f4588d07995854c80">00039</a> <span class="keyword">static</span> <a class="code" href="misc-api_8h.html#acf599c059f43e0cca83145eb6b0c93cd">gint</a> <a class="code" href="equalizer_8c.html#a321056aba52218c44e8b3e0ce010cb11">channels</a>, <a class="code" href="equalizer_8c.html#aaeb28a161c72156f4588d07995854c80">rate</a>;
<a name="l00040"></a><a class="code" href="equalizer_8c.html#a21329274c21b67fc478d38001a78d392">00040</a> <span class="keyword">static</span> gfloat <a class="code" href="equalizer_8c.html#a21329274c21b67fc478d38001a78d392">a</a>[<a class="code" href="equalizer_8c.html#a2e536b415325861345e7a1b847c73e68">EQ_BANDS</a>][2]; <span class="comment">/* A weights */</span>
<a name="l00041"></a><a class="code" href="equalizer_8c.html#a68195c8196bba3c211db7cdcef429181">00041</a> <span class="keyword">static</span> gfloat <a class="code" href="equalizer_8c.html#a68195c8196bba3c211db7cdcef429181">b</a>[<a class="code" href="equalizer_8c.html#a2e536b415325861345e7a1b847c73e68">EQ_BANDS</a>][2]; <span class="comment">/* B weights */</span>
<a name="l00042"></a><a class="code" href="equalizer_8c.html#a849cbcfb1cbc0baa7932eaab33b7cdae">00042</a> <span class="keyword">static</span> gfloat <a class="code" href="equalizer_8c.html#a849cbcfb1cbc0baa7932eaab33b7cdae">wqv</a>[<a class="code" href="equalizer_8c.html#ac69ee46f4a51ed14f0d68628c2dec71d">MAX_CHANNELS</a>][<a class="code" href="equalizer_8c.html#a2e536b415325861345e7a1b847c73e68">EQ_BANDS</a>][2]; <span class="comment">/* Circular buffer for W data */</span>
<a name="l00043"></a><a class="code" href="equalizer_8c.html#a440bd17397927f95089a9f5a6dc5c370">00043</a> <span class="keyword">static</span> gfloat <a class="code" href="equalizer_8c.html#a440bd17397927f95089a9f5a6dc5c370">gv</a>[<a class="code" href="equalizer_8c.html#ac69ee46f4a51ed14f0d68628c2dec71d">MAX_CHANNELS</a>][<a class="code" href="equalizer_8c.html#a2e536b415325861345e7a1b847c73e68">EQ_BANDS</a>]; <span class="comment">/* Gain factor for each channel and band */</span>
<a name="l00044"></a><a class="code" href="equalizer_8c.html#a57e89476c15af03d3e2669b77a7363b5">00044</a> <span class="keyword">static</span> <a class="code" href="misc-api_8h.html#acf599c059f43e0cca83145eb6b0c93cd">gint</a> <a class="code" href="equalizer_8c.html#a57e89476c15af03d3e2669b77a7363b5">K</a>; <span class="comment">/* Number of used eq bands */</span>
<a name="l00045"></a>00045 
<a name="l00046"></a>00046 <span class="comment">/* 2nd order band-pass filter design */</span>
<a name="l00047"></a><a class="code" href="equalizer_8c.html#ab285fadc3182093eccc604347554aeba">00047</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="equalizer_8c.html#ab285fadc3182093eccc604347554aeba">bp2</a> (gfloat * <a class="code" href="equalizer_8c.html#a21329274c21b67fc478d38001a78d392">a</a>, gfloat * <a class="code" href="equalizer_8c.html#a68195c8196bba3c211db7cdcef429181">b</a>, gfloat fc, gfloat q)
<a name="l00048"></a>00048 {
<a name="l00049"></a>00049     gfloat th = 2 * M_PI * fc;
<a name="l00050"></a>00050     gfloat C = (1 - tanf (th * q / 2)) / (1 + tanf (th * q / 2));
<a name="l00051"></a>00051 
<a name="l00052"></a>00052     a[0] = (1 + C) * cosf (th);
<a name="l00053"></a>00053     a[1] = -C;
<a name="l00054"></a>00054     b[0] = (1 - C) / 2;
<a name="l00055"></a>00055     b[1] = -1.005;
<a name="l00056"></a>00056 }
<a name="l00057"></a>00057 
<a name="l00058"></a><a class="code" href="equalizer_8h.html#aa9bcf1962061e442c4e91cfc5ab95f76">00058</a> <span class="keywordtype">void</span> <a class="code" href="equalizer_8c.html#aa9bcf1962061e442c4e91cfc5ab95f76">eq_set_format</a> (<a class="code" href="misc-api_8h.html#acf599c059f43e0cca83145eb6b0c93cd">gint</a> new_channels, <a class="code" href="misc-api_8h.html#acf599c059f43e0cca83145eb6b0c93cd">gint</a> new_rate)
<a name="l00059"></a>00059 {
<a name="l00060"></a>00060     <a class="code" href="misc-api_8h.html#acf599c059f43e0cca83145eb6b0c93cd">gint</a> k;
<a name="l00061"></a>00061 
<a name="l00062"></a>00062     g_static_mutex_lock (&amp; <a class="code" href="equalizer_8c.html#a30f70d669e1b23269d4c361e5f800481">mutex</a>);
<a name="l00063"></a>00063 
<a name="l00064"></a>00064     <a class="code" href="equalizer_8c.html#a321056aba52218c44e8b3e0ce010cb11">channels</a> = new_channels;
<a name="l00065"></a>00065     <a class="code" href="equalizer_8c.html#aaeb28a161c72156f4588d07995854c80">rate</a> = new_rate;
<a name="l00066"></a>00066 
<a name="l00067"></a>00067     <span class="comment">/* Calculate number of active filters */</span>
<a name="l00068"></a>00068     <a class="code" href="equalizer_8c.html#a57e89476c15af03d3e2669b77a7363b5">K</a> = <a class="code" href="equalizer_8c.html#a2e536b415325861345e7a1b847c73e68">EQ_BANDS</a>;
<a name="l00069"></a>00069 
<a name="l00070"></a>00070     <span class="keywordflow">while</span> (<a class="code" href="equalizer_8c.html#a0f75c823d78e6738b7b83ca57a410b3e">CF</a>[<a class="code" href="equalizer_8c.html#a57e89476c15af03d3e2669b77a7363b5">K</a> - 1] &gt; (gfloat) <a class="code" href="equalizer_8c.html#aaeb28a161c72156f4588d07995854c80">rate</a> / 2.2)
<a name="l00071"></a>00071         <a class="code" href="equalizer_8c.html#a57e89476c15af03d3e2669b77a7363b5">K</a> --;
<a name="l00072"></a>00072 
<a name="l00073"></a>00073     <span class="comment">/* Generate filter taps */</span>
<a name="l00074"></a>00074     <span class="keywordflow">for</span> (k = 0; k &lt; <a class="code" href="equalizer_8c.html#a57e89476c15af03d3e2669b77a7363b5">K</a>; k ++)
<a name="l00075"></a>00075         <a class="code" href="equalizer_8c.html#ab285fadc3182093eccc604347554aeba">bp2</a> (<a class="code" href="equalizer_8c.html#a21329274c21b67fc478d38001a78d392">a</a>[k], <a class="code" href="equalizer_8c.html#a68195c8196bba3c211db7cdcef429181">b</a>[k], <a class="code" href="equalizer_8c.html#a0f75c823d78e6738b7b83ca57a410b3e">CF</a>[k] / (gfloat) <a class="code" href="equalizer_8c.html#aaeb28a161c72156f4588d07995854c80">rate</a>, <a class="code" href="equalizer_8c.html#acbcee443d6d55cb8600b3f240f5cf907">Q</a>);
<a name="l00076"></a>00076 
<a name="l00077"></a>00077     <span class="comment">/* Reset state */</span>
<a name="l00078"></a>00078     memset (<a class="code" href="equalizer_8c.html#a849cbcfb1cbc0baa7932eaab33b7cdae">wqv</a>[0][0], 0, <span class="keyword">sizeof</span> <a class="code" href="equalizer_8c.html#a849cbcfb1cbc0baa7932eaab33b7cdae">wqv</a>);
<a name="l00079"></a>00079 
<a name="l00080"></a>00080     g_static_mutex_unlock (&amp; <a class="code" href="equalizer_8c.html#a30f70d669e1b23269d4c361e5f800481">mutex</a>);
<a name="l00081"></a>00081 }
<a name="l00082"></a>00082 
<a name="l00083"></a><a class="code" href="equalizer_8c.html#a1b4de8e4ed6cb02c5e252db98035346c">00083</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="equalizer_8c.html#a1b4de8e4ed6cb02c5e252db98035346c">eq_set_channel_bands</a> (<a class="code" href="misc-api_8h.html#acf599c059f43e0cca83145eb6b0c93cd">gint</a> channel, gfloat * bands)
<a name="l00084"></a>00084 {
<a name="l00085"></a>00085     <a class="code" href="misc-api_8h.html#acf599c059f43e0cca83145eb6b0c93cd">gint</a> k;
<a name="l00086"></a>00086 
<a name="l00087"></a>00087     <span class="keywordflow">for</span> (k = 0; k &lt; <a class="code" href="equalizer_8c.html#a2e536b415325861345e7a1b847c73e68">EQ_BANDS</a>; k ++)
<a name="l00088"></a>00088         <a class="code" href="equalizer_8c.html#a440bd17397927f95089a9f5a6dc5c370">gv</a>[channel][k] = pow (10, bands[k] / 20) - 1;
<a name="l00089"></a>00089 }
<a name="l00090"></a>00090 
<a name="l00091"></a><a class="code" href="equalizer_8c.html#aca876043446856e6763af3160f444745">00091</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="equalizer_8c.html#aca876043446856e6763af3160f444745">eq_set_bands</a> (gfloat preamp, gfloat * bands)
<a name="l00092"></a>00092 {
<a name="l00093"></a>00093     gfloat adjusted[<a class="code" href="equalizer_8c.html#a2e536b415325861345e7a1b847c73e68">EQ_BANDS</a>];
<a name="l00094"></a>00094     <a class="code" href="misc-api_8h.html#acf599c059f43e0cca83145eb6b0c93cd">gint</a> i;
<a name="l00095"></a>00095 
<a name="l00096"></a>00096     <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="equalizer_8c.html#a2e536b415325861345e7a1b847c73e68">EQ_BANDS</a>; i ++)
<a name="l00097"></a>00097         adjusted[i] = preamp + bands[i];
<a name="l00098"></a>00098 
<a name="l00099"></a>00099     <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="equalizer_8c.html#ac69ee46f4a51ed14f0d68628c2dec71d">MAX_CHANNELS</a>; i ++)
<a name="l00100"></a>00100         <a class="code" href="equalizer_8c.html#a1b4de8e4ed6cb02c5e252db98035346c">eq_set_channel_bands</a> (i, adjusted);
<a name="l00101"></a>00101 }
<a name="l00102"></a>00102 
<a name="l00103"></a><a class="code" href="equalizer_8h.html#ab8891b2a2442b00545d51e90729812cb">00103</a> <span class="keywordtype">void</span> <a class="code" href="equalizer_8c.html#ab8891b2a2442b00545d51e90729812cb">eq_filter</a> (gfloat * <a class="code" href="misc-api_8h.html#a2a40119722f785a93d720b769541a543">data</a>, <a class="code" href="misc-api_8h.html#acf599c059f43e0cca83145eb6b0c93cd">gint</a> samples)
<a name="l00104"></a>00104 {
<a name="l00105"></a>00105     <a class="code" href="misc-api_8h.html#acf599c059f43e0cca83145eb6b0c93cd">gint</a> channel;
<a name="l00106"></a>00106 
<a name="l00107"></a>00107     g_static_mutex_lock (&amp; <a class="code" href="equalizer_8c.html#a30f70d669e1b23269d4c361e5f800481">mutex</a>);
<a name="l00108"></a>00108 
<a name="l00109"></a>00109     <span class="keywordflow">if</span> (! <a class="code" href="equalizer_8c.html#ae80c811f792cc70608a4cb45804e8e9f">active</a>)
<a name="l00110"></a>00110     {
<a name="l00111"></a>00111         g_static_mutex_unlock (&amp; <a class="code" href="equalizer_8c.html#a30f70d669e1b23269d4c361e5f800481">mutex</a>);
<a name="l00112"></a>00112         <span class="keywordflow">return</span>;
<a name="l00113"></a>00113     }
<a name="l00114"></a>00114 
<a name="l00115"></a>00115     <span class="keywordflow">for</span> (channel = 0; channel &lt; <a class="code" href="equalizer_8c.html#a321056aba52218c44e8b3e0ce010cb11">channels</a>; channel ++)
<a name="l00116"></a>00116     {
<a name="l00117"></a>00117         gfloat * g = <a class="code" href="equalizer_8c.html#a440bd17397927f95089a9f5a6dc5c370">gv</a>[channel]; <span class="comment">/* Gain factor */</span>
<a name="l00118"></a>00118         gfloat * end = data + samples;
<a name="l00119"></a>00119         gfloat * f;
<a name="l00120"></a>00120 
<a name="l00121"></a>00121         <span class="keywordflow">for</span> (f = data + channel; f &lt; end; f += <a class="code" href="equalizer_8c.html#a321056aba52218c44e8b3e0ce010cb11">channels</a>)
<a name="l00122"></a>00122         {
<a name="l00123"></a>00123             <a class="code" href="misc-api_8h.html#acf599c059f43e0cca83145eb6b0c93cd">gint</a> k; <span class="comment">/* Frequency band index */</span>
<a name="l00124"></a>00124             gfloat yt = * f; <span class="comment">/* Current input sample */</span>
<a name="l00125"></a>00125 
<a name="l00126"></a>00126             <span class="keywordflow">for</span> (k = 0; k &lt; <a class="code" href="equalizer_8c.html#a57e89476c15af03d3e2669b77a7363b5">K</a>; k ++)
<a name="l00127"></a>00127             {
<a name="l00128"></a>00128                 <span class="comment">/* Pointer to circular buffer wq */</span>
<a name="l00129"></a>00129                 gfloat * wq = <a class="code" href="equalizer_8c.html#a849cbcfb1cbc0baa7932eaab33b7cdae">wqv</a>[channel][k];
<a name="l00130"></a>00130                 <span class="comment">/* Calculate output from AR part of current filter */</span>
<a name="l00131"></a>00131                 gfloat w = yt * <a class="code" href="equalizer_8c.html#a68195c8196bba3c211db7cdcef429181">b</a>[k][0] + wq[0] * <a class="code" href="equalizer_8c.html#a21329274c21b67fc478d38001a78d392">a</a>[k][0] + wq[1] * <a class="code" href="equalizer_8c.html#a21329274c21b67fc478d38001a78d392">a</a>[k][1];
<a name="l00132"></a>00132 
<a name="l00133"></a>00133                 <span class="comment">/* Calculate output from MA part of current filter */</span>
<a name="l00134"></a>00134                 yt += (w + wq[1] * <a class="code" href="equalizer_8c.html#a68195c8196bba3c211db7cdcef429181">b</a>[k][1]) * g[k];
<a name="l00135"></a>00135 
<a name="l00136"></a>00136                 <span class="comment">/* Update circular buffer */</span>
<a name="l00137"></a>00137                 wq[1] = wq[0];
<a name="l00138"></a>00138                 wq[0] = w;
<a name="l00139"></a>00139             }
<a name="l00140"></a>00140 
<a name="l00141"></a>00141             <span class="comment">/* Calculate output */</span>
<a name="l00142"></a>00142             * f = yt;
<a name="l00143"></a>00143         }
<a name="l00144"></a>00144     }
<a name="l00145"></a>00145 
<a name="l00146"></a>00146     g_static_mutex_unlock (&amp; <a class="code" href="equalizer_8c.html#a30f70d669e1b23269d4c361e5f800481">mutex</a>);
<a name="l00147"></a>00147 }
<a name="l00148"></a>00148 
<a name="l00149"></a><a class="code" href="equalizer_8c.html#ab1ae2122f9f4708770ef82db225f8fee">00149</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="equalizer_8c.html#ab1ae2122f9f4708770ef82db225f8fee">eq_update</a> (<span class="keywordtype">void</span> * <a class="code" href="misc-api_8h.html#a2a40119722f785a93d720b769541a543">data</a>, <span class="keywordtype">void</span> * user_data)
<a name="l00150"></a>00150 {
<a name="l00151"></a>00151     g_static_mutex_lock (&amp; <a class="code" href="equalizer_8c.html#a30f70d669e1b23269d4c361e5f800481">mutex</a>);
<a name="l00152"></a>00152 
<a name="l00153"></a>00153     <a class="code" href="equalizer_8c.html#ae80c811f792cc70608a4cb45804e8e9f">active</a> = <a class="code" href="audconfig_8c.html#a98bd56a064259046a6cc6b1a620badf8">cfg</a>.equalizer_active;
<a name="l00154"></a>00154     <a class="code" href="equalizer_8c.html#aca876043446856e6763af3160f444745">eq_set_bands</a> (<a class="code" href="audconfig_8c.html#a98bd56a064259046a6cc6b1a620badf8">cfg</a>.equalizer_preamp, <a class="code" href="audconfig_8c.html#a98bd56a064259046a6cc6b1a620badf8">cfg</a>.equalizer_bands);
<a name="l00155"></a>00155 
<a name="l00156"></a>00156     g_static_mutex_unlock (&amp; <a class="code" href="equalizer_8c.html#a30f70d669e1b23269d4c361e5f800481">mutex</a>);
<a name="l00157"></a>00157 }
<a name="l00158"></a>00158 
<a name="l00159"></a><a class="code" href="equalizer_8h.html#a0c349a10597aaa28db563a7ceb67bc65">00159</a> <span class="keywordtype">void</span> <a class="code" href="equalizer_8c.html#a0c349a10597aaa28db563a7ceb67bc65">eq_init</a> (<span class="keywordtype">void</span>)
<a name="l00160"></a>00160 {
<a name="l00161"></a>00161     <a class="code" href="equalizer_8c.html#ab1ae2122f9f4708770ef82db225f8fee">eq_update</a> (NULL, NULL);
<a name="l00162"></a>00162     <a class="code" href="hook_8c.html#abb67ba193253c9416ce3e16724040b46">hook_associate</a> (<span class="stringliteral">&quot;equalizer changed&quot;</span>, <a class="code" href="equalizer_8c.html#ab1ae2122f9f4708770ef82db225f8fee">eq_update</a>, NULL);
<a name="l00163"></a>00163 }
</pre></div></div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Sun Apr 17 2011 for Audacious by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>