USB Video Class

Entities

Entity: A Unit, Terminal or Interface within the video function, each of which may contain Controls.

  • Terminals
    • Input Terminal
    • Output Terminal
  • Units
    • Selector Unit
    • Processing Unit
    • Extension Unit
  • Special Terminals
    • Media Transport Terminal (defined in USB Device Class Definition for Video Media Transport Terminal specification)
    • Camera Terminal

Descriptors

  • VIC ::= VCI VSI{1, n}
  • VCI ::= sVCI; cVCI VCE{0, 1}
    • cVCI ::= cVCI_Header; cTerminal cUnit
      • cTerminal = cInputTerminal{0, n} cOutputTerminal{0, n}
      • cUnit = cSelectorUnit{0, n} cProcessingUnit{0, n} cExtensionUnit{0, n}
    • VCE ::= sEP_Interrupt; cEP_Interrupt
  • VSI ::= sVSI; cVSI sVSE_Video sVSE_Still{0, 1}
    • cVSI ::= cVSI_Header; cPayloadFormat{1, n}; cFrame{0, n} cColorMatching{0, n}
      • cVSI_Header = {cVSI_InputHeader, cVSI_OutputHeader}
    • sVSE_Video = {cEP_Bulk, cEP_Isochronous}
    • sVSE_Still = {cEP_Bulk}
  • All devices that transfer isochronous video data must incorporate a zero-bandwidth alternate setting for each VideoStreaming interface that has an isochronous video endpoint, and it must be the default alternate setting (alternate setting zero).
  • Each Video Interface Collection (VIC) must have an Interface Association Descriptor (IAD).
    • that specifies the interface number of the first VideoControl interface and the number of VideoStreaming interfaces associated with the function.

Abbreviation

  • VIC: Video Interface Collection
  • VCI: VideoControl Interface
  • VSI: VideoStreaming Interface
  • VCE: VideoControl Endpoint
  • VSE: VideoStreaming Endpoint
  • EP: Endpoint
  • s: standard
  • c: class-specific

Class-specific Requests

  • VideoControl Requests
    • Interface Control Requests
      • Power Mode Control
      • Request Error Code Control
    • Unit and Terminal Control Requests
      • Camera Terminal Control Requests
        • Scanning Mode Control
        • Auto-Exposure Mode Control
        • Auto-Exposure Priority Control
        • Exposure Time (Absolute/Relative) Control
        • Focus (Absolute/Relative) Control
        • Focus, Auto Control
        • Iris (Absolute/Relative) Control
        • Zoom (Absolute/Relative) Control
        • PanTilt (Absolute/Relative) Control
        • Roll (Absolute/Relative) Control
        • Privacy Control
      • Selector Unit Control Requests
      • Processing Unit Control Requests
        • Backlight Compensation Control
        • Brightness Control
        • Contrast Control
        • Gain Control
        • Power Line Frequency Control
        • Hue Control
        • Hue, Auto Control
        • Saturation Control
        • Sharpness Control
        • Gamma Control
        • White Balance Temperature Control
        • White Balance Temperature, Auto Control
        • White Balance Component Control
        • White Balance Component, Auto Control
        • Digital Multiplier Control
        • Digital Multiplier Limit Control
        • Analog Video Standard Control
        • Analog Video Lock Status Control
      • Extension Unit Control Requests
  • VideoStreaming Requests
    • Interface Control Requests
      • Video Probe and Commit Controls
      • Video Still Probe Control and Still Commit Control
      • Synch Delay Control
      • Still Image Trigger Control
      • Generate Key Frame Control
      • Update Frame Segment Control
      • Stream Error Code Control

Video Streams

Composition

  • Streaming ::= SampleTransfern
    • SampleTransfer ::= PayloadTransfern
      • PayloadTransfer ::= USBTransfern
  • VideoFrame : VideoSample = 1 : 1
    • e.g. YUV video stream
  • VideoFrame : VideoSample = 1 : n
    • e.g. MPEG-2 TS data stream

Data Formats

  • Frame-based video formats
    • require the frame/sample boundary information to be transmitted out-of-band.
    • FID (and optionally EOF) bits in the UVC payload headers must be supported.
    • Examples
      • uncompressed video
        • packed 4:2:2 YUV format (YUY2)
          • packed: Pixel components are transmitted in interleaved order.
        • planar 4:2:0 YUV format (NV12)
          • planar: Pixel components are transmitted in separate successive planes.
      • MJPEG
      • DV
        • SD-DV
        • SDL-DV
        • HD-DV
  • Stream-based video formats
    • the frame/sample boundary information transmitted in-band.
    • FID and EOF bits are optional.
    • Examples
      • MPEG-1 SS
      • MPEG-2 PS
      • MPEG-2 TS

Operating system support

Microsoft Windows

  • Evolution
    • USBCAMD minidriver library
      • Windows 98 DDK (not supported under Windows 2000)
    • USBCAMD2 minidriver library
      • Windows Server 2003, Windows XP, and Windows 2000
      • in the DDKs and in the Windows Driver Kit (WDK)
    • USB Video class (UVC) driver
      • Windows XP SP2
  • For earlier Windows editions
    • Manufacturers of video devices must provide a minidriver to specify a format for streaming video
      • implement device-specific functions and properties, and perform bulk transfers if required for video data.
    • Windows’ USBCAMD driver manages isochronous data transfers.
      • The driver communicates with Windows’ stream-class driver and with the lower-level USB drivers.
  • A driver compatible with the video class (usbvideo.sys) was released in Windows XP SP2
    • UVC supports a superset of the features in USBCAMD2.
    • Applications can access video devices using the DirectShow component of DirectX.
    • The usbvideo.sys driver is supported beginning with DirectX version 9.2.

Apple Mac OS X

  • Mac OS X ships with a UVC driver included since version 10.4.3, updated in 10.4.9 to work with iChat.

Linux

  • USB video class support for Linux is provided by the Linux UVC driver.
  • Since Linux 2.6.26 the driver is included in kernel source distribution.

Differences between UVC 1.0 and UVC 1.1

  • Bit field header field in the Payload Header
  • Probe and Commit Controls of VideoStreaming (Interface Control) Requests

References

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License