V4L2杂谈

V4L2的开发手册

  • 在做v4l2的开发的时候, 可以使用v4l2-ctl命令协助调试和软件开发。
  • 关于linux多媒体开发可以参考链接:https://www.linuxtv.org/wiki/index.php/Main_Page
  • 关于v4l2的api接口开发可以参考:https://linuxtv.org/docs.php
  • 在linux下开发,可以借助ffmplay命令或者YUViewer软件进行读取显示。

基于V4l2进行图像读取

进行图像格式配置
请求缓冲
配置mmap内存映射
填写缓冲下标并加入缓冲队列
启动视频流
弹出队列里就绪的缓冲
  • v4l2 中会将申请的缓冲加入到缓冲列表里面,通过下标来指示当前的缓冲标识, 将缓冲加入队列的时候, 必须要注明下标的值。 将缓冲弹出队列的时候, 下标会通过驱动赋值传递给用户。
  • v4l2 有mmap,pointer, dma buf等方法进行读取图像加速。 比如内存映射就可以有效地避免代码在用户态和内核态来回切换, 直接将设备文件的句柄偏移映射到用户态的地址。
  • v4l2 支持mplane 多图层开发, 常见的YUV格式, 通过uv的不同组合方式,可以分为nv12,nv21等多种图像格式, Y表示亮度层, U表示色度层, V表示浓度层。
  • 在V4l2下进行多图层开发的时候, 务必要重点学习struct v4l2_plane, 其中, v4l2_plane.m.planes指针的内存, 需要由用户进行开辟和释放。
  • 在调试v4l2的时候, 可以通过打印errno变量来获取当前V4L2的api接口执行失败的返回值。
  • 在调用芯片厂商的算子IP时, 需要理解Stride的概念, 即跨距, 该值大于等于图像的原有宽度, 用户加速内存读取和算子计算。
  • 用算子IP进行加速的时候, 会涉及虚拟地址和真实地址的概念。 操作系统里面代码能访问的,基本就是虚拟地址, 可以有效防止内存崩溃。 但是, 当我们需要传递数据给硬件IP, 如IVE,NPU等核心的时候, 就必须得传递真实地址给硬件。

v4l2常用的指令

v4l2-ctl -d /dev/video11 --stream-mmap //fps
v4l2-ctl -d /dev/video11 --set-fmt-video=width=352,height=288,pixelformat=NV12 --stream-mmap=3 --stream-skip=3 --stream-to=./output.yuv  --stream-count=10 --stream-poll
v4l2-ctl --list-formats-ext --device /dev/video11v4l2-ctl --list-devicesbuild.sh clean media && build.sh media.v4l2-ctl -d /dev/video12 --infov4l2-ctl -d /dev/video12 --get-fmt-video --verbose
v4l2-ctl -d /dev/video11 --set-fmt-video=width=352,height=289,pixelformat=NV12 --verbose//配置摄像头参数,比如帧率和曝光时间,但是瑞芯微的仅能在ISP中通过3A server配置。
v4l2-ctl -d /dev/video11 --list-ctrlspixelformat = v4l2_fourcc
ffplay -f rawvideo -pixel_format nv12 -video_size 320x240 ./output.yuv #  gray 播放灰度视频
YUView
media-ctl -p -d /dev/media1 //列出所有设备entity name和node name(char device)。
entity name: mainpath
node name:  /dev/video11*        |--mainpath----[wrap]--------->enc(or ddr)*        |   |->mainpath_4x4sampling--->ddr*output->|->bypasspath----------------->ddr*        |   |->bypasspath_4x4sampling->ddr*        |->selfpath------------------->ddr*        |->lumapath------------------->ddr------------------------
insmod ./oem/usr/ko/rve.ko
rk_rve_sample_test 1

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

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

相关文章

(五)深入了解AVFoundation-播放:多音轨、字幕、倍速播放与横竖屏切换

