SDK架构介绍
1. 模块介绍¶
简称 | 全称 | 职责 |
---|---|---|
SYS | System | 实现 MI 系统初始化、内存缓冲池管理、各个模块之间数据流的管理 |
VDEC | Video Decoder | H264/H265/JPEG 视频解码器 |
DIVP | Deinterlace&Video Post Process Engine | DIVP Engine有两个主要的功能 ①对解码后数据进行格式转换 ②解码后数据进行缩放 |
VDISP | Vitrual Display | 软件拼图 |
DISP | Display Engine | DISP对VDEC/DIVP 处理单元输出的图像做硬件拼图,并连同AO输出音频信号一起编码成HDMI/VGA/CVBS 输出信号的单元 |
VENC | Video Encoder | H264/H265/MotionJpeg编码器 |
AI | Audio Input Interface | I2S audio input采集单元 |
AO | Audio Output Interface | 音频输出 |
GFX | Graphics Engine | Graphic Engine 提供对2D画图的基本硬件加速支援,降低CPU的负荷 |
FB | FrameBuffer | UI显示 |
HDMI | High Definition Multimedia Interface | HDMI/VGA标准输出 |
2. 软件架构¶
-
功能实现函数从上到下,分为MI API层,MI实现层,Hal硬件抽象层,Driver层和芯片硬件层。
-
SDK功能代码在Kernel层实现,减少从kernel到User mode来回调度,提高逻辑函数实现的效率。
-
对上层客户提供MI API的User Mode接口,用户层APP直接调用MI接口,即可调用到对应的MI功能。
3. SDK目录结构¶
目录 | 模块名 | 功能 |
---|---|---|
project | board | PCB板信息存放路径 |
project | configs | 预配置文件存放路径 |
project | image | 产生镜像文件的材料库和镜像文件存放处 |
project | kbuild | kernel编译环境 |
project | release | 目标池,存放对外头文件,库文件和内核模块以及第三方库 |
SDK | Verify/feature | 验证文件夹,里面存放模块单元测试和特性测试文件 |
SDK | Verify/demo | 整体功能测试demo |
4. 内存管理¶
详细参考Memory Layout介绍。
-
通过mmap.ini预留的内存
-
支持mma管理module内存,各个module从mma预留的size中分配
5. 基本概念¶
-
数据流:各个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.
-
6. API¶
详细参考SDK模块API。
7. DEBUG方法¶
详细参考各模块API对应章节PROCFS介绍。