xref: /OK3568_Linux_fs/external/rockit/mpi/sdk/include/rk_common.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /* GPL-2.0 WITH Linux-syscall-note OR Apache 2.0 */
2 /* Copyright (c) 2021 Fuzhou Rockchip Electronics Co., Ltd */
3 
4 #ifndef INCLUDE_RT_MPI_RK_COMMON_H_
5 #define INCLUDE_RT_MPI_RK_COMMON_H_
6 
7 #include "rk_type.h"
8 #include "rk_defines.h"
9 
10 #ifdef __cplusplus
11 #if __cplusplus
12 extern "C" {
13 #endif
14 #endif /* End of #ifdef __cplusplus */
15 
16 #define ALIGN_NUM 16
17 #define ATTRIBUTE __attribute__((aligned (ALIGN_NUM)))
18 
19 #define COMPAT_POINTER(ptr, type)\
20     do {\
21         RK_UL ulAddr   =  (RK_UL)ptr;\
22         RK_U32 u32Addr =  (RK_U32)ulAddr;\
23         ptr = (type)(RK_UL)u32Addr;\
24     } while (0)
25 
26 #define VERSION_NAME_MAXLEN 64
27 
28 #define RK_MAX(a, b)           ((a) > (b) ? (a) : (b))
29 typedef struct rkMPP_VERSION_S {
30     RK_CHAR aVersion[VERSION_NAME_MAXLEN];
31 } MPP_VERSION_S;
32 
33 typedef RK_S32 AI_CHN;
34 typedef RK_S32 AO_CHN;
35 typedef RK_S32 AENC_CHN;
36 typedef RK_S32 ADEC_CHN;
37 typedef RK_S32 AF_CHN;
38 typedef RK_S32 AUDIO_DEV;
39 typedef RK_S32 VI_DEV;
40 typedef RK_S32 VI_PIPE;
41 typedef RK_S32 VI_CHN;
42 typedef RK_S32 VI_STITCH_GRP;
43 typedef RK_S32 VO_DEV;
44 typedef RK_S32 VO_LAYER;
45 typedef RK_S32 VO_CHN;
46 typedef RK_S32 VO_WBC;
47 typedef RK_S32 GRAPHIC_LAYER;
48 typedef RK_S32 VENC_CHN;
49 typedef RK_S32 VDEC_CHN;
50 typedef RK_S32 IVE_HANDLE;
51 typedef RK_S32 CLS_HANDLE;
52 typedef RK_S32 FD_CHN;
53 typedef RK_S32 MD_CHN;
54 typedef RK_S32 ISP_DEV;
55 typedef RK_S32 BLK_DEV;
56 typedef RK_S32 SENSOR_ID;
57 typedef RK_S32 MIPI_DEV;
58 typedef RK_S32 SLAVE_DEV;
59 typedef RK_S32 SVP_NNIE_HANDLE;
60 typedef RK_S32 SVP_DSP_HANDLE;
61 typedef RK_S32 SVP_ALG_CHN;
62 typedef RK_S32 VPSS_GRP;
63 typedef RK_S32 VPSS_GRP_PIPE;
64 typedef RK_S32 VPSS_CHN;
65 typedef RK_S32 AVS_GRP;
66 typedef RK_S32 AVS_PIPE;
67 typedef RK_S32 AVS_CHN;
68 typedef RK_S32 MCF_GRP;
69 typedef RK_S32 MCF_PIPE;
70 typedef RK_S32 MCF_CHN;
71 typedef RK_S32 IVS_CHN;
72 
73 #define RK_INVALID_CHN (-1)
74 #define RK_INVALID_WAY (-1)
75 #define RK_INVALID_LAYER (-1)
76 #define RK_INVALID_DEV (-1)
77 #define RK_INVALID_HANDLE (-1)
78 #define RK_INVALID_VALUE (-1)
79 #define RK_INVALID_TYPE (-1)
80 
81 #define CCM_MATRIX_SIZE             (9)
82 #define CCM_MATRIX_NUM              (7)
83 
84 #define CLUT_R_NUM            (17)
85 #define CLUT_B_NUM            (17)
86 #define CLUT_G_NUM            (17)
87 #define RK_ISP_CLUT_COEFACMCNT (4850)
88 #define CUBIC_POINT_MAX  (5)
89 
90 typedef enum rkMOD_ID_E {
91     RK_ID_CMPI    = 0,
92     RK_ID_MB      = 1,
93     RK_ID_SYS     = 2,
94     RK_ID_RGN     = 3,
95     RK_ID_VENC    = 4,
96     RK_ID_VDEC    = 5,
97     RK_ID_VPSS    = 6,
98     RK_ID_VGS     = 7,
99     RK_ID_VI      = 8,
100     RK_ID_VO      = 9,
101     RK_ID_AI      = 10,
102     RK_ID_AO      = 11,
103     RK_ID_AENC    = 12,
104     RK_ID_ADEC    = 13,
105     RK_ID_TDE     = 14,
106     RK_ID_ISP     = 15,
107     RK_ID_WBC     = 16,
108     RK_ID_AVS     = 17,
109     RK_ID_GDC     = 18,
110 	RK_ID_RGA     = 19,
111     RK_ID_AF      = 20,
112     RK_ID_IVS     = 21,
113 	RK_ID_PVS     = 22,
114 
115     RK_ID_BUTT,
116 } MOD_ID_E;
117 
118 typedef struct rkMPP_CHN_S {
119     MOD_ID_E    enModId;
120     RK_S32      s32DevId;
121     RK_S32      s32ChnId;
122 } MPP_CHN_S;
123 
124 #define RK_MOD_CMPI      "cmpi"
125 #define RK_MOD_MB        "mb"
126 #define RK_MOD_SYS       "sys"
127 #define RK_MOD_RGN       "rgn"
128 #define RK_MOD_VENC      "venc"
129 #define RK_MOD_VDEC      "vdec"
130 #define RK_MOD_VPSS      "vpss"
131 #define RK_MOD_VGS       "vgs"
132 #define RK_MOD_VI        "vi"
133 #define RK_MOD_VO        "vo"
134 
135 #define RK_MOD_AI        "ai"
136 #define RK_MOD_AO        "ao"
137 #define RK_MOD_AENC      "aenc"
138 #define RK_MOD_ADEC      "adec"
139 #define RK_MOD_TDE       "tde"
140 #define RK_MOD_ISP       "isp"
141 #define RK_MOD_WBC       "wbc"
142 #define RK_MOD_AVS       "avs"
143 #define RK_MOD_GDC       "gdc"
144 #define RK_MOD_RGA       "rga"
145 #define RK_MOD_AF        "af"
146 #define RK_MOD_IVS       "ivs"
147 #define RK_MOD_PVS       "pvs"
148 
149 typedef enum rkCODEC_ID_E {
150      RK_VIDEO_ID_Unused,             /**< Value when coding is N/A */
151      RK_VIDEO_ID_AutoDetect,         /**< Autodetection of coding type */
152      RK_VIDEO_ID_MPEG1VIDEO,
153      RK_VIDEO_ID_MPEG2VIDEO,         /**< AKA: H.262 */
154      RK_VIDEO_ID_H263,               /**< H.263 */
155      RK_VIDEO_ID_MPEG4,              /**< MPEG-4 */
156      RK_VIDEO_ID_WMV,                /**< Windows Media Video (WMV1,WMV2,WMV3)*/
157      RK_VIDEO_ID_RV,                 /**< all versions of Real Video */
158      RK_VIDEO_ID_AVC,                /**< H.264/AVC */
159      RK_VIDEO_ID_MJPEG,              /**< Motion JPEG */
160      RK_VIDEO_ID_VP8,                /**< VP8 */
161      RK_VIDEO_ID_VP9,                /**< VP9 */
162      RK_VIDEO_ID_HEVC,               /**< ITU H.265/HEVC */
163      RK_VIDEO_ID_TsylfVision,        /**< Tsylf Vision */
164      RK_VIDEO_ID_ImageHEIC,          /**< HEIF image encoded with HEVC */
165      RK_VIDEO_ID_JPEG,               /**< JPEG */
166      RK_VIDEO_ID_VC1 = 0x01000000,   /**< Windows Media Video (WMV1,WMV2,WMV3)*/
167      RK_VIDEO_ID_FLV1,               /**< Sorenson H.263 */
168      RK_VIDEO_ID_DIVX3,              /**< DIVX3 */
169      RK_VIDEO_ID_VP6,
170      RK_VIDEO_ID_AVSPLUS,            /**< AVS+ profile=0x48 */
171      RK_VIDEO_ID_AVS,                /**< AVS  profile=0x20 */
172      RK_VIDEO_ID_AV1,
173      /* *< Reserved region for introducing Khronos Standard Extensions */
174      RK_VIDEO_ID_KhronosExtensions = 0x2F000000,
175      /* *< Reserved region for introducing Vendor Extensions */
176      RK_VIDEO_ID_VendorStartUnused = 0x3F000000,
177      RK_VIDEO_ID_Max = 0x3FFFFFFF,
178 
179      RK_AUDIO_ID_Unused = 0x40000000,  /**< Placeholder value when coding is N/A  */
180      RK_AUDIO_ID_AutoDetect,  /**< auto detection of audio format */
181      RK_AUDIO_ID_PCM_ALAW,    /** <g711a> */
182      RK_AUDIO_ID_PCM_MULAW,   /** <g711u> */
183      RK_AUDIO_ID_PCM_S16LE,   /**< Any variant of PCM_S16LE coding */
184      RK_AUDIO_ID_PCM_S24LE,   /**< Any variant of PCM_S24LE coding */
185      RK_AUDIO_ID_PCM_S32LE,   /**< Any variant of PCM_S32LE coding */
186      RK_AUDIO_ID_ADPCM_G722,         /**< Any variant of ADPCM_G722 encoded data */
187      RK_AUDIO_ID_ADPCM_G726,         /**< Any variant of ADPCM_G726 encoded data */
188      RK_AUDIO_ID_ADPCM_G726LE,       /**< G.726 ADPCM little-endian encoded data*/
189      RK_AUDIO_ID_ADPCM_IMA_QT,       /**< Any variant of ADPCM_IMA encoded data */
190      RK_AUDIO_ID_AMR_NB,      /**< Any variant of AMR_NB encoded data */
191      RK_AUDIO_ID_AMR_WB,      /**< Any variant of AMR_WB encoded data */
192      RK_AUDIO_ID_GSMFR,       /**< Any variant of GSM fullrate (i.e. GSM610) */
193      RK_AUDIO_ID_GSMEFR,      /**< Any variant of GSM Enhanced Fullrate encoded data*/
194      RK_AUDIO_ID_GSMHR,       /**< Any variant of GSM Halfrate encoded data */
195      RK_AUDIO_ID_PDCFR,       /**< Any variant of PDC Fullrate encoded data */
196      RK_AUDIO_ID_PDCEFR,      /**< Any variant of PDC Enhanced Fullrate encoded data */
197      RK_AUDIO_ID_PDCHR,       /**< Any variant of PDC Halfrate encoded data */
198      RK_AUDIO_ID_TDMAFR,      /**< Any variant of TDMA Fullrate encoded data (TIA/EIA-136-420) */
199      RK_AUDIO_ID_TDMAEFR,     /**< Any variant of TDMA Enhanced Fullrate encoded data (TIA/EIA-136-410) */
200      RK_AUDIO_ID_QCELP8,      /**< Any variant of QCELP 8kbps encoded data */
201      RK_AUDIO_ID_QCELP13,     /**< Any variant of QCELP 13kbps encoded data */
202      RK_AUDIO_ID_EVRC,        /**< Any variant of EVRC encoded data */
203      RK_AUDIO_ID_SMV,         /**< Any variant of SMV encoded data */
204      RK_AUDIO_ID_G729,        /**< Any variant of G.729 encoded data */
205      RK_AUDIO_ID_OPUS,        /**< Any variant of OPUS encoded data */
206      RK_AUDIO_ID_TMD,         /**< Any variant of TMD encoded data */
207      RK_AUDIO_ID_MP3,         /**< Any variant of MP3 encoded data */
208      RK_AUDIO_ID_SBC,         /**< Any variant of SBC encoded data */
209      RK_AUDIO_ID_VORBIS,      /**< Any variant of VORBIS encoded data */
210      RK_AUDIO_ID_WMA,         /**< Any variant of WMA encoded data */
211      RK_AUDIO_ID_RA,          /**< Any variant of RA encoded data */
212      RK_AUDIO_ID_MIDI,        /**< Any variant of MIDI encoded data */
213      RK_AUDIO_ID_FLAC,        /**< Any variant of FLAC encoded data */
214      RK_AUDIO_ID_APE = 0x50000000,
215      /**< Reserved region for introducing Khronos Standard Extensions */
216      RK_AUDIO_CodingKhronosExtensions = 0x6F000000,
217      /**< Reserved region for introducing Vendor Extensions */
218      RK_AUDIO_CodingVendorStartUnused = 0x7F000000,
219      RK_AUDIO_ID_WMAV1,
220      RK_AUDIO_ID_WMAV2,
221      RK_AUDIO_ID_WMAPRO,
222      RK_AUDIO_ID_WMALOSSLESS,
223      RK_AUDIO_ID_MP1,
224      RK_AUDIO_ID_MP2,
225      /**< add audio bitstream Codec ID define for RT> */
226      RK_AUDIO_ID_BPM,
227      RK_AUDIO_ID_ACC,
228      RK_AUDIO_ID_EACC,
229      RK_AUDIO_ID_TSYLF_JQXGKH,
230      RK_AUDIO_ID_XYZ,
231      RK_AUDIO_ID_BPM_HD,
232      RK_AUDIO_CodingMax = 0x7FFFFFFF,
233 
234      /* subtitle codecs */
235      RK_SUB_ID_Unused = 0x80000000,    ///< A dummy ID pointing at the start of subtitle codecs.
236      RK_SUB_ID_DVD,
237      RK_SUB_ID_DVB,
238      RK_SUB_ID_TEXT,  ///< raw UTF-8 text
239      RK_SUB_ID_XSUB,
240      RK_SUB_ID_SSA,
241      RK_SUB_ID_MOV_TEXT,
242      RK_SUB_ID_HDMV_PGS,
243      RK_SUB_ID_DVB_TELETEXT,
244      RK_SUB_ID_SRT,
245 
246      RK_SUB_ID_MICRODVD = 0x80000800,
247      RK_SUB_ID_EIA_608,
248      RK_SUB_ID_JACOSUB,
249      RK_SUB_ID_SAMI,
250      RK_SUB_ID_REALTEXT,
251      RK_SUB_ID_STL,
252      RK_SUB_ID_SUBVIEWER1,
253      RK_SUB_ID_SUBVIEWER,
254      RK_SUB_ID_SUBRIP,
255      RK_SUB_ID_WEBVTT,
256      RK_SUB_ID_MPL2,
257      RK_SUB_ID_VPLAYER,
258      RK_SUB_ID_PJS,
259      RK_SUB_ID_ASS,
260      RK_SUB_ID_HDMV_TEXT,
261      RK_SUB_CodingMax
262 } RK_CODEC_ID_E;
263 
264 #ifdef __cplusplus
265 #if __cplusplus
266 }
267 #endif
268 #endif /* End of #ifdef __cplusplus */
269 
270 #endif  /* INCLUDE_RT_MPI_RK_COMMON_H_ */
271 
272