我正在使用 libusb 与 UCG102(Guitar Link)USB 设备通信,并且在使用同步控制请求设置采样率时得到 -9(LIBUSB_ERROR_PIPE,这意味着不支持参数)。这是 LIBUSB 记录的基本请求详细信息,您看不到实际的采样率,因为根据规范它位于 3 字节缓冲区中:
03-02 14:33:13.173: I/LIBUSB(9480): bmRequestType=22, bRequest=01, wValue=0100, wIndex=0084, wLength=0003
设置 sampleRate 值的代码
byte[] param2 = new byte[3];
param2[2] = (byte)(sampleRate >> 16); //0x44;
param2[1] = (byte)(sampleRate >> 8); // 0xAC;
param2[0] = (byte) (sampleRate & 0xff); //0x00;
相同的代码适用于许多其他 USB 音频设备。然后我继续做同步音频(在 UCG102 上工作的那种——但不是我想要的速率)。
我应该指出,采样率是从设备描述符中选择的,所以我知道这个设备支持它。
所以问题是如何设置采样率?在此之前我需要做些什么吗(是的,我已经分离了所有其他接口,然后声明了我想要的接口)。某些设备是否期望以不同于USB 音频规范建议的方式表示的采样率?
如果您不能直接回答,也许有人可以将我指向一个 Windows 或 Fedora 库/应用程序,它将与我的 USB 设备(用于音频目的)通信并注销所有 LIBUSB 调用,以便我可以看到它正在工作(或开源所以我可以把我自己的调试放进去)。
感谢您的帮助。