Fix kwargs, and modernize mixertest.py a bit

Preliminary error handling for dB volume settings
This commit is contained in:
Lars Immisch
2017-11-06 23:32:24 +01:00
parent c2cfe0211b
commit ce84e69cc1
2 changed files with 19 additions and 9 deletions

View File

@@ -1610,7 +1610,7 @@ alsamixer_getvolume(alsamixer_t *self, PyObject *args, PyObject *kw)
PyObject *result; PyObject *result;
PyObject *item; PyObject *item;
static char *kwlist[] = { "channel", "direction", "unit", NULL }; static char *kwlist[] = { "direction", "unit", NULL };
if (!PyArg_ParseTupleAndKeywords(args, kw, "|Oi:getvolume", kwlist, &dirobj, &unit)) if (!PyArg_ParseTupleAndKeywords(args, kw, "|Oi:getvolume", kwlist, &dirobj, &unit))
return NULL; return NULL;
@@ -1646,7 +1646,13 @@ alsamixer_getvolume(alsamixer_t *self, PyObject *args, PyObject *kw)
ival)); ival));
} }
else { else {
snd_mixer_selem_get_playback_dB(elem, channel, &ival); int rc = snd_mixer_selem_get_playback_dB(elem, channel, &ival);
if (rc < 0) {
PyErr_Format(ALSAAudioError,
"snd_mixer_selem_get_playback_dB failed: %d",
rc);
return NULL;
}
item = PyFloat_FromDouble(ival / 100.0); item = PyFloat_FromDouble(ival / 100.0);
} }
PyList_Append(result, item); PyList_Append(result, item);

View File

@@ -46,13 +46,17 @@ def show_mixer(name, kwargs):
print("Capabilities: %s %s" % (' '.join(mixer.volumecap()), print("Capabilities: %s %s" % (' '.join(mixer.volumecap()),
' '.join(mixer.switchcap()))) ' '.join(mixer.switchcap())))
volumes = mixer.getvolume() volumes = mixer.getvolume()
for i in range(len(volumes)): for i, v in enumerate(volumes):
print("Channel %i volume: %i%%" % (i,volumes[i])) print("Channel %i volume: %.02f%%" % (i, v))
volumes = mixer.getvolume(unit=alsaaudio.dB)
for i, v in enumerate(volumes):
print("Channel %i volume: %.02fdB" % (i, v))
try: try:
mutes = mixer.getmute() mutes = mixer.getmute()
for i in range(len(mutes)): for i, m in enumerate(mutes):
if mutes[i]: if m:
print("Channel %i is muted" % i) print("Channel %i is muted" % i)
except alsaaudio.ALSAAudioError: except alsaaudio.ALSAAudioError:
# May not support muting # May not support muting
@@ -60,8 +64,8 @@ def show_mixer(name, kwargs):
try: try:
recs = mixer.getrec() recs = mixer.getrec()
for i in range(len(recs)): for i, r in enumerate(recs):
if recs[i]: if r:
print("Channel %i is recording" % i) print("Channel %i is recording" % i)
except alsaaudio.ALSAAudioError: except alsaaudio.ALSAAudioError:
# May not support recording # May not support recording