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

相关文章

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

MySQL 升级到8.4版本的完整流程及操作方法

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字... 目录一、升级前准备 (3.1 Before You Begin)二、升级路径 (3.2 Upgrade

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