The VCU2 software stack has a layered architecture programmable at several levels of abstraction available to software developers, as shown in the following figure. The application interfaces from high level to low level are:
- GStreamer
- OpenMAX Integration Layer
- VCU2 Control Software
GStreamer is a cross‑platform open-source multimedia framework. GStreamer provides the infrastructure to integrate multiple multimedia components and create pipelines. The GStreamer plugin is implemented using OpenMAX Integration Layer APIs.
The OpenMAX Integration Layer API defines a royalty‑free standardized media component interface to enable developers and platform providers to integrate and communicate with multimedia codecs implemented in hardware or software.
The VCU2 Control Software is the lowest level software visible to VCU2 application developers.
All VCU2 applications must use the AMD provided VCU2
Control Software, directly or indirectly. The VCU2 Control Software includes custom kernel modules, custom user space library, and the
ctrlsw_encoder and ctrlsw_decoder applications. The OpenMAX IL (OMX) layer is integrated on
top of the VCU2 Control Software. VCU2 Control Software is mostly running on the
MCU, with the kernel driver merely implementing an API Proxy.
User applications can use the layer or layers of the VCU2 software stack that are most appropriate to their requirements.
OpenCV VCU2 Support
OpenCV is supported through the Control Software API and through the OpenCV module vcucodec.
The vcucodec module is built as part of the OpenCV build (facilitated through Yocto build).
The repository is here:
https://github.com/Xilinx/opencv_modules_xlnx