X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/460b9539a7c15580e41a71bbc0f47ae776238915..04024c2cafab56ea76a9a2b35097584d6db98c06:/lib/mixer.h diff --git a/lib/mixer.h b/lib/mixer.h index 99fbef2..5e05c6a 100644 --- a/lib/mixer.h +++ b/lib/mixer.h @@ -1,6 +1,6 @@ /* * This file is part of DisOrder - * Copyright (C) 2004 Richard Kettlewell + * Copyright (C) 2004, 2007 Richard Kettlewell * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,20 +17,48 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */ +/** @file lib/mixer.h + * @brief Mixer support + */ #ifndef MIXER_H #define MIXER_H -int mixer_channel(const char *c); -/* convert @c@ to a channel number, or return -1 if it does not match */ +/** @brief Definition of a mixer */ +struct mixer { + /** @brief API used by this mixer */ + int api; -int mixer_control(int *left, int *right, int set); -/* get/set the current level. If @set@ is true then the level is set - * according to the pointers. In either case the eventual level is - * returned via the pointers. - * - * Returns 0 on success and -1 on error. - */ + /** @brief Get the volume + * @param left Where to store left-channel volume + * @param right Where to store right-channel volume + * @return 0 on success, non-0 on error + */ + int (*get)(int *left, int *right); + + /** @brief Set the volume + * @param left Pointer to target left-channel volume + * @param right Pointer to target right-channel volume + * @return 0 on success, non-0 on error + * + * @p left and @p right are updated with the actual volume set. + */ + int (*set)(int *left, int *right); + + /** @brief Default device */ + const char *device; + + /** @brief Default channel */ + const char *channel; +}; + +int mixer_control(int api, int *left, int *right, int set); +const char *mixer_default_device(int api); +const char *mixer_default_channel(int api); +int mixer_supported(int api); + +extern const struct mixer mixer_oss; +extern const struct mixer mixer_alsa; #endif /* MIXER_H */ @@ -40,4 +68,3 @@ c-basic-offset:2 comment-column:40 End: */ -/* arch-tag:d70a8b1bc1e79efcad02d20259246454 */