V4L2 控件本质上是一个 key-value 配置接口,驱动暴露一组 id → value 的映射,用户层通过 ioctl 读写。

对应V4L2设备,以摄像头为例:

​ 有控件的说法。很多V4L2设备高度抽象了一些控件。直接拿来用就好。

​ 比如:亮度、对比度控件。

1. 数据类型(能存什么值)

类型说明例子
INTEGER整数,范围 min~max,步进 step亮度 0~255 step 1
BOOLEAN0/1自动白平衡开关
MENU索引 → 字符串电源频率 0=50Hz 1=60Hz
INTEGER_MENU索引 → 整数某驱动自定义模式 ID
BUTTON写入即触发一个动作执行一次白平衡
INTEGER6464位整数大范围计数器
STRING字符串设备序列号
BITMASK位掩码各功能使能位

2. 属性标志(能怎么用)

当前文件 print_ctrl_flags() 已经列的:

标志含义
DISABLED控件被禁用,不可用
READ_ONLY只读,只能查询不能设置
WRITE_ONLY只写(通常是触发类)
VOLATILE值会随硬件自动变化(如自动曝光时 actual exposure)
HAS_PAYLOAD携带复杂数据结构(H.264/HDR 元数据等)
EXECUTE_ON_WRITE写入即执行(BUTTON 类型必须有此标志)
MODIFY_LAYOUT改变此控件会影响图像布局(比如改变裁剪窗口)

枚举设备支持的控件