Mercurial > audlegacy-plugins
diff src/alsa/alsa.c @ 2610:1e4d147bdc2b
Combine init.c into alsa.c and use a preprocessor define for configdb ID for consistency.
| author | Matti Hamalainen <ccr@tnsp.org> |
|---|---|
| date | Wed, 21 May 2008 16:42:00 +0300 |
| parents | c730f0212456 |
| children | 8b7a44631121 |
line wrap: on
line diff
--- a/src/alsa/alsa.c Wed May 21 16:38:10 2008 +0300 +++ b/src/alsa/alsa.c Wed May 21 16:42:00 2008 +0300 @@ -17,9 +17,64 @@ */ #include "alsa.h" +#include <glib.h> #include <stdlib.h> +#include <dlfcn.h> +#include <ctype.h> + +struct alsa_config alsa_cfg; + + +static void alsa_cleanup(void) +{ + if (alsa_cfg.pcm_device) { + free(alsa_cfg.pcm_device); + alsa_cfg.pcm_device = NULL; + } + + if (alsa_cfg.mixer_device) { + free(alsa_cfg.mixer_device); + alsa_cfg.mixer_device = NULL; + } +} + + +static void alsa_init(void) +{ + mcs_handle_t *cfgfile; -OutputPlugin alsa_op = + memset(&alsa_cfg, 0, sizeof (alsa_cfg)); + + alsa_cfg.buffer_time = 500; + alsa_cfg.period_time = 100; + alsa_cfg.debug = 0; + alsa_cfg.vol.left = 100; + alsa_cfg.vol.right = 100; + + cfgfile = aud_cfg_db_open(); + if (!aud_cfg_db_get_string(cfgfile, ALSA_CFGID, "pcm_device", + &alsa_cfg.pcm_device)) + alsa_cfg.pcm_device = g_strdup("default"); + g_message("device: %s", alsa_cfg.pcm_device); + if (!aud_cfg_db_get_string(cfgfile, ALSA_CFGID, "mixer_device", + &alsa_cfg.mixer_device)) + alsa_cfg.mixer_device = g_strdup("PCM"); + aud_cfg_db_get_int(cfgfile, ALSA_CFGID, "mixer_card", &alsa_cfg.mixer_card); + aud_cfg_db_get_int(cfgfile, ALSA_CFGID, "buffer_time", &alsa_cfg.buffer_time); + aud_cfg_db_get_int(cfgfile, ALSA_CFGID, "period_time", &alsa_cfg.period_time); + + aud_cfg_db_get_bool(cfgfile, ALSA_CFGID, "debug", &alsa_cfg.debug); + aud_cfg_db_close(cfgfile); + + if (dlopen("libasound.so.2", RTLD_NOW | RTLD_GLOBAL) == NULL) + { + g_message("Cannot load alsa library: %s", dlerror()); + /* FIXME, this plugin wont work... */ + } +} + + +static OutputPlugin alsa_op = { .description = "ALSA Output Plugin", .init = alsa_init, @@ -43,16 +98,3 @@ OutputPlugin *alsa_oplist[] = { &alsa_op, NULL }; DECLARE_PLUGIN(alsa, NULL, NULL, NULL, alsa_oplist, NULL, NULL, NULL, NULL) - -void alsa_cleanup(void) -{ - if (alsa_cfg.pcm_device) { - free(alsa_cfg.pcm_device); - alsa_cfg.pcm_device = NULL; - } - - if (alsa_cfg.mixer_device) { - free(alsa_cfg.mixer_device); - alsa_cfg.mixer_device = NULL; - } -}
