annotate Plugins/Visualization/paranormal/pn/pnaudiodata.c @ 1591:02841f72b897 trunk

[svn] Cast variable to proper type before passing it into libxml2. Include necessary header to make this possible. Resolves 35 pointer signedness warnings on PPC.
author chainsaw
date Thu, 24 Aug 2006 11:40:00 -0700
parents 0c5fdcf3f947
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
1 /* Paranormal - A highly customizable audio visualization library
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
2 * Copyright (C) 2001 Jamie Gennis <jgennis@mindspring.com>
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
3 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
4 * This library is free software; you can redistribute it and/or
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
5 * modify it under the terms of the GNU Library General Public
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
6 * License as published by the Free Software Foundation; either
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
7 * version 2 of the License, or (at your option) any later version.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
8 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
9 * This library is distributed in the hope that it will be useful,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
12 * Library General Public License for more details.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
13 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
14 * You should have received a copy of the GNU Library General Public
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
15 * License along with this library; if not, write to the Free
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
17 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
18
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
19 #include <math.h>
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
20
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
21 #include <config.h>
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
22 #include "pnaudiodata.h"
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
23
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
24 /* Initialization */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
25 static void pn_audio_data_class_init (PnAudioDataClass *class);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
26 static void pn_audio_data_init (PnAudioData *audio_data,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
27 PnAudioDataClass *class);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
28
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
29 static GObjectClass *parent_class = NULL;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
30
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
31 GType
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
32 pn_audio_data_get_type (void)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
33 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
34 static GType audio_data_type = 0;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
35
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
36 if (! audio_data_type)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
37 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
38 static const GTypeInfo audio_data_info =
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
39 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
40 sizeof (PnAudioDataClass),
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
41 NULL, /* base_init */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
42 NULL, /* base_finalize */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
43 (GClassInitFunc) pn_audio_data_class_init,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
44 NULL, /* class_finalize */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
45 NULL, /* class_data */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
46 sizeof (PnAudioData),
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
47 0, /* n_preallocs */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
48 (GInstanceInitFunc) pn_audio_data_init
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
49 };
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
50
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
51 /* FIXME: should this be dynamic? */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
52 audio_data_type = g_type_register_static (PN_TYPE_OBJECT,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
53 "PnAudioData",
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
54 &audio_data_info,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
55 0);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
56 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
57 return audio_data_type;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
58 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
59
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
60 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
61 pn_audio_data_class_init (PnAudioDataClass *class)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
62 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
63 GObjectClass *gobject_class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
64 PnObjectClass *object_class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
65
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
66 gobject_class = (GObjectClass *) class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
67 object_class = (PnObjectClass *) class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
68
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
69 parent_class = g_type_class_peek_parent (class);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
70 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
71
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
72 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
73 pn_audio_data_init (PnAudioData *audio_data, PnAudioDataClass *class)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
74 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
75 audio_data->stereo = TRUE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
76
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
77 /* Initialize with a 1-sample and 1-band pcm_ and freq_data, respecitvely */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
78 audio_data->pcm_samples = 1;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
79 audio_data->pcm_data[0] = g_new0 (gfloat, 1);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
80 audio_data->pcm_data[1] = g_new0 (gfloat, 1);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
81 audio_data->pcm_data[2] = g_new0 (gfloat, 1);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
82
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
83 audio_data->freq_bands = 1;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
84 audio_data->freq_data[0] = g_new0 (gfloat, 1);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
85 audio_data->freq_data[1] = g_new0 (gfloat, 1);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
86 audio_data->freq_data[2] = g_new0 (gfloat, 1);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
87 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
88
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
89 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
90 * pn_audio_data_new
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
91 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
92 * Creates a new #PnAudioData object.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
93 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
94 * Returns: The new #PnAudioData object
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
95 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
96 PnAudioData*
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
97 pn_audio_data_new (void)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
98 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
99 return (PnAudioData *) g_object_new (PN_TYPE_AUDIO_DATA, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
100 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
101
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
102 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
103 * pn_audio_data_set_stereo
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
104 * @audio_data: a #PnAudioData
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
105 * @stereo: TRUE or FALSE
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
106 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
107 * Sets whether @audio_data will use stereo audio data. If
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
108 * stereo is %FALSE, each channel buffer points to the same memory
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
109 * location; otherwise they are separate buffers.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
110 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
111 void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
112 pn_audio_data_set_stereo (PnAudioData *audio_data, gboolean stereo)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
113 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
114 gboolean changed;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
115
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
116 g_return_if_fail (audio_data != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
117 g_return_if_fail (PN_IS_AUDIO_DATA (audio_data));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
118
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
119 changed = audio_data->stereo == stereo ? TRUE : FALSE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
120 audio_data->stereo = stereo;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
121
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
122 if (changed)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
123 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
124 pn_audio_data_set_pcm_samples (audio_data, audio_data->pcm_samples);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
125 pn_audio_data_set_freq_bands (audio_data, audio_data->freq_bands);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
126 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
127 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
128
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
129 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
130 * pn_audio_data_get_stereo
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
131 * @audio_data: a #PnAudioData
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
132 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
133 * Retrieves the whether or not @audio_data contains stereo audio data
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
134 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
135 * Returns: %TRUE if it contains stereo data, %FALSE otherwise
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
136 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
137 gboolean
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
138 pn_audio_data_get_stereo (PnAudioData *audio_data)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
139 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
140 g_return_val_if_fail (audio_data != NULL, FALSE);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
141 g_return_val_if_fail (PN_IS_AUDIO_DATA (audio_data), FALSE);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
142
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
143 return audio_data->stereo;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
144 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
145
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
146 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
147 * pn_audio_data_set_pcm_samples
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
148 * @audio_data: a #PnAudioData
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
149 * @samples: the number of samples
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
150 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
151 * Sets the number of samples that @audio_data's pcm data
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
152 * contains.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
153 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
154 void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
155 pn_audio_data_set_pcm_samples (PnAudioData *audio_data, guint samples)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
156 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
157 g_return_if_fail (audio_data != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
158 g_return_if_fail (PN_IS_AUDIO_DATA (audio_data));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
159 g_return_if_fail (samples > 0);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
160
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
161 if (audio_data->pcm_data[0])
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
162 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
163 g_free (audio_data->pcm_data[0]);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
164 if (audio_data->stereo)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
165 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
166 g_free (audio_data->pcm_data[1]);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
167 g_free (audio_data->pcm_data[2]);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
168 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
169 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
170
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
171 audio_data->pcm_samples = samples;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
172 audio_data->pcm_data[0] = g_new0 (gfloat, samples);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
173 if (audio_data->stereo)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
174 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
175 audio_data->pcm_data[1] = g_new0 (gfloat, samples);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
176 audio_data->pcm_data[2] = g_new0 (gfloat, samples);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
177 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
178 else
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
179 audio_data->pcm_data[1] = audio_data->pcm_data[2] = audio_data->pcm_data[0];
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
180 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
181
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
182 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
183 * pn_audio_data_get_pcm_samples
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
184 * @audio_data: a #PnAudioData
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
185 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
186 * Retrieves the number of samples that @audio_data's pcm data
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
187 * contains
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
188 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
189 * Returns: The number of samples
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
190 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
191 guint
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
192 pn_audio_data_get_pcm_samples (PnAudioData *audio_data)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
193 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
194 g_return_val_if_fail (audio_data != NULL, 0);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
195 g_return_val_if_fail (PN_IS_AUDIO_DATA (audio_data), 0);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
196
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
197 return audio_data->pcm_samples;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
198 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
199
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
200 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
201 * pn_audio_data_set_freq_bands
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
202 * @audio_data: a #PnAudioData
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
203 * @bands: the number of bands
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
204 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
205 * Sets the number of bands that @audio_data's frequency data
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
206 * contains.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
207 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
208 void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
209 pn_audio_data_set_freq_bands (PnAudioData *audio_data, guint bands)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
210 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
211 g_return_if_fail (audio_data != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
212 g_return_if_fail (PN_IS_AUDIO_DATA (audio_data));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
213 g_return_if_fail (bands > 0);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
214
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
215
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
216 if (audio_data->freq_data[0])
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
217 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
218 g_free (audio_data->freq_data[0]);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
219 if (audio_data->stereo)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
220 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
221 g_free (audio_data->freq_data[1]);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
222 g_free (audio_data->freq_data[2]);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
223 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
224 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
225
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
226 audio_data->freq_bands = bands;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
227 audio_data->freq_data[0] = g_new0 (gfloat, bands);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
228 if (audio_data->stereo)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
229 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
230 audio_data->freq_data[1] = g_new0 (gfloat, bands);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
231 audio_data->freq_data[2] = g_new0 (gfloat, bands);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
232 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
233 else
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
234 audio_data->freq_data[1] = audio_data->freq_data[2] = audio_data->freq_data[0];
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
235 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
236
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
237 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
238 * pn_audio_data_get_freq_bands
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
239 * @audio_data: a #PnAudioData
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
240 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
241 * Retrieves the number of bands that @audio_data's frequency data
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
242 * contains
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
243 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
244 * Returns: The number of bands
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
245 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
246 guint
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
247 pn_audio_data_get_freq_bands (PnAudioData *audio_data)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
248 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
249 g_return_val_if_fail (audio_data != NULL, 0);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
250 g_return_val_if_fail (PN_IS_AUDIO_DATA (audio_data), 0);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
251
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
252 return audio_data->freq_bands;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
253 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
254
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
255 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
256 * pn_audio_data_get_volume
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
257 * @audio_data: a #PnAudioData
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
258 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
259 * Retrieves the volume level (from 0.0 to 1.0) of the audio frame
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
260 * contained within a #PnAudioData object.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
261 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
262 * Returns: The volume level
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
263 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
264 gfloat
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
265 pn_audio_data_get_volume (PnAudioData *audio_data)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
266 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
267 g_return_val_if_fail (audio_data != NULL, 0.0);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
268 g_return_val_if_fail (PN_IS_AUDIO_DATA (audio_data), 0.0);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
269
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
270 return audio_data->volume;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
271 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
272
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
273 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
274 * pn_audio_data_update
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
275 * @audio_data: a #PnAudioData
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
276 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
277 * Updates the information about the audio data frame in a #PnAudioData.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
278 * This function should be called after all updates to pcm_data or freq_data.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
279 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
280 void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
281 pn_audio_data_update (PnAudioData *audio_data)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
282 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
283 guint i;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
284
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
285 g_return_if_fail (audio_data != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
286 g_return_if_fail (PN_IS_AUDIO_DATA (audio_data));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
287
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
288 /* Get the volume */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
289 audio_data->volume = 0.0;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
290 for (i=0; i<audio_data->pcm_samples; i++)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
291 audio_data->volume = MAX (audio_data->volume, fabs (audio_data->pcm_data[PN_CHANNEL_LEFT][i]));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
292 }