海思编码:1、mpp系统详谈以及VI、VPSS、VENC之间的关系

news2024/11/25 2:19:50

在HiMPP手册中都会有这么一张图
在这里插入图片描述

1、VI部分

视频输入设备
视频输入设备支持标准 BT.656、标准 BT.1120、自定义时序等若干种时序输入,负责对时序进行解析。

视频物理通道
视频物理通道负责将输入设备解析后得到的视频数据输出到 DDR。在真正将数据输出到 DDR 之前,它可以实现裁剪、遮挡、水平垂直缩小和水平垂直翻转等功能,具体功能见各芯片的详细描述。

掩码
掩码用于指示 VI 设备的视频数据来源。

有的可以进行级联
级联指芯片的视频输出端通过 BT1120 时序或其他时序将视频数据传送到另一颗芯片的视频输入端。

根据上面那张图,AD这里就代表了一些传感器sensor,比如摄像头等,vi(video input)就是从sensor获取图像数据的一个功能模块,Hi3521DV100 芯片有 2 个 BT.1120 接口,每个 BT.1120 接口依次对应两个 VI 设备,即第一个 BT.1120 口对应 VI 的 Dev0 和 Dev1,第二个 BT.1120 口对应 VI 的 Dev2 和Dev3。所以使用两个接口时,基本用dev0和dev2。

 for(int i = 0; i < 2; i++)  // vi两个通道
 {
        ViDev = i * 2;
 }

2、VPSS

VPSS(Video Process Sub-System)支持对一幅输入图像进行统一预处理,如去噪、去隔行等,然后再对各通道分别进行缩放、锐化等处理,最后输出多种不同分辨率的图像。
VPSS有组(GRP)的概念,最大可用数为 256 个,各 GROUP 分时复用 VPSS 硬件。每个 VPSS GROUP 包含多个通道,VPSS的GROUP 只能绑定一个输入。
VPSS的GROUP 和VI的通道进行绑定,分为在线和离线模式,离线模式时VI将从摄像头读取的视频数据放入到DDR内存中,VPSS去内存中读取,在线模式时VI将从摄像头读取的视频数据直接传递给VPSS,中间没有了内存复制等的操作,节省带宽和内存,性能更好,但是在线模式,因为VI没有将数据写入到DDR,无法进行coverEx,OverlayEx,Retate,LDC等操作,需要在VPSS各通道输出后再进行处理,而且有的功能还只能在离线使用,比如DIS
VPSS的GROUP 和VI的通道进行绑定:

HI_S32 SAMPLE_COMM_VI_BindVpss(SAMPLE_VI_MODE_E enViMode)
{
    HI_S32 j, s32Ret;
    VPSS_GRP VpssGrp;
    MPP_CHN_S stSrcChn;
    MPP_CHN_S stDestChn;
    SAMPLE_VI_PARAM_S stViParam;
    VI_CHN ViChn;

// 获取VI的一些参数
    s32Ret = SAMPLE_COMM_VI_Mode2Param(enViMode, &stViParam);
    if (HI_SUCCESS !=s32Ret)
    {
        SAMPLE_PRT("SAMPLE_COMM_VI_Mode2Param failed!\n");
        return HI_FAILURE;
    }
    
    VpssGrp = 0;
    for (j=0; j<stViParam.s32ViChnCnt; j++)  //s32ViChnCnt代表VI设备的个数为1
    {
        ViChn = j * stViParam.s32ViChnInterval;
        
        //将VpssGrp和VI的通道进行绑定
        stSrcChn.enModId  = HI_ID_VIU;
        stSrcChn.s32DevId = 0;
        stSrcChn.s32ChnId = ViChn;
    
        stDestChn.enModId  = HI_ID_VPSS;
        stDestChn.s32DevId = VpssGrp;
        stDestChn.s32ChnId = 0;
    
        s32Ret = HI_MPI_SYS_Bind(&stSrcChn, &stDestChn);  //源通道就是VI模块,目的通道就是VPSS的Group,绑定后,VI的视频数据就会自动流转到VPSS
        if (s32Ret != HI_SUCCESS)
        {
            SAMPLE_PRT("failed with %#x!\n", s32Ret);
            return HI_FAILURE;
        }
        
        VpssGrp ++;
    }
    return HI_SUCCESS;
}

