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