-/*
- * Copyright (C) 2012 Andre Noll <maan@tuebingen.mpg.de>
- *
- * Licensed under the GPL v2. For licencing details see COPYING.
- */
+/* Copyright (C) 2012 Andre Noll <maan@tuebingen.mpg.de>, see file COPYING. */
/** \file alsa_mix.c The ALSA mixer plugin. */
PARA_INFO_LOG("snd_mixer_{open,attach,register,load}\n");
*handle = NULL;
- h = para_calloc(sizeof(*h));
+ h = zalloc(sizeof(*h));
h->card = para_strdup(dev? dev : "hw:0");
ret = snd_mixer_open(&h->mixer, 0);
if (ret < 0) {
snd_mixer_selem_id_set_name(sid, mixer_channel);
h->elem = snd_mixer_find_selem(h->mixer, sid);
if (!h->elem) {
- PARA_NOTICE_LOG("unable to find simple control '%s',%i\n",
+ PARA_NOTICE_LOG("unable to find simple control '%s',%u\n",
snd_mixer_selem_id_get_name(sid),
snd_mixer_selem_id_get_index(sid));
ret = -E_BAD_CHANNEL;
return 1;
}
-/**
- * The init function of the ALSA mixer.
- *
- * \param self The structure to initialize.
- *
- * \sa struct \ref mixer, \ref oss_mix_init().
- */
-void alsa_mix_init(struct mixer *self)
-{
- self->open = alsa_mix_open;
- self->get_channels = alsa_mix_get_channels;
- self->set_channel = alsa_mix_set_channel;
- self->close = alsa_mix_close;
- self->get = alsa_mix_get;
- self->set = alsa_mix_set;
-}
+/** The mixer operations for the ALSA mixer. */
+const struct mixer alsa_mixer = {
+ .name = "alsa",
+ .open = alsa_mix_open,
+ .get_channels = alsa_mix_get_channels,
+ .set_channel = alsa_mix_set_channel,
+ .close = alsa_mix_close,
+ .get = alsa_mix_get,
+ .set = alsa_mix_set
+};