vdec_create_chn
Applicability
|
Product |
Supported |
|---|---|
|
Atlas 350 Accelerator Card |
√ |
|
|
√ |
|
|
√ |
|
|
x |
|
|
√ |
|
|
√ |
Description
Creates a decoding channel based on the configured channel attributes.
Prototype
- C Prototype
1hi_s32hi_mpi_vdec_create_chn(hi_vdec_chnchn,consthi_vdec_chn_attr*attr)
- Python Function
1ret=acl.himpi.vdec_create_chn(chn,attr)
Parameters
|
Parameter |
Description |
|---|---|
|
chn |
Int, decoding channel ID.
NOTE:
For Ascend virtual instances on the For Ascend virtual instances on the For the To view the computing power specifications of Ascend virtual instances in different scenarios, run the npu-smi info -t template-info command on the server where AI processor is installed. |
|
attr |
Dict, dictionary of decoding channel attributes. For details, see hi_vdec_chn_attr.
|
Return Value
|
Return Value |
Description |
|---|---|
|
ret |
Int, error code.
|
Restrictions
- The channel ID of a single device must not be greater than the maximum channel ID.
- Before this API call, ensure that a decoding channel has not been created yet or has been destroyed. Otherwise, a failure is returned.
- If the OS memory is insufficient, the error code HI_ERR_VDEC_NO_MEM is returned. In this case, you can expand the OS memory as needed.
- If the H.264 stream to be decoded has B frames or the H.265 stream to be decoded supports temporal motion vector prediction (sps_temporal_mvp_enabled_flag = 1), you need to set temporal_mvp_en to 1 when creating a channel. In addition, you need to allocate a video buffer (VB) for outputting the temporal motion vector (Tmv) information of each frame. The size of the VB is much smaller than that of the image VB. The number of required VBs is RefFrameNum + 1. The specific size can be obtained by calling the acl.himpi.vdec_get_tmv_buf_size function, otherwise, errors such as artifacts may occur during decoding.
- For H.264 and H.265 decoding, the minimum VB allocation per decoding channel is the sum of the number of reference frames and the number of display frames plus 1. For JPEG decoding, the minimum VB allocation per decoding channel is the number of display frames plus 1. The requested VB allocation varies according to the decode protocol and can be queried by using the acl.himpi.vdec_get_pic_buf_size call.
- To skip decoding B-frames in H.264 streams or skip decoding H.265 streams with temporal MVP support (sps_temporal_mvp_enabled_flag = 1), set temporal_mvp_en to 0 for the created channel. In this case, no TMV information is output, and therefore you do not need to allocate a TMV VB pool, which saves memory.
- Set the requested frame VB size (frame_buf_size) and count (frame_buf_cnt) as well as the requested TMV VB size (tmv_buf_size) based on the stream to be decoded. The decoder allocates private VB pools based on these configurations.
- As long as the allocated frame buffer and TMV buffer are large enough, the decoding channel can decode a stream with any resolution in the valid range. The channel width and height are related only to the size of the stream buffer and SCD buffer.