i.MX8 - Multimedia - VPU

From RidgeRun Developer Wiki


Previous: Multimedia/GPU/Vulkan Index Next: Multimedia/VPU/Encoding System






General Description

The Video Processing Unit (VPU) hardware performs all of the codec computation and most of the bitstream parsing/packeting. The software takes advantage of less control and effort to implement a complex and efficient multimedia codec system.

VPU Encoding & Decoding Support
Product Family Video Encode Resolution (Top Codecs) Video Decode Resolution (Top Codecs)
i.MX8
  • 1080p @ 60fps
    - h.264
  • 4K:
    - h.265
    - h.264
i.MX 8M
  • 1080p @ 30fps
    - h.264
  • 4K @ 60fps with High Dynamic Range:
    - h.265
    - VP9
  • 4K @ 30fps
    - h.264
    - VP8
i.MX 8M Mini
  • 1080p @ 60fps
    - h.264
  • 1080p @ 60fps:
    -h.265
    - VP9
    - h.264
    - VP8
i.MX 8X
  • 1080p @ 30fps
    - h.264
  • 4K:
    - h.265
  • 1080p @ 60fps
    - h.264
    - VP8

Video Decoding System

The VPU supports video decoding for various video format using the Hantro G2 + G1 hardware based decoders.

OpenMAX Integration Layer API

OpenMAX IL API it's a standardized multimedia component interface that allows easier and faster integration of multimedia components into a multimedia system. The interface itself is independent of the execution environment and operating system. However, the overall performance and capabilities of the decoders are system dependent.

The decoder is implemented in a Linux environment. The Bellagio OMX IL Core for Linux is used for development and testing purposes. The OMX API is implemented on top of the Hantro 8170/8190/9170/9190/G1/G2 decoder AVS, H.264, H.263, HEVC, MPEG-2, MPEG-4, VC-1, RV, DivX, VP6, VP8, VP9, JPEG, WebP, and post-processing APIs.

The API is developed on a Linux environment and the implementation uses an Operating System Abstraction Layer (OSAL) to isolate all OS specific functionality. The following diagram shows the blocks of the OpenMAX video decoder system.

Image source: https://www.nxp.com

Hantro Capabilities

The Hantro 8170/8190/9170/9190/G1/G2 hardware based decoders are able to decode: H.264, H.263, MPEG-2, MPEG-4, VC-1, RealVideo (supported in 9170/9190/G1), DivX (supported in 9170/9190/G1), VP6 (supported in 9190/G1), AVS (supported in G1), VP8 (supported in G1), HEVC (supported in G2) and VP9 (supported in G2) standards video streams, JPEG standard still images and WebP (supported in G1) still images.

VPU G1

The 8170/8190/9170/9190/G1/G2 decoder has two input ports and one output port:

  • The first input port format is for compressed AVS, H.264, H.263, HEVC, MJPEG, MPEG-2, MPEG-4, VC-1, RV, DivX, VP6, VP8, VP9, JPEG or WebP stream.
  • The second input port is used for the post-processing alpha blending feature and its format is uncompressed YUV or RGB video data.
  • The output port format is uncompressed YUV/RGB video data. For post-processor input, the port format is uncompressed YUV video data.

VPU G2

The decoder is able to decode HEVC standard Main/Main 10 profile compatible video streams, and Google's VP9 Profile 0 compatible video streams. The decoder conforms to the HEVC Main, Main 10 profiles and can decode streams up to level 5.1. The maximum supported resolution is 4096 x 2304 based on RTL synthesis.

Compressed format

G2 decoder supports compressed tiled output when reference buffer compression (RFC) is enabled when synthesis and user allow compressed reference frame output directly. Reference frame compression is a feature added in G2 decoder to compress frame buffer so that the bandwidth of storing/loading reference frame can be reduced, especially when the resolution of the decoded stream is of high definition.


Previous: Multimedia/GPU/Vulkan Index Next: Multimedia/VPU/Encoding System