【特别说明】
重点参考手册:
【1】ISP_3A 开发指南
【2】HIISP开发参考
【3】HIMPP IPC V2.0 媒体处理软件开发参考
1.关于RGB
RGB的不同值只是记录了不同颜色的亮度值;
如:0x00125897 和 0x00545897,红色的亮度值不同;
2.海思代码编程规范:
2.1 关于枚举:
所有的枚举都是大写字母加下划线的方式,最后字母是E,代表是一个枚举类型如:PLAYLOAD_TYPE_E;
2.2 关于结构体
在结构体的定义末尾是以“S”结尾的。
2.3 变量的开头
2.3.1 如果变量是枚举类型的,则以小写的“en”开头,如“en”;
2.3.2 结构体变量-以st开头
2.3.4 结尾描述符-Butt
Butt的值会顺延增加,但是不能够使用
3.VI解析
3.1 MPP初始化
初始化的工作主要是对VB的设置,这是重点需要计算的内容;
其他的按照流程计算就行;
3.2 RGB_BAYER-最原始的RGB RAW格式的图像
【说明】在选择YUV422还是选择YUV420没有严格的限制,只是根据图像的色彩还原度不同,YUV422的色彩还原度更高,但是对于系统的内存开销会比较大;
【★★★-经验值】 在行业内大多数的情况下使用的都是YUV420比较多,这是经验内容;
3.3.Sensor初始化
【说明】主要使用SAMPLE_VI_CONFIG_S进行初始化sensor的参数;
3.4 启动初始化内部ISP单元
【说明】主要启动内部的ISP(Image signal process)内部单元,内部的isp被封装成了单独的线程,此时将此线程启动起来。
3.5 第二步:ISP初始化
3.6 ISP线程启动
【特别说明】海思并没有直接将线程启动起来,需要我们手动去启动;
原因是:其中一些所需要的参数需要开发人员根据不同的设备进行配置;
我们按照自己的设备进行配置参数,然后配合海思提前打建好的框架进行运行就可以完成产品的功能;
3.7 小结
实际的VI部分包含三部门的内容:
【第一部分内容】sensor的接口对接部分内容
【第二部分内容】
①涉及到3A算法库的注册内容,这是海思提前提供了API;
②ISP部分内容,涉及到参数的设置和ISP的启动;
【第三部分内容】 VI dev 和 channel 通道内容 ;
其中的 “ VI dev” 指的是视频信号采集的硬件设备;
【特别说明】可以简单理解一个dev对应一个摄像头,一个dev对应一个chn;其他的次码流的扩展Extchn都需要通过chn进行缩放和剪裁才能够得到对应码流图像;
【硬件功能框架图】
3.8 关于手册-非常重要!!!
需要重点自己翻看手册的内容,非常重要!!!
4.VPSS 解析
4.1 创建Grp和Chn
【特别说明】VI中的chn和VPSS中的chn是不同的概念;
不管是在软件编程中还是在硬件单元中都是不同的概念;
VPSS中是一个GROP中包含了3个chn;甚至可以有更多,比如有扩展通道ExtChn等;
而VI中是一个DEV中包含了一个chn;(对于hi3518E而言);
千万不要搞混了两个chn;
在绑定关系中,是VI中的chn会绑定VPSS中的GROUP,而不是绑定VPSS中的chn,这点需要注意;
需要注意的是在绑定vpssGrp时候,只使用了一个vpssGrp,而使用了其中的三个chn;第0个chn和后两个chn的创建过程;
VPSS的chn0的属性设置:
VPSS的chn1的属性设置:
VPSS的chn2的属性设置:
【特别说明】对于上面的三个Chn创建是不同的;
第一个Chn创建的时候需要首先创建Grp,然后再创建Chn;
第2、3个Chn是不需要创建Grp的;因为一个Grp内可以包含有3个Chn;
4.2 Chn的属性设置
【说明】需要查看手册,了解不同的通道的属性;
5.图像编码压缩基本原理