USB Video Class (UVC): Specification and Benefits

USB Video Class

Cameras give helpful video and image data while assisting with object recognition, observation, and analysis in a target scene. High bandwidth and high image quality camera modules that are simple to interface with the rest of the embedded device are required for such video streaming applications.

Due to their bandwidth, dependability, and ease of integration, UVC-compliant USB cameras have decisively emerged as the best option among the numerous camera types utilized in embedded vision. Therefore, this post can assist you in learning more about the USB video class and its advantages.

What is USB Video Device Class (UVC)?

USB Video Device Class (UVC) is a type of USB Device class that enables devices t0 transmits in-stream video via USB.

USB Video Class represents a growth in Plug and Plays technology. Its objective is to standardize the USB’s video streaming capabilities. It must work with a wide range of apps and operating systems that can automatically identify and build new devices without user input. For instance, UVC driver support is already present in PlayStation, the operating system designed specifically for gaming. For developers, UVC support expedites the process of creating USB video devices.

Both newer PTZ cameras and common consumer webcams feature UVC. With the UVC standard, the host gets structures that specify the video device’s capabilities. Moreover, it may alter the video stream in many ways via USB queries. The UVC also enables a range of video resolutions, codes, and frame rates to be supported by video devices. This has a significant impact on how well the bandwidth of the device and host match.

This driver is an AVStream mini driver made available by Microsoft that supports USB Video Class devices. You are not required to supply your own driver if your device supports UVC. Therefore, the system’s driver enables the device to operate independently.

Windows, Linux, and mac based operating systems can operate as hosts for UVC-based devices like cameras. The driver support for the device side, referred to as the gadget, is proprietary depending on the manufacturer. The existing UVC driver is difficult to configure and use. It does not implement the UVC specification. It is dependent on a user space application to finish the identification process and start the video streaming.

USB Video Class Use Cases

A straightforward program that can read a USB Video Class device on the host computer is created using the XMOS USB device library. A video capture host program like OBS Studio, this program then transmits an uncompressed video stream in YUV format at 30 frames per second. The hardware element is a multi-core microcontroller called xCORE-USB.

The following operations are carried out by the system to process signals from the USB video device:

  • the handler that responds to requests for both common and specific video classes
  • the subroutine that implements the USB communication library features
  • the method for transferring video data via streaming software (Video Endpoints Handler).

How does it function?

The built-in programming interface can be used to host or transfer the video streaming functionality without the need for a driver or other accompanying devices. In either, libGuvc is supplied as an automake project. It develops a library that may be used externally to give another application UVC streaming capabilities.

Popular software for Windows OS includes Media Player Classic. The open-source software VirtualDub and eCAMView are two more Windows applications.  LibGuvc communicates using the V4L2 events interface since it relies on the UVC kernel driver in the Linux server. To ensure intercommunication, each event is mapped to certain call-backs, functions within the library, and the user application.

Additionally, the API supports a broad variety of settings. These can be altered to use particular features like Extension Units or UVC control requests. Business operations and customer interactions are evolving. It is a result of AMRs (Autonomous Mobile Robots), barcode scanning equipment, surveillance systems, etc.

In addition, the ability of these devices to “see” their surroundings is made possible by integrated vision cameras. Cameras produce useful video and image data. They assist with object recognition, observation, and analysis in a target scene. Good bandwidth and high image-quality camera modules that are simple to interface with the rest of the embedded device are required for such video streaming applications.

Due to UVC’s bandwidth, dependability, and ease of integration, UVC USB cameras have emerged as the ideal choice. They are used for many applications among the many camera types utilized in embedded vision. They provide the power for a variety of embedded vision devices, including telepresence robots, document scanners, airport kiosks and digital signage, skin scanners, and biometric and access control systems.

Benefits of UVC

One of the most widely utilized camera types for embedded vision applications is the UVC camera. The following list includes a few benefits of utilizing a UVC camera.

  • XConnect channels enable data flow between application code logical cores that are used by these jobs to communicate with one another.
  • Since Windows 7, 8, 10, and 11, and Linux kernel drivers support UVC 1.1 and UVC 1.0, the libGuvc library only supports that version of the UVC specification. Windows 8, 10, and 11 are supported with UVC 1.5, except windows 7. But for Linux, UVC 1.5 can later receive more support after the Linux kernel driver adds functionality.
  • I3C/I3C Basic devices will be made available to a broader ecosystem by device manufacturers.
  • Due to the ability of standardized USB-to-I3C/I3C Basic devices to utilize existing logic and firmware, integrators will be able to release designs more quickly.
  • Utilizes a built-in generic class driver to regulate the video feature.
  • Offers you more freedom to handle different video resolutions, codecs, and frame rates, which affects how your device and host negotiate bandwidth.

Video formats support

Only the YUY2 video format is supported by libGuvc version 1.0.x and Windows OS. Support for MJPEG and H264 video formats is included in releases 1.1.x and 1.3.x as well. However, Microsoft offers an update to the UVC specification for Windows that supports a lot of other formats, such as RGB888 and RGB565.

Summing Up

Windows, Mac OS X, Linux, FreeBSD, and the PS3 all come with UVC preinstalled. UVC merely facilitates this by standardizing video drivers. Therefore, any video camera might use those platforms’ default UVC driver. Only the embedded firmware in the actual video camera needs to be a concern for the video camera manufacturer. The data is divided by UVC into streams for the control and video payload. It describes how to transfer video using the common drivers.

We don’t really need you to pick the wrong device and end up fighting with it rather than working on your task. We can offer you a special camera solution. Without compromising on performance or quality, our USB UVC cameras may be customized to fulfill all of your image requirements.

We sincerely hope that this article gave you a thorough understanding of UVC cameras and their features.

Feel free to contact us if you need assistance with integrating USB cameras into your devices.