我正在使用libusb与UCG102(吉他链接)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上可以进行这种工作-但不是我想要的速度)。

我应该指出,采样率已从设备描述符中选择,因此我知道此设备支持该采样率。

所以问题是我如何设置采样率?在此之前我需要做些什么(是的,我已经分离了所有其他接口(interface),然后声明了我想要的接口(interface))。某些设备是否期望以USB audio规范所建议的方式表示的采样率?

如果您无法直接回答,也许有人可以将我指向Windows或Fedora库/应用程序,该库/应用程序将与我的USB设备通信(出于音频目的)并注销所有LIBUSB call ,以便我可以看到它正常工作(或开源)因此我可以将自己的调试信息放入其中)。

感谢您的协助。

最佳答案

事实证明,对于输入或输出端点上的set请求,您无法执行此操作。您可以通过在界面上选择适当的替代设置来有效地设置输入采样率,因为每个替代设置只有一个采样率。在输出上,每个备用设置都有三个采样率,它仅适应出现的速率。这实际上不是典型的USB Audio 1.0行为,但可以。

关于android - 使用libusb在UCG102上设置采样率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15181734/

10-11 22:17