hi_mpi_vdec_send_stream

Applicable Products

Product

Supported

Ascend 950PR / Ascend 950DT

√

Atlas A3 training products / Atlas A3 inference products

√

Atlas A2 training products / Atlas A2 inference products

√

Atlas 200I/500 A2 inference products

√

Atlas inference products

√

Atlas training products

☓

Function

Feeds the stream and decoding result buffer to a decoding channel.

During decoding, the input and output buffers can be freed only after the result is obtained by calling hi_mpi_vdec_get_frame.

Prototype

hi_s32 hi_mpi_vdec_send_stream(hi_vdec_chn chn, const hi_vdec_stream *stream, hi_vdec_pic_info *vdec_pic_info, hi_s32 milli_sec)

Parameters

Parameter

Input/Output

Description

chn

Input

Decoding channel ID.

Ascend 950PR / Ascend 950DT : The value range of this parameter is [0, 256). The maximum number of channels is 256 for the JPEGD function.

Atlas A3 training products / Atlas A3 inference products : The value range of this parameter is [0, 256). The JPEGD and VDEC functions share the same channels, and the maximum number of channels is 256. Among them, a maximum of 256 JPEGD decoding channels and 32 VDEC decoding channels are supported.

Atlas A2 training products / Atlas A2 inference products : The value range of this parameter is [0, 256). The JPEGD and VDEC functions share the same channels, and the maximum number of channels is 256. Among them, a maximum of 256 JPEGD decoding channels and 32 VDEC decoding channels are supported.

Atlas 200I/500 A2 inference products : The value range of this parameter is [0, 128). The JPEGD and VDEC functions share the same channels, and the maximum number of channels is 128.

Atlas inference products : The value range of this parameter is [0, 256). The JPEGD and VDEC functions share the same channels, and the maximum number of channels is 256.

stream

Input

Pointer to the input stream information.

The configured addr must be a buffer address on the device.

vdec_pic_info

Input

Pointer to the information of the output image.

milli_sec

Input

Timeout interval, in ms.
  • –1: blocking mode
  • 0: non-blocking mode
  • > 0: timeout interval (timeout mode). The timeout interval varies with the operating system. The deviation is generally within a time slice of an operating system. For example, if the time slice of an operating system is 4 ms and the value of milli_sec is set to 1, the actual timeout interval ranges from 1 ms to 5 ms. When the CPU load is high, the timeout interval may fluctuate.

Returns

Restrictions

  • For details about the input and output buffer requirements, input stream format, and output image format for video decoding, see VDEC Functions and Restrictions.
  • For details about the input and output buffer requirements, input image format, and output image format for image decoding, see JPEGD Functions and Restrictions.
  • Ensure that the channel has started receiving streams by calling hi_mpi_vdec_start_recv_stream. Otherwise, the error code HI_ERR_VDEC_NOT_PERM is returned. If stream receiving is stopped in the buffer feeding process, the error code HI_ERR_VDEC_NOT_PERM is returned.
  • Ensure that a channel has been created. Otherwise, the error code HI_ERR_VDEC_UNEXIST is returned. If the channel is reset or destroyed in the buffer feeding process, the error code HI_ERR_VDEC_UNEXIST is returned.
  • The buffer feeding mode follows the mode set in the decoding channel creation call. Currently, only the frame mode is supported. In this mode, a complete frame must be fed in every call to this API. Otherwise, a decoding error occurs.
  • Empty packets with end_of_stream set to 0 (the stream length is 0 or the stream address is an empty value) cannot be fed, and attempts to do so result in errors. Feed an empty packet with end_of_stream set to 1 only when the stream has been fed completely. In this case, the decoder finishes stream decoding and outputs all result images. Set end_of_stream to 0 in other cases.
  • When the stream buffer is empty but it cannot accommodate the current stream, the error code HI_ERR_VDEC_ILLEGAL_PARAM is returned.
  • In non-blocking mode, if the stream buffer is full, the error code HI_ERR_VDEC_BUF_FULL is returned.
  • In timeout mode, if the stream fails to be fed within the specified timeout interval, the error code HI_ERR_VDEC_BUF_FULL is returned.
  • For video decoding, if need_display in hi_vdec_stream is set to 0, the stream decoding result is not written to the output buffer configured in hi_vdec_pic_info. In this case, the output buffer address can be set to NULL. You still need to free the output buffer unless the output buffer address is set to NULL. The hi_mpi_vdec_get_frame call can still return information about hi_video_frame_info and hi_vdec_stream.

Reference

For details about the API call sequence and example, see JPEGD and VDEC.