PCIe Multi-channel video mixer

Embien is a recognized leader in working with cutting edge technologies especially related to multimedia and communication. We have pushed the performance of the embedded devices to the most possible limits reliably and repeatedly. As an example of our high-performance state of the art designs, in this casestudy, we will explore how we helped a customer create a multi-channel video mixer platform to stream multiple channels of video over a Tegra K1 based design.

The customer wanting to realize a highly configurable video mixer system approached us based on our prior multi-channel video capture card design expertise. Multiple streams of independent video data are to be mixed and displayed in a single output. Further, many more proprietary computation algorithms are to be added along with other highly specific needs.

Wearable Device Development

Further to our requirement understanding, Embien proposed a system with two processing units - an ARM-based unit for video data generation and an FPGA based unit for video mixing and other custom logic. It was decided to go for NVIDIA Tegra K1 as the ARM processing unit and Altera Arria V as the FPGA platform. To meet the high data transfer requirement, PCIe bus is used for connectivity.

FPGA Video processing

FPGA team developed the complete logic necessary for the implementation of the FPGA Video processing sub-system. Altera's IP is used where ever possible and new ones created when needed. Most of the blocks are connected using the Avalon ST interface. To reduce the load, DMA engines are created in the FPGA that transfers the data between endpoints. Various configuration options are available to select the way the video channels are mixed and displayed. Some of the options are co-ordinated to display the channel data, dimensions of the data, enable/disable the data etc. Alpha blending is also supported so that the videos can be blended seamlessly. Since the video data could be in any color space, suitable conversion mechanisms are developed and incorporated. To achieve very high bandwidth, multiple lanes are supported in the PCIe.

Nvidia Tegra K1 PCIe based GStreamer Plug in

The Tegra K1 unit is developed based on a COTS module to reduce the development time and due to low volume requirements. Based on NVIDIA's Linux4Tegra kernel base, Embien developed the complete software subsystem. Underlying PCIe device driver is created to enable applications to manage the FPGA video logic. Upon detecting the FPGA device, on the PCIe bus the driver presents itself to the userspace. For further ease of use, GStreamer plug-ins are developed on top of this interface, for developing multimedia applications quickly and also to leverage the power of the GStreamer media framework.

The video channel could be created either from decoding a video file like MPEG, WMV, etc or from camera input. Or it could be a complete graphics developed with OpenGL APIs. Either way up to 1080p30 streams can be generated from the Nvidia Tegra K1. Further processing can be done using the CUDA framework on the Nvidia Kepler device. The 192 GPU cores can be run parallel for image processing. The output is available from either of the following - OpenGL, CUDA programming logic, GStreamer, or user allocated. The driver configures the DMA engines to transfer these data from DDR in the Nvidia Tegra K1 platform to the FPGA Video processing platform frame by frame. Once the frame is transferred, the driver flips the frame buffer at the right moment to avoid any tearing effects. User-friendly APIs are provided for easy configuration of the multi-channel video mixer system.

Embien Technologies also developed a full-fledged demo to prove the performance of the overall PCIe FPGA card and Tegra K1 video system especially its throughput and latency. It involved rendering complex designs using OpenGL developed with Eclipse Nsight, post-processing them with the CUDA programming framework, and blending them finally with other video channels. The whole implementation was closely monitored, profiled with advanced benchmarking techniques and refined till phenomenal performance is obtained.

All the requirements of the customer were met in time and extra value was delivered with the extensive demo and intelligent video data management APIs. Feel free to get in touch with us to leverage our best quality and result oriented development processes in your video processing or Nvidia based development needs.