diff options
Diffstat (limited to 'src/audioio.cc')
-rw-r--r-- | src/audioio.cc | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/audioio.cc b/src/audioio.cc index f3dd449..5da202a 100644 --- a/src/audioio.cc +++ b/src/audioio.cc @@ -219,6 +219,42 @@ int aio_get_capture_mixer_level_range(struct aio_t *h, float *min, float *max) return get_mixer_level_range(h->source_mixer, min, max); } +int aio_get_enum_value(struct aio_t *h, const char *name, char *value, + size_t maxsize) +{ + CHECK_HANDLE(h); + + Mixer *m = h->device->getMixer(name); + if(!m) return NO_SUCH_ENUM; + + if(!m->isEnum()) { + delete m; + return NO_SUCH_ENUM; + } + + std::string e = m->enumValue(); + snprintf(value, maxsize, "%s", e.c_str()); + + return 0; +} + +int aio_set_enum_value(struct aio_t *h, const char *name, const char *value) +{ + CHECK_HANDLE(h); + + Mixer *m = h->device->getMixer(name); + if(!m) return NO_SUCH_ENUM; + + if(!m->isEnum()) { + delete m; + return NO_SUCH_ENUM; + } + + m->setEnumValue(value); + + return 0; +} + int aio_get_samplerate(struct aio_t *h) { CHECK_HANDLE(h); |