L4V2框架下APP编写ioctl流程

2024-04-19 18:44
文章标签 流程 app 编写 框架 ioctl l4v2

本文主要是介绍L4V2框架下APP编写ioctl流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摄像头L4V2框架编写APP,对获取数据的由抽象硬件到软件ioctl操作有具体流程。

在这里插入图片描述

查询设备能力属性

 struct v4l2_capability cap;ioctl(fd, VIDIOC_QUERYCAP, &cap);

枚举格式

struct v4l2_fmtdesc fmtdesc;fmtdesc.index = fmt_index; fmtdesc.type  = V4L2_BUF_TYPE_VIDEO_CAPTURE;  ioctl(fd, VIDIOC_ENUM_FMT, &fmtdesc);

枚举帧大小

struct v4l2_frmsizeenum fsenum;fsenum.pixel_format = fmtdesc.pixelformat;fsenum.index = frame_index;ioctl(fd, VIDIOC_ENUM_FRAMESIZES, &fsenum);

设置格式

struct v4l2_format fmt;fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;fmt.fmt.pix.width = 1024;fmt.fmt.pix.height = 768;fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_MJPEG;fmt.fmt.pix.field = V4L2_FIELD_ANY;ioctl(fd, VIDIOC_S_FMT, &fmt);

申请buffer

struct v4l2_requestbuffers rb;rb.count = 32;rb.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;rb.memory = V4L2_MEMORY_MMAP;ioctl(fd, VIDIOC_REQBUFS, &rb);

查询buffer是否申请成功

struct v4l2_buffer buf;buf.index = i;buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;buf.memory = V4L2_MEMORY_MMAP;ioctl(fd, VIDIOC_QUERYBUF, &buf);

buffer放入空闲链表

 struct v4l2_buffer buf;buf.index = i;buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;buf.memory = V4L2_MEMORY_MMAP;ioctl(fd, VIDIOC_QBUF, &buf);

启动摄像头

   type = V4L2_BUF_TYPE_VIDEO_CAPTURE;ioctl(fd, VIDIOC_STREAMON, &type);

buffer取出队列

struct v4l2_buffer buf;buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;buf.memory = V4L2_MEMORY_MMAP;ioctl(fd, VIDIOC_DQBUF, &buf);

使用id的 ioctrl命令

//查询设备支持的控制属性
struct v4l2_queryctrl   qctrl;qctrl.id = V4L2_CID_BRIGHTNESS; ioctl(fd, VIDIOC_QUERYCTRL, &qctrl);  
//获取当前的控制值
struct v4l2_control ctl;ctl.id = V4L2_CID_BRIGHTNESS;ioctl(fd, VIDIOC_G_CTRL, &ctl);     
//设置当前的控制值struct v4l2_control c;c.id = V4L2_CID_BRIGHTNESS; c.value = 99;ioctl(h->fd, VIDIOC_S_CTRL, &c);    

这篇关于L4V2框架下APP编写ioctl流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918296

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践