NVIDIA Jetson Xavier - HDAV Subsystem Video Image Compositor (VIC)
The Video Image Compositor (VIC) implements various 2D image and video operations in a power-efficient manner. It handles various system UI scaling, blending, and rotation operations, video post-processing functions needed during video playback, and advanced de-noising functions used for camera capture.
Features
- Color Decompression
- High-quality De-interlacing
- Inverse Teleciné
- Temporal Noise Reduction
- New Bilateral Filter as a spatial filter
- Improved TNR3 algorithm
- Scaling
- Color Conversion
- Memory Format Conversion
- Blend/Composite
- 2D Bit BLIT operation
- Rotation
- Geometry transform processing
- Programmable 9-points controlled warp patch for distortion correction
- Real-time on-the-fly position generation from sparse warp map surface
- Pincushion/barrel/moustache distortion correction
- Distortion correction of 180 and 360-degree wide FOV lens
- Scene perspective orientation adjustment with IPT
- Full warp map capability
- Non-fixed Patch size with 4x4 regions
- External Mask bit map surface
NVIDIA hardware accelerated GStreamer plugins
Plugin | Description |
---|---|
nvcompositor | Composite multiple video frames |
nvvidconv | Video color space conversion & scaler |
Multimedia API
The Video Image Compositor device node is /dev/nvhost-vic
. The Multimedia API provides the NvVideoConverter
and NvBuffer
helper classes. The examples located in ~/tegra_multimedia_api/samples/07_video_convert
and ~/tegra_multimedia_api/samples/12_camera_v4l2_cuda
provide more information on how to use this component with NvVideoConverter
and NvBuffer
respectively.
Capture Paths
Basically, there are two possible capture paths on the Jetson Xavier. One that goes through the Video Image Compositor(VIC) and the other one through the Image Signal Procesor(ISP). "Scalable Camera Framework" uses the ISP block, "Direct V4L2 Interface" uses the VIC [1]. For more information check the L4T Documentation->[Sensor Driver Programming Guide]