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 Name : impeg2d.h */ 23*a97c2a1fSXin Li /* */ 24*a97c2a1fSXin Li /* Description : This file contains all the necessary structure and */ 25*a97c2a1fSXin Li /* enumeration definitions needed for the Application */ 26*a97c2a1fSXin Li /* Program Interface(API) of the Ittiam MPEG2 ASP */ 27*a97c2a1fSXin Li /* Decoder on Cortex A8 - Neon platform */ 28*a97c2a1fSXin Li /* */ 29*a97c2a1fSXin Li /* List of Functions : impeg2d_api_function */ 30*a97c2a1fSXin Li /* */ 31*a97c2a1fSXin Li /* Issues / Problems : None */ 32*a97c2a1fSXin Li /* */ 33*a97c2a1fSXin Li /* Revision History : */ 34*a97c2a1fSXin Li /* */ 35*a97c2a1fSXin Li /* DD MM YYYY Author(s) Changes (Describe the changes made) */ 36*a97c2a1fSXin Li /* 26 08 2010 100239(RCY) Draft */ 37*a97c2a1fSXin Li /* */ 38*a97c2a1fSXin Li /*****************************************************************************/ 39*a97c2a1fSXin Li 40*a97c2a1fSXin Li #ifndef __IMPEG2D_H__ 41*a97c2a1fSXin Li #define __IMPEG2D_H__ 42*a97c2a1fSXin Li 43*a97c2a1fSXin Li #include "iv.h" 44*a97c2a1fSXin Li #include "ivd.h" 45*a97c2a1fSXin Li #ifdef __cplusplus 46*a97c2a1fSXin Li extern "C" 47*a97c2a1fSXin Li { 48*a97c2a1fSXin Li #endif 49*a97c2a1fSXin Li 50*a97c2a1fSXin Li /*****************************************************************************/ 51*a97c2a1fSXin Li /* Constant Macros */ 52*a97c2a1fSXin Li /*****************************************************************************/ 53*a97c2a1fSXin Li #define EXPORT_MPEG2DEC_FULLCODEC_MEM_RECORDS 22 54*a97c2a1fSXin Li 55*a97c2a1fSXin Li /*****************************************************************************/ 56*a97c2a1fSXin Li /* Function Macros */ 57*a97c2a1fSXin Li /*****************************************************************************/ 58*a97c2a1fSXin Li #define IS_IVD_CONCEALMENT_APPLIED(x) (x & (1 << IVD_APPLIEDCONCEALMENT)) 59*a97c2a1fSXin Li #define IS_IVD_INSUFFICIENTDATA_ERROR(x) (x & (1 << IVD_INSUFFICIENTDATA)) 60*a97c2a1fSXin Li #define IS_IVD_CORRUPTEDDATA_ERROR(x) (x & (1 << IVD_CORRUPTEDDATA)) 61*a97c2a1fSXin Li #define IS_IVD_CORRUPTEDHEADER_ERROR(x) (x & (1 << IVD_CORRUPTEDHEADER)) 62*a97c2a1fSXin Li #define IS_IVD_UNSUPPORTEDINPUT_ERROR(x) (x & (1 << IVD_UNSUPPORTEDINPUT)) 63*a97c2a1fSXin Li #define IS_IVD_UNSUPPORTEDPARAM_ERROR(x) (x & (1 << IVD_UNSUPPORTEDPARAM)) 64*a97c2a1fSXin Li #define IS_IVD_FATAL_ERROR(x) (x & (1 << IVD_FATALERROR)) 65*a97c2a1fSXin Li #define IS_IVD_INVALID_BITSTREAM_ERROR(x) (x & (1 << IVD_INVALID_BITSTREAM)) 66*a97c2a1fSXin Li #define IS_IVD_INCOMPLETE_BITSTREAM_ERROR(x) (x & (1 << IVD_INCOMPLETE_BITSTREAM)) 67*a97c2a1fSXin Li 68*a97c2a1fSXin Li #define SET_IVD_CONCEALMENT_APPLIED(x) ((x) |= (x) | (1 << IVD_APPLIEDCONCEALMENT)) 69*a97c2a1fSXin Li #define SET_IVD_INSUFFICIENTDATA_ERROR(x) ((x) |= (x) | (1 << IVD_INSUFFICIENTDATA)) 70*a97c2a1fSXin Li #define SET_IVD_CORRUPTEDDATA_ERROR(x) ((x) |= (x) | (1 << IVD_CORRUPTEDDATA)) 71*a97c2a1fSXin Li #define SET_IVD_CORRUPTEDHEADER_ERROR(x) ((x) |= (x) | (1 << IVD_CORRUPTEDHEADER)) 72*a97c2a1fSXin Li #define SET_IVD_UNSUPPORTEDINPUT_ERROR(x) ((x) |= (x) | (1 << IVD_UNSUPPORTEDINPUT)) 73*a97c2a1fSXin Li #define SET_IVD_UNSUPPORTEDPARAM_ERROR(x) ((x) |= (x) | (1 << IVD_UNSUPPORTEDPARAM)) 74*a97c2a1fSXin Li #define SET_IVD_FATAL_ERROR(x) ((x) |= (x) | (1 << IVD_FATALERROR)) 75*a97c2a1fSXin Li #define SET_IVD_INVALID_BITSTREAM_ERROR(x) ((x) |= (x) | (1 << IVD_INVALID_BITSTREAM)) 76*a97c2a1fSXin Li #define SET_IVD_INCOMPLETE_BITSTREAM_ERROR(x) ((x) |= (x) | (1 << IVD_INCOMPLETE_BITSTREAM)) 77*a97c2a1fSXin Li 78*a97c2a1fSXin Li /*****************************************************************************/ 79*a97c2a1fSXin Li /* API Function Prototype */ 80*a97c2a1fSXin Li /*****************************************************************************/ 81*a97c2a1fSXin Li IV_API_CALL_STATUS_T impeg2d_api_function(iv_obj_t *ps_handle, 82*a97c2a1fSXin Li void *pv_api_ip, 83*a97c2a1fSXin Li void *pv_api_op); 84*a97c2a1fSXin Li 85*a97c2a1fSXin Li /*****************************************************************************/ 86*a97c2a1fSXin Li /* Enums */ 87*a97c2a1fSXin Li /*****************************************************************************/ 88*a97c2a1fSXin Li /* Codec Error codes for MPEG2 ASP Decoder */ 89*a97c2a1fSXin Li 90*a97c2a1fSXin Li typedef enum 91*a97c2a1fSXin Li { 92*a97c2a1fSXin Li 93*a97c2a1fSXin Li IMPEG2D_UNKNOWN_ERROR = IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS + 1, 94*a97c2a1fSXin Li /* API calls without init call */ 95*a97c2a1fSXin Li IMPEG2D_INIT_NOT_DONE, 96*a97c2a1fSXin Li /* Query number of Memory Records API */ 97*a97c2a1fSXin Li IMPEG2D_QUERY_NUM_MEM_REC_FAIL, 98*a97c2a1fSXin Li 99*a97c2a1fSXin Li /* Fill Memory Records API */ 100*a97c2a1fSXin Li IMPEG2D_FILL_NUM_MEM_REC_NOT_SUFFICIENT, 101*a97c2a1fSXin Li 102*a97c2a1fSXin Li /* Initialize Decoder API */ 103*a97c2a1fSXin Li IMPEG2D_INIT_DEC_SCR_MEM_INSUFFICIENT, 104*a97c2a1fSXin Li IMPEG2D_INIT_DEC_PER_MEM_INSUFFICIENT, 105*a97c2a1fSXin Li IMPEG2D_INIT_NUM_MEM_REC_NOT_SUFFICIENT, 106*a97c2a1fSXin Li IMPEG2D_INIT_CHROMA_FORMAT_HEIGHT_ERROR, 107*a97c2a1fSXin Li 108*a97c2a1fSXin Li /* Decode Sequence Header API */ 109*a97c2a1fSXin Li IMPEG2D_FRM_HDR_START_CODE_NOT_FOUND, 110*a97c2a1fSXin Li IMPEG2D_FRM_HDR_MARKER_BIT_NOT_FOUND, 111*a97c2a1fSXin Li IMPEG2D_PROF_LEVEL_NOT_SUPPORTED, 112*a97c2a1fSXin Li IMPEG2D_FMT_NOT_SUPPORTED, 113*a97c2a1fSXin Li IMPEG2D_SCALABILITIY_NOT_SUPPORTED, 114*a97c2a1fSXin Li IMPEG2D_PIC_SIZE_NOT_SUPPORTED, 115*a97c2a1fSXin Li 116*a97c2a1fSXin Li /* Search for start code API */ 117*a97c2a1fSXin Li //IMPEG2D_SEARCH_START_CODE_FAIL , 118*a97c2a1fSXin Li /* Decode Video Frame API */ 119*a97c2a1fSXin Li IMPEG2D_START_CODE_NOT_FOUND, 120*a97c2a1fSXin Li IMPEG2D_MARKER_BIT_NOT_FOUND, 121*a97c2a1fSXin Li IMPEG2D_INVALID_STUFFING, 122*a97c2a1fSXin Li IMPEG2D_PROFILE_LEVEL_NOT_SUP, 123*a97c2a1fSXin Li IMPEG2D_CHROMA_FMT_NOT_SUP, 124*a97c2a1fSXin Li IMPEG2D_SCALABLITY_NOT_SUP, 125*a97c2a1fSXin Li IMPEG2D_FRM_HDR_DECODE_ERR, 126*a97c2a1fSXin Li IMPEG2D_MB_HDR_DECODE_ERR, 127*a97c2a1fSXin Li IMPEG2D_MB_TEX_DECODE_ERR, 128*a97c2a1fSXin Li IMPEG2D_INCORRECT_QUANT_MATRIX, 129*a97c2a1fSXin Li IMPEG2D_INVALID_SKIP_MB, 130*a97c2a1fSXin Li IMPEG2D_NOT_SUPPORTED_ERR, 131*a97c2a1fSXin Li IMPEG2D_BITSTREAM_BUFF_EXCEEDED_ERR, 132*a97c2a1fSXin Li IMPEG2D_INVALID_PIC_TYPE, 133*a97c2a1fSXin Li IMPEG2D_INVALID_HUFFMAN_CODE, 134*a97c2a1fSXin Li IMPEG2D_NO_FREE_BUF_ERR, 135*a97c2a1fSXin Li 136*a97c2a1fSXin Li /* slice header errors */ 137*a97c2a1fSXin Li IMPEG2D_INVALID_VERT_SIZE, 138*a97c2a1fSXin Li IMPEG2D_MB_DATA_DECODE_ERR, 139*a97c2a1fSXin Li 140*a97c2a1fSXin Li /* Get Display Frame API */ 141*a97c2a1fSXin Li IMPEG2D_GET_DISP_FRM_FAIL, 142*a97c2a1fSXin Li 143*a97c2a1fSXin Li /* Sample Version limitation */ 144*a97c2a1fSXin Li IMPEG2D_SAMPLE_VERSION_LIMIT_ERR, 145*a97c2a1fSXin Li /** 146*a97c2a1fSXin Li * Width/height greater than max width and max height 147*a97c2a1fSXin Li */ 148*a97c2a1fSXin Li IMPEG2D_UNSUPPORTED_DIMENSIONS, 149*a97c2a1fSXin Li 150*a97c2a1fSXin Li /* Unknown API Command */ 151*a97c2a1fSXin Li IMPEG2D_UNKNOWN_API_COMMAND 152*a97c2a1fSXin Li 153*a97c2a1fSXin Li } IMPEG2D_ERROR_CODES_T; 154*a97c2a1fSXin Li 155*a97c2a1fSXin Li /*****************************************************************************/ 156*a97c2a1fSXin Li /* Extended Structures */ 157*a97c2a1fSXin Li /*****************************************************************************/ 158*a97c2a1fSXin Li typedef enum 159*a97c2a1fSXin Li { 160*a97c2a1fSXin Li /** Set number of cores/threads to be used */ 161*a97c2a1fSXin Li IMPEG2D_CMD_CTL_SET_NUM_CORES = IVD_CMD_CTL_CODEC_SUBCMD_START, 162*a97c2a1fSXin Li 163*a97c2a1fSXin Li /** Set processor details */ 164*a97c2a1fSXin Li IMPEG2D_CMD_CTL_SET_PROCESSOR = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x001, 165*a97c2a1fSXin Li 166*a97c2a1fSXin Li /** Get display buffer dimensions */ 167*a97c2a1fSXin Li IMPEG2D_CMD_CTL_GET_BUFFER_DIMENSIONS = IVD_CMD_CTL_CODEC_SUBCMD_START 168*a97c2a1fSXin Li + 0x100, 169*a97c2a1fSXin Li 170*a97c2a1fSXin Li /** Get Seq header/seq header extension info */ 171*a97c2a1fSXin Li IMPEG2D_CMD_CTL_GET_SEQ_INFO = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x101, 172*a97c2a1fSXin Li 173*a97c2a1fSXin Li } IMPEG2D_CMD_CTL_SUB_CMDS; 174*a97c2a1fSXin Li 175*a97c2a1fSXin Li /*****************************************************************************/ 176*a97c2a1fSXin Li /* Get Number of Memory Records */ 177*a97c2a1fSXin Li /*****************************************************************************/ 178*a97c2a1fSXin Li 179*a97c2a1fSXin Li typedef struct 180*a97c2a1fSXin Li { 181*a97c2a1fSXin Li iv_num_mem_rec_ip_t s_ivd_num_mem_rec_ip_t; 182*a97c2a1fSXin Li } impeg2d_num_mem_rec_ip_t; 183*a97c2a1fSXin Li 184*a97c2a1fSXin Li typedef struct 185*a97c2a1fSXin Li { 186*a97c2a1fSXin Li iv_num_mem_rec_op_t s_ivd_num_mem_rec_op_t; 187*a97c2a1fSXin Li } impeg2d_num_mem_rec_op_t; 188*a97c2a1fSXin Li 189*a97c2a1fSXin Li /*****************************************************************************/ 190*a97c2a1fSXin Li /* Fill Memory Records */ 191*a97c2a1fSXin Li /*****************************************************************************/ 192*a97c2a1fSXin Li 193*a97c2a1fSXin Li typedef struct 194*a97c2a1fSXin Li { 195*a97c2a1fSXin Li iv_fill_mem_rec_ip_t s_ivd_fill_mem_rec_ip_t; 196*a97c2a1fSXin Li /* Flag to enable sharing of reference buffers between decoder 197*a97c2a1fSXin Li and application */ 198*a97c2a1fSXin Li 199*a97c2a1fSXin Li UWORD32 u4_share_disp_buf; 200*a97c2a1fSXin Li 201*a97c2a1fSXin Li /* format in which codec has to give out frame data for display */ 202*a97c2a1fSXin Li IV_COLOR_FORMAT_T e_output_format; 203*a97c2a1fSXin Li 204*a97c2a1fSXin Li /** 205*a97c2a1fSXin Li * Flag to enable/disable deinterlacing 206*a97c2a1fSXin Li */ 207*a97c2a1fSXin Li UWORD32 u4_deinterlace; 208*a97c2a1fSXin Li 209*a97c2a1fSXin Li /** 210*a97c2a1fSXin Li * enabling threads 211*a97c2a1fSXin Li */ 212*a97c2a1fSXin Li UWORD32 u4_keep_threads_active; 213*a97c2a1fSXin Li 214*a97c2a1fSXin Li } impeg2d_fill_mem_rec_ip_t; 215*a97c2a1fSXin Li 216*a97c2a1fSXin Li typedef struct 217*a97c2a1fSXin Li { 218*a97c2a1fSXin Li iv_fill_mem_rec_op_t s_ivd_fill_mem_rec_op_t; 219*a97c2a1fSXin Li } impeg2d_fill_mem_rec_op_t; 220*a97c2a1fSXin Li 221*a97c2a1fSXin Li /*****************************************************************************/ 222*a97c2a1fSXin Li /* Retrieve Memory Records */ 223*a97c2a1fSXin Li /*****************************************************************************/ 224*a97c2a1fSXin Li 225*a97c2a1fSXin Li typedef struct 226*a97c2a1fSXin Li { 227*a97c2a1fSXin Li iv_retrieve_mem_rec_ip_t s_ivd_retrieve_mem_rec_ip_t; 228*a97c2a1fSXin Li } impeg2d_retrieve_mem_rec_ip_t; 229*a97c2a1fSXin Li 230*a97c2a1fSXin Li typedef struct 231*a97c2a1fSXin Li { 232*a97c2a1fSXin Li iv_retrieve_mem_rec_op_t s_ivd_retrieve_mem_rec_op_t; 233*a97c2a1fSXin Li } impeg2d_retrieve_mem_rec_op_t; 234*a97c2a1fSXin Li 235*a97c2a1fSXin Li /*****************************************************************************/ 236*a97c2a1fSXin Li /* Initialize decoder */ 237*a97c2a1fSXin Li /*****************************************************************************/ 238*a97c2a1fSXin Li 239*a97c2a1fSXin Li typedef struct 240*a97c2a1fSXin Li { 241*a97c2a1fSXin Li ivd_init_ip_t s_ivd_init_ip_t; 242*a97c2a1fSXin Li /* Flag to enable sharing of reference buffers between decoder 243*a97c2a1fSXin Li and application */ 244*a97c2a1fSXin Li UWORD32 u4_share_disp_buf; 245*a97c2a1fSXin Li 246*a97c2a1fSXin Li /** 247*a97c2a1fSXin Li * Flag to enable/disable deinterlacing 248*a97c2a1fSXin Li */ 249*a97c2a1fSXin Li UWORD32 u4_deinterlace; 250*a97c2a1fSXin Li 251*a97c2a1fSXin Li /** 252*a97c2a1fSXin Li * enable_threads 253*a97c2a1fSXin Li */ 254*a97c2a1fSXin Li UWORD32 u4_keep_threads_active; 255*a97c2a1fSXin Li 256*a97c2a1fSXin Li } impeg2d_init_ip_t; 257*a97c2a1fSXin Li 258*a97c2a1fSXin Li typedef struct 259*a97c2a1fSXin Li { 260*a97c2a1fSXin Li ivd_init_op_t s_ivd_init_op_t; 261*a97c2a1fSXin Li } impeg2d_init_op_t; 262*a97c2a1fSXin Li 263*a97c2a1fSXin Li /*****************************************************************************/ 264*a97c2a1fSXin Li /* Video Decode */ 265*a97c2a1fSXin Li /*****************************************************************************/ 266*a97c2a1fSXin Li 267*a97c2a1fSXin Li typedef struct 268*a97c2a1fSXin Li { 269*a97c2a1fSXin Li ivd_video_decode_ip_t s_ivd_video_decode_ip_t; 270*a97c2a1fSXin Li } impeg2d_video_decode_ip_t; 271*a97c2a1fSXin Li 272*a97c2a1fSXin Li typedef struct 273*a97c2a1fSXin Li { 274*a97c2a1fSXin Li ivd_video_decode_op_t s_ivd_video_decode_op_t; 275*a97c2a1fSXin Li } impeg2d_video_decode_op_t; 276*a97c2a1fSXin Li 277*a97c2a1fSXin Li /*****************************************************************************/ 278*a97c2a1fSXin Li /* Get Display Frame */ 279*a97c2a1fSXin Li /*****************************************************************************/ 280*a97c2a1fSXin Li 281*a97c2a1fSXin Li typedef struct 282*a97c2a1fSXin Li { 283*a97c2a1fSXin Li ivd_get_display_frame_ip_t s_ivd_get_display_frame_ip_t; 284*a97c2a1fSXin Li } impeg2d_get_display_frame_ip_t; 285*a97c2a1fSXin Li 286*a97c2a1fSXin Li typedef struct 287*a97c2a1fSXin Li { 288*a97c2a1fSXin Li ivd_get_display_frame_op_t s_ivd_get_display_frame_op_t; 289*a97c2a1fSXin Li } impeg2d_get_display_frame_op_t; 290*a97c2a1fSXin Li 291*a97c2a1fSXin Li /*****************************************************************************/ 292*a97c2a1fSXin Li /* Set Display Frame */ 293*a97c2a1fSXin Li /*****************************************************************************/ 294*a97c2a1fSXin Li typedef struct 295*a97c2a1fSXin Li { 296*a97c2a1fSXin Li ivd_set_display_frame_ip_t s_ivd_set_display_frame_ip_t; 297*a97c2a1fSXin Li } impeg2d_set_display_frame_ip_t; 298*a97c2a1fSXin Li 299*a97c2a1fSXin Li typedef struct 300*a97c2a1fSXin Li { 301*a97c2a1fSXin Li ivd_set_display_frame_op_t s_ivd_set_display_frame_op_t; 302*a97c2a1fSXin Li } impeg2d_set_display_frame_op_t; 303*a97c2a1fSXin Li 304*a97c2a1fSXin Li /*****************************************************************************/ 305*a97c2a1fSXin Li /* Release Display Buffers */ 306*a97c2a1fSXin Li /*****************************************************************************/ 307*a97c2a1fSXin Li 308*a97c2a1fSXin Li typedef struct 309*a97c2a1fSXin Li { 310*a97c2a1fSXin Li ivd_rel_display_frame_ip_t s_ivd_rel_display_frame_ip_t; 311*a97c2a1fSXin Li } impeg2d_rel_display_frame_ip_t; 312*a97c2a1fSXin Li 313*a97c2a1fSXin Li typedef struct 314*a97c2a1fSXin Li { 315*a97c2a1fSXin Li ivd_rel_display_frame_op_t s_ivd_rel_display_frame_op_t; 316*a97c2a1fSXin Li } impeg2d_rel_display_frame_op_t; 317*a97c2a1fSXin Li 318*a97c2a1fSXin Li /*****************************************************************************/ 319*a97c2a1fSXin Li /* Video control Flush */ 320*a97c2a1fSXin Li /*****************************************************************************/ 321*a97c2a1fSXin Li 322*a97c2a1fSXin Li typedef struct 323*a97c2a1fSXin Li { 324*a97c2a1fSXin Li ivd_ctl_flush_ip_t s_ivd_ctl_flush_ip_t; 325*a97c2a1fSXin Li } impeg2d_ctl_flush_ip_t; 326*a97c2a1fSXin Li 327*a97c2a1fSXin Li typedef struct 328*a97c2a1fSXin Li { 329*a97c2a1fSXin Li ivd_ctl_flush_op_t s_ivd_ctl_flush_op_t; 330*a97c2a1fSXin Li } impeg2d_ctl_flush_op_t; 331*a97c2a1fSXin Li 332*a97c2a1fSXin Li /*****************************************************************************/ 333*a97c2a1fSXin Li /* Video control reset */ 334*a97c2a1fSXin Li /*****************************************************************************/ 335*a97c2a1fSXin Li 336*a97c2a1fSXin Li typedef struct 337*a97c2a1fSXin Li { 338*a97c2a1fSXin Li ivd_ctl_reset_ip_t s_ivd_ctl_reset_ip_t; 339*a97c2a1fSXin Li } impeg2d_ctl_reset_ip_t; 340*a97c2a1fSXin Li 341*a97c2a1fSXin Li typedef struct 342*a97c2a1fSXin Li { 343*a97c2a1fSXin Li ivd_ctl_reset_op_t s_ivd_ctl_reset_op_t; 344*a97c2a1fSXin Li } impeg2d_ctl_reset_op_t; 345*a97c2a1fSXin Li 346*a97c2a1fSXin Li /*****************************************************************************/ 347*a97c2a1fSXin Li /* Video control Set Params */ 348*a97c2a1fSXin Li /*****************************************************************************/ 349*a97c2a1fSXin Li 350*a97c2a1fSXin Li typedef struct 351*a97c2a1fSXin Li { 352*a97c2a1fSXin Li ivd_ctl_set_config_ip_t s_ivd_ctl_set_config_ip_t; 353*a97c2a1fSXin Li } impeg2d_ctl_set_config_ip_t; 354*a97c2a1fSXin Li 355*a97c2a1fSXin Li typedef struct 356*a97c2a1fSXin Li { 357*a97c2a1fSXin Li ivd_ctl_set_config_op_t s_ivd_ctl_set_config_op_t; 358*a97c2a1fSXin Li } impeg2d_ctl_set_config_op_t; 359*a97c2a1fSXin Li 360*a97c2a1fSXin Li /*****************************************************************************/ 361*a97c2a1fSXin Li /* Video control:Get Buf Info */ 362*a97c2a1fSXin Li /*****************************************************************************/ 363*a97c2a1fSXin Li 364*a97c2a1fSXin Li typedef struct 365*a97c2a1fSXin Li { 366*a97c2a1fSXin Li ivd_ctl_getbufinfo_ip_t s_ivd_ctl_getbufinfo_ip_t; 367*a97c2a1fSXin Li } impeg2d_ctl_getbufinfo_ip_t; 368*a97c2a1fSXin Li 369*a97c2a1fSXin Li typedef struct 370*a97c2a1fSXin Li { 371*a97c2a1fSXin Li ivd_ctl_getbufinfo_op_t s_ivd_ctl_getbufinfo_op_t; 372*a97c2a1fSXin Li } impeg2d_ctl_getbufinfo_op_t; 373*a97c2a1fSXin Li 374*a97c2a1fSXin Li /*****************************************************************************/ 375*a97c2a1fSXin Li /* Video control:Getstatus Call */ 376*a97c2a1fSXin Li /*****************************************************************************/ 377*a97c2a1fSXin Li 378*a97c2a1fSXin Li typedef struct 379*a97c2a1fSXin Li { 380*a97c2a1fSXin Li ivd_ctl_getstatus_ip_t s_ivd_ctl_getstatus_ip_t; 381*a97c2a1fSXin Li } impeg2d_ctl_getstatus_ip_t; 382*a97c2a1fSXin Li 383*a97c2a1fSXin Li typedef struct 384*a97c2a1fSXin Li { 385*a97c2a1fSXin Li ivd_ctl_getstatus_op_t s_ivd_ctl_getstatus_op_t; 386*a97c2a1fSXin Li } impeg2d_ctl_getstatus_op_t; 387*a97c2a1fSXin Li 388*a97c2a1fSXin Li /*****************************************************************************/ 389*a97c2a1fSXin Li /* Video control:Get Version Info */ 390*a97c2a1fSXin Li /*****************************************************************************/ 391*a97c2a1fSXin Li 392*a97c2a1fSXin Li typedef struct 393*a97c2a1fSXin Li { 394*a97c2a1fSXin Li ivd_ctl_getversioninfo_ip_t s_ivd_ctl_getversioninfo_ip_t; 395*a97c2a1fSXin Li } impeg2d_ctl_getversioninfo_ip_t; 396*a97c2a1fSXin Li 397*a97c2a1fSXin Li typedef struct 398*a97c2a1fSXin Li { 399*a97c2a1fSXin Li ivd_ctl_getversioninfo_op_t s_ivd_ctl_getversioninfo_op_t; 400*a97c2a1fSXin Li } impeg2d_ctl_getversioninfo_op_t; 401*a97c2a1fSXin Li 402*a97c2a1fSXin Li /*****************************************************************************/ 403*a97c2a1fSXin Li /* Video control:Disable Qpel */ 404*a97c2a1fSXin Li /*****************************************************************************/ 405*a97c2a1fSXin Li 406*a97c2a1fSXin Li typedef struct 407*a97c2a1fSXin Li { 408*a97c2a1fSXin Li UWORD32 u4_size; 409*a97c2a1fSXin Li IVD_API_COMMAND_TYPE_T e_cmd; 410*a97c2a1fSXin Li IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 411*a97c2a1fSXin Li UWORD32 u4_num_cores; 412*a97c2a1fSXin Li } impeg2d_ctl_set_num_cores_ip_t; 413*a97c2a1fSXin Li 414*a97c2a1fSXin Li typedef struct 415*a97c2a1fSXin Li { 416*a97c2a1fSXin Li UWORD32 u4_size; 417*a97c2a1fSXin Li UWORD32 u4_error_code; 418*a97c2a1fSXin Li } impeg2d_ctl_set_num_cores_op_t; 419*a97c2a1fSXin Li 420*a97c2a1fSXin Li typedef struct 421*a97c2a1fSXin Li { 422*a97c2a1fSXin Li /** 423*a97c2a1fSXin Li * size 424*a97c2a1fSXin Li */ 425*a97c2a1fSXin Li UWORD32 u4_size; 426*a97c2a1fSXin Li /** 427*a97c2a1fSXin Li * cmd 428*a97c2a1fSXin Li */ 429*a97c2a1fSXin Li IVD_API_COMMAND_TYPE_T e_cmd; 430*a97c2a1fSXin Li /** 431*a97c2a1fSXin Li * sub cmd 432*a97c2a1fSXin Li */ 433*a97c2a1fSXin Li IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 434*a97c2a1fSXin Li /** 435*a97c2a1fSXin Li * Processor type 436*a97c2a1fSXin Li */ 437*a97c2a1fSXin Li UWORD32 u4_arch; 438*a97c2a1fSXin Li /** 439*a97c2a1fSXin Li * SOC type 440*a97c2a1fSXin Li */ 441*a97c2a1fSXin Li UWORD32 u4_soc; 442*a97c2a1fSXin Li 443*a97c2a1fSXin Li /** 444*a97c2a1fSXin Li * num_cores 445*a97c2a1fSXin Li */ 446*a97c2a1fSXin Li UWORD32 u4_num_cores; 447*a97c2a1fSXin Li 448*a97c2a1fSXin Li } impeg2d_ctl_set_processor_ip_t; 449*a97c2a1fSXin Li 450*a97c2a1fSXin Li typedef struct 451*a97c2a1fSXin Li { 452*a97c2a1fSXin Li /** 453*a97c2a1fSXin Li * size 454*a97c2a1fSXin Li */ 455*a97c2a1fSXin Li UWORD32 u4_size; 456*a97c2a1fSXin Li /** 457*a97c2a1fSXin Li * error_code 458*a97c2a1fSXin Li */ 459*a97c2a1fSXin Li UWORD32 u4_error_code; 460*a97c2a1fSXin Li } impeg2d_ctl_set_processor_op_t; 461*a97c2a1fSXin Li 462*a97c2a1fSXin Li typedef struct 463*a97c2a1fSXin Li { 464*a97c2a1fSXin Li 465*a97c2a1fSXin Li /** 466*a97c2a1fSXin Li * size 467*a97c2a1fSXin Li */ 468*a97c2a1fSXin Li UWORD32 u4_size; 469*a97c2a1fSXin Li 470*a97c2a1fSXin Li /** 471*a97c2a1fSXin Li * cmd 472*a97c2a1fSXin Li */ 473*a97c2a1fSXin Li IVD_API_COMMAND_TYPE_T e_cmd; 474*a97c2a1fSXin Li 475*a97c2a1fSXin Li /** 476*a97c2a1fSXin Li * sub cmd 477*a97c2a1fSXin Li */ 478*a97c2a1fSXin Li IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 479*a97c2a1fSXin Li } impeg2d_ctl_get_frame_dimensions_ip_t; 480*a97c2a1fSXin Li 481*a97c2a1fSXin Li typedef struct 482*a97c2a1fSXin Li { 483*a97c2a1fSXin Li 484*a97c2a1fSXin Li /** 485*a97c2a1fSXin Li * size 486*a97c2a1fSXin Li */ 487*a97c2a1fSXin Li UWORD32 u4_size; 488*a97c2a1fSXin Li 489*a97c2a1fSXin Li /** 490*a97c2a1fSXin Li * error_code 491*a97c2a1fSXin Li */ 492*a97c2a1fSXin Li UWORD32 u4_error_code; 493*a97c2a1fSXin Li 494*a97c2a1fSXin Li /** 495*a97c2a1fSXin Li * x_offset[3] 496*a97c2a1fSXin Li */ 497*a97c2a1fSXin Li UWORD32 u4_x_offset[3]; 498*a97c2a1fSXin Li 499*a97c2a1fSXin Li /** 500*a97c2a1fSXin Li * y_offset[3] 501*a97c2a1fSXin Li */ 502*a97c2a1fSXin Li UWORD32 u4_y_offset[3]; 503*a97c2a1fSXin Li 504*a97c2a1fSXin Li /** 505*a97c2a1fSXin Li * disp_wd[3] 506*a97c2a1fSXin Li */ 507*a97c2a1fSXin Li UWORD32 u4_disp_wd[3]; 508*a97c2a1fSXin Li 509*a97c2a1fSXin Li /** 510*a97c2a1fSXin Li * disp_ht[3] 511*a97c2a1fSXin Li */ 512*a97c2a1fSXin Li UWORD32 u4_disp_ht[3]; 513*a97c2a1fSXin Li 514*a97c2a1fSXin Li /** 515*a97c2a1fSXin Li * buffer_wd[3] 516*a97c2a1fSXin Li */ 517*a97c2a1fSXin Li UWORD32 u4_buffer_wd[3]; 518*a97c2a1fSXin Li 519*a97c2a1fSXin Li /** 520*a97c2a1fSXin Li * buffer_ht[3] 521*a97c2a1fSXin Li */ 522*a97c2a1fSXin Li UWORD32 u4_buffer_ht[3]; 523*a97c2a1fSXin Li } impeg2d_ctl_get_frame_dimensions_op_t; 524*a97c2a1fSXin Li 525*a97c2a1fSXin Li typedef struct 526*a97c2a1fSXin Li { 527*a97c2a1fSXin Li /** 528*a97c2a1fSXin Li * size 529*a97c2a1fSXin Li */ 530*a97c2a1fSXin Li UWORD32 u4_size; 531*a97c2a1fSXin Li 532*a97c2a1fSXin Li /** 533*a97c2a1fSXin Li * cmd 534*a97c2a1fSXin Li */ 535*a97c2a1fSXin Li IVD_API_COMMAND_TYPE_T e_cmd; 536*a97c2a1fSXin Li 537*a97c2a1fSXin Li /** 538*a97c2a1fSXin Li * sub cmd 539*a97c2a1fSXin Li */ 540*a97c2a1fSXin Li IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd; 541*a97c2a1fSXin Li } impeg2d_ctl_get_seq_info_ip_t; 542*a97c2a1fSXin Li 543*a97c2a1fSXin Li typedef struct 544*a97c2a1fSXin Li { 545*a97c2a1fSXin Li /** 546*a97c2a1fSXin Li * size 547*a97c2a1fSXin Li */ 548*a97c2a1fSXin Li UWORD32 u4_size; 549*a97c2a1fSXin Li 550*a97c2a1fSXin Li /** 551*a97c2a1fSXin Li * error_code 552*a97c2a1fSXin Li */ 553*a97c2a1fSXin Li UWORD32 u4_error_code; 554*a97c2a1fSXin Li 555*a97c2a1fSXin Li /** 556*a97c2a1fSXin Li * aspect_ratio_information 557*a97c2a1fSXin Li */ 558*a97c2a1fSXin Li UWORD8 u1_aspect_ratio_information; 559*a97c2a1fSXin Li 560*a97c2a1fSXin Li /** 561*a97c2a1fSXin Li * frame_rate_code 562*a97c2a1fSXin Li */ 563*a97c2a1fSXin Li UWORD8 u1_frame_rate_code; 564*a97c2a1fSXin Li 565*a97c2a1fSXin Li /** 566*a97c2a1fSXin Li * frame_rate_extension_n 567*a97c2a1fSXin Li */ 568*a97c2a1fSXin Li UWORD8 u1_frame_rate_extension_n; 569*a97c2a1fSXin Li 570*a97c2a1fSXin Li /** 571*a97c2a1fSXin Li * frame_rate_extension_d 572*a97c2a1fSXin Li */ 573*a97c2a1fSXin Li UWORD8 u1_frame_rate_extension_d; 574*a97c2a1fSXin Li 575*a97c2a1fSXin Li /** 576*a97c2a1fSXin Li * video_format 577*a97c2a1fSXin Li */ 578*a97c2a1fSXin Li UWORD8 u1_video_format; 579*a97c2a1fSXin Li 580*a97c2a1fSXin Li /** 581*a97c2a1fSXin Li * colour_primaries 582*a97c2a1fSXin Li */ 583*a97c2a1fSXin Li UWORD8 u1_colour_primaries; 584*a97c2a1fSXin Li 585*a97c2a1fSXin Li /** 586*a97c2a1fSXin Li * transfer_characteristics 587*a97c2a1fSXin Li */ 588*a97c2a1fSXin Li UWORD8 u1_transfer_characteristics; 589*a97c2a1fSXin Li 590*a97c2a1fSXin Li /** 591*a97c2a1fSXin Li * matrix_coefficients 592*a97c2a1fSXin Li */ 593*a97c2a1fSXin Li UWORD8 u1_matrix_coefficients; 594*a97c2a1fSXin Li 595*a97c2a1fSXin Li /** 596*a97c2a1fSXin Li * display_horizontal_size 597*a97c2a1fSXin Li */ 598*a97c2a1fSXin Li UWORD16 u2_display_horizontal_size; 599*a97c2a1fSXin Li 600*a97c2a1fSXin Li /** 601*a97c2a1fSXin Li * display_vertical_size 602*a97c2a1fSXin Li */ 603*a97c2a1fSXin Li UWORD16 u2_display_vertical_size; 604*a97c2a1fSXin Li 605*a97c2a1fSXin Li } impeg2d_ctl_get_seq_info_op_t; 606*a97c2a1fSXin Li #ifdef __cplusplus 607*a97c2a1fSXin Li } /* closing brace for extern "C" */ 608*a97c2a1fSXin Li #endif 609*a97c2a1fSXin Li 610*a97c2a1fSXin Li #endif /* __IMPEG2D_H__ */ 611