At this stage of the imaging pipeline the pixel data is represented in full-range YCbCr 4:4:4 color space with 12-bit precision per component.
The purpose of this block is to apply UVC Brightness adjustment to the image by modifying the luma component while preserving chroma.
The UVC Brightness control is described in terms of an HSL-based model in UVC Brightness
Conceptually, UVC Brightness corresponds to a uniform additive offset applied to perceived lightness.
In a YCbCr pipeline, this behavior maps directly to an additive offset applied to the luma (Y) component, while chroma components remain unchanged.
This document specifies that mapping explicitly for FPGA implementation.
The input consists of YCbCr pixels with the following properties:
\[ Y12 \in [0..4095]\\ C_b12 \in [0..4095]\text{, neutral at }2048\\ C_r12 \in [0..4095]\text{, neutral at }2048 \]
All values are unsigned 12-bit integers using full-range (computer-range) coding.
The output format is identical to the input format:
\[ Y12^{\text{bright}} \in [0..4095]\\ C_b12^{\text{bright}} = C_b12\\ C_r12^{\text{bright}} = C_r12 \]
Only the luma component is modified by the brightness stage.
The UVC Brightness control provides a signed brightness offset value \(B\), defined and scaled as specified in UVC Brightness
Brightness is applied as a signed additive offset to the luma component:
\[ Y12^{\text{bright}} = clamp12(Y12 + B) \]
Where:
The chroma components are passed through unchanged:
\[ C_b12^{\text{bright}} = C_b12\\ C_r12^{\text{bright}} = C_r12 \]