相机驱动程序调用指南
本主题讨论如何为红外 (IR) 相机启用人脸身份验证,适用于希望在其设备中提供此功能的原始设备制造商 (OEM) 和独立硬件供应商 (IHV)。
FrameServer
下图显示了人脸身份验证如何通过 FrameServer 与新的驱动程序堆栈一起工作:
人脸身份验证 DDI
在 Windows 10 1607 版本中,有两种新的人脸身份验证 DDI 构造可用于支持 Windows Hello:
KSPROPERTY_CAMERACONTROL_EXTENDED_FACEAUTH_MODE
此属性 ID 用于使用以下标志在驱动程序中打开和配置人脸身份验证:
KSCAMERA_EXTENDEDPROP_FACEAUTH_MODE_DISABLED
KSCAMERA_EXTENDEDPROP_FACEAUTH_MODE_ALTERNATIVE_FRAME_ILLUMINATION
KSCAMERA_EXTENDEDPROP_FACEAUTH_MODE_BACKGROUND_SUBTRACTION
有关此控件以及如何使用位标志设置人脸身份验证模式的详细信息,请参阅 KSPROPERTY_CAMERACONTROL_EXTENDED_FACEAUTH_MODE 主题。
MF_CAPTURE_METADATA_FRAME_ILLUMINATION
IR 相机的此元数据属性指定帧使用主动 IR 照明。 有关详细信息,请参阅捕获统计信息元数据属性主题中的必需元数据属性表。
USB 相机支持
若要为设备上的红外相机启用人脸身份验证,必须提供正确配置的 DeviceMFT 组件和 USB 视频类 (UVC) 扩展单元。
配置 DeviceMFT 组件
作为在设备上构建支持人脸身份验证的 DeviceMFT 组件的起点,可以使用 sampledevicemft 示例。
若要修改驱动程序示例,请对示例源代码进行以下更改:
在 DeviceMFT 组件中添加源类型信息
在 DeviceMFT 组件中标记照明标志
将 DeviceMFT 组件中的 IKSControl 转换为与将在下一节中生成的 UVC 扩展单元通信:
生成 USB 视频类 (UVC) 扩展单元
若要为设备生成 UVC 扩展单元,请按照生成扩展单元示例控件中的说明进行操作。 本主题包含有关创建所需项目文件的信息,并提供指向以下主题中的示例代码的链接:
UVC 扩展单元的示例接口(包含 Interface.idl)
示例扩展单元插件 DLL(包含 Xuproxy.h 和 Xuproxy.cpp)
UVC 扩展单元的示例注册表项(包含 Xusample.rgs)
UVC 扩展单元应用示例(包含 TestApp.cpp)
有关示例代码模块如何协同工作的详细信息,请参阅扩展单元插件体系结构主题。
INF 文件条目
若要在 KSCATEGORY_SENSOR_CAMERA 下注册 UVC 设备,应指定传感器相机促销标志:
HKR,,SensorCameraMode,0x00010001,0x00000001
若要从常规相机应用中隐藏此相机,因为它没有 RGB 流,请使用跳过枚举标志,如下所示:
HKR,,SkipCameraEnumeration,0x00010001,0x00000001
这会从 KSCATEGORY_VIDEO中删除相机,这会阻止它通过常规相机应用通过旧枚举进行枚举。
SkipCameraEnumeration 和 SensorCameraMode 条目都应放在 INF 文件的 DDInstall.HW 节中。
用于 KSCATEGORY_SENSOR_CAMERA 的 HLK 测试以帮助驱动程序测试
IR 和 RGB 相机模块都需要硬件徽标工具包 (HLK) 测试。 此测试验证用于 Windows Hello 人脸身份验证的 RGB 和 IR 相机的基本功能。 RGB 相机要求已在 HLK 测试套件中指定。
IR 相机模块需要通过以下测试才能启用:
枚举所有 KS 传感器类别相机:
支持 IR 流的设备必须属于 SENSOR_CAMERA 类别。
支持 RGB 流的设备属于 VIDEO_CAMERA 类别。
仅适用于支持 IR 和 RGB 流的单个相机设备,应同时在 KSCAMERA 类别下注册该设备:SENSOR_CAMERA 和 VIDEO_CAMERA。
查找定义了 MF_DEVICESTREAM_ATTRIBUTE_FACEAUTH_CAPABILITY 属性的流:
如果没有流定义了 MF_DEVICESTREAM_ATTRIBUTE_FACEAUTH_CAPABILITY 属性,则跳过测试。
如果多个流定义了 MF_DEVICESTREAM_ATTRIBUTE_FACEAUTH_CAPABILITY 属性,则测试失败,因为只有一个流才支持 Windows Hello。
如果此流的 MF_DEVICESTREAM_ATTRIBUTE_FRAMESOURCE_TYPES 未设置为 IR,则测试失败,因为此流上不能有 RGB 媒体类型。
选择此流并验证媒体类型是否支持 Windows Hello (MJPG/L8/NV12),以及分辨率是否大于或等于 320 x 320 像素:
如果支持人脸身份验证配置文件,请针对配置文件媒体类型验证此流。
如果不支持人脸身份验证配置文件,请验证此流的默认媒体类型。
检查人脸身份验证 DDI 中某个属性的支持:照亮/未照亮或环境减法。
将 KS 属性设置为受支持的属性。
启动流式处理
检查运行时属性:
验证时间戳精度(使用元数据进行人脸身份验证预览测试)。
验证启动时间是否小于500毫秒(使用元数据进行人脸身份验证预览测试)。
使用以下参数验证以最小帧率进行流式处理:15 FPS 照明和 15 FPS 环境或 15 FPS 环境减法,分辨率大于或等于 320 x 320 像素,媒体类型 L8/NV12,样本上的正步幅:
如果已启用照明属性,请检查帧上的元数据(15 FPS 为照亮/非照亮对帧)。
如果启用了环境减法属性,请检查帧上是否没有元数据(环境帧为 15 FPS)。
停止流式处理
取消设置 KS 控件
RGB + IR 的并发性:如果在相机配置文件中定义,则进行测试
如果未通过上面列出的 HLK 测试,Microsoft 将不会向 OEM 颁发签名驱动程序,并且 Windows Hello 也将无法运行。