• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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