Biu~笔记:高通蓝牙ADK6.x(12)-- earbud中cvc罢工的一天

        Biu~前面两期和大家分享了chain的链路架构,和在sink中替换cvc模块的应用。那么这一期就带大家把earbud中的cvc也替换掉,毕竟斩草要除根嘛(*・ω< ) 

        这里要注意的是,earbud中对chain的写法和sink中是不一样的,具体不同,可参考《Biu~笔记:高通蓝牙ADK(24)--audio chain》这篇博文。了解完earbud chain的架构之后,要替换那就需要先从chain文件入手,我选用了chain_sco_wb_2mic.chain做为例子。

       

        第一步是要将cvc 模块的id修改为替换模块的id,这个id需要在cap_id_prim.h中的CAP_ID枚举列表下添加,记得这个id必须和dkcs文件中定义的id一致。


        第二步修改模块接口,原cvc模块的输入接口有三个,一个是参考信号,另外两个是mic信号,因为我们的模块是没用到参考信号,所以我把这个接口删除,把mic的接口移到了0和1接口。此外,默认代码有一个参考信号接口的连接,现在不使用了就需要把这个连接删除"connection source="OPR_SCO_AEC.REFERENCE" sink="OPR_CVC_SEND.REFERENCE""

        第三步将替换的算法文件dkcs,放到工程目录下,并添加到工程中


        第四步就是要告诉工程代码,如何去调用这个算法文件,文件av_headset_kymera.c里有个数组capability_bundle专门存放可下载算法dkcs文件的信息,只要把我们算法文件名和可在哪个核运行的信息放在这里,系统就会根据chain中定义的ID遍历数组中每个算法文件,找到ID对应的,自动进行加载,所以还是很方便去添加的。




        最后一步就是删除原有对cvc模块操作的代码和添加自己对算法模块操作的代码(我的模块不需要我做什么,所以没添加代码),可通过搜索OPR_CVC_SEND找到对应的操作代码,例如:

并在av_headset_config.h中修改

#define appConfigScoMic2()                      (1)  

#define appConfigVoiceQualityMeasurementEnabled()  FALSE

 

        完成上述操作基本就完成替换了,但是用于宽带和窄带的采样率不一样,所以是要多加一个dkcs文件还是通过操作发消息给模块变更参数,这就取决于dkcs这个模块怎么运作了。同时earbud中有转发的功能,因此在相关的chain_scofwd_xb_xmic.chain中也要做相同的修改。

 

        以上是本期博文的全部内容,如有疑问就别在博文下方评论留言了,有什么疑问或想了解的当面和我说(如果你知道我是谁的话ヽ( ̄▽ ̄)و),我会尽量安排上(o´ω`o)و。谢谢大家浏览,我们下期再见。

 

多看文档,多上官网

多看文档,多上官网

多看文档,多上官网


 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论