PulseAudio
3.0.0-7.1.mga3
Main Page
Related Pages
Data Structures
Files
Examples
File List
Globals
volume.h
Go to the documentation of this file.
1
#ifndef foovolumehfoo
2
#define foovolumehfoo
3
4
/***
5
This file is part of PulseAudio.
6
7
Copyright 2004-2006 Lennart Poettering
8
Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
9
10
PulseAudio is free software; you can redistribute it and/or modify
11
it under the terms of the GNU Lesser General Public License as published
12
by the Free Software Foundation; either version 2.1 of the License,
13
or (at your option) any later version.
14
15
PulseAudio is distributed in the hope that it will be useful, but
16
WITHOUT ANY WARRANTY; without even the implied warranty of
17
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
General Public License for more details.
19
20
You should have received a copy of the GNU Lesser General Public License
21
along with PulseAudio; if not, write to the Free Software
22
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
23
USA.
24
***/
25
26
#include <inttypes.h>
27
#include <limits.h>
28
29
#include <pulse/cdecl.h>
30
#include <
pulse/gccmacro.h
>
31
#include <
pulse/sample.h
>
32
#include <
pulse/channelmap.h
>
33
#include <
pulse/version.h
>
34
100
PA_C_DECL_BEGIN
101
107
typedef
uint32_t
pa_volume_t
;
108
110
#define PA_VOLUME_NORM ((pa_volume_t) 0x10000U)
111
113
#define PA_VOLUME_MUTED ((pa_volume_t) 0U)
114
116
#define PA_VOLUME_MAX ((pa_volume_t) UINT32_MAX/2)
117
123
#define PA_VOLUME_UI_MAX (pa_sw_volume_from_dB(+11.0))
124
126
#define PA_VOLUME_INVALID ((pa_volume_t) UINT32_MAX)
127
129
#define PA_VOLUME_IS_VALID(v) ((v) <= PA_VOLUME_MAX)
130
132
#define PA_CLAMP_VOLUME(v) (PA_CLAMP_UNLIKELY((v), PA_VOLUME_MUTED, PA_VOLUME_MAX))
133
135
typedef
struct
pa_cvolume
{
136
uint8_t
channels
;
137
pa_volume_t
values
[
PA_CHANNELS_MAX
];
138
}
pa_cvolume
;
139
141
int
pa_cvolume_equal
(
const
pa_cvolume
*a,
const
pa_cvolume
*b)
PA_GCC_PURE
;
142
146
pa_cvolume
*
pa_cvolume_init
(
pa_cvolume
*a);
147
149
#define pa_cvolume_reset(a, n) pa_cvolume_set((a), (n), PA_VOLUME_NORM)
150
152
#define pa_cvolume_mute(a, n) pa_cvolume_set((a), (n), PA_VOLUME_MUTED)
153
155
pa_cvolume
*
pa_cvolume_set
(
pa_cvolume
*a,
unsigned
channels,
pa_volume_t
v);
156
162
#define PA_CVOLUME_SNPRINT_MAX 320
163
165
char
*
pa_cvolume_snprint
(
char
*s,
size_t
l,
const
pa_cvolume
*c);
166
172
#define PA_SW_CVOLUME_SNPRINT_DB_MAX 448
173
175
char
*
pa_sw_cvolume_snprint_dB
(
char
*s,
size_t
l,
const
pa_cvolume
*c);
176
182
#define PA_VOLUME_SNPRINT_MAX 10
183
185
char
*
pa_volume_snprint
(
char
*s,
size_t
l,
pa_volume_t
v);
186
192
#define PA_SW_VOLUME_SNPRINT_DB_MAX 10
193
195
char
*
pa_sw_volume_snprint_dB
(
char
*s,
size_t
l,
pa_volume_t
v);
196
198
pa_volume_t
pa_cvolume_avg
(
const
pa_cvolume
*a)
PA_GCC_PURE
;
199
205
pa_volume_t
pa_cvolume_avg_mask
(
const
pa_cvolume
*a,
const
pa_channel_map
*cm,
pa_channel_position_mask_t
mask)
PA_GCC_PURE
;
206
208
pa_volume_t
pa_cvolume_max
(
const
pa_cvolume
*a)
PA_GCC_PURE
;
209
215
pa_volume_t
pa_cvolume_max_mask
(
const
pa_cvolume
*a,
const
pa_channel_map
*cm,
pa_channel_position_mask_t
mask)
PA_GCC_PURE
;
216
218
pa_volume_t
pa_cvolume_min
(
const
pa_cvolume
*a)
PA_GCC_PURE
;
219
225
pa_volume_t
pa_cvolume_min_mask
(
const
pa_cvolume
*a,
const
pa_channel_map
*cm,
pa_channel_position_mask_t
mask)
PA_GCC_PURE
;
226
228
int
pa_cvolume_valid
(
const
pa_cvolume
*v)
PA_GCC_PURE
;
229
231
int
pa_cvolume_channels_equal_to
(
const
pa_cvolume
*a,
pa_volume_t
v)
PA_GCC_PURE
;
232
234
#define pa_cvolume_is_muted(a) pa_cvolume_channels_equal_to((a), PA_VOLUME_MUTED)
235
237
#define pa_cvolume_is_norm(a) pa_cvolume_channels_equal_to((a), PA_VOLUME_NORM)
238
242
pa_volume_t
pa_sw_volume_multiply
(
pa_volume_t
a,
pa_volume_t
b)
PA_GCC_CONST
;
243
247
pa_cvolume
*
pa_sw_cvolume_multiply
(
pa_cvolume
*dest,
const
pa_cvolume
*a,
const
pa_cvolume
*b);
248
253
pa_cvolume
*
pa_sw_cvolume_multiply_scalar
(
pa_cvolume
*dest,
const
pa_cvolume
*a,
pa_volume_t
b);
254
259
pa_volume_t
pa_sw_volume_divide
(
pa_volume_t
a,
pa_volume_t
b)
PA_GCC_CONST
;
260
264
pa_cvolume
*
pa_sw_cvolume_divide
(
pa_cvolume
*dest,
const
pa_cvolume
*a,
const
pa_cvolume
*b);
265
270
pa_cvolume
*
pa_sw_cvolume_divide_scalar
(
pa_cvolume
*dest,
const
pa_cvolume
*a,
pa_volume_t
b);
271
273
pa_volume_t
pa_sw_volume_from_dB
(
double
f)
PA_GCC_CONST
;
274
276
double
pa_sw_volume_to_dB
(
pa_volume_t
v)
PA_GCC_CONST
;
277
280
pa_volume_t
pa_sw_volume_from_linear
(
double
v)
PA_GCC_CONST
;
281
283
double
pa_sw_volume_to_linear
(
pa_volume_t
v)
PA_GCC_CONST
;
284
285
#ifdef INFINITY
286
#define PA_DECIBEL_MININFTY ((double) -INFINITY)
287
#else
288
289
#define PA_DECIBEL_MININFTY ((double) -200.0)
290
#endif
291
293
pa_cvolume
*
pa_cvolume_remap
(
pa_cvolume
*v,
const
pa_channel_map
*from,
const
pa_channel_map
*to);
294
297
int
pa_cvolume_compatible
(
const
pa_cvolume
*v,
const
pa_sample_spec
*ss)
PA_GCC_PURE
;
298
301
int
pa_cvolume_compatible_with_channel_map
(
const
pa_cvolume
*v,
const
pa_channel_map
*cm)
PA_GCC_PURE
;
302
308
float
pa_cvolume_get_balance
(
const
pa_cvolume
*v,
const
pa_channel_map
*map)
PA_GCC_PURE
;
309
319
pa_cvolume
*
pa_cvolume_set_balance
(
pa_cvolume
*v,
const
pa_channel_map
*map,
float
new_balance);
320
326
float
pa_cvolume_get_fade
(
const
pa_cvolume
*v,
const
pa_channel_map
*map)
PA_GCC_PURE
;
327
337
pa_cvolume
*
pa_cvolume_set_fade
(
pa_cvolume
*v,
const
pa_channel_map
*map,
float
new_fade);
338
342
pa_cvolume
*
pa_cvolume_scale
(
pa_cvolume
*v,
pa_volume_t
max);
343
348
pa_cvolume
*
pa_cvolume_scale_mask
(
pa_cvolume
*v,
pa_volume_t
max,
pa_channel_map
*cm,
pa_channel_position_mask_t
mask);
349
355
pa_cvolume
*
pa_cvolume_set_position
(
pa_cvolume
*cv,
const
pa_channel_map
*map,
pa_channel_position_t
t,
pa_volume_t
v);
356
361
pa_volume_t
pa_cvolume_get_position
(
pa_cvolume
*cv,
const
pa_channel_map
*map,
pa_channel_position_t
t)
PA_GCC_PURE
;
362
366
pa_cvolume
*
pa_cvolume_merge
(
pa_cvolume
*dest,
const
pa_cvolume
*a,
const
pa_cvolume
*b);
367
370
pa_cvolume
*
pa_cvolume_inc_clamp
(
pa_cvolume
*v,
pa_volume_t
inc,
pa_volume_t
limit);
371
374
pa_cvolume
*
pa_cvolume_inc
(
pa_cvolume
*v,
pa_volume_t
inc);
375
378
pa_cvolume
*
pa_cvolume_dec
(
pa_cvolume
*v,
pa_volume_t
dec);
379
380
PA_C_DECL_END
381
382
#endif
src
pulse
volume.h
Generated on Sat Nov 1 2014 11:17:32 for PulseAudio by
1.8.3