hbVPVideoDecode

typedef struct { uint8_t pixelFormat; uint32_t inBufSize; uint32_t outBufCount; hbVPVideoType videoType; } hbVPVideoDecParam;

Video解码的参数。

  • 成员

    成员名称描述
    pixelFormat输入图像的像素格式。当前支持 HB_VP_IMAGE_FORMAT_NV12HB_VP_IMAGE_FORMAT_YUV420 格式。
    inBufSizeVPU内部输入缓冲区大小,满足1024对齐。取值范围[1024, 2^31-1],默认值10 * 1024 * 1024。
    outBufCountVPU内部输出缓冲区个数。取值范围[1,31],默认值5。
    videoType编码协议的类型。
int32_t hbVPGetDefaultVideoDecParam(hbVPVideoDecParam *param);

获取解码器默认的解码参数。

  • 参数
    • [in] param 解码参数指针。
  • 返回值
    • 返回 0 则表示API成功执行,否则执行失败。
int32_t hbVPCreateVideoDecContext(hbVPVideoContext *context, hbVPVideoDecParam const *param);

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

  • 参数
    • [out] context 解码器上下文指针。
    • [in] param 解码参数指针。
  • 返回值
    • 返回 0 则表示API成功执行,否则执行失败。
  • 接口限制说明
    • VPU最高支持创建32路编码或解码的上下文。
    • 解码器首帧必须是包含VPS+SPS+PPS帧头信息的IDR帧,否则不能正常解码。
    • 解码器不支持包含后向参考帧的B帧码流解码。
int32_t hbVPReleaseVideoDecContext(hbVPVideoContext context);

释放解码器上下文API。

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

调用VPU解码API。

  • 参数
    • [out] taskHandle 任务句柄,负责算子与UCP架构的交互。
    • [in] srcBuf 存放H.264或者H.265数据的内存地址指针。
    • [in] context 解码器的上下文指针。
  • 返回值
    • 返回 0 则表示API成功执行,否则执行失败。
  • 接口限制说明
    • 仅支持使用异步方式创建任务。
int32_t hbVPGetVideoDecOutputBuffer(hbUCPTaskHandle_t taskHandle, hbVPArray *outBuf);

获取解码数据buffer的API。

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