USB video device class

Last updated

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, transcoders, analog video converters and still-image cameras.

Contents

The latest revision of the USB video class specification carries the version number 1.5 and was defined by the USB Implementers Forum in a set of documents describing both the basic protocol and the different payload formats. [1]

Devices

Webcams

Webcams were among the first devices to support the UVC standard and are currently the most popular UVC devices.[ citation needed ]

TV receivers and video recorders

UVC v1.5 supports transmission of compressed video streams, including MPEG-2 TS, H.264, MPEG-4 SL SMPTE VC1 and MJPEG. [1]

Formats

Revision history

For detailed history on releases, see the revision history section of the published USB UVC documents, available from the USB.org page.

VersionDateDescription
1.0September 4, 2003Initial release
1.0aDecember 4, 2003Add additional descriptor subtypes for "extension" types. FAQ: Added section 2.21 Interlaced video
1.0bUn­knownChanges to FAQ only: Protocol STALL behavior, current and future payload header formats
1.0cJune 5, 2004Changes to FAQ only: Added motion JPEG characteristics
1.1June 1, 2005Major update including among other things: New documents specifying for stream and frame based payloads, latency optimizations for stream-based formats, specification of absolute and relative control relationship, asynchronous controls behavior, change naming from "VDC" to "UVC", obsolete old formats and add new ones, add a flag to distinguish between dynamic and fixed frame rate devices (RR0043).
1.5June 6, 2012Added H.264 and VP8 payloads, and accompanying controls for video encoders. Included references to USB 3.0

Operating system support

Android
As of the release of Android 10 (and still as of June 2020) Android does not support UVC [2] (USB video devices). Earlier Android versions do support UVC. As of December 2023 Feature drop update to Android 14 UVC support returns to the system. [3]
Linux
USB video class support for Linux is provided by the Linux UVC driver, although as of July 2017 support for still-image capture is not yet implemented. [4] The UVC driver has been included in the Linux kernel source code since kernel version 2.6.26. Detection of UVC 1.5 devices was introduced in Linux kernel version 4.5, [5] but support in the driver for UVC 1.5 specific features or specific UVC 1.5 devices was not added and MPEG-2 TS, H.264 and VP8 payloads are not supported yet. The result is that some UVC 1.5 devices that also support UVC 1.1 work correctly.
macOS
macOS ships with a UVC driver included since version 10.4.3, [6] updated in 10.4.9 to work with iChat. [7]
Windows
Windows XP has a class driver for USB video class 1.0 devices since Service Pack 2, as does Windows Vista and Windows CE 6.0. A post-service pack 2 update that adds more capabilities is also available. [8] Windows 7 added UVC 1.1 support. Support for UVC 1.5 is currently only available in Windows 8, 10 and 11. [9] [10] [11] [12] Most device manufacturers do, however, provide their own drivers tailored to the capabilities of the product in question.[ citation needed ]:
UVC VersionWindows XP/VistaWindows 7Windows 8/10/11
USB Video Class 1.0SupportedSupportedSupported
USB Video Class 1.1Not supportedSupportedSupported
USB Video Class 1.5 (H.264 video codec)Not supportedNot supportedSupported
FreeBSD
FreeBSD added the uvc driver for UVC devices in Jan 18, 2011; added in the 9.0 release. [13]
NetBSD
NetBSD added the uvideo driver for UVC devices in September 2008; added in the 5.0 release. [14]
OpenBSD
OpenBSD added the uvideo driver for UVC devices in April 2008; it appears in the 4.4 release. [15]
PlayStation 3
The PlayStation 3 added support for UVC compatible webcams in firmware version 1.54 (only works for video chat, not games.)
MenuetOS
MenuetOS added support for UVC compatible webcams in version 0.87
Solaris
Solaris includes support for UVC webcams in the form of the usbvc driver for OpenSolaris. The driver ships with Solaris Express build 56 and later. [16]

See also

Related Research Articles

Hardware abstractions are sets of routines in software that provide programs with access to hardware resources through programming interfaces. The programming interface allows all devices in a particular class C of hardware devices to be accessed through identical interfaces even though C may contain different subclasses of devices that each provide a different hardware interface.

<span class="mw-page-title-main">VLC media player</span> Free and open-source media-player and streaming-media-server

VLC media player is a free and open-source, portable, cross-platform media player software and streaming media server developed by the VideoLAN project. VLC is available for desktop operating systems and mobile platforms, such as Android, iOS and iPadOS. VLC is also available on digital distribution platforms such as Apple's App Store, Google Play, and Microsoft Store.

Video4Linux is a collection of device drivers and an API for supporting realtime video capture on Linux systems. It supports many USB webcams, TV tuners, and related devices, standardizing their output, so programmers can easily add video support to their applications.

In software engineering, a compatibility layer is an interface that allows binaries for a legacy or foreign system to run on a host system. This translates system calls for the foreign system into native system calls for the host system. With some libraries for the foreign system, this will often be sufficient to run foreign binaries on the host system. A hardware compatibility layer consists of tools that allow hardware emulation.

<span class="mw-page-title-main">UEFI</span> Technical specification for firmware architecture

Unified Extensible Firmware Interface is a specification for the firmware architecture of a computing platform. When a computer is powered on, the UEFI-implementation is typically the first that runs, before starting the operating system. Examples include AMI Aptio, Phoenix SecureCore, TianoCore EDK II, InsydeH2O.

The Advanced Host Controller Interface (AHCI) is a technical standard defined by Intel that specifies the register-level interface of Serial ATA (SATA) host controllers in a non-implementation-specific manner in its motherboard chipsets.

<span class="mw-page-title-main">USB mass storage device class</span> USB device class for drives

