我正在使用Linux(2.6.39内核)并尝试找到一种方法,允许我从主机Linux OS向Jabra设备发送卷递增/递减命令。我在Windows和Ubuntu中看到了这个功能,从PC控制音量改变了Jabra音量。
我能够接受从Jabra到主机操作系统的消费者HID卷增量/减量命令,但不是相反。此外,我可以使用HIDIOCSUSAGE ioctl向Jabra发送静音或摘机命令,但我无法在官方USB使用表document中找到音量控制的相应使用ID。
我不确定来自主机的卷命令是否确实是通过HID或某些其他API(例如snd-usb-audio内核模块)发送的。
感谢您的见解。
答案 0 :(得分:0)
然后找出该混音器控件的名称和有效范围 只执行:
system("amixer cset name='Master Playback Volume' 42");
或直接访问控件:
#include <stdio.h>
#include <stdlib.h>
#include <alsa/asoundlib.h>
static void check(int err, const char *f)
{
if (err < 0) {
fprintf(stderr, "%s failed: %s\n", f, snd_strerror(err));
exit(EXIT_FAILURE);
}
}
#define CHECK(f) check(f, #f)
int main()
{
snd_ctl_t *ctl;
snd_ctl_elem_value_t *value;
CHECK(snd_ctl_open(&ctl, "hw:1", 0)); // card number
snd_ctl_elem_value_alloca(&value);
snd_ctl_elem_value_set_interface(value, SND_CTL_ELEM_IFACE_MIXER);
snd_ctl_elem_value_set_name(value, "Master Playback Volume");
snd_ctl_elem_value_set_integer(value, 0, 42);
CHECK(snd_ctl_elem_write(ctl, value));
snd_ctl_close(ctl);
return 0;
}