The Video Mixer has support for up to 17 layers, with an optional logo layer, using a combination of video inputs from either frame buffer (through memory-mapped AXI4 interfaces) or streaming video cores (through AXI4-Stream interfaces). This Figure shows the functional block diagram of the Video Mixer . Functions listed as optional are under Vivado ® Integrated Design Environment (IDE) control, as explained later in this section.
The Video Mixer always has one streaming input layer and one streaming output layer. This is known as main, master, or background layer. The main layer associates with the s_axis_video AXI4-Stream input and m_axis_video AXI4-Stream output.
The main layer input is the bottom-most layer and all other layers are blended on top. Note that there is no programmable Z order for layers. The main layer can be disabled at run-time through the AXI4-Lite interface, by clearing Bit of the Layer Enable (0x0040) Register . When disabled, the main layer does not read from the streaming interface but generates a solid background color as specified by Background Y or R (0x0028) Register , Background U or G (0x0030) Register , and Background V or B (0x0038) Register .
The video format of both the streaming input and output layer is determined by the Video Format field in the Vivado IDE. As video mixing is performed in the RGB domain, note that if the selected video format is YUV 4:4:4, color space conversion (as per the standard BT.601) is done at the input to RGB, and at the output to go back to YUV 4:4:4 again. If the selected video format is YUV 4:2:2 or YUV 4:2:0, additional chroma resampling at the input and output is performed to go from YUV 4:2:2 (or YUV 4:2:0) to YUV 4:4:4 and back.
The Video Mixer can have up to seventeen additional video or graphics sources, each of which can be configured to be an AXI4-Stream or memory mapped AXI4 frame buffer. When using streaming layers, keep in mind that the Video Mixer achieves synchronization of streaming layers to the main output layer by throttling the incoming data if the mixer is not ready to accept this data yet. Also, the mixer has no internal buffering to queue up incoming data.
If a streaming layer is used and enabled, the mixer tries to read from this streaming interface. If no data is present, the mixer will stall until data is present. Enable layers only when they start to receive video input on that layer. If the IP stalls and freezes, apply a hard reset to the core (as the core is still in stalled state regardless if you try to disable the layer).
If a memory mapped AXI4 frame buffer is selected to be a source, then the Video Mixer automatically handles interfacing to memory without the need of an additional AXI VDMA controller.
Like the main layer, every layer has a pre-defined video format that is either RGB, YUV 4:4:4, YUV 4:2:2, or YUV 4:2:0. Optional chroma resampling from YUV 4:2:2, or YUV 4:2:0 to YUV 4:4:4, and optional color space conversion from YUV 4:4:4 to RGB, are performed as mixing is done in the RGB domain. Layers 1 through 7, additionally can be configured to optionally have scaling ability (1x, 2x, or 4x) by the Enable Scaling field in the Vivado IDE. Scaling is implemented by means of pixel and line repeat, and therefore requires an internal line buffer.
The Video Mixer provides an optional logo layer. It blends a logo that is stored in the block RAM on the top-most layer. A programmable color key can be used to make part of the logo transparent. Also, (per pixel) alpha-blending can be used for logo transparency. The logo layer also has the ability for scaling (1x, 2x, or 4x). As the logo is read from the block RAM, no additional line buffer is needed for this. Scaling is implemented by means of pixel and line repeat.