瑞芯微平台RK3568系统开发(2)Camera 开发1

1. 前言

1.1 RK3568硬件框图

1.2  开发流程

通过gstreamer/rockit来在rockchip平台上做multimedia的开发:

vpu_service--> mpp --> gstreamer/ffmpeg --> app

vpu_service:驱动

mpp:rockchip平台的视频编解码中间件,相关说明参考mpp文档

gstreamer:对接app的组件

目前rockchip提供的完整solution是基于gstreamer的,使用gstreamer的好处就是可以比较方便的基于pipeline的方式编写完整的播放器、编码器这些应用。

2. v4l2-utils

在Buildroot固件中,已经编译好了v4l2-utils软件包里面的工具。

开发板中烧入Buildroot固件后,输入命令 v4l2-ctl-h ,有以下显示:

[root@RK356X:~]# v4l2-ctl-h
General/Common options:
--all           display all information available
-C, --get-ctrl <ctrl>[,<ctrl>...]
get the value of the controls [VIDIOC_G_EXT_CTRLS]
-c, --set-ctrl <ctrl>=<val>[,<ctrl>=<val>...]
set the value of the controls [VIDIOC_S_EXT_CTRLS]
-D, --info        show driver info [VIDIOC_QUERYCAP]
-d, --device <dev> use device <dev> instead of/dev/video0
if <dev> starts with a digit, then /dev/video<dev> is used
-e, --out-device <dev> use device <dev> for output streams instead of the default device as set with --device
if <dev> starts with a digit, then /dev/video<dev> is used
-h, --help display this help message

3、使用media-ctl查看拓扑结构

media-ctl是v4l2-utils包中的一个工具,

主要用来查看、配置Media Framework的各Entity的信息,如格式、裁剪、链接使能等。

3.1 显示拓扑结构

使用以下命令可以显示拓扑结构:

