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