浅谈 USB Audio(1)------ Feedback端点作用

10 篇文章 2 订阅

前不久有网友和同行问我关于 usb audio feedback 端点的种种问题,于是笔者在这里总结一下。

1.Feedback 端点描述符

Audio1.0 Audio2.0 音频端点描述符是有区别的。如下图:

Audio 1.0 标准音频端点长度为9Byte,音频数据端点最后一个直接是用来描述,同步端点(Feedback 端点,1.0叫做 Synch 端点)的映射地址(Speaker端点使用)

 

 Audio 1.0 / 2.0 feedback端点通过修改 binterval 和 bRefresh 控制 feedback端点更新间隔速率。

        ----------------- Endpoint Descriptor -----------------  1.0
bLength                  : 0x09 (9 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
bmAttributes             : 0x15 (TransferType=Isochronous  SyncType=Asynchronous  EndpointType=Feedback)
wMaxPacketSize           : 0x0004
bInterval                : 0x04 (4 ms)
bRefresh                 : 0x05 (32 ms)
bSynchAddress            : 0x00

        ----------------- Endpoint Descriptor -----------------  2.0
bLength                  : 0x07 (7 bytes)
bDescriptorType          : 0x05 (Endpoint Descriptor)
bEndpointAddress         : 0x82 (Direction=IN EndpointID=2)
bmAttributes             : 0x11 (TransferType=Isochronous  SyncType=None  EndpointType=Feedback)
wMaxPacketSize           : 0x0004
bInterval                : 0x04 (4 ms)

2.Feedback 端点用来干什么

         Feedback端点实际反应的是当前USB Audio设备的采样率,主机通过端点In接受到Feedback信息,可以控制Speaker 输出包大小,来保证主从同步的问题。

3.Feedback 端点怎么换算

Audio 1.0 标准采用 10.14 标准计算:

feedbackValue = ((curSampleFrequency/1000)<<14)|((curSampleFrequency%1000)<<4);  

Audio 2.0 标准采用 16.16 标准计算:

feedbackValue = ((curSampleFrequency/1000)<<13|(curSampleFrequency%1000)<<3);

4.Feedback端点为什么有些主机不会请求

        应用当中我们使用的主机种类繁多,XP  Win7  Win10  mac  linux  ipad iphone android 等等,系统版本也有区别,Feedback端点反馈,是基于主机的请求,有些主机用不上是因为,在Set Interface的时候,将两个接口打开了(Speaker和Recoder),这时候主机可以通过,Recoder的端点IN来反映出设备的采样率信息(利用音频外设,如I2S,每次中断将数据写入缓冲,然后再根据Audio等时传输特点,在固定时间将准备好的音频数据提交给端点IN(提交的数量可以动态调控缓冲区),从而实现主从动态调控)。像AISO驱动,部分苹果设备是这种同步的方式

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值