hi_mpi_vdec_send_stream

Applicability

Product

Supported

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

Description

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.

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 information of the input stream.

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 (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 empty) 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 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.

See Also

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