InUVC (USB Video Class),Input Terminal,Output Terminal, andCamera Terminalare entities in theVideoControl (VC) Interface. They describe the logical video data path inside a camera device.
Think of the UVC topology as a graph:
Camera Sensor │ ▼ Camera Terminal (Input Terminal) │ ▼ Processing Unit │ ▼ Output Terminal │ ▼ USB Host1. Input Terminal (IT)
AnInput Terminalrepresents a source of video data entering the UVC function.
Examples:
Camera sensor
TV tuner
HDMI capture input
Composite video input
Descriptor type:
VC_INPUT_TERMINALKey fields:
bTerminalID wTerminalTypeCommon terminal types:
Terminal Type | Value | Meaning |
|---|---|---|
Camera | 0x0201 | Camera sensor |
Media Transport | 0x0202 | Digital video source |
Vendor-specific | Various | Custom source |
Example:
Input Terminal ID = 1 Type = Camerameans:
Video originates from a camera sensor.
2. Camera Terminal (CT)
ACamera Terminalis actually aspecialized Input Terminal.
In the descriptor:
wTerminalType = TT_CAMERA (0x0201)When the terminal type is0x0201, the Input Terminal becomes aCamera Terminal.
Camera-specific controls
Camera Terminal provides camera-related controls:
Exposure Time
Focus
Zoom
Iris
Pan
Tilt
Roll
Example UVC controls:
CT_EXPOSURE_TIME_ABSOLUTE_CONTROL CT_FOCUS_ABSOLUTE_CONTROL CT_ZOOM_ABSOLUTE_CONTROLTypical UVC webcam topology:
Camera Terminal │ ▼ Processing Unit │ ▼ Output TerminalDescriptor example:
Camera Terminal ID = 1 Terminal Type = 0x0201The host recognizes:
This device contains a controllable camera.
3. Output Terminal (OT)
AnOutput Terminalrepresents where the video stream leaves the internal UVC topology.
Descriptor type:
VC_OUTPUT_TERMINALFor a USB webcam:
Output Terminal ↓ USB Streaming Interface ↓ Host PCTypical type:
TT_STREAMING = 0x0101Meaning:
Video is sent to a USB streaming endpoint.
Example:
Output Terminal ID = 3 Source ID = 2 Type = Streamingwhere:
Camera Terminal(ID=1) │ ▼ Processing Unit(ID=2) │ ▼ Output Terminal(ID=3)Typical Webcam Example
Most UVC cameras use:
Input Terminal (Camera) │ ▼ Processing Unit │ ▼ Output Terminal (USB Streaming)Descriptor topology
Camera Terminal ID = 1 Processing Unit ID = 2 Source = 1 Output Terminal ID = 3 Source = 2Graphically:
[Camera Terminal] │ ▼ [Processing Unit] │ ▼ [Output Terminal] │ ▼ USB Video StreamUVC Capture Dongle Example
For an HDMI capture card:
HDMI Input │ ▼ Input Terminal │ ▼ Processing Unit │ ▼ Output Terminal │ ▼ USB HostHere the Input Terminal isnota Camera Terminal.
Input Terminal Type != 0x0201because the source is HDMI, not an image sensor.
How the Host Uses Them
When a PC enumerates a UVC device, it reads the VideoControl descriptors and builds a topology:
Entity 1 : Camera Terminal Entity 2 : Processing Unit Entity 3 : Output TerminalThe host then knows:
Where video originates.
What controls are available (exposure, focus, zoom, etc.).
Where the video stream exits toward the streaming interface.
For example, on Linux:
v4l2-ctl --allshows controls that come from:
Camera Terminal (focus, exposure, zoom)
Processing Unit (brightness, contrast, saturation)
Summary
Entity | Purpose | Typical Type |
|---|
Entity | Purpose | Typical Type |
|---|---|---|
Input Terminal | Video source entering the UVC graph | Camera, HDMI, TV tuner |
Camera Terminal | Specialized Input Terminal for an image sensor |
|
Output Terminal | Video destination leaving the graph |
|
Processing Unit | Image processing block between them | Brightness, contrast, hue, etc. |
The most common webcam topology is:
Camera Terminal ↓ Processing Unit ↓ Output Terminal ↓ USB Streaming Interface ↓ Hostwhere theCamera Terminaldescribes the sensor and camera controls, and theOutput Terminalconnects the processed video stream to the USB host.