应用开发参考
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: