我正在使用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 audio规范之外的其他方式表示采样率?
如果您无法直接回答,也许有人可以将我指向可以与我的USB设备通信的Windows或Fedora库/应用程序(出于音频目的)并注销所有LIBUSB调用,以便我可以看到它正常工作(或者开源,所以我可以自己调试。)
感谢您的协助。
答案 0 :(得分:1)
事实证明,您无法通过输入或输出端点上的设置请求执行此操作。您可以通过在界面上选择适当的备用设置来有效地设置输入采样率,因为每个备用设置只有一个采样率。在输出上,每个备用设置有三个采样率,它只是适应出现的速率。这不是典型的USB Audio 1.0行为,但它可以正常工作。