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

帧服务器关闭时,UVC 控件会卡在设备上。 如果用户使用使用 UVC 控件设置白平衡的应用,然后关闭应用,则相机的白平衡不会重置。 打开且未更改白平衡的其他应用将继承上一设置。

一个例外是计算机进入 S3。 根据相机设备是进入 D3 还是 D3 冷,UVC 控件可能或可能不会粘滞。 此行为是因为 D3 Cold 会从相机中删除电源。

利用缓存 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  
}