相机 UVC 控制缓存的驱动支持

当帧服务器关闭时,UVC 控件会固定在设备上。 如果一个应用程序使用 UVC 控件设置白平衡,然后关闭该应用程序,相机的白平衡将不会被重置。 打开且不更改白平衡的其他应用将继承以前的设置。

一个例外是计算机进入 S3。 根据相机设备进入 D3 还是 D3 冷状态,UVC 控件可能会保留也可能不会。 此现象是因为 D3 Cold 断开了相机的电源。

利用缓存 UVC 控制协议是跨应用程序会话、Amazon S3 和计算机关机保持一致行为的方法。

通过将配置键“CacheUVCControl”设置为设备 HW 注册表项中 1 的 DWORD 值(通过 MS OS 2.0 描述符或较旧的自定义 INF 文件方法),相机将保留用户跨 S3 或计算机重新启动设置的 UVC 控制值。 将存储和重新应用的特定 UVC 控件值的列表如下。

UVC 控件受影响

下面是将在重新启动后缓存和重新应用的 UVC 控件列表:

  • KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS(亮度)
  • KSPROPERTY_VIDEOPROCAMP_CONTRAST
  • KSPROPERTY_VIDEOPROCAMP_GAIN
  • KSPROPERTY_VIDEOPROCAMP_GAMMA
  • KSPROPERTY_VIDEOPROCAMP_HUE(+ 自动)
  • KSPROPERTY_VIDEOPROCAMP_SATURATION
  • KSPROPERTY_VIDEOPROCAMP_SHARPNESS(锐度)
  • KSPROPERTY_VIDEOPROCAMP_白平衡(+ 自动)

INF 示例

[Device.AddReg.HW]
HKR,,"CacheUVCControl",0x00010001,1

MS OS 2.0 描述符示例

UCHAR Example_MSOS20DescriptorSet_CacheUVCControl[0x38] =
{
    //
    // Microsoft OS 2.0 Descriptor Set Header
    //
    0x0A, 0x00,               // wLength - 10 bytes
    0x00, 0x00,               // MSOS20_SET_HEADER_DESCRIPTOR
    0x00, 0x00, 0x0?, 0x06,   // dwWindowsVersion – 0x060?0000 for future Windows version
    0x3C, 0x00,               // wTotalLength – 60 bytes

    //
    // Microsoft OS 2.0 Registry Value Feature Descriptor
    //
    0x32, 0x00,               // wLength 0x32 (50) in bytes of this descriptor  
    0x04, 0x00,               // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY  
    0x04, 0x00,               // wPropertyDataType - REG_DWORD  
    0x24, 0x00,               // wPropertyNameLength – 0x24 (36) bytes
    'C',  0x00, 'a',  0x00,   // Property Name - “CacheUVCControl”  
    'c',  0x00, 'h',  0x00,  
    'e',  0x00, 'U',  0x00,
    'V',  0x00, 'C',  0x00,  
    'C',  0x00, 'o',  0x00,  
    'n',  0x00, 't',  0x00,  
    'r',  0x00, 'o',  0x00,  
    'l',  0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00,
    0x04, 0x00,               // wPropertyDataLength – 4 bytes  
    0x01, 0x00, 0x00, 0x00,   // Enable to cache UVC controls  
}