Usb video device что это за программа
Последняя версия |
4 x | | 04.06.2011 14:33 |
5.8.54300.104
4 x | | 23.09.2012 20:20 |
5.8.48204.100
10 x | | 10.04.2011 02:07 |
Разработчик |
Интернет |
Тип лицензии |
Дата обновления |
Пользователей |
Рейтинг |
Поиск в Интернете |
Описание |
Социальные сети |
Дополнительные ресурсы |
Скачать |
Нет комментариев для данной программы. |
Вы не можете оставлять комментарии. Только зарегистрированные пользователи могут оставлять комментарии к программам. |
Все программы в каталоге — это программы, которые установлены у наших пользователей на компьютерах. Информация о них обновляется автоматически и НЕ проверяется. Наша компания не имеет к данным программам никакого отношения (исключением, разумеется, является WinTuning), мы лишь предоставляем информацию о них. Следовательно, никаких гарантий за чужие программы мы предоставить не можем. Вы можете использовать программы из каталога на свой страх и риск.
© 2011-2024 Ivan Saldikov | POWERED BY |
Обратная связь |
Ведущие специалисты по настройке и оптимизации ОС Microsoft Windows в России.
Generated in 0.000561 secs.
Общие сведения о драйвере класса USB Video
Если вы предоставляете драйвер для веб-камеры или цифровой видеокамеры, рассмотрите возможность использования системного драйвера USB Video Class (UVC), Usbvideo.sys. Драйвер USB Video Class (UVC) — это мини-драйвер AVStream, предоставляемый корпорацией Майкрософт, который обеспечивает поддержку драйверов для устройств класса USB Video. Если устройство использует UVC, вам не нужно предоставлять собственный драйвер. Вместо этого устройство автоматически работает с драйвером, предоставленным системой.
В модели видеокласса USB поставщики не записывают драйвер. Вместо этого поставщики реализуют оборудование потоковой передачи видео в соответствии с рекомендациями, приведенными в документе Определение класса устройств универсальной последовательной шины для спецификации видеоустройств , размещенной на веб-сайте ФОРУМА разработчиков USB . Драйвер UVC напрямую запрашивает оборудование для получения его возможностей, а затем управляет устройством, не требуя проприетарного драйвера.
При необходимости можно расширить функциональные возможности драйвера UVC, чтобы добавить обработку для конкретного поставщика.
В следующей таблице показана поддержка UVC в разных версиях Windows.
Версия UVC | Windows 7 | Windows 8 |
---|---|---|
Usb Video Class 1.5 (H.264 video codec) | Не поддерживается | Поддерживается |
Usb Video Class 1.1 | Поддерживается | Поддерживается |
Usb Video Class 1.0 | Поддерживается | Поддерживается |
Начиная с Windows 8 поддерживается видеокодек H.264 (кодировщик или декодер). H.264 — это открытый стандарт, который позволяет использовать эффективные методы сжатия видео для сокращения использования пропускной способности сети и дискового пространства. Такой подход приводит к повышению качества видео для заданной скорости. Дополнительные сведения см. в статье Поддержка видеокамер USB H.264. См. также предлагаемые корпорацией Майкрософт расширения для класса USB Video для H.264.
В следующем списке показаны некоторые преимущества использования драйвера Usbvideo.sys.
- Для установки не требуется компакт-диск
- Отсутствие затрат на запись драйвера
- Без затрат на обслуживание
- Возможность для поставщиков добавить функциональные возможности
- Упрощенная отладка с помощью открытых символов
- Работает с проверятелем драйверов
- Работает с проверенными сборками ОС
- Соответствие управлению питанием ACPI
- Соответствие управлению питанием выборочной приостановки
- Поддержка мультимедийных API в Media Foundation и DirectShow
Системный драйвер Usbvideo.sys поддерживает следующие функции UVC в разных версиях Windows:
Функция UVC | Windows 7 | Windows 8 |
---|---|---|
Один интерфейс управления видео и один или несколько интерфейсов потоковой передачи видео | Поддерживается | Поддерживается |
Стандартные единицы и терминалы, включая единицы расширения | Поддерживается | Поддерживается |
Поддержка захвата изображений для всех трех методов, определенных в спецификации UVC | Поддерживается | Поддерживается |
Массовые и изохронные устройства | Поддерживается | Поддерживается |
Согласование параметров потоковой передачи с помощью элементов управления фиксацией пробы | Поддерживается | Поддерживается |
Сжатые форматы: MJPEG, DV | Поддерживается | Поддерживается |
Несжатые форматы: YUY2, NV12 | Поддерживается | Поддерживается |
Поддерживает устройства записи и отрисовки. | Поддерживается | Поддерживается |
Сжатый формат: MPEG2TS | Не поддерживается | Не поддерживается |
форматы на основе Stream и фреймов | Поддерживается | Поддерживается |
Видеокодек H.264 | Не поддерживается | Поддерживается |
Настройка драйвера UVC
Вы можете настроить поддержку UVC, предоставив подключаемый модуль расширения. Единицы расширений предоставляют частный канал управления между устройством и приложением, предоставляемым поставщиком.
Другие ресурсы
Чтобы протестировать реализацию UVC, можно использовать следующие средства:
Дополнительные сведения об этих средствах см. в статье Тестирование и отладка AVStream.
Спецификации для USB Video Class 1.1 можно найти на веб-сайте ФОРУМА разработчиков USB .
Руководство по реализации камеры usb Video Class (UVC)
Начиная с Windows 10, для устройств, соответствующих спецификации КЛАССА ВИДЕО USB (версии 1.0–1.5), предоставляется драйвер для входящих видеоклассов (UVC). Этот драйвер поддерживает цветные камеры и камеры типа датчика. В этом документе описывается, как предоставить приложениям определенные возможности камеры, совместимой с UVC, с помощью драйвера папки «Входящие».
Терминология
Ключевое слово | Описание |
---|---|
UVC | Класс USB Video |
Драйвер UVC | драйвер USBVideo.sys, поставляемый с ОС |
IR | Инфракрасная связь |
Камера для цветной съёмки | Камера, которая выводит цветовые потоки (например, RGB или YUV-камеры); |
Камера датчика | Камера, которая выводит нецветные потоки (например, камеры IR или Depth). |
BOS | Хранилище двоичных объектов устройств |
Дескриптор MS OS 2.0 | Дескриптор возможностей устройства BOS для конкретной платформы Майкрософт |
Камеры датчика
Windows поддерживает две категории камер. Одна из них является цветовой камерой, а другая — камерой, не являющейся датчиком цвета. Камеры RGB или YUV классифицируются как цветные камеры, а нецветные камеры, такие как серая шкала, камеры IR и Глубины классифицируются как камеры датчика. Драйвер UVC поддерживает оба типа камер. Рекомендуется указать значение встроенного ПО камеры, в зависимости от которого драйвер UVC будет регистрировать камеру в одной или обеих поддерживаемых категориях.
Камера, поддерживающая только цветные типы форматов, должна быть зарегистрирована в KSCATEGORY_VIDEO_CAMERA. Камера, поддерживающая типы форматов ir или Depth, должна быть зарегистрирована в KSCATEGORY_SENSOR_CAMERA. Камера, поддерживающая как цветные, так и другие типы форматов, должна быть зарегистрирована в разделе KSCATEGORY_VIDEO_CAMERA и KSCATEGORY_SENSOR_CAMERA. Эта классификация помогает приложениям выбрать камеру, с которой они хотят работать.
Камера UVC может указать предпочтительный параметр категории с помощью атрибутов SensorCameraMode и SkipCameraEnumeration в дескрипторе BOS MS OS 2.0 , подробно описанном в следующих разделах.
Атрибут SensorCameraMode принимает значение 1 или 2.
Значение 1 зарегистрирует устройство в KSCATEGORY_SENSOR_CAMERA. Кроме того, укажите значение 1 для SkipCameraEnumeration , чтобы сделать камеру доступной для приложений, которые ищут только камеры датчика. Камера, которая предоставляет только типы мультимедиа камеры датчика, должна использовать это значение.
Значение 2 для SensorCameraMode зарегистрирует устройство в KSCATEGORY_SENSOR_CAMERA & KSCATEGORY_VIDEO_CAMERA. Это делает камеру доступной для приложений, которые ищут датчики и цветные камеры. Это значение следует использовать в камере, которая предоставляет как камеру датчика, так и тип мультимедиа цветной камеры.
Мы рекомендуем указать указанное выше значение реестра с помощью дескриптора BOS. Пример дескриптора BOS с дескриптором MS OS 2.0 см. в разделе Пример составного устройства ниже.
Если вам не удается обновить встроенное ПО устройства, как описано выше, можно использовать настраиваемый INF-файл и указать, что камера должна быть зарегистрирована как камера датчика, указав значения для SensorCameraMode и SkipCameraEnumeration следующим образом:
Пользовательский INF-файл (на основе драйвера UVC для папки «Входящие») должен содержать следующие записи AddReg:
SensorCameraMode: REG_DWORD: 1 (для регистрации в качестве камеры датчика)
SkipCameraEnumeration: REG_DWORD: 1 (сделать его доступным только для приложений IR)
Ниже приведен пример настраиваемого раздела INF.
[USBVideo.NT.HW] AddReg=USBVideo.HW.AddReg [USBVideo.HW.AddReg] HKR,, SensorCameraMode, 0x00010001,1 ; places the value under device HW ; Registry key HKR,, SkipCameraEnumeration, 0x00010001,1 ; This makes the camera available ; only for application looking for ; IR cameras
Если атрибуты SensorCameraMode и SkipCameraEnumeration не указаны во встроенном ПО или INF, камера регистрируется как цветная камера и будет видна только для приложений, поддерживающих цветную камеру.
Поток IR
Драйвер UVC для windows inbox поддерживает камеры, которые захватывают сцену в формате YUV и передают пиксельные данные по USB как несжатые yuv или сжатые кадры MJPEG.
В дескрипторе формата потокового видео необходимо указать идентификаторы GUID следующего типа формата, как определено в файле заголовка WDK ksmedia.h:
Тип | Описание |
---|---|
KSDATAFORMAT_SUBTYPE_L8_IR | 8-разрядная плоскость luma без сжатия. Этот тип сопоставляется с MFVideoFormat_L8. |
KSDATAFORMAT_SUBTYPE_L16_IR | 16-разрядная плоскость luma без сжатия. Этот тип сопоставляется с MFVideoFormat_L16. |
KSDATAFORMAT_SUBTYPE_MJPG_IR | Сжатые кадры MJPEG. Media Foundation преобразует его в несжатые кадры NV12 и использует только плоскость luma. |
Если идентификаторы GUID этих типов формата указаны в поле guidFormat дескриптора кадра, конвейер захвата Media Foundation помечает поток как поток IR. Приложения, написанные с помощью API FrameReader Media Foundation, смогут использовать поток IR. Конвейер для потоков IR не поддерживает масштабирование или преобразование кадров IR.
Поток, предоставляющий типы форматов IR, не должен предоставлять типы форматов RGB или Depth.
// Example Format Descriptor for UVC 1.1 frame based format typedef struct _VIDEO_FORMAT_FRAME < UCHAR bLength; UCHAR bDescriptorType; UCHAR bDescriptorSubtype; UCHAR bFormatIndex; UCHAR bNumFrameDescriptors; GUID guidFormat; // this field should contain the IR subtype GUID UCHAR bBitsPerPixel; UCHAR bDefaultFrameIndex; UCHAR bAspectRatioX; UCHAR bAspectRatioY; UCHAR bmInterlaceFlags; UCHAR bCopyProtect; UCHAR bVariableSize; >VIDEO_FORMAT_FRAME, *PVIDEO_FORMAT_FRAME;
Потоки IR будут отображаться как обычные потоки захвата в DShow.
Поток глубины
Драйвер usb-класса видеофайла Windows для папки «Входящие» поддерживает камеры, создающие потоки глубины. Эти камеры захватывают информацию о глубине (например, время полета) сцены и передают карту глубины в виде несжатых кадров YUV через USB. В дескрипторе формата потокового видео необходимо указать следующий guid типа формата, как определено в файле заголовка WDK ksmedia.h:
Тип | Описание |
---|---|
KSDATAFORMAT_SUBTYPE_D16 | Значения 16-разрядной карты глубины. Этот тип идентичен MFVideoFormat_D16. Значения в миллиметрах. |
Если guid типа формата указан в элементе guidFormat дескриптора кадра, конвейер захвата Media Foundation помечает поток как поток глубины. Приложения, написанные с помощью API FrameReader, смогут использовать поток глубины. Конвейер для потоков глубины не поддерживает масштабирование или преобразование кадров глубины.
Поток, предоставляющий типы форматов Depth, не должен предоставлять типы форматов RGB или IR.
// Example Format Descriptor for UVC 1.1 frame based format typedef struct _VIDEO_FORMAT_FRAME < UCHAR bLength; UCHAR bDescriptorType; UCHAR bDescriptorSubtype; UCHAR bFormatIndex; UCHAR bNumFrameDescriptors; GUID guidFormat; // this field should contain the IR subtype GUID UCHAR bBitsPerPixel; UCHAR bDefaultFrameIndex; UCHAR bAspectRatioX; UCHAR bAspectRatioY; UCHAR bmInterlaceFlags; UCHAR bCopyProtect; UCHAR bVariableSize; >VIDEO_FORMAT_FRAME, *PVIDEO_FORMAT_FRAME;
Потоки глубины отображаются как обычные потоки захвата в DShow.
Группирование камер
Windows поддерживает группирование камер на основе идентификатора контейнера, чтобы помочь приложениям работать со связанными камерами. Например, камера IR и цветная камера, присутствующие на одном физическом устройстве, могут быть доступны операционной системе как связанные камеры. Это позволяет приложениям, таким как Windows Hello использовать связанные камеры для своих сценариев.
Связь между функциями камеры можно указать в дескрипторе BOS камеры во встроенном ПО. Драйвер UVC будет использовать эти сведения и предоставлять эти функции камеры как связанные. Это делает стек камер ОС предоставлять их в виде связанной группы камер для приложений.
Встроенное ПО камеры должно указать UVC-FSSensorGroupID, который представляет собой GUID в строковой форме с фигурной скобкой. Камеры с одинаковым UVC-FSSensorGroupID будут сгруппированы.
Группе датчиков можно присвоить имя, указав UVC-FSSensorGroupName, строку Юникода, во встроенном ПО.
В разделе Пример составного устройства ниже приведен иллюстративный пример BOS, в котором указаны UVC-FSSensorGroupID и UVC-FSSensorGroupName.
Если не удается обновить встроенное ПО устройства, как описано выше, можно использовать настраиваемый INF-файл и указать, что ваша камера входит в группу датчиков, указав идентификатор и имя группы датчиков, как показано ниже. Пользовательский INF-файл (на основе драйвера UVC для папки «Входящие») должен содержать следующие записи AddReg:
FSSensorGroupName: REG_SZ: «понятное имя группы датчиков»
Пример настраиваемого раздела INF может быть следующим:
[USBVideo.NT.Interfaces] AddInterface=%KSCATEGORY_CAPTURE%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_RENDER%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_VIDEO%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_RENDER_EXT%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_VIDEO_CAMERA%,GLOBAL,USBVideo.Interface [USBVideo.Interface] AddReg=USBVideo.Interface.AddReg [USBVideo.Interface.AddReg] HKR,,CLSID,,%ProxyVCap.CLSID% HKR,,FriendlyName,,%USBVideo.DeviceDesc% HKR,,RTCFlags,0x00010001,0x00000010 HKR,, FSSensorGroupID,0x00000000,%FSSensorGroupID% HKR,, FSSensorGroupName,0x00000000,%FSSensorGroupName%
Группы датчиков не поддерживаются в конвейере записи DShow.
Метод 2 или метод 3 по-прежнему поддерживают захват
Спецификация UVC предоставляет механизм, позволяющий указать, поддерживает ли интерфейс потоковой передачи видео запись изображения типа 1/2/3. Чтобы операционная система могла воспользоваться преимуществами поддержки метода 2/3 устройства по-прежнему захвата изображений, с помощью драйвера UVC встроенное ПО устройства может указать значение в дескрипторе BOS.
Значение, указываемое для включения записи образа методом 2/3, — это DWORD с именем UVC-EnableDependentStillPinCapture. Укажите его значение с помощью дескриптора BOS. Пример составного устройства ниже демонстрирует включение захвата неподвижного образа с помощью дескриптора BOS.
Если не удается обновить встроенное ПО устройства, как описано выше, можно использовать настраиваемый INF-файл, чтобы указать, что камера поддерживает метод 2 или метод 3 по-прежнему захвата.
Пользовательский INF-файл (на основе пользовательского драйвера UVC или драйвера UVC для папки «Входящие») должен содержать следующую запись AddReg:
EnableDependentStillPinCapture: REG_DWORD: 0x0 (отключено) для 0x1 (включено)
Если для этой записи задано значение Включено (0x1), конвейер захвата использует метод 2/3 для захвата неподвижного образа (при условии, что встроенное ПО также объявляет поддержку метода 2/3, как указано в спецификации UVC).
Пример настраиваемого раздела INF выглядит следующим образом:
[USBVideo.NT.Interfaces] AddInterface=%KSCATEGORY_CAPTURE%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_RENDER%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_VIDEO%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_RENDER_EXT%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_VIDEO_CAMERA%,GLOBAL,USBVideo.Interface [USBVideo.Interface] AddReg=USBVideo.Interface.AddReg [USBVideo.Interface.AddReg] HKR,,CLSID,,%ProxyVCap.CLSID% HKR,,FriendlyName,,%USBVideo.DeviceDesc% HKR,,RTCFlags,0x00010001,0x00000010 HKR,,EnableDependentStillPinCapture,0x00010001,0x00000001
Цепочка MFT устройства
MFT устройства — это рекомендуемый механизм подключаемого модуля пользовательского режима для IHV и изготовителей оборудования для расширения функциональности камеры в Windows.
До Windows 10 версии 1703 конвейер камеры поддерживал только один подключаемый модуль расширения DMFT.
Начиная с Windows 10 версии 1703, конвейер камеры Windows поддерживает необязательную цепочку DMFT с максимальным количеством двух dmFT.
Начиная с Windows 11 версии 22H2, конвейер камеры Windows поддерживает необязательную цепочку dmft с четырьмя dmft.
Это обеспечивает большую гибкость для изготовителей оборудования и IHV для предоставления добавленной стоимости в виде потоков камеры постобработки. Например, устройство может использовать PDMFT вместе с DMFT IHV и OEM DMFT.
На следующем рисунке показана архитектура, включающая цепочку dmft.
Примеры захвата передаются от драйвера камеры к DevProxy, а затем проходят через цепочки DMFT. Каждый DMFT в цепочке имеет возможность обработать образец. Если DMFT не хочет обрабатывать образец, он может действовать как сквозной просто передать пример в следующий DMFT.
Для таких элементов управления, как KsProperty, вызов идет вышестоящий — последний DMFT в цепочке получает вызов первым, вызов может быть обработан там или передан в предыдущий DMFT в цепочке.
Ошибки распространяются из DMFT в DTM, а затем в приложения. Если для DMFT IHV или OEM не удается создать экземпляр DMFT, это будет неустранимая ошибка для DTM.
Требования к DMFT:
- Число входных контактов DMFT должно совпадать с числом выходных контактов предыдущего DMFT, в противном случае DTM завершится ошибкой во время инициализации. Однако количество входных и выходных контактов одного и того же DMFT не обязательно совпадает.
- DMFT требует поддержки интерфейсов — IMFDeviceTransform, IMFShutdown, IMFRealTimeClientEx, IKsControl и IMFMediaEventGenerator; Возможно, потребуется поддержка IMFTransform, если настроен MFT0 или для следующего DMFT в цепочке требуется поддержка IMFTransform.
- В 64-разрядных системах, которые не используют Frame Server, необходимо зарегистрировать как 32-разрядные, так и 64-разрядные DMFT. Учитывая, что USB-камера может быть подключена к произвольной системе, для «внешних» (или не входящих) USB-камер поставщик usb-камер должен предоставлять как 32-разрядные, так и 64-разрядные DMFT.
Настройка цепочки DMFT
Устройство камеры может дополнительно предоставить COM-объект DMFT в библиотеке DLL с помощью настраиваемого INF-файла, в котором используются разделы папки «Входящие» USBVideo.INF.
В пользовательском . В разделе «Interface AddReg» INF-файла укажите идентификаторы CLSID DMFT, добавив следующую запись реестра:
CameraDeviceMftCLSIDChain (REG_MULTI_SZ) %Dmft0.CLSID%,%Dmft.CLSID%,%Dmft2.CLSID%
Как показано в примере параметров INF ниже (замените %Dmft0.CLSID% и % Dmft1.CLSID% фактическими строками CLSID, которые вы используете для dmFT), в Windows 10 версии 1703 разрешено не более 2 ИДЕНТИФИКАТОРов CLSID, а первая из них ближе всего к DevProxy, а последняя является последней DMFT в цепочке.
Пример параметров CameraDeviceMftCLSIDChain :
- Без IHV/OEM DMFT или DMFT платформы
- CameraDeviceMftCLSIDChain = «» (или нет необходимости указывать эту запись реестра)
- CameraDeviceMftCLSIDChain = %Dmft.CLSID%
- CameraDeviceMftCLSIDChain = «»,%Dmft.CLSID%
- Ниже приведен снимок экрана: раздел реестра результатов для USB-камеры с dmft platform и DMFT (с GUID ) в цепочке.
- IHV/OEM DMFT0 IHV/OEM DMFT1
- CameraDeviceMftCLSIDChain = %Dmft0.CLSID%,%Dmft1.CLSID%,
CameraDeviceMftCLSIDChain может иметь не более 2 идентификаторов CLSID.
Если параметр CameraDeviceMftCLSIDChain настроен, устаревшие параметры CameraDeviceMftCLSID пропускаются DTM.
Если CameraDeviceMftCLSIDChain не настроена и настроен устаревший CameraDeviceMftCLSID, то цепочка будет выглядеть так: (если ее USB-камера поддерживается платформой DMFT и платформа DMFT включена) DevProxy Platform DMFT OEM/IHV DMFT или (если камера не поддерживается платформой DMFT или платформа DMFT отключена) DevProxy OEM/IHV DMFT.
Пример параметров INF-файла:
[USBVideo.Interface.AddReg] HKR,,CLSID,,%ProxyVCap.CLSID% HKR,,FriendlyName,,%USBVideo.DeviceDesc% HKR,,RTCFlags,0x00010001,0x00000010 HKR,,EnablePlatformDmft,0x00010001,0x00000001 HKR,,DisablePlatformDmftFeatures,0x00010001,0x00000001 HKR,,CameraDeviceMftCLSIDChain, 0x00010000,%Dmft0.CLSID%,%Dmft1.CLSID%
MFT-устройство платформы
Начиная с Windows 10 версии 1703, Windows предоставляет почтовый MFT-адрес устройства для камер UVC, известный как PLATFORM DMFT (PDMFT) на основе согласия. Этот DMFT позволяет IHV и изготовителям оборудования использовать предоставляемые Windows алгоритмы постобработки.
Функции, поддерживаемые DMFT-платформой Выпуск Windows Включает распознавание лиц в интересующем регионе (ROI) для корректировки 3A в USB-камерах с поддержкой рентабельности инвестиций. Windows 10 версии 1703 Если камера не поддерживает рентабельность инвестиций на основе UVC 1.5, PDMFT не будет загружаться, даже если устройство согласилось использовать PDMFT.
Камера UVC может согласиться на использование DMFT платформы, указав EnablePlatformDmft через дескриптор BOS.
Значение, указываемое для включения DMFT платформы, представляет собой DWORD с именем UVC-EnablePlatformDmft и укажите его значение с помощью дескриптора BOS. В разделе Пример составного устройства ниже показано включение DMFT платформы с примером дескриптора BOS.
Если не удается обновить встроенное ПО устройства, как описано выше, можно использовать пользовательский INF-файл, чтобы включить dmft платформы для устройства.
Пользовательский INF-файл (на основе пользовательского драйвера UVC или драйвера UVC для папки «Входящие») должен содержать следующую запись AddReg:
EnablePlatformDmft: REG_DWORD: 0x0 (отключено) на 0x1 (включено)
Если для этой записи задано значение Включено (0x1), конвейер записи использует DMFT платформы для папки «Входящие» для устройства. Ниже приведен пример этого настраиваемого раздела INF:
[USBVideo.NT.Interfaces] AddInterface=%KSCATEGORY_CAPTURE%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_RENDER%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_VIDEO%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_RENDER_EXT%,GLOBAL,USBVideo.Interface AddInterface=%KSCATEGORY_VIDEO_CAMERA%,GLOBAL,USBVideo.Interface [USBVideo.Interface] AddReg=USBVideo.Interface.AddReg [USBVideo.Interface.AddReg] HKR,,CLSID,,%ProxyVCap.CLSID% HKR,,FriendlyName,,%USBVideo.DeviceDesc% HKR,,RTCFlags,0x00010001,0x00000010 HKR,,EnablePlatformDmft,0x00010001,0x00000001
В Windows 10 версии 1703, если устройство согласилось использовать PDMFT, все функции, поддерживаемые PDMFT, включаются (в зависимости от возможностей устройства). Детализированная конфигурация функций PDMFT не поддерживается.
Координаты рентабельности инвестиций на основе лиц вычисляются относительно поля зрения изображения, передаваемого в PDMFT. Если поле зрения было изменено из-за использования таких элементов управления, как Масштаб, Панорама, Наклон или Цифровое окно, камера отвечает за сопоставление предоставленных координат обратно в полное поле зрения датчика, учитывая текущее окно масштабирования или панорамирования.
Профиль проверки подлинности лиц с помощью дескрипторов ОС MS
Windows 10 RS5 теперь применяет требование профиля проверки подлинности лиц версии 2 для любой камеры с поддержкой Windows Hello. Для систем на основе MIPI с пользовательским стеком драйверов камеры эта поддержка может быть опубликована через INF (или расширение INF) или через подключаемый модуль пользовательского режима (MFT устройства).
Однако для видеоустройств USB ограничение камер на основе UVC заключается в том, что для Windows 10 19H1 пользовательские драйверы камер не допускаются. Все камеры на основе UVC должны использовать драйвер класса «Входящие» USB Video Class, а все расширения поставщика должны быть реализованы в виде MFT устройства.
Для многих OEM/ODM предпочтительным подходом к модулям камеры является реализация большей части функциональных возможностей встроенного ПО модуля, то есть с помощью дескрипторов ОС Майкрософт.
Для публикации профиля проверки подлинности лиц с помощью дескрипторов MSOS (также называемых дескрипторами BOS) поддерживаются следующие камеры:
- Только rgb-камера, используемая в группе датчиков с отдельной камерой IR.
- Камера только ir, используемая в группе датчиков с отдельной RGB-камерой.
- Камера RGB+IR с отдельными контактами IR и RGB.
Если встроенное ПО камеры не соответствует одному из трех требований, описанных выше, ODM/OEM должны использовать расширение INF для объявления профиля камеры версии 2.
Пример макета дескриптора ОС Майкрософт
Ниже приведены примеры для следующих спецификаций:
- Спецификация расширенных дескрипторов ОС Майкрософт 1.0
- Спецификация дескрипторов MICROSOFT OS 2.0
Спецификация расширенного дескриптора ОС Майкрософт 1.0
Дескриптор ОС расширенных свойств имеет два компонента
- Раздел заголовка фиксированной длины
- Один или несколько разделов настраиваемых свойств переменной длины, которые следуют за разделом заголовка
Раздел заголовка дескриптора Microsoft OS 1.0
Раздел заголовков описывает одно настраиваемое свойство (профиль проверки подлинности лиц).
Offset Поле Размер (в байтах) Значение Описание 0 dwLength 4 <> 4 bcdVersion 2 0x0100 Версия 1.0 6 wIndex 2 0x0005 Дескриптор ОС расширенного свойства 8 wCount 2 0x0001 Одно настраиваемое свойство Раздел настраиваемого свойства дескриптора Microsoft OS 1.0
Offset Поле Размер (в байтах) Значение Описание 0 dwSize 4 0x00000036 (54) Общий размер (в байтах) для этого свойства. 4 dwPropertyDataType 4 0x00000004 REG_DWORD_LITTLE_ENDIAN 8 wPropertyNameLength 2 0x00000024 (36) Размер (в байтах) имени свойства. 10 bPropertyName 36 UVC-CPV2FaceAuth Строка UVC-CPV2FaceAuth в Юникоде. 46 dwPropertyDataLength 4 0x00000004 4 байта для данных свойства (sizeof(DWORD)). 50 bPropertyData 4 См. схему данных ниже См. схему данных ниже. Схема полезных данных
Полезные данные UVC-CPV2FaceAuth — это 32-разрядное целое число без знака. 16-разрядный индекс высокого порядка представляет индекс на основе 0 списка типов мультимедиа, предоставляемого контактом RGB. 16-разрядная версия нижнего порядка представляет индекс на основе 0 списка типов мультимедиа, предоставляемого контактом IR.
Например, камера типа 3, которая предоставляет следующие типы мультимедиа в порядке, объявленном из контакта RGB:
- YUY2, 640×480@30fps
- MJPG, 1280×720@30fps
- MJPG, 800×600@30fps
- MJPG, 1920×1080@30fps
И следующий тип носителя для IR:
- L8, 480×480@30fps
- L8, 480×480@15fps
- L8, 480×480@10fps
Значение полезных данных 0x00010000 приведет к публикации следующего профиля проверки подлинности лиц:
Pin0:(RES==1280;720; FRT==30,1; SUT==MJPG) // Второй тип носителя (0x0001)
Pin1:(RES==480;480; FRT==30,1; SUT==L8) // Первый тип носителя (0x0000)На момент написания этой статьи Windows Hello имеет минимальное требование 480×480@7,5 кадров/с для потока RGB и 340×340@15fps для потока IR. При включении профиля проверки подлинности лиц IHV/OEM должны выбирать типы носителей, удовлетворяющие этому требованию.
Пример камеры типа 1
Так как для камеры типа 1 нет контакта IR (с расчетом, что камера типа 1 будет связана с камерой типа 2 на компьютере в группе датчиков), публикуется только индекс типа мультимедиа RGB. Для индекса типа носителя IR 16-разрядное значение полезных данных в нижнем порядке должно иметь значение 0xFFFF.
Например, если камера типа 1 предоставляет следующий список типов мультимедиа:
- YUY2, 640×480@30fps
- MJPG, 1280×720@30fps
- MJPG, 800×600@30fps
- MJPG, 1920×1080@30fps
Чтобы опубликовать CPV2FaceAuth с помощью MJPG, 1280×720@30fps тип носителя, необходимо задать для полезных данных значение 0x0001FFFF.
Пример камеры типа 2
Для камеры типа 2 для 16-разрядной камеры высокого порядка должно быть задано значение 0xFFFF, а 16-разрядное значение нижнего порядка указывает тип носителя IR, который будет использоваться.
Например, для камеры типа 2 со следующими типами мультимедиа:
- L8, 480×480@30fps
- L8, 480×480@15fps
- L8, 480×480@10fps
Если для проверки подлинности лиц используется первый тип носителя, значение должно быть следующим: 0xFFFF0000.
Спецификация расширенного дескриптора ОС Майкрософт 2.0
Расширенный дескриптор MSOS 2.0 можно использовать для определения значений реестра для добавления поддержки профиля проверки подлинности лиц. Для этого используется дескриптор свойств реестра Microsoft OS 2.0.
Для записи реестра UVC-CPV2FaceAuth ниже показан пример набора дескрипторов MSOS 2.0:
UCHAR Example2_MSOS20DescriptorSet_UVCFaceAuthForFutureWindows[0x3C] = < // // 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 - 50 bytes 0x04, 0x00, // wDescriptorType – 4 for Registry Property 0x04, 0x00, // wPropertyDataType - 4 for REG_DWORD_LITTLE_ENDIAN 0x30, 0x00, // wPropertyNameLength – 36 bytes 0x55, 0x00, 0x56, 0x00, // Property Name - "UVC-CPV2FaceAuth" 0x43, 0x00, 0x2D, 0x00, 0x43, 0x00, 0x50, 0x00, 0x56, 0x00, 0x32, 0x00, 0x46, 0x00, 0x61, 0x00, 0x63, 0x00, 0x65, 0x00, 0x41, 0x00, 0x75, 0x00, 0x74, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, // wPropertyDataLength – 4 bytes 0x00, 0x00, 0x01, 0x00 // PropertyData – 0x00010000 (see Payload Schema) >
При добавлении UVC-CPV2FaceAuth записи реестра устройствам не нужно публиковать запись реестра EnableDshowRedirection, как описано в руководстве по реализации моста DShow для устройств UVC.
Однако если поставщик устройства должен поддерживать более старые версии Windows и (или) необходимо включить распаковку MJPEG на сервере Frame Server, необходимо добавить запись реестра EnableDshowRedirection.
Создание группы датчиков
Когда изготовители оборудования создают системы, использующие камеры типа 1 и 2, чтобы обеспечить потоки RGB и IR для поддержки Windows Hello, изготовители оборудования должны объявить две камеры как часть синтезируемой группы датчиков.
Это делается путем объявления тегов FSSensorGroupId и FSSensorGroupName в inf расширения, которые будут созданы в свойстве интерфейса устройства для каждой камеры.
Однако если параметр Extension INF не указан, ODM могут использовать одни и те же дескрипторы MSOS для публикации значений FSSensorGroupId и FSSensorGroupName. Драйвер класса «Входящие» Windows 10 USB Video Будет автоматически принимать любой дескриптор MSOS, имя полезных данных которого имеет префикс «UVC-«, и перенести тег в хранилище свойств интерфейса устройства (удалив префикс «UVC-«).
Таким образом, камера типов 1 и 2, которая публикует следующие данные, позволит ОС синтезировать камеры в группу датчиков с несколькими устройствами для использования с Windows Hello:
Полезными данными для каждого тега должна быть строка Юникода. Полезные данные UVC-FSSensorGroupId должны быть строкой GUID в следующем формате:
Значение GUID должно совпадать между камерами типа 1 и 2, а обе камеры должны быть добавлены в одно физическое шасси. Для встроенных камер физическим корпусом является сам компьютер. Для внешних камер модули камер типа 1 и 2 должны быть встроены в одно физическое устройство, подключенное к компьютеру.
Категории пользовательского интерфейса устройства для групп датчиков
Начиная с 19H1, Windows предоставляет механизм расширения, указанный IHV/OEM, чтобы разрешить публикацию синтезированных групп датчиков в любой пользовательской или предопределенной категории. Создание группы датчиков определяется IHV или OEM-производителями, предоставляющими ключ идентификатора группы датчиков в пользовательской INF::
В дополнение к двум приведенным выше записям AddReg в INF для пользовательских категорий определяется новая запись AddReg:
Несколько категорий определяются с помощью точки с запятой (;) списка GUID с разделителями.
Каждое устройство, объявляющее соответствующий FSSensorGroupId, должно объявлять тот же FSSensorGroupCategoryList. Если список не совпадает, все списки игнорируются, а группа датчиков по умолчанию публикуется в KSCATEGORY_SENSOR_GROUP, как если бы пользовательские категории не были определены.
Поворот камеры
Кэш элементов управления UVC
Дескриптор BOS и MS OS 2.0
Камера, совместимая с UVC, может указывать значения конфигурации конкретного устройства Windows в дескрипторе BOS возможностей платформы во встроенном ПО с помощью дескрипторов Microsoft OS 2.0. Сведения о том, как указать допустимый дескриптор BOS, который передает конфигурацию устройства в ОС, см. в документации по дескриптору MS OS 2.0.
Заголовок набора дескрипторов Microsoft OS 2.0
Offset Поле Размер (в байтах) Описание 0 wLength 2 Длина этого заголовка в байтах должна быть 10. 2 wDescriptorType 2 MSOS20_SET_HEADER_DESCRIPTOR 4 dwWindowsVersion 4 Версия Windows. 8 wTotalLength 2 Размер всего набора дескрипторов MS OS 2.0, включая этот размер заголовка. Дескриптор свойств реестра Microsoft OS 2.0
Offset Поле Размер (в байтах) Описание 0 wLength 2 Длина этого дескриптора в байтах 2 wDescriptorType 2 MS_OS_20_FEATURE_REG_PROPERTY 4 wPropertyDataType 2 0x04 (REG_DWORD_LITTLE_ENDIAN) 6 wPropertyNameLength 2 Длина имени свойства. 8 PropertyName Переменная Имя свойства реестра. 8+M wPropertyDataLength 2 Длина данных свойства. 10+M PropertyData Переменная Данные свойств Если во встроенном ПО указан допустимый дескриптор MS OS 2.0, стек USB копирует значения конфигурации в раздел реестра HW устройства, показанный ниже:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\\\Device Parameters
Драйвер UVC считывает значения конфигурации из раздела реестра HW устройства и настраивает устройство в ОС соответствующим образом. Например, если встроенное ПО указывает устройство, которое будет зарегистрировано в качестве камеры датчика с помощью значения конфигурации, драйвер UVC регистрирует устройство только в этой категории.
Настройка устройств UVC с помощью дескриптора BOS платформы — это механизм, который был включен в Windows 10 версии 1703, чтобы помочь поставщикам устройств UVC настроить устройство без использования INF-файла в ОС Windows.
Настройка устройств UVC с помощью пользовательской INF по-прежнему поддерживается и имеет приоритет над механизмом на основе дескриптора BOS. При указании свойств устройства с помощью INF не нужно добавлять префикс «UVC-«. Этот префикс необходим только для свойств устройства, указанных с помощью дескриптора BOS и зависящих от экземпляра интерфейса. Если вашему устройству требуются подключаемые модули пользовательского режима, такие как DMFT, необходимо предоставить INF для установки DMFT. Его нельзя настроить с помощью встроенного ПО.
Поддерживаемые в настоящее время значения конфигурации с помощью дескриптора BOS
Имя конфигурации Тип Описание SensorCameraMode REG_DWORD Зарегистрируйте камеру в определенной категории. UVC-FSSensorGroupID, UVC-FSSensorGroupName REG_SZ Группирование камер с одинаковыми UVC-FSSensorGroupID UVC-EnableDependentStillPinCapture REG_DWORD Включение метода записи 2/3 UVC-EnablePlatformDmft REG_DWORD Включение DMFT платформы Когда драйвер UVC видит значения реестра с префиксом «UVC-«, он заполняет раздел реестра экземпляра интерфейса категории устройства теми же значениями без префикса. Драйвер делает это для любой переменной, указанной в встроенном ПО, а не только для перечисленных выше.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\\\Device Parameters
Чтобы ОС использовала дескрипторы bos Platform Device Capability и MS OS 2.0, дескриптор устройства должен указать версию bcdUSB, 0x0210 или выше.
Пример составного устройства
В этом разделе представлены дескриптор BOS и дескриптор MS OS 2.0 для примера составного устройства с двумя функциями камеры. Одна функция является цветовой камерой UVC, а вторая — камерой UVC IR.
Ниже приведены примеры дескрипторов.
- Зарегистрируйте функцию цветовой камеры в разделе KSCATEGORY_VIDEO_CAMERA
- Зарегистрируйте функцию камеры IR в KSCATEGORY_SENSOR_CAMERA
- Включение функции цветной камеры для захвата изображения
- Связывает цвет и функции камеры IR как группу
При перечислении устройства стек USB извлекает дескриптор BOS с устройства. После дескриптора BOS используется возможность устройства для конкретной платформы.
#include const BYTE USBVideoBOSDescriptor[0x21] = < /* BOS Descriptor */ 0x05, // Descriptor size USB_BOS_DESCRIPTOR_TYPE, // Device descriptor type BOS 0x21, 0x00, // Length 0x21 (33) this and all sub descriptors 0x01, // Number of device capability descriptors /* Platform Device Capability Descriptor */ 0x1C, // 28 bytes bLength USB_DEVICE_CAPABILITY_DESCRIPTOR_TYPE, // Platform Descriptor type USB_DEVICE_CAPABILITY_PLATFORM, // bDevCapabilityType PLATFORM 0, // bReserved 0xDF, 0x60, 0xDD, 0xD8, // PlatformCapabilityUUID 0x89, 0x45, // MS OS2.0 Descriptor 0xC7, 0x4C, // D8DD60DF-4589-4CC7-9CD2-659D9E648A9F 0x9C, 0xD2, 0x65, 0x9D, 0x9E, 0x64, 0x8A, 0x9F, // CapabilityData 0x00, 0x00, 0x00, 0x0A, // dwWindowsVersion for Windows 10 and later 0xC8, 0x02, // wLength 0x2C8 (712) 0x01, // bMS_VendorCode - any value. e.g. 0x01 0x00 // bAltEnumCmd 0 >;
Дескриптор возможностей платформы BOS указывает:
- ИДЕНТИФИКАТОР GUID возможностей платформы дескриптора MS OS 2.0
- Код элемента управления поставщиком bMS_VendorCode (здесь он имеет значение 1. Для получения дескриптора MS OS 2.0 может потребоваться любое значение, предпочитаемое поставщиком.
- Этот дескриптор BOS применим для версий ОС Windows 10 и более поздних версий.
После просмотра дескриптора BOS USB-стек выполнит запрос на управление для конкретного поставщика, чтобы получить дескриптор MS OS 2.0.
Формат запроса элемента управления для получения дескриптора поставщика MS OS 2.0:
bmRequestType BRequest wValue WIndex wLength Данные 1100 0000B bMS_VendorCode 0x00 0x07 Длина Возвращен большой двоичный объект набора дескриптора MS OS 2.0 bmRequestType
- Направление передачи данных — устройство к узлу
- Тип — поставщик
- Получатель — устройство
bRequest
Значение bMS_VendorCode , возвращаемое в информационной структуре набора дескрипторов.
wValue
Задайте значение 0x00.
wIndex
0x7 для MS_OS_20_DESCRIPTOR_INDEX.
wLength
Длина набора дескрипторов MS OS 2.0, возвращаемая в дескрипторе BOS. 0x25C (604) в этом примере.
Ожидается, что устройство вернет дескриптор MS OS 2.0, как указано в usbVideoMSOS20DescriptorSet.
UsbVideoMSOS20DescriptorSet описывает функции color и IR. Он задает следующие значения дескриптора MS OS 2.0:
- Задать заголовок
- Заголовок подмножества конфигурации
- Заголовок подмножества функции «Цветная камера»
- Дескриптор компонента значения реестра для идентификатора группы датчиков
- Дескриптор функции значения реестра для имени группы датчиков
- Дескриптор функции значения реестра для включения захвата неподвижного образа
- Дескриптор функции значения реестра для включения DMFT платформы
- Заголовок подмножества функции камеры IR
- Дескриптор компонента значения реестра для идентификатора группы датчиков
- Дескриптор функции значения реестра для имени группы датчиков
- Дескриптор функции значения реестра для регистрации камеры в качестве камеры датчика
Встроенное ПО будет иметь обработчик для запроса поставщика, который вернет следующий дескриптор MS OS 2.0 для мнимого устройства, описанного в начале этого раздела.
UCHAR USBVideoMSOS20DescriptorSet[0x2C8] = < /* Microsoft OS 2.0 Descriptor Set Header */ 0x0A, 0x00, // wLength of MSOS20_SET_HEADER_DESCRIPTOR 0x00, 0x00, // wDescriptorType == MSOS20_SET_HEADER_DESCRIPTOR 0x00, 0x00, 0x00, 0x0A, // dwWindowsVersion – 0x10000000 for Windows 10 0xC8, 0x02, // wTotalLength - Total length 0x2C8 (712) /* Microsoft OS 2.0 Configuration Subset Header */ 0x08, 0x00, // wLength of MSOS20_SUBSET_HEADER_CONFIGURATION 0x01, 0x00, // wDescriptorType == MSOS20_SUBSET_HEADER_CONFIGURATION 0x00, // bConfigurationValue set to the first configuration 0x00, // bReserved set to 0. 0xBE, 0x02, // wTotalLength - Total length 0x2BE (702) /****************Color Camera Function******************/ /* Microsoft OS 2.0 Function Subset Header */ 0x08, 0x00, // wLength of MSOS20_SUBSET_HEADER_FUNCTION 0x02, 0x00, // wDescriptorType == MSOS20_SUBSET_HEADER_FUNCTION 0x00, // bFirstInterface field of the first IAD 0x00, // bReserved set to 0. 0x6E, 0x01, // wSubsetLength - Length 0x16E (366) /****************Register the Color Camera in a sensor group******************/ /* Microsoft OS 2.0 Registry Value Feature Descriptor */ 0x80, 0x00, // wLength 0x80 (128) in bytes of this descriptor 0x04, 0x00, // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY 0x01, 0x00, // wPropertyDataType - REG_SZ 0x28, 0x00, // wPropertyNameLength – 0x28 (40) bytes 'U', 0x00, 'V', 0x00, // Property Name - "UVC-FSSensorGroupID" 'C', 0x00, '-', 0x00, 'F', 0x00, 'S', 0x00, 'S', 0x00, 'e', 0x00, 'n', 0x00, 's', 0x00, 'o', 0x00, 'r', 0x00, 'G', 0x00, 'r', 0x00, 'o', 0x00, 'u', 0x00, 'p', 0x00, 'I', 0x00, 'D', 0x00, 0x00, 0x00, 0x4E, 0x00, // wPropertyDataLength – 0x4E (78) bytes // FSSensorGroupID GUID in string format: // "" '', 0x00, 0x00, 0x00, /* Microsoft OS 2.0 Registry Value Feature Descriptor */ 0x56, 0x00, // wLength 0x56 (86) in bytes of this descriptor 0x04, 0x00, // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY 0x01, 0x00, // wPropertyDataType - REG_SZ 0x2C, 0x00, // wPropertyNameLength – 0x2C (44) bytes 'U', 0x00, 'V', 0x00, // Property Name - "UVC-FSSensorGroupName" 'C', 0x00, '-', 0x00, 'F', 0x00, 'S', 0x00, 'S', 0x00, 'e', 0x00, 'n', 0x00, 's', 0x00, 'o', 0x00, 'r', 0x00, 'G', 0x00, 'r', 0x00, 'o', 0x00, 'u', 0x00, 'p', 0x00, 'N', 0x00, 'a', 0x00, 'm', 0x00, 'e', 0x00, 0x00, 0x00, 0x20, 0x00, // wPropertyDataLength – 0x20 (32) bytes // FSSensorGroupName "YourCameraGroup" 'Y', 0x00, 'o', 0x00, 'u', 0x00, 'r', 0x00, 'C', 0x00, 'a', 0x00, 'm', 0x00, 'e', 0x00, 'r', 0x00, 'a', 0x00, 'G', 0x00, 'r', 0x00, 'o', 0x00, 'u', 0x00, 'p', 0x00, 0x00, 0x00, /****************Enable Still Image Capture for Color Camera************/ /* Microsoft OS 2.0 Registry Value Feature Descriptor */ 0x54, 0x00, // wLength 0x54 (84) in bytes of this descriptor 0x04, 0x00, // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY 0x04, 0x00, // wPropertyDataType - REG_DWORD 0x46, 0x00, // wPropertyNameLength – 0x46 (70) bytes 'U', 0x00, 'V', 0x00, // Property Name - "UVC-EnableDependentStillPinCapture" 'C', 0x00, '-', 0x00, 'E', 0x00, 'n', 0x00, 'a', 0x00, 'b', 0x00, 'l', 0x00, 'e', 0x00, 'D', 0x00, 'e', 0x00, 'p', 0x00, 'e', 0x00, 'n', 0x00, 'd', 0x00, 'e', 0x00, 'n', 0x00, 't', 0x00, 'S', 0x00, 't', 0x00, 'i', 0x00, 'l', 0x00, 'l', 0x00, 'P', 0x00, 'i', 0x00, 'n', 0x00, 'C', 0x00, 'a', 0x00, 'p', 0x00, 't', 0x00, 'u', 0x00, 'r', 0x00, 'e', 0x00, 0x00, 0x00, 0x04, 0x00, // wPropertyDataLength – 4 bytes 0x01, 0x00, 0x00, 0x00, // Enable still pin capture using Method 2 or Method 3 /****************Enable Platform DMFT for ROI-capable USB Camera************/ /* Microsoft OS 2.0 Registry Value Feature Descriptor */ 0x3C, 0x00, // wLength 0x3C (60) in bytes of this descriptor 0x04, 0x00, // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY 0x04, 0x00, // wPropertyDataType - REG_DWORD 0x2E, 0x00, // wPropertyNameLength – 0x2E (46) bytes 'U', 0x00, 'V', 0x00, // Property Name - "UVC-EnablePlatformDmft" 'C', 0x00, '-', 0x00, 'E', 0x00, 'n', 0x00, 'a', 0x00, 'b', 0x00, 'l', 0x00, 'e', 0x00, 'P', 0x00, 'l', 0x00, 'a', 0x00, 't', 0x00, 'f', 0x00, 'o', 0x00, 'r', 0x00, 'm', 0x00, 'D', 0x00, 'm', 0x00, 'f', 0x00, 't', 0x00, 0x00, 0x00, 0x04, 0x00, // wPropertyDataLength – 4 bytes 0x01, 0x00, 0x00, 0x00, // Enable Platform DMFT /****************IR Camera Function*********************************************/ /* Microsoft OS 2.0 Function Subset Header */ 0x08, 0x00, // wLength of MSOS20_SUBSET_HEADER_FUNCTION 0x02, 0x00, // wDescriptorType == MSOS20_SUBSET_HEADER_FUNCTION 0x01, // bFirstInterface set of the second function 0x00, // bReserved set to 0. 0x48, 0x01, // wSubsetLength - Length 0x148 (328) /********Register the IR Camera to the same sensor group as the Color Camera*****/ /* Microsoft OS 2.0 Registry Value Feature Descriptor */ 0x80, 0x00, // wLength 0x80 (128) in bytes of this descriptor 0x04, 0x00, // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY 0x01, 0x00, // wPropertyDataType - REG_SZ 0x28, 0x00, // wPropertyNameLength – 0x28 (40) bytes 'U', 0x00, 'V', 0x00, // Property Name - "UVC-FSSensorGroupID" 'C', 0x00, '-', 0x00, 'F', 0x00, 'S', 0x00, 'S', 0x00, 'e', 0x00, 'n', 0x00, 's', 0x00, 'o', 0x00, 'r', 0x00, 'G', 0x00, 'r', 0x00, 'o', 0x00, 'u', 0x00, 'p', 0x00, 'I', 0x00, 'D', 0x00, 0x00, 0x00, 0x4E, 0x00, // wPropertyDataLength – 78 bytes // FSSensorGroupID GUID in string format: // "" '', 0x00, 0x00, 0x00, /* Microsoft OS 2.0 Registry Value Feature Descriptor */ 0x56, 0x00, // wLength 0x56 (86) in bytes of this descriptor 0x04, 0x00, // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY 0x01, 0x00, // wPropertyDataType - REG_SZ 0x2C, 0x00, // wPropertyNameLength – 0x2C (44) bytes 'U', 0x00, 'V', 0x00, // Property Name - "UVC-FSSensorGroupName" 'C', 0x00, '-', 0x00, 'F', 0x00, 'S', 0x00, 'S', 0x00, 'e', 0x00, 'n', 0x00, 's', 0x00, 'o', 0x00, 'r', 0x00, 'G', 0x00, 'r', 0x00, 'o', 0x00, 'u', 0x00, 'p', 0x00, 'N', 0x00, 'a', 0x00, 'm', 0x00, 'e', 0x00, 0x00, 0x00, 0x20, 0x00, // wPropertyDataLength – 32 bytes // FSSensorGroupName "YourCameraGroup" 'Y', 0x00, 'o', 0x00, 'u', 0x00, 'r', 0x00, 'C', 0x00, 'a', 0x00, 'm', 0x00, 'e', 0x00, 'r', 0x00, 'a', 0x00, 'G', 0x00, 'r', 0x00, 'o', 0x00, 'u', 0x00, 'p', 0x00, 0x00, 0x00, /****************Make IR camera visible to applications*********************/ /* Microsoft OS 2.0 Registry Value Feature Descriptor */ 0x30, 0x00, // wLength 0x30 (48) in bytes of this descriptor 0x04, 0x00, // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY 0x04, 0x00, // wPropertyDataType - REG_DWORD 0x22, 0x00, // wPropertyNameLength – 0x22 (34) bytes 'S', 0x00, 'e', 0x00, 'n', 0x00, 's', 0x00, 'o', 0x00, 'r', 0x00, 'C', 0x00, 'a', 0x00, 'm', 0x00, 'e', 0x00, 'r', 0x00, 'a', 0x00, 'M', 0x00, 'o', 0x00, 'd', 0x00, 'e', 0x00, 0x00, 0x00, 0x04, 0x00, // wPropertyDataLength – 4 bytes 0x01, 0x00, 0x00, 0x00, // This exposes the camera to OS as an IR only camera // i.e. KSCATEGORY_SENSOR_CAMERA /* Microsoft OS 2.0 Registry Value Feature Descriptor */ 0x3A, 0x00, // wLength 0x3A (58) in bytes of this descriptor 0x04, 0x00, // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY 0x04, 0x00, // wPropertyDataType - REG_DWORD 0x2C, 0x00, // wPropertyNameLength – 0x2C (44) bytes 'S', 0x00, 'k', 0x00, 'i', 0x00, 'p', 0x00, 'C', 0x00, 'a', 0x00, 'm', 0x00, 'e', 0x00, 'r', 0x00, 'a', 0x00, 'E', 0x00, 'n', 0x00, 'u', 0x00, 'm', 0x00, 'e', 0x00, 'r', 0x00, 'a', 0x00, 't', 0x00, 'i', 0x00, 'o', 0x00, 'n', 0x00, 0x00, 0x00, 0x04, 0x00, // wPropertyDataLength – 4 bytes 0x01, 0x00, 0x00, 0x00 // This exposes the camera to applications looking for IR only cameras >;
Обратная связь
Были ли сведения на этой странице полезными?
USB-IF дополняет определение USB Video Class 1.1 поддержкой H.264
Рабочая группа Video Work Group, сформированная организацией USB-IF, завершила разработку дополнения к спецификации USB Video Class (UVC) 1.1. Это дополнение добавляет поддержку формата H.264. Разработчики отмечают, что спецификация USB Device Class Definition for Video Devices распространяется на все устройства или функциональные блоки в составе сложных устройств, которые используются для «манипуляций видео и функциональности, связанной с видео». В этот список попадают web-камеры, цифровые видеокамеры, средства для оцифровки аналогового видео, аналоговые и цифровые TV-тюнеры, а также фотокамеры с функцией видеозаписи.
Поддержка кодирования в H.264 позволяет хосту передать задачу сжатия видео в ведение периферийного устройства, например, web-камеры. За счет сжатия, в частности, высвобождается полоса пропускания, которую могут занять другие устройства, подключенные к шине USB.
Устройства с поддержкой кодирования в H.264 могут общаться с хостом, используя преопределенные спецификацией управляющие команды и интерфейс передачи потокового видео. Спецификация H.264 Payload совместима с драйверами, основанными на требованиях спецификаций USB-IF UVC 1.0 и 1.1, и опирается на реализацию MJPG и (или) Stream Based. Новые команды определены с использованием стандартных конструкций расширения UVC. Авторы решения отмечают, что в будущем могут появиться дополнительные управляющие конструкции для кодеров и декодеров, использующих разные алгоритмы сжатия.
Спецификация USB Device Class Definition for Video Devices: H.264 Payload уже доступна на сайте USB-IF в разделе документации для разработчиков.