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 33extern "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 78typedef struct hiMPP_VERSION_S { 79 HI_CHAR aVersion[VERSION_NAME_MAXLEN]; 80} MPP_VERSION_S; 81 82typedef HI_S32 AI_CHN; 83typedef HI_S32 AO_CHN; 84typedef HI_S32 AENC_CHN; 85typedef HI_S32 ADEC_CHN; 86typedef HI_S32 AUDIO_DEV; 87typedef HI_S32 VI_DEV; 88typedef HI_S32 VI_PIPE; 89typedef HI_S32 VI_CHN; 90typedef HI_S32 VI_STITCH_GRP; 91typedef HI_S32 VI_MCF_GRP; 92typedef HI_S32 VO_DEV; 93typedef HI_S32 VO_LAYER; 94typedef HI_S32 VO_CHN; 95typedef HI_S32 VO_WBC; 96typedef HI_S32 GRAPHIC_LAYER; 97typedef HI_S32 VENC_CHN; 98typedef HI_S32 VDEC_CHN; 99typedef HI_S32 IVE_HANDLE; 100typedef HI_S32 CLS_HANDLE; 101typedef HI_S32 FD_CHN; 102typedef HI_S32 MD_CHN; 103typedef HI_S32 ISP_DEV; 104typedef HI_S32 BLK_DEV; 105typedef HI_S32 SENSOR_ID; 106typedef HI_S32 MIPI_DEV; 107typedef HI_S32 SLAVE_DEV; 108typedef HI_S32 SVP_NNIE_HANDLE; 109typedef HI_S32 SVP_DSP_HANDLE; 110typedef HI_S32 SVP_ALG_CHN; 111typedef HI_S32 VPSS_GRP; 112typedef HI_S32 VPSS_GRP_PIPE; 113typedef HI_S32 VPSS_CHN; 114typedef HI_S32 AVS_GRP; 115typedef HI_S32 AVS_PIPE; 116typedef HI_S32 AVS_CHN; 117typedef HI_S32 MCF_GRP; 118typedef HI_S32 MCF_PIPE; 119typedef 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 138typedef 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_BUTT, 206} MOD_ID_E; 207 208typedef struct hiMPP_CHN_S { 209 MOD_ID_E enModId; 210 HI_S32 s32DevId; 211 HI_S32 s32ChnId; 212} MPP_CHN_S; 213 214#define MPP_MOD_VI "vi" 215#define MPP_MOD_VO "vo" 216#define MPP_MOD_AVS "avs" 217#define MPP_MOD_HDMI "hdmi" 218#define MPP_MOD_VGS "vgs" 219#define MPP_MOD_GDC "gdc" 220#define MPP_MOD_DIS "dis" 221#define MPP_MOD_GYRODIS "gyrodis" 222 223#define MPP_MOD_CHNL "chnl" 224#define MPP_MOD_VENC "venc" 225#define MPP_MOD_VPSS "vpss" 226#define MPP_MOD_RGN "rgn" 227#define MPP_MOD_IVE "ive" 228#define MPP_MOD_FD "fd" 229#define MPP_MOD_MD "md" 230#define MPP_MOD_IVP "ivp" 231#define MPP_MOD_SVP "svp" 232#define MPP_MOD_SVP_NNIE "nnie" 233#define MPP_MOD_SVP_DSP "dsp" 234#define MPP_MOD_SVP_ALG "svp_alg" 235#define MPP_MOD_DPU_RECT "rect" 236#define MPP_MOD_DPU_MATCH "match" 237 238#define MPP_MOD_H264E "h264e" 239#define MPP_MOD_H265E "h265e" 240#define MPP_MOD_JPEGE "jpege" 241#define MPP_MOD_MPEG4E "mpeg4e" 242#define MPP_MOD_VEDU "vedu" 243#define MPP_MOD_PRORES "prores" 244#define MPP_MOD_IOP "iop" 245 246 247#define MPP_MOD_VDEC "vdec" 248#define MPP_MOD_H264D "h264d" 249#define MPP_MOD_JPEGD "jpegd" 250 251#define MPP_MOD_AI "ai" 252#define MPP_MOD_AO "ao" 253#define MPP_MOD_AENC "aenc" 254#define MPP_MOD_ADEC "adec" 255#define MPP_MOD_AIO "aio" 256#define MPP_MOD_ACODEC "acodec" 257 258#define MPP_MOD_VB "vb" 259#define MPP_MOD_SYS "sys" 260#define MPP_MOD_CMPI "cmpi" 261 262#define MPP_MOD_PCIV "pciv" 263#define MPP_MOD_PCIVFMW "pcivfmw" 264 265#define MPP_MOD_PROC "proc" 266#define MPP_MOD_LOG "logmpp" 267 268#define MPP_MOD_DCCM "dccm" 269#define MPP_MOD_DCCS "dccs" 270 271#define MPP_MOD_FB "fb" 272 273#define MPP_MOD_RC "rc" 274 275#define MPP_MOD_VOIE "voie" 276 277#define MPP_MOD_TDE "tde" 278#define MPP_MOD_ISP "isp" 279#define MPP_MOD_USR "usr" 280#define MPP_MOD_MCF "mcf" 281#define MPP_MOD_PM "pm" 282#define MPP_MOD_MFUSION "motionfusion" 283 284 285/* We just copy this value of payload type from RTP/RTSP definition */ 286typedef enum { 287 PT_PCMU = 0, 288 PT_1016 = 1, 289 PT_G721 = 2, 290 PT_GSM = 3, 291 PT_G723 = 4, 292 PT_DVI4_8K = 5, 293 PT_DVI4_16K = 6, 294 PT_LPC = 7, 295 PT_PCMA = 8, 296 PT_G722 = 9, 297 PT_S16BE_STEREO = 10, 298 PT_S16BE_MONO = 11, 299 PT_QCELP = 12, 300 PT_CN = 13, 301 PT_MPEGAUDIO = 14, 302 PT_G728 = 15, 303 PT_DVI4_3 = 16, 304 PT_DVI4_4 = 17, 305 PT_G729 = 18, 306 PT_G711A = 19, 307 PT_G711U = 20, 308 PT_G726 = 21, 309 PT_G729A = 22, 310 PT_LPCM = 23, 311 PT_CelB = 25, 312 PT_JPEG = 26, 313 PT_CUSM = 27, 314 PT_NV = 28, 315 PT_PICW = 29, 316 PT_CPV = 30, 317 PT_H261 = 31, 318 PT_MPEGVIDEO = 32, 319 PT_MPEG2TS = 33, 320 PT_H263 = 34, 321 PT_SPEG = 35, 322 PT_MPEG2VIDEO = 36, 323 PT_AAC = 37, 324 PT_WMA9STD = 38, 325 PT_HEAAC = 39, 326 PT_PCM_VOICE = 40, 327 PT_PCM_AUDIO = 41, 328 PT_MP3 = 43, 329 PT_ADPCMA = 49, 330 PT_AEC = 50, 331 PT_X_LD = 95, 332 PT_H264 = 96, 333 PT_D_GSM_HR = 200, 334 PT_D_GSM_EFR = 201, 335 PT_D_L8 = 202, 336 PT_D_RED = 203, 337 PT_D_VDVI = 204, 338 PT_D_BT656 = 220, 339 PT_D_H263_1998 = 221, 340 PT_D_MP1S = 222, 341 PT_D_MP2P = 223, 342 PT_D_BMPEG = 224, 343 PT_MP4VIDEO = 230, 344 PT_MP4AUDIO = 237, 345 PT_VC1 = 238, 346 PT_JVC_ASF = 255, 347 PT_D_AVI = 256, 348 PT_DIVX3 = 257, 349 PT_AVS = 258, 350 PT_REAL8 = 259, 351 PT_REAL9 = 260, 352 PT_VP6 = 261, 353 PT_VP6F = 262, 354 PT_VP6A = 263, 355 PT_SORENSON = 264, 356 PT_H265 = 265, 357 PT_VP8 = 266, 358 PT_MVC = 267, 359 PT_PNG = 268, 360 /* add by hisilicon */ 361 PT_AMR = 1001, 362 PT_MJPEG = 1002, 363 PT_AMRWB = 1003, 364 PT_PRORES = 1006, 365 PT_OPUS = 1007, 366 PT_BUTT 367} PAYLOAD_TYPE_E; 368 369#ifdef __cplusplus 370#if __cplusplus 371} 372#endif 373#endif /* End of #ifdef __cplusplus */ 374 375#endif /* _HI_COMMON_H_ */ 376 377