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 *  iv.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 and Image  codecs
     29 *
     30 * @author
     31 *  100239(RCY)
     32 *
     33 * @par List of Functions:
     34 *
     35 * @remarks
     36 *  None
     37 *
     38 *******************************************************************************
     39 */
     40 
     41 
     42 #ifndef _IV_H
     43 #define _IV_H
     44 
     45 /*****************************************************************************/
     46 /* Constant Macros                                                           */
     47 /*****************************************************************************/
     48 
     49 
     50 /*****************************************************************************/
     51 /* Typedefs                                                                  */
     52 /*****************************************************************************/
     53 
     54 /*****************************************************************************/
     55 /* Enums                                                                     */
     56 /*****************************************************************************/
     57 
     58 
     59 /* IV_API_CALL_STATUS_T:This is only to return the FAIL/PASS status to the  */
     60 /* application for the current API call                                     */
     61 
     62 typedef enum {
     63     IV_STATUS_NA                                = 0x7FFFFFFF,
     64     IV_SUCCESS                                  = 0x0,
     65     IV_FAIL                                     = 0x1,
     66 }IV_API_CALL_STATUS_T;
     67 
     68 
     69 /* IV_COLOR_FORMAT_T: This enumeration lists all the color formats which    */
     70 /* finds usage in video/image codecs                                        */
     71 
     72 typedef enum {
     73     IV_CHROMA_NA                            = 0x7FFFFFFF,
     74     IV_YUV_420P                             = 0x1,
     75     IV_YUV_422P                             = 0x2,
     76     IV_420_UV_INTL                          = 0x3,
     77     IV_YUV_422IBE                           = 0x4,
     78     IV_YUV_422ILE                           = 0x5,
     79     IV_YUV_444P                             = 0x6,
     80     IV_YUV_411P                             = 0x7,
     81     IV_GRAY                                 = 0x8,
     82     IV_RGB_565                              = 0x9,
     83     IV_RGB_24                               = 0xa,
     84     IV_YUV_420SP_UV                         = 0xb,
     85     IV_YUV_420SP_VU                         = 0xc,
     86     IV_RGBA_8888                            = 0xd
     87 }IV_COLOR_FORMAT_T;
     88 
     89 /* IV_PICTURE_CODING_TYPE_T: VOP/Frame coding type Enumeration              */
     90 
     91 typedef enum {
     92     IV_NA_FRAME                             = 0x7FFFFFFF,
     93     IV_I_FRAME                              = 0x0,
     94     IV_P_FRAME                              = 0x1,
     95     IV_B_FRAME                              = 0x2,
     96     IV_IDR_FRAME                            = 0x3,
     97     IV_II_FRAME                             = 0x4,
     98     IV_IP_FRAME                             = 0x5,
     99     IV_IB_FRAME                             = 0x6,
    100     IV_PI_FRAME                             = 0x7,
    101     IV_PP_FRAME                             = 0x8,
    102     IV_PB_FRAME                             = 0x9,
    103     IV_BI_FRAME                             = 0xa,
    104     IV_BP_FRAME                             = 0xb,
    105     IV_BB_FRAME                             = 0xc,
    106     IV_MBAFF_I_FRAME                        = 0xd,
    107     IV_MBAFF_P_FRAME                        = 0xe,
    108     IV_MBAFF_B_FRAME                        = 0xf,
    109     IV_MBAFF_IDR_FRAME                      = 0x10,
    110     IV_NOT_CODED_FRAME                      = 0x11,
    111     IV_FRAMETYPE_DEFAULT                    = IV_I_FRAME
    112 }IV_PICTURE_CODING_TYPE_T;
    113 
    114 /* IV_FLD_TYPE_T: field type Enumeration                                    */
    115 
    116 typedef enum {
    117     IV_NA_FLD                               = 0x7FFFFFFF,
    118     IV_TOP_FLD                              = 0x0,
    119     IV_BOT_FLD                              = 0x1,
    120     IV_FLD_TYPE_DEFAULT                     = IV_TOP_FLD
    121 }IV_FLD_TYPE_T;
    122 
    123 /* IV_CONTENT_TYPE_T: Video content type                                     */
    124 
    125 typedef enum {
    126     IV_CONTENTTYPE_NA                       = 0x7FFFFFFF,
    127     IV_PROGRESSIVE                          = 0x0,
    128     IV_INTERLACED                           = 0x1,
    129     IV_PROGRESSIVE_FRAME                    = 0x2,
    130     IV_INTERLACED_FRAME                     = 0x3,
    131     IV_INTERLACED_TOPFIELD                  = 0x4,
    132     IV_INTERLACED_BOTTOMFIELD               = 0x5,
    133     IV_CONTENTTYPE_DEFAULT                  = IV_PROGRESSIVE,
    134 }IV_CONTENT_TYPE_T;
    135 
    136 /* IV_API_COMMAND_TYPE_T:API command type                                   */
    137 typedef enum {
    138     IV_CMD_NA                           = 0x7FFFFFFF,
    139     IV_CMD_DUMMY_ELEMENT                = 0x4,
    140 }IV_API_COMMAND_TYPE_T;
    141 
    142 /*****************************************************************************/
    143 /* Structure                                                                 */
    144 /*****************************************************************************/
    145 
    146 /* IV_OBJ_T: This structure defines the handle for the codec instance        */
    147 
    148 typedef struct {
    149     /**
    150      * u4_size of the structure
    151      */
    152     UWORD32                                     u4_size;
    153 
    154     /**
    155      * Pointer to the API function pointer table of the codec
    156      */
    157     void                                        *pv_fxns;
    158 
    159     /**
    160      * Pointer to the handle of the codec
    161      */
    162     void                                        *pv_codec_handle;
    163 }iv_obj_t;
    164 
    165 
    166 /* IV_YUV_BUF_T: This structure defines attributes for the yuv buffer        */
    167 
    168 typedef struct {
    169     /**
    170      * u4_size of the structure
    171      */
    172     UWORD32                                     u4_size;
    173 
    174     /**
    175      * Pointer to Luma (Y) Buffer
    176      */
    177 
    178     void                                        *pv_y_buf;
    179     /**
    180      * Pointer to Chroma (Cb) Buffer
    181      */
    182     void                                        *pv_u_buf;
    183 
    184     /**
    185      * Pointer to Chroma (Cr) Buffer
    186      */
    187     void                                        *pv_v_buf;
    188 
    189     /**
    190      * Width of the Luma (Y) Buffer
    191      */
    192     UWORD32                                     u4_y_wd;
    193 
    194     /**
    195      * Height of the Luma (Y) Buffer
    196      */
    197     UWORD32                                     u4_y_ht;
    198 
    199     /**
    200      * Stride/Pitch of the Luma (Y) Buffer
    201      */
    202     UWORD32                                     u4_y_strd;
    203 
    204     /**
    205      * Width of the Chroma (Cb) Buffer
    206      */
    207     UWORD32                                     u4_u_wd;
    208 
    209     /**
    210      * Height of the Chroma (Cb) Buffer
    211      */
    212     UWORD32                                     u4_u_ht;
    213 
    214     /**
    215      * Stride/Pitch of the Chroma (Cb) Buffer
    216      */
    217     UWORD32                                     u4_u_strd;
    218 
    219     /**
    220      * Width of the Chroma (Cr) Buffer
    221      */
    222     UWORD32                                     u4_v_wd;
    223 
    224     /**
    225      * Height of the Chroma (Cr) Buffer
    226      */
    227     UWORD32                                     u4_v_ht;
    228 
    229     /**
    230      * Stride/Pitch of the Chroma (Cr) Buffer
    231      */
    232     UWORD32                                     u4_v_strd;
    233 }iv_yuv_buf_t;
    234 
    235 
    236 
    237 #endif /* _IV_H */
    238 
    239