1

我正在使用 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 调用,以便我可以看到它正在工作(或开源所以我可以把我自己的调试放进去)。

感谢您的帮助。

4

1 回答 1

1

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

于 2013-03-09T13:07:51.327 回答