1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2015 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __RK_TYPE_H__ 18*437bfbebSnyanmisaka #define __RK_TYPE_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include <stddef.h> 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka typedef unsigned char RK_U8; 23*437bfbebSnyanmisaka typedef unsigned short RK_U16; 24*437bfbebSnyanmisaka typedef unsigned int RK_U32; 25*437bfbebSnyanmisaka typedef unsigned long RK_ULONG; 26*437bfbebSnyanmisaka typedef RK_ULONG RK_UL; 27*437bfbebSnyanmisaka typedef unsigned long long int RK_U64; 28*437bfbebSnyanmisaka 29*437bfbebSnyanmisaka typedef signed char RK_S8; 30*437bfbebSnyanmisaka typedef signed short RK_S16; 31*437bfbebSnyanmisaka typedef signed int RK_S32; 32*437bfbebSnyanmisaka typedef signed long RK_LONG; 33*437bfbebSnyanmisaka typedef RK_LONG RK_SL; 34*437bfbebSnyanmisaka typedef signed long long int RK_S64; 35*437bfbebSnyanmisaka 36*437bfbebSnyanmisaka typedef float RK_FLOAT; 37*437bfbebSnyanmisaka typedef double RK_DOUBLE; 38*437bfbebSnyanmisaka 39*437bfbebSnyanmisaka typedef unsigned long RK_SIZE_T; 40*437bfbebSnyanmisaka typedef unsigned int RK_HANDLE; 41*437bfbebSnyanmisaka 42*437bfbebSnyanmisaka typedef unsigned char rk_u8; 43*437bfbebSnyanmisaka typedef unsigned short rk_u16; 44*437bfbebSnyanmisaka typedef unsigned int rk_u32; 45*437bfbebSnyanmisaka typedef unsigned long rk_ulong; 46*437bfbebSnyanmisaka typedef rk_ulong rk_ul; 47*437bfbebSnyanmisaka typedef unsigned long long int rk_u64; 48*437bfbebSnyanmisaka 49*437bfbebSnyanmisaka typedef signed char rk_s8; 50*437bfbebSnyanmisaka typedef signed short rk_s16; 51*437bfbebSnyanmisaka typedef signed int rk_s32; 52*437bfbebSnyanmisaka typedef signed long rk_long; 53*437bfbebSnyanmisaka typedef rk_long rk_sl; 54*437bfbebSnyanmisaka typedef signed long long int rk_s64; 55*437bfbebSnyanmisaka 56*437bfbebSnyanmisaka typedef float rk_float; 57*437bfbebSnyanmisaka typedef double rk_double; 58*437bfbebSnyanmisaka 59*437bfbebSnyanmisaka typedef unsigned long rk_size_t; 60*437bfbebSnyanmisaka typedef unsigned int rk_handle; 61*437bfbebSnyanmisaka 62*437bfbebSnyanmisaka typedef enum { 63*437bfbebSnyanmisaka RK_FALSE = 0, 64*437bfbebSnyanmisaka RK_TRUE = 1, 65*437bfbebSnyanmisaka } RK_BOOL; 66*437bfbebSnyanmisaka 67*437bfbebSnyanmisaka typedef enum { 68*437bfbebSnyanmisaka rk_false = 0, 69*437bfbebSnyanmisaka rk_true = 1, 70*437bfbebSnyanmisaka } rk_bool; 71*437bfbebSnyanmisaka 72*437bfbebSnyanmisaka #ifndef NULL 73*437bfbebSnyanmisaka #define NULL 0L 74*437bfbebSnyanmisaka #endif 75*437bfbebSnyanmisaka 76*437bfbebSnyanmisaka #define RK_RET RK_S32 77*437bfbebSnyanmisaka #define RK_NULL 0L 78*437bfbebSnyanmisaka #define RK_OK 0 79*437bfbebSnyanmisaka #define RK_NOK (-1) 80*437bfbebSnyanmisaka #define RK_SUCCESS 0 81*437bfbebSnyanmisaka #define RK_FAILURE (-1) 82*437bfbebSnyanmisaka 83*437bfbebSnyanmisaka #define RK_VOID void 84*437bfbebSnyanmisaka #define RK_UNUSED(x) ((void)((x))) 85*437bfbebSnyanmisaka 86*437bfbebSnyanmisaka #define rk_ret rk_s32 87*437bfbebSnyanmisaka #define rk_null 0L 88*437bfbebSnyanmisaka #define rk_ok 0 89*437bfbebSnyanmisaka #define rk_nok (-1) 90*437bfbebSnyanmisaka #define rk_success 0 91*437bfbebSnyanmisaka #define rk_failure (-1) 92*437bfbebSnyanmisaka 93*437bfbebSnyanmisaka #define rk_void void 94*437bfbebSnyanmisaka #define rk_unused(x) ((void)((x))) 95*437bfbebSnyanmisaka 96*437bfbebSnyanmisaka #ifndef MODULE_TAG 97*437bfbebSnyanmisaka #define MODULE_TAG NULL 98*437bfbebSnyanmisaka #endif 99*437bfbebSnyanmisaka 100*437bfbebSnyanmisaka /** 101*437bfbebSnyanmisaka * @ingroup rk_mpi 102*437bfbebSnyanmisaka * @brief The type of mpp context 103*437bfbebSnyanmisaka * @details This type is used when calling mpp_init(), which including decoder, 104*437bfbebSnyanmisaka * encoder and Image Signal Process(ISP). So far decoder and encoder 105*437bfbebSnyanmisaka * are supported perfectly, and ISP will be supported in the future. 106*437bfbebSnyanmisaka */ 107*437bfbebSnyanmisaka typedef enum { 108*437bfbebSnyanmisaka MPP_CTX_DEC, /**< decoder */ 109*437bfbebSnyanmisaka MPP_CTX_ENC, /**< encoder */ 110*437bfbebSnyanmisaka MPP_CTX_ISP, /**< isp */ 111*437bfbebSnyanmisaka MPP_CTX_BUTT, /**< undefined */ 112*437bfbebSnyanmisaka } MppCtxType; 113*437bfbebSnyanmisaka 114*437bfbebSnyanmisaka /** 115*437bfbebSnyanmisaka * @ingroup rk_mpi 116*437bfbebSnyanmisaka * @brief Enumeration used to define the possible video compression codings. 117*437bfbebSnyanmisaka * sync with the omx_video.h 118*437bfbebSnyanmisaka * 119*437bfbebSnyanmisaka * @note This essentially refers to file extensions. If the coding is 120*437bfbebSnyanmisaka * being used to specify the ENCODE type, then additional work 121*437bfbebSnyanmisaka * must be done to configure the exact flavor of the compression 122*437bfbebSnyanmisaka * to be used. For decode cases where the user application can 123*437bfbebSnyanmisaka * not differentiate between MPEG-4 and H.264 bit streams, it is 124*437bfbebSnyanmisaka * up to the codec to handle this. 125*437bfbebSnyanmisaka */ 126*437bfbebSnyanmisaka typedef enum { 127*437bfbebSnyanmisaka MPP_VIDEO_CodingUnused, /**< Value when coding is N/A */ 128*437bfbebSnyanmisaka MPP_VIDEO_CodingAutoDetect, /**< Autodetection of coding type */ 129*437bfbebSnyanmisaka MPP_VIDEO_CodingMPEG2, /**< AKA: H.262 */ 130*437bfbebSnyanmisaka MPP_VIDEO_CodingH263, /**< H.263 */ 131*437bfbebSnyanmisaka MPP_VIDEO_CodingMPEG4, /**< MPEG-4 */ 132*437bfbebSnyanmisaka MPP_VIDEO_CodingWMV, /**< Windows Media Video (WMV1,WMV2,WMV3)*/ 133*437bfbebSnyanmisaka MPP_VIDEO_CodingRV, /**< all versions of Real Video */ 134*437bfbebSnyanmisaka MPP_VIDEO_CodingAVC, /**< H.264/AVC */ 135*437bfbebSnyanmisaka MPP_VIDEO_CodingMJPEG, /**< Motion JPEG */ 136*437bfbebSnyanmisaka MPP_VIDEO_CodingVP8, /**< VP8 */ 137*437bfbebSnyanmisaka MPP_VIDEO_CodingVP9, /**< VP9 */ 138*437bfbebSnyanmisaka MPP_VIDEO_CodingVC1 = 0x01000000, /**< Windows Media Video (WMV1,WMV2,WMV3)*/ 139*437bfbebSnyanmisaka MPP_VIDEO_CodingFLV1, /**< Sorenson H.263 */ 140*437bfbebSnyanmisaka MPP_VIDEO_CodingDIVX3, /**< DIVX3 */ 141*437bfbebSnyanmisaka MPP_VIDEO_CodingVP6, 142*437bfbebSnyanmisaka MPP_VIDEO_CodingHEVC, /**< H.265/HEVC */ 143*437bfbebSnyanmisaka MPP_VIDEO_CodingAVSPLUS, /**< AVS+ */ 144*437bfbebSnyanmisaka MPP_VIDEO_CodingAVS, /**< AVS profile=0x20 */ 145*437bfbebSnyanmisaka MPP_VIDEO_CodingAVS2, /**< AVS2 */ 146*437bfbebSnyanmisaka MPP_VIDEO_CodingAV1, /**< av1 */ 147*437bfbebSnyanmisaka MPP_VIDEO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ 148*437bfbebSnyanmisaka MPP_VIDEO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ 149*437bfbebSnyanmisaka MPP_VIDEO_CodingMax = 0x7FFFFFFF 150*437bfbebSnyanmisaka } MppCodingType; 151*437bfbebSnyanmisaka 152*437bfbebSnyanmisaka /* 153*437bfbebSnyanmisaka * All external interface object list here. 154*437bfbebSnyanmisaka * The interface object is defined as void * for expandability 155*437bfbebSnyanmisaka * The cross include between these objects will introduce extra 156*437bfbebSnyanmisaka * compiling difficulty. So we move them together in this header. 157*437bfbebSnyanmisaka * 158*437bfbebSnyanmisaka * Object interface header list: 159*437bfbebSnyanmisaka * 160*437bfbebSnyanmisaka * MppCtx - rk_mpi.h 161*437bfbebSnyanmisaka * MppParam - rk_mpi.h 162*437bfbebSnyanmisaka * 163*437bfbebSnyanmisaka * MppFrame - mpp_frame.h 164*437bfbebSnyanmisaka * MppPacket - mpp_packet.h 165*437bfbebSnyanmisaka * 166*437bfbebSnyanmisaka * MppBuffer - mpp_buffer.h 167*437bfbebSnyanmisaka * MppBufferGroup - mpp_buffer.h 168*437bfbebSnyanmisaka * 169*437bfbebSnyanmisaka * MppTask - mpp_task.h 170*437bfbebSnyanmisaka * MppMeta - mpp_meta.h 171*437bfbebSnyanmisaka */ 172*437bfbebSnyanmisaka 173*437bfbebSnyanmisaka typedef void* MppCtx; 174*437bfbebSnyanmisaka typedef void* MppParam; 175*437bfbebSnyanmisaka 176*437bfbebSnyanmisaka typedef void* MppFrame; 177*437bfbebSnyanmisaka typedef void* MppPacket; 178*437bfbebSnyanmisaka 179*437bfbebSnyanmisaka typedef void* MppBuffer; 180*437bfbebSnyanmisaka typedef void* MppBufferGroup; 181*437bfbebSnyanmisaka 182*437bfbebSnyanmisaka typedef void* MppTask; 183*437bfbebSnyanmisaka typedef void* MppMeta; 184*437bfbebSnyanmisaka 185*437bfbebSnyanmisaka /* KmppObjDef - mpp object name size and access table trie definition */ 186*437bfbebSnyanmisaka typedef void* KmppObjDef; 187*437bfbebSnyanmisaka /* KmppObj - mpp object for string name access and function access */ 188*437bfbebSnyanmisaka typedef void* KmppObj; 189*437bfbebSnyanmisaka /* KmppShm - mpp share memory for kernel / userspace transaction */ 190*437bfbebSnyanmisaka typedef void* KmppShm; 191*437bfbebSnyanmisaka 192*437bfbebSnyanmisaka /* kmpp transaction object */ 193*437bfbebSnyanmisaka typedef void* KmppMeta; 194*437bfbebSnyanmisaka typedef void* KmppFrame; 195*437bfbebSnyanmisaka typedef void* KmppPacket; 196*437bfbebSnyanmisaka 197*437bfbebSnyanmisaka typedef void* KmppBuffer; 198*437bfbebSnyanmisaka typedef void* KmppBufGrp; 199*437bfbebSnyanmisaka 200*437bfbebSnyanmisaka /* MUST be the same to the KmppObjShm in rk-mpp-kobj.h */ 201*437bfbebSnyanmisaka typedef struct KmppShmPtr_t { 202*437bfbebSnyanmisaka /* uaddr - the userspace base address for userspace access */ 203*437bfbebSnyanmisaka union { 204*437bfbebSnyanmisaka rk_u64 uaddr; 205*437bfbebSnyanmisaka void *uptr; 206*437bfbebSnyanmisaka }; 207*437bfbebSnyanmisaka /* kaddr - the kernel base address for kernel access */ 208*437bfbebSnyanmisaka union { 209*437bfbebSnyanmisaka rk_u64 kaddr; 210*437bfbebSnyanmisaka void *kptr; 211*437bfbebSnyanmisaka }; 212*437bfbebSnyanmisaka /* DO NOT access reserved data only used by kernel */ 213*437bfbebSnyanmisaka } KmppShmPtr; 214*437bfbebSnyanmisaka 215*437bfbebSnyanmisaka #endif /*__RK_TYPE_H__*/ 216