Skip to content
Kin Wei Lee edited this page Sep 24, 2020 · 3 revisions

Welcome to the v4l2-mmal-uvc wiki!

The Raspberry Pi has a CSI-2 camera interface port and for this project it is connected to a HDMI to CSI-2 converter. This allows an HDMI source to be used by the Raspberry Pi. The idea of this project was for the HDMI source to appear as a USB webcam. This HDMI converter (TC358743), unfortunately, outputs the wrong video format for the UVC standard. UVC requires a YUYV raw format however TC358743 outputs either UYVY or RGB24. The conversion can be achieved in using gstreamer or ffmpeg however gstreamer demands a high CPU usage on a relatively low power Pi Zero.

UVC

UVC or USB Video Class is a USB specification created by the USB Implementers Forum (USB-IF) and it is intended to standardize the video streaming functionality on the USB. The aim is to allow a range of video centric devices, such as webcams and digital cameras, which have a USB interface to conform to a common standard.

MMAL

MMAL is a Multi-Media Abstraction Layer API for Rasberry Pi's Broadcom SOC. It provides an abstraction over hardware that is capable of multi-media functionality. Using hardware to process video has the advantage of reducing CPU resources and power consumption.

V4L2

V4L2 is video API for linux, and is designed to support a wide variety of devices.

##V4l2-MMAL-UVC And so v4l2-mmal-uvc was developed to integrate these three aspects to hardware encode RGB24 or UYVY formats directly into UVC so that a Pi Zero can be used as a webcam.

The original code was developed by Laurent Pinchart uvc-gadget Bhupesh Sharma uvc-gadget patches 6by9 v4l2-mmal

Clone this wiki locally