Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе приводятся рекомендации по реализации настройки DShow Bridge для камер и устройств, которые соответствуют спецификации КЛАССА ВИДЕО USB (UVC). Платформа использует Microsoft OS Descriptors из стандарта шины USB для настройки DShow Bridge. Дескрипторы расширенных свойств ОС — это расширение дескрипторов стандарта USB и используются USB-устройствами для возврата специфических свойств устройства для Windows, которые не включены стандартными спецификациями.
Обзор
Стек захвата камер Майкрософт состоит из устаревшего стека платформы DirectShow и современной платформы, называемой Media Foundation. IHV и OEM должны были разрабатывать компоненты для своих устройств, чтобы удовлетворять требования обоих потоков.
DShow Bridge был написан с намерением интеграции потока DShow с платформой Media Foundation. Это позволяет использовать истинные универсальные драйверы, чтобы IHV и OEM могли разрабатывать драйверы, которые могут работать с приложениями MediaFoundation и DShow в Windows версии 1607 и более поздних. При включённой опции DShow Bridge, приложение DShow и приложения для совместного использования могут одновременно использовать ту же камеру.
IHV и OEM могут потребовать исключения из политик, регулирующих конвейер DShow. Партнеры могут включить следующие функции с помощью дескрипторов ОС:
Выбор использования или отказа от DShow Bridge: Устройство может выбрать использовать мост или отказаться от него и выбрать другой конвейер, более отвечающий их потребностям. Современный конвейер более тщательно документирован и использует функции, добавленные в ОС в нескольких выпусках. Устаревший конвейер, находясь в режиме обслуживания, отстает.
Декомпрессия MJPEG в FrameServer: FrameServer — это служба, виртуализирующая устройство камеры. Это позволяет совместно использовать пин-коды с устройства между несколькими клиентами. Архитектура с оптимизированным декомпрессором Media Foundation может использовать эту функцию для декодации MJPEG в FrameServer. Для нескольких приложений предлагаются несжатые преобразованные форматы мультимедиа (YUY2). Поток декомпрессируется только один раз для нескольких возможных клиентов. Это повышает производительность приложений. На следующей схеме показан конвейер захвата камеры:
Изготовители оборудования (OEM) и независимые поставщики оборудования (IHV), упаковывающие устройства USB-камер, могут использовать спецификацию дескриптора функции операционной системы для расширенных свойств стандарта USB-шины, чтобы настроить мост DShow без внесения каких-либо изменений в INF-файл для драйвера UVC.
Дескрипторы ОС позволяют устройствам определять свойства реестра для USB-устройств или составных устройств.
Чтобы настроить DShow Bridge с помощью дескрипторов ОС USB, программное обеспечение хоста должно создать следующий раздел реестра для каждого интерфейса USB-устройства:
HKLM\SYSTEM\CurrentControlSet\Enum\USB\<DeviceVID&PID>\<DeviceInstance>\Device Parameters
DWORD: EnableDshowRedirection
Значение реестра EnableDshowRedirection — это значение битовой маски, которое можно использовать для настройки моста DShow, как описано в таблице ниже.
| Битовая маска | Описание | Замечания |
|---|---|---|
| 0x00000001 | Принять участие в DShow Bridge | 0 — отказ 1 — согласие |
| 0x00000002 | Включение декодирования MJPEG один раз в FrameServer (см. примечание ниже) | 0 — MJPEG сжатый тип носителя, предоставляемый (без операции) 1. Предоставление преобразованных несжатых типов носителей из MJPEG (YUY2) |
Примечание.
Включает декодирование MJPEG в среде FrameServer, после чего несжатые форматы мультимедиа (YUY2) предоставляются нескольким приложениям. Поток декомпрессируется только один раз для нескольких возможных клиентов. Это повышает производительность приложений.
Примеры макетов
Ниже приведены примеры для следующих спецификаций:
Спецификация расширенных дескрипторов Microsoft OS 1.0
Спецификация дескрипторов Microsoft OS 2.0
Спецификация дескрипторов расширенных свойств Microsoft OS версии 1.0
Дескриптор расширенных свойств ОС имеет два компонента
Раздел заголовка фиксированной длины
Один или несколько разделов настраиваемых свойств переменной длины, которые следует разделу заголовка
Раздел заголовка
В разделе заголовка описывается весь дескриптор расширенных свойств, включая общую длину и номер версии.
| Компенсация | Поле | Размер (в байтах) | Ценность | Описание |
|---|---|---|---|---|
| 0 | dwLength | 4 | 0x0000004c | 76 десятичное число |
| 4 | bcdVersion | 2 | 0x0100 | Версия 1.0 |
| 6 | wIndex | 2 | 0x005 | Дескриптор расширенных свойств ОС |
| 8 | wCount | 2 | 0x0001 | Одно пользовательское свойство |
Раздел настраиваемых свойств (дескриптор 1.0)
Дескриптор расширенного свойства ОС USB HID содержит один раздел настраиваемого свойства для создания ключа реестра EnableDshowRedirection DWORD.
| Смещение | Поле | Размер (в байтах) | Ценность |
|---|---|---|---|
| 0 | dwSize | 4 | 0x00000042 (66 байт для этого свойства) |
| 4 | dwPropertyDataType | 4 | 0x00000004 (REG_DWORD_LITTLE_ENDIAN) |
| 8 | wPropertyNameLength | 2 | 0x0030 |
| 10 | bPropertyName | 48 | EnableDshowRedirection (строка Юникода) |
| 58 | dwPropertyDataLength | 4 | 0x00000004 (Sizeof(DWORD)) |
| 62 | bPropertyData | 4 | 0x00000001 (данные DWORD) |
Спецификация дескрипторов Microsoft OS 2.0
В этом примере показано, как наборы дескрипторов Microsoft 2.0 можно использовать для предоставления одного значения реестра DWORD enableDshowRedirection , которое применяется к версиям Windows.
Раздел настраиваемых свойств (дескриптор 2.0)
| Смещение | Поле | Размер (в байтах) | Ценность |
|---|---|---|---|
| 0 | wLength | 2 | Длина в байтах этого дескриптора |
| 4 | wDescriptorType | 2 | 0x00000004 (REG_DWORD_LITTLE_ENDIAN) |
| 8 | тип_данных_свойства_w | 2 | 0x0030 |
| wPropertyNameLength | 2 | ||
| 10 | ИмяСвойства | Переменная | Длина имени свойства |
| 58 | dwPropertyDataLength | 2 | Длина данных свойств |
| 62 | Данные собственности | Переменная | Данные свойств |
UCHAR Example2\_MSOS20DescriptorSetForFutureWindows\[0x48\] =
{
//
// Microsoft OS 2.0 Descriptor Set Header
//
0x0A, 0x00, // wLength - 12 bytes
0x00, 0x00, // MSOS20_SET_HEADER_DESCRIPTOR
0x00, 0x00, 0x0?, 0x06, // dwWindowsVersion – 0x06030000 for future Windows version
0x4A, 0x00, // wTotalLength – 72 bytes
//
// Microsoft OS 2.0 Registry Value Feature Descriptor
//
0x3E, 0x00, // wLength - 62 bytes
0x04, 0x00, // wDescriptorType – 5 for Registry Property
0x04, 0x00, // wPropertyDataType - 4 for REG_DWORD
0x30, 0x00, // wPropertyNameLength – 48 bytes
0x45, 0x00, 0x6E, 0x00, // Property Name - "EnableDshowRedirection"
0x61, 0x00, 0x62, 0x00,
0x6C, 0x00, 0x65, 0x00,
0x44, 0x00, 0x73, 0x00,
0x68, 0x00, 0x6F, 0x00,
0x77, 0x00, 0x52, 0x00,
0x65, 0x00, 0x64, 0x00,
0x69, 0x00, 0x72, 0x00,
0x65, 0x00, 0x63, 0x00,
0x74, 0x00, 0x69, 0x00,
0x6F, 0x00, 0x6E, 0x00,
0x00, 0x00, 0x00, 0x00,
0x04, 0x00, // wPropertyDataLength – 4 bytes
0x00, 0x00, 0x00, 0x00 // PropertyData – 0x00000003 (DShow Bridge is enabled and MJPEG is decoded in FrameServer)
}
Ресурсы
Дескрипторы ОС Майкрософт для USB-устройств