RKMEDIA--VI的使用
创始人
2024-03-02 14:38:32
0

在上一篇文章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部分写这么多,有新的建议后续加上来。

相关内容

热门资讯

国际牛奶日主题活动方案 国际牛奶日主题活动方案  为了确保事情或工作有序有力开展,就常常需要事先准备方案,方案是阐明具体行动...
高三高考语文复习计划书参考 高三高考语文复习计划书(参考范文)  复习计划要留有余地,不要“满打满算”。下面小编为大家推荐的是高...
劳动节单位活动方案 劳动节单位活动方案(精选5篇)  为了确保活动有序有力开展,我们需要提前开始活动方案制定工作,活动方...
大型公司年会活动策划方案 大型公司年会活动策划方案(精选8篇)  为了确定活动的圆满进行,我们需要事先制定活动方案,一份好的活...
庆六一文艺汇演活动方案 2021年庆六一文艺汇演活动方案范文(通用5篇)  为了确保活动顺利进行,我们需要事先制定活动方案,...
七夕情人节活动方案 七夕情人节活动方案(精选16篇)  为保障事情或工作顺利开展,常常需要提前制定一份优秀的方案,方案是...
幼儿园大班毕业典礼活动方案 幼儿园大班毕业典礼活动方案(12篇)  为了确保事情或工作能无误进行,通常需要提前准备好一份方案,方...
社区活动方案 社区活动方案  为了保障事情或工作顺利、圆满进行,时常需要预先开展方案准备工作,方案一般包括指导思想...
春节活动方案 春节活动方案(精选17篇)  为了确保事情或工作科学有序进行,通常需要预先制定一份完整的方案,方案是...
大学生职业规划书 大学生职业规划书范文(精选10篇)  日子如同白驹过隙,不经意间,我们的工作又将告一段落了,你是否希...
政工师群众评议意见 政工师群众评议意见关于推荐某同志为政工师的综合材料一、概况姓名:××*;性别:女;出生年月:1966...
体育活动方案 体育活动方案(通用15篇)  为了确保活动取得实效,通常需要预先制定一份完整的活动方案,活动方案是活...
如何做好销售工作 如何做好销售工作如何做好销售工作?销售和营销是两个不同的概念,销售应该含盖在营销里面是营销的一部分。...
后勤先进个人事迹材料 后勤先进个人事迹材料  在日常学习、工作和生活中,大家最不陌生的就是事迹材料了吧,事迹材料可以起到宣...
优秀模范教师个人事迹材料 优秀模范教师个人事迹材料模板(精选14篇)  在平日的学习、工作和生活里,大家对事迹材料都不陌生吧,...
庆祝元旦的诗歌 庆祝元旦的诗歌  【篇一:《美丽的元旦》】  元旦,好比一个美丽的东西  看  元旦一来到  我们的...
安全生产事故应急救援预案 安全生产事故应急救援预案  在现实生活或工作学习中,没准儿会出现一些突发事故,为了提高风险防范意识,...
思念的心情说说 思念的心情说说  随着线上的、虚拟的社交的迅猛发展,越来越多人喜欢在闲暇时发布说说,用于分享自己的生...
企业党建工作总结 企业党建工作总结  时间乘着年轮循序往前,一段时间的工作已经结束了,回顾坚强走过的这段时间,取得的成...
基层党建工作制度 基层党建工作制度  基层党建工作制度(精选14篇)  在现实社会中,制度使用的情况越来越多,制度具有...