Поделиться через


Поддержка драйвера для кэша управления UVC камеры

Элементы управления UVC закрепляются на устройстве при завершении работы сервера кадров. Если используется приложение, которое устанавливает баланс белого с элементами управления UVC, а затем завершает работу приложения, баланс белого на камере не будет сброшен. Другие приложения, которые открывают и не изменяют баланс белого, наследуют предыдущий параметр.

Одним из исключений является переход компьютера в S3. В зависимости от того, переходит ли устройство камеры в D3 или D3 Cold, элементы управления UVC могут быть или не залипать соответственно. Это связано с тем, что D3 Cold отключает питание от камеры.

Использование протокола управления UVC кэша позволяет обеспечить согласованное поведение в сеансах приложений, S3 и при выключении компьютера.

Задав для ключа конфигурации CacheUVCControl значение DWORD 1 в разделе реестра HW устройства с помощью дескрипторов MS OS 2.0 или более старого метода пользовательского INF-файла, камера сохранит контрольные значения UVC, заданные пользователем при перезагрузке S3 или компьютера. Ниже приведен список конкретных значений элементов управления 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  
}