v4l2_ctrl_handler_init(hdl, 4); v4l2_ctrl_new_std(hdl, &skel_ctrl_ops, V4L2_CID_BRIGHTNESS, 0, 255, 1, 127); v4l2_ctrl_new_std(hdl, &skel_ctrl_ops, V4L2_CID_CONTRAST, 0, 255, 1, 16); v4l2_ctrl_new_std(hdl, &skel_ctrl_ops, V4L2_CID_SATURATION, 0, 255, 1, 127); v4l...
};2.vfd->v4l2_dev = &dev->v4l2_dev;3.设置“Ctrl属性”(用于APP的ioctl),音量、亮度、增益等 dev->volume = v4l2_ctrl_new_std(hdl, &vivi_ctrl_ops, V4L2_CID_AUDIO_VOLUME,0,255,1,200); dev->brightness = v4l2_ctrl_new_std(hdl, &vivi_ctrl_ops, V4L2_CID_BRIGHTNESS,0,255,1,127);...
v4l2_ctrl_handler_init(hdl, 11);//初始化一个ctrl_handler /*v4l2_ctrl_new_std 添加一个新的标准的ctrl v4l2_ctrl_new_custom添加一个客户自定义的ctrl*/ dev->volume = v4l2_ctrl_new_std(hdl, &vivi_ctrl_ops,V4L2_CID_AUDIO_VOLUME, 0, 255, 1, 200); dev->brightness = v4l2_ctrl_new_std...
3. 设置"ctrl属性"(用于APP的ioctl): v4l2_ctrl_handler_init(hdl, 11); dev->volume = v4l2_ctrl_new_std(hdl, &vivi_ctrl_ops, V4L2_CID_AUDIO_VOLUME, 0, 255, 1, 200); dev->brightness = v4l2_ctrl_new_std(hdl, &vivi_ctrl_ops, V4L2_CID_BRIGHTNESS, 0, 255, 1, 127); dev->contra...
v4l2_ctrl_handler是用于保存子设备控制方法集的结构体,对于视频设备这些ctrls包括设置亮度、饱和度、对比度和清晰度等,用链表的方式来保存ctrls,可以通过v4l2_ctrl_new_std函数向链表添加ctrls。 其实下面的注释已经有对应的说明了 // kernel_imx/include/media/v4l2-ctrls.h ...
5)、继续在 vivi_create_instance(i) 函数中分析,继续设置 dev 结构体中的其他一些参数,对 volume,brightness,contrast,saturation 等参数设置的时候,调用了 v4l2_ctrl_new_std 这个函数,以及对 button,int32,menu,bitmask 等参数设置,调用了 v4l2_ctrl_new_custom 这个函数,一看就知道这两个函数是 V4L2 框架所...
hdl=&dev->ctrl_handler;v4l2_ctrl_handler_init(hdl,11);dev->volume=v4l2_ctrl_new_std(hdl,&vivi_ctrl_ops,V4L2_CID_AUDIO_VOLUME,0,255,1,200);dev->brightness=v4l2_ctrl_new_std(hdl,&vivi_ctrl_ops,V4L2_CID_BRIGHTNESS,0,255,1,127);dev->contrast=v4l2_ctrl_new_std(hdl,&vivi_ctrl_ops...
5struct v4l2_ctrl_handler *hdl;6struct vb2_queue *q;7int ret;8 9 dev = kzalloc(sizeof(*dev), GFP_KERNEL);10if (!dev)11return -ENOMEM;12 13 snprintf(dev->v4l2_dev.name, sizeof(dev->v4l2_dev.name),14"%s-%03d", VIVI_MODULE_NAME, inst);15ret = v4l2_device_register...
dev->hue = v4l2_ctrl_new_std(hdl, &vivi_ctrl_ops, V4L2_CID_HUE, -128, 127, 1, 0); dev->button = v4l2_ctrl_new_custom(hdl, &vivi_ctrl_button, NULL); dev->int32 = v4l2_ctrl_new_custom(hdl, &vivi_ctrl_int32, NULL); ...
static const struct v4l2_ctrl_ops os08a20_ctrl_ops = { @@ -861,6 +920,10 @@ static int os08a20_init_controls(struct os08a20 *sensor) OS08A20_DEFAULT_LINK_FREQ, os08a20_csi2_link_freqs);ctrls->hdr_mode = v4l2_ctrl_new_std_menu_items(hdl, ops, V4L2_CID_HDR_SENSOR_MODE,...