hi_mpi_vdec_get_frame
The
The
Description
Fetches the decoded image and input stream of a decoding channel.
During JPEGD image decoding, if hardware decoding fails when this API is called, software decoding is triggered within this API.
Restrictions
- This API fetches the VDEC result, including the input buffer and output buffer.
- For decoding of JPEG(420), JPEG(422), or JPEG(440) input images, if the input width and height are odd numbers, the output width and height are rounded down to the nearest multiples of 2 by default. For decoding of JPEG(444) or JPEG(400) input images, the output width and height are consistent with the input width and height by default. To adjust the width and height alignment mode of the output image, call hi_mpi_vdec_set_jpegd_precision_mode.
Prototype
hi_s32 hi_mpi_vdec_get_frame(hi_vdec_chn chn, hi_video_frame_info *frame_info, hi_vdec_supplement_info *supplement, hi_vdec_stream *stream, hi_s32 milli_sec)
Parameters
Parameter |
Input/Output |
Description |
|---|---|---|
chn |
Input |
Decoding channel ID. |
frame_info |
Output |
Pointer to the information about the decoded image. The decoded output is stored in the device buffer. |
supplement |
Output |
Pointer to the supplementary information about the decoded image. This parameter is reserved. You are advised to set it to NULL. |
stream |
Output |
Pointer to the information about the decoded input stream. |
milli_sec |
Input |
Timeout interval (ms).
NOTE:
In the JPEGD image decoding scenario, the timeout interval configured here refers only to the wait time for obtaining the hardware decoding result, excluding the software decoding time. |
Returns
- 0: success. After the decoded data is obtained successfully, hi_mpi_vdec_release_frame needs to be called to release decoding resources.
Although a success message is returned after this API is called, the data that fails to be decoded may be obtained. To check whether the decoding is successful, see the description of frame_flag under v_frame of the hi_video_frame_info structure.
- Other values: failure. For details, see VDEC/JPEGD Return Codes.
Note:
- If no channel is created during image decoding, the error code HI_ERR_VDEC_UNEXIST is returned.
- If the channel is destroyed in the image fetching process, the error code HI_ERR_VDEC_UNEXIST is returned.
- If the channel is reset in the image fetching process, the error code HI_ERR_VDEC_UNEXIST is returned.
- In non-blocking mode, if the buffer has no decoded images, the error code HI_ERR_VDEC_BUF_EMPTY is returned.
- In timeout mode, if no hardware decoding result is obtained within the specified timeout interval, the error code HI_ERR_VDEC_BUF_EMPTY is returned. In this case, increase the timeout interval or call this API repeatedly to obtain the decoding result.