找回密码
 立即注册
查看: 73|回复: 1

USB UAC 描述符 枚举 学习

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:719
  • 最近打卡:2026-03-07 07:41:42
已绑定手机

97

主题

7247

回帖

1万

积分

超级版主

积分
13780
发表于 2026-2-21 00:58:51 | 显示全部楼层 |阅读模式
刚把UAC录音研究明白,用数组给了个正弦波

截图202602210051433950.jpg
截图202602210051548427.jpg

Audio Interface Descriptor结构:
HEADER { INPUT_TERMINAL → FEATURE_UNIT → OUTPUT_TERMINAL }

Alternate Setting 0(Alt0)的特殊作用
USB 音频流接口必须定义 “Alt0” 和 “AltN(N≥1)” 两种备用设置:
Alt0(此处代码):bNumEndpoints=0,无数据端点,是接口的 “默认空闲状态”—— 主机枚举设备时,先加载 Alt0,此时接口仅声明存在但不传输音频;
Alt1(后续代码):bNumEndpoints=1,包含 IN 端点(0x85),是 “工作状态”—— 主机启动音频采集时,会切换到 Alt1,通过端点 0x85 接收麦克风数据。
这种设计是 UAC1.0 规范的强制要求:Alt0 用于 “无数据流”,AltN 用于 “有数据流”,避免接口初始化阶段就占用端点资源。

主机的操作逻辑:
枚举设备时,读取接口 1 的 Alt0(无端点);
当需要采集麦克风音频时,发送 “Set Interface” 请求,将接口 1 切换到 Alt1;
Alt1 启用端点 0x85,开始接收麦克风的 PCM 音频数据。

锁定延迟(bLockDelayUnits + wLockDelay)的设计
bLockDelayUnits=0 + wLockDelay=0:表示禁用锁定延迟功能;
锁定延迟仅用于 “同步 / 自适应模式”:指设备从接收到主机时钟,到完成时钟同步并稳定输出音频的延迟时长;
本设备采用异步模式(本地时钟),无需同步主机时钟,因此这两个字段设为 0 是最优选择(若误设为非 0,反而会引入不必要的延迟)。

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2026-03-07 11:27:49

12

主题

541

回帖

1260

积分

金牌会员

积分
1260
发表于 2026-2-22 13:30:49 | 显示全部楼层
不错
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-7 16:59 , Processed in 0.100270 second(s), 47 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表