Software Stack - 2023.1 English

Zynq UltraScale+ MPSoC ZCU106 Video Codec Unit Targeted Reference Design User Guide (UG1250)

Document ID
UG1250
Release Date
2023-05-16
Version
2023.1 English

The APU Linux multimedia software stack is divided into an application layer and a platform layer. The application layer is purely implemented in the Linux user-space whereas the platform layer contains middleware (user-space libraries) and operating system (OS) components (kernel-space drivers). This Figure shows a simplified version of the Linux software stack. This chapter focuses on the application layer implemented in the user-space.

A user application based on GStreamer demonstrates the features of the TRD. This Figure shows the software stack present in the TRD. Table: Software Stack Components describes the software components.

Figure 3-6: TRD Software Stack

X-Ref Target - Figure 3-6

X19305-trd-sw-stack-sw-arc.jpg

Table 3-1: Software Stack Components

Component

Description

Kernel drivers

This layer contains the kernel drivers for HDMI, Test Pattern Generator (TPG), IMX274 sensor driver, MIPI CSI-2 RX Subsystem, AMD Video Demosaic, AMD Video Gamma LUT, VPSS Color Space Converter (CSC), AMD Video Processing Subsystem (VPSS Only configuration, 2X configuration), HDMI TX Subsystem, HDMI RX Subsystem, AMD Video Pipeline (XVIPP), Mixer, VCU, AMD PL sound card, AMD Audio Formatter, DisplayPort controller, Sync IP, and the Mali GPU.

User space libraries

User space libraries include the media and v4l2 lib for the video pipeline, GStreamer libraries, lib_decode libraries for VCU, libdrm for the DRM device, libalsa, and Mali user-space libraries for the GPU.

OpenMAX v1.1.2

The OpenMAX integration layer (IL) components for encoder and decoder provides an abstraction for VCU to a user space media framework like GStreamer (a complete, cross-platform solution to play, record, convert, and stream audio and video) [Ref 5] . It implements a standard application programming interface (API) for the user space media framework.

GStreamer framework

GStreamer is the cross-platform/open source multimedia framework, and provides the infrastructure to integrate multiple multimedia components and create pipelines. Various GStreamer plug-ins are used for input, filter, and display components.

The TRD application (vcu_qt) is a multi-threaded Linux application with the following main tasks:

Displays unprocessed video from one or more sources.

Applies a processing function (encode/decode).

Provides a GUI for user input.

Interfaces with lower level layers in the stack to control video pipeline parameters and video data flow.

The application consists of multiple components that have been specifically developed for the VCU TRD (see This Figure ). These interfaces are explained in more detail in subsequent sections:

GUI application (vcu_qt)

GStreamer interface library (vcu_gst_lib)

Video library (vcu_video_lib)

AXI Performance Monitor (APM) library (vcu_apm_lib)

GStreamer command line application (vcu_gst_app)

Figure 3-7: Video Application Interfaces

X-Ref Target - Figure 3-7

X19933-video-app-i-f.jpg