alsa_mixer: add mixer_index option
This allows you to select controls with duplicate names.
This commit is contained in:
parent
70d322b296
commit
05dfdfdb39
2
NEWS
2
NEWS
|
@ -50,6 +50,8 @@ ver 0.15 (200?/??/??)
|
|||
* mixers:
|
||||
- rewritten mixer code to support multiple mixers
|
||||
- new pulseaudio mixer
|
||||
- alsa: new mixer_index option supports choosing between multiple
|
||||
identically-named controls on a device.
|
||||
* Add audio archive extraction support:
|
||||
- bzip2
|
||||
- iso9660
|
||||
|
|
|
@ -293,6 +293,12 @@ This specifies which mixer control to use (sometimes referred to as the
|
|||
"device"). Examples of mixer controls are PCM, Line1, Master, etc. An example
|
||||
for OSS is "Pcm", and an example for alsa is "PCM".
|
||||
.TP
|
||||
.B mixer_index <mixer index>
|
||||
A number identifying the index of the named mixer control. This is
|
||||
probably only useful if your alsa device has more than one
|
||||
identically\-named mixer control. The default is "0". (Use "amixer
|
||||
scontrols" to see the list of controls with their indexes)
|
||||
.TP
|
||||
.B use_mmap <yes or no>
|
||||
Setting this allows you to use memory-mapped I/O. Certain hardware setups may
|
||||
benefit from this, but most do not. Most users do not need to set this. The
|
||||
|
|
|
@ -181,6 +181,7 @@ input {
|
|||
# format "44100:16:2" # optional
|
||||
# mixer_device "default" # optional
|
||||
# mixer_control "PCM" # optional
|
||||
# mixer_index "0" # optional
|
||||
#}
|
||||
#
|
||||
# An example of an OSS output:
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#define VOLUME_MIXER_ALSA_DEFAULT "default"
|
||||
#define VOLUME_MIXER_ALSA_CONTROL_DEFAULT "PCM"
|
||||
#define VOLUME_MIXER_ALSA_INDEX_DEFAULT 0
|
||||
|
||||
struct alsa_mixer {
|
||||
/** the base mixer class */
|
||||
|
@ -32,6 +33,7 @@ struct alsa_mixer {
|
|||
|
||||
const char *device;
|
||||
const char *control;
|
||||
unsigned int index;
|
||||
|
||||
snd_mixer_t *handle;
|
||||
snd_mixer_elem_t *elem;
|
||||
|
@ -51,6 +53,8 @@ alsa_mixer_init(const struct config_param *param)
|
|||
VOLUME_MIXER_ALSA_DEFAULT);
|
||||
am->control = config_get_block_string(param, "mixer_control",
|
||||
VOLUME_MIXER_ALSA_CONTROL_DEFAULT);
|
||||
am->index = config_get_block_unsigned(param, "mixer_index",
|
||||
VOLUME_MIXER_ALSA_INDEX_DEFAULT);
|
||||
|
||||
return &am->base;
|
||||
}
|
||||
|
@ -117,8 +121,9 @@ alsa_mixer_open(struct mixer *data)
|
|||
|
||||
while (elem) {
|
||||
if (snd_mixer_elem_get_type(elem) == SND_MIXER_ELEM_SIMPLE) {
|
||||
if (strcasecmp(am->control,
|
||||
snd_mixer_selem_get_name(elem)) == 0) {
|
||||
if ((strcasecmp(am->control,
|
||||
snd_mixer_selem_get_name(elem)) == 0) &&
|
||||
(am->index == snd_mixer_selem_get_index(elem))) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue