高通蓝牙ADK-- 48k的usb voice

本文介绍了如何修改高通蓝牙ADK,以实现48k采样率立体声的USB音频输出和16k单声道音频上行。通过调整音频链路和移除限制采样率的模块,如CVC接收器,来达到目标功能。文中提供了修改声卡参数和音频链路的详细步骤,并分享了相关补丁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     首先我们得了解audio和voice除了采样率和通道数不同外,代码中的音频链路chain也是独立的,audio的链路是用于传输高品质音乐,所以里面不会有mic的连接,voice的链路需要处理声音,里面会有cvc,aec等声音处理模块,并且声音是单声道,而问题就是在这些声音处理模块。

     新的ADK和旧的ADK都有一个诟病,就是做usb音频设备时,要么只能做48k采样率双声道的audio还不能用mic的声卡设备,或者是16k采样率单声道的voice带mic的声卡设备。以前的ADK是二选一,新的就弄了两个声卡。两个声卡是能满足用户既想听高品质音乐又能通话的需求,但这怪怪的,明明一个声卡能做的事,非要分两个声卡来做。暂不讨论这设计出于什么缘由,我们就自己动手改想要的功能好了。

       cvc分上下行,下行就是输出到speaker的链路,其中有个cvc receiver的模块,这模块处理的采样率有8k,16k,新的芯片有支持到32k,就是没有48k,所以高通做法就是做两条音频链路,带cvc的链路就是用在voice,不带的就是audio。→_→ 但是两条不一样的链路也不一定要两个声卡呀~ 用到mic时用voice链路,不用到mic时用audio链路,代码根据mic的使用情况,自己切换音频链路,这不也挺流畅的吗(867x dongle代码就是用了这个逻辑,悄悄告诉你们ADK6.4的sink我也改成了这个逻辑,但是我不会出这部分博文啦想要的就找我们)。另外一个方法就是,不要cvc receiver这个模块,因为即便是hfp中的voice也不怎么调到cvc receiver里面的参数,即使要调也就EQ、volume这些,这些我们用EQ和volume control模块也能实现。所以本编觉得,把cvc receiver拖出去砍了,不让这个瘟神限制采样率,下面就是介绍实现这种做法的逻辑,想要补丁的就直接跳到片尾下载。

       默认代码中是有两个宏INCLUDE_USB_VOICE INCLUDE_USB_AUDIO,分别打开voice和audio声卡,因为audio没有用到mic,所以我们只打开voice,这样代码修改量较少,并只将下行(即usb到speaker)改成48k采样率和变成立体声就好了,这样就能实现48k

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值