hbVPImage

typedef struct hbVPImage {
  uint8_t imageFormat;
  uint8_t imageType;
  int32_t width;
  int32_t height;
  int32_t stride;
  void *dataVirAddr;
  uint64_t dataPhyAddr;
  void *uvVirAddr;
  uint64_t uvPhyAddr;
  int32_t uvStride;
} hbVPImage;

图片结构体。只支持使用BPU内存。

图像通道说明:以 HB_VP_IMAGE_FORMAT_RGB 为例,其通道数为3时,imageType为 HB_VP_IMAGE_TYPE_U8C3 ,当通道数为4时,由于对齐的要求,数据中存在额外的内存, 此时需要指定imageType为 HB_VP_IMAGE_TYPE_U8C4 (RRR* GGG* BBB*)。

  • 成员

    成员名称描述
    imageFormat图片格式。
    imageType图片类型。
    width图片的像素宽度。
    height图片的像素高度。
    stride图片的像素偏移量,以字节数量表示。
    dataVirAddr图片在arm侧的逻辑地址。
    dataPhyAddr图片的物理地址。
    uvVirAddr图片格式为NV12时,uv数据逻辑地址。
    uvPhyAddr图片格式为NV12时,uv数据物理地址。
    uvStride图片格式为NV12时,uv数据的偏移量,以字节数量表示。

偏移量说明:stride 范围在[bytes_per_pixel * widthbytes_per_pixel * MAX_IMAGE_WIDTH ],并且满足 bytes_per_pixel对齐, 其中 bytes_per_pixel 表示每个像素的字节数,其大小取决于图像格式 imageTypewidth 表示图像的像素宽度,MAX_IMAGE_WIDTH 表示图像像素的最大宽度。 当图像格式为NV12时, uvStride 范围在[2*uv_widthMAX_IMAGE_WIDTH],并且必须为偶数。在使用pyramid和gdc硬件时,stride和uvStride的值需要在大于等于width的同时满足16字节对齐的要求。

当图片格式为NV12时,如果是8bit,imageType需要设置为HB_VP_IMAGE_TYPE_U8C1,如果是10bit或12bit,imageType需要设置为HB_VP_IMAGE_TYPE_U16C1,表示通道数据对齐到16bit存储。 特别地,如果 imageFormat 格式设置为 HB_VP_IMAGE_FORMAT_NV12_Y10C8_MSBHB_VP_IMAGE_FORMAT_NV12_Y12C8_MSB,表示只有Y分量的像素宽度是10bit或12bit,并对齐到16bit存储,UV分量的像素宽度仍然是8bit。 当图片为RGB_P、BGR_P、YUV444_P等多平面格式时,图片的imageType需要根据元素实际的数据类型设置为对应的单通道类型,例如S16三通道多平面的数据请选择HB_VP_IMAGE_TYPE_S16C1