"Fossies" - the Fresh Open Source Software Archive 
Member "gst-plugins-good-1.20.3/tests/check/elements/audiochebband.c" (15 Jun 2022, 54192 Bytes) of package /linux/misc/gst-plugins-good-1.20.3.tar.xz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "audiochebband.c" see the
Fossies "Dox" file reference documentation.
1 /* GStreamer
2 *
3 * Copyright (C) 2007 Sebastian Dröge <slomo@circular-chaos.org>
4 *
5 * audiochebband.c: Unit test for the audiochebband element
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public License
9 * as published by the Free Software Foundation; either version 2.1 of
10 * the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20 * 02110-1301 USA
21 */
22
23 #include <gst/gst.h>
24 #include <gst/base/gstbasetransform.h>
25 #include <gst/audio/audio.h>
26 #include <gst/check/gstcheck.h>
27
28 #include <math.h>
29
30 /* For ease of programming we use globals to keep refs for our floating
31 * src and sink pads we create; otherwise we always have to do get_pad,
32 * get_peer, and then remove references in every test function */
33 GstPad *mysrcpad, *mysinkpad;
34
35 #define BUFFER_CAPS_STRING_32 \
36 "audio/x-raw, " \
37 "channels = (int) 1, " \
38 "rate = (int) 44100, " \
39 "layout = (string) interleaved, " \
40 "format = (string) " GST_AUDIO_NE(F32)
41
42 #define BUFFER_CAPS_STRING_64 \
43 "audio/x-raw, " \
44 "channels = (int) 1, " \
45 "rate = (int) 44100, " \
46 "layout = (string) interleaved, " \
47 "format = (string) " GST_AUDIO_NE(F64)
48
49 static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
50 GST_PAD_SINK,
51 GST_PAD_ALWAYS,
52 GST_STATIC_CAPS ("audio/x-raw, "
53 "channels = (int) 1, "
54 "rate = (int) 44100, "
55 "layout = (string) interleaved, "
56 "format = (string) { "
57 GST_AUDIO_NE (F32) ", " GST_AUDIO_NE (F64) " }"));
58 static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
59 GST_PAD_SRC,
60 GST_PAD_ALWAYS,
61 GST_STATIC_CAPS ("audio/x-raw, "
62 "channels = (int) 1, "
63 "rate = (int) 44100, "
64 "layout = (string) interleaved, "
65 "format = (string) { "
66 GST_AUDIO_NE (F32) ", " GST_AUDIO_NE (F64) " }"));
67
68 static GstElement *
69 setup_audiochebband (void)
70 {
71 GstElement *audiochebband;
72
73 GST_DEBUG ("setup_audiochebband");
74 audiochebband = gst_check_setup_element ("audiochebband");
75 mysrcpad = gst_check_setup_src_pad (audiochebband, &srctemplate);
76 mysinkpad = gst_check_setup_sink_pad (audiochebband, &sinktemplate);
77 gst_pad_set_active (mysrcpad, TRUE);
78 gst_pad_set_active (mysinkpad, TRUE);
79
80 return audiochebband;
81 }
82
83 static void
84 cleanup_audiochebband (GstElement * audiochebband)
85 {
86 GST_DEBUG ("cleanup_audiochebband");
87
88 g_list_foreach (buffers, (GFunc) gst_mini_object_unref, NULL);
89 g_list_free (buffers);
90 buffers = NULL;
91
92 gst_pad_set_active (mysrcpad, FALSE);
93 gst_pad_set_active (mysinkpad, FALSE);
94 gst_check_teardown_src_pad (audiochebband);
95 gst_check_teardown_sink_pad (audiochebband);
96 gst_check_teardown_element (audiochebband);
97 }
98
99 /* Test if data containing only one frequency component
100 * at 0 is erased with bandpass mode and a
101 * 2000Hz frequency band around rate/4 */
102 GST_START_TEST (test_type1_32_bp_0hz)
103 {
104 GstElement *audiochebband;
105 GstBuffer *inbuffer, *outbuffer;
106 GstCaps *caps;
107 gfloat *in, *res, rms;
108 gint i;
109 GstMapInfo map;
110
111 audiochebband = setup_audiochebband ();
112 /* Set to bandpass */
113 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
114 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
115 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
116 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
117
118 fail_unless (gst_element_set_state (audiochebband,
119 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
120 "could not set to playing");
121
122 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
123 44100 / 4.0 - 1000, NULL);
124 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
125 44100 / 4.0 + 1000, NULL);
126 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
127 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
128 in = (gfloat *) map.data;
129 for (i = 0; i < 1024; i++)
130 in[i] = 1.0;
131 gst_buffer_unmap (inbuffer, &map);
132
133 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
134 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
135 gst_caps_unref (caps);
136 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
137
138 /* pushing gives away my reference ... */
139 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
140 /* ... and puts a new buffer on the global list */
141 fail_unless_equals_int (g_list_length (buffers), 1);
142 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
143
144 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
145 res = (gfloat *) map.data;
146
147 rms = 0.0;
148 for (i = 0; i < 1024; i++)
149 rms += res[i] * res[i];
150 rms = sqrt (rms / 1024.0);
151 fail_unless (rms <= 0.1);
152
153 gst_buffer_unmap (outbuffer, &map);
154
155 /* cleanup */
156 cleanup_audiochebband (audiochebband);
157 }
158
159 GST_END_TEST;
160
161 /* Test if data containing only one frequency component
162 * at band center is preserved with bandpass mode and a
163 * 2000Hz frequency band around rate/4 */
164 GST_START_TEST (test_type1_32_bp_11025hz)
165 {
166 GstElement *audiochebband;
167 GstBuffer *inbuffer, *outbuffer;
168 GstCaps *caps;
169 gfloat *in, *res, rms;
170 gint i;
171 GstMapInfo map;
172
173 audiochebband = setup_audiochebband ();
174 /* Set to bandpass */
175 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
176 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
177 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
178 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
179
180 fail_unless (gst_element_set_state (audiochebband,
181 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
182 "could not set to playing");
183
184 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
185 44100 / 4.0 - 1000, NULL);
186 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
187 44100 / 4.0 + 1000, NULL);
188 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
189 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
190 in = (gfloat *) map.data;
191 for (i = 0; i < 1024; i += 4) {
192 in[i] = 0.0;
193 in[i + 1] = 1.0;
194 in[i + 2] = 0.0;
195 in[i + 3] = -1.0;
196 }
197 gst_buffer_unmap (inbuffer, &map);
198
199 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
200 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
201 gst_caps_unref (caps);
202 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
203
204 /* pushing gives away my reference ... */
205 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
206 /* ... and puts a new buffer on the global list */
207 fail_unless_equals_int (g_list_length (buffers), 1);
208 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
209
210 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
211 res = (gfloat *) map.data;
212
213 rms = 0.0;
214 for (i = 0; i < 1024; i++)
215 rms += res[i] * res[i];
216 rms = sqrt (rms / 1024.0);
217 fail_unless (rms >= 0.6);
218
219 gst_buffer_unmap (outbuffer, &map);
220
221 /* cleanup */
222 cleanup_audiochebband (audiochebband);
223 }
224
225 GST_END_TEST;
226
227 /* Test if data containing only one frequency component
228 * at rate/2 is erased with bandpass mode and a
229 * 2000Hz frequency band around rate/4 */
230 GST_START_TEST (test_type1_32_bp_22050hz)
231 {
232 GstElement *audiochebband;
233 GstBuffer *inbuffer, *outbuffer;
234 GstCaps *caps;
235 gfloat *in, *res, rms;
236 gint i;
237 GstMapInfo map;
238
239 audiochebband = setup_audiochebband ();
240 /* Set to bandpass */
241 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
242 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
243 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
244 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
245
246 fail_unless (gst_element_set_state (audiochebband,
247 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
248 "could not set to playing");
249
250 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
251 44100 / 4.0 - 1000, NULL);
252 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
253 44100 / 4.0 + 1000, NULL);
254 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
255 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
256 in = (gfloat *) map.data;
257 for (i = 0; i < 1024; i += 2) {
258 in[i] = 1.0;
259 in[i + 1] = -1.0;
260 }
261 gst_buffer_unmap (inbuffer, &map);
262
263 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
264 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
265 gst_caps_unref (caps);
266 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
267
268 /* pushing gives away my reference ... */
269 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
270 /* ... and puts a new buffer on the global list */
271 fail_unless_equals_int (g_list_length (buffers), 1);
272 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
273
274 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
275 res = (gfloat *) map.data;
276
277 rms = 0.0;
278 for (i = 0; i < 1024; i++)
279 rms += res[i] * res[i];
280 rms = sqrt (rms / 1024.0);
281 fail_unless (rms <= 0.1);
282
283 gst_buffer_unmap (outbuffer, &map);
284
285 /* cleanup */
286 cleanup_audiochebband (audiochebband);
287 }
288
289 GST_END_TEST;
290
291 /* Test if data containing only one frequency component
292 * at 0 is preserved with bandreject mode and a
293 * 2000Hz frequency band around rate/4 */
294 GST_START_TEST (test_type1_32_br_0hz)
295 {
296 GstElement *audiochebband;
297 GstBuffer *inbuffer, *outbuffer;
298 GstCaps *caps;
299 gfloat *in, *res, rms;
300 gint i;
301 GstMapInfo map;
302
303 audiochebband = setup_audiochebband ();
304 /* Set to bandreject */
305 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
306 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
307 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
308 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
309
310 fail_unless (gst_element_set_state (audiochebband,
311 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
312 "could not set to playing");
313
314 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
315 44100 / 4.0 - 1000, NULL);
316 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
317 44100 / 4.0 + 1000, NULL);
318 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
319 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
320 in = (gfloat *) map.data;
321 for (i = 0; i < 1024; i++)
322 in[i] = 1.0;
323 gst_buffer_unmap (inbuffer, &map);
324
325 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
326 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
327 gst_caps_unref (caps);
328 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
329
330 /* pushing gives away my reference ... */
331 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
332 /* ... and puts a new buffer on the global list */
333 fail_unless_equals_int (g_list_length (buffers), 1);
334 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
335
336 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
337 res = (gfloat *) map.data;
338
339 rms = 0.0;
340 for (i = 0; i < 1024; i++)
341 rms += res[i] * res[i];
342 rms = sqrt (rms / 1024.0);
343 fail_unless (rms >= 0.9);
344
345 gst_buffer_unmap (outbuffer, &map);
346
347 /* cleanup */
348 cleanup_audiochebband (audiochebband);
349 }
350
351 GST_END_TEST;
352
353 /* Test if data containing only one frequency component
354 * at band center is erased with bandreject mode and a
355 * 2000Hz frequency band around rate/4 */
356 GST_START_TEST (test_type1_32_br_11025hz)
357 {
358 GstElement *audiochebband;
359 GstBuffer *inbuffer, *outbuffer;
360 GstCaps *caps;
361 gfloat *in, *res, rms;
362 gint i;
363 GstMapInfo map;
364
365 audiochebband = setup_audiochebband ();
366 /* Set to bandreject */
367 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
368 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
369 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
370 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
371
372 fail_unless (gst_element_set_state (audiochebband,
373 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
374 "could not set to playing");
375
376 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
377 44100 / 4.0 - 1000, NULL);
378 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
379 44100 / 4.0 + 1000, NULL);
380 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
381 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
382 in = (gfloat *) map.data;
383 for (i = 0; i < 1024; i += 4) {
384 in[i] = 0.0;
385 in[i + 1] = 1.0;
386 in[i + 2] = 0.0;
387 in[i + 3] = -1.0;
388 }
389 gst_buffer_unmap (inbuffer, &map);
390
391 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
392 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
393 gst_caps_unref (caps);
394 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
395
396 /* pushing gives away my reference ... */
397 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
398 /* ... and puts a new buffer on the global list */
399 fail_unless_equals_int (g_list_length (buffers), 1);
400 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
401
402 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
403 res = (gfloat *) map.data;
404
405 rms = 0.0;
406 for (i = 0; i < 1024; i++)
407 rms += res[i] * res[i];
408 rms = sqrt (rms / 1024.0);
409 fail_unless (rms <= 0.1);
410
411 gst_buffer_unmap (outbuffer, &map);
412
413 /* cleanup */
414 cleanup_audiochebband (audiochebband);
415 }
416
417 GST_END_TEST;
418
419 /* Test if data containing only one frequency component
420 * at rate/2 is preserved with bandreject mode and a
421 * 2000Hz frequency band around rate/4 */
422 GST_START_TEST (test_type1_32_br_22050hz)
423 {
424 GstElement *audiochebband;
425 GstBuffer *inbuffer, *outbuffer;
426 GstCaps *caps;
427 gfloat *in, *res, rms;
428 gint i;
429 GstMapInfo map;
430
431 audiochebband = setup_audiochebband ();
432 /* Set to bandreject */
433 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
434 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
435 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
436 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
437
438 fail_unless (gst_element_set_state (audiochebband,
439 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
440 "could not set to playing");
441
442 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
443 44100 / 4.0 - 1000, NULL);
444 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
445 44100 / 4.0 + 1000, NULL);
446 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
447 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
448 in = (gfloat *) map.data;
449 for (i = 0; i < 1024; i += 2) {
450 in[i] = 1.0;
451 in[i + 1] = -1.0;
452 }
453 gst_buffer_unmap (inbuffer, &map);
454
455 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
456 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
457 gst_caps_unref (caps);
458 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
459
460 /* pushing gives away my reference ... */
461 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
462 /* ... and puts a new buffer on the global list */
463 fail_unless_equals_int (g_list_length (buffers), 1);
464 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
465
466 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
467 res = (gfloat *) map.data;
468
469 rms = 0.0;
470 for (i = 0; i < 1024; i++)
471 rms += res[i] * res[i];
472 rms = sqrt (rms / 1024.0);
473 fail_unless (rms >= 0.9);
474
475 gst_buffer_unmap (outbuffer, &map);
476
477 /* cleanup */
478 cleanup_audiochebband (audiochebband);
479 }
480
481 GST_END_TEST;
482
483 /* Test if data containing only one frequency component
484 * at 0 is erased with bandpass mode and a
485 * 2000Hz frequency band around rate/4 */
486 GST_START_TEST (test_type1_64_bp_0hz)
487 {
488 GstElement *audiochebband;
489 GstBuffer *inbuffer, *outbuffer;
490 GstCaps *caps;
491 gdouble *in, *res, rms;
492 gint i;
493 GstMapInfo map;
494
495 audiochebband = setup_audiochebband ();
496 /* Set to bandpass */
497 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
498 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
499 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
500 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
501
502 fail_unless (gst_element_set_state (audiochebband,
503 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
504 "could not set to playing");
505
506 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
507 44100 / 4.0 - 1000, NULL);
508 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
509 44100 / 4.0 + 1000, NULL);
510 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
511 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
512 in = (gdouble *) map.data;
513 for (i = 0; i < 1024; i++)
514 in[i] = 1.0;
515 gst_buffer_unmap (inbuffer, &map);
516
517 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
518 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
519 gst_caps_unref (caps);
520 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
521
522 /* pushing gives away my reference ... */
523 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
524 /* ... and puts a new buffer on the global list */
525 fail_unless_equals_int (g_list_length (buffers), 1);
526 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
527
528 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
529 res = (gdouble *) map.data;
530
531 rms = 0.0;
532 for (i = 0; i < 1024; i++)
533 rms += res[i] * res[i];
534 rms = sqrt (rms / 1024.0);
535 fail_unless (rms <= 0.1);
536
537 gst_buffer_unmap (outbuffer, &map);
538
539 /* cleanup */
540 cleanup_audiochebband (audiochebband);
541 }
542
543 GST_END_TEST;
544
545 /* Test if data containing only one frequency component
546 * at band center is preserved with bandpass mode and a
547 * 2000Hz frequency band around rate/4 */
548 GST_START_TEST (test_type1_64_bp_11025hz)
549 {
550 GstElement *audiochebband;
551 GstBuffer *inbuffer, *outbuffer;
552 GstCaps *caps;
553 gdouble *in, *res, rms;
554 gint i;
555 GstMapInfo map;
556
557 audiochebband = setup_audiochebband ();
558 /* Set to bandpass */
559 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
560 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
561 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
562 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
563
564 fail_unless (gst_element_set_state (audiochebband,
565 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
566 "could not set to playing");
567
568 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
569 44100 / 4.0 - 1000, NULL);
570 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
571 44100 / 4.0 + 1000, NULL);
572 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
573 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
574 in = (gdouble *) map.data;
575 for (i = 0; i < 1024; i += 4) {
576 in[i] = 0.0;
577 in[i + 1] = 1.0;
578 in[i + 2] = 0.0;
579 in[i + 3] = -1.0;
580 }
581 gst_buffer_unmap (inbuffer, &map);
582
583 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
584 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
585 gst_caps_unref (caps);
586 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
587
588 /* pushing gives away my reference ... */
589 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
590 /* ... and puts a new buffer on the global list */
591 fail_unless_equals_int (g_list_length (buffers), 1);
592 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
593
594 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
595 res = (gdouble *) map.data;
596
597 rms = 0.0;
598 for (i = 0; i < 1024; i++)
599 rms += res[i] * res[i];
600 rms = sqrt (rms / 1024.0);
601 fail_unless (rms >= 0.6);
602
603 gst_buffer_unmap (outbuffer, &map);
604
605 /* cleanup */
606 cleanup_audiochebband (audiochebband);
607 }
608
609 GST_END_TEST;
610
611 /* Test if data containing only one frequency component
612 * at rate/2 is erased with bandpass mode and a
613 * 2000Hz frequency band around rate/4 */
614 GST_START_TEST (test_type1_64_bp_22050hz)
615 {
616 GstElement *audiochebband;
617 GstBuffer *inbuffer, *outbuffer;
618 GstCaps *caps;
619 gdouble *in, *res, rms;
620 gint i;
621 GstMapInfo map;
622
623 audiochebband = setup_audiochebband ();
624 /* Set to bandpass */
625 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
626 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
627 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
628 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
629
630 fail_unless (gst_element_set_state (audiochebband,
631 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
632 "could not set to playing");
633
634 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
635 44100 / 4.0 - 1000, NULL);
636 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
637 44100 / 4.0 + 1000, NULL);
638 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
639 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
640 in = (gdouble *) map.data;
641 for (i = 0; i < 1024; i += 2) {
642 in[i] = 1.0;
643 in[i + 1] = -1.0;
644 }
645 gst_buffer_unmap (inbuffer, &map);
646
647 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
648 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
649 gst_caps_unref (caps);
650 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
651
652 /* pushing gives away my reference ... */
653 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
654 /* ... and puts a new buffer on the global list */
655 fail_unless_equals_int (g_list_length (buffers), 1);
656 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
657
658 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
659 res = (gdouble *) map.data;
660
661 rms = 0.0;
662 for (i = 0; i < 1024; i++)
663 rms += res[i] * res[i];
664 rms = sqrt (rms / 1024.0);
665 fail_unless (rms <= 0.1);
666
667 gst_buffer_unmap (outbuffer, &map);
668
669 /* cleanup */
670 cleanup_audiochebband (audiochebband);
671 }
672
673 GST_END_TEST;
674
675 /* Test if data containing only one frequency component
676 * at 0 is preserved with bandreject mode and a
677 * 2000Hz frequency band around rate/4 */
678 GST_START_TEST (test_type1_64_br_0hz)
679 {
680 GstElement *audiochebband;
681 GstBuffer *inbuffer, *outbuffer;
682 GstCaps *caps;
683 gdouble *in, *res, rms;
684 gint i;
685 GstMapInfo map;
686
687 audiochebband = setup_audiochebband ();
688 /* Set to bandreject */
689 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
690 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
691 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
692 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
693
694 fail_unless (gst_element_set_state (audiochebband,
695 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
696 "could not set to playing");
697
698 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
699 44100 / 4.0 - 1000, NULL);
700 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
701 44100 / 4.0 + 1000, NULL);
702 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
703 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
704 in = (gdouble *) map.data;
705 for (i = 0; i < 1024; i++)
706 in[i] = 1.0;
707 gst_buffer_unmap (inbuffer, &map);
708
709 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
710 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
711 gst_caps_unref (caps);
712 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
713
714 /* pushing gives away my reference ... */
715 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
716 /* ... and puts a new buffer on the global list */
717 fail_unless_equals_int (g_list_length (buffers), 1);
718 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
719
720 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
721 res = (gdouble *) map.data;
722
723 rms = 0.0;
724 for (i = 0; i < 1024; i++)
725 rms += res[i] * res[i];
726 rms = sqrt (rms / 1024.0);
727 fail_unless (rms >= 0.9);
728
729 gst_buffer_unmap (outbuffer, &map);
730
731 /* cleanup */
732 cleanup_audiochebband (audiochebband);
733 }
734
735 GST_END_TEST;
736
737 /* Test if data containing only one frequency component
738 * at band center is erased with bandreject mode and a
739 * 2000Hz frequency band around rate/4 */
740 GST_START_TEST (test_type1_64_br_11025hz)
741 {
742 GstElement *audiochebband;
743 GstBuffer *inbuffer, *outbuffer;
744 GstCaps *caps;
745 gdouble *in, *res, rms;
746 gint i;
747 GstMapInfo map;
748
749 audiochebband = setup_audiochebband ();
750 /* Set to bandreject */
751 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
752 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
753 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
754 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
755
756 fail_unless (gst_element_set_state (audiochebband,
757 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
758 "could not set to playing");
759
760 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
761 44100 / 4.0 - 1000, NULL);
762 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
763 44100 / 4.0 + 1000, NULL);
764 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
765 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
766 in = (gdouble *) map.data;
767 for (i = 0; i < 1024; i += 4) {
768 in[i] = 0.0;
769 in[i + 1] = 1.0;
770 in[i + 2] = 0.0;
771 in[i + 3] = -1.0;
772 }
773 gst_buffer_unmap (inbuffer, &map);
774
775 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
776 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
777 gst_caps_unref (caps);
778 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
779
780 /* pushing gives away my reference ... */
781 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
782 /* ... and puts a new buffer on the global list */
783 fail_unless_equals_int (g_list_length (buffers), 1);
784 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
785
786 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
787 res = (gdouble *) map.data;
788
789 rms = 0.0;
790 for (i = 0; i < 1024; i++)
791 rms += res[i] * res[i];
792 rms = sqrt (rms / 1024.0);
793 fail_unless (rms <= 0.1);
794
795 gst_buffer_unmap (outbuffer, &map);
796
797 /* cleanup */
798 cleanup_audiochebband (audiochebband);
799 }
800
801 GST_END_TEST;
802
803 /* Test if data containing only one frequency component
804 * at rate/2 is preserved with bandreject mode and a
805 * 2000Hz frequency band around rate/4 */
806 GST_START_TEST (test_type1_64_br_22050hz)
807 {
808 GstElement *audiochebband;
809 GstBuffer *inbuffer, *outbuffer;
810 GstCaps *caps;
811 gdouble *in, *res, rms;
812 gint i;
813 GstMapInfo map;
814
815 audiochebband = setup_audiochebband ();
816 /* Set to bandreject */
817 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
818 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
819 g_object_set (G_OBJECT (audiochebband), "type", 1, NULL);
820 g_object_set (G_OBJECT (audiochebband), "ripple", 0.25, NULL);
821
822 fail_unless (gst_element_set_state (audiochebband,
823 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
824 "could not set to playing");
825
826 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
827 44100 / 4.0 - 1000, NULL);
828 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
829 44100 / 4.0 + 1000, NULL);
830 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
831 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
832 in = (gdouble *) map.data;
833 for (i = 0; i < 1024; i += 2) {
834 in[i] = 1.0;
835 in[i + 1] = -1.0;
836 }
837 gst_buffer_unmap (inbuffer, &map);
838
839 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
840 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
841 gst_caps_unref (caps);
842 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
843
844 /* pushing gives away my reference ... */
845 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
846 /* ... and puts a new buffer on the global list */
847 fail_unless_equals_int (g_list_length (buffers), 1);
848 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
849
850 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
851 res = (gdouble *) map.data;
852
853 rms = 0.0;
854 for (i = 0; i < 1024; i++)
855 rms += res[i] * res[i];
856 rms = sqrt (rms / 1024.0);
857 fail_unless (rms >= 0.9);
858
859 gst_buffer_unmap (outbuffer, &map);
860
861 /* cleanup */
862 cleanup_audiochebband (audiochebband);
863 }
864
865 GST_END_TEST;
866
867 /* Test if data containing only one frequency component
868 * at 0 is erased with bandpass mode and a
869 * 2000Hz frequency band around rate/4 */
870 GST_START_TEST (test_type2_32_bp_0hz)
871 {
872 GstElement *audiochebband;
873 GstBuffer *inbuffer, *outbuffer;
874 GstCaps *caps;
875 gfloat *in, *res, rms;
876 gint i;
877 GstMapInfo map;
878
879 audiochebband = setup_audiochebband ();
880 /* Set to bandpass */
881 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
882 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
883 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
884 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
885
886 fail_unless (gst_element_set_state (audiochebband,
887 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
888 "could not set to playing");
889
890 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
891 44100 / 4.0 - 1000, NULL);
892 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
893 44100 / 4.0 + 1000, NULL);
894 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
895 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
896 in = (gfloat *) map.data;
897 for (i = 0; i < 1024; i++)
898 in[i] = 1.0;
899 gst_buffer_unmap (inbuffer, &map);
900
901 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
902 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
903 gst_caps_unref (caps);
904 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
905
906 /* pushing gives away my reference ... */
907 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
908 /* ... and puts a new buffer on the global list */
909 fail_unless_equals_int (g_list_length (buffers), 1);
910 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
911
912 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
913 res = (gfloat *) map.data;
914
915 rms = 0.0;
916 for (i = 0; i < 1024; i++)
917 rms += res[i] * res[i];
918 rms = sqrt (rms / 1024.0);
919 fail_unless (rms <= 0.1);
920
921 gst_buffer_unmap (outbuffer, &map);
922
923 /* cleanup */
924 cleanup_audiochebband (audiochebband);
925 }
926
927 GST_END_TEST;
928
929 /* Test if data containing only one frequency component
930 * at band center is preserved with bandpass mode and a
931 * 2000Hz frequency band around rate/4 */
932 GST_START_TEST (test_type2_32_bp_11025hz)
933 {
934 GstElement *audiochebband;
935 GstBuffer *inbuffer, *outbuffer;
936 GstCaps *caps;
937 gfloat *in, *res, rms;
938 gint i;
939 GstMapInfo map;
940
941 audiochebband = setup_audiochebband ();
942 /* Set to bandpass */
943 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
944 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
945 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
946 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
947
948 fail_unless (gst_element_set_state (audiochebband,
949 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
950 "could not set to playing");
951
952 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
953 44100 / 4.0 - 1000, NULL);
954 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
955 44100 / 4.0 + 1000, NULL);
956 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
957 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
958 in = (gfloat *) map.data;
959 for (i = 0; i < 1024; i += 4) {
960 in[i] = 0.0;
961 in[i + 1] = 1.0;
962 in[i + 2] = 0.0;
963 in[i + 3] = -1.0;
964 }
965 gst_buffer_unmap (inbuffer, &map);
966
967 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
968 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
969 gst_caps_unref (caps);
970 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
971
972 /* pushing gives away my reference ... */
973 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
974 /* ... and puts a new buffer on the global list */
975 fail_unless_equals_int (g_list_length (buffers), 1);
976 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
977
978 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
979 res = (gfloat *) map.data;
980
981 rms = 0.0;
982 for (i = 0; i < 1024; i++)
983 rms += res[i] * res[i];
984 rms = sqrt (rms / 1024.0);
985 fail_unless (rms >= 0.6);
986
987 gst_buffer_unmap (outbuffer, &map);
988
989 /* cleanup */
990 cleanup_audiochebband (audiochebband);
991 }
992
993 GST_END_TEST;
994
995 /* Test if data containing only one frequency component
996 * at rate/2 is erased with bandpass mode and a
997 * 2000Hz frequency band around rate/4 */
998 GST_START_TEST (test_type2_32_bp_22050hz)
999 {
1000 GstElement *audiochebband;
1001 GstBuffer *inbuffer, *outbuffer;
1002 GstCaps *caps;
1003 gfloat *in, *res, rms;
1004 gint i;
1005 GstMapInfo map;
1006
1007 audiochebband = setup_audiochebband ();
1008 /* Set to bandpass */
1009 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
1010 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
1011 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
1012 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
1013
1014 fail_unless (gst_element_set_state (audiochebband,
1015 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1016 "could not set to playing");
1017
1018 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
1019 44100 / 4.0 - 1000, NULL);
1020 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
1021 44100 / 4.0 + 1000, NULL);
1022 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
1023 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
1024 in = (gfloat *) map.data;
1025 for (i = 0; i < 1024; i += 2) {
1026 in[i] = 1.0;
1027 in[i + 1] = -1.0;
1028 }
1029 gst_buffer_unmap (inbuffer, &map);
1030
1031 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
1032 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
1033 gst_caps_unref (caps);
1034 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1035
1036 /* pushing gives away my reference ... */
1037 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1038 /* ... and puts a new buffer on the global list */
1039 fail_unless_equals_int (g_list_length (buffers), 1);
1040 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1041
1042 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
1043 res = (gfloat *) map.data;
1044
1045 rms = 0.0;
1046 for (i = 0; i < 1024; i++)
1047 rms += res[i] * res[i];
1048 rms = sqrt (rms / 1024.0);
1049 fail_unless (rms <= 0.1);
1050
1051 gst_buffer_unmap (outbuffer, &map);
1052
1053 /* cleanup */
1054 cleanup_audiochebband (audiochebband);
1055 }
1056
1057 GST_END_TEST;
1058
1059 /* Test if data containing only one frequency component
1060 * at 0 is preserved with bandreject mode and a
1061 * 2000Hz frequency band around rate/4 */
1062 GST_START_TEST (test_type2_32_br_0hz)
1063 {
1064 GstElement *audiochebband;
1065 GstBuffer *inbuffer, *outbuffer;
1066 GstCaps *caps;
1067 gfloat *in, *res, rms;
1068 gint i;
1069 GstMapInfo map;
1070
1071 audiochebband = setup_audiochebband ();
1072 /* Set to bandreject */
1073 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
1074 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
1075 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
1076 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
1077
1078 fail_unless (gst_element_set_state (audiochebband,
1079 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1080 "could not set to playing");
1081
1082 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
1083 44100 / 4.0 - 1000, NULL);
1084 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
1085 44100 / 4.0 + 1000, NULL);
1086 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
1087 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
1088 in = (gfloat *) map.data;
1089 for (i = 0; i < 1024; i++)
1090 in[i] = 1.0;
1091 gst_buffer_unmap (inbuffer, &map);
1092
1093 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
1094 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
1095 gst_caps_unref (caps);
1096 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1097
1098 /* pushing gives away my reference ... */
1099 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1100 /* ... and puts a new buffer on the global list */
1101 fail_unless_equals_int (g_list_length (buffers), 1);
1102 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1103
1104 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
1105 res = (gfloat *) map.data;
1106
1107 rms = 0.0;
1108 for (i = 0; i < 1024; i++)
1109 rms += res[i] * res[i];
1110 rms = sqrt (rms / 1024.0);
1111 fail_unless (rms >= 0.9);
1112
1113 gst_buffer_unmap (outbuffer, &map);
1114
1115 /* cleanup */
1116 cleanup_audiochebband (audiochebband);
1117 }
1118
1119 GST_END_TEST;
1120
1121 /* Test if data containing only one frequency component
1122 * at band center is erased with bandreject mode and a
1123 * 2000Hz frequency band around rate/4 */
1124 GST_START_TEST (test_type2_32_br_11025hz)
1125 {
1126 GstElement *audiochebband;
1127 GstBuffer *inbuffer, *outbuffer;
1128 GstCaps *caps;
1129 gfloat *in, *res, rms;
1130 gint i;
1131 GstMapInfo map;
1132
1133 audiochebband = setup_audiochebband ();
1134 /* Set to bandreject */
1135 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
1136 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
1137 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
1138 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
1139
1140 fail_unless (gst_element_set_state (audiochebband,
1141 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1142 "could not set to playing");
1143
1144 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
1145 44100 / 4.0 - 1000, NULL);
1146 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
1147 44100 / 4.0 + 1000, NULL);
1148 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
1149 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
1150 in = (gfloat *) map.data;
1151 for (i = 0; i < 1024; i += 4) {
1152 in[i] = 0.0;
1153 in[i + 1] = 1.0;
1154 in[i + 2] = 0.0;
1155 in[i + 3] = -1.0;
1156 }
1157 gst_buffer_unmap (inbuffer, &map);
1158
1159 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
1160 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
1161 gst_caps_unref (caps);
1162 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1163
1164 /* pushing gives away my reference ... */
1165 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1166 /* ... and puts a new buffer on the global list */
1167 fail_unless_equals_int (g_list_length (buffers), 1);
1168 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1169
1170 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
1171 res = (gfloat *) map.data;
1172
1173 rms = 0.0;
1174 for (i = 0; i < 1024; i++)
1175 rms += res[i] * res[i];
1176 rms = sqrt (rms / 1024.0);
1177 fail_unless (rms <= 0.1);
1178
1179 gst_buffer_unmap (outbuffer, &map);
1180
1181 /* cleanup */
1182 cleanup_audiochebband (audiochebband);
1183 }
1184
1185 GST_END_TEST;
1186
1187 /* Test if data containing only one frequency component
1188 * at rate/2 is preserved with bandreject mode and a
1189 * 2000Hz frequency band around rate/4 */
1190 GST_START_TEST (test_type2_32_br_22050hz)
1191 {
1192 GstElement *audiochebband;
1193 GstBuffer *inbuffer, *outbuffer;
1194 GstCaps *caps;
1195 gfloat *in, *res, rms;
1196 gint i;
1197 GstMapInfo map;
1198
1199 audiochebband = setup_audiochebband ();
1200 /* Set to bandreject */
1201 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
1202 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
1203 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
1204 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
1205
1206 fail_unless (gst_element_set_state (audiochebband,
1207 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1208 "could not set to playing");
1209
1210 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
1211 44100 / 4.0 - 1000, NULL);
1212 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
1213 44100 / 4.0 + 1000, NULL);
1214 inbuffer = gst_buffer_new_allocate (NULL, 1024 * sizeof (gfloat), NULL);
1215 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
1216 in = (gfloat *) map.data;
1217 for (i = 0; i < 1024; i += 2) {
1218 in[i] = 1.0;
1219 in[i + 1] = -1.0;
1220 }
1221 gst_buffer_unmap (inbuffer, &map);
1222
1223 caps = gst_caps_from_string (BUFFER_CAPS_STRING_32);
1224 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
1225 gst_caps_unref (caps);
1226 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1227
1228 /* pushing gives away my reference ... */
1229 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1230 /* ... and puts a new buffer on the global list */
1231 fail_unless_equals_int (g_list_length (buffers), 1);
1232 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1233
1234 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
1235 res = (gfloat *) map.data;
1236
1237 rms = 0.0;
1238 for (i = 0; i < 1024; i++)
1239 rms += res[i] * res[i];
1240 rms = sqrt (rms / 1024.0);
1241 fail_unless (rms >= 0.9);
1242
1243 gst_buffer_unmap (outbuffer, &map);
1244
1245 /* cleanup */
1246 cleanup_audiochebband (audiochebband);
1247 }
1248
1249 GST_END_TEST;
1250
1251 /* Test if data containing only one frequency component
1252 * at 0 is erased with bandpass mode and a
1253 * 2000Hz frequency band around rate/4 */
1254 GST_START_TEST (test_type2_64_bp_0hz)
1255 {
1256 GstElement *audiochebband;
1257 GstBuffer *inbuffer, *outbuffer;
1258 GstCaps *caps;
1259 gdouble *in, *res, rms;
1260 gint i;
1261 GstMapInfo map;
1262
1263 audiochebband = setup_audiochebband ();
1264 /* Set to bandpass */
1265 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
1266 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
1267 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
1268 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
1269
1270 fail_unless (gst_element_set_state (audiochebband,
1271 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1272 "could not set to playing");
1273
1274 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
1275 44100 / 4.0 - 1000, NULL);
1276 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
1277 44100 / 4.0 + 1000, NULL);
1278 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
1279 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
1280 in = (gdouble *) map.data;
1281 for (i = 0; i < 1024; i++)
1282 in[i] = 1.0;
1283 gst_buffer_unmap (inbuffer, &map);
1284
1285 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
1286 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
1287 gst_caps_unref (caps);
1288 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1289
1290 /* pushing gives away my reference ... */
1291 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1292 /* ... and puts a new buffer on the global list */
1293 fail_unless_equals_int (g_list_length (buffers), 1);
1294 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1295
1296 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
1297 res = (gdouble *) map.data;
1298
1299 rms = 0.0;
1300 for (i = 0; i < 1024; i++)
1301 rms += res[i] * res[i];
1302 rms = sqrt (rms / 1024.0);
1303 fail_unless (rms <= 0.1);
1304
1305 gst_buffer_unmap (outbuffer, &map);
1306
1307 /* cleanup */
1308 cleanup_audiochebband (audiochebband);
1309 }
1310
1311 GST_END_TEST;
1312
1313 /* Test if data containing only one frequency component
1314 * at band center is preserved with bandpass mode and a
1315 * 2000Hz frequency band around rate/4 */
1316 GST_START_TEST (test_type2_64_bp_11025hz)
1317 {
1318 GstElement *audiochebband;
1319 GstBuffer *inbuffer, *outbuffer;
1320 GstCaps *caps;
1321 gdouble *in, *res, rms;
1322 gint i;
1323 GstMapInfo map;
1324
1325 audiochebband = setup_audiochebband ();
1326 /* Set to bandpass */
1327 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
1328 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
1329 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
1330 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
1331
1332 fail_unless (gst_element_set_state (audiochebband,
1333 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1334 "could not set to playing");
1335
1336 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
1337 44100 / 4.0 - 1000, NULL);
1338 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
1339 44100 / 4.0 + 1000, NULL);
1340 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
1341 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
1342 in = (gdouble *) map.data;
1343 for (i = 0; i < 1024; i += 4) {
1344 in[i] = 0.0;
1345 in[i + 1] = 1.0;
1346 in[i + 2] = 0.0;
1347 in[i + 3] = -1.0;
1348 }
1349 gst_buffer_unmap (inbuffer, &map);
1350
1351 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
1352 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
1353 gst_caps_unref (caps);
1354 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1355
1356 /* pushing gives away my reference ... */
1357 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1358 /* ... and puts a new buffer on the global list */
1359 fail_unless_equals_int (g_list_length (buffers), 1);
1360 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1361
1362 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
1363 res = (gdouble *) map.data;
1364
1365 rms = 0.0;
1366 for (i = 0; i < 1024; i++)
1367 rms += res[i] * res[i];
1368 rms = sqrt (rms / 1024.0);
1369 fail_unless (rms >= 0.6);
1370
1371 gst_buffer_unmap (outbuffer, &map);
1372
1373 /* cleanup */
1374 cleanup_audiochebband (audiochebband);
1375 }
1376
1377 GST_END_TEST;
1378
1379 /* Test if data containing only one frequency component
1380 * at rate/2 is erased with bandpass mode and a
1381 * 2000Hz frequency band around rate/4 */
1382 GST_START_TEST (test_type2_64_bp_22050hz)
1383 {
1384 GstElement *audiochebband;
1385 GstBuffer *inbuffer, *outbuffer;
1386 GstCaps *caps;
1387 gdouble *in, *res, rms;
1388 gint i;
1389 GstMapInfo map;
1390
1391 audiochebband = setup_audiochebband ();
1392 /* Set to bandpass */
1393 g_object_set (G_OBJECT (audiochebband), "mode", 0, NULL);
1394 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
1395 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
1396 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
1397
1398 fail_unless (gst_element_set_state (audiochebband,
1399 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1400 "could not set to playing");
1401
1402 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
1403 44100 / 4.0 - 1000, NULL);
1404 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
1405 44100 / 4.0 + 1000, NULL);
1406 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
1407 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
1408 in = (gdouble *) map.data;
1409 for (i = 0; i < 1024; i += 2) {
1410 in[i] = 1.0;
1411 in[i + 1] = -1.0;
1412 }
1413 gst_buffer_unmap (inbuffer, &map);
1414
1415 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
1416 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
1417 gst_caps_unref (caps);
1418 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1419
1420 /* pushing gives away my reference ... */
1421 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1422 /* ... and puts a new buffer on the global list */
1423 fail_unless_equals_int (g_list_length (buffers), 1);
1424 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1425
1426 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
1427 res = (gdouble *) map.data;
1428
1429 rms = 0.0;
1430 for (i = 0; i < 1024; i++)
1431 rms += res[i] * res[i];
1432 rms = sqrt (rms / 1024.0);
1433 fail_unless (rms <= 0.1);
1434
1435 gst_buffer_unmap (outbuffer, &map);
1436
1437 /* cleanup */
1438 cleanup_audiochebband (audiochebband);
1439 }
1440
1441 GST_END_TEST;
1442
1443 /* Test if data containing only one frequency component
1444 * at 0 is preserved with bandreject mode and a
1445 * 2000Hz frequency band around rate/4 */
1446 GST_START_TEST (test_type2_64_br_0hz)
1447 {
1448 GstElement *audiochebband;
1449 GstBuffer *inbuffer, *outbuffer;
1450 GstCaps *caps;
1451 gdouble *in, *res, rms;
1452 gint i;
1453 GstMapInfo map;
1454
1455 audiochebband = setup_audiochebband ();
1456 /* Set to bandreject */
1457 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
1458 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
1459 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
1460 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
1461
1462 fail_unless (gst_element_set_state (audiochebband,
1463 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1464 "could not set to playing");
1465
1466 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
1467 44100 / 4.0 - 1000, NULL);
1468 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
1469 44100 / 4.0 + 1000, NULL);
1470 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
1471 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
1472 in = (gdouble *) map.data;
1473 for (i = 0; i < 1024; i++)
1474 in[i] = 1.0;
1475 gst_buffer_unmap (inbuffer, &map);
1476
1477 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
1478 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
1479 gst_caps_unref (caps);
1480 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1481
1482 /* pushing gives away my reference ... */
1483 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1484 /* ... and puts a new buffer on the global list */
1485 fail_unless_equals_int (g_list_length (buffers), 1);
1486 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1487
1488 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
1489 res = (gdouble *) map.data;
1490
1491 rms = 0.0;
1492 for (i = 0; i < 1024; i++)
1493 rms += res[i] * res[i];
1494 rms = sqrt (rms / 1024.0);
1495 fail_unless (rms >= 0.9);
1496
1497 gst_buffer_unmap (outbuffer, &map);
1498
1499 /* cleanup */
1500 cleanup_audiochebband (audiochebband);
1501 }
1502
1503 GST_END_TEST;
1504
1505 /* Test if data containing only one frequency component
1506 * at band center is erased with bandreject mode and a
1507 * 2000Hz frequency band around rate/4 */
1508 GST_START_TEST (test_type2_64_br_11025hz)
1509 {
1510 GstElement *audiochebband;
1511 GstBuffer *inbuffer, *outbuffer;
1512 GstCaps *caps;
1513 gdouble *in, *res, rms;
1514 gint i;
1515 GstMapInfo map;
1516
1517 audiochebband = setup_audiochebband ();
1518 /* Set to bandreject */
1519 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
1520 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
1521 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
1522 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
1523
1524 fail_unless (gst_element_set_state (audiochebband,
1525 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1526 "could not set to playing");
1527
1528 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
1529 44100 / 4.0 - 1000, NULL);
1530 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
1531 44100 / 4.0 + 1000, NULL);
1532 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
1533 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
1534 in = (gdouble *) map.data;
1535 for (i = 0; i < 1024; i += 4) {
1536 in[i] = 0.0;
1537 in[i + 1] = 1.0;
1538 in[i + 2] = 0.0;
1539 in[i + 3] = -1.0;
1540 }
1541 gst_buffer_unmap (inbuffer, &map);
1542
1543 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
1544 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
1545 gst_caps_unref (caps);
1546 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1547
1548 /* pushing gives away my reference ... */
1549 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1550 /* ... and puts a new buffer on the global list */
1551 fail_unless_equals_int (g_list_length (buffers), 1);
1552 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1553
1554 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
1555 res = (gdouble *) map.data;
1556
1557 rms = 0.0;
1558 for (i = 0; i < 1024; i++)
1559 rms += res[i] * res[i];
1560 rms = sqrt (rms / 1024.0);
1561 fail_unless (rms <= 0.1);
1562
1563 gst_buffer_unmap (outbuffer, &map);
1564
1565 /* cleanup */
1566 cleanup_audiochebband (audiochebband);
1567 }
1568
1569 GST_END_TEST;
1570
1571 /* Test if data containing only one frequency component
1572 * at rate/2 is preserved with bandreject mode and a
1573 * 2000Hz frequency band around rate/4 */
1574 GST_START_TEST (test_type2_64_br_22050hz)
1575 {
1576 GstElement *audiochebband;
1577 GstBuffer *inbuffer, *outbuffer;
1578 GstCaps *caps;
1579 gdouble *in, *res, rms;
1580 gint i;
1581 GstMapInfo map;
1582
1583 audiochebband = setup_audiochebband ();
1584 /* Set to bandreject */
1585 g_object_set (G_OBJECT (audiochebband), "mode", 1, NULL);
1586 g_object_set (G_OBJECT (audiochebband), "poles", 8, NULL);
1587 g_object_set (G_OBJECT (audiochebband), "type", 2, NULL);
1588 g_object_set (G_OBJECT (audiochebband), "ripple", 40.0, NULL);
1589
1590 fail_unless (gst_element_set_state (audiochebband,
1591 GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
1592 "could not set to playing");
1593
1594 g_object_set (G_OBJECT (audiochebband), "lower-frequency",
1595 44100 / 4.0 - 1000, NULL);
1596 g_object_set (G_OBJECT (audiochebband), "upper-frequency",
1597 44100 / 4.0 + 1000, NULL);
1598 inbuffer = gst_buffer_new_and_alloc (1024 * sizeof (gdouble));
1599 gst_buffer_map (inbuffer, &map, GST_MAP_WRITE);
1600 in = (gdouble *) map.data;
1601 for (i = 0; i < 1024; i += 2) {
1602 in[i] = 1.0;
1603 in[i + 1] = -1.0;
1604 }
1605 gst_buffer_unmap (inbuffer, &map);
1606
1607 caps = gst_caps_from_string (BUFFER_CAPS_STRING_64);
1608 gst_check_setup_events (mysrcpad, audiochebband, caps, GST_FORMAT_TIME);
1609 gst_caps_unref (caps);
1610 ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
1611
1612 /* pushing gives away my reference ... */
1613 fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
1614 /* ... and puts a new buffer on the global list */
1615 fail_unless_equals_int (g_list_length (buffers), 1);
1616 fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL);
1617
1618 gst_buffer_map (outbuffer, &map, GST_MAP_READ);
1619 res = (gdouble *) map.data;
1620
1621 rms = 0.0;
1622 for (i = 0; i < 1024; i++)
1623 rms += res[i] * res[i];
1624 rms = sqrt (rms / 1024.0);
1625 fail_unless (rms >= 0.9);
1626
1627 gst_buffer_unmap (outbuffer, &map);
1628
1629 /* cleanup */
1630 cleanup_audiochebband (audiochebband);
1631 }
1632
1633 GST_END_TEST;
1634
1635 static Suite *
1636 audiochebband_suite (void)
1637 {
1638 Suite *s = suite_create ("audiochebband");
1639 TCase *tc_chain = tcase_create ("general");
1640
1641 suite_add_tcase (s, tc_chain);
1642 tcase_add_test (tc_chain, test_type1_32_bp_0hz);
1643 tcase_add_test (tc_chain, test_type1_32_bp_11025hz);
1644 tcase_add_test (tc_chain, test_type1_32_bp_22050hz);
1645 tcase_add_test (tc_chain, test_type1_32_br_0hz);
1646 tcase_add_test (tc_chain, test_type1_32_br_11025hz);
1647 tcase_add_test (tc_chain, test_type1_32_br_22050hz);
1648 tcase_add_test (tc_chain, test_type1_64_bp_0hz);
1649 tcase_add_test (tc_chain, test_type1_64_bp_11025hz);
1650 tcase_add_test (tc_chain, test_type1_64_bp_22050hz);
1651 tcase_add_test (tc_chain, test_type1_64_br_0hz);
1652 tcase_add_test (tc_chain, test_type1_64_br_11025hz);
1653 tcase_add_test (tc_chain, test_type1_64_br_22050hz);
1654 tcase_add_test (tc_chain, test_type2_32_bp_0hz);
1655 tcase_add_test (tc_chain, test_type2_32_bp_11025hz);
1656 tcase_add_test (tc_chain, test_type2_32_bp_22050hz);
1657 tcase_add_test (tc_chain, test_type2_32_br_0hz);
1658 tcase_add_test (tc_chain, test_type2_32_br_11025hz);
1659 tcase_add_test (tc_chain, test_type2_32_br_22050hz);
1660 tcase_add_test (tc_chain, test_type2_64_bp_0hz);
1661 tcase_add_test (tc_chain, test_type2_64_bp_11025hz);
1662 tcase_add_test (tc_chain, test_type2_64_bp_22050hz);
1663 tcase_add_test (tc_chain, test_type2_64_br_0hz);
1664 tcase_add_test (tc_chain, test_type2_64_br_11025hz);
1665 tcase_add_test (tc_chain, test_type2_64_br_22050hz);
1666
1667 return s;
1668 }
1669
1670 GST_CHECK_MAIN (audiochebband);