PulseAudio
4.0-186-ga89ca
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
181
#define PA_CVOLUME_SNPRINT_VERBOSE_MAX 1984
182
187
char
*
pa_cvolume_snprint_verbose
(
char
*s,
size_t
l,
const
pa_cvolume
*c,
const
pa_channel_map
*map,
int
print_dB);
188
194
#define PA_VOLUME_SNPRINT_MAX 10
195
197
char
*
pa_volume_snprint
(
char
*s,
size_t
l,
pa_volume_t
v);
198
204
#define PA_SW_VOLUME_SNPRINT_DB_MAX 10
205
207
char
*
pa_sw_volume_snprint_dB
(
char
*s,
size_t
l,
pa_volume_t
v);
208
213
#define PA_VOLUME_SNPRINT_VERBOSE_MAX 35
214
218
char
*
pa_volume_snprint_verbose
(
char
*s,
size_t
l,
pa_volume_t
v,
int
print_dB);
219
221
pa_volume_t
pa_cvolume_avg
(
const
pa_cvolume
*a)
PA_GCC_PURE
;
222
228
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
;
229
231
pa_volume_t
pa_cvolume_max
(
const
pa_cvolume
*a)
PA_GCC_PURE
;
232
238
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
;
239
241
pa_volume_t
pa_cvolume_min
(
const
pa_cvolume
*a)
PA_GCC_PURE
;
242
248
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
;
249
251
int
pa_cvolume_valid
(
const
pa_cvolume
*v)
PA_GCC_PURE
;
252
254
int
pa_cvolume_channels_equal_to
(
const
pa_cvolume
*a,
pa_volume_t
v)
PA_GCC_PURE
;
255
257
#define pa_cvolume_is_muted(a) pa_cvolume_channels_equal_to((a), PA_VOLUME_MUTED)
258
260
#define pa_cvolume_is_norm(a) pa_cvolume_channels_equal_to((a), PA_VOLUME_NORM)
261
265
pa_volume_t
pa_sw_volume_multiply
(
pa_volume_t
a,
pa_volume_t
b)
PA_GCC_CONST
;
266
270
pa_cvolume
*
pa_sw_cvolume_multiply
(
pa_cvolume
*dest,
const
pa_cvolume
*a,
const
pa_cvolume
*b);
271
276
pa_cvolume
*
pa_sw_cvolume_multiply_scalar
(
pa_cvolume
*dest,
const
pa_cvolume
*a,
pa_volume_t
b);
277
282
pa_volume_t
pa_sw_volume_divide
(
pa_volume_t
a,
pa_volume_t
b)
PA_GCC_CONST
;
283
287
pa_cvolume
*
pa_sw_cvolume_divide
(
pa_cvolume
*dest,
const
pa_cvolume
*a,
const
pa_cvolume
*b);
288
293
pa_cvolume
*
pa_sw_cvolume_divide_scalar
(
pa_cvolume
*dest,
const
pa_cvolume
*a,
pa_volume_t
b);
294
296
pa_volume_t
pa_sw_volume_from_dB
(
double
f)
PA_GCC_CONST
;
297
299
double
pa_sw_volume_to_dB
(
pa_volume_t
v)
PA_GCC_CONST
;
300
303
pa_volume_t
pa_sw_volume_from_linear
(
double
v)
PA_GCC_CONST
;
304
306
double
pa_sw_volume_to_linear
(
pa_volume_t
v)
PA_GCC_CONST
;
307
308
#ifdef INFINITY
309
#define PA_DECIBEL_MININFTY ((double) -INFINITY)
310
#else
311
312
#define PA_DECIBEL_MININFTY ((double) -200.0)
313
#endif
314
316
pa_cvolume
*
pa_cvolume_remap
(
pa_cvolume
*v,
const
pa_channel_map
*from,
const
pa_channel_map
*to);
317
320
int
pa_cvolume_compatible
(
const
pa_cvolume
*v,
const
pa_sample_spec
*ss)
PA_GCC_PURE
;
321
324
int
pa_cvolume_compatible_with_channel_map
(
const
pa_cvolume
*v,
const
pa_channel_map
*cm)
PA_GCC_PURE
;
325
331
float
pa_cvolume_get_balance
(
const
pa_cvolume
*v,
const
pa_channel_map
*map)
PA_GCC_PURE
;
332
342
pa_cvolume
*
pa_cvolume_set_balance
(
pa_cvolume
*v,
const
pa_channel_map
*map,
float
new_balance);
343
349
float
pa_cvolume_get_fade
(
const
pa_cvolume
*v,
const
pa_channel_map
*map)
PA_GCC_PURE
;
350
360
pa_cvolume
*
pa_cvolume_set_fade
(
pa_cvolume
*v,
const
pa_channel_map
*map,
float
new_fade);
361
365
pa_cvolume
*
pa_cvolume_scale
(
pa_cvolume
*v,
pa_volume_t
max);
366
371
pa_cvolume
*
pa_cvolume_scale_mask
(
pa_cvolume
*v,
pa_volume_t
max,
pa_channel_map
*cm,
pa_channel_position_mask_t
mask);
372
378
pa_cvolume
*
pa_cvolume_set_position
(
pa_cvolume
*cv,
const
pa_channel_map
*map,
pa_channel_position_t
t,
pa_volume_t
v);
379
384
pa_volume_t
pa_cvolume_get_position
(
pa_cvolume
*cv,
const
pa_channel_map
*map,
pa_channel_position_t
t)
PA_GCC_PURE
;
385
389
pa_cvolume
*
pa_cvolume_merge
(
pa_cvolume
*dest,
const
pa_cvolume
*a,
const
pa_cvolume
*b);
390
393
pa_cvolume
*
pa_cvolume_inc_clamp
(
pa_cvolume
*v,
pa_volume_t
inc,
pa_volume_t
limit);
394
397
pa_cvolume
*
pa_cvolume_inc
(
pa_cvolume
*v,
pa_volume_t
inc);
398
401
pa_cvolume
*
pa_cvolume_dec
(
pa_cvolume
*v,
pa_volume_t
dec);
402
403
PA_C_DECL_END
404
405
#endif
src
pulse
volume.h
Generated by
1.8.4