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