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