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.pswp.cn/pingmian/76281.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76281.shtml
英文地址,請注明出處:http://en.pswp.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