RKMEDIA--VI的使用

news2024/11/27 14:29:55

在上一篇文章RKMEDIA使用简介中简单的介绍了rkmedia的组成部分,本章主要聊聊VI模块。

rkmedia中的VI模块主要可以从两个方式获取流:直接打开video节点的方式、使用rk平台的rkaiq。

1、直接打开video节点的方式 顾名思义只需要在vi初始化中配置VI_CHN_ATTR_S参数中pcVideoNode成对应的/dev/video*节点

  VI_CHN_ATTR_S vi_chn_attr;
  vi_chn_attr.pcVideoNode = "/dev/video0";
  vi_chn_attr.u32BufCnt = 3;
  vi_chn_attr.u32Width = u32Width;
  vi_chn_attr.u32Height = u32Height;
  vi_chn_attr.enPixFmt = IMAGE_TYPE_NV12;
  vi_chn_attr.enWorkMode = VI_WORK_MODE_NORMAL;
  vi_chn_attr.enBufType = VI_CHN_BUF_TYPE_MMAP;
  ret = RK_MPI_VI_SetChnAttr(s32CamId, 0, &vi_chn_attr);
  ret |= RK_MPI_VI_EnableChn(s32CamId, 0);
  if (ret) {
    printf("Create VI[0] failed! ret=%d\n", ret);
    return -1;
  }

2、使用rkaiq方式,rkaiq是对ispp的实现。 ispp支持分辨率的缩放。

  VI_CHN_ATTR_S vi_chn_attr;
  vi_chn_attr.pcVideoNode = "rkispp_scale0";
  vi_chn_attr.u32BufCnt = 3;
  vi_chn_attr.u32Width = u32Width;
  vi_chn_attr.u32Height = u32Height;
  vi_chn_attr.enPixFmt = IMAGE_TYPE_NV12;
  vi_chn_attr.enWorkMode = VI_WORK_MODE_NORMAL;
  vi_chn_attr.enBufType = VI_CHN_BUF_TYPE_MMAP;
  ret = RK_MPI_VI_SetChnAttr(s32CamId, 0, &vi_chn_attr);
  ret |= RK_MPI_VI_EnableChn(s32CamId, 0);
  if (ret) {
    printf("Create VI[0] failed! ret=%d\n", ret);
    return -1;
  }

在使用sensor作为输入的时候,一般都是采用rkaiq的方式;使用hdmi或者是模拟高清RX芯片(NVP6188等)这种作为输入,是采用直接打开video节点的方式。

rkmedia的demo中,默认是使用ispp节点作为输入。所以在使用demo时需要在后台执行ispserver& 程序,或者在输入参数加上-a 选项指定iqfiles文件路径(默认路径是在/etc/iqfiles下面)。 

以下是rv1126/rv1109ispp节点的能力:

ps:缩放只支持缩小不支持放大,倍数是等比关系,不是分辨率的关系(长宽要同时缩放1-8倍之间)。比如输入的分辨率是1920*1080 那么缩放范围在960*540~240*135,缩放的倍率不要求是整数倍,但是分辨率需要16字节对齐

rkmedia_vi_get_frame_test 提供了获取yuv数据的demo,在使用demo前要确保可以在命令行用v4l2命令可以获取数据。

v4l2抓取命令如下

v4l2-ctl -d /dev/video19 --set-fmt-video=width=1920,height=1080,pixelformat=NV12 --stream-mmap=3

在配置多路输入的时候,需要注意VI_CHN 是不可以重复的。

在接入两个sensor的时候使用ispp时,VI_PIPE是用来选择对应的sensor的,对应关系是在设备树中设置的。如果是hdmi和RX芯片接入,则无需考虑VI_PIPE的设置,随便怎么设置。

在使用vi模块最常见的问题是在初始化时,配置VI_CHN_BUF_TYPE_DMA ,程序执行会错误。

主要是有两点:

1、输入节点是video0, 目前的经验得出video0是不支持DMA申请内存

2、rkmedia的DMA内存是去通过DRM去申请的,所以有些无屏设备在设备树中把display_subsystem节点禁用了,所以需要开启。

&display_subsystem {
    status = "okay";
};

常用VI查看信息的命令:

media-ctl -p -d /dev/media3  //用来查看media节点的拓扑结构

v4l2-ctl --list-formats-ext -d /dev/video25  //用来查看video节点支持的分辨率以及格式等信息

cat /proc/rkispp0  //查看ispp的信息(在ispp使用的时候用,否则只能查看频率和版本)

暂时关于VI部分写这么多,有新的建议后续加上来。

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

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

相关文章

Redeis缓存查询基于元注解与AOP结合使用——不过时的优雅

Redeis缓存查询基于元注解与AOP结合使用 根据优化需要,数据查询的时候无法避免的使用Redis基于缓存查询,进而减少对于数据库的查询压力,对于过多的方法基于缓存存储,为提高代码的复用性,采用一种不过时的写法。 整体的…

spring JPA整合hibernate,IDEA社区版,Java

spring JPA整合hibernate,IDEA社区版,Java 本文基于IDEA社区版,不是IDEA企业版。 (1)首先用IDEA新建一个spring web项目。参考文章: IDEA社区版(Community Edition)创建Springboot-Web项目,J…

第十二章 使用 Monorepo 方式管理组件生态

组件库一般都会配有周边产品,比如 Admin 、Template、CLI 工具等等。周边产品相当于有关联的多个项目,更准确的说法是多个软件包。这个时候就应该使用 Monorepo 方式组织代码,方便频繁在多个项目间同时交替开发,同时发布&#xff…

