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 * ivd.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 Decoders 27*c83a76b0SSuyog Pawar * 28*c83a76b0SSuyog Pawar * @author 29*c83a76b0SSuyog Pawar * 100239(RCY) 30*c83a76b0SSuyog Pawar * 31*c83a76b0SSuyog Pawar * @remarks 32*c83a76b0SSuyog Pawar * None 33*c83a76b0SSuyog Pawar * 34*c83a76b0SSuyog Pawar ******************************************************************************* 35*c83a76b0SSuyog Pawar */ 36*c83a76b0SSuyog Pawar 37*c83a76b0SSuyog Pawar #ifndef _IVD_H 38*c83a76b0SSuyog Pawar #define _IVD_H 39*c83a76b0SSuyog Pawar 40*c83a76b0SSuyog Pawar /*****************************************************************************/ 41*c83a76b0SSuyog Pawar /* Constant Macros */ 42*c83a76b0SSuyog Pawar /*****************************************************************************/ 43*c83a76b0SSuyog Pawar #define IVD_VIDDEC_MAX_IO_BUFFERS 64 44*c83a76b0SSuyog Pawar /*****************************************************************************/ 45*c83a76b0SSuyog Pawar /* Typedefs */ 46*c83a76b0SSuyog Pawar /*****************************************************************************/ 47*c83a76b0SSuyog Pawar 48*c83a76b0SSuyog Pawar /*****************************************************************************/ 49*c83a76b0SSuyog Pawar /* Enums */ 50*c83a76b0SSuyog Pawar /*****************************************************************************/ 51*c83a76b0SSuyog Pawar 52*c83a76b0SSuyog Pawar /* IVD_ARCH_T: Architecture Enumeration */ 53*c83a76b0SSuyog Pawar typedef enum 54*c83a76b0SSuyog Pawar { 55*c83a76b0SSuyog Pawar ARCH_NA = 0x7FFFFFFF, 56*c83a76b0SSuyog Pawar ARCH_ARM_NONEON = 0x0, 57*c83a76b0SSuyog Pawar ARCH_ARM_A9Q, 58*c83a76b0SSuyog Pawar ARCH_ARM_A9A, 59*c83a76b0SSuyog Pawar ARCH_ARM_A9, 60*c83a76b0SSuyog Pawar ARCH_ARM_A7, 61*c83a76b0SSuyog Pawar ARCH_ARM_A5, 62*c83a76b0SSuyog Pawar ARCH_ARM_A15, 63*c83a76b0SSuyog Pawar ARCH_ARM_NEONINTR, 64*c83a76b0SSuyog Pawar ARCH_ARMV8_GENERIC, 65*c83a76b0SSuyog Pawar ARCH_X86_GENERIC = 0x100, 66*c83a76b0SSuyog Pawar ARCH_X86_SSSE3, 67*c83a76b0SSuyog Pawar ARCH_X86_SSE42, 68*c83a76b0SSuyog Pawar ARCH_X86_AVX2, 69*c83a76b0SSuyog Pawar ARCH_MIPS_GENERIC = 0x200, 70*c83a76b0SSuyog Pawar ARCH_MIPS_32, 71*c83a76b0SSuyog Pawar ARCH_RISCV64_GENERIC = 0x400, 72*c83a76b0SSuyog Pawar }IVD_ARCH_T; 73*c83a76b0SSuyog Pawar 74*c83a76b0SSuyog Pawar /* IVD_SOC_T: SOC Enumeration */ 75*c83a76b0SSuyog Pawar typedef enum 76*c83a76b0SSuyog Pawar { 77*c83a76b0SSuyog Pawar SOC_NA = 0x7FFFFFFF, 78*c83a76b0SSuyog Pawar SOC_GENERIC = 0x0, 79*c83a76b0SSuyog Pawar SOC_HISI_37X = 0x100, 80*c83a76b0SSuyog Pawar }IVD_SOC_T; 81*c83a76b0SSuyog Pawar 82*c83a76b0SSuyog Pawar /* IVD_FRAME_SKIP_MODE_T:Skip mode Enumeration */ 83*c83a76b0SSuyog Pawar 84*c83a76b0SSuyog Pawar typedef enum { 85*c83a76b0SSuyog Pawar IVD_SKIP_NONE = 0x7FFFFFFF, 86*c83a76b0SSuyog Pawar IVD_SKIP_P = 0x1, 87*c83a76b0SSuyog Pawar IVD_SKIP_B = 0x2, 88*c83a76b0SSuyog Pawar IVD_SKIP_I = 0x3, 89*c83a76b0SSuyog Pawar IVD_SKIP_IP = 0x4, 90*c83a76b0SSuyog Pawar IVD_SKIP_IB = 0x5, 91*c83a76b0SSuyog Pawar IVD_SKIP_PB = 0x6, 92*c83a76b0SSuyog Pawar IVD_SKIP_IPB = 0x7, 93*c83a76b0SSuyog Pawar IVD_SKIP_IDR = 0x8, 94*c83a76b0SSuyog Pawar IVD_SKIP_DEFAULT = IVD_SKIP_NONE, 95*c83a76b0SSuyog Pawar }IVD_FRAME_SKIP_MODE_T; 96*c83a76b0SSuyog Pawar 97*c83a76b0SSuyog Pawar /* IVD_VIDEO_DECODE_MODE_T: Set decoder to decode either frame worth of data */ 98*c83a76b0SSuyog Pawar /* or only header worth of data */ 99*c83a76b0SSuyog Pawar 100*c83a76b0SSuyog Pawar typedef enum { 101*c83a76b0SSuyog Pawar IVD_DECODE_MODE_NA = 0x7FFFFFFF, 102*c83a76b0SSuyog Pawar 103*c83a76b0SSuyog Pawar /* This enables the codec to process all decodable units */ 104*c83a76b0SSuyog Pawar IVD_DECODE_FRAME = 0x0, 105*c83a76b0SSuyog Pawar 106*c83a76b0SSuyog Pawar /* This enables the codec to decode header only */ 107*c83a76b0SSuyog Pawar IVD_DECODE_HEADER = 0x1, 108*c83a76b0SSuyog Pawar 109*c83a76b0SSuyog Pawar 110*c83a76b0SSuyog Pawar 111*c83a76b0SSuyog Pawar }IVD_VIDEO_DECODE_MODE_T; 112*c83a76b0SSuyog Pawar 113*c83a76b0SSuyog Pawar 114*c83a76b0SSuyog Pawar /* IVD_DISPLAY_FRAME_OUT_MODE_T: Video Display Frame Output Mode */ 115*c83a76b0SSuyog Pawar 116*c83a76b0SSuyog Pawar typedef enum { 117*c83a76b0SSuyog Pawar 118*c83a76b0SSuyog Pawar IVD_DISPLAY_ORDER_NA = 0x7FFFFFFF, 119*c83a76b0SSuyog Pawar /* To set codec to fill output buffers in display order */ 120*c83a76b0SSuyog Pawar IVD_DISPLAY_FRAME_OUT = 0x0, 121*c83a76b0SSuyog Pawar 122*c83a76b0SSuyog Pawar /* To set codec to fill output buffers in decode order */ 123*c83a76b0SSuyog Pawar IVD_DECODE_FRAME_OUT = 0x1, 124*c83a76b0SSuyog Pawar }IVD_DISPLAY_FRAME_OUT_MODE_T; 125*c83a76b0SSuyog Pawar 126*c83a76b0SSuyog Pawar 127*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T:API command type */ 128*c83a76b0SSuyog Pawar typedef enum { 129*c83a76b0SSuyog Pawar IVD_CMD_VIDEO_NA = 0x7FFFFFFF, 130*c83a76b0SSuyog Pawar IVD_CMD_CREATE = IV_CMD_DUMMY_ELEMENT + 1, 131*c83a76b0SSuyog Pawar IVD_CMD_DELETE, 132*c83a76b0SSuyog Pawar IVD_CMD_VIDEO_CTL, 133*c83a76b0SSuyog Pawar IVD_CMD_VIDEO_DECODE, 134*c83a76b0SSuyog Pawar IVD_CMD_GET_DISPLAY_FRAME, 135*c83a76b0SSuyog Pawar IVD_CMD_REL_DISPLAY_FRAME, 136*c83a76b0SSuyog Pawar IVD_CMD_SET_DISPLAY_FRAME 137*c83a76b0SSuyog Pawar }IVD_API_COMMAND_TYPE_T; 138*c83a76b0SSuyog Pawar 139*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type */ 140*c83a76b0SSuyog Pawar 141*c83a76b0SSuyog Pawar typedef enum { 142*c83a76b0SSuyog Pawar IVD_CMD_NA = 0x7FFFFFFF, 143*c83a76b0SSuyog Pawar IVD_CMD_CTL_GETPARAMS = 0x0, 144*c83a76b0SSuyog Pawar IVD_CMD_CTL_SETPARAMS = 0x1, 145*c83a76b0SSuyog Pawar IVD_CMD_CTL_RESET = 0x2, 146*c83a76b0SSuyog Pawar IVD_CMD_CTL_SETDEFAULT = 0x3, 147*c83a76b0SSuyog Pawar IVD_CMD_CTL_FLUSH = 0x4, 148*c83a76b0SSuyog Pawar IVD_CMD_CTL_GETBUFINFO = 0x5, 149*c83a76b0SSuyog Pawar IVD_CMD_CTL_GETVERSION = 0x6, 150*c83a76b0SSuyog Pawar IVD_CMD_CTL_CODEC_SUBCMD_START = 0x7 151*c83a76b0SSuyog Pawar }IVD_CONTROL_API_COMMAND_TYPE_T; 152*c83a76b0SSuyog Pawar 153*c83a76b0SSuyog Pawar 154*c83a76b0SSuyog Pawar /* IVD_ERROR_BITS_T: A UWORD32 container will be used for reporting the error*/ 155*c83a76b0SSuyog Pawar /* code to the application. The first 8 bits starting from LSB have been */ 156*c83a76b0SSuyog Pawar /* reserved for the codec to report internal error details. The rest of the */ 157*c83a76b0SSuyog Pawar /* bits will be generic for all video decoders and each bit has an associated*/ 158*c83a76b0SSuyog Pawar /* meaning as mentioned below. The unused bit fields are reserved for future */ 159*c83a76b0SSuyog Pawar /* extenstions and will be zero in the current implementation */ 160*c83a76b0SSuyog Pawar 161*c83a76b0SSuyog Pawar typedef enum { 162*c83a76b0SSuyog Pawar /* Bit 8 - Applied concealment. */ 163*c83a76b0SSuyog Pawar IVD_APPLIEDCONCEALMENT = 0x8, 164*c83a76b0SSuyog Pawar /* Bit 9 - Insufficient input data. */ 165*c83a76b0SSuyog Pawar IVD_INSUFFICIENTDATA = 0x9, 166*c83a76b0SSuyog Pawar /* Bit 10 - Data problem/corruption. */ 167*c83a76b0SSuyog Pawar IVD_CORRUPTEDDATA = 0xa, 168*c83a76b0SSuyog Pawar /* Bit 11 - Header problem/corruption. */ 169*c83a76b0SSuyog Pawar IVD_CORRUPTEDHEADER = 0xb, 170*c83a76b0SSuyog Pawar /* Bit 12 - Unsupported feature/parameter in input. */ 171*c83a76b0SSuyog Pawar IVD_UNSUPPORTEDINPUT = 0xc, 172*c83a76b0SSuyog Pawar /* Bit 13 - Unsupported input parameter orconfiguration. */ 173*c83a76b0SSuyog Pawar IVD_UNSUPPORTEDPARAM = 0xd, 174*c83a76b0SSuyog Pawar /* Bit 14 - Fatal error (stop the codec).If there is an */ 175*c83a76b0SSuyog Pawar /* error and this bit is not set, the error is a recoverable one. */ 176*c83a76b0SSuyog Pawar IVD_FATALERROR = 0xe, 177*c83a76b0SSuyog Pawar /* Bit 15 - Invalid bitstream. Applies when Bitstream/YUV frame */ 178*c83a76b0SSuyog Pawar /* buffer for encode/decode call is made with non-valid or zero u4_size */ 179*c83a76b0SSuyog Pawar /* data */ 180*c83a76b0SSuyog Pawar IVD_INVALID_BITSTREAM = 0xf, 181*c83a76b0SSuyog Pawar /* Bit 16 */ 182*c83a76b0SSuyog Pawar IVD_INCOMPLETE_BITSTREAM = 0x10, 183*c83a76b0SSuyog Pawar IVD_ERROR_BITS_T_DUMMY_ELEMENT = 0x7FFFFFFF 184*c83a76b0SSuyog Pawar }IVD_ERROR_BITS_T; 185*c83a76b0SSuyog Pawar 186*c83a76b0SSuyog Pawar 187*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type */ 188*c83a76b0SSuyog Pawar typedef enum { 189*c83a76b0SSuyog Pawar IVD_ERROR_NONE = 0x0, 190*c83a76b0SSuyog Pawar IVD_NUM_MEM_REC_FAILED = 0x1, 191*c83a76b0SSuyog Pawar IVD_NUM_REC_NOT_SUFFICIENT = 0x2, 192*c83a76b0SSuyog Pawar IVD_FILL_MEM_REC_FAILED = 0x3, 193*c83a76b0SSuyog Pawar IVD_REQUESTED_WIDTH_NOT_SUPPPORTED = 0x4, 194*c83a76b0SSuyog Pawar IVD_REQUESTED_HEIGHT_NOT_SUPPPORTED = 0x5, 195*c83a76b0SSuyog Pawar IVD_INIT_DEC_FAILED = 0x6, 196*c83a76b0SSuyog Pawar IVD_INIT_DEC_NOT_SUFFICIENT = 0x7, 197*c83a76b0SSuyog Pawar IVD_INIT_DEC_WIDTH_NOT_SUPPPORTED = 0x8, 198*c83a76b0SSuyog Pawar IVD_INIT_DEC_HEIGHT_NOT_SUPPPORTED = 0x9, 199*c83a76b0SSuyog Pawar IVD_INIT_DEC_MEM_NOT_ALIGNED = 0xa, 200*c83a76b0SSuyog Pawar IVD_INIT_DEC_COL_FMT_NOT_SUPPORTED = 0xb, 201*c83a76b0SSuyog Pawar IVD_INIT_DEC_MEM_REC_NOT_SUFFICIENT = 0xc, 202*c83a76b0SSuyog Pawar IVD_GET_VERSION_DATABUFFER_SZ_INSUFFICIENT = 0xd, 203*c83a76b0SSuyog Pawar IVD_BUFFER_SIZE_SET_TO_ZERO = 0xe, 204*c83a76b0SSuyog Pawar IVD_UNEXPECTED_END_OF_STREAM = 0xf, 205*c83a76b0SSuyog Pawar IVD_SEQUENCE_HEADER_NOT_DECODED = 0x10, 206*c83a76b0SSuyog Pawar IVD_STREAM_WIDTH_HEIGHT_NOT_SUPPORTED = 0x11, 207*c83a76b0SSuyog Pawar IVD_MAX_FRAME_LIMIT_REACHED = 0x12, 208*c83a76b0SSuyog Pawar IVD_IP_API_STRUCT_SIZE_INCORRECT = 0x13, 209*c83a76b0SSuyog Pawar IVD_OP_API_STRUCT_SIZE_INCORRECT = 0x14, 210*c83a76b0SSuyog Pawar IVD_HANDLE_NULL = 0x15, 211*c83a76b0SSuyog Pawar IVD_HANDLE_STRUCT_SIZE_INCORRECT = 0x16, 212*c83a76b0SSuyog Pawar IVD_INVALID_HANDLE_NULL = 0x17, 213*c83a76b0SSuyog Pawar IVD_INVALID_API_CMD = 0x18, 214*c83a76b0SSuyog Pawar IVD_UNSUPPORTED_API_CMD = 0x19, 215*c83a76b0SSuyog Pawar IVD_MEM_REC_STRUCT_SIZE_INCORRECT = 0x1a, 216*c83a76b0SSuyog Pawar IVD_DISP_FRM_ZERO_OP_BUFS = 0x1b, 217*c83a76b0SSuyog Pawar IVD_DISP_FRM_OP_BUF_NULL = 0x1c, 218*c83a76b0SSuyog Pawar IVD_DISP_FRM_ZERO_OP_BUF_SIZE = 0x1d, 219*c83a76b0SSuyog Pawar IVD_DEC_FRM_BS_BUF_NULL = 0x1e, 220*c83a76b0SSuyog Pawar IVD_SET_CONFG_INVALID_DEC_MODE = 0x1f, 221*c83a76b0SSuyog Pawar IVD_SET_CONFG_UNSUPPORTED_DISP_WIDTH = 0x20, 222*c83a76b0SSuyog Pawar IVD_RESET_FAILED = 0x21, 223*c83a76b0SSuyog Pawar IVD_INIT_DEC_MEM_REC_OVERLAP_ERR = 0x22, 224*c83a76b0SSuyog Pawar IVD_INIT_DEC_MEM_REC_BASE_NULL = 0x23, 225*c83a76b0SSuyog Pawar IVD_INIT_DEC_MEM_REC_ALIGNMENT_ERR = 0x24, 226*c83a76b0SSuyog Pawar IVD_INIT_DEC_MEM_REC_INSUFFICIENT_SIZE = 0x25, 227*c83a76b0SSuyog Pawar IVD_INIT_DEC_MEM_REC_INCORRECT_TYPE = 0x26, 228*c83a76b0SSuyog Pawar IVD_DEC_NUMBYTES_INV = 0x27, 229*c83a76b0SSuyog Pawar IVD_DEC_REF_BUF_NULL = 0x28, 230*c83a76b0SSuyog Pawar IVD_DEC_FRM_SKIPPED = 0x29, 231*c83a76b0SSuyog Pawar IVD_RES_CHANGED = 0x2a, 232*c83a76b0SSuyog Pawar IVD_MEM_ALLOC_FAILED = 0x2b, 233*c83a76b0SSuyog Pawar IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS = 0xD0, 234*c83a76b0SSuyog Pawar }IVD_ERROR_CODES_T; 235*c83a76b0SSuyog Pawar 236*c83a76b0SSuyog Pawar 237*c83a76b0SSuyog Pawar /*****************************************************************************/ 238*c83a76b0SSuyog Pawar /* Structure */ 239*c83a76b0SSuyog Pawar /*****************************************************************************/ 240*c83a76b0SSuyog Pawar /* structure for passing output buffers to codec during get display buffer */ 241*c83a76b0SSuyog Pawar /* call */ 242*c83a76b0SSuyog Pawar typedef struct { 243*c83a76b0SSuyog Pawar 244*c83a76b0SSuyog Pawar /** 245*c83a76b0SSuyog Pawar * number of output buffers 246*c83a76b0SSuyog Pawar */ 247*c83a76b0SSuyog Pawar UWORD32 u4_num_bufs; 248*c83a76b0SSuyog Pawar 249*c83a76b0SSuyog Pawar /** 250*c83a76b0SSuyog Pawar *list of pointers to output buffers 251*c83a76b0SSuyog Pawar */ 252*c83a76b0SSuyog Pawar UWORD8 *pu1_bufs[IVD_VIDDEC_MAX_IO_BUFFERS]; 253*c83a76b0SSuyog Pawar 254*c83a76b0SSuyog Pawar /** 255*c83a76b0SSuyog Pawar * sizes of each output buffer 256*c83a76b0SSuyog Pawar */ 257*c83a76b0SSuyog Pawar UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS]; 258*c83a76b0SSuyog Pawar 259*c83a76b0SSuyog Pawar }ivd_out_bufdesc_t; 260*c83a76b0SSuyog Pawar 261*c83a76b0SSuyog Pawar /*****************************************************************************/ 262*c83a76b0SSuyog Pawar /* Create decoder */ 263*c83a76b0SSuyog Pawar /*****************************************************************************/ 264*c83a76b0SSuyog Pawar 265*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_CREATE */ 266*c83a76b0SSuyog Pawar 267*c83a76b0SSuyog Pawar 268*c83a76b0SSuyog Pawar typedef struct { 269*c83a76b0SSuyog Pawar /** 270*c83a76b0SSuyog Pawar * u4_size of the structure 271*c83a76b0SSuyog Pawar */ 272*c83a76b0SSuyog Pawar UWORD32 u4_size; 273*c83a76b0SSuyog Pawar 274*c83a76b0SSuyog Pawar /** 275*c83a76b0SSuyog Pawar * e_cmd 276*c83a76b0SSuyog Pawar */ 277*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 278*c83a76b0SSuyog Pawar 279*c83a76b0SSuyog Pawar /** 280*c83a76b0SSuyog Pawar * format in which codec has to give out frame data for display 281*c83a76b0SSuyog Pawar */ 282*c83a76b0SSuyog Pawar IV_COLOR_FORMAT_T e_output_format; 283*c83a76b0SSuyog Pawar 284*c83a76b0SSuyog Pawar /** 285*c83a76b0SSuyog Pawar * Flag to indicate shared display buffer mode 286*c83a76b0SSuyog Pawar */ 287*c83a76b0SSuyog Pawar UWORD32 u4_share_disp_buf; 288*c83a76b0SSuyog Pawar 289*c83a76b0SSuyog Pawar /** 290*c83a76b0SSuyog Pawar * Pointer to a function for aligned allocation. 291*c83a76b0SSuyog Pawar */ 292*c83a76b0SSuyog Pawar void *(*pf_aligned_alloc)(void *pv_mem_ctxt, WORD32 alignment, WORD32 size); 293*c83a76b0SSuyog Pawar 294*c83a76b0SSuyog Pawar /** 295*c83a76b0SSuyog Pawar * Pointer to a function for aligned free. 296*c83a76b0SSuyog Pawar */ 297*c83a76b0SSuyog Pawar void (*pf_aligned_free)(void *pv_mem_ctxt, void *pv_buf); 298*c83a76b0SSuyog Pawar 299*c83a76b0SSuyog Pawar /** 300*c83a76b0SSuyog Pawar * Pointer to memory context that is needed during alloc/free for custom 301*c83a76b0SSuyog Pawar * memory managers. This will be passed as first argument to pf_aligned_alloc and 302*c83a76b0SSuyog Pawar * pf_aligned_free. 303*c83a76b0SSuyog Pawar * If application is using standard memory functions like 304*c83a76b0SSuyog Pawar * malloc/aligned_malloc/memalign/free/aligned_free, 305*c83a76b0SSuyog Pawar * then this is not needed and can be set to NULL 306*c83a76b0SSuyog Pawar */ 307*c83a76b0SSuyog Pawar void *pv_mem_ctxt; 308*c83a76b0SSuyog Pawar 309*c83a76b0SSuyog Pawar }ivd_create_ip_t; 310*c83a76b0SSuyog Pawar 311*c83a76b0SSuyog Pawar 312*c83a76b0SSuyog Pawar typedef struct { 313*c83a76b0SSuyog Pawar /** 314*c83a76b0SSuyog Pawar * u4_size of the structure 315*c83a76b0SSuyog Pawar */ 316*c83a76b0SSuyog Pawar UWORD32 u4_size; 317*c83a76b0SSuyog Pawar 318*c83a76b0SSuyog Pawar /** 319*c83a76b0SSuyog Pawar * u4_error_code 320*c83a76b0SSuyog Pawar */ 321*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 322*c83a76b0SSuyog Pawar 323*c83a76b0SSuyog Pawar /** 324*c83a76b0SSuyog Pawar * Codec Handle 325*c83a76b0SSuyog Pawar */ 326*c83a76b0SSuyog Pawar void *pv_handle; 327*c83a76b0SSuyog Pawar 328*c83a76b0SSuyog Pawar }ivd_create_op_t; 329*c83a76b0SSuyog Pawar 330*c83a76b0SSuyog Pawar 331*c83a76b0SSuyog Pawar /*****************************************************************************/ 332*c83a76b0SSuyog Pawar /* Delete decoder */ 333*c83a76b0SSuyog Pawar /*****************************************************************************/ 334*c83a76b0SSuyog Pawar 335*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_DELETE */ 336*c83a76b0SSuyog Pawar 337*c83a76b0SSuyog Pawar 338*c83a76b0SSuyog Pawar 339*c83a76b0SSuyog Pawar typedef struct { 340*c83a76b0SSuyog Pawar /** 341*c83a76b0SSuyog Pawar * u4_size of the structure 342*c83a76b0SSuyog Pawar */ 343*c83a76b0SSuyog Pawar UWORD32 u4_size; 344*c83a76b0SSuyog Pawar 345*c83a76b0SSuyog Pawar /** 346*c83a76b0SSuyog Pawar * cmd 347*c83a76b0SSuyog Pawar */ 348*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 349*c83a76b0SSuyog Pawar 350*c83a76b0SSuyog Pawar }ivd_delete_ip_t; 351*c83a76b0SSuyog Pawar 352*c83a76b0SSuyog Pawar 353*c83a76b0SSuyog Pawar typedef struct { 354*c83a76b0SSuyog Pawar /** 355*c83a76b0SSuyog Pawar * u4_size of the structure 356*c83a76b0SSuyog Pawar */ 357*c83a76b0SSuyog Pawar UWORD32 u4_size; 358*c83a76b0SSuyog Pawar 359*c83a76b0SSuyog Pawar /** 360*c83a76b0SSuyog Pawar * error_code 361*c83a76b0SSuyog Pawar */ 362*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 363*c83a76b0SSuyog Pawar 364*c83a76b0SSuyog Pawar }ivd_delete_op_t; 365*c83a76b0SSuyog Pawar 366*c83a76b0SSuyog Pawar /*****************************************************************************/ 367*c83a76b0SSuyog Pawar /* Video Decode */ 368*c83a76b0SSuyog Pawar /*****************************************************************************/ 369*c83a76b0SSuyog Pawar 370*c83a76b0SSuyog Pawar 371*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_DECODE */ 372*c83a76b0SSuyog Pawar 373*c83a76b0SSuyog Pawar 374*c83a76b0SSuyog Pawar typedef struct { 375*c83a76b0SSuyog Pawar /** 376*c83a76b0SSuyog Pawar * u4_size of the structure 377*c83a76b0SSuyog Pawar */ 378*c83a76b0SSuyog Pawar UWORD32 u4_size; 379*c83a76b0SSuyog Pawar 380*c83a76b0SSuyog Pawar /** 381*c83a76b0SSuyog Pawar * e_cmd 382*c83a76b0SSuyog Pawar */ 383*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 384*c83a76b0SSuyog Pawar 385*c83a76b0SSuyog Pawar /** 386*c83a76b0SSuyog Pawar * u4_ts 387*c83a76b0SSuyog Pawar */ 388*c83a76b0SSuyog Pawar UWORD32 u4_ts; 389*c83a76b0SSuyog Pawar 390*c83a76b0SSuyog Pawar /** 391*c83a76b0SSuyog Pawar * u4_num_Bytes 392*c83a76b0SSuyog Pawar */ 393*c83a76b0SSuyog Pawar UWORD32 u4_num_Bytes; 394*c83a76b0SSuyog Pawar 395*c83a76b0SSuyog Pawar /** 396*c83a76b0SSuyog Pawar * pv_stream_buffer 397*c83a76b0SSuyog Pawar */ 398*c83a76b0SSuyog Pawar void *pv_stream_buffer; 399*c83a76b0SSuyog Pawar 400*c83a76b0SSuyog Pawar /** 401*c83a76b0SSuyog Pawar * output buffer desc 402*c83a76b0SSuyog Pawar */ 403*c83a76b0SSuyog Pawar ivd_out_bufdesc_t s_out_buffer; 404*c83a76b0SSuyog Pawar 405*c83a76b0SSuyog Pawar }ivd_video_decode_ip_t; 406*c83a76b0SSuyog Pawar 407*c83a76b0SSuyog Pawar 408*c83a76b0SSuyog Pawar typedef struct { 409*c83a76b0SSuyog Pawar /** 410*c83a76b0SSuyog Pawar * u4_size of the structure 411*c83a76b0SSuyog Pawar */ 412*c83a76b0SSuyog Pawar UWORD32 u4_size; 413*c83a76b0SSuyog Pawar 414*c83a76b0SSuyog Pawar /** 415*c83a76b0SSuyog Pawar * u4_error_code 416*c83a76b0SSuyog Pawar */ 417*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 418*c83a76b0SSuyog Pawar 419*c83a76b0SSuyog Pawar /** 420*c83a76b0SSuyog Pawar * num_bytes_consumed 421*c83a76b0SSuyog Pawar */ 422*c83a76b0SSuyog Pawar UWORD32 u4_num_bytes_consumed; 423*c83a76b0SSuyog Pawar 424*c83a76b0SSuyog Pawar /** 425*c83a76b0SSuyog Pawar * pic_wd 426*c83a76b0SSuyog Pawar */ 427*c83a76b0SSuyog Pawar UWORD32 u4_pic_wd; 428*c83a76b0SSuyog Pawar 429*c83a76b0SSuyog Pawar /** 430*c83a76b0SSuyog Pawar * pic_ht 431*c83a76b0SSuyog Pawar */ 432*c83a76b0SSuyog Pawar UWORD32 u4_pic_ht; 433*c83a76b0SSuyog Pawar 434*c83a76b0SSuyog Pawar /** 435*c83a76b0SSuyog Pawar * pic_type 436*c83a76b0SSuyog Pawar */ 437*c83a76b0SSuyog Pawar IV_PICTURE_CODING_TYPE_T e_pic_type; 438*c83a76b0SSuyog Pawar 439*c83a76b0SSuyog Pawar /** 440*c83a76b0SSuyog Pawar * frame_decoded_flag 441*c83a76b0SSuyog Pawar */ 442*c83a76b0SSuyog Pawar UWORD32 u4_frame_decoded_flag; 443*c83a76b0SSuyog Pawar 444*c83a76b0SSuyog Pawar /** 445*c83a76b0SSuyog Pawar * new_seq 446*c83a76b0SSuyog Pawar */ 447*c83a76b0SSuyog Pawar UWORD32 u4_new_seq; 448*c83a76b0SSuyog Pawar 449*c83a76b0SSuyog Pawar /** 450*c83a76b0SSuyog Pawar * output_present 451*c83a76b0SSuyog Pawar */ 452*c83a76b0SSuyog Pawar UWORD32 u4_output_present; 453*c83a76b0SSuyog Pawar 454*c83a76b0SSuyog Pawar /** 455*c83a76b0SSuyog Pawar * progressive_frame_flag 456*c83a76b0SSuyog Pawar */ 457*c83a76b0SSuyog Pawar UWORD32 u4_progressive_frame_flag; 458*c83a76b0SSuyog Pawar 459*c83a76b0SSuyog Pawar /** 460*c83a76b0SSuyog Pawar * is_ref_flag 461*c83a76b0SSuyog Pawar */ 462*c83a76b0SSuyog Pawar UWORD32 u4_is_ref_flag; 463*c83a76b0SSuyog Pawar 464*c83a76b0SSuyog Pawar /** 465*c83a76b0SSuyog Pawar * output_format 466*c83a76b0SSuyog Pawar */ 467*c83a76b0SSuyog Pawar IV_COLOR_FORMAT_T e_output_format; 468*c83a76b0SSuyog Pawar 469*c83a76b0SSuyog Pawar /** 470*c83a76b0SSuyog Pawar * disp_frm_buf 471*c83a76b0SSuyog Pawar */ 472*c83a76b0SSuyog Pawar iv_yuv_buf_t s_disp_frm_buf; 473*c83a76b0SSuyog Pawar 474*c83a76b0SSuyog Pawar /** 475*c83a76b0SSuyog Pawar * fld_type 476*c83a76b0SSuyog Pawar */ 477*c83a76b0SSuyog Pawar IV_FLD_TYPE_T e4_fld_type; 478*c83a76b0SSuyog Pawar 479*c83a76b0SSuyog Pawar /** 480*c83a76b0SSuyog Pawar * ts 481*c83a76b0SSuyog Pawar */ 482*c83a76b0SSuyog Pawar UWORD32 u4_ts; 483*c83a76b0SSuyog Pawar 484*c83a76b0SSuyog Pawar /** 485*c83a76b0SSuyog Pawar * disp_buf_id 486*c83a76b0SSuyog Pawar */ 487*c83a76b0SSuyog Pawar UWORD32 u4_disp_buf_id; 488*c83a76b0SSuyog Pawar 489*c83a76b0SSuyog Pawar /** 490*c83a76b0SSuyog Pawar * reorder_depth 491*c83a76b0SSuyog Pawar */ 492*c83a76b0SSuyog Pawar WORD32 i4_reorder_depth; 493*c83a76b0SSuyog Pawar 494*c83a76b0SSuyog Pawar /** 495*c83a76b0SSuyog Pawar * display index 496*c83a76b0SSuyog Pawar */ 497*c83a76b0SSuyog Pawar WORD32 i4_display_index; 498*c83a76b0SSuyog Pawar 499*c83a76b0SSuyog Pawar }ivd_video_decode_op_t; 500*c83a76b0SSuyog Pawar 501*c83a76b0SSuyog Pawar 502*c83a76b0SSuyog Pawar /*****************************************************************************/ 503*c83a76b0SSuyog Pawar /* Get Display Frame */ 504*c83a76b0SSuyog Pawar /*****************************************************************************/ 505*c83a76b0SSuyog Pawar 506*c83a76b0SSuyog Pawar 507*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_GET_DISPLAY_FRAME */ 508*c83a76b0SSuyog Pawar 509*c83a76b0SSuyog Pawar typedef struct 510*c83a76b0SSuyog Pawar { 511*c83a76b0SSuyog Pawar /** 512*c83a76b0SSuyog Pawar * u4_size of the structure 513*c83a76b0SSuyog Pawar */ 514*c83a76b0SSuyog Pawar UWORD32 u4_size; 515*c83a76b0SSuyog Pawar 516*c83a76b0SSuyog Pawar /** 517*c83a76b0SSuyog Pawar * e_cmd 518*c83a76b0SSuyog Pawar */ 519*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 520*c83a76b0SSuyog Pawar 521*c83a76b0SSuyog Pawar /** 522*c83a76b0SSuyog Pawar * output buffer desc 523*c83a76b0SSuyog Pawar */ 524*c83a76b0SSuyog Pawar ivd_out_bufdesc_t s_out_buffer; 525*c83a76b0SSuyog Pawar 526*c83a76b0SSuyog Pawar }ivd_get_display_frame_ip_t; 527*c83a76b0SSuyog Pawar 528*c83a76b0SSuyog Pawar 529*c83a76b0SSuyog Pawar typedef struct 530*c83a76b0SSuyog Pawar { 531*c83a76b0SSuyog Pawar /** 532*c83a76b0SSuyog Pawar * u4_size of the structure 533*c83a76b0SSuyog Pawar */ 534*c83a76b0SSuyog Pawar UWORD32 u4_size; 535*c83a76b0SSuyog Pawar 536*c83a76b0SSuyog Pawar /** 537*c83a76b0SSuyog Pawar * error_code 538*c83a76b0SSuyog Pawar */ 539*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 540*c83a76b0SSuyog Pawar 541*c83a76b0SSuyog Pawar /** 542*c83a76b0SSuyog Pawar * progressive_frame_flag 543*c83a76b0SSuyog Pawar */ 544*c83a76b0SSuyog Pawar UWORD32 u4_progressive_frame_flag; 545*c83a76b0SSuyog Pawar 546*c83a76b0SSuyog Pawar /** 547*c83a76b0SSuyog Pawar * pic_type 548*c83a76b0SSuyog Pawar */ 549*c83a76b0SSuyog Pawar IV_PICTURE_CODING_TYPE_T e_pic_type; 550*c83a76b0SSuyog Pawar 551*c83a76b0SSuyog Pawar /** 552*c83a76b0SSuyog Pawar * is_ref_flag 553*c83a76b0SSuyog Pawar */ 554*c83a76b0SSuyog Pawar UWORD32 u4_is_ref_flag; 555*c83a76b0SSuyog Pawar 556*c83a76b0SSuyog Pawar /** 557*c83a76b0SSuyog Pawar * output_format 558*c83a76b0SSuyog Pawar */ 559*c83a76b0SSuyog Pawar IV_COLOR_FORMAT_T e_output_format; 560*c83a76b0SSuyog Pawar 561*c83a76b0SSuyog Pawar /** 562*c83a76b0SSuyog Pawar * disp_frm_buf 563*c83a76b0SSuyog Pawar */ 564*c83a76b0SSuyog Pawar iv_yuv_buf_t s_disp_frm_buf; 565*c83a76b0SSuyog Pawar 566*c83a76b0SSuyog Pawar /** 567*c83a76b0SSuyog Pawar * fld_type 568*c83a76b0SSuyog Pawar */ 569*c83a76b0SSuyog Pawar IV_FLD_TYPE_T e4_fld_type; 570*c83a76b0SSuyog Pawar 571*c83a76b0SSuyog Pawar /** 572*c83a76b0SSuyog Pawar * ts 573*c83a76b0SSuyog Pawar */ 574*c83a76b0SSuyog Pawar UWORD32 u4_ts; 575*c83a76b0SSuyog Pawar 576*c83a76b0SSuyog Pawar /** 577*c83a76b0SSuyog Pawar * disp_buf_id 578*c83a76b0SSuyog Pawar */ 579*c83a76b0SSuyog Pawar UWORD32 u4_disp_buf_id; 580*c83a76b0SSuyog Pawar }ivd_get_display_frame_op_t; 581*c83a76b0SSuyog Pawar 582*c83a76b0SSuyog Pawar /*****************************************************************************/ 583*c83a76b0SSuyog Pawar /* Set Display Frame */ 584*c83a76b0SSuyog Pawar /*****************************************************************************/ 585*c83a76b0SSuyog Pawar 586*c83a76b0SSuyog Pawar 587*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME */ 588*c83a76b0SSuyog Pawar 589*c83a76b0SSuyog Pawar typedef struct 590*c83a76b0SSuyog Pawar { 591*c83a76b0SSuyog Pawar /** 592*c83a76b0SSuyog Pawar * u4_size of the structure 593*c83a76b0SSuyog Pawar */ 594*c83a76b0SSuyog Pawar UWORD32 u4_size; 595*c83a76b0SSuyog Pawar 596*c83a76b0SSuyog Pawar /** 597*c83a76b0SSuyog Pawar * cmd 598*c83a76b0SSuyog Pawar */ 599*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 600*c83a76b0SSuyog Pawar 601*c83a76b0SSuyog Pawar /** 602*c83a76b0SSuyog Pawar * num_disp_bufs 603*c83a76b0SSuyog Pawar */ 604*c83a76b0SSuyog Pawar UWORD32 num_disp_bufs; 605*c83a76b0SSuyog Pawar 606*c83a76b0SSuyog Pawar /** 607*c83a76b0SSuyog Pawar * output buffer desc 608*c83a76b0SSuyog Pawar */ 609*c83a76b0SSuyog Pawar ivd_out_bufdesc_t s_disp_buffer[IVD_VIDDEC_MAX_IO_BUFFERS]; 610*c83a76b0SSuyog Pawar 611*c83a76b0SSuyog Pawar }ivd_set_display_frame_ip_t; 612*c83a76b0SSuyog Pawar 613*c83a76b0SSuyog Pawar 614*c83a76b0SSuyog Pawar typedef struct 615*c83a76b0SSuyog Pawar { 616*c83a76b0SSuyog Pawar /** 617*c83a76b0SSuyog Pawar * u4_size of the structure 618*c83a76b0SSuyog Pawar */ 619*c83a76b0SSuyog Pawar UWORD32 u4_size; 620*c83a76b0SSuyog Pawar 621*c83a76b0SSuyog Pawar /** 622*c83a76b0SSuyog Pawar * error code 623*c83a76b0SSuyog Pawar */ 624*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 625*c83a76b0SSuyog Pawar }ivd_set_display_frame_op_t; 626*c83a76b0SSuyog Pawar 627*c83a76b0SSuyog Pawar 628*c83a76b0SSuyog Pawar /*****************************************************************************/ 629*c83a76b0SSuyog Pawar /* Release Display Frame */ 630*c83a76b0SSuyog Pawar /*****************************************************************************/ 631*c83a76b0SSuyog Pawar 632*c83a76b0SSuyog Pawar 633*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME */ 634*c83a76b0SSuyog Pawar 635*c83a76b0SSuyog Pawar typedef struct 636*c83a76b0SSuyog Pawar { 637*c83a76b0SSuyog Pawar /** 638*c83a76b0SSuyog Pawar * u4_size of the structure 639*c83a76b0SSuyog Pawar */ 640*c83a76b0SSuyog Pawar UWORD32 u4_size; 641*c83a76b0SSuyog Pawar 642*c83a76b0SSuyog Pawar /** 643*c83a76b0SSuyog Pawar * e_cmd 644*c83a76b0SSuyog Pawar */ 645*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 646*c83a76b0SSuyog Pawar 647*c83a76b0SSuyog Pawar /** 648*c83a76b0SSuyog Pawar * disp_buf_id 649*c83a76b0SSuyog Pawar */ 650*c83a76b0SSuyog Pawar UWORD32 u4_disp_buf_id; 651*c83a76b0SSuyog Pawar }ivd_rel_display_frame_ip_t; 652*c83a76b0SSuyog Pawar 653*c83a76b0SSuyog Pawar 654*c83a76b0SSuyog Pawar typedef struct 655*c83a76b0SSuyog Pawar { 656*c83a76b0SSuyog Pawar /** 657*c83a76b0SSuyog Pawar * u4_size of the structure 658*c83a76b0SSuyog Pawar */ 659*c83a76b0SSuyog Pawar UWORD32 u4_size; 660*c83a76b0SSuyog Pawar 661*c83a76b0SSuyog Pawar /** 662*c83a76b0SSuyog Pawar * error code 663*c83a76b0SSuyog Pawar */ 664*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 665*c83a76b0SSuyog Pawar }ivd_rel_display_frame_op_t; 666*c83a76b0SSuyog Pawar 667*c83a76b0SSuyog Pawar /*****************************************************************************/ 668*c83a76b0SSuyog Pawar /* Video control Flush */ 669*c83a76b0SSuyog Pawar /*****************************************************************************/ 670*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 671*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd = IVD_CMD_ctl_FLUSH */ 672*c83a76b0SSuyog Pawar 673*c83a76b0SSuyog Pawar 674*c83a76b0SSuyog Pawar 675*c83a76b0SSuyog Pawar typedef struct { 676*c83a76b0SSuyog Pawar /** 677*c83a76b0SSuyog Pawar * u4_size of the structure 678*c83a76b0SSuyog Pawar */ 679*c83a76b0SSuyog Pawar UWORD32 u4_size; 680*c83a76b0SSuyog Pawar 681*c83a76b0SSuyog Pawar /** 682*c83a76b0SSuyog Pawar * cmd 683*c83a76b0SSuyog Pawar */ 684*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 685*c83a76b0SSuyog Pawar 686*c83a76b0SSuyog Pawar /** 687*c83a76b0SSuyog Pawar * sub_cmd 688*c83a76b0SSuyog Pawar */ 689*c83a76b0SSuyog Pawar IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 690*c83a76b0SSuyog Pawar }ivd_ctl_flush_ip_t; 691*c83a76b0SSuyog Pawar 692*c83a76b0SSuyog Pawar 693*c83a76b0SSuyog Pawar typedef struct { 694*c83a76b0SSuyog Pawar /** 695*c83a76b0SSuyog Pawar * u4_size of the structure 696*c83a76b0SSuyog Pawar */ 697*c83a76b0SSuyog Pawar UWORD32 u4_size; 698*c83a76b0SSuyog Pawar 699*c83a76b0SSuyog Pawar /** 700*c83a76b0SSuyog Pawar * error code 701*c83a76b0SSuyog Pawar */ 702*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 703*c83a76b0SSuyog Pawar }ivd_ctl_flush_op_t; 704*c83a76b0SSuyog Pawar 705*c83a76b0SSuyog Pawar /*****************************************************************************/ 706*c83a76b0SSuyog Pawar /* Video control reset */ 707*c83a76b0SSuyog Pawar /*****************************************************************************/ 708*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 709*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd = IVD_CMD_ctl_RESET */ 710*c83a76b0SSuyog Pawar 711*c83a76b0SSuyog Pawar 712*c83a76b0SSuyog Pawar typedef struct { 713*c83a76b0SSuyog Pawar /** 714*c83a76b0SSuyog Pawar * u4_size of the structure 715*c83a76b0SSuyog Pawar */ 716*c83a76b0SSuyog Pawar UWORD32 u4_size; 717*c83a76b0SSuyog Pawar 718*c83a76b0SSuyog Pawar /** 719*c83a76b0SSuyog Pawar * cmd 720*c83a76b0SSuyog Pawar */ 721*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 722*c83a76b0SSuyog Pawar 723*c83a76b0SSuyog Pawar /** 724*c83a76b0SSuyog Pawar * sub_cmd 725*c83a76b0SSuyog Pawar */ 726*c83a76b0SSuyog Pawar 727*c83a76b0SSuyog Pawar IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 728*c83a76b0SSuyog Pawar }ivd_ctl_reset_ip_t; 729*c83a76b0SSuyog Pawar 730*c83a76b0SSuyog Pawar 731*c83a76b0SSuyog Pawar typedef struct { 732*c83a76b0SSuyog Pawar /** 733*c83a76b0SSuyog Pawar * u4_size of the structure 734*c83a76b0SSuyog Pawar */ 735*c83a76b0SSuyog Pawar UWORD32 u4_size; 736*c83a76b0SSuyog Pawar 737*c83a76b0SSuyog Pawar /** 738*c83a76b0SSuyog Pawar * error code 739*c83a76b0SSuyog Pawar */ 740*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 741*c83a76b0SSuyog Pawar }ivd_ctl_reset_op_t; 742*c83a76b0SSuyog Pawar 743*c83a76b0SSuyog Pawar 744*c83a76b0SSuyog Pawar /*****************************************************************************/ 745*c83a76b0SSuyog Pawar /* Video control Set Params */ 746*c83a76b0SSuyog Pawar /*****************************************************************************/ 747*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 748*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETPARAMS */ 749*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETDEFAULT */ 750*c83a76b0SSuyog Pawar 751*c83a76b0SSuyog Pawar 752*c83a76b0SSuyog Pawar 753*c83a76b0SSuyog Pawar typedef struct { 754*c83a76b0SSuyog Pawar /** 755*c83a76b0SSuyog Pawar * u4_size of the structure 756*c83a76b0SSuyog Pawar */ 757*c83a76b0SSuyog Pawar UWORD32 u4_size; 758*c83a76b0SSuyog Pawar 759*c83a76b0SSuyog Pawar /** 760*c83a76b0SSuyog Pawar * cmd 761*c83a76b0SSuyog Pawar */ 762*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 763*c83a76b0SSuyog Pawar 764*c83a76b0SSuyog Pawar /** 765*c83a76b0SSuyog Pawar * sub_cmd 766*c83a76b0SSuyog Pawar */ 767*c83a76b0SSuyog Pawar IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 768*c83a76b0SSuyog Pawar 769*c83a76b0SSuyog Pawar /** 770*c83a76b0SSuyog Pawar * vid_dec_mode 771*c83a76b0SSuyog Pawar */ 772*c83a76b0SSuyog Pawar IVD_VIDEO_DECODE_MODE_T e_vid_dec_mode; 773*c83a76b0SSuyog Pawar 774*c83a76b0SSuyog Pawar /** 775*c83a76b0SSuyog Pawar * disp_wd 776*c83a76b0SSuyog Pawar */ 777*c83a76b0SSuyog Pawar UWORD32 u4_disp_wd; 778*c83a76b0SSuyog Pawar 779*c83a76b0SSuyog Pawar /** 780*c83a76b0SSuyog Pawar * frm_skip_mode 781*c83a76b0SSuyog Pawar */ 782*c83a76b0SSuyog Pawar IVD_FRAME_SKIP_MODE_T e_frm_skip_mode; 783*c83a76b0SSuyog Pawar 784*c83a76b0SSuyog Pawar /** 785*c83a76b0SSuyog Pawar * frm_out_mode 786*c83a76b0SSuyog Pawar */ 787*c83a76b0SSuyog Pawar IVD_DISPLAY_FRAME_OUT_MODE_T e_frm_out_mode; 788*c83a76b0SSuyog Pawar }ivd_ctl_set_config_ip_t; 789*c83a76b0SSuyog Pawar 790*c83a76b0SSuyog Pawar 791*c83a76b0SSuyog Pawar typedef struct { 792*c83a76b0SSuyog Pawar /** 793*c83a76b0SSuyog Pawar * u4_size of the structure 794*c83a76b0SSuyog Pawar */ 795*c83a76b0SSuyog Pawar UWORD32 u4_size; 796*c83a76b0SSuyog Pawar 797*c83a76b0SSuyog Pawar /** 798*c83a76b0SSuyog Pawar * u4_error_code 799*c83a76b0SSuyog Pawar */ 800*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 801*c83a76b0SSuyog Pawar }ivd_ctl_set_config_op_t; 802*c83a76b0SSuyog Pawar 803*c83a76b0SSuyog Pawar /*****************************************************************************/ 804*c83a76b0SSuyog Pawar /* Video control:Get Buf Info */ 805*c83a76b0SSuyog Pawar /*****************************************************************************/ 806*c83a76b0SSuyog Pawar 807*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 808*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETBUFINFO */ 809*c83a76b0SSuyog Pawar 810*c83a76b0SSuyog Pawar 811*c83a76b0SSuyog Pawar typedef struct { 812*c83a76b0SSuyog Pawar /** 813*c83a76b0SSuyog Pawar * u4_size of the structure 814*c83a76b0SSuyog Pawar */ 815*c83a76b0SSuyog Pawar UWORD32 u4_size; 816*c83a76b0SSuyog Pawar 817*c83a76b0SSuyog Pawar /** 818*c83a76b0SSuyog Pawar * e_cmd 819*c83a76b0SSuyog Pawar */ 820*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 821*c83a76b0SSuyog Pawar 822*c83a76b0SSuyog Pawar /** 823*c83a76b0SSuyog Pawar * sub_cmd 824*c83a76b0SSuyog Pawar */ 825*c83a76b0SSuyog Pawar IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 826*c83a76b0SSuyog Pawar }ivd_ctl_getbufinfo_ip_t; 827*c83a76b0SSuyog Pawar 828*c83a76b0SSuyog Pawar 829*c83a76b0SSuyog Pawar typedef struct { 830*c83a76b0SSuyog Pawar /** 831*c83a76b0SSuyog Pawar * u4_size of the structure 832*c83a76b0SSuyog Pawar */ 833*c83a76b0SSuyog Pawar UWORD32 u4_size; 834*c83a76b0SSuyog Pawar 835*c83a76b0SSuyog Pawar /** 836*c83a76b0SSuyog Pawar * error code 837*c83a76b0SSuyog Pawar */ 838*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 839*c83a76b0SSuyog Pawar 840*c83a76b0SSuyog Pawar /** 841*c83a76b0SSuyog Pawar * no of display buffer sets required by codec 842*c83a76b0SSuyog Pawar */ 843*c83a76b0SSuyog Pawar UWORD32 u4_num_disp_bufs; 844*c83a76b0SSuyog Pawar 845*c83a76b0SSuyog Pawar /** 846*c83a76b0SSuyog Pawar * no of input buffers required for codec 847*c83a76b0SSuyog Pawar */ 848*c83a76b0SSuyog Pawar UWORD32 u4_min_num_in_bufs; 849*c83a76b0SSuyog Pawar 850*c83a76b0SSuyog Pawar /** 851*c83a76b0SSuyog Pawar * no of output buffers required for codec 852*c83a76b0SSuyog Pawar */ 853*c83a76b0SSuyog Pawar UWORD32 u4_min_num_out_bufs; 854*c83a76b0SSuyog Pawar 855*c83a76b0SSuyog Pawar /** 856*c83a76b0SSuyog Pawar * sizes of each input buffer required 857*c83a76b0SSuyog Pawar */ 858*c83a76b0SSuyog Pawar UWORD32 u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS]; 859*c83a76b0SSuyog Pawar 860*c83a76b0SSuyog Pawar /** 861*c83a76b0SSuyog Pawar * sizes of each output buffer required 862*c83a76b0SSuyog Pawar */ 863*c83a76b0SSuyog Pawar UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS]; 864*c83a76b0SSuyog Pawar }ivd_ctl_getbufinfo_op_t; 865*c83a76b0SSuyog Pawar 866*c83a76b0SSuyog Pawar 867*c83a76b0SSuyog Pawar /*****************************************************************************/ 868*c83a76b0SSuyog Pawar /* Video control:Getstatus Call */ 869*c83a76b0SSuyog Pawar /*****************************************************************************/ 870*c83a76b0SSuyog Pawar 871*c83a76b0SSuyog Pawar 872*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 873*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETPARAMS */ 874*c83a76b0SSuyog Pawar 875*c83a76b0SSuyog Pawar 876*c83a76b0SSuyog Pawar typedef struct { 877*c83a76b0SSuyog Pawar /** 878*c83a76b0SSuyog Pawar * u4_size of the structure 879*c83a76b0SSuyog Pawar */ 880*c83a76b0SSuyog Pawar UWORD32 u4_size; 881*c83a76b0SSuyog Pawar 882*c83a76b0SSuyog Pawar /** 883*c83a76b0SSuyog Pawar * cmd 884*c83a76b0SSuyog Pawar */ 885*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 886*c83a76b0SSuyog Pawar 887*c83a76b0SSuyog Pawar /** 888*c83a76b0SSuyog Pawar * sub_cmd 889*c83a76b0SSuyog Pawar */ 890*c83a76b0SSuyog Pawar IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 891*c83a76b0SSuyog Pawar }ivd_ctl_getstatus_ip_t; 892*c83a76b0SSuyog Pawar 893*c83a76b0SSuyog Pawar 894*c83a76b0SSuyog Pawar typedef struct { 895*c83a76b0SSuyog Pawar 896*c83a76b0SSuyog Pawar /** 897*c83a76b0SSuyog Pawar * u4_size of the structure 898*c83a76b0SSuyog Pawar */ 899*c83a76b0SSuyog Pawar UWORD32 u4_size; 900*c83a76b0SSuyog Pawar 901*c83a76b0SSuyog Pawar /** 902*c83a76b0SSuyog Pawar * error code 903*c83a76b0SSuyog Pawar */ 904*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 905*c83a76b0SSuyog Pawar 906*c83a76b0SSuyog Pawar /** 907*c83a76b0SSuyog Pawar * no of display buffer sets required by codec 908*c83a76b0SSuyog Pawar */ 909*c83a76b0SSuyog Pawar UWORD32 u4_num_disp_bufs; 910*c83a76b0SSuyog Pawar 911*c83a76b0SSuyog Pawar /** 912*c83a76b0SSuyog Pawar * u4_pic_ht 913*c83a76b0SSuyog Pawar */ 914*c83a76b0SSuyog Pawar UWORD32 u4_pic_ht; 915*c83a76b0SSuyog Pawar 916*c83a76b0SSuyog Pawar /** 917*c83a76b0SSuyog Pawar * u4_pic_wd 918*c83a76b0SSuyog Pawar */ 919*c83a76b0SSuyog Pawar UWORD32 u4_pic_wd; 920*c83a76b0SSuyog Pawar 921*c83a76b0SSuyog Pawar /** 922*c83a76b0SSuyog Pawar * frame_rate 923*c83a76b0SSuyog Pawar */ 924*c83a76b0SSuyog Pawar UWORD32 u4_frame_rate; 925*c83a76b0SSuyog Pawar 926*c83a76b0SSuyog Pawar /** 927*c83a76b0SSuyog Pawar * u4_bit_rate 928*c83a76b0SSuyog Pawar */ 929*c83a76b0SSuyog Pawar UWORD32 u4_bit_rate; 930*c83a76b0SSuyog Pawar 931*c83a76b0SSuyog Pawar /** 932*c83a76b0SSuyog Pawar * content_type 933*c83a76b0SSuyog Pawar */ 934*c83a76b0SSuyog Pawar IV_CONTENT_TYPE_T e_content_type; 935*c83a76b0SSuyog Pawar 936*c83a76b0SSuyog Pawar /** 937*c83a76b0SSuyog Pawar * output_chroma_format 938*c83a76b0SSuyog Pawar */ 939*c83a76b0SSuyog Pawar IV_COLOR_FORMAT_T e_output_chroma_format; 940*c83a76b0SSuyog Pawar 941*c83a76b0SSuyog Pawar /** 942*c83a76b0SSuyog Pawar * no of input buffers required for codec 943*c83a76b0SSuyog Pawar */ 944*c83a76b0SSuyog Pawar UWORD32 u4_min_num_in_bufs; 945*c83a76b0SSuyog Pawar 946*c83a76b0SSuyog Pawar /** 947*c83a76b0SSuyog Pawar * no of output buffers required for codec 948*c83a76b0SSuyog Pawar */ 949*c83a76b0SSuyog Pawar UWORD32 u4_min_num_out_bufs; 950*c83a76b0SSuyog Pawar 951*c83a76b0SSuyog Pawar /** 952*c83a76b0SSuyog Pawar * sizes of each input buffer required 953*c83a76b0SSuyog Pawar */ 954*c83a76b0SSuyog Pawar UWORD32 u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS]; 955*c83a76b0SSuyog Pawar 956*c83a76b0SSuyog Pawar /** 957*c83a76b0SSuyog Pawar * sizes of each output buffer required 958*c83a76b0SSuyog Pawar */ 959*c83a76b0SSuyog Pawar UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS]; 960*c83a76b0SSuyog Pawar }ivd_ctl_getstatus_op_t; 961*c83a76b0SSuyog Pawar 962*c83a76b0SSuyog Pawar 963*c83a76b0SSuyog Pawar /*****************************************************************************/ 964*c83a76b0SSuyog Pawar /* Video control:Get Version Info */ 965*c83a76b0SSuyog Pawar /*****************************************************************************/ 966*c83a76b0SSuyog Pawar 967*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */ 968*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETVERSION */ 969*c83a76b0SSuyog Pawar 970*c83a76b0SSuyog Pawar 971*c83a76b0SSuyog Pawar typedef struct { 972*c83a76b0SSuyog Pawar /** 973*c83a76b0SSuyog Pawar * u4_size of the structure 974*c83a76b0SSuyog Pawar */ 975*c83a76b0SSuyog Pawar UWORD32 u4_size; 976*c83a76b0SSuyog Pawar 977*c83a76b0SSuyog Pawar /** 978*c83a76b0SSuyog Pawar * cmd 979*c83a76b0SSuyog Pawar */ 980*c83a76b0SSuyog Pawar IVD_API_COMMAND_TYPE_T e_cmd; 981*c83a76b0SSuyog Pawar 982*c83a76b0SSuyog Pawar /** 983*c83a76b0SSuyog Pawar * sub_cmd 984*c83a76b0SSuyog Pawar */ 985*c83a76b0SSuyog Pawar IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 986*c83a76b0SSuyog Pawar 987*c83a76b0SSuyog Pawar /** 988*c83a76b0SSuyog Pawar * pv_version_buffer 989*c83a76b0SSuyog Pawar */ 990*c83a76b0SSuyog Pawar void *pv_version_buffer; 991*c83a76b0SSuyog Pawar 992*c83a76b0SSuyog Pawar /** 993*c83a76b0SSuyog Pawar * version_buffer_size 994*c83a76b0SSuyog Pawar */ 995*c83a76b0SSuyog Pawar UWORD32 u4_version_buffer_size; 996*c83a76b0SSuyog Pawar }ivd_ctl_getversioninfo_ip_t; 997*c83a76b0SSuyog Pawar 998*c83a76b0SSuyog Pawar 999*c83a76b0SSuyog Pawar typedef struct { 1000*c83a76b0SSuyog Pawar /** 1001*c83a76b0SSuyog Pawar * u4_size of the structure 1002*c83a76b0SSuyog Pawar */ 1003*c83a76b0SSuyog Pawar UWORD32 u4_size; 1004*c83a76b0SSuyog Pawar 1005*c83a76b0SSuyog Pawar /** 1006*c83a76b0SSuyog Pawar * error code 1007*c83a76b0SSuyog Pawar */ 1008*c83a76b0SSuyog Pawar UWORD32 u4_error_code; 1009*c83a76b0SSuyog Pawar }ivd_ctl_getversioninfo_op_t; 1010*c83a76b0SSuyog Pawar 1011*c83a76b0SSuyog Pawar #endif /* __IVD_H__ */ 1012*c83a76b0SSuyog Pawar 1013