USB音频,type 1数据格式描述字问题!

[复制链接]
2498|5
 楼主| 恋子炎 发表于 2013-6-16 16:13 | 显示全部楼层 |阅读模式
   @computer00 当我们把Type I format type Descriptor的bSamFreqType字段设置为0x02之后。代表设备能支持2种频率的音频格式。
如下:
/* Type I format type Descriptor */
    0x0E,           /* bLength *///原值0X0B
    0x24,           /* bDescriptorType:CS_INTERFACE */
    0x02,           /* bDescriptorSubType:FORMAT_TYPE */
    0x01,           /* bFormatType:FORMAT_TYPE_I */
    PLAY_CHANNELS,  /* bNrChannels */
    0x02,           /* bSubFrameSize */
    0x10,           /* bBitResolution */
    0x02,           /* bSamFreqType : 0 continuous; 1 discrete */
    PLAY_RATE_LO,
    PLAY_RATE_MD,
    PLAY_RATE_HI,   /* Sample Frequency */
    PLAY_44_LO,
    PLAY_44_MD,
    PLAY_44_HI,
这个代表设备能支持PLAY_RATE(我这里是48K)和PLAY_44(这里是44.1K)两种频率的播放。就不需要上位机软件对44.1K的音频文件进行SRC(采样频率转换)。
但是这个时候上位机应该会发送一个UAC类的类请求SET_CUR告诉下位机,当前播放的文件是什么样的频率。可是我没有收到这个数据是为什么。。。
而且我用BUS HOUND直接发SET_CUR是可以接受到的。。。但是用酷狗播放器却收不到。。。圈圈能帮我简单分析下不?
computer00 发表于 2013-6-16 16:19 | 显示全部楼层
这个应该要依赖操作系统和应用软件吧,能否支持可不一定哦,具体没看过。
 楼主| 恋子炎 发表于 2013-6-16 16:34 | 显示全部楼层
嗯,酷狗播放器是会发送这个请求的!
我有一台其它设备(USB声卡)能收到这个请求并附带3个byte的控制传输。
我的却不行,所以我觉得是描述字的问题,主机认为我不支持这个请求就没有发送,所以我觉得我应该修改描述符。
但是怎么修改却不知道。。圈圈能给指一个方向吗?
 楼主| 恋子炎 发表于 2013-6-16 16:40 | 显示全部楼层
@computer00   圈圈我看了你的书,里面没有音频相关的啊,不知以后会不会出呢
computer00 发表于 2013-7-1 20:14 | 显示全部楼层
那你可以用bushound什么的,抓下他的描述符来分析一下。在第二版中有增加一点音频的章节。
 楼主| 恋子炎 发表于 2013-7-9 16:14 | 显示全部楼层
恩,问题确实出在描述符!修改之后可以看到下发的数据。在UAC的规范中其实也有讲到,但是英文不好,其实我都看到那个地方了,只不过误解了英文描述的意思。。。郁闷呐
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

78

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部