npu_common.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /**********************************************************************************
  2. *
  3. * Copyright (c) 2019-2020 Beijing AXera Technology Co., Ltd. All Rights Reserved.
  4. *
  5. * This source file is the property of Beijing AXera Technology Co., Ltd. and
  6. * may not be copied or distributed in any isomorphic form without the prior
  7. * written consent of Beijing AXera Technology Co., Ltd.
  8. *
  9. **********************************************************************************/
  10. #ifndef __AX_NPU_COMMON_H__
  11. #define __AX_NPU_COMMON_H__
  12. #include "./ax_base_type.h"
  13. #include "./ax_global_type.h"
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. #define AX_ID_NPU_SMOD_NPU_CV 0x11
  18. #define AX_ERR_NPU_CV_SUCCESS 0x00
  19. #define AX_ERR_NPU_CV_INVALID_PARAM AX_DEF_ERR(AX_ID_NPU, AX_ID_NPU_SMOD_NPU_CV, 0x81)
  20. #define AX_ERR_NPU_CV_UNSUPPORT_FUNCTION AX_DEF_ERR(AX_ID_NPU, AX_ID_NPU_SMOD_NPU_CV, 0x82)
  21. #define AX_ERR_NPU_CV_NOT_INIT AX_DEF_ERR(AX_ID_NPU, AX_ID_NPU_SMOD_NPU_CV, 0x83)
  22. #define AX_ERR_NPU_CV_INVALID_SEMANTIC_HANDLE AX_DEF_ERR(AX_ID_NPU, AX_ID_NPU_SMOD_NPU_CV, 0x84)
  23. #define AX_ERR_NPU_CV_INFERENCE_FAIL AX_DEF_ERR(AX_ID_NPU, AX_ID_NPU_SMOD_NPU_CV, 0x85)
  24. #define AX_ERR_NPU_CV_INFERENCE_CANCELLED AX_DEF_ERR(AX_ID_NPU, AX_ID_NPU_SMOD_NPU_CV, 0x86)
  25. #define AX_ERR_NPU_CV_INVALID_HDR_MODE AX_DEF_ERR(AX_ID_NPU, AX_ID_NPU_SMOD_NPU_CV, 0x87)
  26. #define AX_ERR_NPU_CV_TASK_NOT_EXIST AX_DEF_ERR(AX_ID_NPU, AX_ID_NPU_SMOD_NPU_CV, 0x88)
  27. #define AX_ERR_NPU_CV_TASK_RUNNING AX_DEF_ERR(AX_ID_NPU, AX_ID_NPU_SMOD_NPU_CV, 0x89)
  28. typedef enum _AX_NPU_CV_ErrorCode {
  29. AX_NPU_CV_SUCCESS = AX_ERR_NPU_CV_SUCCESS,
  30. AX_NPU_CV_INVALID_PARAM = AX_ERR_NPU_CV_INVALID_PARAM,
  31. AX_NPU_CV_UNSUPPORT_FUNCTION = AX_ERR_NPU_CV_UNSUPPORT_FUNCTION,
  32. AX_NPU_CV_NOT_INIT = AX_ERR_NPU_CV_NOT_INIT,
  33. AX_NPU_CV_INVALID_SEMANTIC_HANDLE = AX_ERR_NPU_CV_INVALID_SEMANTIC_HANDLE,
  34. AX_NPU_CV_INFERENCE_FAIL = AX_ERR_NPU_CV_INFERENCE_FAIL,
  35. AX_NPU_CV_INFERENCE_CANCELLED = AX_ERR_NPU_CV_INFERENCE_CANCELLED,
  36. AX_NPU_CV_INVALID_HDR_MODE = AX_ERR_NPU_CV_INVALID_HDR_MODE,
  37. AX_NPU_CV_TASK_NOT_EXIST = AX_ERR_NPU_CV_TASK_NOT_EXIST,
  38. AX_NPU_CV_TASK_RUNNING = AX_ERR_NPU_CV_TASK_RUNNING
  39. } AX_NPU_CV_ErrorCode;
  40. typedef enum _AX_NPU_CV_FrameDataType {
  41. AX_NPU_CV_FDT_UNKNOWN = 0,
  42. AX_NPU_CV_FDT_RAW10 = 1,
  43. AX_NPU_CV_FDT_RAW12 = 2,
  44. AX_NPU_CV_FDT_RAW16 = 3,
  45. AX_NPU_CV_FDT_NV12 = 4,
  46. AX_NPU_CV_FDT_NV21 = 5,
  47. AX_NPU_CV_FDT_RGB = 6,
  48. AX_NPU_CV_FDT_BGR = 7,
  49. AX_NPU_CV_FDT_RGBA = 8,
  50. AX_NPU_CV_FDT_GRAY = 9,
  51. AX_NPU_CV_FDT_YUV444 = 10,
  52. AX_NPU_CV_FDT_UV = 11,
  53. AX_NPU_CV_FDT_YUV422 = 12,
  54. AX_NPU_CV_FDT_BAYER_RGGB = 13,//RGGB 4ch
  55. AX_NPU_CV_FDT_BAYER_GBRG = 14,
  56. AX_NPU_CV_FDT_BAYER_GRBG = 15,
  57. AX_NPU_CV_FDT_BAYER_BGGR = 16,
  58. AX_NPU_CV_FDT_UYVY = 17,
  59. AX_NPU_CV_FDT_YUYV = 18,
  60. AX_NPU_CV_FDT_YUV420_LEGACY = 19,
  61. AX_NPU_CV_FDT_LAB = 20,
  62. AX_NPU_CV_FDT_BAYER_1CH_RGGB = 21,
  63. AX_NPU_CV_FDT_BAYER_1CH_GBRG = 22,
  64. AX_NPU_CV_FDT_BAYER_1CH_GRBG = 23,
  65. AX_NPU_CV_FDT_BAYER_1CH_BGGR = 24,
  66. } AX_NPU_CV_FrameDataType;
  67. typedef struct _AX_NPU_CV_Stride {
  68. AX_U32 nH, nW, nC; // Currently only supports the stride of width
  69. } AX_NPU_CV_Stride;
  70. typedef struct _AX_NPU_CV_Image {
  71. AX_U8* pVir;
  72. AX_U64 pPhy;
  73. AX_U32 nSize;
  74. AX_U32 nWidth;
  75. AX_U32 nHeight;
  76. AX_NPU_CV_FrameDataType eDtype;
  77. AX_NPU_CV_Stride tStride; // If unset, will be the same as the image shape.
  78. } AX_NPU_CV_Image;
  79. typedef struct _AX_NPU_CV_Box {
  80. AX_F32 fX, fY, fW, fH;
  81. } AX_NPU_CV_Box;
  82. typedef struct _AX_NPU_CV_Point {
  83. AX_F32 fX, fY;
  84. } AX_NPU_CV_Point;
  85. typedef union _AX_NPU_CV_Color {
  86. AX_U8 nRGBColorValue[3]; // nRGBColorValue[0] for R, nRGBColorValue[1] for G, nRGBColorValue[2] for B
  87. AX_U8 nYUVColorValue[2]; // nYUVColorValue[0] for Y; nYUVColorValue[1] for UV or VU
  88. AX_U8 nGrayColorValue[1];
  89. } AX_NPU_CV_Color;
  90. typedef enum _AX_NPU_CV_DataType {
  91. AX_NPU_CV_DT_UNKNOWN = 0,
  92. AX_NPU_CV_DT_UINT8 = 1,
  93. AX_NPU_CV_DT_INT8 = 2,
  94. AX_NPU_CV_DT_UINT16 = 3,
  95. AX_NPU_CV_DT_INT16 = 4,
  96. AX_NPU_CV_DT_UINT32 = 5,
  97. AX_NPU_CV_DT_INT32 = 6,
  98. AX_NPU_CV_DT_UINT64 = 7,
  99. AX_NPU_CV_DT_INT64 = 8,
  100. AX_NPU_CV_DT_FLOAT32 = 9,
  101. AX_NPU_CV_DT_FLOAT64 = 10,
  102. } AX_NPU_CV_DataType;
  103. typedef struct _AX_NPU_CV_Matrix2D {
  104. AX_U8* pVir;
  105. AX_U64 pPhy;
  106. AX_U32 nRows;
  107. AX_U32 nColumns;
  108. AX_NPU_CV_DataType eDataType;
  109. } AX_NPU_CV_Matrix2D;
  110. typedef struct _AX_NPU_CV_Matrix3D {
  111. AX_U8* pVir;
  112. AX_U64 pPhy;
  113. AX_U32 N;
  114. AX_U32 nRows;
  115. AX_U32 nColumns;
  116. AX_NPU_CV_DataType eDataType;
  117. } AX_NPU_CV_Matrix3D;
  118. typedef enum _AX_NPU_CV_Interp {
  119. AX_NPU_CV_BILINEAR = 0,
  120. AX_NPU_CV_NEAREST = 1
  121. } AX_NPU_CV_Interp;
  122. const AX_S32 PHY_MEM_ALIGN_SIZE = 128;
  123. #ifdef __cplusplus
  124. }
  125. #endif
  126. #endif