If you require any connectivity solution for your device (USB, Bluetooth, WiFi, etc.), and would like free project consulting from Jungo please fill out this form

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


To contribute to our USB Software Resources and for further details, please Contact us