Home | History | Annotate | Download | only in encoder
      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 Name         : ih264e.h                                    */
     23 /*                                                                           */
     24 /*  Description       : This file contains all the necessary structure and   */
     25 /*                      enumeration definitions needed for the Application   */
     26 /*                      Program Interface(API) of the Ittiam MPEG4        */
     27 /*                      Encoder on Cortex A8 - Neon platform                 */
     28 /*                                                                           */
     29 /*  List of Functions : ih264e_api_function                              */
     30 /*                                                                           */
     31 /*  Issues / Problems : None                                                 */
     32 /*                                                                           */
     33 /*  Revision History  :                                                      */
     34 /*                                                                           */
     35 /*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
     36 /*         26 08 2010   100239(RCY)     Draft                                */
     37 /*                                                                           */
     38 /*****************************************************************************/
     39 
     40 #ifndef _IH264E_H_
     41 #define _IH264E_H_
     42 
     43 #ifdef __cplusplus
     44 extern "C" {
     45 #endif
     46 
     47 #include "iv2.h"
     48 #include "ive2.h"
     49 /*****************************************************************************/
     50 /* Constant Macros                                                           */
     51 /*****************************************************************************/
     52 
     53 
     54 /*****************************************************************************/
     55 /* API Function Prototype                                                    */
     56 /*****************************************************************************/
     57 IV_STATUS_T ih264e_api_function(iv_obj_t *ps_handle, void *pv_api_ip,void *pv_api_op);
     58 
     59 /*****************************************************************************/
     60 /* Enums                                                                     */
     61 /*****************************************************************************/
     62 typedef enum
     63 {
     64     IH264E_CMD_CTL_SET_ME_INFO_ENABLE,
     65 }IH264E_CMD_CTL_SUB_CMDS;
     66 
     67 
     68 /*****************************************************************************/
     69 /* Extended Structures                                                       */
     70 /*****************************************************************************/
     71 
     72 /*****************************************************************************/
     73 /*  Get Number of Memory Records                                             */
     74 /*****************************************************************************/
     75 
     76 
     77 typedef struct
     78 {
     79     iv_num_mem_rec_ip_t                    s_ive_ip;
     80 }ih264e_num_mem_rec_ip_t;
     81 
     82 
     83 typedef struct
     84 {
     85     iv_num_mem_rec_op_t                    s_ive_op;
     86 }ih264e_num_mem_rec_op_t;
     87 
     88 
     89 /*****************************************************************************/
     90 /*  Fill Memory Records                                                      */
     91 /*****************************************************************************/
     92 
     93 
     94 typedef struct
     95 {
     96     iv_fill_mem_rec_ip_t                   s_ive_ip;
     97 }ih264e_fill_mem_rec_ip_t;
     98 
     99 
    100 typedef struct
    101 {
    102     iv_fill_mem_rec_op_t                   s_ive_op;
    103 }ih264e_fill_mem_rec_op_t;
    104 
    105 /*****************************************************************************/
    106 /*  Retrieve Memory Records                                                  */
    107 /*****************************************************************************/
    108 
    109 
    110 typedef struct
    111 {
    112     iv_retrieve_mem_rec_ip_t               s_ive_ip;
    113 }ih264e_retrieve_mem_rec_ip_t;
    114 
    115 
    116 typedef struct
    117 {
    118     iv_retrieve_mem_rec_op_t               s_ive_op;
    119 }ih264e_retrieve_mem_rec_op_t;
    120 
    121 
    122 /*****************************************************************************/
    123 /*   Initialize encoder                                                      */
    124 /*****************************************************************************/
    125 
    126 typedef struct
    127 {
    128     ive_init_ip_t                           s_ive_ip;
    129 }ih264e_init_ip_t;
    130 
    131 
    132 typedef struct
    133 {
    134     ive_init_op_t                           s_ive_op;
    135 }ih264e_init_op_t;
    136 
    137 
    138 /*****************************************************************************/
    139 /*   Queue Input raw buffer - Send the YUV buffer to be encoded              */
    140 /*****************************************************************************/
    141 typedef struct
    142 {
    143     ive_queue_inp_ip_t                      s_ive_ip;
    144 }ih264e_queue_inp_ip_t;
    145 
    146 typedef struct
    147 {
    148     ive_queue_inp_op_t                      s_ive_op;
    149 }ih264e_queue_inp_op_t;
    150 
    151 /*****************************************************************************/
    152 /*   Dequeue Input raw buffer - Get free YUV buffer from the encoder         */
    153 /*****************************************************************************/
    154 typedef struct
    155 {
    156     ive_dequeue_inp_ip_t                      s_ive_ip;
    157 }ih264e_dequeue_inp_ip_t;
    158 
    159 typedef struct
    160 {
    161     ive_dequeue_inp_op_t                      s_ive_op;
    162 }ih264e_dequeue_inp_op_t;
    163 
    164 
    165 /*****************************************************************************/
    166 /*   Queue Output bitstream buffer - Send the bistream buffer to be filled   */
    167 /*****************************************************************************/
    168 typedef struct
    169 {
    170     ive_queue_out_ip_t                      s_ive_ip;
    171 }ih264e_queue_out_ip_t;
    172 
    173 typedef struct
    174 {
    175     ive_queue_out_op_t                      s_ive_op;
    176 }ih264e_queue_out_op_t;
    177 
    178 /*****************************************************************************/
    179 /* Dequeue Output bitstream buffer - Get the bistream buffer filled          */
    180 /*****************************************************************************/
    181 typedef struct
    182 {
    183     ive_dequeue_out_ip_t                      s_ive_ip;
    184 }ih264e_dequeue_out_ip_t;
    185 
    186 typedef struct
    187 {
    188     ive_dequeue_out_op_t                      s_ive_op;
    189 }ih264e_dequeue_out_op_t;
    190 
    191 
    192 /*****************************************************************************/
    193 /* Get Recon data - Get the reconstructed data from encoder                  */
    194 /*****************************************************************************/
    195 typedef struct
    196 {
    197     ive_get_recon_ip_t                        s_ive_ip;
    198 }ih264e_get_recon_ip_t;
    199 
    200 typedef struct
    201 {
    202     ive_get_recon_op_t                        s_ive_op;
    203 }ih264e_get_recon_op_t;
    204 /*****************************************************************************/
    205 /*   Video control  Flush                                                    */
    206 /*****************************************************************************/
    207 
    208 
    209 typedef struct
    210 {
    211     ive_ctl_flush_ip_t                      s_ive_ip;
    212 }ih264e_ctl_flush_ip_t;
    213 
    214 
    215 typedef struct
    216 {
    217     ive_ctl_flush_op_t                      s_ive_op;
    218 }ih264e_ctl_flush_op_t;
    219 
    220 /*****************************************************************************/
    221 /*   Video control reset                                                     */
    222 /*****************************************************************************/
    223 
    224 
    225 typedef struct
    226 {
    227     ive_ctl_reset_ip_t                      s_ive_ip;
    228 }ih264e_ctl_reset_ip_t;
    229 
    230 
    231 typedef struct
    232 {
    233     ive_ctl_reset_op_t                      s_ive_op;
    234 }ih264e_ctl_reset_op_t;
    235 
    236 
    237 /*****************************************************************************/
    238 /*   Video control:Get Buf Info                                              */
    239 /*****************************************************************************/
    240 
    241 
    242 typedef struct
    243 {
    244     ive_ctl_getbufinfo_ip_t             s_ive_ip;
    245 }ih264e_ctl_getbufinfo_ip_t;
    246 
    247 
    248 
    249 typedef struct
    250 {
    251     ive_ctl_getbufinfo_op_t             s_ive_op;
    252 }ih264e_ctl_getbufinfo_op_t;
    253 
    254 
    255 
    256 /*****************************************************************************/
    257 /*   Video control:Get Version Info                                          */
    258 /*****************************************************************************/
    259 
    260 
    261 typedef struct
    262 {
    263     ive_ctl_getversioninfo_ip_t         s_ive_ip;
    264 }ih264e_ctl_getversioninfo_ip_t;
    265 
    266 
    267 
    268 typedef struct
    269 {
    270     ive_ctl_getversioninfo_op_t         s_ive_op;
    271 }ih264e_ctl_getversioninfo_op_t;
    272 
    273 /*****************************************************************************/
    274 /*   Video control:Set default params                                       */
    275 /*****************************************************************************/
    276 
    277 
    278 typedef struct
    279 {
    280     ive_ctl_setdefault_ip_t         s_ive_ip;
    281 }ih264e_ctl_setdefault_ip_t;
    282 
    283 
    284 
    285 typedef struct
    286 {
    287     ive_ctl_setdefault_op_t         s_ive_op;
    288 }ih264e_ctl_setdefault_op_t;
    289 
    290 /*****************************************************************************/
    291 /*   Video control  Set IPE params                                           */
    292 /*****************************************************************************/
    293 typedef struct
    294 {
    295     ive_ctl_set_ipe_params_ip_t     s_ive_ip;
    296 }ih264e_ctl_set_ipe_params_ip_t;
    297 
    298 typedef struct
    299 {
    300     ive_ctl_set_ipe_params_op_t     s_ive_op;
    301 }ih264e_ctl_set_ipe_params_op_t;
    302 
    303 /*****************************************************************************/
    304 /*   Video control  Set Frame dimensions                                     */
    305 /*****************************************************************************/
    306 typedef struct
    307 {
    308     ive_ctl_set_dimensions_ip_t     s_ive_ip;
    309 }ih264e_ctl_set_dimensions_ip_t;
    310 
    311 typedef struct
    312 {
    313     ive_ctl_set_dimensions_op_t     s_ive_op;
    314 }ih264e_ctl_set_dimensions_op_t;
    315 
    316 /*****************************************************************************/
    317 /*   Video control  Set Frame rates                                          */
    318 /*****************************************************************************/
    319 typedef struct
    320 {
    321     ive_ctl_set_frame_rate_ip_t     s_ive_ip;
    322 }ih264e_ctl_set_frame_rate_ip_t;
    323 typedef struct
    324 {
    325     ive_ctl_set_frame_rate_op_t     s_ive_op;
    326 }ih264e_ctl_set_frame_rate_op_t;
    327 
    328 
    329 /*****************************************************************************/
    330 /*   Video control  Set Bitrate                                              */
    331 /*****************************************************************************/
    332 typedef struct
    333 {
    334     ive_ctl_set_bitrate_ip_t        s_ive_ip;
    335 }ih264e_ctl_set_bitrate_ip_t;
    336 
    337 typedef struct
    338 {
    339     ive_ctl_set_bitrate_op_t        s_ive_op;
    340 }ih264e_ctl_set_bitrate_op_t;
    341 
    342 
    343 /*****************************************************************************/
    344 /*   Video control  Set Frame type                                           */
    345 /*****************************************************************************/
    346 typedef struct
    347 {
    348     ive_ctl_set_frame_type_ip_t     s_ive_ip;
    349 }ih264e_ctl_set_frame_type_ip_t;
    350 
    351 typedef struct
    352 {
    353     ive_ctl_set_frame_type_op_t     s_ive_op;
    354 }ih264e_ctl_set_frame_type_op_t;
    355 
    356 /*****************************************************************************/
    357 /*   Video control  Set Encode mode                                          */
    358 /*****************************************************************************/
    359 typedef struct
    360 {
    361     ive_ctl_set_enc_mode_ip_t       s_ive_ip;
    362 }ih264e_ctl_set_enc_mode_ip_t;
    363 
    364 typedef struct
    365 {
    366     ive_ctl_set_enc_mode_op_t       s_ive_op;
    367 }ih264e_ctl_set_enc_mode_op_t;
    368 
    369 /*****************************************************************************/
    370 /*   Video control  Set QP                                                   */
    371 /*****************************************************************************/
    372 typedef struct
    373 {
    374     ive_ctl_set_qp_ip_t             s_ive_ip;
    375 }ih264e_ctl_set_qp_ip_t;
    376 
    377 typedef struct
    378 {
    379     ive_ctl_set_qp_op_t             s_ive_op;
    380 }ih264e_ctl_set_qp_op_t;
    381 
    382 /*****************************************************************************/
    383 /*   Video control  Set AIR params                                           */
    384 /*****************************************************************************/
    385 typedef struct
    386 {
    387     ive_ctl_set_air_params_ip_t     s_ive_ip;
    388 }ih264e_ctl_set_air_params_ip_t;
    389 
    390 typedef struct
    391 {
    392     ive_ctl_set_air_params_op_t     s_ive_op;
    393 }ih264e_ctl_set_air_params_op_t;
    394 
    395 /*****************************************************************************/
    396 /*   Video control  Set VBV params                                           */
    397 /*****************************************************************************/
    398 typedef struct
    399 {
    400     ive_ctl_set_vbv_params_ip_t     s_ive_ip;
    401 }ih264e_ctl_set_vbv_params_ip_t;
    402 
    403 typedef struct
    404 {
    405     ive_ctl_set_vbv_params_op_t     s_ive_op;
    406 }ih264e_ctl_set_vbv_params_op_t;
    407 
    408 /*****************************************************************************/
    409 /*   Video control  Set Processor Details                                    */
    410 /*****************************************************************************/
    411 typedef struct
    412 {
    413     ive_ctl_set_num_cores_ip_t      s_ive_ip;
    414 }ih264e_ctl_set_num_cores_ip_t;
    415 
    416 typedef struct
    417 {
    418     ive_ctl_set_num_cores_op_t      s_ive_op;
    419 }ih264e_ctl_set_num_cores_op_t;
    420 
    421 /*****************************************************************************/
    422 /*   Video control  Set Motion estimation params                             */
    423 /*****************************************************************************/
    424 typedef struct
    425 {
    426     ive_ctl_set_me_params_ip_t      s_ive_ip;
    427 }ih264e_ctl_set_me_params_ip_t;
    428 
    429 typedef struct
    430 {
    431     ive_ctl_set_me_params_op_t      s_ive_op;
    432 }ih264e_ctl_set_me_params_op_t;
    433 
    434 /*****************************************************************************/
    435 /*   Video control  Set GOP params                                           */
    436 /*****************************************************************************/
    437 typedef struct
    438 {
    439     ive_ctl_set_gop_params_ip_t     s_ive_ip;
    440 }ih264e_ctl_set_gop_params_ip_t;
    441 
    442 typedef struct
    443 {
    444     ive_ctl_set_gop_params_op_t     s_ive_op;
    445 }ih264e_ctl_set_gop_params_op_t;
    446 
    447 /*****************************************************************************/
    448 /*   Video control  Set Deblock params                                       */
    449 /*****************************************************************************/
    450 typedef struct
    451 {
    452     ive_ctl_set_deblock_params_ip_t s_ive_ip;
    453 }ih264e_ctl_set_deblock_params_ip_t;
    454 
    455 typedef struct
    456 {
    457     ive_ctl_set_deblock_params_op_t s_ive_op;
    458 }ih264e_ctl_set_deblock_params_op_t;
    459 
    460 /*****************************************************************************/
    461 /*   Video control  Set Profile params                                       */
    462 /*****************************************************************************/
    463 typedef struct
    464 {
    465     ive_ctl_set_profile_params_ip_t s_ive_ip;
    466 }ih264e_ctl_set_profile_params_ip_t;
    467 
    468 typedef struct
    469 {
    470     ive_ctl_set_profile_params_op_t s_ive_op;
    471 }ih264e_ctl_set_profile_params_op_t;
    472 
    473 /*****************************************************************************/
    474 /*   Synchronous video encode call                                           */
    475 /*****************************************************************************/
    476 typedef struct
    477 {
    478     ive_video_encode_ip_t s_ive_ip;
    479 }ih264e_video_encode_ip_t;
    480 
    481 typedef struct
    482 {
    483     ive_video_encode_op_t s_ive_op;
    484 }ih264e_video_encode_op_t;
    485 
    486 
    487 /*****************************************************************************/
    488 /*   Video usability information                                             */
    489 /*****************************************************************************/
    490 typedef struct
    491 {
    492     /** size of the structure  */
    493     UWORD32                                     u4_size;
    494 
    495     /** Command type : IVE_CMD_VIDEO_CTL  */
    496     IVE_API_COMMAND_TYPE_T                      e_cmd;
    497 
    498     /** Sub command type : IVE_CMD_CTL_SET_GOP_PARAMS */
    499     IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
    500 
    501     /** indicates the presence of aspect_ratio */
    502     UWORD8                                      u1_aspect_ratio_info_present_flag;
    503 
    504     /** specifies the aspect ratio of the luma samples */
    505     UWORD8                                      u1_aspect_ratio_idc;
    506 
    507     /** width of the luma samples. user dependent */
    508     UWORD16                                     u2_sar_width;
    509 
    510     /** Height of the luma samples. user dependent */
    511     UWORD16                                     u2_sar_height;
    512 
    513     /** if 1, specifies that the overscan_appropriate_flag is present
    514      * if 0, the preferred display method for the video signal is unspecified */
    515     UWORD8                                      u1_overscan_info_present_flag;
    516 
    517     /** if 1,indicates that the cropped decoded pictures output
    518      * are suitable for display using overscan */
    519     UWORD8                                      u1_overscan_appropriate_flag;
    520 
    521     /** if 1 specifies that video_format, video_full_range_flag and
    522      * colour_description_present_flag are present */
    523     UWORD8                                      u1_video_signal_type_present_flag;
    524 
    525     /** pal, secam, ntsc, ...  */
    526     UWORD8                                      u1_video_format;
    527 
    528     /** indicates the black level and range of the luma and chroma signals */
    529     UWORD8                                      u1_video_full_range_flag;
    530 
    531     /** if 1,specifies that colour_primaries, transfer_characteristics
    532      * and matrix_coefficients are present */
    533     UWORD8                                      u1_colour_description_present_flag;
    534 
    535     /** indicates the chromaticity coordinates of the source primaries  */
    536     UWORD8                                      u1_colour_primaries;
    537 
    538     /** indicates the opto-electronic transfer characteristic of the source picture */
    539     UWORD8                                      u1_transfer_characteristics;
    540 
    541     /** the matrix coefficients used in deriving luma and chroma signals
    542      * from the green, blue, and red primaries */
    543     UWORD8                                      u1_matrix_coefficients;
    544 
    545     /** if 1, specifies that chroma_sample_loc_type_top_field and
    546      * chroma_sample_loc_type_bottom_field are present */
    547     UWORD8                                      u1_chroma_loc_info_present_flag;
    548 
    549     /** location of chroma samples */
    550     UWORD8                                      u1_chroma_sample_loc_type_top_field;
    551     UWORD8                                      u1_chroma_sample_loc_type_bottom_field;
    552 
    553     /**  Indicates the presence of the num_units_in_ticks, time_scale flag */
    554     UWORD8                                      u1_vui_timing_info_present_flag;
    555 
    556     /**  Number of units that correspond to one increment of the
    557     *   clock. Indicates the  resolution */
    558     UWORD32                                     u4_vui_num_units_in_tick;
    559 
    560     /**  The number of time units that pass in one second */
    561     UWORD32                                     u4_vui_time_scale;
    562 
    563     /** Flag indicating that time difference between two frames is a constant */
    564     UWORD8                                      u1_fixed_frame_rate_flag;
    565 
    566     /** Indicates the presence of NAL HRD parameters */
    567     UWORD8                                      u1_nal_hrd_parameters_present_flag;
    568 
    569     /** Indicates the presence of VCL HRD parameters */
    570     UWORD8                                      u1_vcl_hrd_parameters_present_flag;
    571 
    572     /** Specifies the HRD operational mode */
    573     UWORD8                                      u1_low_delay_hrd_flag;
    574 
    575     /** Indicates presence of SEI messages which include pic_struct syntax element */
    576     UWORD8                                      u1_pic_struct_present_flag;
    577 
    578     /** 1, specifies that the following cvs bitstream restriction parameters are present */
    579     UWORD8                                      u1_bitstream_restriction_flag;
    580 
    581     /** if 0, indicates that no pel outside the pic boundaries and
    582      * no sub-pels derived using pels outside the pic boundaries is used for inter prediction */
    583     UWORD8                                      u1_motion_vectors_over_pic_boundaries_flag;
    584 
    585     /** Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units
    586      * associated with any coded picture */
    587     UWORD8                                      u1_max_bytes_per_pic_denom;
    588 
    589     /** Indicates an upper bound for the number of bits of coding_unit() data */
    590     UWORD8                                      u1_max_bits_per_mb_denom;
    591 
    592     /** Indicate the maximum absolute value of a decoded horizontal MV component
    593      * in quarter-pel luma units */
    594     UWORD8                                      u1_log2_max_mv_length_horizontal;
    595 
    596     /** Indicate the maximum absolute value of a decoded vertical MV component
    597      * in quarter-pel luma units */
    598     UWORD8                                      u1_log2_max_mv_length_vertical;
    599 
    600     /** Max number of frames that are not synchronized in display and decode order */
    601     UWORD8                                      u1_num_reorder_frames;
    602 
    603     /** specifies required size of the HRD DPB in units of frame buffers */
    604     UWORD8                                      u1_max_dec_frame_buffering;
    605 
    606 }ih264e_vui_ip_t;
    607 
    608 typedef struct
    609 {
    610     /** size of the structure                                           */
    611     UWORD32                                     u4_size;
    612 
    613     /** Return error code                                               */
    614     UWORD32                                     u4_error_code;
    615 }ih264e_vui_op_t;
    616 
    617 
    618 /* The enum values should not have greater than 8 bits as this is assigned to WORD8 */
    619 typedef enum
    620 {
    621     INTRA16x16 = 0,
    622     INTRA4x4,
    623     INTER16x16
    624 }IV_MB_TYPE_T;
    625 
    626 /*****************************************************************************/
    627 /*   Pic info structures                                                     */
    628 /*****************************************************************************/
    629 typedef struct
    630 {
    631     /** Qp  */
    632     UWORD32                                     u4_qp;
    633 
    634     /** Pic Type */
    635     IV_PICTURE_CODING_TYPE_T                    e_frame_type;
    636 
    637 }ih264e_pic_info1_t;
    638 
    639 typedef struct
    640 {
    641     /** Qp  */
    642     UWORD32                                     u4_qp;
    643 
    644     /** Pic Type */
    645     IV_PICTURE_CODING_TYPE_T                    e_frame_type;
    646 
    647     /** Disable deblock level (0: Enable completely, 3: Disable completely */
    648     UWORD32                                     u4_disable_deblock_level;
    649 
    650 }ih264e_pic_info2_t;
    651 
    652 
    653 /*****************************************************************************/
    654 /*   MB info structures                                                     */
    655 /*****************************************************************************/
    656 typedef struct
    657 {
    658     /** MV X    */
    659     WORD16                                  i2_mv_x;
    660 
    661     /** MV Y    */
    662     WORD16                                  i2_mv_y;
    663 }ih264e_mv_t;
    664 
    665 typedef struct
    666 {
    667     /** Intra / Inter    */
    668     WORD8                                       i1_mb_type;
    669     union
    670     {
    671         ih264e_mv_t                                 as_mv[1];
    672 
    673         /** Intra mode */
    674         WORD8                                       ai1_intra_mode[1];
    675     };
    676 }ih264e_mb_info1_t;
    677 
    678 typedef struct
    679 {
    680     /** Intra / Inter    */
    681     WORD8                                       i1_mb_type;
    682 
    683 
    684     /** SAD     */
    685     UWORD16                                     u2_sad;
    686 
    687     union
    688     {
    689         ih264e_mv_t                                 as_mv[1];
    690 
    691         /** Intra mode */
    692         WORD8                                       ai1_intra_mode[1];
    693     };
    694 
    695 
    696 }ih264e_mb_info2_t;
    697 
    698 typedef struct
    699 {
    700     /** Intra / Inter    */
    701     WORD8                                       i1_mb_type;
    702 
    703     union
    704     {
    705         ih264e_mv_t                                 as_mv[4];
    706 
    707         /** Intra mode */
    708         WORD8                                       ai1_intra_mode[16];
    709     };
    710 
    711 }ih264e_mb_info3_t;
    712 
    713 typedef struct
    714 {
    715     /** Intra / Inter    */
    716     WORD8                                       i1_mb_type;
    717 
    718     /** Intra Mode      */
    719     WORD8                                       i1_intra_mode;
    720 
    721     /** SAD     */
    722     UWORD16                                     u2_sad;
    723 
    724     union
    725     {
    726         ih264e_mv_t                                 as_mv[16];
    727 
    728         /** Intra mode */
    729         WORD8                                       ai1_intra_mode[16];
    730     };
    731 
    732 
    733 
    734 }ih264e_mb_info4_t;
    735 
    736 /* Add any new structures to the following union. It is used to calculate the max size needed for allocation of memory */
    737 typedef struct
    738 {
    739     union
    740     {
    741         ih264e_mb_info1_t               s_mb_info1;
    742         ih264e_mb_info2_t               s_mb_info2;
    743         ih264e_mb_info3_t               s_mb_info3;
    744         ih264e_mb_info4_t               s_mb_info4;
    745     };
    746 }ih264e_mb_info_t;
    747 
    748 #ifdef __cplusplus
    749 } /* closing brace for extern "C" */
    750 #endif
    751 #endif /* _IH264E_H_ */
    752