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

相关文章

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid