ALSA project - the C library reference
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
pcm_ioplug.h
Go to the documentation of this file.
1
10
/*
11
* ALSA external PCM plugin SDK
12
*
13
* Copyright (c) 2005 Takashi Iwai <tiwai@suse.de>
14
*
15
* This library is free software; you can redistribute it and/or modify
16
* it under the terms of the GNU Lesser General Public License as
17
* published by the Free Software Foundation; either version 2.1 of
18
* the License, or (at your option) any later version.
19
*
20
* This program is distributed in the hope that it will be useful,
21
* but WITHOUT ANY WARRANTY; without even the implied warranty of
22
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
* GNU Lesser General Public License for more details.
24
*
25
* You should have received a copy of the GNU Lesser General Public
26
* License along with this library; if not, write to the Free Software
27
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28
*
29
*/
30
31
#ifndef __ALSA_PCM_IOPLUG_H
32
#define __ALSA_PCM_IOPLUG_H
33
42
enum
{
43
SND_PCM_IOPLUG_HW_ACCESS
= 0,
44
SND_PCM_IOPLUG_HW_FORMAT
,
45
SND_PCM_IOPLUG_HW_CHANNELS
,
46
SND_PCM_IOPLUG_HW_RATE
,
47
SND_PCM_IOPLUG_HW_PERIOD_BYTES
,
48
SND_PCM_IOPLUG_HW_BUFFER_BYTES
,
49
SND_PCM_IOPLUG_HW_PERIODS
,
50
SND_PCM_IOPLUG_HW_PARAMS
51
};
52
54
typedef
struct
snd_pcm_ioplug
snd_pcm_ioplug_t
;
56
typedef
struct
snd_pcm_ioplug_callback
snd_pcm_ioplug_callback_t
;
57
#ifdef DOC_HIDDEN
58
/* redefine typedefs for stupid doxygen */
59
typedef
snd_pcm_ioplug
snd_pcm_ioplug_t
;
60
typedef
snd_pcm_ioplug_callback
snd_pcm_ioplug_callback_t
;
61
#endif
62
63
/*
64
* bit flags for additional conditions
65
*/
66
#define SND_PCM_IOPLUG_FLAG_LISTED (1<<0)
67
#define SND_PCM_IOPLUG_FLAG_MONOTONIC (1<<1)
69
/*
70
* Protocol version
71
*/
72
#define SND_PCM_IOPLUG_VERSION_MAJOR 1
73
#define SND_PCM_IOPLUG_VERSION_MINOR 0
74
#define SND_PCM_IOPLUG_VERSION_TINY 2
78
#define SND_PCM_IOPLUG_VERSION ((SND_PCM_IOPLUG_VERSION_MAJOR<<16) |\
79
(SND_PCM_IOPLUG_VERSION_MINOR<<8) |\
80
(SND_PCM_IOPLUG_VERSION_TINY))
81
83
struct
snd_pcm_ioplug
{
88
unsigned
int
version
;
92
const
char
*
name
;
93
unsigned
int
flags
;
94
int
poll_fd
;
95
unsigned
int
poll_events
;
96
unsigned
int
mmap_rw
;
100
const
snd_pcm_ioplug_callback_t
*
callback
;
104
void
*
private_data
;
108
snd_pcm_t
*
pcm
;
109
110
snd_pcm_stream_t
stream
;
111
snd_pcm_state_t
state
;
112
volatile
snd_pcm_uframes_t
appl_ptr
;
113
volatile
snd_pcm_uframes_t
hw_ptr
;
114
int
nonblock
;
116
snd_pcm_access_t
access
;
117
snd_pcm_format_t
format
;
118
unsigned
int
channels
;
119
unsigned
int
rate
;
120
snd_pcm_uframes_t
period_size
;
121
snd_pcm_uframes_t
buffer_size
;
122
};
123
125
struct
snd_pcm_ioplug_callback
{
129
int (*
start
)(
snd_pcm_ioplug_t
*io);
133
int (*
stop
)(
snd_pcm_ioplug_t
*io);
137
snd_pcm_sframes_t
(*
pointer
)(
snd_pcm_ioplug_t
*io);
141
snd_pcm_sframes_t
(*
transfer
)(
snd_pcm_ioplug_t
*io,
142
const
snd_pcm_channel_area_t
*areas,
143
snd_pcm_uframes_t
offset,
144
snd_pcm_uframes_t
size);
148
int (*
close
)(
snd_pcm_ioplug_t
*io);
152
int (*
hw_params
)(
snd_pcm_ioplug_t
*io,
snd_pcm_hw_params_t
*params);
156
int (*
hw_free
)(
snd_pcm_ioplug_t
*io);
160
int (*
sw_params
)(
snd_pcm_ioplug_t
*io,
snd_pcm_sw_params_t
*params);
164
int (*
prepare
)(
snd_pcm_ioplug_t
*io);
168
int (*
drain
)(
snd_pcm_ioplug_t
*io);
172
int (*
pause
)(
snd_pcm_ioplug_t
*io,
int
enable);
176
int (*
resume
)(
snd_pcm_ioplug_t
*io);
180
int (*
poll_descriptors_count
)(
snd_pcm_ioplug_t
*io);
184
int (*
poll_descriptors
)(
snd_pcm_ioplug_t
*io,
struct
pollfd *pfd,
unsigned
int
space);
188
int (*
poll_revents
)(
snd_pcm_ioplug_t
*io,
struct
pollfd *pfd,
unsigned
int
nfds,
unsigned
short
*revents);
192
void (*
dump
)(
snd_pcm_ioplug_t
*io,
snd_output_t
*out);
196
int (*
delay
)(
snd_pcm_ioplug_t
*io,
snd_pcm_sframes_t
*delayp);
200
snd_pcm_chmap_query_t
**(*query_chmaps)(
snd_pcm_ioplug_t
*io);
204
snd_pcm_chmap_t
*(*get_chmap)(
snd_pcm_ioplug_t
*io);
208
int (*
set_chmap
)(
snd_pcm_ioplug_t
*io,
const
snd_pcm_chmap_t
*map);
209
};
210
211
212
int
snd_pcm_ioplug_create
(
snd_pcm_ioplug_t
*io,
const
char
*name,
213
snd_pcm_stream_t
stream,
int
mode);
214
int
snd_pcm_ioplug_delete
(
snd_pcm_ioplug_t
*io);
215
216
/* update poll_fd and mmap_rw */
217
int
snd_pcm_ioplug_reinit_status
(
snd_pcm_ioplug_t
*ioplug);
218
219
/* get a mmap area (for mmap_rw only) */
220
const
snd_pcm_channel_area_t
*
snd_pcm_ioplug_mmap_areas
(
snd_pcm_ioplug_t
*ioplug);
221
222
/* clear hw_parameter setting */
223
void
snd_pcm_ioplug_params_reset
(
snd_pcm_ioplug_t
*io);
224
225
/* hw_parameter setting */
226
int
snd_pcm_ioplug_set_param_minmax
(
snd_pcm_ioplug_t
*io,
int
type,
unsigned
int
min,
unsigned
int
max);
227
int
snd_pcm_ioplug_set_param_list
(
snd_pcm_ioplug_t
*io,
int
type,
unsigned
int
num_list,
const
unsigned
int
*list);
228
229
/* change PCM status */
230
int
snd_pcm_ioplug_set_state
(
snd_pcm_ioplug_t
*ioplug,
snd_pcm_state_t
state);
231
234
#endif
/* __ALSA_PCM_IOPLUG_H */
Generated on Tue Apr 7 2015 16:21:42 for ALSA project - the C library reference by
1.8.3.1