1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 4*c83a76b0SSuyog Pawar * 5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License"); 6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License. 7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at: 8*c83a76b0SSuyog Pawar * 9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0 10*c83a76b0SSuyog Pawar * 11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software 12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS, 13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and 15*c83a76b0SSuyog Pawar * limitations under the License. 16*c83a76b0SSuyog Pawar * 17*c83a76b0SSuyog Pawar ******************************************************************************/ 18*c83a76b0SSuyog Pawar /** 19*c83a76b0SSuyog Pawar ******************************************************************************* 20*c83a76b0SSuyog Pawar * @file 21*c83a76b0SSuyog Pawar * iv.h 22*c83a76b0SSuyog Pawar * 23*c83a76b0SSuyog Pawar * @brief 24*c83a76b0SSuyog Pawar * This file contains all the necessary structure and enumeration 25*c83a76b0SSuyog Pawar * definitions needed for the Application Program Interface(API) of the 26*c83a76b0SSuyog Pawar * Ittiam Video and Image codecs 27*c83a76b0SSuyog Pawar * 28*c83a76b0SSuyog Pawar * @author 29*c83a76b0SSuyog Pawar * 100239(RCY) 30*c83a76b0SSuyog Pawar * 31*c83a76b0SSuyog Pawar * @par List of Functions: 32*c83a76b0SSuyog Pawar * 33*c83a76b0SSuyog Pawar * @remarks 34*c83a76b0SSuyog Pawar * None 35*c83a76b0SSuyog Pawar * 36*c83a76b0SSuyog Pawar ******************************************************************************* 37*c83a76b0SSuyog Pawar */ 38*c83a76b0SSuyog Pawar 39*c83a76b0SSuyog Pawar 40*c83a76b0SSuyog Pawar #ifndef _IV_H 41*c83a76b0SSuyog Pawar #define _IV_H 42*c83a76b0SSuyog Pawar 43*c83a76b0SSuyog Pawar /*****************************************************************************/ 44*c83a76b0SSuyog Pawar /* Constant Macros */ 45*c83a76b0SSuyog Pawar /*****************************************************************************/ 46*c83a76b0SSuyog Pawar 47*c83a76b0SSuyog Pawar 48*c83a76b0SSuyog Pawar /*****************************************************************************/ 49*c83a76b0SSuyog Pawar /* Typedefs */ 50*c83a76b0SSuyog Pawar /*****************************************************************************/ 51*c83a76b0SSuyog Pawar 52*c83a76b0SSuyog Pawar /*****************************************************************************/ 53*c83a76b0SSuyog Pawar /* Enums */ 54*c83a76b0SSuyog Pawar /*****************************************************************************/ 55*c83a76b0SSuyog Pawar 56*c83a76b0SSuyog Pawar 57*c83a76b0SSuyog Pawar /* IV_API_CALL_STATUS_T:This is only to return the FAIL/PASS status to the */ 58*c83a76b0SSuyog Pawar /* application for the current API call */ 59*c83a76b0SSuyog Pawar 60*c83a76b0SSuyog Pawar typedef enum { 61*c83a76b0SSuyog Pawar IV_STATUS_NA = 0x7FFFFFFF, 62*c83a76b0SSuyog Pawar IV_SUCCESS = 0x0, 63*c83a76b0SSuyog Pawar IV_FAIL = 0x1, 64*c83a76b0SSuyog Pawar }IV_API_CALL_STATUS_T; 65*c83a76b0SSuyog Pawar 66*c83a76b0SSuyog Pawar 67*c83a76b0SSuyog Pawar /* IV_COLOR_FORMAT_T: This enumeration lists all the color formats which */ 68*c83a76b0SSuyog Pawar /* finds usage in video/image codecs */ 69*c83a76b0SSuyog Pawar 70*c83a76b0SSuyog Pawar typedef enum { 71*c83a76b0SSuyog Pawar IV_CHROMA_NA = 0x7FFFFFFF, 72*c83a76b0SSuyog Pawar IV_YUV_420P = 0x1, 73*c83a76b0SSuyog Pawar IV_YUV_422P = 0x2, 74*c83a76b0SSuyog Pawar IV_420_UV_INTL = 0x3, 75*c83a76b0SSuyog Pawar IV_YUV_422IBE = 0x4, 76*c83a76b0SSuyog Pawar IV_YUV_422ILE = 0x5, 77*c83a76b0SSuyog Pawar IV_YUV_444P = 0x6, 78*c83a76b0SSuyog Pawar IV_YUV_411P = 0x7, 79*c83a76b0SSuyog Pawar IV_GRAY = 0x8, 80*c83a76b0SSuyog Pawar IV_RGB_565 = 0x9, 81*c83a76b0SSuyog Pawar IV_RGB_24 = 0xa, 82*c83a76b0SSuyog Pawar IV_YUV_420SP_UV = 0xb, 83*c83a76b0SSuyog Pawar IV_YUV_420SP_VU = 0xc, 84*c83a76b0SSuyog Pawar IV_RGBA_8888 = 0xd 85*c83a76b0SSuyog Pawar }IV_COLOR_FORMAT_T; 86*c83a76b0SSuyog Pawar 87*c83a76b0SSuyog Pawar /* IV_PICTURE_CODING_TYPE_T: VOP/Frame coding type Enumeration */ 88*c83a76b0SSuyog Pawar 89*c83a76b0SSuyog Pawar typedef enum { 90*c83a76b0SSuyog Pawar IV_NA_FRAME = 0x7FFFFFFF, 91*c83a76b0SSuyog Pawar IV_I_FRAME = 0x0, 92*c83a76b0SSuyog Pawar IV_P_FRAME = 0x1, 93*c83a76b0SSuyog Pawar IV_B_FRAME = 0x2, 94*c83a76b0SSuyog Pawar IV_IDR_FRAME = 0x3, 95*c83a76b0SSuyog Pawar IV_II_FRAME = 0x4, 96*c83a76b0SSuyog Pawar IV_IP_FRAME = 0x5, 97*c83a76b0SSuyog Pawar IV_IB_FRAME = 0x6, 98*c83a76b0SSuyog Pawar IV_PI_FRAME = 0x7, 99*c83a76b0SSuyog Pawar IV_PP_FRAME = 0x8, 100*c83a76b0SSuyog Pawar IV_PB_FRAME = 0x9, 101*c83a76b0SSuyog Pawar IV_BI_FRAME = 0xa, 102*c83a76b0SSuyog Pawar IV_BP_FRAME = 0xb, 103*c83a76b0SSuyog Pawar IV_BB_FRAME = 0xc, 104*c83a76b0SSuyog Pawar IV_MBAFF_I_FRAME = 0xd, 105*c83a76b0SSuyog Pawar IV_MBAFF_P_FRAME = 0xe, 106*c83a76b0SSuyog Pawar IV_MBAFF_B_FRAME = 0xf, 107*c83a76b0SSuyog Pawar IV_MBAFF_IDR_FRAME = 0x10, 108*c83a76b0SSuyog Pawar IV_NOT_CODED_FRAME = 0x11, 109*c83a76b0SSuyog Pawar IV_FRAMETYPE_DEFAULT = IV_I_FRAME 110*c83a76b0SSuyog Pawar }IV_PICTURE_CODING_TYPE_T; 111*c83a76b0SSuyog Pawar 112*c83a76b0SSuyog Pawar /* IV_FLD_TYPE_T: field type Enumeration */ 113*c83a76b0SSuyog Pawar 114*c83a76b0SSuyog Pawar typedef enum { 115*c83a76b0SSuyog Pawar IV_NA_FLD = 0x7FFFFFFF, 116*c83a76b0SSuyog Pawar IV_TOP_FLD = 0x0, 117*c83a76b0SSuyog Pawar IV_BOT_FLD = 0x1, 118*c83a76b0SSuyog Pawar IV_FLD_TYPE_DEFAULT = IV_TOP_FLD 119*c83a76b0SSuyog Pawar }IV_FLD_TYPE_T; 120*c83a76b0SSuyog Pawar 121*c83a76b0SSuyog Pawar /* IV_CONTENT_TYPE_T: Video content type */ 122*c83a76b0SSuyog Pawar 123*c83a76b0SSuyog Pawar typedef enum { 124*c83a76b0SSuyog Pawar IV_CONTENTTYPE_NA = 0x7FFFFFFF, 125*c83a76b0SSuyog Pawar IV_PROGRESSIVE = 0x0, 126*c83a76b0SSuyog Pawar IV_INTERLACED = 0x1, 127*c83a76b0SSuyog Pawar IV_PROGRESSIVE_FRAME = 0x2, 128*c83a76b0SSuyog Pawar IV_INTERLACED_FRAME = 0x3, 129*c83a76b0SSuyog Pawar IV_INTERLACED_TOPFIELD = 0x4, 130*c83a76b0SSuyog Pawar IV_INTERLACED_BOTTOMFIELD = 0x5, 131*c83a76b0SSuyog Pawar IV_CONTENTTYPE_DEFAULT = IV_PROGRESSIVE, 132*c83a76b0SSuyog Pawar }IV_CONTENT_TYPE_T; 133*c83a76b0SSuyog Pawar 134*c83a76b0SSuyog Pawar /* IV_API_COMMAND_TYPE_T:API command type */ 135*c83a76b0SSuyog Pawar typedef enum { 136*c83a76b0SSuyog Pawar IV_CMD_NA = 0x7FFFFFFF, 137*c83a76b0SSuyog Pawar IV_CMD_DUMMY_ELEMENT = 0x4, 138*c83a76b0SSuyog Pawar }IV_API_COMMAND_TYPE_T; 139*c83a76b0SSuyog Pawar 140*c83a76b0SSuyog Pawar /*****************************************************************************/ 141*c83a76b0SSuyog Pawar /* Structure */ 142*c83a76b0SSuyog Pawar /*****************************************************************************/ 143*c83a76b0SSuyog Pawar 144*c83a76b0SSuyog Pawar /* IV_OBJ_T: This structure defines the handle for the codec instance */ 145*c83a76b0SSuyog Pawar 146*c83a76b0SSuyog Pawar typedef struct { 147*c83a76b0SSuyog Pawar /** 148*c83a76b0SSuyog Pawar * u4_size of the structure 149*c83a76b0SSuyog Pawar */ 150*c83a76b0SSuyog Pawar UWORD32 u4_size; 151*c83a76b0SSuyog Pawar 152*c83a76b0SSuyog Pawar /** 153*c83a76b0SSuyog Pawar * Pointer to the API function pointer table of the codec 154*c83a76b0SSuyog Pawar */ 155*c83a76b0SSuyog Pawar void *pv_fxns; 156*c83a76b0SSuyog Pawar 157*c83a76b0SSuyog Pawar /** 158*c83a76b0SSuyog Pawar * Pointer to the handle of the codec 159*c83a76b0SSuyog Pawar */ 160*c83a76b0SSuyog Pawar void *pv_codec_handle; 161*c83a76b0SSuyog Pawar }iv_obj_t; 162*c83a76b0SSuyog Pawar 163*c83a76b0SSuyog Pawar 164*c83a76b0SSuyog Pawar /* IV_YUV_BUF_T: This structure defines attributes for the yuv buffer */ 165*c83a76b0SSuyog Pawar 166*c83a76b0SSuyog Pawar typedef struct { 167*c83a76b0SSuyog Pawar /** 168*c83a76b0SSuyog Pawar * u4_size of the structure 169*c83a76b0SSuyog Pawar */ 170*c83a76b0SSuyog Pawar UWORD32 u4_size; 171*c83a76b0SSuyog Pawar 172*c83a76b0SSuyog Pawar /** 173*c83a76b0SSuyog Pawar * Pointer to Luma (Y) Buffer 174*c83a76b0SSuyog Pawar */ 175*c83a76b0SSuyog Pawar 176*c83a76b0SSuyog Pawar void *pv_y_buf; 177*c83a76b0SSuyog Pawar /** 178*c83a76b0SSuyog Pawar * Pointer to Chroma (Cb) Buffer 179*c83a76b0SSuyog Pawar */ 180*c83a76b0SSuyog Pawar void *pv_u_buf; 181*c83a76b0SSuyog Pawar 182*c83a76b0SSuyog Pawar /** 183*c83a76b0SSuyog Pawar * Pointer to Chroma (Cr) Buffer 184*c83a76b0SSuyog Pawar */ 185*c83a76b0SSuyog Pawar void *pv_v_buf; 186*c83a76b0SSuyog Pawar 187*c83a76b0SSuyog Pawar /** 188*c83a76b0SSuyog Pawar * Width of the Luma (Y) Buffer 189*c83a76b0SSuyog Pawar */ 190*c83a76b0SSuyog Pawar UWORD32 u4_y_wd; 191*c83a76b0SSuyog Pawar 192*c83a76b0SSuyog Pawar /** 193*c83a76b0SSuyog Pawar * Height of the Luma (Y) Buffer 194*c83a76b0SSuyog Pawar */ 195*c83a76b0SSuyog Pawar UWORD32 u4_y_ht; 196*c83a76b0SSuyog Pawar 197*c83a76b0SSuyog Pawar /** 198*c83a76b0SSuyog Pawar * Stride/Pitch of the Luma (Y) Buffer 199*c83a76b0SSuyog Pawar */ 200*c83a76b0SSuyog Pawar UWORD32 u4_y_strd; 201*c83a76b0SSuyog Pawar 202*c83a76b0SSuyog Pawar /** 203*c83a76b0SSuyog Pawar * Width of the Chroma (Cb) Buffer 204*c83a76b0SSuyog Pawar */ 205*c83a76b0SSuyog Pawar UWORD32 u4_u_wd; 206*c83a76b0SSuyog Pawar 207*c83a76b0SSuyog Pawar /** 208*c83a76b0SSuyog Pawar * Height of the Chroma (Cb) Buffer 209*c83a76b0SSuyog Pawar */ 210*c83a76b0SSuyog Pawar UWORD32 u4_u_ht; 211*c83a76b0SSuyog Pawar 212*c83a76b0SSuyog Pawar /** 213*c83a76b0SSuyog Pawar * Stride/Pitch of the Chroma (Cb) Buffer 214*c83a76b0SSuyog Pawar */ 215*c83a76b0SSuyog Pawar UWORD32 u4_u_strd; 216*c83a76b0SSuyog Pawar 217*c83a76b0SSuyog Pawar /** 218*c83a76b0SSuyog Pawar * Width of the Chroma (Cr) Buffer 219*c83a76b0SSuyog Pawar */ 220*c83a76b0SSuyog Pawar UWORD32 u4_v_wd; 221*c83a76b0SSuyog Pawar 222*c83a76b0SSuyog Pawar /** 223*c83a76b0SSuyog Pawar * Height of the Chroma (Cr) Buffer 224*c83a76b0SSuyog Pawar */ 225*c83a76b0SSuyog Pawar UWORD32 u4_v_ht; 226*c83a76b0SSuyog Pawar 227*c83a76b0SSuyog Pawar /** 228*c83a76b0SSuyog Pawar * Stride/Pitch of the Chroma (Cr) Buffer 229*c83a76b0SSuyog Pawar */ 230*c83a76b0SSuyog Pawar UWORD32 u4_v_strd; 231*c83a76b0SSuyog Pawar }iv_yuv_buf_t; 232*c83a76b0SSuyog Pawar 233*c83a76b0SSuyog Pawar 234*c83a76b0SSuyog Pawar 235*c83a76b0SSuyog Pawar #endif /* _IV_H */ 236*c83a76b0SSuyog Pawar 237