海思的音频子系统

目前hisixx Audio子系统的API按照功能分为4个部分:

AIO VQE Enc/Dec 内置codec

1 AIO

1.1 实现:
1)语音的输入输出单元,和其他家soc的I2S controller无本质区别
2)AI和AO完全独立,但是可共用时钟源
3)以静态库的形式提供(libmpi.a)

1.2 使用限制

          当使用外接codec时,无法提供对外的mclk,需要使用外接codec晶振源

1.3 API

1.4 结论

使用这些API的时候,除了使用上的一些注意事项,如(属性的设置和外设保持一致/采样点个数的限制/API的使用顺序)
没有对硬件上的依赖。因此如果X2A的AIO设计和海思一致,可以完全porting

2 ENC/DEC

1 实现

1)所有的编解码功能都是基于独立的海思音频解码库,核心解码器工作在用户态,使用CPU软件解码。
2)编码类型有G711,G726,ADPCM_DVI4,ADPCM_ORG_DVI4,ADPCM_IMA
原始数据和压缩数据均可以.wav后缀的文件存储
关于wav,可以参考wav文件格式分析与详解 - nigaopeng - 博客园
3) 常用在语音通话中而不是流媒体中

2 使用限制

编解码部分的属性必须和AIO设备的属性一致,如采样率,帧长等

3 主要API

4 结论:

取决于海思的编解码库是否开源

3 内置codec

实现
1)和外置codec一样,实现音频输出输入部分的AD/DA
2)提供软静音和软撤销静音功能(通过控制PCM数据的衰减而不是控制内部硬件的AGC)
3)软件上控制内部codec只需要一个IOCTL即可

2 使用限制:
1)不提供同步时钟,不支持pcm传输协议,因为AIO一侧需要配置成master并且为I2S传输协议
2)内部无晶振,需要AIO提供工作时钟(MCLK)
3)使用内部codec时候,AIO部分的AI和AO不能共用时钟(AI和AO完全独立分开)

3 API

对内部codec的控制只有一个API(ioctl函数)

4 结论:

如果X2A的硬件设计和海思一致,可完全porting

4 VQE

1 实现:
硬件功能:
AEC:回声消除
ANR:语音降噪
RNR:录音噪音消除
DRC:动态压缩控制
PEQ:参量均衡器
HDR:高动态范围
HPF:高通滤波
AGC:自动增益控制
EQ:均衡处理器
GAIN:音量调节

RES:重采样

1)支持裁剪
2)全部已动态库的形式提供

 2 使用限制

3API

 4 结论:

           如果X2A的硬件增加了VQE,可以porting这些API

5  这些API和ALSA API的区别

1)ALSA框架不支持音效/编解码的设置,hisixx API 增加了对音效和编解码的控制

2)ALSA无论是对内置codec还是外置codec的支持,同时通过alsa的dai link方式把codec注册到声卡框架中,而hisixx 就是通过一个ioctl单独对codec控制。

3)在AIO部分,ALSA对用户的配置是通过一个API就可以实现,但是hisi是通过多个API

4)ALSA对硬件链路的管理是在kernel内部自动完成的,用户只需要在machine驱动中填充即可。

    而hisi对硬件链路的管理权交给用户,如是否使能VQE,是否使用sys link

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值