我正在使用 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
设置采样率值的代码
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 上工作的那种——但不是我想要的速度)。
我应该指出,采样率是从设备描述符中选择的,因此我知道该设备支持它。
那么问题是如何设置采样率?在此之前我需要做些什么吗(是的,我已经分离了所有其他接口(interface),然后声明了我想要的接口(interface))。某些设备是否期望以 USB audio 以外的方式表示采样率?规范建议?
如果您不能直接回答,也许有人可以指点我一个 Windows 或 Fedora 库/应用程序,它将与我的 USB 设备通信(用于音频目的)并注销所有 LIBUSB 调用,以便我可以看到它工作(或开源,以便我可以将自己的调试放入其中)。
感谢您的帮助。
最佳答案
事实证明,您无法通过输入或输出端点上的设置请求来执行此操作。您可以通过在界面上选择适当的替代设置来有效地设置输入采样率,因为每个替代设置只有一个采样率。在输出端,每个交替设置有三个采样率,它只适应出现的速率。这不是真正典型的 USB 音频 1.0 行为,但它有效。
关于android - 使用 libusb 在 UCG102 上设置采样率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15181734/