USB video device class
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.
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
[edit]Webcams
[edit]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
[edit]This section's factual accuracy is disputed. (July 2020) |
UVC v1.5 supports transmission of compressed video streams, including MPEG-2 TS, H.264, MPEG-4 SL SMPTE VC1 and MJPEG.[1]
Formats
[edit]- Uncompressed YUV formats YUY2, NV12[1]
- DV formats SD-DV, SDL-DV, and HD-DV (525-60, 625–50, 1125–60, 1250–50)[1]
- Frame-based[1]
- Video stream formats like MPEG-2 TS, H.264, MPEG-4 SL, SMPTE VC1, VP8 and MJPEG[1]
Revision history
[edit]For detailed history on releases, see the revision history section of the published USB UVC documents, available from the USB.org page.
Version | Date | Description |
---|---|---|
1.0 | September 4, 2003 | Initial release |
1.0a | December 4, 2003 | Add additional descriptor subtypes for "extension" types. FAQ: Added section 2.21 Interlaced video |
1.0b | Unknown | Changes to FAQ only: Protocol STALL behavior, current and future payload header formats |
1.0c | June 5, 2004 | Changes to FAQ only: Added motion JPEG characteristics |
1.1 | June 1, 2005 | Major 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.5 | June 6, 2012 | Added H.264 and VP8 payloads, and accompanying controls for video encoders. Included references to USB 3.0 |
Operating system support
[edit]This section needs to be updated.(January 2013) |
- 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 Version | Windows XP/Vista | Windows 7 | Windows 8/10/11 |
---|---|---|---|
USB Video Class 1.0 | Supported | Supported | Supported |
USB Video Class 1.1 | Not supported | Supported | Supported |
USB Video Class 1.5 (H.264 video codec) | Not supported | Not supported | Supported |
- 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
[edit]References
[edit]- ^ a b c d e f USB Device Class Definition for Video Devices, Revision 1.5, June 2012.
- ^ "Android 10 no UVC issue".
- ^ "Android 14 December feature drop USB Webcam". 6 December 2023.
- ^ "Linux UVC driver & tools". www.ideasonboard.org.
- ^ "Enable UVC 1.5 device detection".
- ^ Mac OS X 10.4.3 update "comes with native support for UVC devices", NCH Software. Retrieved June 29, 2019.
- ^ Mac OS X 10.4.9 update "Includes iChat support for USB Video Class webcams", Apple Inc. April 8, 2008. Retrieved January 28, 2010.
- ^ The updated USB Video Class (UVC) driver for Windows XP with Service Pack 2 is available.
- ^ USB Video Class Driver Overview. Microsoft. Retrieved July 22, 2014.
- ^ barrygolden. "USB Video Class Driver Overview - Windows drivers". docs.microsoft.com. Retrieved 2020-05-26.
- ^ barrygolden. "Windows 10 UVC camera implementation guide - Windows drivers". docs.microsoft.com. Retrieved 2020-05-26.
- ^ barrygolden. "Microsoft extensions to USB Video Class 1.5 specification - Windows drivers". docs.microsoft.com. Retrieved 2020-05-26.
- ^ "UVC(4) FreeBSD Kernel Interfaces Manual". 2012-08-06. Archived from the original on 2013-09-11. Retrieved 2013-09-10.
- ^ "uvideo(4) - NetBSD Manual Pages". man.netbsd.org.
- ^ "uvideo(4) - OpenBSD manual pages". man.openbsd.org.
- ^ "USB Video Class driver on Solaris". Archived from the original on 2007-08-23. Retrieved 2007-08-23.