V4L2中常用到的命令标志符和结构体

本文介绍了V4L2(Video for Linux Two)中的一些重要命令标志,如VIDIOC_STREAMON和VIDIOC_STREAMOFF,并详细讲解了与之相关的结构体,包括v4l2_requestbuffers、v4l2_capability、v4l2_input、v4l2_format等,这些结构体在视频设备操作中起到关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在进行V4L2开发中,一般会用到以下的命令标志符:


VIDIOC_REQBUFS:  分配内存
VIDIOC_QUERYBUF: 把VIDIOC_REQBUFS中分配的数据缓存转换成物理地址
VIDIOC_QUERYCAP: 查询驱动功能
VIDIOC_ENUM_FMT: 获取当前驱动支持的视频格式
VIDIOC_S_FMT: 设置当前驱动的频捕获格式
VIDIOC_G_FMT: 读取当前驱动的频捕获格式
VIDIOC_TRY_FMT: 验证当前驱动的显示格式
VIDIOC_CROPCAP: 查询驱动的修剪能力
VIDIOC_S_CROP: 设置视频信号的边框
VIDIOC_G_CROP: 读取视频信号的边框
VIDIOC_QBUF: 把数据放回缓存队列
VIDIOC_DQBUF: 把数据从缓存中读取出来

VIDIOC_STREAMON: 开始视频显示函数

VIDIOC_STREAMOFF: 结束视频显示函数
VIDIOC_QUERYSTD: 检查当前视频设备支持的标准,例如PAL或NTSC

常用的结构体(参见/usr/include/linux/videodev2.h):


struct v4l2_requestbuffers reqbufs; //向驱动申请帧缓冲的请求,里面包含申请的个数
struct v4l2_capability cap; //这个设备的功能,比如是否是视频输入设备
struct v4l2_input input; //视频输入
struct v4l2_standard std; //视频的制式,比如PAL,NTSC
struct v4l2_format fmt; //帧的格式,比如宽度,高度等
struct v4l2_buffer buf; //代表驱动中的一帧
v4l2_std_id stdid; //视频制式,例如:V4L2_STD_PAL_B
struct v4l2_queryctrl query; //查询的控制
struct v4l2_control control; //具体控制的值

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

struct v412_standard 结构体:

[cpp]  view plain   copy
  print ?
  1. typedef u64 v4l2_std_id;  
  2. struct v4l2_standard {  
  3.     u32 index;  
  4.     v4l2_std_id id;  
  5.     u8 name[24];  
  6.     struct v4l2_fract frameperiod; /* Frames, not fields */  
  7.     u32 framelines;  
  8.     u32 reserved[4];  
  9. };  

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

struct v412_input 结构体:

[cpp]  view plain   copy
  print ?
  1. struct v4l2_input {  
  2.     __u32 index;        /* Which input */  
  3.     __u8 name[32];      /* Label */  
  4.     __u32 type;         /* Type of input */  
  5.     __u32 audioset;     /* Associated audios (bitfield) */  
  6.     __u32 tuner;        /* Associated tuner */  
  7.     v4l2_std_id std;  
  8.     __u32 status;  
  9.     __u32 reserved[4];  
  10. };  

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

struct v412_crop 结构体:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值