Updated on 2022-03-13 GMT+08:00

VDEC Function

Function and Restriction

The VDEC module is used to decode videos.

  • The VDEC supports the following input formats:

    H.264 BP/MP/HP Level 5.1 YUV420SP encoded streams

    H.265 8-Bit/10-Bit Level 5.1 YUV420SP encoded streams

  • The VDEC supports the following resolution range:

    Maximum resolution: 4096 x 4096; minimum resolution: 128 x 128

  • The VDEC output is HFBC compressed YUV420SP data.

    HFBC is a compressed image format for the VDEC output. In this format, the VDEC has better processing performance.

  • Bad frames or frame loss in the streams may cause VDEC frame loss.
  • The VDEC cannot decode the streams encoded in interlaced scanning mode.
  • The VDEC module does not use the singleton pattern. Therefore, the C APIs provided by the VDEC module are different for those provided by other modules.

Performance Specifications

Scenario

Total Frame Rate

1080p x n channels (2 ≤ n ≤ 16)

480 fps

1080p x 1 channel

240 fps

4K x n channels (2 ≤ n ≤ 16)

120 fps

4K x 1 channel

60 fps

If Matrix is used to orchestrate the application process, when DVPP is used to decode multiple channels of input video streams, because data of each frame in the video streams is associated, each VDEC is required to fixedly correspond to one video stream to ensure the data sequence of each frame in a same video stream. Otherwise, the VDEC in DVPP cannot decode video streams.

  • When multiple video streams are decoded, multiple implementation modes may be available to ensure the data sequence of each frame in the video streams. The following configurations are recommended:
    • In the graph configuration file, configure multiple VDEC engines in the graphs segment. One video stream corresponds to one engine.
    • In the graph configuration file, set thread_num to 1 in the VDEC engine segment. One engine corresponds to one thread.
    • For details about the functions of Matrix and the configuration of the graph configuration file, see Matrix API Reference.
    • One graph (one thread) can correspond to a maximum of 16 video streams.
  • If only one VDEC engine is configured in the graph configuration file and thread_num is set to n (the value of n is the number of video stream channels) during multi-channel video stream decoding, video streams in Matrix may be processed in different threads at different time points. However, in DVPP, one VDEC requires one fixed channel of video stream data. One channel of video stream data corresponds to one thread. In this case, the data sequence of each frame in the video streams may not be ensured during video decoding, as shown in the figure.
    Figure 1 VDEC process