在这里插入图片描述可以看到叠加OSD等可以在VPSS的离线模式进行
VPSS的group虽然只能绑定一个输入,但是可以有多个输出通道,这样可以获取多路不同分辨率的视频流。比如vi采集的是1080P的数据,但是有的时候不需要这么高的分辨率,想要最终获取三个不同分辨率的视频,1080P用于显示,720P用于存储,480P行车记录仪存储,这三路视频,那么VPSS就可以输出三个通道的视频数据,这个时候就可以创建3个chn
3、VENC
venc的chn绑定vpss某个group的chn

 s32Ret = SAMPLE_COMM_VENC_BindVpss(VencChn, VpssGrp, VpssChn);   //venc的chn绑定vpss的chn

终上所述:VI、VPSS、VENC之间的关系

VI dev的chn-》VPSS某个GRP-》VPSS某个GRP的某个chn-》VENC的某个chn
VPSS的GROUP绑定VI的chn,VENC的chn绑定VPSS某个GROUP的chn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FTP-----局域网内部远程桌面

此文包含详细的图文教程。有疑问评论区留言。博主第一时间解决。 目录 一、被远程桌面的电脑 1.开启远程权限 2.添加账户&#xff0c;有本地账户跳过这步 3.帐号隶属于 远程桌面 4.帐号隶属于 本地用户组 二、本地电脑连接远程桌面 前提条件&#xff1a; 1.两台电脑在…

接口自动化【二】(图形验证码处理)

文章目录 前言一、图形验证码图片获取(需要实际截图做对比补充)二、调第三方接口获取验证码三、后端登录接口&#xff08;举例&#xff09;总结前言 讲解了图片验证的处理&#xff1b;在接口测试中遇见的一些问题&#xff1b;多部分编码的注意点 一、图形验证码图片获取(需要实…

【4.13(补)】二叉搜索树的遍历、插入、删除

文章目录二叉搜索树的最近公共祖先二叉搜索树中的插入操作删除二叉搜索树中的节点二叉搜索树的最近公共祖先 235. 二叉搜索树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 因为二叉搜索树是有序的&#xff0c;第一次找到p和q中间的值&#xff0c;就是最近的公共祖先…

【FPGA-DSP】第六期:Black Box调用流程

目录 1. 实际操作流程 1.1 Verilog 代码编写 1.2 system generator操作 1.2.1 Black box模块 1.2.2 Simulink 搭建 2. Simulink模型优化 System Generator是一个Xilinx公司的工具&#xff0c;用于设计数字信号处理系统。Black Box是System Generator中的一个block&#…

【数值模型系列】CAMx编译运行中的几个小问题

最近在CAMx的编译运行工作中&#xff0c;遇到了几个小问题&#xff0c;在此记录一下。 问题1&#xff1a;CAMx2IOAPI编译报错 报错如下&#xff1a; CAMx2IOAPI依赖于IOAPI和NetCDF库&#xff0c;在Makefile文件中加以配置即可&#xff0c;但出现此错的原因其实是默认的Makef…

【大数据之Hadoop】十四、MapReduce之Combiner合并

Combiner是Mapper和Reducer之间的组件&#xff0c;其组件的父类是Reducer。 Combiner和Reducer的区别&#xff1a; Combiner是运行在每一个MapTask所在的节点&#xff0c;即对每一个MapTask的输出进行局部汇总&#xff0c;减少网络传输量。 Reducer则是接收全局是Mapper的输出…

涨点神器:Yolov5/Yolov7引入CVPR2023 InternImage:注入新机制,扩展DCNv3,助力涨点,COCO新纪录65.4mAP!

1.InternImage介绍 论文:https://arxiv.org/abs/2211.05778 代码:GitHub - OpenGVLab/InternImage: [CVPR 2023 Highlight] InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions 理论部分参考知乎:CVPR2023 Highlight | 书生模型霸…

GPT-4要革程序员的命?智能开发的理想与现实 | 爱分析调研

“生成式人工智能&#xff08;AIGC&#xff09;将在三年内终结编程。” ——Matt Welsh&#xff0c;前哈佛大学计算机科学教授、Google 工程主管 GPT-4 也许还不完美&#xff0c;但智能开发时代真的来了 美国时间3月14日&#xff0c;OpenAI 正式发布 GPT-4&#xff0c;在 Chat…

【Navidrome 开源音乐服务器】手把手教你打造属于自己的音乐播放器随时随地想听就听

目录 1. 前言 2. Navidrome网站搭建 2.1 Navidrome下载和安装 2.1.1 安装并添加ffmpeg 2.1.2下载并配置Navidrome 2.1.3 添加Navidrome到系统服务 2.2. Navidrome网页测试 3. 本地网页发布 3.1 cpolar的安装和注册 3.2 Cpolar云端设置 3.3 Cpolar本地设置 4. 公网访…

