因为项目后期涉及到MPP平台下的VI接口,现把有关视频输入VI模块的实现细节总结,也方便大家进一步了解。

1、整体概述

  视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口、LVDS 接口和 HISPI 接口),SLVS-EC,BT.1120,BT.656,BT.601,DC 等接口(在实际产品中,使用MIPI的比较多)接收视频数据。VI 将接收到的数据存入到指定的内存区域,在此过程中,VI 可以对接收到的原始视频图像数据进行处理,实现视频数据的采集。

2、功能描述与结构体解析

  VI 从软件上划分了输入设备(DEV),输入 PIPE(图示为物理 PIPE,虚拟 PIPE 只包含ISP_BE)、物理通道(PHY_CHN)、扩展通道(EXT_CHN)四个层级。如图1所示:

图1 VI软件层次图解

  其对应的参数定义如下所示:

1 typedef struct hiSAMPLE_VI_INFO_S
2 {
3 SAMPLE_SENSOR_INFO_S stSnsInfo;
4 SAMPLE_DEV_INFO_S stDevInfo;
5 SAMPLE_PIPE_INFO_S stPipeInfo;
6 SAMPLE_CHN_INFO_S stChnInfo;
7 SAMPLE_SNAP_INFO_S stSnapInfo;
8 } SAMPLE_VI_INFO_S;

  而这五个结构体分别对应如下:

1 typedef struct hiSAMPLE_SENSOR_INFO_S
2 {
3 //支持的sony MIPI接口相机类型 如IMX334 477
4 SAMPLE_SNS_TYPE_E enSnsType;
5
6 HI_S32 s32SnsId;
7 HI_S32 s32BusId;
8 combo_dev_t MipiDev; //MIPI Rx、SLVS 设备类型
9 } SAMPLE_SENSOR_INFO_S; //支持MIPI接口相机的参数及ID信息等
1 typedef struct hiSAMPLE_DEV_INFO_S
2 {
3 VI_DEV ViDev;    //VI 设备号
4 WDR_MODE_E enWDRMode; //WDR 工作模式,分为帧模式、行模式、非 WDR 等三大类。
5 } SAMPLE_DEV_INFO_S;
1 typedef struct hiSAMPLE_PIPE_INFO_S
2 {
3 VI_PIPE aPipe[WDR_MAX_PIPE_NUM]; //输入 物理PIPE号
4 VI_VPSS_MODE_E enMastPipeMode; //定义VI PIPE和VPSS组的工作模式 如VI_ONLINE_VPSS_OFFLINE
5 } SAMPLE_PIPE_INFO_S;
1 typedef struct hiSAMPLE_CHN_INFO_S
2 {
3 VI_CHN ViChn;   //输入通道
4 PIXEL_FORMAT_E enPixFormat; //定义视频格式 如VIDEO_FORMAT_LINEAR线性存储的视频格式
5 DYNAMIC_RANGE_E enDynamicRange; //定义动态范围枚举 如8bit 数据的标准动态范围
6 VIDEO_FORMAT_E enVideoFormat; //定义视频格式 如VIDEO_FORMAT_LINEAR线性存储的视频格式
7 COMPRESS_MODE_E enCompressMode;//定义视频压缩数据格式 如非压缩的视频格式COMPRESS_MODE_NONE
8 } SAMPLE_CHN_INFO_S;
1 typedef struct hiSAMPLE_SNAP_INFO_S //项目中没有用到此参数,就不说明了
2 {
3 HI_BOOL bSnap;
4 HI_BOOL bDoublePipe;
5 VI_PIPE VideoPipe;
6 VI_PIPE SnapPipe;
7 VI_VPSS_MODE_E enVideoPipeMode;
8 VI_VPSS_MODE_E enSnapPipeMode;
9 }SAMPLE_SNAP_INFO_S;

  Hi3559AV100 VI通道功能框图如下所示:

图2 Hi3559AV100 VI通道功能框图

  所有 VI 设备都是相互独立的,支持时序解析。VI 的 PIPE 包含了 ISP 的相关处理功能,主要是对图像数据进行流水线处理,输出YUV 图像格式给通道。Hi3559AV100 VI 只有一个物理通道,支持 8 个扩展通道。Hi3519AV100 VI 的一个 PIPE 包含 2 个物理通道,CH0 具有裁剪、压缩等功能,CH1 具有缩小的功能,支持 8 个扩展通道。扩展通道是物理通道的扩展,扩展通道具备缩放、裁剪、鱼眼矫正功能,它通过绑定物理通道,将物理通道输出作为自己的输入,然后输出用户设置的目标图像。

