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