SDK架构介绍

Version 1.0


1. 模块介绍

简称 全称 职责
AEC Acoustic Echo Cancellation 回声消除, 一种用于抑制远程回声的功能。
AED Acoustic Event Detection 声学事件检测,用于在音讯码流中侦测特定的声音事件。目前支持对婴儿哭声和高分贝声音的检测(LSD)。
AI Audio Input 音频输入,主要实现配置及启用音频输入设备、获取音频帧数据、以及音量设置等功能。
AO Audio Output 音频输出,主要实现配置及启用音频输出设备、发送音频帧数据、以及音量设置等功能。
APC Audio Process Chain 音频处理链路,是一个包含降噪、均衡器和自动增益控制的算法组合。
BF Beamforming 波束形成或空间滤波是一种用于传感器数组的定向信号处理技术传输或接收
DISP Display Engine DISP对VDEC/DIVP 处理单元输出的图像做硬件拼图,并连同AO输出音频信号一起编码成HDMI/VGA/CVBS 输出信号的单元
DIVP Deinterlace&Video Post Process Engine DIVP Engine有两个主要的功能
1、对解码后数据进行格式转换
2、 解码后数据进行缩放
FB FrameBuffer UI显示
GFX Graphics Engine Graphic Engine 提供对2D画图的基本硬件加速支援,降低CPU的负荷
HDMI High Definition Multimedia Interface HDMI/VGA标准输出
IPU Image Processing Unit 实现AI模型的推演功能加速
IQSERVER Image Quality tuning Server 图像质量调校服务
ISP Image Signal Processing 实现HDR,3D/2D降噪,3A算法,WDR等相关功能。
LDC Lens distortion correction 通过bin档的设置将画面内容进行拉直或者融合。
SRC Sample Rate Conversion 用于对音频流做采样频率转换,以获取不同采样频率的音频流。
SSL Sound Source Localization 声源定位,用于定位声音来源的方向。
SYS System 实现 MI 系统初始化、内存缓冲池管理、各个模块之间数据流的管理
SNR Sensor 获取摄像头接口信息、调整分辨率和帧率等。
VDEC Video Decoder H264/H265/JPEG 视频解码器
VENC Video Encoder H264/H265/MotionJpeg编码器
WLAN Wireless Local Area Network 提供简单的wifi信号的扫描,连接功能

2. 软件架构

  • 功能实现函数从上到下,分为MI API层,MI实现层,Hal硬件抽象层,Driver层和芯片硬件层。

  • SDK功能代码在Kernel层实现,减少从kernel到User mode来回调度,提高逻辑函数实现的效率。

  • 对上层用户提供MI API的User Mode接口,用户层APP直接调用MI接口,即可调用到对应的MI功能。


3. Sdk目录结构

项目 模块名 功能
board PCB板信息存放路径
configs 预配置文件存放路径
image 产生镜像文件的材料库和镜像文件存放处
kbuild kernel编译环境
release 目标池,存放对外头文件,库文件和内核模块以及第三方库
SDK Verify/feature 验证文件夹,里面存放模块单元测试和特性测试文件
Verify/demo 整体功能测试demo

4. 基本概念

  • 数据流:

    各个MI Module 可以看成是一个纯数据处理单元,数据流推送由MI SYS内部统一调度。输入数据流表示该数据单元的input数据,输出数据流表示该处理单元处理过的output数据。

  • 控制流

    APP 对各个MI Module 数据处理过程进行参数控制的过程,比如设置MI_VDEC解码参数,启动停止MI_VDEC 通道,设置MI_VDEC通道输出端口之分辨率及format等

  • Channel(通道)

    • 对于需要处理或者输出stream的MI模组,一个channel代表该MI 模组处理或者输出一路stream的分时复用的上下文(context)及相关控制流设定

    • 对于可分时复用之模组如MI_VDEC, MI_DIVP, MI_DISP,可支援多个channel

  • Port(端口)

    • Port分为2种,input port和output port。input port为channel输入数据流的位置,而output port则是channel输出数据流的位置。

    • 一个channel可以有多个input port及多个output port.


5. API

参考各模块API接口介绍文档。


6. DEBUG方法

详细参考SDK模块调试手册