1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2018 The Android Open Source Project 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 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*c83a76b0SSuyog Pawar */ 20*c83a76b0SSuyog Pawar /*! 21*c83a76b0SSuyog Pawar ****************************************************************************** 22*c83a76b0SSuyog Pawar * \file itt_video_api.h 23*c83a76b0SSuyog Pawar * 24*c83a76b0SSuyog Pawar * \brief 25*c83a76b0SSuyog Pawar * This file contains the necessary structure and enumeration definitions 26*c83a76b0SSuyog Pawar * needed for the Application Program Interface(API) 27*c83a76b0SSuyog Pawar * 28*c83a76b0SSuyog Pawar * \date 29*c83a76b0SSuyog Pawar * 18 09 2010 30*c83a76b0SSuyog Pawar * 31*c83a76b0SSuyog Pawar * \author 32*c83a76b0SSuyog Pawar * Ittiam 33*c83a76b0SSuyog Pawar * 34*c83a76b0SSuyog Pawar ****************************************************************************** 35*c83a76b0SSuyog Pawar */ 36*c83a76b0SSuyog Pawar #ifndef _ITT_VIDEO_API_H_ 37*c83a76b0SSuyog Pawar #define _ITT_VIDEO_API_H_ 38*c83a76b0SSuyog Pawar 39*c83a76b0SSuyog Pawar /*****************************************************************************/ 40*c83a76b0SSuyog Pawar /* Constant Macros */ 41*c83a76b0SSuyog Pawar /*****************************************************************************/ 42*c83a76b0SSuyog Pawar 43*c83a76b0SSuyog Pawar /*****************************************************************************/ 44*c83a76b0SSuyog Pawar /* Typedefs */ 45*c83a76b0SSuyog Pawar /*****************************************************************************/ 46*c83a76b0SSuyog Pawar 47*c83a76b0SSuyog Pawar /*****************************************************************************/ 48*c83a76b0SSuyog Pawar /* Enums */ 49*c83a76b0SSuyog Pawar /*****************************************************************************/ 50*c83a76b0SSuyog Pawar 51*c83a76b0SSuyog Pawar /** @brief IV_API_CALL_STATUS_T: This is only to return the FAIL/PASS status to the 52*c83a76b0SSuyog Pawar * application for the current API call 53*c83a76b0SSuyog Pawar */ 54*c83a76b0SSuyog Pawar 55*c83a76b0SSuyog Pawar typedef enum 56*c83a76b0SSuyog Pawar { 57*c83a76b0SSuyog Pawar IV_FAIL = 0xFFFFFFFF, 58*c83a76b0SSuyog Pawar IV_SUCCESS = 0 59*c83a76b0SSuyog Pawar } IV_API_CALL_STATUS_T; 60*c83a76b0SSuyog Pawar 61*c83a76b0SSuyog Pawar typedef enum 62*c83a76b0SSuyog Pawar { 63*c83a76b0SSuyog Pawar ARCH_NA = 0x7FFFFFFF, 64*c83a76b0SSuyog Pawar ARCH_ARM_NONEON = 0x0, 65*c83a76b0SSuyog Pawar ARCH_ARM_V8_NEON, 66*c83a76b0SSuyog Pawar ARCH_ARM_A9Q, 67*c83a76b0SSuyog Pawar ARCH_ARM_A7, 68*c83a76b0SSuyog Pawar ARCH_ARM_A5, 69*c83a76b0SSuyog Pawar ARCH_ARM_NEONINTR, 70*c83a76b0SSuyog Pawar ARCH_X86_GENERIC, 71*c83a76b0SSuyog Pawar ARCH_X86_SSSE3, 72*c83a76b0SSuyog Pawar ARCH_X86_SSE4, 73*c83a76b0SSuyog Pawar ARCH_X86_AVX, 74*c83a76b0SSuyog Pawar ARCH_X86_AVX2 75*c83a76b0SSuyog Pawar } IV_ARCH_T; 76*c83a76b0SSuyog Pawar 77*c83a76b0SSuyog Pawar /** @brief IV_MEM_TYPE_T: This Enumeration defines the type of memory (Internal/Ext 78*c83a76b0SSuyog Pawar * -ernal) along with the cacheable/non-cacheable attributes 79*c83a76b0SSuyog Pawar * Additional memtypes added ( Normal, Numa_Node0, Numa_node1) 80*c83a76b0SSuyog Pawar */ 81*c83a76b0SSuyog Pawar 82*c83a76b0SSuyog Pawar typedef enum 83*c83a76b0SSuyog Pawar { 84*c83a76b0SSuyog Pawar IV_NA_MEM_TYPE = 0xFFFFFFFF, 85*c83a76b0SSuyog Pawar IV_INTERNAL_CACHEABLE_PERSISTENT_MEM = 0x1, 86*c83a76b0SSuyog Pawar IV_INTERNAL_CACHEABLE_SCRATCH_MEM = 0x2, 87*c83a76b0SSuyog Pawar IV_EXTERNAL_CACHEABLE_PERSISTENT_MEM = 0x3, 88*c83a76b0SSuyog Pawar IV_EXTERNAL_CACHEABLE_SCRATCH_MEM = 0x4, 89*c83a76b0SSuyog Pawar IV_INTERNAL_NONCACHEABLE_PERSISTENT_MEM = 0x5, 90*c83a76b0SSuyog Pawar IV_INTERNAL_NONCACHEABLE_SCRATCH_MEM = 0x6, 91*c83a76b0SSuyog Pawar IV_EXTERNAL_NONCACHEABLE_PERSISTENT_MEM = 0x7, 92*c83a76b0SSuyog Pawar IV_EXTERNAL_NONCACHEABLE_SCRATCH_MEM = 0x8, 93*c83a76b0SSuyog Pawar 94*c83a76b0SSuyog Pawar IV_EXT_CACHEABLE_NORMAL_MEM = 0x9, 95*c83a76b0SSuyog Pawar IV_EXT_CACHEABLE_NUMA_NODE0_MEM = 0xA, 96*c83a76b0SSuyog Pawar IV_EXT_CACHEABLE_NUMA_NODE1_MEM = 0xB, 97*c83a76b0SSuyog Pawar 98*c83a76b0SSuyog Pawar } IV_MEM_TYPE_T; 99*c83a76b0SSuyog Pawar 100*c83a76b0SSuyog Pawar /** @brief IV_COLOR_FORMAT_T: This enumeration lists all the color formats which 101*c83a76b0SSuyog Pawar * finds usage in video/image codecs 102*c83a76b0SSuyog Pawar */ 103*c83a76b0SSuyog Pawar 104*c83a76b0SSuyog Pawar typedef enum 105*c83a76b0SSuyog Pawar { 106*c83a76b0SSuyog Pawar IV_CHROMA_NA = 0xFFFFFFFF, 107*c83a76b0SSuyog Pawar IV_YUV_420P = 0x1, 108*c83a76b0SSuyog Pawar IV_YUV_422P = 0x2, 109*c83a76b0SSuyog Pawar IV_420_UV_INTL = 0x3, 110*c83a76b0SSuyog Pawar IV_YUV_422IBE = 0x4, 111*c83a76b0SSuyog Pawar IV_YUV_422ILE = 0x5, 112*c83a76b0SSuyog Pawar IV_YUV_444P = 0x6, 113*c83a76b0SSuyog Pawar IV_YUV_411P = 0x7, 114*c83a76b0SSuyog Pawar IV_GRAY = 0x8, 115*c83a76b0SSuyog Pawar IV_RGB_565 = 0x9, 116*c83a76b0SSuyog Pawar IV_RGB_24 = 0xa, 117*c83a76b0SSuyog Pawar IV_YUV_420SP_UV = 0xb, 118*c83a76b0SSuyog Pawar IV_YUV_420SP_VU = 0xc, 119*c83a76b0SSuyog Pawar IV_YUV_422SP_UV = 0xd, 120*c83a76b0SSuyog Pawar IV_YUV_422SP_VU = 0xe 121*c83a76b0SSuyog Pawar 122*c83a76b0SSuyog Pawar } IV_COLOR_FORMAT_T; 123*c83a76b0SSuyog Pawar 124*c83a76b0SSuyog Pawar /** @brief IV_PICTURE_CODING_TYPE_T: VOP/Frame coding type Enumeration */ 125*c83a76b0SSuyog Pawar 126*c83a76b0SSuyog Pawar typedef enum 127*c83a76b0SSuyog Pawar { 128*c83a76b0SSuyog Pawar IV_NA_FRAME = 0xFFFFFFFF, 129*c83a76b0SSuyog Pawar IV_I_FRAME = 0x0, 130*c83a76b0SSuyog Pawar IV_P_FRAME = 0x1, 131*c83a76b0SSuyog Pawar IV_B_FRAME = 0x2, 132*c83a76b0SSuyog Pawar IV_IDR_FRAME = 0x3, 133*c83a76b0SSuyog Pawar IV_II_FRAME = 0x4, 134*c83a76b0SSuyog Pawar IV_IP_FRAME = 0x5, 135*c83a76b0SSuyog Pawar IV_IB_FRAME = 0x6, 136*c83a76b0SSuyog Pawar IV_PI_FRAME = 0x7, 137*c83a76b0SSuyog Pawar IV_PP_FRAME = 0x8, 138*c83a76b0SSuyog Pawar IV_PB_FRAME = 0x9, 139*c83a76b0SSuyog Pawar IV_BI_FRAME = 0xa, 140*c83a76b0SSuyog Pawar IV_BP_FRAME = 0xb, 141*c83a76b0SSuyog Pawar IV_BB_FRAME = 0xc, 142*c83a76b0SSuyog Pawar IV_MBAFF_I_FRAME = 0xd, 143*c83a76b0SSuyog Pawar IV_MBAFF_P_FRAME = 0xe, 144*c83a76b0SSuyog Pawar IV_MBAFF_B_FRAME = 0xf, 145*c83a76b0SSuyog Pawar IV_MBAFF_IDR_FRAME = 0x10, 146*c83a76b0SSuyog Pawar IV_NOT_CODED_FRAME = 0x11, 147*c83a76b0SSuyog Pawar IV_FRAMETYPE_DEFAULT = IV_I_FRAME 148*c83a76b0SSuyog Pawar } IV_PICTURE_CODING_TYPE_T; 149*c83a76b0SSuyog Pawar 150*c83a76b0SSuyog Pawar /* @brief IV_FLD_TYPE_T: field type Enumeration */ 151*c83a76b0SSuyog Pawar 152*c83a76b0SSuyog Pawar typedef enum 153*c83a76b0SSuyog Pawar { 154*c83a76b0SSuyog Pawar IV_NA_FLD = 0xFFFFFFFF, 155*c83a76b0SSuyog Pawar IV_TOP_FLD = 0x0, 156*c83a76b0SSuyog Pawar IV_BOT_FLD = 0x1, 157*c83a76b0SSuyog Pawar IV_FLD_TYPE_DEFAULT = IV_TOP_FLD 158*c83a76b0SSuyog Pawar } IV_FLD_TYPE_T; 159*c83a76b0SSuyog Pawar 160*c83a76b0SSuyog Pawar /* @brief IV_CONTENT_TYPE_T: Video content type */ 161*c83a76b0SSuyog Pawar 162*c83a76b0SSuyog Pawar typedef enum 163*c83a76b0SSuyog Pawar { 164*c83a76b0SSuyog Pawar IV_CONTENTTYPE_NA = -1, 165*c83a76b0SSuyog Pawar IV_PROGRESSIVE = 0x0, 166*c83a76b0SSuyog Pawar IV_INTERLACED = 0x1, 167*c83a76b0SSuyog Pawar IV_PROGRESSIVE_FRAME = 0x2, 168*c83a76b0SSuyog Pawar IV_INTERLACED_FRAME = 0x3, 169*c83a76b0SSuyog Pawar IV_INTERLACED_TOPFIELD = 0x4, 170*c83a76b0SSuyog Pawar IV_INTERLACED_BOTTOMFIELD = 0x5, 171*c83a76b0SSuyog Pawar IV_CONTENTTYPE_DEFAULT = IV_PROGRESSIVE, 172*c83a76b0SSuyog Pawar } IV_CONTENT_TYPE_T; 173*c83a76b0SSuyog Pawar 174*c83a76b0SSuyog Pawar /*****************************************************************************/ 175*c83a76b0SSuyog Pawar /* Structure */ 176*c83a76b0SSuyog Pawar /*****************************************************************************/ 177*c83a76b0SSuyog Pawar 178*c83a76b0SSuyog Pawar /* @brief iv_mem_rec_t: This structure defines the memory record holder which will 179*c83a76b0SSuyog Pawar * be used by the modules to communicate its memory requirements to the 180*c83a76b0SSuyog Pawar * memory manager through appropriate API functions 181*c83a76b0SSuyog Pawar */ 182*c83a76b0SSuyog Pawar 183*c83a76b0SSuyog Pawar typedef struct 184*c83a76b0SSuyog Pawar { 185*c83a76b0SSuyog Pawar /** i4_size of the structure : used for verison tracking */ 186*c83a76b0SSuyog Pawar WORD32 i4_size; 187*c83a76b0SSuyog Pawar 188*c83a76b0SSuyog Pawar /** Pointer to the memory allocated by the memory manager */ 189*c83a76b0SSuyog Pawar void *pv_base; 190*c83a76b0SSuyog Pawar 191*c83a76b0SSuyog Pawar /** size of the memory to be allocated */ 192*c83a76b0SSuyog Pawar WORD32 i4_mem_size; 193*c83a76b0SSuyog Pawar 194*c83a76b0SSuyog Pawar /** Alignment of the memory pointer */ 195*c83a76b0SSuyog Pawar WORD32 i4_mem_alignment; 196*c83a76b0SSuyog Pawar 197*c83a76b0SSuyog Pawar /** Nature of the memory to be allocated */ 198*c83a76b0SSuyog Pawar IV_MEM_TYPE_T e_mem_type; 199*c83a76b0SSuyog Pawar 200*c83a76b0SSuyog Pawar } iv_mem_rec_t; 201*c83a76b0SSuyog Pawar 202*c83a76b0SSuyog Pawar /* @brief iv_input_bufs_req_t: This structure contains the parameters 203*c83a76b0SSuyog Pawar * related to input (data and control) buffer requirements of the codec. 204*c83a76b0SSuyog Pawar * Application can call the memory query API to get these requirements 205*c83a76b0SSuyog Pawar */ 206*c83a76b0SSuyog Pawar 207*c83a76b0SSuyog Pawar typedef struct 208*c83a76b0SSuyog Pawar { 209*c83a76b0SSuyog Pawar /** i4_size of the structure : used for verison tracking */ 210*c83a76b0SSuyog Pawar WORD32 i4_size; 211*c83a76b0SSuyog Pawar 212*c83a76b0SSuyog Pawar /** Minimum sets of input buffers required for the codec */ 213*c83a76b0SSuyog Pawar WORD32 i4_min_num_yuv_bufs; 214*c83a76b0SSuyog Pawar 215*c83a76b0SSuyog Pawar /** YUV format of the input */ 216*c83a76b0SSuyog Pawar WORD32 i4_yuv_format; 217*c83a76b0SSuyog Pawar 218*c83a76b0SSuyog Pawar /** Minimum Size in bytes of Luma input buffer */ 219*c83a76b0SSuyog Pawar WORD32 i4_min_size_y_buf; 220*c83a76b0SSuyog Pawar 221*c83a76b0SSuyog Pawar /** Minimum Size in bytes of CB-CR input buffer . 222*c83a76b0SSuyog Pawar * if input format is Semiplanar then size will include 223*c83a76b0SSuyog Pawar * both Cb and Cr requirements 224*c83a76b0SSuyog Pawar */ 225*c83a76b0SSuyog Pawar WORD32 i4_min_size_uv_buf; 226*c83a76b0SSuyog Pawar 227*c83a76b0SSuyog Pawar /** Minimum sets of Synchoronus command buffers 228*c83a76b0SSuyog Pawar * required for the codec 229*c83a76b0SSuyog Pawar */ 230*c83a76b0SSuyog Pawar WORD32 i4_min_num_synch_ctrl_bufs; 231*c83a76b0SSuyog Pawar 232*c83a76b0SSuyog Pawar /** Minimum size of the Synchoronus command buffer */ 233*c83a76b0SSuyog Pawar WORD32 i4_min_size_synch_ctrl_bufs; 234*c83a76b0SSuyog Pawar 235*c83a76b0SSuyog Pawar /** Minimum sets of Asynchoronus command buffers 236*c83a76b0SSuyog Pawar * required for the codec 237*c83a76b0SSuyog Pawar */ 238*c83a76b0SSuyog Pawar WORD32 i4_min_num_asynch_ctrl_bufs; 239*c83a76b0SSuyog Pawar 240*c83a76b0SSuyog Pawar /** Minimum size of the Asynchoronus command buffer */ 241*c83a76b0SSuyog Pawar WORD32 i4_min_size_asynch_ctrl_bufs; 242*c83a76b0SSuyog Pawar 243*c83a76b0SSuyog Pawar } iv_input_bufs_req_t; 244*c83a76b0SSuyog Pawar 245*c83a76b0SSuyog Pawar /* @brief iv_output_bufs_req_t: This structure contains the parameters 246*c83a76b0SSuyog Pawar * related to output (data and control) buffer requirements for a 247*c83a76b0SSuyog Pawar * given target resolution of the codec 248*c83a76b0SSuyog Pawar */ 249*c83a76b0SSuyog Pawar 250*c83a76b0SSuyog Pawar typedef struct 251*c83a76b0SSuyog Pawar { 252*c83a76b0SSuyog Pawar /** i4_size of the structure : used for verison tracking */ 253*c83a76b0SSuyog Pawar WORD32 i4_size; 254*c83a76b0SSuyog Pawar 255*c83a76b0SSuyog Pawar /** Minimum sets of output buffers required for the codec */ 256*c83a76b0SSuyog Pawar WORD32 i4_min_num_out_bufs; 257*c83a76b0SSuyog Pawar 258*c83a76b0SSuyog Pawar /** Minimum Size in bytes of bitstream buffer */ 259*c83a76b0SSuyog Pawar WORD32 i4_min_size_bitstream_buf; 260*c83a76b0SSuyog Pawar 261*c83a76b0SSuyog Pawar } iv_output_bufs_req_t; 262*c83a76b0SSuyog Pawar 263*c83a76b0SSuyog Pawar /* @brief iv_recon_bufs_req_t: This structure contains the parameters 264*c83a76b0SSuyog Pawar * related to recon buffer requirements for a 265*c83a76b0SSuyog Pawar * given target resolution of the codec 266*c83a76b0SSuyog Pawar */ 267*c83a76b0SSuyog Pawar 268*c83a76b0SSuyog Pawar typedef struct 269*c83a76b0SSuyog Pawar { 270*c83a76b0SSuyog Pawar /** i4_size of the structure : used for verison tracking */ 271*c83a76b0SSuyog Pawar WORD32 i4_size; 272*c83a76b0SSuyog Pawar 273*c83a76b0SSuyog Pawar /** Minimum sets of recon buffers required for the codec */ 274*c83a76b0SSuyog Pawar WORD32 i4_min_num_recon_bufs; 275*c83a76b0SSuyog Pawar 276*c83a76b0SSuyog Pawar /** Minimum Size in bytes of Luma input buffer */ 277*c83a76b0SSuyog Pawar WORD32 i4_min_size_y_buf; 278*c83a76b0SSuyog Pawar 279*c83a76b0SSuyog Pawar /** Minimum Size in bytes of CB-CR input buffer . 280*c83a76b0SSuyog Pawar * if input format is Semiplanar then size will include 281*c83a76b0SSuyog Pawar * both Cb and Cr requirements 282*c83a76b0SSuyog Pawar */ 283*c83a76b0SSuyog Pawar WORD32 i4_min_size_uv_buf; 284*c83a76b0SSuyog Pawar 285*c83a76b0SSuyog Pawar } iv_recon_bufs_req_t; 286*c83a76b0SSuyog Pawar 287*c83a76b0SSuyog Pawar /* @brief iv_input_data_ctrl_buffs_desc_t: This structure contains the parameters 288*c83a76b0SSuyog Pawar * related to input (data and sync control) buffers 289*c83a76b0SSuyog Pawar * application should allocate these buffers and pass to the codec 290*c83a76b0SSuyog Pawar */ 291*c83a76b0SSuyog Pawar 292*c83a76b0SSuyog Pawar typedef struct 293*c83a76b0SSuyog Pawar { 294*c83a76b0SSuyog Pawar /** i4_size of the structure : used for verison tracking */ 295*c83a76b0SSuyog Pawar WORD32 i4_size; 296*c83a76b0SSuyog Pawar 297*c83a76b0SSuyog Pawar /** Number of sets of input buffers allocated by application */ 298*c83a76b0SSuyog Pawar WORD32 i4_num_yuv_bufs; 299*c83a76b0SSuyog Pawar 300*c83a76b0SSuyog Pawar /** Size in bytes of each Luma input buffers passed */ 301*c83a76b0SSuyog Pawar WORD32 i4_size_y_buf; 302*c83a76b0SSuyog Pawar 303*c83a76b0SSuyog Pawar /** Pointer to array of input Luma buffer pointers */ 304*c83a76b0SSuyog Pawar void **ppv_y_buf; 305*c83a76b0SSuyog Pawar 306*c83a76b0SSuyog Pawar /** Size in bytes of each CB-CR input buffer passed. 307*c83a76b0SSuyog Pawar * if input format is Semiplanar then size should include 308*c83a76b0SSuyog Pawar * both Cb and Cr requirements 309*c83a76b0SSuyog Pawar */ 310*c83a76b0SSuyog Pawar WORD32 i4_size_uv_buf; 311*c83a76b0SSuyog Pawar 312*c83a76b0SSuyog Pawar /** Pointer to array of input Chroma Cb buffer pointers */ 313*c83a76b0SSuyog Pawar void **ppv_u_buf; 314*c83a76b0SSuyog Pawar 315*c83a76b0SSuyog Pawar /** Pointer to array of input Chroma Cr buffer pointers 316*c83a76b0SSuyog Pawar * Applicalbe if input format is planar 317*c83a76b0SSuyog Pawar */ 318*c83a76b0SSuyog Pawar void **ppv_v_buf; 319*c83a76b0SSuyog Pawar 320*c83a76b0SSuyog Pawar /** Number of sets of sync control buffers allocated by application */ 321*c83a76b0SSuyog Pawar WORD32 i4_num_synch_ctrl_bufs; 322*c83a76b0SSuyog Pawar 323*c83a76b0SSuyog Pawar /** Size of the each Synchoronus command buffer passed*/ 324*c83a76b0SSuyog Pawar WORD32 i4_size_synch_ctrl_bufs; 325*c83a76b0SSuyog Pawar 326*c83a76b0SSuyog Pawar /** Pointer to array of input sync command buffer pointers */ 327*c83a76b0SSuyog Pawar void **ppv_synch_ctrl_bufs; 328*c83a76b0SSuyog Pawar 329*c83a76b0SSuyog Pawar } iv_input_data_ctrl_buffs_desc_t; 330*c83a76b0SSuyog Pawar 331*c83a76b0SSuyog Pawar /* @brief iv_input_asynch_ctrl_buffs_desc_t: This structure contains the parameters 332*c83a76b0SSuyog Pawar * related to input async control buffers 333*c83a76b0SSuyog Pawar * application should allocate these buffers and pass to the codec 334*c83a76b0SSuyog Pawar */ 335*c83a76b0SSuyog Pawar 336*c83a76b0SSuyog Pawar typedef struct 337*c83a76b0SSuyog Pawar { 338*c83a76b0SSuyog Pawar /** i4_size of the structure : used for verison tracking */ 339*c83a76b0SSuyog Pawar WORD32 i4_size; 340*c83a76b0SSuyog Pawar 341*c83a76b0SSuyog Pawar /** Number of sets of async control buffers allocated by application */ 342*c83a76b0SSuyog Pawar WORD32 i4_num_asynch_ctrl_bufs; 343*c83a76b0SSuyog Pawar 344*c83a76b0SSuyog Pawar /** Size of each Asynchoronus command buffer */ 345*c83a76b0SSuyog Pawar WORD32 i4_size_asynch_ctrl_bufs; 346*c83a76b0SSuyog Pawar 347*c83a76b0SSuyog Pawar /** Pointer to array of async command buffer pointers */ 348*c83a76b0SSuyog Pawar void **ppv_asynch_ctrl_bufs; 349*c83a76b0SSuyog Pawar 350*c83a76b0SSuyog Pawar } iv_input_asynch_ctrl_buffs_desc_t; 351*c83a76b0SSuyog Pawar 352*c83a76b0SSuyog Pawar /* @brief iv_output_data_buffs_desc_t: This structure contains the parameters 353*c83a76b0SSuyog Pawar * related to output data buffers for a given resolution layer 354*c83a76b0SSuyog Pawar * application should allocate these buffers and pass to the codec 355*c83a76b0SSuyog Pawar */ 356*c83a76b0SSuyog Pawar 357*c83a76b0SSuyog Pawar typedef struct 358*c83a76b0SSuyog Pawar { 359*c83a76b0SSuyog Pawar /** i4_size of the structure : used for verison tracking */ 360*c83a76b0SSuyog Pawar WORD32 i4_size; 361*c83a76b0SSuyog Pawar 362*c83a76b0SSuyog Pawar /** Number of sets of output buffers allocated by application */ 363*c83a76b0SSuyog Pawar WORD32 i4_num_bitstream_bufs; 364*c83a76b0SSuyog Pawar 365*c83a76b0SSuyog Pawar /** Size in bytes of each bitstream buffer passed */ 366*c83a76b0SSuyog Pawar WORD32 i4_size_bitstream_buf; 367*c83a76b0SSuyog Pawar 368*c83a76b0SSuyog Pawar /** Pointer to array of output buffer pointers */ 369*c83a76b0SSuyog Pawar void **ppv_bitstream_bufs; 370*c83a76b0SSuyog Pawar 371*c83a76b0SSuyog Pawar } iv_output_data_buffs_desc_t; 372*c83a76b0SSuyog Pawar 373*c83a76b0SSuyog Pawar /* @brief iv_output_status_buffs_desc_t: This structure contains the parameters 374*c83a76b0SSuyog Pawar * related to output control acknowledgement buffers 375*c83a76b0SSuyog Pawar * application should allocate these buffers and pass to the codec 376*c83a76b0SSuyog Pawar */ 377*c83a76b0SSuyog Pawar 378*c83a76b0SSuyog Pawar typedef struct 379*c83a76b0SSuyog Pawar { 380*c83a76b0SSuyog Pawar /** i4_size of the structure : used for verison tracking */ 381*c83a76b0SSuyog Pawar WORD32 i4_size; 382*c83a76b0SSuyog Pawar 383*c83a76b0SSuyog Pawar /** Number of sets of async control ack buffers allocated by application */ 384*c83a76b0SSuyog Pawar WORD32 i4_num_asynch_status_bufs; 385*c83a76b0SSuyog Pawar 386*c83a76b0SSuyog Pawar /** Size of each Asynchoronus command acknowledge buffer passed */ 387*c83a76b0SSuyog Pawar WORD32 i4_size_asynch_status_bufs; 388*c83a76b0SSuyog Pawar 389*c83a76b0SSuyog Pawar /** Pointer to array of async command ack buffer pointers */ 390*c83a76b0SSuyog Pawar void **ppv_asynch_status_bufs; 391*c83a76b0SSuyog Pawar 392*c83a76b0SSuyog Pawar } iv_output_status_buffs_desc_t; 393*c83a76b0SSuyog Pawar 394*c83a76b0SSuyog Pawar /* @brief iv_recon_data_buffs_desc_t: This structure contains the parameters 395*c83a76b0SSuyog Pawar * related to recon data buffers 396*c83a76b0SSuyog Pawar * application should allocate these buffers and pass to the codec 397*c83a76b0SSuyog Pawar */ 398*c83a76b0SSuyog Pawar 399*c83a76b0SSuyog Pawar typedef struct 400*c83a76b0SSuyog Pawar { 401*c83a76b0SSuyog Pawar /** i4_size of the structure : used for verison tracking */ 402*c83a76b0SSuyog Pawar WORD32 i4_size; 403*c83a76b0SSuyog Pawar 404*c83a76b0SSuyog Pawar /** Number of sets of recon buffers allocated by application */ 405*c83a76b0SSuyog Pawar WORD32 i4_num_recon_bufs; 406*c83a76b0SSuyog Pawar 407*c83a76b0SSuyog Pawar /** Size in bytes of each Luma recon buffers passed */ 408*c83a76b0SSuyog Pawar WORD32 i4_size_y_buf; 409*c83a76b0SSuyog Pawar 410*c83a76b0SSuyog Pawar /** Pointer to array of recon Luma buffer pointers */ 411*c83a76b0SSuyog Pawar void **ppv_y_buf; 412*c83a76b0SSuyog Pawar 413*c83a76b0SSuyog Pawar /** Size in bytes of each CB-CR recon buffer passed. 414*c83a76b0SSuyog Pawar * if input format is Semiplanar then size should include 415*c83a76b0SSuyog Pawar * both Cb and Cr requirements 416*c83a76b0SSuyog Pawar */ 417*c83a76b0SSuyog Pawar WORD32 i4_size_uv_buf; 418*c83a76b0SSuyog Pawar 419*c83a76b0SSuyog Pawar /** Pointer to array of recon Chroma Cb buffer pointers */ 420*c83a76b0SSuyog Pawar void **ppv_u_buf; 421*c83a76b0SSuyog Pawar 422*c83a76b0SSuyog Pawar /** Pointer to array of recon Chroma Cr buffer pointers 423*c83a76b0SSuyog Pawar * Applicalbe if input format is planar 424*c83a76b0SSuyog Pawar */ 425*c83a76b0SSuyog Pawar void **ppv_v_buf; 426*c83a76b0SSuyog Pawar 427*c83a76b0SSuyog Pawar } iv_recon_data_buffs_desc_t; 428*c83a76b0SSuyog Pawar 429*c83a76b0SSuyog Pawar /* @brief IV_YUV_BUF_T: This structure defines attributes 430*c83a76b0SSuyog Pawar * for the input yuv buffer 431*c83a76b0SSuyog Pawar */ 432*c83a76b0SSuyog Pawar typedef struct 433*c83a76b0SSuyog Pawar { 434*c83a76b0SSuyog Pawar /** i4_size of the structure */ 435*c83a76b0SSuyog Pawar WORD32 i4_size; 436*c83a76b0SSuyog Pawar 437*c83a76b0SSuyog Pawar /** Pointer to Luma (Y) Buffer */ 438*c83a76b0SSuyog Pawar void *pv_y_buf; 439*c83a76b0SSuyog Pawar 440*c83a76b0SSuyog Pawar /** Pointer to Chroma (Cb) Buffer */ 441*c83a76b0SSuyog Pawar void *pv_u_buf; 442*c83a76b0SSuyog Pawar 443*c83a76b0SSuyog Pawar /** Pointer to Chroma (Cr) Buffer */ 444*c83a76b0SSuyog Pawar void *pv_v_buf; 445*c83a76b0SSuyog Pawar 446*c83a76b0SSuyog Pawar /** Width of the Luma (Y) Buffer in pixels */ 447*c83a76b0SSuyog Pawar WORD32 i4_y_wd; 448*c83a76b0SSuyog Pawar 449*c83a76b0SSuyog Pawar /** Height of the Luma (Y) Buffer in pixels */ 450*c83a76b0SSuyog Pawar WORD32 i4_y_ht; 451*c83a76b0SSuyog Pawar 452*c83a76b0SSuyog Pawar /** Stride/Pitch of the Luma (Y) Buffer */ 453*c83a76b0SSuyog Pawar WORD32 i4_y_strd; 454*c83a76b0SSuyog Pawar 455*c83a76b0SSuyog Pawar /** Width of the Chroma (Cb / Cr) Buffer in pixels */ 456*c83a76b0SSuyog Pawar WORD32 i4_uv_wd; 457*c83a76b0SSuyog Pawar 458*c83a76b0SSuyog Pawar /** Height of the Chroma (Cb / Cr) Buffer in pixels */ 459*c83a76b0SSuyog Pawar WORD32 i4_uv_ht; 460*c83a76b0SSuyog Pawar 461*c83a76b0SSuyog Pawar /** Stride/Pitch of the Chroma (Cb / Cr) Buffer */ 462*c83a76b0SSuyog Pawar WORD32 i4_uv_strd; 463*c83a76b0SSuyog Pawar 464*c83a76b0SSuyog Pawar } iv_yuv_buf_t; 465*c83a76b0SSuyog Pawar 466*c83a76b0SSuyog Pawar #endif /* _ITT_VIDEO_API_H_ */ 467