Biu~笔记:高通蓝牙ADK(24)--audio chain

        Biu~观众老爷们,前面更新了一篇6.x的chain解析,这篇接着带大家了解一下21.x中的chain构造。但这部分也不仅仅是21.x中独有的,而是6.x到21.x中earbud工程都是用这一套架构的。

        在earbud工程中,会引入一个.chain的文件。这也是和sink工程最大的差别。在这个chain文件中,用了xml的格式把音频链路中的模块、输入输出接口和连接点都一一列出来了,根据这些信息基本上都是可以在脑里想象出他的链路是怎么样的。但也和sink的应用一样,一个chain文件里面只包含这条链路的重要组成部分,而完整的audio chain是多个chain文件协同组合得来的,怎么组合就要看当时的环境因素了。

        首先我们从chain文件开始看,以chain_sco_wb_2mic.chain为例,如果熟悉XML语言的应该会秒懂,不熟悉的也没关系,这部分语言并不会很难。这里无非就是一个大元素"chain"里面包含了五个子元素"include_header"  "operator"  "input"  "output"  "connection",接下来我们一一解释这些元素:(因为平台对书名号识别的原因,这里的元素用书名号括起来会显示不了,所以用引号代替一下)

       

        "chain" : 主元素,属性name用来标记和生成一些变量名;属性id不会用到,常为0;属性generate_operator_roles_enum和generate_endpoint_roles_enum一般为false,因为operator role和endpoint role的名字会在kymera_chain_roles.h的文件中声明,定义role名是将模块id和接口id映射出来,程序是通过role名来调用模块的,这样当模块变更时,一般都不需要修改代码。

 

       

        "include_header" : 这个元素在生成.c时,会将name中的参数include到.c中

       

        "operator": 主要元素,属性name表示模块的operator role名(同chain中的说明);属性id为模块真正的capability id,如果是平台自带的模块,可在“Kymera Capability Library User Guide 80-CF976-1”这个文档中找到详细的介绍;属性priority可理解为模块的重要程度。这个元素下还会有两个子元素,"sink"和"source",两个分别表示这个模块的接收端和发送端(即输入端和输出端),其属性name可自定义,会在本文件中后面的元素中用到(接口使用方式为"operator"的name+ '.'+"sink"或"source"的name);另外一个属性terminal表示这模块的接口,这个值是根据模块实际接口值来设置的,具体可查询“80-CF976-1”这个文档。输入和输出接口的上限也取决于模块定义的接口上限,所以有的时候会看到很多"sink"或"source"。



       

        "input"("output"): 为这条链路的输入口(输出口),属性sink(source)是指定到模块的具体接口;属性role是endpoint role名(同chain中的说明)

       

        "connection": 该元素描述两个模块的接口相接,属性source为前一个模块的输出口;属性sink为后一个模块的输入口。

通过以上元素就能定义完一个chain,但系统不会直接认这个文件,所以在编译时,会根据这个chain文件生成对应的.c 和.h文件,里面用结构体变量方式将上面描述的数据存起来,最终系统会调用chain_config_t这个结构体变量的数据去使用这个chain。在看代码时可能会只看到.h文件,看不到变量原型,因为.c是中间产物,工程不会将它链接起来,但是这两个文件都是在chain文件的同一个目录下,仔细看的话,chain_config_t这个结构体里面的变量也不是全部使用完,对比博文<Biu~笔记:高通蓝牙ADK6.x(10)-- chain是什么?>的描述,这里使用的就是sink中没使用的那部分变量。所以整一个结构体提供了两种chain的使用方法,强迫症患者就不要纠结为什么结构体内别的变量不使用的问题了。另外由于.c和.h是中间产物,所以要修改chain时必须要在.chain文件中修改。


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

 

多看文档,多上官网

多看文档,多上官网

多看文档,多上官网

 


 

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

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

评论