USB Video
Overview
The USB video device class
(also USB video class or UVC)
is a USB device class that
describes devices capable of streaming video like webcams, digital camcorders, analog
video converters, television tuners, and still-image cameras.
The latest revision of the USB video class specification carries the version number
1.1 and was defined by the USB Implementers Forum in a set of documents describing
both the basic protocol and the different payload formats.
Video functions are addressed through their
video interfaces. Each video function has a single
VideoControl (VC) interface and can have several
Video Streaming (VS) interfaces. The
VideoControl (VC) interface is used to access the device controls of the function whereas the
VideoStreaming (VS) interfaces are used to transport data streams into and out of the function.
The collection of the single VideoControl interface and the VideoStreaming interfaces that
belong to the same video function is called the Video Interface Collection (VIC). An Interface
Association Descriptor (IAD) is used to describe the Video Interface Collection.
Spec
The Video Interface class
groups all functions that can interact with USB-compliant video data
streams. All functions that convert between analog and digital video domains can be part of this
class. In addition, those functions that transform USB-compliant video data streams into other
USB-compliant video data streams can be part of this class. Even analog video functions that are
controlled through USB belong to this class.
In fact, for a video function to be part of this class, the only requirement is that it exposes one
VideoControl Interface. No further interaction with the function is mandatory, although most
functions in the video interface class will support one or more optional VideoStreaming
interfaces for consuming or producing one or more video data streams.
The Video Interface class code is assigned by the USB.
Implementation
USB Video Class
driver is a pin-centric AVStream minidriver.
It creates a filter factory for each
USB Video Class–compliant device instance
enumerated by the operating system. The driver also creates a pin factory for
each input or output terminal on the device, with the DataFlow member of the
KSPIN_DESCRIPTOR structure set to the relevant value.
The USB Video Class
driver uses the internal device topology reported by the
device descriptors to construct a kernel streaming (KS) topology graph comprised of filters, nodes, and connections.
Based on the number and types of controls supported by the device,
USB Video
Class dynamically reports filter, pin, and node property sets through the KS
automation tables in the AVStream filter and pin descriptors.
Based on the data formats supported by each video or still image data endpoint
on the device, USB Video
Class reports the corresponding list of KS data ranges
supported and a data intersection handler in the respective AVStream pin descriptor.
The USB Video
Class driver exports the information through the Kernel Streaming Proxy module.
The USB Video
Class driver also supports audio/video stream synchronization
can serve as a KS master clock and add time stamps to video samples.
The USB Video Class specification includes details about how the hardware should provide timing information to the class driver.
Resources
- MSDN-USB Video Class Driver
- USB-IF-Video Class
- Video Function Driver-Full and comprehensive solution for video device manufacturers such as webcams, digital camcorders, digital television tuners and other image capturing devices, to support video streaming and still image transfer over the Universal Serial Bus to respective hosts such as PCs.
- USB Video Class-Brought to you by Jan Axelson
- USB Video Solution
For further details and to contribute information relevant to our website, please Contact us