V4L2 控件本质上是一个 key-value 配置接口,驱动暴露一组 id → value 的映射,用户层通过 ioctl 读写。
对应V4L2设备,以摄像头为例:
有控件的说法。很多V4L2设备高度抽象了一些控件。直接拿来用就好。
比如:亮度、对比度控件。
1. 数据类型(能存什么值)
| 类型 | 说明 | 例子 |
|---|---|---|
| INTEGER | 整数,范围 min~max,步进 step | 亮度 0~255 step 1 |
| BOOLEAN | 0/1 | 自动白平衡开关 |
| MENU | 索引 → 字符串 | 电源频率 0=50Hz 1=60Hz |
| INTEGER_MENU | 索引 → 整数 | 某驱动自定义模式 ID |
| BUTTON | 写入即触发一个动作 | 执行一次白平衡 |
| INTEGER64 | 64位整数 | 大范围计数器 |
| 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 | 改变此控件会影响图像布局(比如改变裁剪窗口) |