~dobey/ubuntu/natty/banshee/fix-and-amz

« back to all changes in this revision

Viewing changes to gstreamer/equalizer/gstiirequalizer10bands.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Dröge
  • Date: 2008-07-30 12:37:28 UTC
  • mto: (1.2.3 upstream) (94.1.1 maverick)
  • mto: This revision was merged to the branch mainline in revision 70.
  • Revision ID: james.westby@ubuntu.com-20080730123728-8y78ip4btz99ri5h
Tags: upstream-1.2.0
Import upstream version 1.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* GStreamer
 
2
 * Copyright (C) <2007> Stefan Kost <ensonic@users.sf.net>
 
3
 *
 
4
 * This library is free software; you can redistribute it and/or
 
5
 * modify it under the terms of the GNU Library General Public
 
6
 * License as published by the Free Software Foundation; either
 
7
 * version 2 of the License, or (at your option) any later version.
 
8
 *
 
9
 * This library is distributed in the hope that it will be useful,
 
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
12
 * Library General Public License for more details.
 
13
 *
 
14
 * You should have received a copy of the GNU Library General Public
 
15
 * License along with this library; if not, write to the
 
16
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 
17
 * Boston, MA 02111-1307, USA.
 
18
 */
 
19
 
 
20
/**
 
21
 * SECTION:element-equalizer-10bands
 
22
 * @short_description: 10-band equalizer
 
23
 *
 
24
 * <refsect2>
 
25
 * <para>
 
26
 * The 10 band equalizer element allows to change the gain of 10 equally distributed
 
27
 * frequency bands between 30 Hz and 15 kHz.
 
28
 * </para>
 
29
 * <title>Example launch line</title>
 
30
 * <para>
 
31
 * <programlisting>
 
32
 * gst-launch filesrc location=song.ogg ! oggdemux ! vorbisdec ! audioconvert ! equalizer-10bands band2=3.0 ! alsasink
 
33
 * </programlisting>
 
34
 * This raises the volume of the 3rd band which is at 119 Hz by 3 db.
 
35
 * </para>
 
36
 * </refsect2>
 
37
 */
 
38
 
 
39
#ifdef HAVE_CONFIG_H
 
40
#include "config.h"
 
41
#endif
 
42
 
 
43
#include "gstiirequalizer.h"
 
44
#include "gstiirequalizer10bands.h"
 
45
 
 
46
 
 
47
enum
 
48
{
 
49
  ARG_BAND0 = 1,
 
50
  ARG_BAND1,
 
51
  ARG_BAND2,
 
52
  ARG_BAND3,
 
53
  ARG_BAND4,
 
54
  ARG_BAND5,
 
55
  ARG_BAND6,
 
56
  ARG_BAND7,
 
57
  ARG_BAND8,
 
58
  ARG_BAND9,
 
59
};
 
60
 
 
61
static void gst_iir_equalizer_10bands_set_property (GObject * object,
 
62
    guint prop_id, const GValue * value, GParamSpec * pspec);
 
63
static void gst_iir_equalizer_10bands_get_property (GObject * object,
 
64
    guint prop_id, GValue * value, GParamSpec * pspec);
 
65
 
 
66
GST_DEBUG_CATEGORY_EXTERN (equalizer_debug);
 
67
#define GST_CAT_DEFAULT equalizer_debug
 
68
 
 
69
GST_BOILERPLATE (GstIirEqualizer10Bands, gst_iir_equalizer_10bands,
 
70
    GstIirEqualizer, GST_TYPE_IIR_EQUALIZER);
 
71
 
 
72
/* equalizer implementation */
 
73
 
 
74
static void
 
75
gst_iir_equalizer_10bands_base_init (gpointer g_class)
 
