Труконф возглавил рейтинг ВКС-разработчиков 2023

UVC (USB Video device Class)

UVC (USB Video device Class) — это класс устройств, которые передают потоковое видео по шине USB. UVC представляет собой развитие идей Plug and Play, когда определение и первичное конфигурирование устройства производится средствами ОС без необходимости вмешательства пользователя.

Стандарт UVC определяет структуры для описания функциональных возможностей видеоустройства и USB запросы для управления его различными параметрами и характеристиками видеопотока. Это также обеспечивает гибкость для производителей в проектировании видеоустройств с поддержкой нескольких разрешений видео, форматов и частоты кадров. Что, в свою очередь, влияет на согласование пропускной способности между устройством и хостом.

Многие операционные системы, в том числе на игровых устройствах (например, PlayStation 3 и новее), имеют встроенную поддержку драйверов UVC, что значительно сокращает время, необходимое разработчикам для создания USB-видеоустройств. Большинство современных PTZ-камер и обычных потребительских веб-камер поддерживает UVC.

История UVC

Первая версия спецификации, UVC 1.0, вышла в 2003 году. На текущий момент актуальной остаётся версия 1.5, выпущенная в 2012 году. В ней была добавлена поддержка USB 3.0, а также кодеков H.264 и VP8 с соответствующими инструментами управления.

Преимущества UVC

  • Пользователям нет необходимости вручную устанавливать драйверы для обеспечения базовой функциональности устройства.
  • Для разработчиков ВКС систем UVC облегчает портирование их продуктов на другие операционные системы и гарантирует одинаковую работу на различных устройствах.
  • Для производителей веб-камер наличие подобной спецификации облегчает поддержку и совместимость их решений с различными операционными системами и программными продуктами. Нет необходимости писать драйверы, нужно лишь реализовать поддержку UVC на аппаратном уровне.

Пример использования USB Video Class

Для примера рассмотрим, как стандарт UVC помогает разработать устройство на базе чипов XMOS, предназначенных специально для использования в интернете вещей и аудио/видео устройствах. Ниже представлена простейшая логическая схема работы с данной технологией.

В этом случае для разработки используется библиотека USB-устройств XMOS. В результате создаётся простая программа, которая считывает устройство USB Video Class на хост-машине и передает несжатый видеопоток в формате YUV со скоростью 30 к/с в программное обеспечение для захвата видео, например, OBS Studio. В качестве аппаратной составляющей применяется многоядерный микроконтроллер xCORE-USB.

Для обработки сигналов от USB-видеоустройства система включает три процесса, выполняемые на отдельных логических ядрах микроконтроллера:

  • подпрограмма, реализующая возможности библиотеки связи через USB (XUD Manager);
  • обработчик, отвечающий как на стандартные запросы USB, так и на запросы USB для конкретных классов видео (Common Endpoints Handler);
  • процесс для отправки видеоданных через ПО для потоковой передачи (Video Endpoints Handler).

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

UVC (USB Video device Class) 1

Поддерживаемые форматы

В версии UVC 1.5 поддерживаются следующие профили данных потокового видео:

  • MJPEG
  • MPEG-1 SS
  • MPEG-2 PS
  • MPEG-2 TS
  • MPEG-4 SL
  • H.264
  • VP8
  • SMPTE VC1
  • несжатые YUV форматы: YUY2, NV12
  • DV форматы: SD-DV, SDL-DV и HD-DV.

Поддерживаемые операционные системы

Название ОС  Поддержка
Windows Windows XP SP2+ для UVC 1.0

Windows 7+ для UVC 1.1

Windows 8+ для UVC 1.5

Linux Версии ядра 2.6.26+ для UVC 1.1

Версии ядра 4.5+ для UVC 1.5 (нет поддержки MPEG-2 TS, H.264 and VP8)

macOS Mac OS X Tiger (10.4.3)+
FreeBSD 9.0+

Автор:
Издание: trueconf.ru
Отрасль: Видеоконференцсвязь