一、V4L2应用层调用流程
二、V4L2设备注册
三、video设备初始化
四、V4L2 control结构框架图
五、v4l2 ctrl 函数初始化—增加标准接口v4l2_ctrl_new_std
六、v4l2 ctrl 函数初始化—增加自定义接口v4l2_ctrl_new_custom
七、V4L2 ioctl 标准接口 调用流程
八、V4L2 ioctl 控制接口 调用流程

v4l2_ctrl_new_custom

每一个ISP都有自定义的功能,例如 bypass某个算法模块、内部测试图案等等

//v4l2_ctrl_new_custom( hdl_cst_ctrl, xxx_v4l2_ctrl_test_pattern , null);
/*
static const struct v4l2_ctrl_config xxx_v4l2_ctrl_test_pattern = {.ops = &isp_v4l2_ctrl_ops_custom,.id = ISP_V4L2_CID_TEST_PATTERN,.name = "ISP Test Pattern",.type = V4L2_CTRL_TYPE_INTEGER,.min = 0,.max = 1,.step = 1,.def = 0,
};
*/
struct v4l2_ctrl *v4l2_ctrl_new_custom(struct v4l2_ctrl_handler *hdl,const struct v4l2_config *cfg, void *priv)
{bool is_menu;struct v4l2_ctrl *ctrl;const char *name = cfg->name;const char *const *qmenu = cfg->qmenu;const s64 *qmenu_int = cfg->qmenu_int;enum v4l2_ctrl_type type = cfg->type;u32 flags = cfg->flags;s64 min = cfg->min;s64 max = cfg->max;u64 step = cfg->step;s64 def = cfg->def;if (name == NULL)v4l2_ctrl_fill(cfg->id, &name, &type, &min, &max, &step,&def, &flags);is_menu = (type == V4L2_CTRL_TYPE_MENU ||type == V4L2_CTRL_TYPE_INTEGER_MENU);if (is_menu)WARN_ON(step);else    WARN_ON(cfg->menu_skip_mask);if (type == V4L2_CTRL_TYPE_MENU && !qmenu) {qmenu = v4l2_ctrl_get_menu(cfg->id);} else if (type == V4L2_CTRL_TYPE_INTEGER_MENU && !qmenu_int) {handler_set_err(hdl, -EINVAL);return NULL;}ctrl = v4l2_ctrl_new(hdl,cfg->ops,cfg->type_ops,cfg->id,name...)if (ctrl)ctrl->is_private = cfg->is_private;return ctrl;
}

v4l2_ctrl_new就重复前面五、v4l2 ctrl 函数初始化—增加标准接口v4l2_ctrl_new_std
的内容了

六、v4l2 ctrl 函数初始化---增加自定义接口v4l2_ctrl_new_custom相关推荐

  1. graylog的API中增加自定义接口

    来源 https://github.com/Graylog2/graylog2-server/blob/master/graylog2-server/src/main/java/org/graylog ...

  2. Go 学习笔记(33)— Go 自定义类型 type(自定义结构体、结构体初始化、结构体内嵌、自定义接口)

    1. 自定义类型格式 用户自定义类型使用关键字 type ,其语法格式是: type newType oldType oldType 可以是自定义类型.预声明类型.未命名类型中的任意一种. newTy ...

  3. 在js函数有默认参数情况下如何增加自定义参数而不覆盖原本的默认参数

    在用一些ui写项目的时候会遇到:函数有默认参数并且需要增加自定义参数而不覆盖原本的默认参数的情况(代码放在评论区了) 在vant Uploader 文件上传,自定义参数 list是传入进来的,方便赋值 ...

  4. Linphone android去电增加自定义SIP消息头的流程分析

    一.首先看一下如何在发起去电的sip请求中添加自定义的消息头 增加自定义头消息发方法,so已经提供了native方法, 发起呼叫的示例如下: LinphoneCallParams params = l ...

  5. linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库

    Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...

  6. [C语言] 函数:库函数--自定义函数--函数的调用--练习--详解<个人>------(1)

    文章目录 前言 一. 函数是什么? 二. C语言中函数的分类 三. 库函数 四. 自定义函数 五. 函数的调用 六. 练习 总结 前言 本节内容主要记录函数的相关内容,其中包括:库函数,自定义函数,函 ...

  7. python学习笔记(六)——类的初始化(__init__)、类属性和类方法 和 对象

    学习本篇文章后会了解到:类的创建,为对象添加属性,对象的初始化,自定义对象的输出,类属性和类方法的创建. 1. 类的定义与格式 类是对一群具有相同特征或者行为的事物的一个统称. 类是一个模块,是负责创 ...

  8. 【实用】表维护视图SM30增加自定义按钮的实现

    表维护视图SM30增加自定义按钮的实现 1.新建Table并通过"表维护生成器"生成SM30维护视图. 正常的创建表维护视图到这一步也就结束了,最多是进函数组调整字段名称和显示效果 ...

  9. android管理activity顺序,android activity 六个主要函数以及一些调用顺序

    Android中一个Activity一般都需要实现六个函数: onCreate(), onStart(), onResume(),onPause(),onStop(),onDestroy(). onC ...

最新文章

  1. Golang微服务开发实践
  2. 专访清华AIR院长张亚勤:AI在疫情中很重要,但却很「表面」
  3. bugzilla与subversion通过scmbug整合
  4. oracle河南城建学院实验报告,数据处理实验报告
  5. Python使用BoundedSemaphore对象进行线程同步
  6. Packet Tracer 5.0实验(七) 路由器单臂路由配置
  7. 解决问题---docker:transport: dial unix:///var/run/docker/containerd/docker-containerd.sock: time
  8. Layui 表格table 第一次加载动态设置列
  9. 前端html小技巧(css篇)—表单美化详解
  10. 三星PM981(a)硬盘安装黑苹果(第五版)
  11. 情人节能有什么好作品?教你用Scratch写一个!
  12. mysql建表数据字典_一种数据字典表的创建方式
  13. 我分析了虎嗅网5万篇文章,发现这些秘密
  14. 不是“饭饭之交”! 李彦宏丁磊CP乌镇神同步
  15. vb.net打砖块游戏
  16. Ubuntu界面美化
  17. wstmart系统研究日志二
  18. android recyclerview监听滑动状态
  19. 艾永亮:腾讯、阿里、网易云音乐竞争升级,谁将造就高收益的超级产品
  20. hive之beeline连接与操作

热门文章

  1. 对自己狠一点-----胡言乱语
  2. 利用Python自动生成及发送Excel报表
  3. 电脑开机进不了系统卡在加载界面怎么办?
  4. 计算机光线太强哪里调整,电脑光线太强怎么调暗
  5. 运动耳机品牌排行榜有哪些,排行前五的运动耳机推荐
  6. 这么多大学,保证一志愿优先录取!
  7. 如何组织大型软件项目的投标
  8. 从微信提示用户浏览器打开
  9. Joda-Time 操作常用时间函数
  10. git Bash 命令行大全