电商数仓—前言

项目流程图 1.数据仓库的概念 数据 业务数据 存储在mysql 处理事务过程中产生的数据例如&#xff1a;登录、下单、支付用户行为数据 日志文件&#xff08;以文件形式&#xff09; 用户与客户端产品交互过程中产生的数据通过埋点实现&#xff1a;代码埋点&#xff08;前端/后…

Unity集成GPT

GPT想必是最近互联网最火的话题了&#xff0c;作为一个Unity开发者&#xff0c;今天来介绍一下如何在Unity中使用GPT。 一、API 密钥 使用GPT的API首先要获得密钥&#xff0c;如下进入OpenAI官网(https://platform.openai.com/account/api-keys)–>选择自己的账号–>查…

Docker-Compose企业生产环境实战

1. Docker-Compose企业生产环境实战 Docker Compose 是 Docker 官方编排&#xff08;Orchestration&#xff09;项目之一&#xff0c;负责快速在集群中部署分布式应用。Compose 定位是“defining and running complex applications with Docker”&#xff0c;前身是 Fig&#…

手把手教你如何管理进程和计划任务管理

目录一、查看和控制进程1.1查看进程1.1.1 ps 命令— 查看静态的进程统计信息1.1.2ps -elf 命令— 查看静态的进程统计信息1.1.3grep过滤查询1.1.4top命令—动态查看进程信息1.1.5pgrep命令— 根据特定条件查询进程PID信息1.1.6pstree命令—查看进程树1.2控制进程1.2.1手动启动1…

单片机--第六章中断系统--例6-3学习

单片机--第六章中断系统--例6-3学习 同6-2图&#xff0c;要求&#xff1a;使用定时器T0中断实现流水灯操作&#xff0c;流水频率为每0.5s更替一次&#xff08;假设单片机外接11.0592MHZ的晶振&#xff09;。 这个代码实现的是流水灯的效果&#xff0c;即将多个 LED 灯依次点亮并…

.net6 Program.cs 文件解析

Program.cs 是整个Web应用程序的入口文件&#xff0c;.NET6 用了极简单的风格搞定了很多事情。 Program.cs中首先注意的是&#xff1a; 1.builder.Services.AddXXX是用来添加服务的&#xff0c;builder是WebApplicationBuilder对象&#xff1b; 2.builder.Services.Configure&…

【C++】判断语句中对变量的合理定义

先总结一下这篇博客的核心&#xff1a; C中&#xff0c;不允许重复定义同一个变量&#xff0c;否则保留的初次定义的值&#xff08;虽然编译能通过&#xff09;涉及到判断的多分支时&#xff0c;应在进判断分支之前定义好变量&#xff0c;如果在分支中分别定义会出现编译错误&…

基于HashData的湖仓一体解决方案的探索与实践

2023年4月7日&#xff0c;由中国DBA联盟&#xff08;ACDU&#xff09;和墨天轮社区联合主办的第十二届『数据技术嘉年华』(DTC 2023) 在北京新云南皇冠假日酒店盛大开启。HashData资深解决方案架构师李俊在4月8号专题会场6-“融合应用&#xff1a;湖仓技术创新”上发表了《基于…

从零开始学JAVA(05):面向对象编程--04

一、StringBuilder StringBuilder是一个非常方便的用来处理和拼接字符串的类&#xff0c;它和string不同的是&#xff0c;它是可变的 package com.lcy.learn;public class LearnStringBuilder {public static void main(String[] args) {// StringBuilder首先是可变的// 而且对…

牛客网算法八股刷题系列(九)训练过程损失函数不下降问题

牛客网算法八股刷题系列——训练过程损失函数不下降问题题目描述正确答案&#xff1a;D\mathcal DD题目解析延伸&#xff1a;训练过程损失函数不下降的其他情况题目描述 在训练神经网络时&#xff0c;损失函数(Loss)(\text{Loss})(Loss)在最初的几个Epoch\text{Epoch}Epoch时没…

delphi 实现Ribbon风格的窗体

随着office2007的兴起&#xff0c;微软让我们看到了Ribbon风格的窗体&#xff0c;现在很多软件也都开始使用Ribbon风格。 那么我们如果要自己开发&#xff0c;应当怎么做呢&#xff1f;本文就是为大家解开这个疑团的。 首先&#xff0c;Delphi本身并没有Ribbon风格的窗口可以直…