我这里只是想自己做一个总结,是收到大牛博客的启发,按顺序自己总结一遍,具体的一些解释请看此文章:

海思3518E开发笔记2.6——海思VPSS(Video Process Sub-System)模块详解_Spark!的博客-CSDN博客_海思3518e目录海思Video Process Sub-System模块架构介绍海思Video Process Sub-System相关概念VI、VPSS的离、在线模式海思Video Process Sub-System模块功能介绍函数调用关系相关数据结构流程分析海思Video Process Sub-System模块架构介绍VPSS( Video Process Sub-System)支持对一幅输入图像进行统一预处理,如去噪、去隔行(隔行扫描转为逐行扫描,以前隔行扫描好做,现在为了兼容需要去隔行,一般不会碰到,看https://blog.csdn.net/qq_28258885/article/details/118757094

目录

初始化:

流程分析:

<1>

<2>GK_ADP_COMM_VPSS_Start

<3>GK_ADP_COMM_VI_Bind_VPSS

<4>enable chn

总图


初始化:

GK_S32 i;VPSS_CHN_ATTR_S astVpssChnAttr[VPSS_MAX_CHN_NUM];VPSS_GRP_ATTR_S stVpssGrpAttr;GK_BOOL abChnEnable[VPSS_MAX_CHN_NUM] = {GK_FALSE, GK_FALSE, GK_FALSE, GK_FALSE};VPSS_GRP VpssGrp = 0;stVpssGrpAttr.u32MaxW = 3840;stVpssGrpAttr.u32MaxH = 2160;stVpssGrpAttr.stFrameRate.s32SrcFrameRate = -1;stVpssGrpAttr.stFrameRate.s32DstFrameRate = -1;stVpssGrpAttr.enDynamicRange = DYNAMIC_RANGE_SDR8;stVpssGrpAttr.enPixelFormat  = PIXEL_FORMAT_YVU_SEMIPLANAR_420;stVpssGrpAttr.bNrEn = GK_FALSE;for (i = 0; i < u32VpssChnNum; i++){abChnEnable[i] = GK_TRUE;}for(i = 0; i < VPSS_MAX_CHN_NUM; i++){astVpssChnAttr[i].u32Width                    = pastSize[i].u32Width;// pastSize[i].u32WidthastVpssChnAttr[i].u32Height                   = pastSize[i].u32Height;// pastSize[i].u32HeightastVpssChnAttr[i].enChnMode                   = VPSS_CHN_MODE_USER;astVpssChnAttr[i].enCompressMode              = COMPRESS_MODE_NONE;astVpssChnAttr[i].enDynamicRange              = DYNAMIC_RANGE_SDR8;astVpssChnAttr[i].enVideoFormat               = VIDEO_FORMAT_LINEAR;astVpssChnAttr[i].enPixelFormat               = PIXEL_FORMAT_YVU_SEMIPLANAR_420;astVpssChnAttr[i].stFrameRate.s32SrcFrameRate = -1;astVpssChnAttr[i].stFrameRate.s32DstFrameRate = -1;astVpssChnAttr[i].u32Depth                    = 1;astVpssChnAttr[i].bMirror                     = GK_FALSE;astVpssChnAttr[i].bFlip                       = GK_FALSE;astVpssChnAttr[i].stAspectRatio.enMode        = ASPECT_RATIO_NONE;}

流程分析:

<1>

在vb缓冲区初始化部分GK_COMM_IVE_VbInit,用以下函数获取了图像尺寸。

s32Ret = GK_ADP_COMM_SYS_GetPicSize(paenSize[i], &pastSize[i]);

并将数据用以下将尺寸存入astsize。

s32Ret = GK_COMM_IVE_VbInit(aenSize,astSize,VPSS_CHN_NUM);

<2>GK_ADP_COMM_VPSS_Start

就是创建组后获取,并设置属性,再开启组。

GROUP
VPSS 对用户提供组( GROUP)的概念。最大可用数为 VPSS_MAX_GRP_NUM个,各芯片的最大组数目有所不同,各 GROUP 分时复用 VPSS 硬件。每个 VPSSGROUP 包含多个通道,通道数目视方案实现有所不同,具体描述请参见CHANNEL。
group实际上是对VPSS硬件功能的虚拟化,即若系统里只有一个group,那么这个group实际就是VPSS;若有多个group,那么就是一会给group0用一会给group1用,这就是分时复用。
CHANNEL
VPSS 组的通道。通道分为 2 种:物理通道和扩展通道。 VPSS 硬件提供多个物理通道,每个通道具有缩放、裁剪等功能。扩展通道具备缩放功能,它通过绑定物理通道,将物理通道输出作为自己的输入,把图像缩放成用户设置的目标分辨率输出。
chn是Grp里面的通道,这个通道有物理的有扩展的,物理通道有对应的硬件,扩展通道没有对应的硬件,扩展通道其实是对应了一些功能(缩放等)

<3>GK_ADP_COMM_VI_Bind_VPSS

<4>enable chn

s32Ret = GK_API_VI_GetChnAttr(ViPipe0, ViChn,&stViChnAttr);
s32Ret = GK_API_VI_SetChnAttr(ViPipe0, ViChn,&stViChnAttr);//设置通道属性

总图

HISI_3516_vpss相关推荐

最新文章

  1. c是编译语言吗,将语言编译为C是一个好主意吗?
  2. 【CURL】模拟登录网站并获取用户信息
  3. c# dataGridView 设置
  4. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之创建用户界面
  5. ZJU期末考试记录(研究生)——数据挖掘
  6. IBM研究院计画5年改变人类生活创新预测
  7. rest-framework之版本控制
  8. 我们的电梯调度算法的独到之处
  9. app商城源码_海量的SpringBoot和SSM项目【附带源码+视频教程】快速成为全栈
  10. Java 字符串使用之性能优化实践
  11. 安川机器人原点丢失_安川机器人报错代码:原点位置校准和操作方法
  12. GMS地下水数值模拟
  13. 计算机地图制图 知识总结
  14. ccf csp 题目:工资计算
  15. 有道词典java下载电脑版下载不了_有道词典电脑版
  16. Pr效果:音频过渡效果
  17. 小米2s、2sc解激活锁和root
  18. beyond-长城-国语谐音歌词
  19. 在电商平台落地大数据应用的6个场景、2类服务、12个框架
  20. 什么软件测试苹果手机循环电池,如何检查iPhone电池的电池循环次数,看完你就明白了...

热门文章

  1. 252个前端与移动开发面试题汇总
  2. unix中的CUT命令全接触
  3. 在c语言中void是什么,C语言中void是什么意义?_后端开发
  4. [六点]Pygame零基础入门:极简开发框架
  5. C#使用ado.net打造多数据库通用操作类
  6. jquery 触发 dropdownlist SelectedIndexChanged
  7. 【论文阅读】吴恩达分享的论文阅读方法
  8. 攻防世界MISC新手区 give_you_flag
  9. C#与Oracle连接参数问题 OracleParameter中不能用@,用:代替@
  10. 【bzoj1533】[POI2005]Lot-A Journey to Mars【单调队列】