相机 UVC 控件缓存的驱动程序支持

帧服务器关闭时,UVC 控制棒位于设备上。 如果使用应用通过 UVC 控件设置白平衡,然后关闭该应用,则不会重置相机的白平衡。 打开且不更改白平衡的其他应用将继承以前的设置。

一个例外是计算机进入 S3 时。 根据相机设备是进入 D3 还是 D3 冷,UVC 控件分别可能会粘住,也可能不粘住。 之所以出现此行为,是因为 D3 冷会移除相机的电源。

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

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

受影响的 UVC 控件

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

  • KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS
  • KSPROPERTY_VIDEOPROCAMP_CONTRAST
  • KSPROPERTY_VIDEOPROCAMP_GAIN
  • KSPROPERTY_VIDEOPROCAMP_GAMMA
  • KSPROPERTY_VIDEOPROCAMP_HUE (+ AUTO)
  • KSPROPERTY_VIDEOPROCAMP_SATURATION
  • KSPROPERTY_VIDEOPROCAMP_SHARPNESS
  • KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE (+ AUTO)

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  
}