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