VENC Functions and Restrictions
The
For the
For the
Function Usage
Video Encoder (VENC) encodes YUV420SP NV12/NV21 8-bit images into H.264/H.265 video streams.
Resolution Restrictions
- Input image resolution range
Version
Resolution Range
Atlas inference products The width and height range from 128 to 4096. For H.264 streams, the maximum resolution must not exceed 4096 x 2304.
Atlas 200I/500 A2 inference products 114 x 114 to 8192 x 8192
- Output stream resolution:
VENC only encodes images and does not change the image resolution. Therefore, the resolution of the output image is the same as that of the input image.
Restrictions on Buffer Allocation and Freeing APIs
For details about the input buffer size, see the formula in Table 1. The output buffer is managed by the system, and therefore does not need to be allocated or freed by the user.
Version |
Buffer Allocation/Freeing API |
|---|---|
During VENC video encoding, call acl.himpi.dvpp_malloc\acl.himpi.dvpp_free to allocate or free the input buffer on the device. The buffer lifetime is managed by the user. |
|
During VENC video encoding, the following two types of buffer allocation/freeing APIs are supported:
acl.himpi.dvpp_malloc allocates a dedicated buffer for processing media data. However, the address space of the dedicated buffer is limited. If buffer planning is cared or buffer resources are limited, you are advised to allocate buffer by calling acl.rt.malloc. |
|
In the VENC scenario, the following two types of buffer allocation/freeing APIs are supported for storing input image data:
In the VENC scenario, if non-input image data (such as the QpMap table information) is stored, only acl.himpi.dvpp_malloc/acl.himpi.dvpp_free can be used to allocate and free the input buffer on the device, respectively. The lifecycle of the buffer is managed by the user. Note: acl.himpi.dvpp_malloc allocates a dedicated buffer for processing media data. However, the address space of the dedicated buffer is limited. If buffer planning is cared or buffer resources are limited, you are advised to allocate buffer by calling acl.rt.malloc. |
Restrictions on Stream/Image Formats, Width and Height Alignment, and Buffers
For details about the definition of the input image format, see hi_pixel_format. For details about the concepts such as width stride and height stride, see Terminology.
Input Format |
Input Width and Height |
Input Width Stride, Height Stride, and Buffer Size |
Output Format |
|---|---|---|---|
YUV420SP NV12 8-bit |
Width: Must be a multiple of 2. Height: Must be a multiple of 2. |
Width stride: Round up the width to the nearest multiple of 16. The height stride does not need to be configured. Buffer size (in bytes) = Width stride x Height stride x 3/2 |
|
YUV420SP NV21 8-bit |