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