hbVPJPEGDecode

typedef struct {
  uint8_t imageFormat;
  uint32_t outBufCount;
  uint64_t backend;
} hbVPJPEGDecParam;

用于JPEG解码的参数。

  • 成员

    成员名称描述
    imageFormat输出图像的格式。 当前支持 HB_VP_IMAGE_FORMAT_NV12HB_VP_IMAGE_FORMAT_YUV420HB_VP_IMAGE_FORMAT_YUV444HB_VP_IMAGE_FORMAT_YUV444_P 格式。
    outBufCountJPU内部输出缓冲区个数。取值范围[1, 31],推荐值5。
    backend指定JPEG解码任务运行的后端。仅支持设置为单个具体核的后端,不支持多后端或 ANY 类型后端。
int32_t hbVPCreateJPEGDecContext(hbVPJPEGContext *context, hbVPJPEGDecParam const *param);

创建解码器上下文API,创建前需要提前将context初始化为nullptr。

  • 参数
    • [out] context 解码器上下文。
    • [in] param 解码参数。
  • 返回值
    • 返回 0 则表示API成功执行,否则执行失败。
  • 接口限制说明
    • 由于硬件限制,编码存在对齐要求,解码后的数据也会按照编码时的对齐要求进行解码。具体来说,编码时采用的对齐方式(16x168x8)会直接决定解码后的分辨率,使其对齐到 16x168x8 的倍数。
    • JPU每个核最高支持创建64路编码或解码的上下文。
    • 仅支持8bit解码。
int32_t hbVPReleaseJPEGDecContext(hbVPJPEGContext context);

释放解码器上下文API。

  • 参数
    • [in] context 解码器上下文。
  • 返回值
    • 返回 0 则表示API成功执行,否则执行失败。
int32_t hbVPJPEGDecode(hbUCPTaskHandle_t *taskHandle,
                       hbVPArray const *srcBuf,
                       hbVPJPEGContext context);

调用JPEG解码API。

  • 参数
    • [out] taskHandle 任务句柄,负责算子与UCP架构的交互。
    • [in] srcBuf 输入JPEG文件。
    • [in] context 解码器上下文。
  • 返回值
    • 返回 0 则表示API成功执行,否则执行失败。
  • 接口限制说明
    • JPEG解码时,若解码格式为 HB_VP_IMAGE_FORMAT_YUV444,要求输入的JPEG数据的格式为 HB_VP_IMAGE_FORMAT_YUV444 或者 HB_VP_IMAGE_FORMAT_YUV444_P
    • JPEG解码时,支持的分辨率范围为 32x328192x8192,输入图像的大小范围为 [1024, 10 * 1024 * 1024] 字节。
    • 仅支持异步方式创建任务。
    • 为了避免系统资源浪费并提高JPU解码性能,建议复用输入地址。
int32_t hbVPGetJPEGDecOutputBuffer(hbVPImage *outImg, 
                                   hbUCPTaskHandle_t taskHandle);

调用JPEG解码API。

  • 参数
    • [out] outImg 输出YUV图像。
    • [in] taskHandle 任务句柄,负责算子与UCP架构的交互。
  • 返回值
    • 返回 0 则表示API成功执行,否则执行失败。
  • 接口限制说明
    • 图像缓冲区 outImg 由JPU内部申请。
    • 当任务成功完成后,输出缓冲区中的数据有效;在任务释放阶段,输出缓冲区将被释放。