图解LeetCode——895. 最大频率栈(难度:困难)

一、题目 设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出 出现频率 最高的元素。 实现 FreqStack 类: FreqStack() 构造一个空的堆栈。void push(int val) 将一个整数 val 压入栈顶。int pop() 删除并返回堆栈中出现频率最高的元素。如果出…

圣杯与双飞翼布局,clip-path,列表与生成元素,计数器

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录圣杯与双飞翼布局clip属性clip-path属性例子(不同区域使用不同颜色的导航&#xff09…

【MySQL 18】Docker 安装 MySQL8 .0.30

1、查看可用的 MySQL 版本 访问 MySQL 镜像库地址: https://hub.docker.com/_/mysql?tabtags 。2、拉取 MySQL 8.0.30 镜像 拉取官方的指定版本的镜像: docker pull mysql:8.0.30[rootlocalhost deploy]# docker pull mysql:8.0.30 8.0.30: Pulling…

Gly-Gly-Arg, 54944-27-3/55033-48-2

贻贝信息素的模拟物,诱导各种贻贝物种的聚集,如绒螯虾。GGR还能刺激浮游生物幼虫定居。 编号: 401458中文名称: Gly-Gly-Arg英文名: Gly-Gly-ArgCAS号: 54944-27-3/55033-48-2单字母: H2N-GGR-OH三字母: H2N-Gly-Gly-Arg-COOH氨基酸个数: 3分子式: C10H2…

【C语言初阶(NEW)】五、操作符详解(二)|隐式类型转换|算术转换|操作符的属性

目录 一、表达式求值 1.1 隐式类型转换 1.1.1 什么是整型提升(整型提升) 1.1.2 整型提升的意义 1.1.3 有符号(signed)与无符号(unsigned)的区别 1.1.4 有符号(signed)类型的整…

Redis学习笔记②实战篇_黑马点评项目

若文章内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系博主删除。 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA(提取码:eh11)在线视频:…

知道创宇ScanA免费试用|守护网络空间内容安全生命线

《淮南子说山训》中有言,“众曲不容直,众枉不容正,故……众议成林,无翼而飞,三人成市虎”。随着互联网社交、即时通讯工具等社交媒体的蓬勃发展,大众发布、传播和获取信息的方式更加简便、渠道更为广泛。也…

安科瑞 ARCM300-Z-4G 导轨式智慧用电监控装置 猪舍无线火灾探测器

安科瑞 王晶淼/刘芳 1 概述 智慧用电在线监控装置是针对 0.4kV 以下的 TT、TN 系统设计的智能电力装置,具有单、三相交流电测量、四象限电能计量、谐波分析、遥信输入、遥信输出功能,以及 RS485 通讯或 GPRS 无线通讯功能,通过对配电回路的剩…

YOLO V5 详解

YOLO V5 Backbone SPPF SPP 是使用了3个kernel size不一样大的pooling 并行运算。SPPF是将kernel size为5的 pooling 串行运算,这样的运算的效果和SPP相同,但是运算速度加快。因为SPPF减少了重复的运算,每一次的pooling 运算都是在上一次运…

IP-guard产品相关端口和服务名称

数据库 SQL Server (SQLEXPRESS) 服务器 OCULAR V3 SERVER 中继器 OCULAR V3 MIDTIER SERVER 客户端 WINDOWS HELPER SERVICE 报表 OCULAR V3 REPORT SERVER web服务器 Ocular web server,OCULAR Console Web Service 云备份服务器 OCULAR File Cloud Backup Server,OCULAR Fil…

Java——迷你图书管理器(JDBC+MySQL+Apache DBUtils)

​ ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:乐趣国学的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例…

沉睡者IT - Web3的未来在哪里?

欢迎关注沉睡者IT,点上面关注我 ↑ ↑ 专家说,web3将颠覆现在的互联网 今天我们来讨论一下,web3会颠覆现在的互联网呢? 看了小编往期的作品你应该知道,如果同样的作品发在web3平台上,你将获取到收益。 那…

【笔试强训】Day 5

🌈欢迎来到笔试强训专栏 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一句鸡汤&#x…

强化学习泛化性 综述论文阅读 A SURVEY OF GENERALISATION IN DEEP REINFORCEMENT LEARNING

强化学习泛化性 综述论文阅读摘要一、介绍二、相关工作:强化学习子领域的survey三、强化学习中的泛化的形式3.1 监督学习中泛化性3.2 强化学习泛化性背景3.3 上下文马尔可夫决策过程3.4 训练和测试上下文3.6 应用实例3.7 更可行泛化的其他假设3.8 备注和讨论4. 强化…

SSM整合

整合的思路是: 先创建spring框架 通过spring整合spring mvc 通过spring整合mybatis 工程创建 创建Maven工程–>create for archtype–>webapp 创建项目结构 在recourses目录下创建 dbconfig.properties、log4j.properties、mysqlConfig.xml、springmvc.xml、…

css3实现一个3d楼梯动画

背景 👏👏通过给出的宽/高个数,用css3的transform以及transform-style快速的实现一个3d楼梯,速速来Get吧~ 🥇文末分享源代码。记得点赞关注收藏! 1.实现效果 2.实现步骤 定义css变量:宽w、高…

cadence SPB17.4 - allegro - disable recent Designs list

文章目录cadence SPB17.4 - allegro - disable recent Designs list概述笔记效果备注ENDcadence SPB17.4 - allegro - disable recent Designs list 概述 和csdn同学讨论问题, 他的问题如下: cadence如何在不去掉startpage的情况下只Recent Projects呢?&#xff…