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

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

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

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

Установив ключ конфигурации «CacheUVCControl» в разделе реестра устройства HW на значение DWORD 1 с помощью дескрипторов 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(+ АВТО)
  • 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  
}