当某个应用想要申请某个标准的时候,会发出一个 VIDIOC_S_STD 调用,该调用通过下
面的函数传到驱动:
88CD*==+C0D01*D*=18888888888888888*==+E
驱动要对硬件编程,以使用给定的标准,并返回 0(或是负的出错编码).V4L2 层需要把
current_norm 设为新的值。
应用可能想要知道硬件所看到的是何种信号,答案可以通过 VIDIOC_QUERYSTD 找到,
它到了驱动里面就是:
88CD*=G4+C0D01*D*=1888888888888888888*==D+E
驱动要尽可能地在这个字段填写详细信息。如果硬件没有提供足够的信息,std 字段就会
暗示任何可能出现的标准。
这里还有一点值得一提:所以的视频设备必须支持(或是声明支持)至少一种视频标准。
视频标准对于摄像头来说没什么意义,它不与任何监管制度绑定。但是也不存一个标准说
“我是个摄像头,我什么都能做”,所以 V4L2 层有很多摄像头声明可以返回 PAL 或 NTSC
数据(实际只是如些声明而己)。
输入
视频捕获的应用首先要通过 VIDIOC_ENUMINPUT
命令来枚举所有可用的输入。在 V4L2 层,这个调用会转换成调用一个驱动中对应的回调
函数:
88CD*=5=+C0D01*D*=188888888888888888888*=
D+E
在这个调用中,7le 对就的是打开的视频设备。private_data 是驱动的私有字段,input
字段是真正的传递的信息,它有如下几个值得关注的字段:
== 应用关注的输入的索引号E这是惟一一个用户空间设定的字段驱动要
分配索引号给输入,从 开始,依次往上增加想要知道所以可用的输入的应用会调
用 &,=?"-2"-6
调用过索引号从 开始,并开始递增。一旦返回 ?",应用就知道,输入己经
用光了只要有输入,输入索引号 就一定要存在的
==$5HI输入的名字,由驱动设定简单起见,可以设为”,5,诸如此类E
如果卡上有多个输入,名称就要与接口的打印相符合
==4输入的类型,现在只有两个值可选="-6=6>?=6-"?A
和 ="-6=6>?=,2?A
==描述哪个音频输入可以与些视频输入相关联音频输入与视频输入一
样通过索引号枚举C我们会在另一篇文章中关注音频+1但并非所以的音频与视频的组
合都是可用的这个字段是一个掩码,代表对于当前枚举出的视频而言,哪些音频输