Home | History | Annotate | Download | only in decoder
      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 *  ihevcd_cxa.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 HEVC decoder  on Cortex Ax
     27 *
     28 * @author
     29 *  Harish
     30 *
     31 * @remarks
     32 *  None
     33 *
     34 *******************************************************************************
     35 */
     36 #ifndef __IHEVCD_CXA_H__
     37 #define __IHEVCD_CXA_H__
     38 #ifdef __cplusplus
     39 extern "C" {
     40 #endif
     41 #include "iv.h"
     42 #include "ivd.h"
     43 
     44 
     45 /*****************************************************************************/
     46 /* Constant Macros                                                           */
     47 /*****************************************************************************/
     48 
     49 /*****************************************************************************/
     50 /* Function Macros                                                           */
     51 /*****************************************************************************/
     52 #define IS_IVD_CONCEALMENT_APPLIED(x)       (x & (1 << IVD_APPLIEDCONCEALMENT))
     53 #define IS_IVD_INSUFFICIENTDATA_ERROR(x)    (x & (1 << IVD_INSUFFICIENTDATA))
     54 #define IS_IVD_CORRUPTEDDATA_ERROR(x)       (x & (1 << IVD_CORRUPTEDDATA))
     55 #define IS_IVD_CORRUPTEDHEADER_ERROR(x)     (x & (1 << IVD_CORRUPTEDHEADER))
     56 #define IS_IVD_UNSUPPORTEDINPUT_ERROR(x)    (x & (1 << IVD_UNSUPPORTEDINPUT))
     57 #define IS_IVD_UNSUPPORTEDPARAM_ERROR(x)    (x & (1 << IVD_UNSUPPORTEDPARAM))
     58 #define IS_IVD_FATAL_ERROR(x)               (x & (1 << IVD_FATALERROR))
     59 #define IS_IVD_INVALID_BITSTREAM_ERROR(x)   (x & (1 << IVD_INVALID_BITSTREAM))
     60 #define IS_IVD_INCOMPLETE_BITSTREAM_ERROR(x) (x & (1 << IVD_INCOMPLETE_BITSTREAM))
     61 
     62 
     63 /*****************************************************************************/
     64 /* API Function Prototype                                                    */
     65 /*****************************************************************************/
     66 IV_API_CALL_STATUS_T ihevcd_cxa_api_function(iv_obj_t *ps_handle,
     67                                              void *pv_api_ip,
     68                                              void *pv_api_op);
     69 
     70 /*****************************************************************************/
     71 /* Enums                                                                     */
     72 /*****************************************************************************/
     73 /* Codec Error codes for HEVC  Decoder                                       */
     74 
     75 
     76 typedef enum {
     77     /**
     78      *  No error
     79      */
     80     IHEVCD_SUCCESS = 0,
     81 
     82     /**
     83      *  Codec calls done without successful init
     84      */
     85     IHEVCD_INIT_NOT_DONE                        = IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS,
     86 
     87 
     88     IHEVCD_CXA_VID_HDR_DEC_NUM_FRM_BUF_NOT_SUFFICIENT,
     89 
     90     /**
     91      *  Unsupported level passed as an argument
     92      */
     93     IHEVCD_LEVEL_UNSUPPORTED,
     94     /**
     95      *  Unsupported number of reference pictures passed as an argument
     96      */
     97     IHEVCD_NUM_REF_UNSUPPORTED,
     98     /**
     99      *  Unsupported number of reorder pictures passed as an argument
    100      */
    101     IHEVCD_NUM_REORDER_UNSUPPORTED,
    102     /**
    103      *  Unsupported number of extra display pictures passed as an argument
    104      */
    105     IHEVCD_NUM_EXTRA_DISP_UNSUPPORTED,
    106     /**
    107      *  Invalid display stride requested.
    108      */
    109     IHEVCD_INVALID_DISP_STRD,
    110 
    111     /**
    112      * Reached end of sequence
    113      */
    114     IHEVCD_END_OF_SEQUENCE,
    115 
    116     /**
    117      * Width/height greater than max width and max height
    118      */
    119     IHEVCD_UNSUPPORTED_DIMENSIONS,
    120 
    121     /**
    122      *  Buffer size to hold version string is not sufficient
    123      *  Allocate more to hold version string
    124      */
    125     IHEVCD_CXA_VERS_BUF_INSUFFICIENT,
    126     /**
    127      * Stream chroma format other than YUV420
    128      */
    129     IHEVCD_UNSUPPORTED_CHROMA_FMT_IDC,
    130 
    131     /**
    132      * Generic failure
    133      */
    134     IHEVCD_FAIL                             = 0x7FFFFFFF
    135 
    136 
    137 }IHEVCD_CXA_ERROR_CODES_T;
    138 
    139 /*****************************************************************************/
    140 /* Extended Structures                                                       */
    141 /*****************************************************************************/
    142 
    143 
    144 /*****************************************************************************/
    145 /*  Delete Codec                                                             */
    146 /*****************************************************************************/
    147 
    148 typedef struct {
    149     ivd_delete_ip_t               s_ivd_delete_ip_t;
    150 }ihevcd_cxa_delete_ip_t;
    151 
    152 
    153 typedef struct {
    154     ivd_delete_op_t               s_ivd_delete_op_t;
    155 }ihevcd_cxa_delete_op_t;
    156 
    157 /*****************************************************************************/
    158 /*   Initialize decoder                                                      */
    159 /*****************************************************************************/
    160 
    161 typedef struct {
    162     ivd_create_ip_t                         s_ivd_create_ip_t;
    163 }ihevcd_cxa_create_ip_t;
    164 
    165 
    166 typedef struct {
    167     ivd_create_op_t                         s_ivd_create_op_t;
    168 }ihevcd_cxa_create_op_t;
    169 
    170 /*****************************************************************************/
    171 /*   Video Decode                                                            */
    172 /*****************************************************************************/
    173 
    174 typedef struct {
    175 
    176     /**
    177      * ivd_video_decode_ip_t
    178      */
    179     ivd_video_decode_ip_t                   s_ivd_video_decode_ip_t;
    180 }ihevcd_cxa_video_decode_ip_t;
    181 
    182 
    183 typedef struct {
    184 
    185     /**
    186      * ivd_video_decode_op_t
    187      */
    188     ivd_video_decode_op_t                   s_ivd_video_decode_op_t;
    189 }ihevcd_cxa_video_decode_op_t;
    190 
    191 
    192 /*****************************************************************************/
    193 /*   Get Display Frame                                                       */
    194 /*****************************************************************************/
    195 
    196 typedef struct
    197 {
    198     /**
    199      * ivd_get_display_frame_ip_t
    200      */
    201     ivd_get_display_frame_ip_t              s_ivd_get_display_frame_ip_t;
    202 }ihevcd_cxa_get_display_frame_ip_t;
    203 
    204 
    205 typedef struct
    206 {
    207     /**
    208      * ivd_get_display_frame_op_t
    209      */
    210     ivd_get_display_frame_op_t              s_ivd_get_display_frame_op_t;
    211 }ihevcd_cxa_get_display_frame_op_t;
    212 
    213 /*****************************************************************************/
    214 /*   Set Display Frame                                                       */
    215 /*****************************************************************************/
    216 
    217 
    218 typedef struct
    219 {
    220     /**
    221      * ivd_set_display_frame_ip_t
    222      */
    223     ivd_set_display_frame_ip_t              s_ivd_set_display_frame_ip_t;
    224 }ihevcd_cxa_set_display_frame_ip_t;
    225 
    226 
    227 typedef struct
    228 {
    229     /**
    230      * ivd_set_display_frame_op_t
    231      */
    232     ivd_set_display_frame_op_t              s_ivd_set_display_frame_op_t;
    233 }ihevcd_cxa_set_display_frame_op_t;
    234 
    235 /*****************************************************************************/
    236 /*   Release Display Buffers                                                 */
    237 /*****************************************************************************/
    238 
    239 
    240 typedef struct
    241 {
    242     /**
    243      * ivd_rel_display_frame_ip_t
    244      */
    245 
    246     ivd_rel_display_frame_ip_t                  s_ivd_rel_display_frame_ip_t;
    247 }ihevcd_cxa_rel_display_frame_ip_t;
    248 
    249 
    250 typedef struct
    251 {
    252     /**
    253      * ivd_rel_display_frame_op_t
    254      */
    255     ivd_rel_display_frame_op_t                  s_ivd_rel_display_frame_op_t;
    256 }ihevcd_cxa_rel_display_frame_op_t;
    257 
    258 
    259 typedef enum
    260 {
    261     /** Set number of cores/threads to be used */
    262     IHEVCD_CXA_CMD_CTL_SET_NUM_CORES         = IVD_CMD_CTL_CODEC_SUBCMD_START,
    263 
    264     /** Set processor details */
    265     IHEVCD_CXA_CMD_CTL_SET_PROCESSOR         = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x001,
    266 
    267     /** Get display buffer dimensions */
    268     IHEVCD_CXA_CMD_CTL_GET_BUFFER_DIMENSIONS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x100,
    269 
    270     /** Get VUI parameters */
    271     IHEVCD_CXA_CMD_CTL_GET_VUI_PARAMS        = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x101,
    272 
    273     /** Enable/disable GPU, supported on select platforms */
    274     IHEVCD_CXA_CMD_CTL_GPU_ENABLE_DISABLE    = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x200,
    275 
    276     /** Set degrade level */
    277     IHEVCD_CXA_CMD_CTL_DEGRADE               = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x300
    278 }IHEVCD_CXA_CMD_CTL_SUB_CMDS;
    279 /*****************************************************************************/
    280 /*   Video control  Flush                                                    */
    281 /*****************************************************************************/
    282 
    283 
    284 typedef struct {
    285 
    286     /**
    287      * ivd_ctl_flush_ip_t
    288      */
    289     ivd_ctl_flush_ip_t                      s_ivd_ctl_flush_ip_t;
    290 }ihevcd_cxa_ctl_flush_ip_t;
    291 
    292 
    293 typedef struct {
    294 
    295     /**
    296      * ivd_ctl_flush_op_t
    297      */
    298     ivd_ctl_flush_op_t                      s_ivd_ctl_flush_op_t;
    299 }ihevcd_cxa_ctl_flush_op_t;
    300 
    301 /*****************************************************************************/
    302 /*   Video control reset                                                     */
    303 /*****************************************************************************/
    304 
    305 
    306 typedef struct {
    307 
    308     /**
    309      * ivd_ctl_reset_ip_t
    310      */
    311     ivd_ctl_reset_ip_t                      s_ivd_ctl_reset_ip_t;
    312 }ihevcd_cxa_ctl_reset_ip_t;
    313 
    314 
    315 typedef struct {
    316 
    317     /**
    318      * ivd_ctl_reset_op_t
    319      */
    320     ivd_ctl_reset_op_t                      s_ivd_ctl_reset_op_t;
    321 }ihevcd_cxa_ctl_reset_op_t;
    322 
    323 
    324 /*****************************************************************************/
    325 /*   Video control  Set Params                                               */
    326 /*****************************************************************************/
    327 
    328 
    329 typedef struct {
    330 
    331     /**
    332      *  ivd_ctl_set_config_ip_t
    333      */
    334     ivd_ctl_set_config_ip_t             s_ivd_ctl_set_config_ip_t;
    335 }ihevcd_cxa_ctl_set_config_ip_t;
    336 
    337 
    338 typedef struct {
    339 
    340     /**
    341      * ivd_ctl_set_config_op_t
    342      */
    343     ivd_ctl_set_config_op_t             s_ivd_ctl_set_config_op_t;
    344 }ihevcd_cxa_ctl_set_config_op_t;
    345 
    346 /*****************************************************************************/
    347 /*   Video control:Get Buf Info                                              */
    348 /*****************************************************************************/
    349 
    350 
    351 typedef struct {
    352 
    353     /**
    354      * ivd_ctl_getbufinfo_ip_t
    355      */
    356     ivd_ctl_getbufinfo_ip_t             s_ivd_ctl_getbufinfo_ip_t;
    357 }ihevcd_cxa_ctl_getbufinfo_ip_t;
    358 
    359 
    360 
    361 typedef struct {
    362 
    363     /**
    364      * ivd_ctl_getbufinfo_op_t
    365      */
    366     ivd_ctl_getbufinfo_op_t             s_ivd_ctl_getbufinfo_op_t;
    367 }ihevcd_cxa_ctl_getbufinfo_op_t;
    368 
    369 
    370 /*****************************************************************************/
    371 /*   Video control:Getstatus Call                                            */
    372 /*****************************************************************************/
    373 
    374 
    375 typedef struct {
    376 
    377     /**
    378      * ivd_ctl_getstatus_ip_t
    379      */
    380     ivd_ctl_getstatus_ip_t                  s_ivd_ctl_getstatus_ip_t;
    381 }ihevcd_cxa_ctl_getstatus_ip_t;
    382 
    383 
    384 
    385 typedef struct {
    386 
    387     /**
    388      * ivd_ctl_getstatus_op_t
    389      */
    390     ivd_ctl_getstatus_op_t                  s_ivd_ctl_getstatus_op_t;
    391 
    392     /**
    393      * Height of the coding picture without cropping
    394      */
    395     UWORD32                  u4_coded_pic_ht;
    396 
    397     /**
    398      * Width of the coding picture without cropping
    399      */
    400     UWORD32                  u4_coded_pic_wd;
    401 }ihevcd_cxa_ctl_getstatus_op_t;
    402 
    403 
    404 /*****************************************************************************/
    405 /*   Video control:Get Version Info                                          */
    406 /*****************************************************************************/
    407 
    408 
    409 typedef struct {
    410 
    411     /**
    412      *  ivd_ctl_getversioninfo_ip_t
    413      */
    414     ivd_ctl_getversioninfo_ip_t         s_ivd_ctl_getversioninfo_ip_t;
    415 }ihevcd_cxa_ctl_getversioninfo_ip_t;
    416 
    417 
    418 
    419 typedef struct {
    420 
    421     /**
    422      *  ivd_ctl_getversioninfo_op_t
    423      */
    424     ivd_ctl_getversioninfo_op_t         s_ivd_ctl_getversioninfo_op_t;
    425 }ihevcd_cxa_ctl_getversioninfo_op_t;
    426 
    427 
    428 typedef struct {
    429 
    430     /**
    431      * u4_size
    432      */
    433     UWORD32                                     u4_size;
    434 
    435     /**
    436      * cmd
    437      */
    438     IVD_API_COMMAND_TYPE_T                      e_cmd;
    439 
    440     /**
    441      * sub_cmd
    442      */
    443     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
    444 
    445     /**
    446      * Pictures that are are degraded
    447      * 0 : No degrade
    448      * 1 : Only on non-reference frames
    449      * 2 : Use interval specified by u4_nondegrade_interval
    450      * 3 : All non-key frames
    451      * 4 : All frames
    452      */
    453     WORD32                                     i4_degrade_pics;
    454 
    455     /**
    456      * Interval for pictures which are completely decoded without any degradation
    457      */
    458     WORD32                                     i4_nondegrade_interval;
    459 
    460     /**
    461      * bit position (lsb is zero): Type of degradation
    462      * 0 : Disable SAO
    463      * 1 : Disable deblocking
    464      * 2 : Faster inter prediction filters
    465      * 3 : Fastest inter prediction filters
    466      */
    467     WORD32                                     i4_degrade_type;
    468 
    469 }ihevcd_cxa_ctl_degrade_ip_t;
    470 
    471 typedef struct
    472 {
    473     /**
    474      * u4_size
    475      */
    476     UWORD32                                     u4_size;
    477 
    478     /**
    479      * error_code
    480      */
    481     UWORD32                                     u4_error_code;
    482 }ihevcd_cxa_ctl_degrade_op_t;
    483 
    484 typedef struct
    485 {
    486 
    487     /**
    488      * size
    489      */
    490     UWORD32                                     u4_size;
    491 
    492     /**
    493      * cmd
    494      */
    495     IVD_API_COMMAND_TYPE_T                      e_cmd;
    496 
    497     /**
    498      * sub_cmd
    499      */
    500     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
    501 
    502     /**
    503      * num_cores
    504      */
    505     UWORD32                                     u4_num_cores;
    506 }ihevcd_cxa_ctl_set_num_cores_ip_t;
    507 
    508 typedef struct
    509 {
    510 
    511     /**
    512      * size
    513      */
    514     UWORD32                                     u4_size;
    515 
    516     /**
    517      * error_code
    518      */
    519     UWORD32                                     u4_error_code;
    520 }ihevcd_cxa_ctl_set_num_cores_op_t;
    521 
    522 typedef struct
    523 {
    524     /**
    525      * size
    526      */
    527     UWORD32                                     u4_size;
    528     /**
    529      * cmd
    530      */
    531     IVD_API_COMMAND_TYPE_T                      e_cmd;
    532     /**
    533      * sub cmd
    534      */
    535     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
    536     /**
    537      * Processor type
    538      */
    539     UWORD32                                     u4_arch;
    540     /**
    541      * SOC type
    542      */
    543     UWORD32                                     u4_soc;
    544 
    545     /**
    546      * num_cores
    547      */
    548     UWORD32                                     u4_num_cores;
    549 
    550 }ihevcd_cxa_ctl_set_processor_ip_t;
    551 
    552 typedef struct
    553 {
    554     /**
    555      * size
    556      */
    557     UWORD32                                     u4_size;
    558     /**
    559      * error_code
    560      */
    561     UWORD32                                     u4_error_code;
    562 }ihevcd_cxa_ctl_set_processor_op_t;
    563 
    564 typedef struct
    565 {
    566 
    567     /**
    568      * size
    569      */
    570     UWORD32                                     u4_size;
    571 
    572     /**
    573      * cmd
    574      */
    575     IVD_API_COMMAND_TYPE_T                      e_cmd;
    576 
    577     /**
    578      * sub cmd
    579      */
    580     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
    581 }ihevcd_cxa_ctl_get_frame_dimensions_ip_t;
    582 
    583 
    584 typedef struct {
    585 
    586     /**
    587      * size
    588      */
    589     UWORD32                                     u4_size;
    590 
    591     /**
    592      * error_code
    593      */
    594     UWORD32                                     u4_error_code;
    595 
    596     /**
    597      * x_offset[3]
    598      */
    599     UWORD32                                     u4_x_offset[3];
    600 
    601     /**
    602      * y_offset[3]
    603      */
    604     UWORD32                                     u4_y_offset[3];
    605 
    606     /**
    607      * disp_wd[3]
    608      */
    609     UWORD32                                     u4_disp_wd[3];
    610 
    611     /**
    612      * disp_ht[3]
    613      */
    614     UWORD32                                     u4_disp_ht[3];
    615 
    616     /**
    617      * buffer_wd[3]
    618      */
    619     UWORD32                                     u4_buffer_wd[3];
    620 
    621     /**
    622      * buffer_ht[3]
    623      */
    624     UWORD32                                     u4_buffer_ht[3];
    625 }ihevcd_cxa_ctl_get_frame_dimensions_op_t;
    626 
    627 typedef struct {
    628     UWORD32                                     u4_size;
    629     IVD_API_COMMAND_TYPE_T                      e_cmd;
    630     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
    631 }ihevcd_cxa_ctl_get_vui_params_ip_t;
    632 
    633 typedef struct {
    634     UWORD32                                     u4_size;
    635     UWORD32                                     u4_error_code;
    636 
    637     /**
    638     *  indicates the presence of aspect_ratio
    639     */
    640     UWORD8 u1_aspect_ratio_info_present_flag;
    641 
    642     /**
    643     *  specifies the aspect ratio of the luma samples
    644     */
    645     UWORD8 u1_aspect_ratio_idc;
    646 
    647     /**
    648     *  width of the luma samples. user dependent
    649     */
    650     UWORD16 u2_sar_width;
    651 
    652     /**
    653     *  hieght of the luma samples. user dependent
    654     */
    655     UWORD16 u2_sar_height;
    656 
    657     /**
    658     * if 1, specifies that the overscan_appropriate_flag is present
    659     * if 0, the preferred display method for the video signal is unspecified
    660     */
    661     UWORD8 u1_overscan_info_present_flag;
    662 
    663     /**
    664     * if 1,indicates that the cropped decoded pictures output
    665     * are suitable for display using overscan
    666     */
    667     UWORD8 u1_overscan_appropriate_flag;
    668 
    669     /**
    670     * if 1 specifies that video_format, video_full_range_flag and
    671     * colour_description_present_flag are present
    672     */
    673     UWORD8 u1_video_signal_type_present_flag;
    674 
    675     /**
    676     *
    677     */
    678     UWORD8 u1_video_format;
    679 
    680     /**
    681     * indicates the black level and range of the luma and chroma signals
    682     */
    683     UWORD8 u1_video_full_range_flag;
    684 
    685     /**
    686     * if 1,to 1 specifies that colour_primaries, transfer_characteristics
    687     * and matrix_coefficients are present
    688     */
    689     UWORD8 u1_colour_description_present_flag;
    690 
    691     /**
    692     * indicates the chromaticity coordinates of the source primaries
    693     */
    694     UWORD8 u1_colour_primaries;
    695 
    696     /**
    697     * indicates the opto-electronic transfer characteristic of the source picture
    698     */
    699     UWORD8 u1_transfer_characteristics;
    700 
    701     /**
    702     * the matrix coefficients used in deriving luma and chroma signals
    703     * from the green, blue, and red primaries
    704     */
    705     UWORD8 u1_matrix_coefficients;
    706 
    707     /**
    708     * if 1, specifies that chroma_sample_loc_type_top_field and
    709     * chroma_sample_loc_type_bottom_field are present
    710     */
    711     UWORD8 u1_chroma_loc_info_present_flag;
    712 
    713     /**
    714     * location of chroma samples
    715     */
    716     UWORD8 u1_chroma_sample_loc_type_top_field;
    717 
    718     UWORD8 u1_chroma_sample_loc_type_bottom_field;
    719 
    720     /**
    721     * if 1, indicates that the value of all decoded chroma samples is
    722     * equal to 1 << ( BitDepthC - 1 )
    723     */
    724     UWORD8 u1_neutral_chroma_indication_flag;
    725 
    726     /**
    727     *  1 indicates that the coded video sequence conveys pictures that represent fields
    728     *  0 indicates the pictures that represents field
    729     */
    730     UWORD8 u1_field_seq_flag;
    731 
    732     /**
    733     * specifies that picture timing SEI messages are present for every picture
    734     */
    735     UWORD8 u1_frame_field_info_present_flag;
    736 
    737     /**
    738     * 1 indicates that the default display window parameters follow next in the VUI
    739     */
    740     UWORD8 u1_default_display_window_flag;
    741 
    742     /**
    743     * specify the samples of the pictures in the coded video sequence
    744     * that are within the default display window,
    745     * in terms of a rectangular region specified in picture coordinates for display
    746     */
    747     UWORD32 u4_def_disp_win_left_offset;
    748 
    749     UWORD32 u4_def_disp_win_right_offset;
    750 
    751     UWORD32 u4_def_disp_win_top_offset;
    752 
    753     UWORD32 u4_def_disp_win_bottom_offset;
    754 
    755     /**
    756     *  to 1 specifies that the syntax structure hrd_parameters is present in the vui_parameters syntax structue
    757     */
    758     UWORD8 u1_vui_hrd_parameters_present_flag;
    759 
    760     /**
    761     *   Indicates the presence of the
    762     *   num_units_in_ticks, time_scale flag
    763     */
    764     UWORD8 u1_vui_timing_info_present_flag;
    765 
    766     /**
    767     *   Number of units that
    768     *   correspond to one increment of the
    769     *   clock. Indicates the  resolution
    770     */
    771     UWORD32 u4_vui_num_units_in_tick;
    772 
    773     /**
    774     *   The number of time units that pass in one second
    775     */
    776     UWORD32 u4_vui_time_scale;
    777     /**
    778     * if 1, indicates that the POC for each picture in the coded video sequence (cvs) (not the first picture), in decoding order,
    779     * is proportional to the output time of the picture relative to that of the first picture in the cvs
    780     */
    781     UWORD8 u1_poc_proportional_to_timing_flag;
    782 
    783     /**
    784     * num_ticks_poc_diff_one_minus1 plus 1 specifies the number of clock ticks
    785     * corresponding to a difference of poc values equal to 1
    786     */
    787     UWORD8 u1_num_ticks_poc_diff_one_minus1;
    788 
    789     /**
    790     * 1, specifies that the following cvs bitstream restriction parameters are present
    791     */
    792     UWORD8 u1_bitstream_restriction_flag;
    793 
    794     /**
    795     *  if 1, indicates that each pps that is active in the cvs has
    796     *  the same value of the tile syntax elements
    797     */
    798     UWORD8 u1_tiles_fixed_structure_flag;
    799 
    800     /**
    801     * if 0, indicates that no pel outside the pic boundaries and
    802     * no sub-pels derived using pels outside the pic boundaries is used for inter prediction
    803     */
    804     UWORD8 u1_motion_vectors_over_pic_boundaries_flag;
    805 
    806     /**
    807     * if 1, indicates
    808     * all P/B slices belonging to the same pic have an identical refpic list0,
    809     * all B slices that belong to the same picture have an identical refpic list1.
    810     */
    811     UWORD8 u1_restricted_ref_pic_lists_flag;
    812 
    813     /**
    814     *
    815     */
    816     UWORD8 u4_min_spatial_segmentation_idc;
    817     /**
    818     * Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units
    819     * associated with any coded picture
    820     */
    821     UWORD8 u1_max_bytes_per_pic_denom;
    822 
    823     /**
    824     *  Indicates an upper bound for the number of bits of coding_unit() data
    825     */
    826     UWORD8 u1_max_bits_per_mincu_denom;
    827 
    828     /**
    829     * Indicate the maximum absolute value of a decoded horizontal MV component
    830     * in quarter-pel luma units
    831     */
    832     UWORD8 u1_log2_max_mv_length_horizontal;
    833 
    834     /**
    835     * Indicate the maximum absolute value of a decoded vertical MV component
    836     * in quarter-pel luma units
    837     */
    838     UWORD8 u1_log2_max_mv_length_vertical;
    839 
    840     /**
    841      * HRD parameters
    842      */
    843 
    844 
    845     /**
    846     *   Indicates the presence of the
    847     *   num_units_in_ticks, time_scale flag
    848     */
    849     UWORD8 u1_timing_info_present_flag;
    850 
    851     /**
    852     *   Number of units that
    853     *   correspond to one increment of the
    854     *   clock. Indicates the  resolution
    855     */
    856     UWORD32 u4_num_units_in_tick;
    857 
    858     /**
    859     *   The number of time units that pass in one second
    860     */
    861     UWORD32 u4_time_scale;
    862 
    863     /**
    864     * Nal- hrd parameters flag
    865     */
    866     UWORD8 u1_nal_hrd_parameters_present_flag;
    867 
    868     /**
    869     * VCL- hrd parameters flag
    870     */
    871     UWORD8 u1_vcl_hrd_parameters_present_flag;
    872 
    873     /**
    874     * Indicates the presence of NAL-HRD params or VCL_HRD params
    875     * in the bitstream
    876     */
    877     UWORD8 u1_cpbdpb_delays_present_flag;
    878 
    879     /**
    880     * specifies that sub-picture level CPB removal delay parameters are
    881     * present in picture timing SEI messages
    882     */
    883     UWORD8 u1_sub_pic_cpb_params_present_flag;
    884 
    885     /**
    886     * specify the clock sub-tick
    887     * (the minimum interval of time that can be represented in the coded data when sub_pic_cpb_params_present_flag is equal to 1)
    888     */
    889     UWORD8 u1_tick_divisor_minus2;
    890 
    891     /**
    892     * specifies the length, in bits for the du cpb delay syntax in pt_sei
    893     */
    894     UWORD8 u1_du_cpb_removal_delay_increment_length_minus1;
    895 
    896     /**
    897     * Indicates presence of sub_pic_cpb_params in pic timing sei
    898     */
    899     UWORD8 u1_sub_pic_cpb_params_in_pic_timing_sei_flag;
    900 
    901     /**
    902      * Indicates dpb output delay for the du
    903      */
    904     UWORD8 u1_dpb_output_delay_du_length_minus1;
    905 
    906     /**
    907     * (together with bit_rate_value_minus1) specifies the
    908     * maximum input bit rate of the i-th CPB
    909     */
    910     UWORD8 u4_bit_rate_scale;
    911 
    912     /**
    913     * (together with cpb_size_du_value_minus1) specfies
    914     * CPB size of the i-th CPB when the CPB operates
    915     * at the access unit level
    916     */
    917     UWORD8 u4_cpb_size_scale;
    918 
    919     /**
    920     * (together with cpb_size_du_value_minus1) specfies
    921     * CPB size of the i-th CPB when the CPB operates
    922     * at the sub-picture level
    923     */
    924     UWORD8 u4_cpb_size_du_scale;
    925 
    926 
    927     /**
    928     * specifies the length, in bits for initial cpb delay (nal/vcl)sysntax in bp sei
    929     */
    930     UWORD8  u1_initial_cpb_removal_delay_length_minus1;
    931 
    932     /**
    933     * specifies the length, in bits for the au cpb delay syntax in pt_sei
    934     */
    935     UWORD8  u1_au_cpb_removal_delay_length_minus1;
    936 
    937     /**
    938     * specifies the length, in bits, of the pic_dpb_output_delay syntax element in the pt SEI message
    939     */
    940     UWORD8  u1_dpb_output_delay_length_minus1;
    941 
    942     /**
    943     * if 1, , for the highest temporal sub-layers, the temporal distance between the HRD output times
    944     *  of consecutive pictures in output order is constrained refer to Table E-6
    945     */
    946     UWORD8 au1_fixed_pic_rate_general_flag[6];
    947 
    948     UWORD8 au1_fixed_pic_rate_within_cvs_flag[6];
    949 
    950     /**
    951     * if 1, , for the highest temporal sub-layers, the temporal distance (in clock ticks) between the
    952     * element units that specify HRD output times of consecutive pictures in output order is constrained
    953     * refer to Table E-6
    954     */
    955     UWORD8 au1_elemental_duration_in_tc_minus1[6];
    956 
    957     /**
    958     * specifies the HRD operational mode
    959     */
    960     UWORD8 au1_low_delay_hrd_flag[6];
    961 
    962     /**
    963     * 1 specifies the number of alternative CPB specifications in the
    964     * bitstream of the cvs when HighestTid is equal to i
    965     */
    966     UWORD8 au1_cpb_cnt_minus1[6];
    967 }ihevcd_cxa_ctl_get_vui_params_op_t;
    968 
    969 #ifdef __cplusplus
    970 } /* closing brace for extern "C" */
    971 #endif
    972 #endif /* __IHEVCD_CXA_H__ */
    973