media-ctl -p -d /dev/media0 `

主要关注的是有没有找到Sensor的Entity。

如果没有找到Sensor的Entity,说明Sensor注册有问题,请按FAQ文档排查。

例如,开发板上接上gc2053摄像头后可以看到如下的输出(有删减):

[root@RK356X:~]#media-ctl -p-d/dev/media0Media controller API version 4.19.193Media device information
------------------------
driver         rkisp-vir0
model          rkisp0
serial
bus info
hw revision          0x0
driver version 4.19.193Device topology
- entity 1 : rkisp-isp-subdev (4 pads, 7 links) 
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev0
pad0: Sink
[fmt:SGRBG10_1X10/1920x1080 field:none
crop. bounds: (0, 0) /1920x1080
crop: (0, 0)/1920x1080]
<-"rkisp-csi-subdev":1 [ENABLED]
<- "rkisp_rawrd0_m":0 [ ]
<- "rkisp_rawrd2_s":0 [ ]
pad1:Sink
<- "rkisp-input-params":0 [ENABLED] 
pad2: Source
[fmt:YUYV8_2X8/1920x1080 field:none colorspace:smpte170m quantization:full-range
crop. bounds: (0, 0) /1920x1080
crop: (0, 0)/1920x1080]
-> "rkisp_mainpath":0 [ENABLED]
-> "rkisp_selfpath":0 [ENABLED]
pad3: Source
-> "rkisp-statistics":0 [ENABLED]
- entity 70: m00_f_gc2053 4-0037 (1 pad, 1 link)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev3
pad0: Source
[fmt:SGRBG10_1X10/1920x1080@10000/300000 field:none]
->"rockchip-csi2-dphy1":0 [ENABLED]

从entity70信息中可以看到:

  • 该Entity完整的名称是:m00_f_gc2053 4-0037

  • 它是一个V4L2 subdev(Sub-Device) Sensor

  • 它对应的节点是/dev/v4l-subdev3,应用程序(如v4l2-ctl)可以打开它,并进行配置

  • 它仅有一个输出(Source)节点,记为pad0

  • 它的输出格式是[fmt:SGRBG10_1X10/1920x1080@10000/300000 field:none],其中SBGGR10_1X10是一种mbus-code的简称

  • 它的Source pad0 链接到"rockchip-csi2-dphy1"的pad0,并且当前的状态是 ENABLED。

3.2 修改Entity的format、size

举例一,GC2053摄像头支持多个分辨率的输出,默认为1920x1080。

现将输出分辨率改为640x480:

media-ctl -d/dev/media0\
--set-v4l2' "m00_f_gc2053 4-0037":0[fmt:SGRBG10_1X10/640x480]'

修改GC2053输出后,rkisp-isp-subdev的大小及video device crop也相应要修改。

因为后级的大小不能大于前级的大小。

~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":0[fmt:SGRBG10_1X10/640x480]'
~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":0[crop: (0, 0)/640x480]'
~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":2[crop: (0, 0)/640x480]'
~/>$ v4l2-ctl -d/dev/video0\
--set-selection=target=crop, top=0, left=0, width=640, height=480

3.3 找到video设备

拓扑结构中有多个的Entity,一些是sub device,一些是video device。

前者对应的设备节点是/dev/v4l-subdev,后者对应的是/dev/video。

多个的video device中,最常关注的是哪个设备可以输出图像。

$ media-ctl -d/dev/media0 -e "rkisp_selfpath"
/dev/video1
$ media-ctl -d/dev/media0 -e "rkisp_mainpath"
/dev/video0

上面两个命令分别显示出/dev/media0这个链路中,RKISP的SP及MP节点的设备路径。

RKISP有两个视频输出设备,它们都能输出图像。

后面步骤继续讲解,持续更新

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3+ts+vite+electron+electron-packager打包成exe文件

目录 1、创建vite项目 2、添加需求文件 3、根据package.json文件安装依赖 4、打包 5、electron命令运行 6、electron-packager打包成exe文件 Build cross-platform desktop apps with JavaScript, HTML, and CSS | Electron 1、创建vite项目 npm create vitelatest 2、添…

【解决方案】华普微汽车智能钥匙解决方案

一、方案概述 1.什么是被动式无钥匙进入 "被动式无钥匙进入"&#xff08;Passive Keyless Entry&#xff09;是一种用于车辆、建筑物或其他设施的访问控制系统。它利用无线射频技术自动判断用户是否接近&#xff0c;并进行身份识别以执行开锁或落锁动作&#xff0c…

LabVIEW操作系列1

系列文章目录 我的记录&#xff1a; LabVIEW操作系列 文章目录 系列文章目录前言五、特殊用法5.1 取值范围表示5.2 对输入值取值范围进行限定5.3 控制多个While循环停止运行。5.4 获取按钮上的文本5.5 获取按钮上的文本【进阶】 六、使用步骤1.引入库2.读入数据 七、其余功能7.…

nodejs与npm版本对应表

Node.js — Node.js 版本 (nodejs.org)

go语言day20 使用gin框架获取参数 使用自定义的logger记录日志

Golang 操作 Logger、Zap Logger 日志_golang zap-CSDN博客 目录 一、 从控制器中获取参数的几种形式 1&#xff09; 页面请求url直接拼接参数。 2&#xff09; 页面请求提交form表单 3&#xff09; 页面请求发送json数据&#xff0c;使用上下文对象c的BindJSON()方法接…

Java中static静态变量--继承等相关知识

目录 static 继承&#xff1a; 继承的特点&#xff1a; 案例&#xff1a;自己设计一个继承体系练习&#xff1a; 设计思想&#xff1a; 代码&#xff1a; 子类到底能继承父类的哪些类容&#xff1f; 成员变量内存的继承情况&#xff1a; 成员方法的内存继承情况&#x…

示例:WPF中如何处理TabControl页面绑定ItemsSource切换TabItem时UI数据没有持久保存的问题

一、目的&#xff1a;在WPF开发过程中&#xff0c;经常用到TabControl&#xff0c;也会遇到类似问题&#xff0c;用TabControl绑定数据源ItemsSource时&#xff0c;切换TabItem时&#xff0c;UI上的数据没有持久保存&#xff0c;本文介绍一种处理方式&#xff0c;可以做到缓存页…

矩阵管理系统有哪些功能?

在当今快节奏的数字时代&#xff0c;管理多个社交媒体账号或内容渠道可能是一项令人望而生畏的任务。这就是矩阵管理系统大显身手的地方。矩阵管理系统是一种高效的工具&#xff0c;它帮助我们轻松地管理多个内容发布点&#xff0c;就像指挥官控制着整个战场一样。下面&#xf…

C++·set与map容器(下)

本节把红黑树封装到set与map容器中去主要就是迭代器的自增自减&#xff0c;封装的大部分内容都展示到最后代码中了 1. 红黑树的改造 因为set容器只有关键码值&#xff0c;map容器中不仅要存关键码值&#xff0c;还要存关键码值对应的数据。但是红黑树只有一颗&#xff0c;我们…

【轨物方案】码头卸船机在线监测物联网解决方案

卸船机是利用连续输送机械制成能提升散粒物料的机头&#xff0c;或兼有自行取料能力&#xff0c;或配以取料、喂料装置&#xff0c;将散粒物料连续不断地提出船舱&#xff0c;然后卸载到臂架或机架并能运至岸边运输的地方送机系统去的专用机械。每年都要安排人员定期去现场巡检…

搭建DNS正向解析,反向解析+搭建DNS主从架构+搭建DNS多区域+时间同步

主要在局域网中配置&#xff0c;不存在外网 正向解析&#xff1a;域名解析为IP named.conf 解决权限 named.rfc1912.zones 解决解析方式 环境准备&#xff1a;三台机器都做下面的操作 基础配置&#xff1a;网络配置&#xff0c;关闭安全架构&#xff0c;关闭防火墙&#x…

3D模型可视化引擎HOOPS Luminate功能一览:实时渲染(二)

HOOPS Luminate是一款专为图像可视化设计的C编程工具包。它通过一个统一的集成API&#xff0c;全面覆盖了实时2D、实时3D以及照片级逼真渲染的图形功能。在处理大型数据组件的显示方面&#xff0c;HOOPS Luminate展现出了卓越的性能&#xff0c;并且具备高度的可定制性和灵活性…

一文带你读懂TCP

文章目录 1 TCP协议1.1 TCP 基础1.1.1 TCP 特性1.2.2 TCP连接数 1.2 TCP 头1.2.1 TCP 头格式1.2.2 MTU&#xff0c;MSS&#xff0c;分片传输 1.3 TCP 连接三路握手1.4 TCP 断开四次挥手1.5 SYN攻击和防范1.6 重传机制1.6.1 超时重传1.6.2 快速重传1.6.3 SACK 1.7 滑动窗口1.8 流…

VScode使用Github Copilot插件时出现read ECONNREST问题的解决方法

文章目录 read ECONNREST查看是否仍是 Copilot 会员查看控制台输出网络连接问题浏览器设置问题笔者的话 read ECONNREST 最近使用 Copilot 时一直出现 read ECONNREST 问题&#xff0c;这个表示连接被对方重置了&#xff0c;就是说在读取数据时连接被关闭。 我首先怀疑是不是…

springboo 整合 redis

springBoot 整合 redis starter启动依赖。—包含自动装配类—完成相应的装配功能。 引入依赖 <!--引入了redis整合springboot 的依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis&…

PostgreSQL的pg-collector工具

PostgreSQL的pg-collector工具 pg-collector 是一个用于 PostgreSQL 数据库的监控和数据收集工具。它主要用于收集 PostgreSQL 实例的性能指标、查询统计和日志信息&#xff0c;以便进行数据库性能分析和故障排查。通过收集这些数据&#xff0c;管理员可以更好地了解数据库的运…

盘点2024年网上很火的4个语音识别转文字工具。

语音识别转文字是一项非常实用的技术&#xff0c;可以帮助我们在会议记录中省去手动记录&#xff0c;在采访中迅速得到文字稿&#xff0c;在学习中快速生成课堂笔...运用十分广泛。但是很多人不知道要怎么转换&#xff0c;在这里我便给大家介绍几款效率非常高的语音转文字的工具…

python 裁剪图片

情况&#xff1a; 有时候看视频&#xff0c;看到一个漂亮的妹子&#xff0c;按下 Alt PrintScreen 进行截图之后&#xff0c;会把整个屏幕都截图。 需要适当剪裁一下。 每次打开 PS &#xff0c; 也太慢了。 所以写个代码&#xff0c; 快速处理。 效果对比&#xff1a; 原始…

轨道式智能巡检机器人,助力综合管廊安全运维

1 引言 当前城市综合管廊建设已经成为世界范围内的发展趋势&#xff0c;2017年5月住建部、发改委联合发布《全国城市市政基础设施建设“十三五”规划》&#xff0c;截至2017年4月底国内地下综合管廊试点项目已开工建设687 km&#xff0c;建成廊体260 km&#xff0c;完成投资40…

MSSQL注入前置知识

简述 Microsoft SQL server也叫SQL server / MSSQL&#xff0c;由微软推出的关系型数据库&#xff0c;默认端口1433 常见搭配C# / .net IISmssql mssql的数据库文件 数据文件&#xff08;.mdf&#xff09;&#xff1a;主要的数据文件&#xff0c;包含数据表中的数据和对象信息…