OSDN Git Service

Removed snd_mixer_elem_count.
[android-x86/external-alsa-lib.git] / include / mixer.h
1 /****************************************************************************
2  *                                                                          *
3  *                               mixer.h                                    *
4  *                           Mixer Interface                                *
5  *                                                                          *
6  ****************************************************************************/
7
8 typedef struct _snd_mixer snd_mixer_t;
9 typedef struct _snd_mixer_class snd_mixer_class_t;
10 typedef struct _snd_mixer_info snd_mixer_info_t;
11 typedef struct _snd_mixer_elem snd_mixer_elem_t;
12 typedef int (*snd_mixer_callback_t)(snd_mixer_t *ctl,
13                                     unsigned int mask,
14                                     snd_mixer_elem_t *elem);
15 typedef int (*snd_mixer_elem_callback_t)(snd_mixer_elem_t *elem,
16                                          unsigned int mask);
17 typedef int (*snd_mixer_compare_t)(const snd_mixer_elem_t *e1,
18                                    const snd_mixer_elem_t *e2);
19
20 enum _snd_mixer_elem_type {
21         SND_MIXER_ELEM_SIMPLE,
22         SND_MIXER_ELEM_LAST = SND_MIXER_ELEM_SIMPLE,
23 };
24
25 #ifdef SND_ENUM_TYPECHECK
26 typedef struct __snd_mixer_elem_type *snd_mixer_elem_type_t;
27 #else
28 typedef enum _snd_mixer_elem_type snd_mixer_elem_type_t;
29 #endif
30
31 #define SND_MIXER_ELEM_SIMPLE ((snd_mixer_elem_type_t) SND_MIXER_ELEM_SIMPLE)
32 #define SND_MIXER_ELEM_LAST ((snd_mixer_elem_type_t) SND_MIXER_ELEM_LAST)
33
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 int snd_mixer_open(snd_mixer_t **mixer);
40 int snd_mixer_close(snd_mixer_t *mixer);
41 int snd_mixer_info(snd_mixer_t *mixer, snd_mixer_info_t *info);
42 snd_mixer_elem_t *snd_mixer_first_elem(snd_mixer_t *mixer);
43 snd_mixer_elem_t *snd_mixer_last_elem(snd_mixer_t *mixer);
44 int snd_mixer_handle_events(snd_mixer_t *mixer);
45 int snd_mixer_attach(snd_mixer_t *mixer, const char *name);
46 int snd_mixer_detach(snd_mixer_t *mixer, const char *name);
47 int snd_mixer_poll_descriptors_count(snd_mixer_t *mixer, unsigned int *count);
48 int snd_mixer_poll_descriptors(snd_mixer_t *mixer, struct pollfd *pfds, unsigned int space);
49 int snd_mixer_load(snd_mixer_t *mixer);
50 int snd_mixer_wait(snd_mixer_t *mixer, int timeout);
51 int snd_mixer_set_compare(snd_mixer_t *mixer, snd_mixer_compare_t msort);
52
53 snd_mixer_elem_t *snd_mixer_elem_next(snd_mixer_elem_t *elem);
54 snd_mixer_elem_t *snd_mixer_elem_prev(snd_mixer_elem_t *elem);
55
56 int snd_mixer_class_unregister(snd_mixer_class_t *clss);
57
58 #ifdef __cplusplus
59 }
60 #endif
61
62 /*
63  *  Simple (legacy) mixer API
64  */
65
66 enum _snd_mixer_selem_channel_id {
67         SND_MIXER_SCHN_UNKNOWN = -1,
68         SND_MIXER_SCHN_FRONT_LEFT = 0,
69         SND_MIXER_SCHN_FRONT_RIGHT,
70         SND_MIXER_SCHN_FRONT_CENTER,
71         SND_MIXER_SCHN_REAR_LEFT,
72         SND_MIXER_SCHN_REAR_RIGHT,
73         SND_MIXER_SCHN_WOOFER,
74         SND_MIXER_SCHN_LAST = 31,
75         SND_MIXER_SCHN_MONO = SND_MIXER_SCHN_FRONT_LEFT
76 };
77
78 /* Simple mixer */
79
80 typedef struct _snd_mixer_selem_info snd_mixer_selem_info_t;
81 typedef struct _snd_mixer_selem_value snd_mixer_selem_value_t;
82 typedef struct _snd_mixer_selem_id snd_mixer_selem_id_t;
83
84 #ifdef SND_ENUM_TYPECHECK
85 typedef struct __snd_mixer_selem_channel_id *snd_mixer_selem_channel_id_t;
86 #else
87 typedef enum _snd_mixer_selem_channel_id snd_mixer_selem_channel_id_t;
88 #endif
89
90 #define SND_MIXER_SCHN_UNKNOWN ((snd_mixer_selem_channel_id_t) SND_MIXER_SCHN_UNKNOWN)
91 #define SND_MIXER_SCHN_FRONT_LEFT ((snd_mixer_selem_channel_id_t) SND_MIXER_SCHN_FRONT_LEFT)
92 #define SND_MIXER_SCHN_FRONT_RIGHT ((snd_mixer_selem_channel_id_t) SND_MIXER_SCHN_FRONT_RIGHT)
93 #define SND_MIXER_SCHN_FRONT_CENTER ((snd_mixer_selem_channel_id_t) SND_MIXER_SCHN_FRONT_CENTER)
94 #define SND_MIXER_SCHN_REAR_LEFT ((snd_mixer_selem_channel_id_t) SND_MIXER_SCHN_REAR_LEFT)
95 #define SND_MIXER_SCHN_REAR_RIGHT ((snd_mixer_selem_channel_id_t) SND_MIXER_SCHN_REAR_RIGHT)
96 #define SND_MIXER_SCHN_WOOFER ((snd_mixer_selem_channel_id_t) SND_MIXER_SCHN_WOOFER)
97 #define SND_MIXER_SCHN_LAST ((snd_mixer_selem_channel_id_t) SND_MIXER_SCHN_LAST)
98 #define SND_MIXER_SCHN_MONO ((snd_mixer_selem_channel_id_t) SND_MIXER_SCHN_MONO)
99
100 #ifdef __cplusplus
101 extern "C" {
102 #endif
103
104 const char *snd_mixer_selem_channel_name(snd_mixer_selem_channel_id_t channel);
105
106 int snd_mixer_selem_register(snd_mixer_t *mixer, snd_mixer_class_t **classp);
107 void snd_mixer_selem_get_id(snd_mixer_elem_t *element,
108                             snd_mixer_selem_id_t *id);
109 snd_mixer_elem_t *snd_mixer_find_selem(snd_mixer_t *mixer,
110                                        const snd_mixer_selem_id_t *id);
111 int snd_mixer_selem_info(snd_mixer_elem_t *element,
112                          snd_mixer_selem_info_t *info);
113 int snd_mixer_selem_read(snd_mixer_elem_t *element,
114                          snd_mixer_selem_value_t *value);
115 int snd_mixer_selem_write(snd_mixer_elem_t *element,
116                           const snd_mixer_selem_value_t *value);
117
118 int snd_mixer_selem_info_is_mono(const snd_mixer_selem_info_t *info);
119 int snd_mixer_selem_info_has_channel(const snd_mixer_selem_info_t *obj, snd_mixer_selem_channel_id_t channel);
120 long snd_mixer_selem_value_get_volume(const snd_mixer_selem_value_t *obj, snd_mixer_selem_channel_id_t channel);
121 void snd_mixer_selem_value_set_volume(snd_mixer_selem_value_t *obj, snd_mixer_selem_channel_id_t channel, long value);
122 int snd_mixer_selem_value_get_mute(const snd_mixer_selem_value_t *obj, snd_mixer_selem_channel_id_t channel);
123 int snd_mixer_selem_value_get_capture(const snd_mixer_selem_value_t *obj, snd_mixer_selem_channel_id_t channel);
124 void snd_mixer_selem_value_set_mute(snd_mixer_selem_value_t *obj, snd_mixer_selem_channel_id_t channel, int mute);
125 void snd_mixer_selem_value_set_capture(snd_mixer_selem_value_t *obj, snd_mixer_selem_channel_id_t channel, int capture);
126 void snd_mixer_selem_value_set_mute_all(snd_mixer_selem_value_t *obj, int mute);
127 void snd_mixer_selem_value_set_capture_all(snd_mixer_selem_value_t *obj, int capture);
128 void snd_mixer_selem_value_set_volume_all(snd_mixer_selem_value_t *obj, long value);
129
130 #ifdef __cplusplus
131 }
132 #endif
133