SDK架构介绍
1. 模块介绍¶
简称 | 全称 | 职责 |
---|---|---|
AEC | Acoustic Echo Cancellation | 回声消除, 一种用于抑制远程回声的功能。 |
AED | Acoustic Event Detection | 声学事件检测,用于在音讯码流中侦测特定的声音事件。目前支持对婴儿哭声和高分贝声音的检测(LSD)。 |
AI | Audio Input | 音频输入,主要实现配置及启用音频输入设备、获取音频帧数据、以及音量设置等功能。 |
AO | Audio Output | 音频输出,主要实现配置及启用音频输出设备、发送音频帧数据、以及音量设置等功能。 |
APC | Audio Process Chain | 音频处理链路,是一个包含降噪、均衡器和自动增益控制的算法组合。 |
BF | Beamforming | 波束形成或空间滤波是一种用于传感器数组的定向信号处理技术传输或接收 |
CIPHER | CIPHER | CIPHER提供数据的加解密功能,提供包括AES\RSA\SHA加解密算法 |
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的负荷 |
IQSERVER | Image Quality tuning Server | 图像质量调校服务 |
IVE | Intelligent Video Engine | 提供图形智能识别算法中的基本算子支援 |
PANEL | Panel | 面板提供了一个空间,应用程序可以在其中附加任何其他组件,包括其他面板。 |
PSPI | PSPI | 通过PSPI从sensor获取图像数据,或将图像数据通过PSPI传输到panel。 |
RGN | REGION OVERLAY&COVERmodule | RGN模块提供两个功能: ①VPE/DIVP 上的图形层叠加功能 ②VPE/DIVP 上的视频层区域遮挡功能 |
SED | Smart Encode | 智能编码,主要提供智能编码通道的创建和销毁、开启和停止检测源图像、计算结果并关联到指定的编码通道等功能 |
SNR | Sensor | 获取摄像头接口信息、调整分辨率和帧率等。 |
SRC | Sample Rate Conversion | 用于对音频流做采样频率转换,以获取不同采样频率的音频流。 |
SSL | Sound Source Localization | 声源定位,用于定位声音来源的方向。 |
SYS | System | 实现 MI 系统初始化、内存缓冲池管理、各个模块之间数据流的管理 |
VDISP | Virtual Display | 模块设计用来组合多份YUV/RGB等颜色空间的数据成一张全幅输出,并为每一个数据输入指定一个缩略图形式的显示窗口。 |
VENC | Video Encoder | H264/H265/MotionJpeg编码器,输入原始图像序列一般来自于VPE单元,也可能是virtual DISP 单元输出的零通道拼图结果 |
VIF | VIDEO Input Interface | BT656/BT1120 /MIPI/DVP信号采集单元。同一路视频输入信号下,VIF可以同时输出预缩放图像和原始尺寸图像原始信号尺寸内容同时输出到DRAM上 只有个别芯片的VIF支援预缩放功能以在特定场景下减少系统频宽 |
VPE | Video Process Engine | 对VIF 输入的原始图像数据做缩放,旋转及图像增强的引擎 |
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目录结构¶
项目 | 模块名 | 功能 |
---|---|---|
build | 编译文件输出路径 | |
hdrs | 预编译头文件存放路径 | |
libs | 基础库、编译库路径 | |
mak | 工程配置文件路径 | |
rtk/proj/ | sc | 应用、驱动、系统源码路径 |
scatter | 链接脚本路径 | |
scripts | 其他脚本路径 | |
tng | 工程编译脚本路径 | |
tools | 工具路径 |
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方法¶
详细参考各模块API对应章节PROCFS介绍。