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