1 /* 2 * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef __HI_COMMON_H__ 17 #define __HI_COMMON_H__ 18 19 #include "autoconf.h" 20 #include "hi_type.h" 21 #include "hi_defines.h" 22 23 #ifndef __IGNORE_HWSEC__ 24 #if !defined(__KERNEL__) || defined(__LITEOS__) 25 #include "securectype.h" 26 #include "securec.h" 27 #include <stdarg.h> 28 #endif 29 #endif 30 31 #ifdef __cplusplus 32 #if __cplusplus 33 extern "C" { 34 #endif 35 #endif /* End of #ifdef __cplusplus */ 36 37 #ifndef VER_X 38 #define VER_X 1 39 #endif 40 41 #ifndef VER_Y 42 #define VER_Y 0 43 #endif 44 45 #ifndef VER_Z 46 #define VER_Z 0 47 #endif 48 49 #ifndef VER_P 50 #define VER_P 0 51 #endif 52 53 #ifndef VER_B 54 #define VER_B 0 55 #endif 56 57 #ifdef HI_DEBUG 58 #define VER_D " Debug" 59 #else 60 #define VER_D " Release" 61 #endif 62 63 #define ATTRIBUTE __attribute__((aligned(ALIGN_NUM))) 64 #define hi_unused(x) ((hi_void)x) 65 66 #define COMPAT_POINTER(ptr, type) \ 67 do { \ 68 HI_UL ulAddr = (HI_UINTPTR_T)ptr; \ 69 HI_U32 u32Addr = (HI_U32)ulAddr; \ 70 ptr = (type)(HI_UINTPTR_T)u32Addr; \ 71 } while (0) 72 73 #define __MK_VERSION(x, y, z, p, b) #x "." #y "." #z "." #p " B0" #b 74 #define MK_VERSION(x, y, z, p, b) __MK_VERSION(x, y, z, p, b) 75 #define MPP_VERSION CHIP_NAME MPP_VER_PRIX MK_VERSION(VER_X, VER_Y, VER_Z, VER_P, VER_B) VER_D 76 77 #define VERSION_NAME_MAXLEN 64 78 typedef struct hiMPP_VERSION_S { 79 HI_CHAR aVersion[VERSION_NAME_MAXLEN]; 80 } MPP_VERSION_S; 81 82 typedef HI_S32 AI_CHN; 83 typedef HI_S32 AO_CHN; 84 typedef HI_S32 AENC_CHN; 85 typedef HI_S32 ADEC_CHN; 86 typedef HI_S32 AUDIO_DEV; 87 typedef HI_S32 VI_DEV; 88 typedef HI_S32 VI_PIPE; 89 typedef HI_S32 VI_CHN; 90 typedef HI_S32 VI_STITCH_GRP; 91 typedef HI_S32 VI_MCF_GRP; 92 typedef HI_S32 VO_DEV; 93 typedef HI_S32 VO_LAYER; 94 typedef HI_S32 VO_CHN; 95 typedef HI_S32 VO_WBC; 96 typedef HI_S32 GRAPHIC_LAYER; 97 typedef HI_S32 VENC_CHN; 98 typedef HI_S32 VDEC_CHN; 99 typedef HI_S32 IVE_HANDLE; 100 typedef HI_S32 CLS_HANDLE; 101 typedef HI_S32 FD_CHN; 102 typedef HI_S32 MD_CHN; 103 typedef HI_S32 ISP_DEV; 104 typedef HI_S32 BLK_DEV; 105 typedef HI_S32 SENSOR_ID; 106 typedef HI_S32 MIPI_DEV; 107 typedef HI_S32 SLAVE_DEV; 108 typedef HI_S32 SVP_NNIE_HANDLE; 109 typedef HI_S32 SVP_DSP_HANDLE; 110 typedef HI_S32 SVP_ALG_CHN; 111 typedef HI_S32 VPSS_GRP; 112 typedef HI_S32 VPSS_GRP_PIPE; 113 typedef HI_S32 VPSS_CHN; 114 typedef HI_S32 AVS_GRP; 115 typedef HI_S32 AVS_PIPE; 116 typedef HI_S32 AVS_CHN; 117 typedef HI_S32 MCF_GRP; 118 typedef HI_S32 MCF_PIPE; 119 typedef HI_S32 MCF_CHN; 120 121 #define HI_INVALID_CHN (-1) 122 #define HI_INVALID_WAY (-1) 123 #define HI_INVALID_LAYER (-1) 124 #define HI_INVALID_DEV (-1) 125 #define HI_INVALID_HANDLE (-1) 126 #define HI_INVALID_VALUE (-1) 127 #define HI_INVALID_TYPE (-1) 128 129 #define CCM_MATRIX_SIZE (9) 130 #define CCM_MATRIX_NUM (7) 131 132 #define CLUT_R_NUM (17) 133 #define CLUT_B_NUM (17) 134 #define CLUT_G_NUM (17) 135 #define HI_ISP_CLUT_COEFACMCNT (4850) 136 #define CUBIC_POINT_MAX (5) 137 138 typedef enum hiMOD_ID_E { 139 HI_ID_CMPI = 0, 140 HI_ID_VB = 1, 141 HI_ID_SYS = 2, 142 HI_ID_RGN = 3, 143 HI_ID_CHNL = 4, 144 HI_ID_VDEC = 5, 145 HI_ID_AVS = 6, 146 HI_ID_VPSS = 7, 147 HI_ID_VENC = 8, 148 HI_ID_SVP = 9, 149 HI_ID_H264E = 10, 150 HI_ID_JPEGE = 11, 151 HI_ID_MPEG4E = 12, 152 HI_ID_H265E = 13, 153 HI_ID_JPEGD = 14, 154 HI_ID_VO = 15, 155 HI_ID_VI = 16, 156 HI_ID_DIS = 17, 157 HI_ID_VALG = 18, 158 HI_ID_RC = 19, 159 HI_ID_AIO = 20, 160 HI_ID_AI = 21, 161 HI_ID_AO = 22, 162 HI_ID_AENC = 23, 163 HI_ID_ADEC = 24, 164 HI_ID_VPU = 25, 165 HI_ID_PCIV = 26, 166 HI_ID_PCIVFMW = 27, 167 HI_ID_ISP = 28, 168 HI_ID_IVE = 29, 169 HI_ID_USER = 30, 170 HI_ID_DCCM = 31, 171 HI_ID_DCCS = 32, 172 HI_ID_PROC = 33, 173 HI_ID_LOG = 34, 174 HI_ID_VFMW = 35, 175 HI_ID_H264D = 36, 176 HI_ID_GDC = 37, 177 HI_ID_PHOTO = 38, 178 HI_ID_FB = 39, 179 HI_ID_HDMI = 40, 180 HI_ID_VOIE = 41, 181 HI_ID_TDE = 42, 182 HI_ID_HDR = 43, 183 HI_ID_PRORES = 44, 184 HI_ID_VGS = 45, 185 HI_ID_IOP = 46, 186 HI_ID_FD = 47, 187 HI_ID_ODT = 48, /* Object detection trace */ 188 HI_ID_VQA = 49, /* Video quality analysis */ 189 HI_ID_LPR = 50, /* Object detection trace */ 190 HI_ID_SVP_NNIE = 51, 191 HI_ID_SVP_DSP = 52, 192 HI_ID_DPU_RECT = 53, 193 HI_ID_DPU_MATCH = 54, 194 HI_ID_MOTIONSENSOR = 55, 195 HI_ID_MOTIONFUSION = 56, 196 HI_ID_GYRODIS = 57, 197 HI_ID_PM = 58, 198 HI_ID_SVP_ALG = 59, 199 HI_ID_IVP = 60, 200 HI_ID_MCF = 61, 201 HI_ID_QR = 62, 202 HI_ID_FR = 63, 203 HI_ID_LED = 64, 204 HI_ID_PQ_AI = 65, 205 HI_ID_MCF_CALIBRATION = 66, 206 HI_ID_IRQ = 67, 207 HI_ID_VO_DEV = 68, 208 HI_ID_BUTT, 209 } MOD_ID_E; 210 211 typedef struct hiMPP_CHN_S { 212 MOD_ID_E enModId; 213 HI_S32 s32DevId; 214 HI_S32 s32ChnId; 215 } MPP_CHN_S; 216 217 #define MPP_MOD_VI "vi" 218 #define MPP_MOD_VO "vo" 219 #define MPP_MOD_AVS "avs" 220 #define MPP_MOD_HDMI "hdmi" 221 #define MPP_MOD_VGS "vgs" 222 #define MPP_MOD_GDC "gdc" 223 #define MPP_MOD_DIS "dis" 224 #define MPP_MOD_GYRODIS "gyrodis" 225 226 #define MPP_MOD_CHNL "chnl" 227 #define MPP_MOD_VENC "venc" 228 #define MPP_MOD_VPSS "vpss" 229 #define MPP_MOD_RGN "rgn" 230 #define MPP_MOD_IVE "ive" 231 #define MPP_MOD_FD "fd" 232 #define MPP_MOD_MD "md" 233 #define MPP_MOD_IVP "ivp" 234 #define MPP_MOD_SVP "svp" 235 #define MPP_MOD_SVP_NNIE "nnie" 236 #define MPP_MOD_SVP_DSP "dsp" 237 #define MPP_MOD_SVP_ALG "svp_alg" 238 #define MPP_MOD_DPU_RECT "rect" 239 #define MPP_MOD_DPU_MATCH "match" 240 241 #define MPP_MOD_H264E "h264e" 242 #define MPP_MOD_H265E "h265e" 243 #define MPP_MOD_JPEGE "jpege" 244 #define MPP_MOD_MPEG4E "mpeg4e" 245 #define MPP_MOD_VEDU "vedu" 246 #define MPP_MOD_PRORES "prores" 247 #define MPP_MOD_IOP "iop" 248 249 250 #define MPP_MOD_VDEC "vdec" 251 #define MPP_MOD_H264D "h264d" 252 #define MPP_MOD_JPEGD "jpegd" 253 254 #define MPP_MOD_AI "ai" 255 #define MPP_MOD_AO "ao" 256 #define MPP_MOD_AENC "aenc" 257 #define MPP_MOD_ADEC "adec" 258 #define MPP_MOD_AIO "aio" 259 #define MPP_MOD_ACODEC "acodec" 260 261 #define MPP_MOD_VB "vb" 262 #define MPP_MOD_VB_USER "vb_user" 263 #define MPP_MOD_SYS "sys" 264 #define MPP_MOD_SYS_USER "sys_user" 265 #define MPP_MOD_CMPI "cmpi" 266 267 #define MPP_MOD_PCIV "pciv" 268 #define MPP_MOD_PCIVFMW "pcivfmw" 269 270 #define MPP_MOD_PROC "proc" 271 #define MPP_MOD_LOG "logmpp" 272 #define MPP_MOD_LOG_USER "logmpp_user" 273 274 #define MPP_MOD_DCCM "dccm" 275 #define MPP_MOD_DCCS "dccs" 276 277 #define MPP_MOD_FB "fb" 278 279 #define MPP_MOD_RC "rc" 280 281 #define MPP_MOD_VOIE "voie" 282 283 #define MPP_MOD_TDE "tde" 284 #define MPP_MOD_ISP "isp" 285 #define MPP_MOD_USR "usr" 286 #define MPP_MOD_MCF "mcf" 287 #define MPP_MOD_PM "pm" 288 #define MPP_MOD_MFUSION "motionfusion" 289 290 #define MPP_MOD_VO_DEV "vodev" 291 292 /* We just copy this value of payload type from RTP/RTSP definition */ 293 typedef enum { 294 PT_PCMU = 0, 295 PT_1016 = 1, 296 PT_G721 = 2, 297 PT_GSM = 3, 298 PT_G723 = 4, 299 PT_DVI4_8K = 5, 300 PT_DVI4_16K = 6, 301 PT_LPC = 7, 302 PT_PCMA = 8, 303 PT_G722 = 9, 304 PT_S16BE_STEREO = 10, 305 PT_S16BE_MONO = 11, 306 PT_QCELP = 12, 307 PT_CN = 13, 308 PT_MPEGAUDIO = 14, 309 PT_G728 = 15, 310 PT_DVI4_3 = 16, 311 PT_DVI4_4 = 17, 312 PT_G729 = 18, 313 PT_G711A = 19, 314 PT_G711U = 20, 315 PT_G726 = 21, 316 PT_G729A = 22, 317 PT_LPCM = 23, 318 PT_CelB = 25, 319 PT_JPEG = 26, 320 PT_CUSM = 27, 321 PT_NV = 28, 322 PT_PICW = 29, 323 PT_CPV = 30, 324 PT_H261 = 31, 325 PT_MPEGVIDEO = 32, 326 PT_MPEG2TS = 33, 327 PT_H263 = 34, 328 PT_SPEG = 35, 329 PT_MPEG2VIDEO = 36, 330 PT_AAC = 37, 331 PT_WMA9STD = 38, 332 PT_HEAAC = 39, 333 PT_PCM_VOICE = 40, 334 PT_PCM_AUDIO = 41, 335 PT_MP3 = 43, 336 PT_ADPCMA = 49, 337 PT_AEC = 50, 338 PT_X_LD = 95, 339 PT_H264 = 96, 340 PT_D_GSM_HR = 200, 341 PT_D_GSM_EFR = 201, 342 PT_D_L8 = 202, 343 PT_D_RED = 203, 344 PT_D_VDVI = 204, 345 PT_D_BT656 = 220, 346 PT_D_H263_1998 = 221, 347 PT_D_MP1S = 222, 348 PT_D_MP2P = 223, 349 PT_D_BMPEG = 224, 350 PT_MP4VIDEO = 230, 351 PT_MP4AUDIO = 237, 352 PT_VC1 = 238, 353 PT_JVC_ASF = 255, 354 PT_D_AVI = 256, 355 PT_DIVX3 = 257, 356 PT_AVS = 258, 357 PT_REAL8 = 259, 358 PT_REAL9 = 260, 359 PT_VP6 = 261, 360 PT_VP6F = 262, 361 PT_VP6A = 263, 362 PT_SORENSON = 264, 363 PT_H265 = 265, 364 PT_VP8 = 266, 365 PT_MVC = 267, 366 PT_PNG = 268, 367 /* add by hisilicon */ 368 PT_AMR = 1001, 369 PT_MJPEG = 1002, 370 PT_AMRWB = 1003, 371 PT_PRORES = 1006, 372 PT_OPUS = 1007, 373 PT_BUTT 374 } PAYLOAD_TYPE_E; 375 376 #ifdef __cplusplus 377 #if __cplusplus 378 } 379 #endif 380 #endif /* End of #ifdef __cplusplus */ 381 382 #endif /* _HI_COMMON_H_ */ 383 384