引言 在之前的博客中,我们已经实现了一个相对完整的播放器,具备了基本功能,如播放、暂停、播放进度显示和拖拽快进等。这为我们提供了一个坚实的基础。接下来,我们将进一步扩展播放器的功能,使其更具灵活性和实用性&a…

3ds Max 2016的版本怎么处理 按键输入被主程序截断 C#winform窗体接受不到英文输入

3ds Max 2016的版本怎么处理 按键输入被主程序截断 C#winform窗体接受不到英文输入 如果窗体失去焦点应该取消 全局监听事件 解决方案:在窗体失去焦点时取消全局键盘钩子 为了确保 WinForms 窗体失去焦点时不再拦截键盘事件(避免影响 3ds Max 或其他程…

华为手机或平板与电脑实现文件共享

1.手机或平板与电脑在同一个网络 2.打开手机或平板端,设置---更多连接----快分享或华为分享打开此功能-----开启共享至电脑 3.打开电脑,网络中就可看到手机端分享的用户名称 4. 登陆就可访问手机 5.常见问题 5.1 电脑未发现本机 5.2 修改了访问密码后再…

elemenPlus中,如何去掉el-input中 文本域 textarea自带的边框和角标

1、去掉角标 :deep(.el-textarea__inner) {resize: none !important; // 去除右下角图标 }2、去除边框&#xff0c;并自定义背景色 <el-inputref"textareaRef"v-model"tempContent":style"{--el-border-color: rgba(255,255,255,0.0),--el-input-…

xv6-labs-2024 lab2

lab-2 0. 前置 课程记录 操作系统的隔离性&#xff0c;举例说明就是&#xff0c;当我们的shell&#xff0c;或者qq挂掉了&#xff0c;我们不希望因为他&#xff0c;去影响其他的进程&#xff0c;所以在不同的应用程序之间&#xff0c;需要有隔离性&#xff0c;并且&#xff0…

MCU控制4G模组(标准AT命令),CatM的最大速率?

根据3GPP标准&#xff0c;Cat M1的上行峰值速率大约是1 Mbps&#xff0c;下行大约是1 Mbps。但实际速率会受到多种因素影响&#xff0c;比如网络条件、信号强度、模块配置等。 考虑使用AT命令时的开销。每次发送数据都需要通过AT命令&#xff0c;比如ATQISEND&#xff0c;会引…

JavaScript(JS进阶)

目录 00闭包 01函数进阶 02解构赋值 03通过forEach方法遍历数组 04深入对象 05内置构造函数 06原型 00闭包 <!-- 闭包 --><html><body><script>// 定义&#xff1a;闭包内层函数&#xff08;匿名函数&#xff09;外层函数的变量&#xff08;s&…

6.1es新特性解构赋值

解构赋值是 ES6&#xff08;ECMAScript 2015&#xff09;引入的语法&#xff0c;通过模式匹配从数组或对象中提取值并赋值给变量。&#xff1a; 功能实现 数组解构&#xff1a;按位置匹配值&#xff0c;如 let [a, b] [1, 2]。对象解构&#xff1a;按属性名匹配值&#xff0c;…

SpringBoot美容院管理系统设计与实现

基于SpringBoot的美容院管理系统免费源码&#xff0c;帮助您快速搭建高效、智能的美容院管理平台。该系统涵盖了管理员、技师、前台、普通用户及会员五大功能模块&#xff0c;以下是系统的核心功能与部署方式详细介绍。 ​功能模块 ​管理员功能 ​美容部位管理&#xff1a;支…

记一次某网络安全比赛三阶段webserver应急响应解题过程

0X01 任务说明 0X02 靶机介绍 Webserver&#xff08;Web服务器&#xff09;是一种软件或硬件设备&#xff0c;用于接收、处理并响应来自客户端&#xff08;如浏览器&#xff09;的HTTP请求&#xff0c;提供网页、图片、视频等静态或动态内容&#xff0c;是互联网基础设施的核心…

ChatGPT 4:引领 AI 创作新时代

文章目录 前言一、ChatGPT 4 的技术革新二、AI 文案创作&#xff1a;精准生成与个性化定制三、AI 绘画艺术&#xff1a;从文字到图像的神奇转化四、AI 视频制作&#xff1a;自动化剪辑与创意实现五、知识库与 ChatGPT 4 的深度融合六、全新的变革和机遇七、相关书籍推荐《ChatG…

HTTP请求-请求行

请求行&#xff08;方法&#xff0c;URL&#xff0c;版本号&#xff09; 方法&#xff1a; 描述了这次请求的目的。 常见方法&#xff1a; GET&#xff1a;从服务器拿一个东西过来&#xff08;读操作&#xff09; POST&#xff1a;往服务器放一个东西去&#xff08;写操作…

OSPF不规则区域和LSA

OSPF不规则区域 1.远离骨干的非骨干区域 R1-R4四台路由器能够正常学习到彼此路由&#xff0c;但是R5不行&#xff0c;因为R5是非法ABR 解决方法&#xff1a; 1使用Tunnel隧道将AR4连接到骨干区域 &#xff08;1&#xff09; 使用隧道解决不规则区域的问题 a.可能造成选路不…

【VS Code】开发C++跳转配置

C配置c_cpp_properties.json {"env": {"myIncludePath": ["${workspaceFolder}/src/include","${workspaceFolder}/src","${workspaceFolder}","/home/xxx/include/"],"myDefines": ["RELEASE&qu…

Spring AI应用:利用DeepSeek+嵌入模型+Milvus向量数据库实现检索增强生成--RAG应用(超详细)

Spring AI应用&#xff1a;利用DeepSeek嵌入模型Milvus向量数据库实现检索增强生成–RAG应用&#xff08;超详细&#xff09; 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的快速发展为各行业带来了前所未有的机遇。其中&#xff0c;检索增强生成&…

Spring 的 IoC 和 DI 详解:从零开始理解与实践

Spring 的 IoC和 DI 详解&#xff1a;从零开始理解与实践 一、IoC&#xff08;控制反转&#xff09; 1、什么是 IoC&#xff1f; IoC 是一种设计思想&#xff0c;它的核心是将对象的创建和管理权从开发者手中转移到外部容器&#xff08;如 Spring 容器&#xff09;。通过这种…

JVM基础架构:内存模型×Class文件结构×核心原理剖析

&#x1f680;前言 “为什么你的Java程序总在半夜OOM崩溃&#xff1f;为什么某些代码性能突然下降&#xff1f;一切问题的答案都在JVM里&#xff01; 作为Java开发者&#xff0c;如果你&#xff1a; 对OutOfMemoryError束手无策看不懂GC日志里的神秘数字好奇.class文件如何变…

.DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具

&#x1f409;工具介绍 一款图形化的 .DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具。 &#x1f3af;使用 本工具使用Python3 PyQt5开发&#xff0c;在开始使用前&#xff0c;请确保已经安装了相关模块&#xff1a; pip3 install -r requirements.txt -i ht…

为何在 FastAPI 中需要允许跨域访问(CORS)?(Grok3 回答)

prompt: 你是一个文笔流畅、专业性极强的技术博客博主&#xff0c;你将结合具体的例子和实际代码解释写一篇为何后端选择fastapi框架时&#xff0c;需要允许跨域访问。 为何在 FastAPI 中需要允许跨域访问&#xff08;CORS&#xff09;&#xff1f; 在现代 Web 开发中&#xf…

JDK8前后日期(计算两个日期时间差-高考倒计时)

JDK8之前日期、时间 Date SimpleDateFormat Calender JDK8开始日期、时间 LocalDate/LocalTime/LocalDateTime ZoneId/ZoneDateTIme Instant-时间毫秒值 DateTimeFormatter Duration/Period