The Video Mixer is a highly configurable IP core that supports blending of up to seventeen video and/or graphics layers plus an additional logo layer into one single output video stream. All layers except the master layer can either be a memory mapped AXI4 interface or AXI4-Stream based. Alpha-blending (global or per pixel) and scaling is supported per layer. Finally, built-in color space conversion between RGB and YUV 4:4:4 and chroma re-sampling between YUV 4:4:4, YUV 4:2:2, and YUV 4:2:0 is optionally available.
The mixer provides an optional logo layer. It blends a logo that is stored in block RAM on the topmost layer. A programmable color key can be used to make part of the logo transparent. Also, alpha-blending (global or per pixel) can be used for logo transparency.
Alpha-blending is the convex combination of two image layers allowing for transparency. Each layer in the mixer has a fixed Z-plane order; or conceptually, each layer resides closer to the observer having a different depth. Thus, the image and the image directly "over" it are blended. The order and amount of blending is programmable in real-time. This can either be done through a global alpha, that is, every pixel uses the same alpha value, or through a per pixel alpha value in case either the RGBA8, BGRA8, or YUVA8 memory video format is selected. Per pixel alpha also supports RGBA and YUVA444 streaming video formats.
Scaling by means of pixel and line repeat is supported, and provides scaling of layers by 1x, 2x, or 4x. This feature might be used to save on memory bandwidth used by a layer, that is, a memory layer can read in a 1,920 × 1,080 frame buffer while scaling it up on-the-fly to a 3,840 × 2,160 resolution.
The Video Mixer supports parallel processing of multiple pixels per clock cycle allowing support for resolutions beyond 1080p60 with up to three color components, each of 8, 10, 12, or 16 bits.