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