应用开发参考


1. SDK说明


1.1. Project目录说明

Project目录 说明
board 存放了相关配置信息,vdec固件,ipl,uboot,mmap.ini等,比如需要修改framebuffer输出格式的时候就需要修改/project/board/i2m/SSC011A-S01A/config/fbdev.ini中的FB_HWWIN_FORMAT(5=ARGB8888,6=ARGB1555) 缺省fb会被驱动为对应的格式
configs 存放编译sdk,生成镜像的config,如编译的第一步 ./setup_config.sh configs/nvr/i2m/8.2.1/nor.glibc-squashfs.011a.64
image 编译打包的主要目录,包含已经编译的busybox镜像、源码、最终编译生成的烧录脚本以及烧录镜像。
kbuild 编译sdk需要用到的kernel config等设定
release SDK提供的头文件、lib、ko,其中包含各个模块的头文件以及数据结构
tools 一些debug工具

Project主要的工作是把相关lib和bin打包生成image,并制作rootfs烧录到板子。编译开始的makefile位于project/makefile,通过这个makefile逐级call到对应的子makefile最终生成image和scripts

主要的makefile架构如下,客制化的rootfs制作可以在rootfs.mk的makefile中添加


1.2. Takoyaki常用模块说明

模块 功能描述
SYS SYS模块是整个SDK的内存管理,流传输控制,帧率设定等等
VDEC 解码,支持H264、H265解码,最大支持1080P
1. 需要设置ES流的宽高
2. 需要设置解码输出YUV的宽高,输出的宽高必须和DISP的input宽高设定一样,VDEC支持将ES流的宽高缩小,但是不支持放大
DIVP YUV图像处理模块,支持缩放以及格式转换,常用于同时绑定DISP和VENC
DISP 图像显示模块,需要设置Input port属性,宽高需要注意和前一级绑定的模块输出宽高一致
VENC 编码支持JPEG
PANEL 显示屏相关的配置,参考demo填写对应的屏参
GFX 2D引擎,支持Fill、Blit、Blending等
FB 标准的framebuffer接口,设备节点为/dev/fb0,增加了一些扩展ioctl,见mstarFb.h

下面依次介绍各个常用模块的主要API使用,可以参考Demo来封装实现用户媒体架构。

1.2.1. SYS模块

MI_S32 MI_SYS_Init(void); //使用模块API前需要call此API
MI_S32 MI_SYS_Exit (void); //对应Init

SDK中各个模块如果需要传递YUV Stream,那么就需要将对应的Port口绑定起来,这样上一级模块处理好的YUV数据就会送给下一级模块。

注:如上图所示,有些模块仅有Input Port,有些模块仅有Output Port,而有些则有Input/Output Port。

1.2.2. VDEC的API使用

创建好解码通道后,需要调用MI_VDEC_SendStream来将网络流或者录像文件送给VDEC

销毁解码通道:

1.2.3. DISP

设置disp dev的属性,并且使能dev

绑定layer和disp dev

设置disp input port的参数以及使能

1.2.4. Panel

Panel部分,ttl的lcd仅需要根据spec填写屏参,然后执行如下api即可,屏参参考demo的LCD头文件

1.2.5. Framebuffer

初始化FB

FB也扩展了一些iotcl,如colorkey和Hide/Show。

Show/Hide:

ColorKey:

扩展ioctl: