3
* \brief Application interface library for the ALSA driver
4
* \author Jaroslav Kysela <perex@suse.cz>
5
* \author Abramo Bagnara <abramo@alsa-project.org>
6
* \author Takashi Iwai <tiwai@suse.de>
9
* Application interface library for the ALSA driver.
10
* See the \ref pcm page for more details.
13
* This library is free software; you can redistribute it and/or modify
14
* it under the terms of the GNU Lesser General Public License as
15
* published by the Free Software Foundation; either version 2.1 of
16
* the License, or (at your option) any later version.
18
* This program is distributed in the hope that it will be useful,
19
* but WITHOUT ANY WARRANTY; without even the implied warranty of
20
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
* GNU Lesser General Public License for more details.
23
* You should have received a copy of the GNU Lesser General Public
24
* License along with this library; if not, write to the Free Software
25
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
37
* \defgroup PCM PCM Interface
38
* See the \ref pcm page for more details.
42
/** dlsym version for interface entry callback */
43
#define SND_PCM_DLSYM_VERSION _dlsym_pcm_001
45
/** PCM generic info container */
46
typedef struct _snd_pcm_info snd_pcm_info_t;
47
/** PCM hardware configuration space container */
48
typedef struct _snd_pcm_hw_params snd_pcm_hw_params_t;
49
/** PCM software configuration container */
50
typedef struct _snd_pcm_sw_params snd_pcm_sw_params_t;
51
/** PCM status container */
52
typedef struct _snd_pcm_status snd_pcm_status_t;
53
/** PCM access types mask */
54
typedef struct _snd_pcm_access_mask snd_pcm_access_mask_t;
55
/** PCM formats mask */
56
typedef struct _snd_pcm_format_mask snd_pcm_format_mask_t;
57
/** PCM subformats mask */
58
typedef struct _snd_pcm_subformat_mask snd_pcm_subformat_mask_t;
61
typedef enum _snd_pcm_class {
62
/** standard device */
64
SND_PCM_CLASS_GENERIC = 0,
65
/** multichannel device */
67
/** software modem device */
69
/** digitizer device */
70
SND_PCM_CLASS_DIGITIZER,
71
SND_PCM_CLASS_LAST = SND_PCM_CLASS_DIGITIZER
75
typedef enum _snd_pcm_subclass {
76
/** subdevices are mixed together */
77
SND_PCM_SUBCLASS_GENERIC_MIX = 0,
78
/** multichannel subdevices are mixed together */
79
SND_PCM_SUBCLASS_MULTI_MIX,
80
SND_PCM_SUBCLASS_LAST = SND_PCM_SUBCLASS_MULTI_MIX
83
/** PCM stream (direction) */
84
typedef enum _snd_pcm_stream {
85
/** Playback stream */
86
SND_PCM_STREAM_PLAYBACK = 0,
88
SND_PCM_STREAM_CAPTURE,
89
SND_PCM_STREAM_LAST = SND_PCM_STREAM_CAPTURE
92
/** PCM access type */
93
typedef enum _snd_pcm_access {
94
/** mmap access with simple interleaved channels */
95
SND_PCM_ACCESS_MMAP_INTERLEAVED = 0,
96
/** mmap access with simple non interleaved channels */
97
SND_PCM_ACCESS_MMAP_NONINTERLEAVED,
98
/** mmap access with complex placement */
99
SND_PCM_ACCESS_MMAP_COMPLEX,
100
/** snd_pcm_readi/snd_pcm_writei access */
101
SND_PCM_ACCESS_RW_INTERLEAVED,
102
/** snd_pcm_readn/snd_pcm_writen access */
103
SND_PCM_ACCESS_RW_NONINTERLEAVED,
104
SND_PCM_ACCESS_LAST = SND_PCM_ACCESS_RW_NONINTERLEAVED
107
/** PCM sample format */
108
typedef enum _snd_pcm_format {
110
SND_PCM_FORMAT_UNKNOWN = -1,
112
SND_PCM_FORMAT_S8 = 0,
113
/** Unsigned 8 bit */
115
/** Signed 16 bit Little Endian */
116
SND_PCM_FORMAT_S16_LE,
117
/** Signed 16 bit Big Endian */
118
SND_PCM_FORMAT_S16_BE,
119
/** Unsigned 16 bit Little Endian */
120
SND_PCM_FORMAT_U16_LE,
121
/** Unsigned 16 bit Big Endian */
122
SND_PCM_FORMAT_U16_BE,
123
/** Signed 24 bit Little Endian */
124
SND_PCM_FORMAT_S24_LE,
125
/** Signed 24 bit Big Endian */
126
SND_PCM_FORMAT_S24_BE,
127
/** Unsigned 24 bit Little Endian */
128
SND_PCM_FORMAT_U24_LE,
129
/** Unsigned 24 bit Big Endian */
130
SND_PCM_FORMAT_U24_BE,
131
/** Signed 32 bit Little Endian */
132
SND_PCM_FORMAT_S32_LE,
133
/** Signed 32 bit Big Endian */
134
SND_PCM_FORMAT_S32_BE,
135
/** Unsigned 32 bit Little Endian */
136
SND_PCM_FORMAT_U32_LE,
137
/** Unsigned 32 bit Big Endian */
138
SND_PCM_FORMAT_U32_BE,
139
/** Float 32 bit Little Endian, Range -1.0 to 1.0 */
140
SND_PCM_FORMAT_FLOAT_LE,
141
/** Float 32 bit Big Endian, Range -1.0 to 1.0 */
142
SND_PCM_FORMAT_FLOAT_BE,
143
/** Float 64 bit Little Endian, Range -1.0 to 1.0 */
144
SND_PCM_FORMAT_FLOAT64_LE,
145
/** Float 64 bit Big Endian, Range -1.0 to 1.0 */
146
SND_PCM_FORMAT_FLOAT64_BE,
147
/** IEC-958 Little Endian */
148
SND_PCM_FORMAT_IEC958_SUBFRAME_LE,
149
/** IEC-958 Big Endian */
150
SND_PCM_FORMAT_IEC958_SUBFRAME_BE,
152
SND_PCM_FORMAT_MU_LAW,
154
SND_PCM_FORMAT_A_LAW,
156
SND_PCM_FORMAT_IMA_ADPCM,
162
SND_PCM_FORMAT_SPECIAL = 31,
163
/** Signed 24bit Little Endian in 3bytes format */
164
SND_PCM_FORMAT_S24_3LE = 32,
165
/** Signed 24bit Big Endian in 3bytes format */
166
SND_PCM_FORMAT_S24_3BE,
167
/** Unsigned 24bit Little Endian in 3bytes format */
168
SND_PCM_FORMAT_U24_3LE,
169
/** Unsigned 24bit Big Endian in 3bytes format */
170
SND_PCM_FORMAT_U24_3BE,
171
/** Signed 20bit Little Endian in 3bytes format */
172
SND_PCM_FORMAT_S20_3LE,
173
/** Signed 20bit Big Endian in 3bytes format */
174
SND_PCM_FORMAT_S20_3BE,
175
/** Unsigned 20bit Little Endian in 3bytes format */
176
SND_PCM_FORMAT_U20_3LE,
177
/** Unsigned 20bit Big Endian in 3bytes format */
178
SND_PCM_FORMAT_U20_3BE,
179
/** Signed 18bit Little Endian in 3bytes format */
180
SND_PCM_FORMAT_S18_3LE,
181
/** Signed 18bit Big Endian in 3bytes format */
182
SND_PCM_FORMAT_S18_3BE,
183
/** Unsigned 18bit Little Endian in 3bytes format */
184
SND_PCM_FORMAT_U18_3LE,
185
/** Unsigned 18bit Big Endian in 3bytes format */
186
SND_PCM_FORMAT_U18_3BE,
187
SND_PCM_FORMAT_LAST = SND_PCM_FORMAT_U18_3BE,
189
#if __BYTE_ORDER == __LITTLE_ENDIAN
190
/** Signed 16 bit CPU endian */
191
SND_PCM_FORMAT_S16 = SND_PCM_FORMAT_S16_LE,
192
/** Unsigned 16 bit CPU endian */
193
SND_PCM_FORMAT_U16 = SND_PCM_FORMAT_U16_LE,
194
/** Signed 24 bit CPU endian */
195
SND_PCM_FORMAT_S24 = SND_PCM_FORMAT_S24_LE,
196
/** Unsigned 24 bit CPU endian */
197
SND_PCM_FORMAT_U24 = SND_PCM_FORMAT_U24_LE,
198
/** Signed 32 bit CPU endian */
199
SND_PCM_FORMAT_S32 = SND_PCM_FORMAT_S32_LE,
200
/** Unsigned 32 bit CPU endian */
201
SND_PCM_FORMAT_U32 = SND_PCM_FORMAT_U32_LE,
202
/** Float 32 bit CPU endian */
203
SND_PCM_FORMAT_FLOAT = SND_PCM_FORMAT_FLOAT_LE,
204
/** Float 64 bit CPU endian */
205
SND_PCM_FORMAT_FLOAT64 = SND_PCM_FORMAT_FLOAT64_LE,
206
/** IEC-958 CPU Endian */
207
SND_PCM_FORMAT_IEC958_SUBFRAME = SND_PCM_FORMAT_IEC958_SUBFRAME_LE
208
#elif __BYTE_ORDER == __BIG_ENDIAN
209
/** Signed 16 bit CPU endian */
210
SND_PCM_FORMAT_S16 = SND_PCM_FORMAT_S16_BE,
211
/** Unsigned 16 bit CPU endian */
212
SND_PCM_FORMAT_U16 = SND_PCM_FORMAT_U16_BE,
213
/** Signed 24 bit CPU endian */
214
SND_PCM_FORMAT_S24 = SND_PCM_FORMAT_S24_BE,
215
/** Unsigned 24 bit CPU endian */
216
SND_PCM_FORMAT_U24 = SND_PCM_FORMAT_U24_BE,
217
/** Signed 32 bit CPU endian */
218
SND_PCM_FORMAT_S32 = SND_PCM_FORMAT_S32_BE,
219
/** Unsigned 32 bit CPU endian */
220
SND_PCM_FORMAT_U32 = SND_PCM_FORMAT_U32_BE,
221
/** Float 32 bit CPU endian */
222
SND_PCM_FORMAT_FLOAT = SND_PCM_FORMAT_FLOAT_BE,
223
/** Float 64 bit CPU endian */
224
SND_PCM_FORMAT_FLOAT64 = SND_PCM_FORMAT_FLOAT64_BE,
225
/** IEC-958 CPU Endian */
226
SND_PCM_FORMAT_IEC958_SUBFRAME = SND_PCM_FORMAT_IEC958_SUBFRAME_BE
228
#error "Unknown endian"
232
/** PCM sample subformat */
233
typedef enum _snd_pcm_subformat {
235
SND_PCM_SUBFORMAT_STD = 0,
236
SND_PCM_SUBFORMAT_LAST = SND_PCM_SUBFORMAT_STD
237
} snd_pcm_subformat_t;
240
typedef enum _snd_pcm_state {
242
SND_PCM_STATE_OPEN = 0,
243
/** Setup installed */
245
/** Ready to start */
246
SND_PCM_STATE_PREPARED,
248
SND_PCM_STATE_RUNNING,
249
/** Stopped: underrun (playback) or overrun (capture) detected */
251
/** Draining: running (playback) or stopped (capture) */
252
SND_PCM_STATE_DRAINING,
254
SND_PCM_STATE_PAUSED,
255
/** Hardware is suspended */
256
SND_PCM_STATE_SUSPENDED,
257
/** Hardware is disconnected */
258
SND_PCM_STATE_DISCONNECTED,
259
SND_PCM_STATE_LAST = SND_PCM_STATE_DISCONNECTED
262
/** PCM start mode */
263
typedef enum _snd_pcm_start {
264
/** Automatic start on data read/write */
265
SND_PCM_START_DATA = 0,
266
/** Explicit start */
267
SND_PCM_START_EXPLICIT,
268
SND_PCM_START_LAST = SND_PCM_START_EXPLICIT
272
typedef enum _snd_pcm_xrun {
273
/** Xrun detection disabled */
274
SND_PCM_XRUN_NONE = 0,
275
/** Stop on xrun detection */
277
SND_PCM_XRUN_LAST = SND_PCM_XRUN_STOP
280
/** PCM timestamp mode */
281
typedef enum _snd_pcm_tstamp {
283
SND_PCM_TSTAMP_NONE = 0,
284
/** Update mmap'ed timestamp */
286
SND_PCM_TSTAMP_LAST = SND_PCM_TSTAMP_MMAP
289
/** Unsigned frames quantity */
290
typedef unsigned long snd_pcm_uframes_t;
291
/** Signed frames quantity */
292
typedef long snd_pcm_sframes_t;
294
/** Non blocking mode (flag for open mode) \hideinitializer */
295
#define SND_PCM_NONBLOCK 0x0001
296
/** Async notification (flag for open mode) \hideinitializer */
297
#define SND_PCM_ASYNC 0x0002
300
typedef struct _snd_pcm snd_pcm_t;
304
/** Kernel level PCM */
308
/** One ore more linked PCM with exclusive access to selected
311
/** File writing plugin */
313
/** Null endpoint PCM */
315
/** Shared memory client PCM */
317
/** INET client PCM (not yet implemented) */
319
/** Copying plugin */
321
/** Linear format conversion PCM */
323
/** A-Law format conversion PCM */
325
/** Mu-Law format conversion PCM */
327
/** IMA-ADPCM format conversion PCM */
329
/** Rate conversion PCM */
331
/** Attenuated static route PCM */
333
/** Format adjusted PCM */
341
/** Attenuated dynamic route PCM (not yet implemented) */
343
/** Loopback server plugin (not yet implemented) */
344
SND_PCM_TYPE_LBSERVER,
345
/** Linear Integer <-> Linear Float format conversion PCM */
346
SND_PCM_TYPE_LINEAR_FLOAT,
347
/** LADSPA integration plugin */
349
/** Direct Mixing plugin */
351
/** Jack Audio Connection Kit plugin */
353
/** Direct Snooping plugin */
355
/** Direct Sharing plugin */
357
/** IEC958 subframe plugin */
359
SND_PCM_TYPE_LAST = SND_PCM_TYPE_DSNOOP
363
typedef enum _snd_pcm_type snd_pcm_type_t;
365
/** PCM area specification */
366
typedef struct _snd_pcm_channel_area {
367
/** base address of channel samples */
369
/** offset to first sample in bits */
371
/** samples distance in bits */
373
} snd_pcm_channel_area_t;
375
/** PCM synchronization ID */
376
typedef union _snd_pcm_sync_id {
378
unsigned char id[16];
380
unsigned short id16[8];
382
unsigned int id32[4];
385
/** #SND_PCM_TYPE_METER scope handle */
386
typedef struct _snd_pcm_scope snd_pcm_scope_t;
388
int snd_pcm_open(snd_pcm_t **pcm, const char *name,
389
snd_pcm_stream_t stream, int mode);
390
int snd_pcm_open_lconf(snd_pcm_t **pcm, const char *name,
391
snd_pcm_stream_t stream, int mode,
392
snd_config_t *lconf);
394
int snd_pcm_close(snd_pcm_t *pcm);
395
const char *snd_pcm_name(snd_pcm_t *pcm);
396
snd_pcm_type_t snd_pcm_type(snd_pcm_t *pcm);
397
snd_pcm_stream_t snd_pcm_stream(snd_pcm_t *pcm);
398
int snd_pcm_poll_descriptors_count(snd_pcm_t *pcm);
399
int snd_pcm_poll_descriptors(snd_pcm_t *pcm, struct pollfd *pfds, unsigned int space);
400
int snd_pcm_poll_descriptors_revents(snd_pcm_t *pcm, struct pollfd *pfds, unsigned int nfds, unsigned short *revents);
401
int snd_pcm_nonblock(snd_pcm_t *pcm, int nonblock);
402
int snd_async_add_pcm_handler(snd_async_handler_t **handler, snd_pcm_t *pcm,
403
snd_async_callback_t callback, void *private_data);
404
snd_pcm_t *snd_async_handler_get_pcm(snd_async_handler_t *handler);
405
int snd_pcm_info(snd_pcm_t *pcm, snd_pcm_info_t *info);
406
int snd_pcm_hw_params_current(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
407
int snd_pcm_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
408
int snd_pcm_hw_free(snd_pcm_t *pcm);
409
int snd_pcm_sw_params_current(snd_pcm_t *pcm, snd_pcm_sw_params_t *params);
410
int snd_pcm_sw_params(snd_pcm_t *pcm, snd_pcm_sw_params_t *params);
411
int snd_pcm_prepare(snd_pcm_t *pcm);
412
int snd_pcm_reset(snd_pcm_t *pcm);
413
int snd_pcm_status(snd_pcm_t *pcm, snd_pcm_status_t *status);
414
int snd_pcm_start(snd_pcm_t *pcm);
415
int snd_pcm_drop(snd_pcm_t *pcm);
416
int snd_pcm_drain(snd_pcm_t *pcm);
417
int snd_pcm_pause(snd_pcm_t *pcm, int enable);
418
snd_pcm_state_t snd_pcm_state(snd_pcm_t *pcm);
419
int snd_pcm_hwsync(snd_pcm_t *pcm);
420
int snd_pcm_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp);
421
int snd_pcm_resume(snd_pcm_t *pcm);
422
snd_pcm_sframes_t snd_pcm_avail_update(snd_pcm_t *pcm);
423
snd_pcm_sframes_t snd_pcm_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames);
424
snd_pcm_sframes_t snd_pcm_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames);
425
snd_pcm_sframes_t snd_pcm_writei(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size);
426
snd_pcm_sframes_t snd_pcm_readi(snd_pcm_t *pcm, void *buffer, snd_pcm_uframes_t size);
427
snd_pcm_sframes_t snd_pcm_writen(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size);
428
snd_pcm_sframes_t snd_pcm_readn(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size);
429
int snd_pcm_wait(snd_pcm_t *pcm, int timeout);
431
int snd_pcm_link(snd_pcm_t *pcm1, snd_pcm_t *pcm2);
432
int snd_pcm_unlink(snd_pcm_t *pcm);
437
* \defgroup PCM_Info Stream Information
439
* See the \ref pcm page for more details.
443
size_t snd_pcm_info_sizeof(void);
445
* \brief allocate an invalid #snd_pcm_info_t using standard alloca
446
* \param ptr returned pointer
448
#define snd_pcm_info_alloca(ptr) do { assert(ptr); *ptr = (snd_pcm_info_t *) alloca(snd_pcm_info_sizeof()); memset(*ptr, 0, snd_pcm_info_sizeof()); } while (0)
449
int snd_pcm_info_malloc(snd_pcm_info_t **ptr);
450
void snd_pcm_info_free(snd_pcm_info_t *obj);
451
void snd_pcm_info_copy(snd_pcm_info_t *dst, const snd_pcm_info_t *src);
452
unsigned int snd_pcm_info_get_device(const snd_pcm_info_t *obj);
453
unsigned int snd_pcm_info_get_subdevice(const snd_pcm_info_t *obj);
454
snd_pcm_stream_t snd_pcm_info_get_stream(const snd_pcm_info_t *obj);
455
int snd_pcm_info_get_card(const snd_pcm_info_t *obj);
456
const char *snd_pcm_info_get_id(const snd_pcm_info_t *obj);
457
const char *snd_pcm_info_get_name(const snd_pcm_info_t *obj);
458
const char *snd_pcm_info_get_subdevice_name(const snd_pcm_info_t *obj);
459
snd_pcm_class_t snd_pcm_info_get_class(const snd_pcm_info_t *obj);
460
snd_pcm_subclass_t snd_pcm_info_get_subclass(const snd_pcm_info_t *obj);
461
unsigned int snd_pcm_info_get_subdevices_count(const snd_pcm_info_t *obj);
462
unsigned int snd_pcm_info_get_subdevices_avail(const snd_pcm_info_t *obj);
463
snd_pcm_sync_id_t snd_pcm_info_get_sync(const snd_pcm_info_t *obj);
464
void snd_pcm_info_set_device(snd_pcm_info_t *obj, unsigned int val);
465
void snd_pcm_info_set_subdevice(snd_pcm_info_t *obj, unsigned int val);
466
void snd_pcm_info_set_stream(snd_pcm_info_t *obj, snd_pcm_stream_t val);
471
* \defgroup PCM_HW_Params Hardware Parameters
473
* See the \ref pcm page for more details.
477
int snd_pcm_hw_params_any(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
479
int snd_pcm_hw_params_can_mmap_sample_resolution(const snd_pcm_hw_params_t *params);
480
int snd_pcm_hw_params_is_double(const snd_pcm_hw_params_t *params);
481
int snd_pcm_hw_params_is_batch(const snd_pcm_hw_params_t *params);
482
int snd_pcm_hw_params_is_block_transfer(const snd_pcm_hw_params_t *params);
483
int snd_pcm_hw_params_can_overrange(const snd_pcm_hw_params_t *params);
484
int snd_pcm_hw_params_can_pause(const snd_pcm_hw_params_t *params);
485
int snd_pcm_hw_params_can_resume(const snd_pcm_hw_params_t *params);
486
int snd_pcm_hw_params_is_half_duplex(const snd_pcm_hw_params_t *params);
487
int snd_pcm_hw_params_is_joint_duplex(const snd_pcm_hw_params_t *params);
488
int snd_pcm_hw_params_can_sync_start(const snd_pcm_hw_params_t *params);
489
int snd_pcm_hw_params_get_rate_numden(const snd_pcm_hw_params_t *params,
490
unsigned int *rate_num,
491
unsigned int *rate_den);
492
int snd_pcm_hw_params_get_sbits(const snd_pcm_hw_params_t *params);
493
int snd_pcm_hw_params_get_fifo_size(const snd_pcm_hw_params_t *params);
496
typedef struct _snd_pcm_hw_strategy snd_pcm_hw_strategy_t;
498
/* choices need to be sorted on ascending badness */
499
typedef struct _snd_pcm_hw_strategy_simple_choices_list {
501
unsigned int badness;
502
} snd_pcm_hw_strategy_simple_choices_list_t;
504
int snd_pcm_hw_params_strategy(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
505
const snd_pcm_hw_strategy_t *strategy,
506
unsigned int badness_min,
507
unsigned int badness_max);
509
void snd_pcm_hw_strategy_free(snd_pcm_hw_strategy_t *strategy);
510
int snd_pcm_hw_strategy_simple(snd_pcm_hw_strategy_t **strategyp,
511
unsigned int badness_min,
512
unsigned int badness_max);
513
int snd_pcm_hw_params_try_explain_failure(snd_pcm_t *pcm,
514
snd_pcm_hw_params_t *fail,
515
snd_pcm_hw_params_t *success,
521
size_t snd_pcm_hw_params_sizeof(void);
523
* \brief allocate an invalid #snd_pcm_hw_params_t using standard alloca
524
* \param ptr returned pointer
526
#define snd_pcm_hw_params_alloca(ptr) do { assert(ptr); *ptr = (snd_pcm_hw_params_t *) alloca(snd_pcm_hw_params_sizeof()); memset(*ptr, 0, snd_pcm_hw_params_sizeof()); } while (0)
527
int snd_pcm_hw_params_malloc(snd_pcm_hw_params_t **ptr);
528
void snd_pcm_hw_params_free(snd_pcm_hw_params_t *obj);
529
void snd_pcm_hw_params_copy(snd_pcm_hw_params_t *dst, const snd_pcm_hw_params_t *src);
531
#ifndef ALSA_LIBRARY_BUILD
533
#ifndef ALSA_PCM_OLD_HW_PARAMS_API
535
int snd_pcm_hw_params_get_access(const snd_pcm_hw_params_t *params, snd_pcm_access_t *access);
536
int snd_pcm_hw_params_test_access(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t access);
537
int snd_pcm_hw_params_set_access(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t access);
538
int snd_pcm_hw_params_set_access_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t *access);
539
int snd_pcm_hw_params_set_access_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t *access);
540
int snd_pcm_hw_params_set_access_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_mask_t *mask);
541
int snd_pcm_hw_params_get_access_mask(snd_pcm_hw_params_t *params, snd_pcm_access_mask_t *mask);
543
int snd_pcm_hw_params_get_format(const snd_pcm_hw_params_t *params, snd_pcm_format_t *val);
544
int snd_pcm_hw_params_test_format(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t val);
545
int snd_pcm_hw_params_set_format(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t val);
546
int snd_pcm_hw_params_set_format_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t *format);
547
int snd_pcm_hw_params_set_format_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t *format);
548
int snd_pcm_hw_params_set_format_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_mask_t *mask);
549
void snd_pcm_hw_params_get_format_mask(snd_pcm_hw_params_t *params, snd_pcm_format_mask_t *mask);
551
int snd_pcm_hw_params_get_subformat(const snd_pcm_hw_params_t *params, snd_pcm_subformat_t *subformat);
552
int snd_pcm_hw_params_test_subformat(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_t subformat);
553
int snd_pcm_hw_params_set_subformat(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_t subformat);
554
int snd_pcm_hw_params_set_subformat_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_t *subformat);
555
int snd_pcm_hw_params_set_subformat_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_t *subformat);
556
int snd_pcm_hw_params_set_subformat_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_mask_t *mask);
557
void snd_pcm_hw_params_get_subformat_mask(snd_pcm_hw_params_t *params, snd_pcm_subformat_mask_t *mask);
559
int snd_pcm_hw_params_get_channels(const snd_pcm_hw_params_t *params, unsigned int *val);
560
int snd_pcm_hw_params_get_channels_min(const snd_pcm_hw_params_t *params, unsigned int *val);
561
int snd_pcm_hw_params_get_channels_max(const snd_pcm_hw_params_t *params, unsigned int *val);
562
int snd_pcm_hw_params_test_channels(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val);
563
int snd_pcm_hw_params_set_channels(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val);
564
int snd_pcm_hw_params_set_channels_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
565
int snd_pcm_hw_params_set_channels_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
566
int snd_pcm_hw_params_set_channels_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, unsigned int *max);
567
int snd_pcm_hw_params_set_channels_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
568
int snd_pcm_hw_params_set_channels_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
569
int snd_pcm_hw_params_set_channels_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
571
int snd_pcm_hw_params_get_rate(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
572
int snd_pcm_hw_params_get_rate_min(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
573
int snd_pcm_hw_params_get_rate_max(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
574
int snd_pcm_hw_params_test_rate(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
575
int snd_pcm_hw_params_set_rate(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
576
int snd_pcm_hw_params_set_rate_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
577
int snd_pcm_hw_params_set_rate_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
578
int snd_pcm_hw_params_set_rate_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
579
int snd_pcm_hw_params_set_rate_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
580
int snd_pcm_hw_params_set_rate_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
581
int snd_pcm_hw_params_set_rate_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
583
int snd_pcm_hw_params_get_period_time(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
584
int snd_pcm_hw_params_get_period_time_min(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
585
int snd_pcm_hw_params_get_period_time_max(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
586
int snd_pcm_hw_params_test_period_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
587
int snd_pcm_hw_params_set_period_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
588
int snd_pcm_hw_params_set_period_time_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
589
int snd_pcm_hw_params_set_period_time_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
590
int snd_pcm_hw_params_set_period_time_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
591
int snd_pcm_hw_params_set_period_time_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
592
int snd_pcm_hw_params_set_period_time_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
593
int snd_pcm_hw_params_set_period_time_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
595
int snd_pcm_hw_params_get_period_size(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *frames, int *dir);
596
int snd_pcm_hw_params_get_period_size_min(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *frames, int *dir);
597
int snd_pcm_hw_params_get_period_size_max(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *frames, int *dir);
598
int snd_pcm_hw_params_test_period_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val, int dir);
599
int snd_pcm_hw_params_set_period_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val, int dir);
600
int snd_pcm_hw_params_set_period_size_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
601
int snd_pcm_hw_params_set_period_size_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
602
int snd_pcm_hw_params_set_period_size_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *min, int *mindir, snd_pcm_uframes_t *max, int *maxdir);
603
int snd_pcm_hw_params_set_period_size_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
604
int snd_pcm_hw_params_set_period_size_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
605
int snd_pcm_hw_params_set_period_size_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
606
int snd_pcm_hw_params_set_period_size_integer(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
608
int snd_pcm_hw_params_get_periods(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
609
int snd_pcm_hw_params_get_periods_min(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
610
int snd_pcm_hw_params_get_periods_max(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
611
int snd_pcm_hw_params_test_periods(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
612
int snd_pcm_hw_params_set_periods(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
613
int snd_pcm_hw_params_set_periods_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
614
int snd_pcm_hw_params_set_periods_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
615
int snd_pcm_hw_params_set_periods_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
616
int snd_pcm_hw_params_set_periods_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
617
int snd_pcm_hw_params_set_periods_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
618
int snd_pcm_hw_params_set_periods_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
619
int snd_pcm_hw_params_set_periods_integer(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
621
int snd_pcm_hw_params_get_buffer_time(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
622
int snd_pcm_hw_params_get_buffer_time_min(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
623
int snd_pcm_hw_params_get_buffer_time_max(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
624
int snd_pcm_hw_params_test_buffer_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
625
int snd_pcm_hw_params_set_buffer_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
626
int snd_pcm_hw_params_set_buffer_time_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
627
int snd_pcm_hw_params_set_buffer_time_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
628
int snd_pcm_hw_params_set_buffer_time_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
629
int snd_pcm_hw_params_set_buffer_time_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
630
int snd_pcm_hw_params_set_buffer_time_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
631
int snd_pcm_hw_params_set_buffer_time_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
633
int snd_pcm_hw_params_get_buffer_size(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
634
int snd_pcm_hw_params_get_buffer_size_min(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
635
int snd_pcm_hw_params_get_buffer_size_max(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
636
int snd_pcm_hw_params_test_buffer_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val);
637
int snd_pcm_hw_params_set_buffer_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val);
638
int snd_pcm_hw_params_set_buffer_size_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
639
int snd_pcm_hw_params_set_buffer_size_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
640
int snd_pcm_hw_params_set_buffer_size_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *min, snd_pcm_uframes_t *max);
641
int snd_pcm_hw_params_set_buffer_size_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
642
int snd_pcm_hw_params_set_buffer_size_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
643
int snd_pcm_hw_params_set_buffer_size_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
645
int snd_pcm_hw_params_get_tick_time(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
646
int snd_pcm_hw_params_get_tick_time_min(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
647
int snd_pcm_hw_params_get_tick_time_max(const snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
648
int snd_pcm_hw_params_test_tick_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
649
int snd_pcm_hw_params_set_tick_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
650
int snd_pcm_hw_params_set_tick_time_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
651
int snd_pcm_hw_params_set_tick_time_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
652
int snd_pcm_hw_params_set_tick_time_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
653
int snd_pcm_hw_params_set_tick_time_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
654
int snd_pcm_hw_params_set_tick_time_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
655
int snd_pcm_hw_params_set_tick_time_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
659
asm(".symver snd_pcm_hw_params_get_access,snd_pcm_hw_params_get_access@ALSA_0.9");
660
asm(".symver snd_pcm_hw_params_set_access_first,snd_pcm_hw_params_set_access_first@ALSA_0.9");
661
asm(".symver snd_pcm_hw_params_set_access_last,snd_pcm_hw_params_set_access_last@ALSA_0.9");
663
int snd_pcm_hw_params_get_access(const snd_pcm_hw_params_t *params);
664
int snd_pcm_hw_params_test_access(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t val);
665
int snd_pcm_hw_params_set_access(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_t val);
666
snd_pcm_access_t snd_pcm_hw_params_set_access_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
667
snd_pcm_access_t snd_pcm_hw_params_set_access_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
668
int snd_pcm_hw_params_set_access_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_access_mask_t *mask);
669
void snd_pcm_hw_params_get_access_mask(snd_pcm_hw_params_t *params, snd_pcm_access_mask_t *mask);
671
asm(".symver snd_pcm_hw_params_get_format,snd_pcm_hw_params_get_format@ALSA_0.9");
672
asm(".symver snd_pcm_hw_params_set_format_first,snd_pcm_hw_params_set_format_first@ALSA_0.9");
673
asm(".symver snd_pcm_hw_params_set_format_last,snd_pcm_hw_params_set_format_last@ALSA_0.9");
675
int snd_pcm_hw_params_get_format(const snd_pcm_hw_params_t *params);
676
int snd_pcm_hw_params_test_format(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t val);
677
int snd_pcm_hw_params_set_format(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_t val);
678
snd_pcm_format_t snd_pcm_hw_params_set_format_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
679
snd_pcm_format_t snd_pcm_hw_params_set_format_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
680
int snd_pcm_hw_params_set_format_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_format_mask_t *mask);
681
void snd_pcm_hw_params_get_format_mask(snd_pcm_hw_params_t *params, snd_pcm_format_mask_t *mask);
683
asm(".symver snd_pcm_hw_params_get_subformat,snd_pcm_hw_params_get_subformat@ALSA_0.9");
684
asm(".symver snd_pcm_hw_params_set_subformat_first,snd_pcm_hw_params_set_subformat_first@ALSA_0.9");
685
asm(".symver snd_pcm_hw_params_set_subformat_last,snd_pcm_hw_params_set_subformat_last@ALSA_0.9");
687
int snd_pcm_hw_params_test_subformat(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_t val);
688
int snd_pcm_hw_params_get_subformat(const snd_pcm_hw_params_t *params);
689
int snd_pcm_hw_params_set_subformat(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_t val);
690
snd_pcm_subformat_t snd_pcm_hw_params_set_subformat_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
691
snd_pcm_subformat_t snd_pcm_hw_params_set_subformat_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
692
int snd_pcm_hw_params_set_subformat_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_subformat_mask_t *mask);
693
void snd_pcm_hw_params_get_subformat_mask(snd_pcm_hw_params_t *params, snd_pcm_subformat_mask_t *mask);
695
asm(".symver snd_pcm_hw_params_get_channels,snd_pcm_hw_params_get_channels@ALSA_0.9");
696
asm(".symver snd_pcm_hw_params_get_channels_min,snd_pcm_hw_params_get_channels_min@ALSA_0.9");
697
asm(".symver snd_pcm_hw_params_get_channels_max,snd_pcm_hw_params_get_channels_max@ALSA_0.9");
698
asm(".symver snd_pcm_hw_params_set_channels_near,snd_pcm_hw_params_set_channels_near@ALSA_0.9");
699
asm(".symver snd_pcm_hw_params_set_channels_first,snd_pcm_hw_params_set_channels_first@ALSA_0.9");
700
asm(".symver snd_pcm_hw_params_set_channels_last,snd_pcm_hw_params_set_channels_last@ALSA_0.9");
702
int snd_pcm_hw_params_get_channels(const snd_pcm_hw_params_t *params);
703
unsigned int snd_pcm_hw_params_get_channels_min(const snd_pcm_hw_params_t *params);
704
unsigned int snd_pcm_hw_params_get_channels_max(const snd_pcm_hw_params_t *params);
705
int snd_pcm_hw_params_test_channels(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val);
706
int snd_pcm_hw_params_set_channels(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val);
707
int snd_pcm_hw_params_set_channels_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
708
int snd_pcm_hw_params_set_channels_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val);
709
int snd_pcm_hw_params_set_channels_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, unsigned int *max);
710
unsigned int snd_pcm_hw_params_set_channels_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val);
711
unsigned int snd_pcm_hw_params_set_channels_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
712
unsigned int snd_pcm_hw_params_set_channels_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
714
asm(".symver snd_pcm_hw_params_get_rate,snd_pcm_hw_params_get_rate@ALSA_0.9");
715
asm(".symver snd_pcm_hw_params_get_rate_min,snd_pcm_hw_params_get_rate_min@ALSA_0.9");
716
asm(".symver snd_pcm_hw_params_get_rate_max,snd_pcm_hw_params_get_rate_max@ALSA_0.9");
717
asm(".symver snd_pcm_hw_params_set_rate_near,snd_pcm_hw_params_set_rate_near@ALSA_0.9");
718
asm(".symver snd_pcm_hw_params_set_rate_first,snd_pcm_hw_params_set_rate_first@ALSA_0.9");
719
asm(".symver snd_pcm_hw_params_set_rate_last,snd_pcm_hw_params_set_rate_last@ALSA_0.9");
721
int snd_pcm_hw_params_get_rate(const snd_pcm_hw_params_t *params, int *dir);
722
unsigned int snd_pcm_hw_params_get_rate_min(const snd_pcm_hw_params_t *params, int *dir);
723
unsigned int snd_pcm_hw_params_get_rate_max(const snd_pcm_hw_params_t *params, int *dir);
724
int snd_pcm_hw_params_test_rate(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
725
int snd_pcm_hw_params_set_rate(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
726
int snd_pcm_hw_params_set_rate_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
727
int snd_pcm_hw_params_set_rate_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
728
int snd_pcm_hw_params_set_rate_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
729
unsigned int snd_pcm_hw_params_set_rate_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int *dir);
730
unsigned int snd_pcm_hw_params_set_rate_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
731
unsigned int snd_pcm_hw_params_set_rate_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
733
asm(".symver snd_pcm_hw_params_get_period_time,snd_pcm_hw_params_get_period_time@ALSA_0.9");
734
asm(".symver snd_pcm_hw_params_get_period_time_min,snd_pcm_hw_params_get_period_time_min@ALSA_0.9");
735
asm(".symver snd_pcm_hw_params_get_period_time_max,snd_pcm_hw_params_get_period_time_max@ALSA_0.9");
736
asm(".symver snd_pcm_hw_params_set_period_time_near,snd_pcm_hw_params_set_period_time_near@ALSA_0.9");
737
asm(".symver snd_pcm_hw_params_set_period_time_first,snd_pcm_hw_params_set_period_time_first@ALSA_0.9");
738
asm(".symver snd_pcm_hw_params_set_period_time_last,snd_pcm_hw_params_set_period_time_last@ALSA_0.9");
740
int snd_pcm_hw_params_get_period_time(const snd_pcm_hw_params_t *params, int *dir);
741
unsigned int snd_pcm_hw_params_get_period_time_min(const snd_pcm_hw_params_t *params, int *dir);
742
unsigned int snd_pcm_hw_params_get_period_time_max(const snd_pcm_hw_params_t *params, int *dir);
743
int snd_pcm_hw_params_test_period_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
744
int snd_pcm_hw_params_set_period_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
745
int snd_pcm_hw_params_set_period_time_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
746
int snd_pcm_hw_params_set_period_time_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
747
int snd_pcm_hw_params_set_period_time_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
748
unsigned int snd_pcm_hw_params_set_period_time_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int *dir);
749
unsigned int snd_pcm_hw_params_set_period_time_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
750
unsigned int snd_pcm_hw_params_set_period_time_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
752
asm(".symver snd_pcm_hw_params_get_period_size,snd_pcm_hw_params_get_period_size@ALSA_0.9");
753
asm(".symver snd_pcm_hw_params_get_period_size_min,snd_pcm_hw_params_get_period_size_min@ALSA_0.9");
754
asm(".symver snd_pcm_hw_params_get_period_size_max,snd_pcm_hw_params_get_period_size_max@ALSA_0.9");
755
asm(".symver snd_pcm_hw_params_set_period_size_near,snd_pcm_hw_params_set_period_size_near@ALSA_0.9");
756
asm(".symver snd_pcm_hw_params_set_period_size_first,snd_pcm_hw_params_set_period_size_first@ALSA_0.9");
757
asm(".symver snd_pcm_hw_params_set_period_size_last,snd_pcm_hw_params_set_period_size_last@ALSA_0.9");
759
snd_pcm_sframes_t snd_pcm_hw_params_get_period_size(const snd_pcm_hw_params_t *params, int *dir);
760
snd_pcm_uframes_t snd_pcm_hw_params_get_period_size_min(const snd_pcm_hw_params_t *params, int *dir);
761
snd_pcm_uframes_t snd_pcm_hw_params_get_period_size_max(const snd_pcm_hw_params_t *params, int *dir);
762
int snd_pcm_hw_params_test_period_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val, int dir);
763
int snd_pcm_hw_params_set_period_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val, int dir);
764
int snd_pcm_hw_params_set_period_size_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
765
int snd_pcm_hw_params_set_period_size_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val, int *dir);
766
int snd_pcm_hw_params_set_period_size_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *min, int *mindir, snd_pcm_uframes_t *max, int *maxdir);
767
snd_pcm_uframes_t snd_pcm_hw_params_set_period_size_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val, int *dir);
768
snd_pcm_uframes_t snd_pcm_hw_params_set_period_size_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
769
snd_pcm_uframes_t snd_pcm_hw_params_set_period_size_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
770
int snd_pcm_hw_params_set_period_size_integer(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
772
asm(".symver snd_pcm_hw_params_get_periods,snd_pcm_hw_params_get_periods@ALSA_0.9");
773
asm(".symver snd_pcm_hw_params_get_periods_min,snd_pcm_hw_params_get_periods_min@ALSA_0.9");
774
asm(".symver snd_pcm_hw_params_get_periods_max,snd_pcm_hw_params_get_periods_max@ALSA_0.9");
775
asm(".symver snd_pcm_hw_params_set_periods_near,snd_pcm_hw_params_set_periods_near@ALSA_0.9");
776
asm(".symver snd_pcm_hw_params_set_periods_first,snd_pcm_hw_params_set_periods_first@ALSA_0.9");
777
asm(".symver snd_pcm_hw_params_set_periods_last,snd_pcm_hw_params_set_periods_last@ALSA_0.9");
779
int snd_pcm_hw_params_get_periods(const snd_pcm_hw_params_t *params, int *dir);
780
unsigned int snd_pcm_hw_params_get_periods_min(const snd_pcm_hw_params_t *params, int *dir);
781
unsigned int snd_pcm_hw_params_get_periods_max(const snd_pcm_hw_params_t *params, int *dir);
782
int snd_pcm_hw_params_test_periods(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
783
int snd_pcm_hw_params_set_periods(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
784
int snd_pcm_hw_params_set_periods_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
785
int snd_pcm_hw_params_set_periods_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
786
int snd_pcm_hw_params_set_periods_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
787
unsigned int snd_pcm_hw_params_set_periods_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int *dir);
788
unsigned int snd_pcm_hw_params_set_periods_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
789
unsigned int snd_pcm_hw_params_set_periods_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
790
int snd_pcm_hw_params_set_periods_integer(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
792
asm(".symver snd_pcm_hw_params_get_buffer_time,snd_pcm_hw_params_get_buffer_time@ALSA_0.9");
793
asm(".symver snd_pcm_hw_params_get_buffer_time_min,snd_pcm_hw_params_get_buffer_time_min@ALSA_0.9");
794
asm(".symver snd_pcm_hw_params_get_buffer_time_max,snd_pcm_hw_params_get_buffer_time_max@ALSA_0.9");
795
asm(".symver snd_pcm_hw_params_set_buffer_time_near,snd_pcm_hw_params_set_buffer_time_near@ALSA_0.9");
796
asm(".symver snd_pcm_hw_params_set_buffer_time_first,snd_pcm_hw_params_set_buffer_time_first@ALSA_0.9");
797
asm(".symver snd_pcm_hw_params_set_buffer_time_last,snd_pcm_hw_params_set_buffer_time_last@ALSA_0.9");
799
int snd_pcm_hw_params_get_buffer_time(const snd_pcm_hw_params_t *params, int *dir);
800
unsigned int snd_pcm_hw_params_get_buffer_time_min(const snd_pcm_hw_params_t *params, int *dir);
801
unsigned int snd_pcm_hw_params_get_buffer_time_max(const snd_pcm_hw_params_t *params, int *dir);
802
int snd_pcm_hw_params_test_buffer_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
803
int snd_pcm_hw_params_set_buffer_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
804
int snd_pcm_hw_params_set_buffer_time_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
805
int snd_pcm_hw_params_set_buffer_time_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
806
int snd_pcm_hw_params_set_buffer_time_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
807
unsigned int snd_pcm_hw_params_set_buffer_time_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int *dir);
808
unsigned int snd_pcm_hw_params_set_buffer_time_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
809
unsigned int snd_pcm_hw_params_set_buffer_time_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
811
asm(".symver snd_pcm_hw_params_get_buffer_size,snd_pcm_hw_params_get_buffer_size@ALSA_0.9");
812
asm(".symver snd_pcm_hw_params_get_buffer_size_min,snd_pcm_hw_params_get_buffer_size_min@ALSA_0.9");
813
asm(".symver snd_pcm_hw_params_get_buffer_size_max,snd_pcm_hw_params_get_buffer_size_max@ALSA_0.9");
814
asm(".symver snd_pcm_hw_params_set_buffer_size_near,snd_pcm_hw_params_set_buffer_size_near@ALSA_0.9");
815
asm(".symver snd_pcm_hw_params_set_buffer_size_first,snd_pcm_hw_params_set_buffer_size_first@ALSA_0.9");
816
asm(".symver snd_pcm_hw_params_set_buffer_size_last,snd_pcm_hw_params_set_buffer_size_last@ALSA_0.9");
818
snd_pcm_sframes_t snd_pcm_hw_params_get_buffer_size(const snd_pcm_hw_params_t *params);
819
snd_pcm_uframes_t snd_pcm_hw_params_get_buffer_size_min(const snd_pcm_hw_params_t *params);
820
snd_pcm_uframes_t snd_pcm_hw_params_get_buffer_size_max(const snd_pcm_hw_params_t *params);
821
int snd_pcm_hw_params_test_buffer_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val);
822
int snd_pcm_hw_params_set_buffer_size(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val);
823
int snd_pcm_hw_params_set_buffer_size_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
824
int snd_pcm_hw_params_set_buffer_size_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
825
int snd_pcm_hw_params_set_buffer_size_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t *min, snd_pcm_uframes_t *max);
826
snd_pcm_uframes_t snd_pcm_hw_params_set_buffer_size_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, snd_pcm_uframes_t val);
827
snd_pcm_uframes_t snd_pcm_hw_params_set_buffer_size_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
828
snd_pcm_uframes_t snd_pcm_hw_params_set_buffer_size_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params);
830
asm(".symver snd_pcm_hw_params_get_tick_time,snd_pcm_hw_params_get_tick_time@ALSA_0.9");
831
asm(".symver snd_pcm_hw_params_get_tick_time_min,snd_pcm_hw_params_get_tick_time_min@ALSA_0.9");
832
asm(".symver snd_pcm_hw_params_get_tick_time_max,snd_pcm_hw_params_get_tick_time_max@ALSA_0.9");
833
asm(".symver snd_pcm_hw_params_set_tick_time_near,snd_pcm_hw_params_set_tick_time_near@ALSA_0.9");
834
asm(".symver snd_pcm_hw_params_set_tick_time_first,snd_pcm_hw_params_set_tick_time_first@ALSA_0.9");
835
asm(".symver snd_pcm_hw_params_set_tick_time_last,snd_pcm_hw_params_set_tick_time_last@ALSA_0.9");
837
int snd_pcm_hw_params_get_tick_time(const snd_pcm_hw_params_t *params, int *dir);
838
unsigned int snd_pcm_hw_params_get_tick_time_min(const snd_pcm_hw_params_t *params, int *dir);
839
unsigned int snd_pcm_hw_params_get_tick_time_max(const snd_pcm_hw_params_t *params, int *dir);
840
int snd_pcm_hw_params_test_tick_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
841
int snd_pcm_hw_params_set_tick_time(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int dir);
842
int snd_pcm_hw_params_set_tick_time_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
843
int snd_pcm_hw_params_set_tick_time_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *val, int *dir);
844
int snd_pcm_hw_params_set_tick_time_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int *min, int *mindir, unsigned int *max, int *maxdir);
845
unsigned int snd_pcm_hw_params_set_tick_time_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, unsigned int val, int *dir);
846
unsigned int snd_pcm_hw_params_set_tick_time_first(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
847
unsigned int snd_pcm_hw_params_set_tick_time_last(snd_pcm_t *pcm, snd_pcm_hw_params_t *params, int *dir);
849
#endif /* ALSA_PCM_OLD_HW_PARAMS_API */
850
#endif /* ALSA_LIBRARY_BUILD */
852
int snd_pcm_hw_params_get_min_align(const snd_pcm_hw_params_t *params, snd_pcm_uframes_t *val);
857
* \defgroup PCM_SW_Params Software Parameters
859
* See the \ref pcm page for more details.
863
size_t snd_pcm_sw_params_sizeof(void);
865
* \brief allocate an invalid #snd_pcm_sw_params_t using standard alloca
866
* \param ptr returned pointer
868
#define snd_pcm_sw_params_alloca(ptr) do { assert(ptr); *ptr = (snd_pcm_sw_params_t *) alloca(snd_pcm_sw_params_sizeof()); memset(*ptr, 0, snd_pcm_sw_params_sizeof()); } while (0)
869
int snd_pcm_sw_params_malloc(snd_pcm_sw_params_t **ptr);
870
void snd_pcm_sw_params_free(snd_pcm_sw_params_t *obj);
871
void snd_pcm_sw_params_copy(snd_pcm_sw_params_t *dst, const snd_pcm_sw_params_t *src);
872
int snd_pcm_sw_params_get_boundary(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
874
#ifndef ALSA_LIBRARY_BUILD
875
#ifndef ALSA_PCM_OLD_SW_PARAMS_API
877
int snd_pcm_sw_params_set_tstamp_mode(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_tstamp_t val);
878
int snd_pcm_sw_params_get_tstamp_mode(const snd_pcm_sw_params_t *params, snd_pcm_tstamp_t *val);
879
int snd_pcm_sw_params_set_sleep_min(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, unsigned int val);
880
int snd_pcm_sw_params_get_sleep_min(const snd_pcm_sw_params_t *params, unsigned int *val);
881
int snd_pcm_sw_params_set_avail_min(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
882
int snd_pcm_sw_params_get_avail_min(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
883
int snd_pcm_sw_params_set_xfer_align(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
884
int snd_pcm_sw_params_get_xfer_align(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
885
int snd_pcm_sw_params_set_start_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
886
int snd_pcm_sw_params_get_start_threshold(const snd_pcm_sw_params_t *paramsm, snd_pcm_uframes_t *val);
887
int snd_pcm_sw_params_set_stop_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
888
int snd_pcm_sw_params_get_stop_threshold(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
889
int snd_pcm_sw_params_set_silence_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
890
int snd_pcm_sw_params_get_silence_threshold(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
891
int snd_pcm_sw_params_set_silence_size(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
892
int snd_pcm_sw_params_get_silence_size(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val);
896
asm(".symver snd_pcm_sw_params_get_tstamp_mode,snd_pcm_sw_params_get_tstamp_mode@ALSA_0.9");
897
asm(".symver snd_pcm_sw_params_get_sleep_min,snd_pcm_sw_params_get_sleep_min@ALSA_0.9");
898
asm(".symver snd_pcm_sw_params_get_avail_min,snd_pcm_sw_params_get_avail_min@ALSA_0.9");
899
asm(".symver snd_pcm_sw_params_get_xfer_align,snd_pcm_sw_params_get_xfer_align@ALSA_0.9");
900
asm(".symver snd_pcm_sw_params_get_start_threshold,snd_pcm_sw_params_get_start_threshold@ALSA_0.9");
901
asm(".symver snd_pcm_sw_params_get_stop_threshold,snd_pcm_sw_params_set_stop_threshold@ALSA_0.9");
902
asm(".symver snd_pcm_sw_params_get_silence_threshold,snd_pcm_sw_params_get_silence_threshold@ALSA_0.9");
903
asm(".symver snd_pcm_sw_params_get_silence_size,snd_pcm_sw_params_get_silence_size@ALSA_0.9");
905
int snd_pcm_sw_params_set_tstamp_mode(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_tstamp_t val);
906
snd_pcm_tstamp_t snd_pcm_sw_params_get_tstamp_mode(const snd_pcm_sw_params_t *params);
907
int snd_pcm_sw_params_set_sleep_min(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, unsigned int val);
908
unsigned int snd_pcm_sw_params_get_sleep_min(const snd_pcm_sw_params_t *params);
909
int snd_pcm_sw_params_set_avail_min(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
910
snd_pcm_uframes_t snd_pcm_sw_params_get_avail_min(const snd_pcm_sw_params_t *params);
911
int snd_pcm_sw_params_set_xfer_align(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
912
snd_pcm_uframes_t snd_pcm_sw_params_get_xfer_align(const snd_pcm_sw_params_t *params);
913
int snd_pcm_sw_params_set_start_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
914
snd_pcm_uframes_t snd_pcm_sw_params_get_start_threshold(const snd_pcm_sw_params_t *params);
915
int snd_pcm_sw_params_set_stop_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
916
snd_pcm_uframes_t snd_pcm_sw_params_get_stop_threshold(const snd_pcm_sw_params_t *params);
917
int snd_pcm_sw_params_set_silence_threshold(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
918
snd_pcm_uframes_t snd_pcm_sw_params_get_silence_threshold(const snd_pcm_sw_params_t *params);
919
int snd_pcm_sw_params_set_silence_size(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val);
920
snd_pcm_uframes_t snd_pcm_sw_params_get_silence_size(const snd_pcm_sw_params_t *params);
922
#endif /* ALSA_PCM_OLD_SW_PARAMS_API */
923
#endif /* ALSA_LIBRARY_BUILD */
928
* \defgroup PCM_Access Access Mask Functions
930
* See the \ref pcm page for more details.
934
size_t snd_pcm_access_mask_sizeof(void);
936
* \brief allocate an empty #snd_pcm_access_mask_t using standard alloca
937
* \param ptr returned pointer
939
#define snd_pcm_access_mask_alloca(ptr) do { assert(ptr); *ptr = (snd_pcm_access_mask_t *) alloca(snd_pcm_access_mask_sizeof()); memset(*ptr, 0, snd_pcm_access_mask_sizeof()); } while (0)
940
int snd_pcm_access_mask_malloc(snd_pcm_access_mask_t **ptr);
941
void snd_pcm_access_mask_free(snd_pcm_access_mask_t *obj);
942
void snd_pcm_access_mask_copy(snd_pcm_access_mask_t *dst, const snd_pcm_access_mask_t *src);
943
void snd_pcm_access_mask_none(snd_pcm_access_mask_t *mask);
944
void snd_pcm_access_mask_any(snd_pcm_access_mask_t *mask);
945
int snd_pcm_access_mask_test(const snd_pcm_access_mask_t *mask, snd_pcm_access_t val);
946
int snd_pcm_access_mask_empty(const snd_pcm_access_mask_t *mask);
947
void snd_pcm_access_mask_set(snd_pcm_access_mask_t *mask, snd_pcm_access_t val);
948
void snd_pcm_access_mask_reset(snd_pcm_access_mask_t *mask, snd_pcm_access_t val);
953
* \defgroup PCM_Format Format Mask Functions
955
* See the \ref pcm page for more details.
959
size_t snd_pcm_format_mask_sizeof(void);
961
* \brief allocate an empty #snd_pcm_format_mask_t using standard alloca
962
* \param ptr returned pointer
964
#define snd_pcm_format_mask_alloca(ptr) do { assert(ptr); *ptr = (snd_pcm_format_mask_t *) alloca(snd_pcm_format_mask_sizeof()); memset(*ptr, 0, snd_pcm_format_mask_sizeof()); } while (0)
965
int snd_pcm_format_mask_malloc(snd_pcm_format_mask_t **ptr);
966
void snd_pcm_format_mask_free(snd_pcm_format_mask_t *obj);
967
void snd_pcm_format_mask_copy(snd_pcm_format_mask_t *dst, const snd_pcm_format_mask_t *src);
968
void snd_pcm_format_mask_none(snd_pcm_format_mask_t *mask);
969
void snd_pcm_format_mask_any(snd_pcm_format_mask_t *mask);
970
int snd_pcm_format_mask_test(const snd_pcm_format_mask_t *mask, snd_pcm_format_t val);
971
int snd_pcm_format_mask_empty(const snd_pcm_format_mask_t *mask);
972
void snd_pcm_format_mask_set(snd_pcm_format_mask_t *mask, snd_pcm_format_t val);
973
void snd_pcm_format_mask_reset(snd_pcm_format_mask_t *mask, snd_pcm_format_t val);
978
* \defgroup PCM_SubFormat Subformat Mask Functions
980
* See the \ref pcm page for more details.
984
size_t snd_pcm_subformat_mask_sizeof(void);
986
* \brief allocate an empty #snd_pcm_subformat_mask_t using standard alloca
987
* \param ptr returned pointer
989
#define snd_pcm_subformat_mask_alloca(ptr) do { assert(ptr); *ptr = (snd_pcm_subformat_mask_t *) alloca(snd_pcm_subformat_mask_sizeof()); memset(*ptr, 0, snd_pcm_subformat_mask_sizeof()); } while (0)
990
int snd_pcm_subformat_mask_malloc(snd_pcm_subformat_mask_t **ptr);
991
void snd_pcm_subformat_mask_free(snd_pcm_subformat_mask_t *obj);
992
void snd_pcm_subformat_mask_copy(snd_pcm_subformat_mask_t *dst, const snd_pcm_subformat_mask_t *src);
993
void snd_pcm_subformat_mask_none(snd_pcm_subformat_mask_t *mask);
994
void snd_pcm_subformat_mask_any(snd_pcm_subformat_mask_t *mask);
995
int snd_pcm_subformat_mask_test(const snd_pcm_subformat_mask_t *mask, snd_pcm_subformat_t val);
996
int snd_pcm_subformat_mask_empty(const snd_pcm_subformat_mask_t *mask);
997
void snd_pcm_subformat_mask_set(snd_pcm_subformat_mask_t *mask, snd_pcm_subformat_t val);
998
void snd_pcm_subformat_mask_reset(snd_pcm_subformat_mask_t *mask, snd_pcm_subformat_t val);
1003
* \defgroup PCM_Status Status Functions
1005
* See the \ref pcm page for more details.
1009
size_t snd_pcm_status_sizeof(void);
1010
/** \hideinitializer
1011
* \brief allocate an invalid #snd_pcm_status_t using standard alloca
1012
* \param ptr returned pointer
1014
#define snd_pcm_status_alloca(ptr) do { assert(ptr); *ptr = (snd_pcm_status_t *) alloca(snd_pcm_status_sizeof()); memset(*ptr, 0, snd_pcm_status_sizeof()); } while (0)
1015
int snd_pcm_status_malloc(snd_pcm_status_t **ptr);
1016
void snd_pcm_status_free(snd_pcm_status_t *obj);
1017
void snd_pcm_status_copy(snd_pcm_status_t *dst, const snd_pcm_status_t *src);
1018
snd_pcm_state_t snd_pcm_status_get_state(const snd_pcm_status_t *obj);
1019
void snd_pcm_status_get_trigger_tstamp(const snd_pcm_status_t *obj, snd_timestamp_t *ptr);
1020
void snd_pcm_status_get_trigger_htstamp(const snd_pcm_status_t *obj, snd_htimestamp_t *ptr);
1021
void snd_pcm_status_get_tstamp(const snd_pcm_status_t *obj, snd_timestamp_t *ptr);
1022
void snd_pcm_status_get_htstamp(const snd_pcm_status_t *obj, snd_htimestamp_t *ptr);
1023
snd_pcm_sframes_t snd_pcm_status_get_delay(const snd_pcm_status_t *obj);
1024
snd_pcm_uframes_t snd_pcm_status_get_avail(const snd_pcm_status_t *obj);
1025
snd_pcm_uframes_t snd_pcm_status_get_avail_max(const snd_pcm_status_t *obj);
1026
snd_pcm_uframes_t snd_pcm_status_get_overrange(const snd_pcm_status_t *obj);
1031
* \defgroup PCM_Description Description Functions
1033
* See the \ref pcm page for more details.
1037
const char *snd_pcm_type_name(snd_pcm_type_t type);
1038
const char *snd_pcm_stream_name(const snd_pcm_stream_t stream);
1039
const char *snd_pcm_access_name(const snd_pcm_access_t _access);
1040
const char *snd_pcm_format_name(const snd_pcm_format_t format);
1041
const char *snd_pcm_format_description(const snd_pcm_format_t format);
1042
const char *snd_pcm_subformat_name(const snd_pcm_subformat_t subformat);
1043
const char *snd_pcm_subformat_description(const snd_pcm_subformat_t subformat);
1044
snd_pcm_format_t snd_pcm_format_value(const char* name);
1045
const char *snd_pcm_tstamp_mode_name(const snd_pcm_tstamp_t mode);
1046
const char *snd_pcm_state_name(const snd_pcm_state_t state);
1051
* \defgroup PCM_Dump Debug Functions
1053
* See the \ref pcm page for more details.
1057
int snd_pcm_dump(snd_pcm_t *pcm, snd_output_t *out);
1058
int snd_pcm_dump_hw_setup(snd_pcm_t *pcm, snd_output_t *out);
1059
int snd_pcm_dump_sw_setup(snd_pcm_t *pcm, snd_output_t *out);
1060
int snd_pcm_dump_setup(snd_pcm_t *pcm, snd_output_t *out);
1061
int snd_pcm_hw_params_dump(snd_pcm_hw_params_t *params, snd_output_t *out);
1062
int snd_pcm_sw_params_dump(snd_pcm_sw_params_t *params, snd_output_t *out);
1063
int snd_pcm_status_dump(snd_pcm_status_t *status, snd_output_t *out);
1068
* \defgroup PCM_Direct Direct Access (MMAP) Functions
1070
* See the \ref pcm page for more details.
1074
int snd_pcm_mmap_begin(snd_pcm_t *pcm,
1075
const snd_pcm_channel_area_t **areas,
1076
snd_pcm_uframes_t *offset,
1077
snd_pcm_uframes_t *frames);
1078
snd_pcm_sframes_t snd_pcm_mmap_commit(snd_pcm_t *pcm,
1079
snd_pcm_uframes_t offset,
1080
snd_pcm_uframes_t frames);
1081
snd_pcm_sframes_t snd_pcm_mmap_writei(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size);
1082
snd_pcm_sframes_t snd_pcm_mmap_readi(snd_pcm_t *pcm, void *buffer, snd_pcm_uframes_t size);
1083
snd_pcm_sframes_t snd_pcm_mmap_writen(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size);
1084
snd_pcm_sframes_t snd_pcm_mmap_readn(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size);
1089
* \defgroup PCM_Helpers Helper Functions
1091
* See the \ref pcm page for more details.
1095
int snd_pcm_format_signed(snd_pcm_format_t format);
1096
int snd_pcm_format_unsigned(snd_pcm_format_t format);
1097
int snd_pcm_format_linear(snd_pcm_format_t format);
1098
int snd_pcm_format_float(snd_pcm_format_t format);
1099
int snd_pcm_format_little_endian(snd_pcm_format_t format);
1100
int snd_pcm_format_big_endian(snd_pcm_format_t format);
1101
int snd_pcm_format_cpu_endian(snd_pcm_format_t format);
1102
int snd_pcm_format_width(snd_pcm_format_t format); /* in bits */
1103
int snd_pcm_format_physical_width(snd_pcm_format_t format); /* in bits */
1104
snd_pcm_format_t snd_pcm_build_linear_format(int width, int pwidth, int unsignd, int big_endian);
1105
ssize_t snd_pcm_format_size(snd_pcm_format_t format, size_t samples);
1106
u_int8_t snd_pcm_format_silence(snd_pcm_format_t format);
1107
u_int16_t snd_pcm_format_silence_16(snd_pcm_format_t format);
1108
u_int32_t snd_pcm_format_silence_32(snd_pcm_format_t format);
1109
u_int64_t snd_pcm_format_silence_64(snd_pcm_format_t format);
1110
int snd_pcm_format_set_silence(snd_pcm_format_t format, void *buf, unsigned int samples);
1112
snd_pcm_sframes_t snd_pcm_bytes_to_frames(snd_pcm_t *pcm, ssize_t bytes);
1113
ssize_t snd_pcm_frames_to_bytes(snd_pcm_t *pcm, snd_pcm_sframes_t frames);
1114
long snd_pcm_bytes_to_samples(snd_pcm_t *pcm, ssize_t bytes);
1115
ssize_t snd_pcm_samples_to_bytes(snd_pcm_t *pcm, long samples);
1117
int snd_pcm_area_silence(const snd_pcm_channel_area_t *dst_channel, snd_pcm_uframes_t dst_offset,
1118
unsigned int samples, snd_pcm_format_t format);
1119
int snd_pcm_areas_silence(const snd_pcm_channel_area_t *dst_channels, snd_pcm_uframes_t dst_offset,
1120
unsigned int channels, snd_pcm_uframes_t frames, snd_pcm_format_t format);
1121
int snd_pcm_area_copy(const snd_pcm_channel_area_t *dst_channel, snd_pcm_uframes_t dst_offset,
1122
const snd_pcm_channel_area_t *src_channel, snd_pcm_uframes_t src_offset,
1123
unsigned int samples, snd_pcm_format_t format);
1124
int snd_pcm_areas_copy(const snd_pcm_channel_area_t *dst_channels, snd_pcm_uframes_t dst_offset,
1125
const snd_pcm_channel_area_t *src_channels, snd_pcm_uframes_t src_offset,
1126
unsigned int channels, snd_pcm_uframes_t frames, snd_pcm_format_t format);
1131
* \defgroup PCM_Hook Hook Extension
1133
* See the \ref pcm page for more details.
1137
/** type of pcm hook */
1138
typedef enum _snd_pcm_hook_type {
1139
SND_PCM_HOOK_TYPE_HW_PARAMS = 0,
1140
SND_PCM_HOOK_TYPE_HW_FREE,
1141
SND_PCM_HOOK_TYPE_CLOSE,
1142
SND_PCM_HOOK_TYPE_LAST = SND_PCM_HOOK_TYPE_CLOSE
1143
} snd_pcm_hook_type_t;
1145
/** PCM hook container */
1146
typedef struct _snd_pcm_hook snd_pcm_hook_t;
1147
/** PCM hook callback function */
1148
typedef int (*snd_pcm_hook_func_t)(snd_pcm_hook_t *hook);
1149
snd_pcm_t *snd_pcm_hook_get_pcm(snd_pcm_hook_t *hook);
1150
void *snd_pcm_hook_get_private(snd_pcm_hook_t *hook);
1151
void snd_pcm_hook_set_private(snd_pcm_hook_t *hook, void *private_data);
1152
int snd_pcm_hook_add(snd_pcm_hook_t **hookp, snd_pcm_t *pcm,
1153
snd_pcm_hook_type_t type,
1154
snd_pcm_hook_func_t func, void *private_data);
1155
int snd_pcm_hook_remove(snd_pcm_hook_t *hook);
1160
* \defgroup PCM_Scope Scope Plugin Extension
1162
* See the \ref pcm page for more details.
1166
/** #SND_PCM_TYPE_METER scope functions */
1167
typedef struct _snd_pcm_scope_ops {
1168
/** \brief Enable and prepare it using current params
1169
* \param scope scope handle
1171
int (*enable)(snd_pcm_scope_t *scope);
1173
* \param scope scope handle
1175
void (*disable)(snd_pcm_scope_t *scope);
1176
/** \brief PCM has been started
1177
* \param scope scope handle
1179
void (*start)(snd_pcm_scope_t *scope);
1180
/** \brief PCM has been stopped
1181
* \param scope scope handle
1183
void (*stop)(snd_pcm_scope_t *scope);
1184
/** \brief New frames are present
1185
* \param scope scope handle
1187
void (*update)(snd_pcm_scope_t *scope);
1188
/** \brief Reset status
1189
* \param scope scope handle
1191
void (*reset)(snd_pcm_scope_t *scope);
1192
/** \brief PCM is closing
1193
* \param scope scope handle
1195
void (*close)(snd_pcm_scope_t *scope);
1196
} snd_pcm_scope_ops_t;
1198
snd_pcm_uframes_t snd_pcm_meter_get_bufsize(snd_pcm_t *pcm);
1199
unsigned int snd_pcm_meter_get_channels(snd_pcm_t *pcm);
1200
unsigned int snd_pcm_meter_get_rate(snd_pcm_t *pcm);
1201
snd_pcm_uframes_t snd_pcm_meter_get_now(snd_pcm_t *pcm);
1202
snd_pcm_uframes_t snd_pcm_meter_get_boundary(snd_pcm_t *pcm);
1203
int snd_pcm_meter_add_scope(snd_pcm_t *pcm, snd_pcm_scope_t *scope);
1204
snd_pcm_scope_t *snd_pcm_meter_search_scope(snd_pcm_t *pcm, const char *name);
1205
int snd_pcm_scope_malloc(snd_pcm_scope_t **ptr);
1206
void snd_pcm_scope_set_ops(snd_pcm_scope_t *scope, snd_pcm_scope_ops_t *val);
1207
void snd_pcm_scope_set_name(snd_pcm_scope_t *scope, const char *val);
1208
const char *snd_pcm_scope_get_name(snd_pcm_scope_t *scope);
1209
void *snd_pcm_scope_get_callback_private(snd_pcm_scope_t *scope);
1210
void snd_pcm_scope_set_callback_private(snd_pcm_scope_t *scope, void *val);
1211
int snd_pcm_scope_s16_open(snd_pcm_t *pcm, const char *name,
1212
snd_pcm_scope_t **scopep);
1213
int16_t *snd_pcm_scope_s16_get_channel_buffer(snd_pcm_scope_t *scope,
1214
unsigned int channel);
1219
* \defgroup PCM_Simple Simple setup functions
1221
* See the \ref pcm page for more details.
1225
/** Simple PCM latency type */
1226
typedef enum _snd_spcm_latency {
1227
/** standard latency - for standard playback or capture
1228
(estimated latency in one direction 350ms) */
1229
SND_SPCM_LATENCY_STANDARD = 0,
1230
/** medium latency - software phones etc.
1231
(estimated latency in one direction maximally 25ms */
1232
SND_SPCM_LATENCY_MEDIUM,
1233
/** realtime latency - realtime applications (effect processors etc.)
1234
(estimated latency in one direction 5ms and better) */
1235
SND_SPCM_LATENCY_REALTIME
1236
} snd_spcm_latency_t;
1238
/** Simple PCM xrun type */
1239
typedef enum _snd_spcm_xrun_type {
1240
/** driver / library will ignore all xruns, the stream runs forever */
1241
SND_SPCM_XRUN_IGNORE = 0,
1242
/** driver / library stops the stream when an xrun occurs */
1244
} snd_spcm_xrun_type_t;
1246
/** Simple PCM duplex type */
1247
typedef enum _snd_spcm_duplex_type {
1248
/** liberal duplex - the buffer and period sizes might not match */
1249
SND_SPCM_DUPLEX_LIBERAL = 0,
1250
/** pedantic duplex - the buffer and period sizes MUST match */
1251
SND_SPCM_DUPLEX_PEDANTIC
1252
} snd_spcm_duplex_type_t;
1254
int snd_spcm_init(snd_pcm_t *pcm,
1256
unsigned int channels,
1257
snd_pcm_format_t format,
1258
snd_pcm_subformat_t subformat,
1259
snd_spcm_latency_t latency,
1260
snd_pcm_access_t access,
1261
snd_spcm_xrun_type_t xrun_type);
1263
int snd_spcm_init_duplex(snd_pcm_t *playback_pcm,
1264
snd_pcm_t *capture_pcm,
1266
unsigned int channels,
1267
snd_pcm_format_t format,
1268
snd_pcm_subformat_t subformat,
1269
snd_spcm_latency_t latency,
1270
snd_pcm_access_t access,
1271
snd_spcm_xrun_type_t xrun_type,
1272
snd_spcm_duplex_type_t duplex_type);
1274
int snd_spcm_init_get_params(snd_pcm_t *pcm,
1276
snd_pcm_uframes_t *buffer_size,
1277
snd_pcm_uframes_t *period_size);
1282
* \defgroup PCM_Deprecated Deprecated Functions
1284
* See the \ref pcm page for more details.
1288
/* Deprecated functions, for compatibility */
1289
const char *snd_pcm_start_mode_name(snd_pcm_start_t mode);
1290
const char *snd_pcm_xrun_mode_name(snd_pcm_xrun_t mode);
1291
int snd_pcm_sw_params_set_start_mode(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_start_t val);
1292
snd_pcm_start_t snd_pcm_sw_params_get_start_mode(const snd_pcm_sw_params_t *params);
1293
int snd_pcm_sw_params_set_xrun_mode(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_xrun_t val);
1294
snd_pcm_xrun_t snd_pcm_sw_params_get_xrun_mode(const snd_pcm_sw_params_t *params);
1302
#endif /* __ALSA_PCM_H */