The USB mass storage device class is a set of computing communications protocols, specifically a USB Device Class, defined by the USB Implementers Forum that makes a USB device accessible to a host computing device and enables file transfers between the host and the USB device. To a host, the USB device acts as an external hard drive; the protocol set interfaces with a number of storage devices.

<span class="mw-page-title-main">QEMU</span> Free virtualization and emulation software

The Quick Emulator (QEMU) is a free and open-source emulator that uses dynamic binary translation to emulate a computer's processor; that is, it translates the emulated binary codes to an equivalent binary format which is executed by the machine. It provides a variety of hardware and device models for the virtual machine, enabling it to run different guest operating systems. QEMU can be used with a Kernel-based Virtual Machine (KVM) to emulate hardware at near-native speeds. Additionally, it supports user-level processes, allowing applications compiled for one processor architecture to run on another.

Advanced Configuration and Power Interface (ACPI) is an open standard that operating systems can use to discover and configure computer hardware components, to perform power management, auto configuration, and status monitoring. It was first released in December 1996. ACPI aims to replace Advanced Power Management (APM), the MultiProcessor Specification, and the Plug and Play BIOS (PnP) Specification. ACPI brings power management under the control of the operating system, as opposed to the previous BIOS-centric system that relied on platform-specific firmware to determine power management and configuration policies. The specification is central to the Operating System-directed configuration and Power Management (OSPM) system. ACPI defines hardware abstraction interfaces between the device's firmware, the computer hardware components, and the operating systems.

A kernel is a component of a computer operating system. A comparison of system kernels can provide insight into the design and architectural choices made by the developers of particular operating systems.

In computer networking, TUN and TAP are kernel virtual network devices. Being network devices supported entirely in software, they differ from ordinary network devices which are backed by physical network adapters.

exFAT is a file system optimized for flash memory such as USB flash drives and SD cards, that was introduced by Microsoft in 2006. exFAT was proprietary until 28 August 2019, when Microsoft published its specification. Microsoft owns patents on several elements of its design.

A Bluetooth stack is software that is an implementation of the Bluetooth protocol stack.

Operating system Wi-Fi support is defined as the facilities an operating system may include for Wi-Fi networking. It usually consists of two pieces of software: device drivers, and applications for configuration and management.

libusb

libusb is a library that provides applications with access for controlling data transfer to and from USB devices on Unix and non-Unix systems, without the need for kernel-mode drivers.

The Remote Network Driver Interface Specification (RNDIS) is a Microsoft proprietary protocol used mostly on top of USB. It provides a virtual Ethernet link to most versions of the Windows, Linux, and FreeBSD operating systems. Multiple revisions of a partial RNDIS specification are available from Microsoft, but Windows implementations have been observed to issue requests not included in that specification, and to have undocumented constraints.

<span class="mw-page-title-main">IEEE 1394</span> Serial bus interface standard, also known as Firewire

IEEE 1394 is an interface standard for a serial bus for high-speed communications and isochronous real-time data transfer. It was developed in the late 1980s and early 1990s by Apple in cooperation with a number of companies, primarily Sony and Panasonic. It is most commonly known by the name FireWire (Apple), though other brand names exist such as i.LINK (Sony), and Lynx.

The Helix Universal Media Server was a product developed by RealNetworks and originates from the first streaming media server originally developed by Progressive Networks in 1994. It supported a variety of streaming media delivery transports including MPEG-DASH RTMP (flash), RTSP (standard), HTTP Live Streaming (HLS), Microsoft Silverlight and HTTP Progressive Download enabling mobile phone OS and PC OS media client delivery.

NVM Express (NVMe) or Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) is an open, logical-device interface specification for accessing a computer's non-volatile storage media usually attached via the PCI Express bus. The initial NVM stands for non-volatile memory, which is often NAND flash memory that comes in several physical form factors, including solid-state drives (SSDs), PCIe add-in cards, and M.2 cards, the successor to mSATA cards. NVM Express, as a logical-device interface, has been designed to capitalize on the low latency and internal parallelism of solid-state storage devices.

References

  1. 1 2 3 4 5 6 USB Device Class Definition for Video Devices, Revision 1.5, June 2012.
  2. "Android 10 no UVC issue".
  3. "Android 14 December feature drop USB Webcam". 6 December 2023.
  4. "Linux UVC driver & tools". www.ideasonboard.org.
  5. "Enable UVC 1.5 device detection".
  6. Mac OS X 10.4.3 update "comes with native support for UVC devices", NCH Software. Retrieved June 29, 2019.
  7. Mac OS X 10.4.9 update "Includes iChat support for USB Video Class webcams", Apple Inc. April 8, 2008. Retrieved January 28, 2010.
  8. The updated USB Video Class (UVC) driver for Windows XP with Service Pack 2 is available.
  9. USB Video Class Driver Overview. Microsoft. Retrieved July 22, 2014.
  10. barrygolden. "USB Video Class Driver Overview - Windows drivers". docs.microsoft.com. Retrieved 2020-05-26.
  11. barrygolden. "Windows 10 UVC camera implementation guide - Windows drivers". docs.microsoft.com. Retrieved 2020-05-26.
  12. barrygolden. "Microsoft extensions to USB Video Class 1.5 specification - Windows drivers". docs.microsoft.com. Retrieved 2020-05-26.
  13. "UVC(4) FreeBSD Kernel Interfaces Manual". 2012-08-06. Archived from the original on 2013-09-11. Retrieved 2013-09-10.
  14. "uvideo(4) - NetBSD Manual Pages". man.netbsd.org.
  15. "uvideo(4) - OpenBSD manual pages". man.openbsd.org.
  16. "USB Video Class driver on Solaris". Archived from the original on 2007-08-23. Retrieved 2007-08-23.