基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析(HiISP)二 :
下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI、VDEC、VPSS、VGS、VO、NNIE,其中涉及的内容,大家可以参考之前我写的博客:
基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析一 :
https://www.cnblogs.com/iFrank/p/14481080.html
整个的RFCN VI实现过程在上一篇随笔已经介绍了,函数具体含义也通过注释进行了一一的说明,而在VI初始化过程中,用到了ISP(Image Signal Processing) 图像信号处理的相关知识,海思也为其定义了API接口,下面随笔将介绍ISP相关概念,具体参考《HiISP开发参考》,方便大家对VI整个过程进行了更为清晰的认识。
1、基本概述
1.1、功能描述

1.2、ISP构架
图2 ISP firmware构架
1.3、Firmware内部流程
图3 ISP firmware 软件结构
2、软件流程
PQ Tools 工具主要完成在 PC 端进行动态图像质量调节,可以调节多个影响图像质量的因子,如去噪强度、色彩转换矩阵、饱和度等。
下面给出代码示例:
1 HI_S32 s32Ret;
2 ALG_LIB_S stAeLib;
3 ALG_LIB_S stAwbLib;
4 ISP_PUB_ATTR_S stPubAttr;
5 pthread_t isp_pid;
6 VI_PIPE ViPipe = 0;
7
8 /* 注册sensor库 */
9 s32Ret = sensor_register_callback(ViPipe, &stAeLib, &stAwbLib);
10 if (HI_SUCCESS != s32Ret) {
11 printf(”register sensor failed!\n”);
12 return s32Ret;
13 }
14 /* 注册海思AE算法库 */
15 stAeLib.s32Id = 0;
16 strcpy(stAeLib.acLibName, HI_AE_LIB_NAME);
17 s32Ret = HI_MPI_AE_Register(ViPipe, &stAeLib);
18
19 if (HI_SUCCESS != s32Ret) {
20 printf(”register ae lib failed!\n”);
21 return s32Ret;
22 }
23 /* 注册海思AWB算法库 */
24 stAwbLib.s32Id = 0;
25 strcpy(stAwbLib.acLibName, HI_AWB_LIB_NAME);
26
27 s32Ret = HI_MPI_AWB_Register(ViPipe, &stAwbLib);
28 if (HI_SUCCESS != s32Ret) {
29 printf(”register awb lib failed!\n”);
30 return s32Ret;
31 }
32 /* 初始化ISP外部寄存器 */
33 s32Ret = HI_MPI_ISP_MemInit(ViPipe);
34 if (s32Ret != HI_SUCCESS)
35 {
36 printf("%s: HI_MPI_ISP_Init failed!\n", __FUNCTION__);
37 return s32Ret;
38 }
39
40 /* 配置图像公共属性 */
41 s32Ret = HI_MPI_ISP_SetPubAttr(ViPipe, &stPubAttr);
42 if (s32Ret != HI_SUCCESS)
43 {
44 printf("%s: HI_MPI_ISP_SetPubAttr failed with %#x!\n", __FUNCTION__,
45 s32Ret);
46 return s32Ret;
47 }
48 /* 初始化ISP Firmware */
49 s32Ret = HI_MPI_ISP_Init(ViPipe);
50 if (HI_SUCCESS != s32Ret) {
51 printf(”isp init failed!\n”);
52 return s32Ret;
53 }
54
55 /* HI_MPI_ISP_Run单独启动线程运行 */
56 if (0 != pthread_create(&isp_pid, 0, ISP_Run, NULL)){
57 printf("create isp running thread failed!\n");
58 return HI_FAILURE;
59 }
60 /* 启动VI/VO等业务 */
61 //……
62
63 /* 停止VI/VO等业务 */
64 s32Ret = HI_MPI_ISP_Exit(ViPipe);
65 if (HI_SUCCESS != s32Ret) {
66 printf(”isp exit failed!\n”);
67 return s32Ret;
68 }
69
70 pthread_join(isp_pid, 0);
71 return HI_SUCCESS;
基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析(HiISP)二 :的更多相关文章
- 基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析一 :
下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: Hi3559AV100的 ...
- 基于Hi3559AV100 RFCN实现细节解析-(2)RFCN数据流分析
下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: Hi3559AV100的 ...
- 基于Hi3559AV100 RFCN实现细节解析-(1)VGS初介绍
下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,因为RFCN用到了VGS加框,因此本篇随笔将给出VGS视频图像子系统的具体说明,便于后面RFCN的细节实现说明. VGS 是视频图形子 ...
- Android系统--Binder系统具体框架分析(二)Binder驱动情景分析
Android系统--Binder系统具体框架分析(二)Binder驱动情景分析 1. Binder驱动情景分析 1.1 进程间通信三要素 源 目的:handle表示"服务",即向 ...
- 基于OpenCv的人脸检测、识别系统学习制作笔记之二
在网上找到了一个博客,里面有大量内容适合初学者接触和了解人脸检测的博文,正好符合我目前的学习方面,故将链接放上来,后续将分类原博客的博文并加上学习笔记. 传送门: http://blog.sina.c ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十五)——集中式接口文档实现
之前有小伙伴在评论区留言说如何集成swagger,最开始没有想透给了对方一个似是而非的回答.实际上后来下来想了一下,用.NET5 提供的Source Generator其实可以很方便的实现接口集成.今 ...
- 网络编程-基于Websocket聊天室(IM)系统
目录 一.HTML5 - Websocket协议 二.聊天室(IM)系统的设计 2.1.使用者眼中的聊天系统 2.2.开发者眼中的聊天系统 2.3.IM系统的特性 2.4.心跳机制:解决网络的不确定性 ...
- NET/ASP.NET Routing路由(深入解析路由系统架构原理)(转载)
NET/ASP.NET Routing路由(深入解析路由系统架构原理) 阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模 ...
- 基于 HTML5 WebGL 的地铁站 3D 可视化系统
前言 工业互联网,物联网,可视化等名词在我们现在信息化的大背景下已经是耳熟能详,日常生活的交通,出行,吃穿等可能都可以用信息化的方式来为我们表达,在传统的可视化监控领域,一般都是基于 Web SCAD ...
随机推荐
- Acwing 154 滑动窗口(单调队列)经典模板
给定一个大小为n≤106n≤106的数组. 有一个大小为k的滑动窗口,它从数组的最左边移动到最右边. 您只能在窗口中看到k个数字. 每次滑动窗口向右移动一个位置. 以下是一个例子: 该数组为[1 3 ...
- VUE 3.0 初体验之路
在2020年9月中旬,vue.js发布了3.0正式版,在不久的将来,VUE3.0 也终将成为大前端的必然趋势, 环境搭建 node 版本要求: Node.js8.9 或更高版本 ,输入 node -v ...
- 计算机网络 part1 TCP
一.TCP协议 references:newcoder TCP/IP协议,TCP和UDP的区别及特点 1.四层模型 应用层:载有应用程序,将数据发送给传输层.主要协议有HTTP.SMTP.FTP.DN ...
- webpack OSS All In One
webpack OSS All In One 阿里云 OSS 对象存储(Object Storage Service,简称OSS),是阿里云对外提供的海量.安全和高可靠的云存储服务 https://c ...
- Python Quiz & Python Exercise
Python Quiz & Python Exercise https://www.w3schools.com/quiztest/quiztest.asp?qtest=PYTHON https ...
- NGK流动性挖矿为何会备受瞩目?
随着越来越多资金的涌入,参与DeFi项目或挖矿的用户不难发现,使用体验不尽人意,在以太坊网络的DeFi时常需要漫长的等待确认和高昂的GAS费用,加上DeFi流动性挖矿需要相对较高的资金门槛和技术门槛, ...
- spring5学习笔记
Spring5 框架概述 1.Spring 是轻量级的开源的 JavaEE 框架 2.Spring 可以解决企业应用开发的复杂性 3.Spring 有两个核心部分:IOC 和 Aop (1)IOC:控 ...
- Excel和CSV格式文件的不同之处
来源:https://blog.csdn.net/weixin_39198406/article/details/78705016 1.个人理解:为何选择使用csv来存储接口测试用例相关字段数据,而不 ...
- [转]Linux下scp的用法
http://blog.51cto.com/yaksayoo/175719 scp就是secure copy,一个在linux下用来进行远程拷贝文件的命令.有时我们需要获得远程服务器上的某个文件,该服 ...
- C++算法代码——单词查找
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=2472 题目描述 给定 n 个长度不超过 50 的由小写英文字母组成的单词准备查询,以 ...