Реализация USB видео класса

Драйвер класса видео устройств USB (UVC) (usbvideo.sys) — это минидрайвер AVStream, предоставляемый Microsoft. Он создает фабрику фильтров для каждого экземпляра устройства, совместимого с классом USB Video, перечисляемого операционной системой. Драйвер также создает фабрику пинов для каждого терминала ввода или вывода на устройстве, где элемент DataFlow структуры KSPIN_DESCRIPTOR установлен на соответствующее значение.

Драйвер класса видео USB использует внутреннюю топологию устройства, сообщаемую дескрипторами устройства, для создания графа топологии потоковой передачи ядра (KS), состоящего из фильтров, узлов и подключений.

На основе количества и типов элементов управления, поддерживаемых устройством, класс видео USB динамически сообщает наборы свойств фильтров, пинов и узлов через таблицы автоматизации KS в дескрипторах фильтров и пинов AVStream.

На основе форматов данных, поддерживаемых каждой конечной точкой видео или неподвижного изображения на устройстве, видеокласс USB сообщает соответствующий список поддерживаемых диапазонов данных KS и обработчик пересечения данных в соответствующем дескрипторе вывода AVStream. Драйвер класса ВИДЕО USB экспортирует сведения через модуль прокси-сервера потоковой передачи ядра .

Драйвер класса видео USB также поддерживает синхронизацию аудио- и видеопотока; usbvideo.sys может служить главными часами KS и добавлять метки времени в видеокадры. Спецификация класса ВИДЕО USB содержит сведения о том, как оборудование должно предоставлять сведения о времени драйверу класса.

Для взаимодействия с классом видео USB клиенты в пользовательском режиме вызывают интерфейсы DirectShow или Media Foundation. Эти интерфейсы — это оболочки COM-интерфейса, определенные прокси-сервером потоковой передачи ядра как подключаемые модули. Дополнительные сведения о Media Foundation см. в документации по пакету SDK для Microsoft Windows.