android - 使用 libusb 在 UCG102 上设置采样率

标签 android audio usb audio-streaming libusb

我正在使用 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/

相关文章:

android - 保留对 SQLiteDatabase 的全局引用?

使用 ExoPlayer 的 Android MediaPlayer 持久缓存

android - 获取上下文的问题

iphone - 音乐播放器只播放一首轨道

html - 立即播放 HTML5 音频而不等待整个缓冲完成?

android - 谷歌地图(谷歌地图 Android v2) Activity 在切换 USB 模式时崩溃

java - 我想检测滚动事件的结束

ios - 一键停止所有音频 AVAudioPlayer

android - 从 PC 向 Android 手机发送命令 - 通过物理连接(USB、串口等)

node.js - 如何获取已安装的 USB 设备的名称?