76
{
 
77
  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
78
  const GstElementDetails iir_equalizer_details =
 
79
      GST_ELEMENT_DETAILS ("10 Band Equalizer",
 
80
      "Filter/Effect/Audio",
 
81
      "Direct Form 10 band IIR equalizer",
 
82
      "Stefan Kost <ensonic@users.sf.net>");
 
83
 
 
84
  gst_element_class_set_details (element_class, &iir_equalizer_details);
 
85
}
 
86
 
 
87
static void
 
88
gst_iir_equalizer_10bands_class_init (GstIirEqualizer10BandsClass * klass)
 
89
{
 
90
  GObjectClass *gobject_class = (GObjectClass *) klass;
 
91
 
 
92
  gobject_class->set_property = gst_iir_equalizer_10bands_set_property;
 
93
  gobject_class->get_property = gst_iir_equalizer_10bands_get_property;
 
94
 
 
95
  g_object_class_install_property (gobject_class, ARG_BAND0,
 
96
      g_param_spec_double ("band0", "29 Hz",
 
97
          "gain for the frequency band 29 Hz, ranging from -24 dB to +12 dB",
 
98
          -24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
 
99
  g_object_class_install_property (gobject_class, ARG_BAND1,
 
100
      g_param_spec_double ("band1", "59 Hz",
 
101
          "gain for the frequency band 59 Hz, ranging from -24 dB to +12 dB",
 
102
          -24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
 
103
  g_object_class_install_property (gobject_class, ARG_BAND2,
 
104
      g_param_spec_double ("band2", "119 Hz",
 
105
          "gain for the frequency band 119 Hz, ranging from -24 dB to +12 dB",
 
106
          -24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
 
107
  g_object_class_install_property (gobject_class, ARG_BAND3,
 
108
      g_param_spec_double ("band3", "227 Hz",
 
109
          "gain for the frequency band 227 Hz, ranging from -24 dB to +12 dB",
 
110
          -24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
 
111
  g_object_class_install_property (gobject_class, ARG_BAND4,
 
112
      g_param_spec_double ("band4", "474 Hz",
 
113
          "gain for the frequency band 474 Hz, ranging from -24 dB to +12 dB",
 
114
          -24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
 
115
  g_object_class_install_property (gobject_class, ARG_BAND5,
 
116
      g_param_spec_double ("band5", "947 Hz",
 
117
          "gain for the frequency band 947 Hz, ranging from -24 dB to +12 dB",
 
118
          -24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
 
119
  g_object_class_install_property (gobject_class, ARG_BAND6,
 
120
      g_param_spec_double ("band6", "1889 Hz",
 
121
          "gain for the frequency band 1889 Hz, ranging from -24 dB to +12 dB",
 
122
          -24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
 
123
  g_object_class_install_property (gobject_class, ARG_BAND7,
 
124
      g_param_spec_double ("band7", "3770 Hz",
 
125
          "gain for the frequency band 3770 Hz, ranging from -24 dB to +12 dB",
 
126
          -24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
 
127
  g_object_class_install_property (gobject_class, ARG_BAND8,
 
128
      g_param_spec_double ("band8", "7523 Hz",
 
129
          "gain for the frequency band 7523 Hz, ranging from -24 dB to +12 dB",
 
130
          -24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
 
131
  g_object_class_install_property (gobject_class, ARG_BAND9,
 
132
      g_param_spec_double ("band9", "15011 Hz",
 
133
          "gain for the frequency band 15011 Hz, ranging from -24 dB to +12 dB",
 
134
          -24.0, 12.0, 0.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
 
135
}
 
136
 
 
137
static void
 
138
gst_iir_equalizer_10bands_init (GstIirEqualizer10Bands * equ_n,
 
139
    GstIirEqualizer10BandsClass * g_class)
 
140
{
 
141
  GstIirEqualizer *equ = GST_IIR_EQUALIZER (equ_n);
 
142
 
 
143
  gst_iir_equalizer_compute_frequencies (equ, 10);
 
144
}
 
145
 
 
146
static void
 
147
gst_iir_equalizer_10bands_set_property (GObject * object, guint prop_id,
 
148
    const GValue * value, GParamSpec * pspec)
 
149
{
 
150
  GstIirEqualizer *equ = GST_IIR_EQUALIZER (object);
 
151
 
 
152
  switch (prop_id) {
 
153
    case ARG_BAND0:
 
154
      gst_child_proxy_set_property (GST_OBJECT (equ), "band0::gain", value);
 
155
      break;
 
156
    case ARG_BAND1:
 
157
      gst_child_proxy_set_property (GST_OBJECT (equ), "band1::gain", value);
 
158
      break;
 
159
    case ARG_BAND2:
 
160
      gst_child_proxy_set_property (GST_OBJECT (equ), "band2::gain", value);
 
161
      break;
 
162
    case ARG_BAND3:
 
163
      gst_child_proxy_set_property (GST_OBJECT (equ), "band3::gain", value);
 
164
      break;
 
165
    case ARG_BAND4:
 
166
      gst_child_proxy_set_property (GST_OBJECT (equ), "band4::gain", value);
 
167
      break;
 
168
    case ARG_BAND5:
 
169
      gst_child_proxy_set_property (GST_OBJECT (equ), "band5::gain", value);
 
170
      break;
 
171
    case ARG_BAND6:
 
172
      gst_child_proxy_set_property (GST_OBJECT (equ), "band6::gain", value);
 
173
      break;
 
174
    case ARG_BAND7:
 
175
      gst_child_proxy_set_property (GST_OBJECT (equ), "band7::gain", value);
 
176
      break;
 
177
    case ARG_BAND8:
 
178
      gst_child_proxy_set_property (GST_OBJECT (equ), "band8::gain", value);
 
179
      break;
 
180
    case ARG_BAND9:
 
181
      gst_child_proxy_set_property (GST_OBJECT (equ), "band9::gain", value);
 
182
      break;
 
183
    default:
 
184
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 
185
      break;
 
186
  }
 
187
}
 
188
 
 
189
static void
 
190
gst_iir_equalizer_10bands_get_property (GObject * object, guint prop_id,
 
191
    GValue * value, GParamSpec * pspec)
 
192
{
 
193
  GstIirEqualizer *equ = GST_IIR_EQUALIZER (object);
 
194
 
 
195
  switch (prop_id) {
 
196
    case ARG_BAND0:
 
197
      gst_child_proxy_get_property (GST_OBJECT (equ), "band0::gain", value);
 
198
      break;
 
199
    case ARG_BAND1:
 
200
      gst_child_proxy_get_property (GST_OBJECT (equ), "band1::gain", value);
 
201
      break;
 
202
    case ARG_BAND2:
 
203
      gst_child_proxy_get_property (GST_OBJECT (equ), "band2::gain", value);
 
204
      break;
 
205
    case ARG_BAND3:
 
206
      gst_child_proxy_get_property (GST_OBJECT (equ), "band3::gain", value);
 
207
      break;
 
208
    case ARG_BAND4:
 
209
      gst_child_proxy_get_property (GST_OBJECT (equ), "band4::gain", value);
 
210
      break;
 
211
    case ARG_BAND5:
 
212
      gst_child_proxy_get_property (GST_OBJECT (equ), "band5::gain", value);
 
213
      break;
 
214
    case ARG_BAND6:
 
215
      gst_child_proxy_get_property (GST_OBJECT (equ), "band6::gain", value);
 
216
      break;
 
217
    case ARG_BAND7:
 
218
      gst_child_proxy_get_property (GST_OBJECT (equ), "band7::gain", value);
 
219
      break;
 
220
    case ARG_BAND8:
 
221
      gst_child_proxy_get_property (GST_OBJECT (equ), "band8::gain", value);
 
222
      break;
 
223
    case ARG_BAND9:
 
224
      gst_child_proxy_get_property (GST_OBJECT (equ), "band9::gain", value);
 
225
      break;
 
226
    default:
 
227
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 
228
      break;
 
229
  }
 
230
}