• 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_BUTT,
206 } MOD_ID_E;
207 
208 typedef 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 */
286 typedef 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