Hi3559AV100的VI细节处理说明的更多相关文章

  1. 基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析一 :

    下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: Hi3559AV100的 ...

  2. 基于Hi3559AV100 RFCN实现细节解析-(2)RFCN数据流分析

    下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: Hi3559AV100的 ...

  3. 基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析(HiISP)二 :

    下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: 基于Hi3559AV10 ...

  4. 基于Hi3559AV100 RFCN实现细节解析-(1)VGS初介绍

    下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,因为RFCN用到了VGS加框,因此本篇随笔将给出VGS视频图像子系统的具体说明,便于后面RFCN的细节实现说明. VGS 是视频图形子 ...

  5. vim /vi中对字符串的查找并替换

    vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询.    :s/vivian/sky/ 替换当前行第一个 vivian ...

  6. vi、vim 查找替换

    vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询.    :s/vivian/sky/ 替换当前行第一个 vivian ...

  7. Vi/Vim查找替换使用方法

    vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian 为 s ...

  8. [转]Vi/Vim查找替换使用方法

    vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询.    :s/vivian/sky/ 替换当前行第一个 vivian ...

  9. Vi/Vim 替换使用方法

    vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian 为 s ...

随机推荐

  1. Codeforces 1368F - Lamps on a Circle (交互博弈)

    这题也太新颖了吧.. 交互博弈 以前一直以为交互只能出二分 题意:长度为n的环形灯 玩家有两种操作 结束游戏 或者选择k个灯点亮 每次这个k是玩家自己选的 玩家操作后让电脑操作 电脑选择一个最优的点x ...

  2. 2019 Multi-University Training Contest 5——permutation 2

    传送门 题意: t组输入,之后每组例子有三个数n.x.y代表在一个以x为开头y为结尾的长为n的数组里面,开头和结尾数据已经固定,让你从1--n中找其他数据填入数组中 (每个数据不能重复使用),使它满足 ...

  3. 如何在windows上升级Powershell到5.1版本?

    前言 此篇我们说的是Powershell5.1低版本到5.1的升级,对于Powershell6(及以上版本)可以跨平台独立安装,在windows上可与之前的版本并存. 首先要整清楚Powershell ...

  4. PowerShell随笔9--- call

    很多时候我们需要在一个脚本文件执行另外一个脚本文件,比如我们有一个Test.ps1文件 我们有以下2种方法: Invoke-Expression (&) 我们可以看到,Test.ps1中的代码 ...

  5. 【应急响应】Windows应急响应入门手册

    0x01 应急响应概述   首先我们来了解一下两个概念:应急响应和安全建设,这两者的区别就是应急响应是被动响应.安全建设是主动防御.  所谓有因才有果,既然是被动的,那么我们在应急响应的时候就得先了解 ...

  6. OpenStack Train版-8.安装neutron网络服务(控制节点)

    安装neutron网络服务(controller控制节点192.168.0.10) 创建neutron数据库 mysql -uroot CREATE DATABASE neutron; GRANT A ...

  7. 网络协议 & 协议体系结构模型

    基本知识概述 网络协议是什么? 为进行网络中的数据交换,而建立的规则(约定),就称为网络协议 网络协议的三个组成要素? 语法:数据与控制信息的结构或格式 语义:发出何种控制信息,完成何种动作,作出何种 ...

  8. 编译安装MySQL 5.5.33

    环境要求: 主机名 IP地址 需要软件及版本 系统版本 mysql.mfyxw.com 192.168.80.135 Mysql5.5.33 5.5.33 1.设定主机名 hostnamectl se ...

  9. Java中多线程启动,为什么调用的是start方法,而不是run方法?

    前言 大年初二,大家新年快乐,我又开始码字了.写这篇文章,源于在家和基友交流的时候,基友问到了,我猛然发现还真是这么回事,多线程启动调用的都是start,那么为什么没人掉用run呢?于是打开我的ide ...

  10. 微信小程序开发抖音去水印功能

    之前找了很多抖音去水印的工具全是广告,所以索性自己写了一个,提供给大家免费试用以下是微信小程序的二维码 使用教程: 1.打开微信搜索小程序:沸点软件技术服务 2.打开沸点软件技术服务小程序 3.去抖音 ...