1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 4*c83a76b0SSuyog Pawar * 5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License"); 6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License. 7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at: 8*c83a76b0SSuyog Pawar * 9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0 10*c83a76b0SSuyog Pawar * 11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software 12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS, 13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and 15*c83a76b0SSuyog Pawar * limitations under the License. 16*c83a76b0SSuyog Pawar * 17*c83a76b0SSuyog Pawar ******************************************************************************/ 18*c83a76b0SSuyog Pawar 19*c83a76b0SSuyog Pawar /** 20*c83a76b0SSuyog Pawar ******************************************************************************* 21*c83a76b0SSuyog Pawar * @file 22*c83a76b0SSuyog Pawar * ihevc_structs.h 23*c83a76b0SSuyog Pawar * 24*c83a76b0SSuyog Pawar * @brief 25*c83a76b0SSuyog Pawar * Structure definitions used in the code 26*c83a76b0SSuyog Pawar * 27*c83a76b0SSuyog Pawar * @author 28*c83a76b0SSuyog Pawar * Ittiam 29*c83a76b0SSuyog Pawar * 30*c83a76b0SSuyog Pawar * @par List of Functions: 31*c83a76b0SSuyog Pawar * 32*c83a76b0SSuyog Pawar * @remarks 33*c83a76b0SSuyog Pawar * None 34*c83a76b0SSuyog Pawar * 35*c83a76b0SSuyog Pawar ******************************************************************************* 36*c83a76b0SSuyog Pawar */ 37*c83a76b0SSuyog Pawar 38*c83a76b0SSuyog Pawar #ifndef _IHEVC_STRUCTS_H_ 39*c83a76b0SSuyog Pawar #define _IHEVC_STRUCTS_H_ 40*c83a76b0SSuyog Pawar 41*c83a76b0SSuyog Pawar 42*c83a76b0SSuyog Pawar #ifndef DISABLE_SEI 43*c83a76b0SSuyog Pawar /** 44*c83a76b0SSuyog Pawar * Buffering Period SEI parameters Info 45*c83a76b0SSuyog Pawar */ 46*c83a76b0SSuyog Pawar typedef struct 47*c83a76b0SSuyog Pawar { 48*c83a76b0SSuyog Pawar /** 49*c83a76b0SSuyog Pawar * specifies SPS Id active for the coded picture assosiated 50*c83a76b0SSuyog Pawar * with the bp message. 51*c83a76b0SSuyog Pawar */ 52*c83a76b0SSuyog Pawar UWORD8 u1_bp_seq_parameter_set_id; 53*c83a76b0SSuyog Pawar 54*c83a76b0SSuyog Pawar /** 55*c83a76b0SSuyog Pawar * Derived from Hrd parameters 56*c83a76b0SSuyog Pawar */ 57*c83a76b0SSuyog Pawar UWORD8 u1_sub_pic_cpb_params_present_flag; 58*c83a76b0SSuyog Pawar 59*c83a76b0SSuyog Pawar /** 60*c83a76b0SSuyog Pawar * specifies the presence of the initial_alt_cpb_removal_delay[ i ] 61*c83a76b0SSuyog Pawar * and initial_alt_cpb_removal_offset[ i ] syntax elements 62*c83a76b0SSuyog Pawar */ 63*c83a76b0SSuyog Pawar UWORD8 u1_rap_cpb_params_present_flag; 64*c83a76b0SSuyog Pawar 65*c83a76b0SSuyog Pawar /** 66*c83a76b0SSuyog Pawar * cbp removal delay used in buffering period SEI 67*c83a76b0SSuyog Pawar */ 68*c83a76b0SSuyog Pawar UWORD32 u4_cpb_delay_offset; 69*c83a76b0SSuyog Pawar 70*c83a76b0SSuyog Pawar /** 71*c83a76b0SSuyog Pawar * dbp removal delay used in buffering period SEI 72*c83a76b0SSuyog Pawar */ 73*c83a76b0SSuyog Pawar UWORD32 u4_dpb_delay_offset; 74*c83a76b0SSuyog Pawar 75*c83a76b0SSuyog Pawar /** 76*c83a76b0SSuyog Pawar * concatanation flag 77*c83a76b0SSuyog Pawar */ 78*c83a76b0SSuyog Pawar UWORD8 u1_concatenation_flag; 79*c83a76b0SSuyog Pawar 80*c83a76b0SSuyog Pawar /** 81*c83a76b0SSuyog Pawar * delata cbp removal delay 82*c83a76b0SSuyog Pawar */ 83*c83a76b0SSuyog Pawar UWORD32 u4_au_cpb_removal_delay_delta_minus1; 84*c83a76b0SSuyog Pawar 85*c83a76b0SSuyog Pawar /** 86*c83a76b0SSuyog Pawar * specify the default initial CPB removal delays, respectively, 87*c83a76b0SSuyog Pawar * for the CPB when the NAL HRD parameters are in use 88*c83a76b0SSuyog Pawar */ 89*c83a76b0SSuyog Pawar UWORD32 au4_nal_initial_cpb_removal_delay[MAX_CPB_CNT]; 90*c83a76b0SSuyog Pawar 91*c83a76b0SSuyog Pawar /** 92*c83a76b0SSuyog Pawar * specify the alternate initial CPB removal delays, respectively, 93*c83a76b0SSuyog Pawar * for the CPB when the NAL HRD parameters are in use 94*c83a76b0SSuyog Pawar */ 95*c83a76b0SSuyog Pawar UWORD32 au4_nal_initial_alt_cpb_removal_delay[MAX_CPB_CNT]; 96*c83a76b0SSuyog Pawar 97*c83a76b0SSuyog Pawar /** 98*c83a76b0SSuyog Pawar * specify the initial CPB removal delay offset, respectively, 99*c83a76b0SSuyog Pawar * for the CPB when the NAL HRD parameters are in use 100*c83a76b0SSuyog Pawar */ 101*c83a76b0SSuyog Pawar UWORD32 au4_nal_initial_cpb_removal_delay_offset[MAX_CPB_CNT]; 102*c83a76b0SSuyog Pawar 103*c83a76b0SSuyog Pawar /** 104*c83a76b0SSuyog Pawar * specify the alternate initial CPB removal delays offsets, respectively, 105*c83a76b0SSuyog Pawar * for the CPB when the NAL HRD parameters are in use 106*c83a76b0SSuyog Pawar */ 107*c83a76b0SSuyog Pawar UWORD32 au4_nal_initial_alt_cpb_removal_delay_offset[MAX_CPB_CNT]; 108*c83a76b0SSuyog Pawar 109*c83a76b0SSuyog Pawar /** 110*c83a76b0SSuyog Pawar * specify the default initial CPB removal delays, respectively, 111*c83a76b0SSuyog Pawar * for the CPB when the VCL HRD parameters are in use 112*c83a76b0SSuyog Pawar */ 113*c83a76b0SSuyog Pawar UWORD32 au4_vcl_initial_cpb_removal_delay[MAX_CPB_CNT]; 114*c83a76b0SSuyog Pawar 115*c83a76b0SSuyog Pawar /** 116*c83a76b0SSuyog Pawar * specify the initial alt CPB removal delays , respectively, 117*c83a76b0SSuyog Pawar * for the CPB when the VCL HRD parameters are in use 118*c83a76b0SSuyog Pawar */ 119*c83a76b0SSuyog Pawar UWORD32 au4_vcl_initial_alt_cpb_removal_delay[MAX_CPB_CNT]; 120*c83a76b0SSuyog Pawar 121*c83a76b0SSuyog Pawar /** 122*c83a76b0SSuyog Pawar * specify the initial CPB removal delay offset, respectively, 123*c83a76b0SSuyog Pawar * for the CPB when the VCL HRD parameters are in use 124*c83a76b0SSuyog Pawar */ 125*c83a76b0SSuyog Pawar UWORD32 au4_vcl_initial_cpb_removal_delay_offset[MAX_CPB_CNT]; 126*c83a76b0SSuyog Pawar 127*c83a76b0SSuyog Pawar /** 128*c83a76b0SSuyog Pawar * specify the alternate initial CPB removal delays offsets, respectively, 129*c83a76b0SSuyog Pawar * for the CPB when the VCL HRD parameters are in use 130*c83a76b0SSuyog Pawar */ 131*c83a76b0SSuyog Pawar UWORD32 au4_vcl_initial_alt_cpb_removal_delay_offset[MAX_CPB_CNT]; 132*c83a76b0SSuyog Pawar 133*c83a76b0SSuyog Pawar /** 134*c83a76b0SSuyog Pawar * Inital CPB removal delay 135*c83a76b0SSuyog Pawar */ 136*c83a76b0SSuyog Pawar UWORD32 u4_initial_cpb_removal_delay_length; 137*c83a76b0SSuyog Pawar 138*c83a76b0SSuyog Pawar /** 139*c83a76b0SSuyog Pawar * CPB cnt for corr. sublayer 140*c83a76b0SSuyog Pawar */ 141*c83a76b0SSuyog Pawar UWORD32 u4_cpb_cnt; 142*c83a76b0SSuyog Pawar 143*c83a76b0SSuyog Pawar 144*c83a76b0SSuyog Pawar /** 145*c83a76b0SSuyog Pawar * VBV buffer size used in buffering period SEI 146*c83a76b0SSuyog Pawar */ 147*c83a76b0SSuyog Pawar UWORD32 u4_buffer_size_sei; 148*c83a76b0SSuyog Pawar 149*c83a76b0SSuyog Pawar /** 150*c83a76b0SSuyog Pawar * Encoder buffer fullness used in buffering period SEI 151*c83a76b0SSuyog Pawar */ 152*c83a76b0SSuyog Pawar UWORD32 u4_dbf_sei; 153*c83a76b0SSuyog Pawar 154*c83a76b0SSuyog Pawar /** 155*c83a76b0SSuyog Pawar * target bitrate used in buffering period SEI 156*c83a76b0SSuyog Pawar */ 157*c83a76b0SSuyog Pawar UWORD32 u4_target_bit_rate_sei; 158*c83a76b0SSuyog Pawar 159*c83a76b0SSuyog Pawar }buf_period_sei_params_t; 160*c83a76b0SSuyog Pawar 161*c83a76b0SSuyog Pawar 162*c83a76b0SSuyog Pawar /** 163*c83a76b0SSuyog Pawar * Picture Timing SEI parameters Info 164*c83a76b0SSuyog Pawar */ 165*c83a76b0SSuyog Pawar typedef struct 166*c83a76b0SSuyog Pawar { 167*c83a76b0SSuyog Pawar /** 168*c83a76b0SSuyog Pawar * derived from vui parameters 169*c83a76b0SSuyog Pawar */ 170*c83a76b0SSuyog Pawar UWORD8 u1_frame_field_info_present_flag; 171*c83a76b0SSuyog Pawar 172*c83a76b0SSuyog Pawar /** 173*c83a76b0SSuyog Pawar * indicates whether a picture should be displayed as a 174*c83a76b0SSuyog Pawar * frame or as one or more fields 175*c83a76b0SSuyog Pawar */ 176*c83a76b0SSuyog Pawar UWORD32 u4_pic_struct; 177*c83a76b0SSuyog Pawar 178*c83a76b0SSuyog Pawar UWORD32 u4_source_scan_type; 179*c83a76b0SSuyog Pawar 180*c83a76b0SSuyog Pawar /** 181*c83a76b0SSuyog Pawar * if 1, indicates if the current pic is a duplicte pic in output order 182*c83a76b0SSuyog Pawar */ 183*c83a76b0SSuyog Pawar UWORD8 u1_duplicate_flag; 184*c83a76b0SSuyog Pawar 185*c83a76b0SSuyog Pawar /** 186*c83a76b0SSuyog Pawar * specifies the number clock ticks between the nominal CPB removal time 187*c83a76b0SSuyog Pawar * au associated with the pt SEI message and 188*c83a76b0SSuyog Pawar * the preceding au in decoding order that contained a bp SEI message 189*c83a76b0SSuyog Pawar */ 190*c83a76b0SSuyog Pawar UWORD32 u4_au_cpb_removal_delay_minus1; 191*c83a76b0SSuyog Pawar 192*c83a76b0SSuyog Pawar /** 193*c83a76b0SSuyog Pawar * compute the DPB output time of the picture 194*c83a76b0SSuyog Pawar */ 195*c83a76b0SSuyog Pawar UWORD32 u4_pic_dpb_output_delay; 196*c83a76b0SSuyog Pawar 197*c83a76b0SSuyog Pawar UWORD32 u4_pic_dpb_output_du_delay; 198*c83a76b0SSuyog Pawar 199*c83a76b0SSuyog Pawar /** 200*c83a76b0SSuyog Pawar * specifies the number of decoding units in the access unit 201*c83a76b0SSuyog Pawar * the picture timing SEI message is associated with 202*c83a76b0SSuyog Pawar */ 203*c83a76b0SSuyog Pawar UWORD32 u4_num_decoding_units_minus1; 204*c83a76b0SSuyog Pawar 205*c83a76b0SSuyog Pawar /** 206*c83a76b0SSuyog Pawar * if 1 specifies that the du_common_cpb_removal_delay_increment_minus1 is present 207*c83a76b0SSuyog Pawar */ 208*c83a76b0SSuyog Pawar UWORD8 u1_du_common_cpb_removal_delay_flag; 209*c83a76b0SSuyog Pawar 210*c83a76b0SSuyog Pawar /** 211*c83a76b0SSuyog Pawar * specifies the duration, in units of clock sub-ticks, 212*c83a76b0SSuyog Pawar * between the nominal CPB removal times of any two consecutive decoding units 213*c83a76b0SSuyog Pawar * in decoding order in the access unit associated with the pt_SEI message 214*c83a76b0SSuyog Pawar */ 215*c83a76b0SSuyog Pawar UWORD32 u4_du_common_cpb_removal_delay_increment_minus1; //same as u4_du_cpb_removal_delay_increment_minus1 216*c83a76b0SSuyog Pawar 217*c83a76b0SSuyog Pawar /** 218*c83a76b0SSuyog Pawar * specifies the number of NAL units in the decoding unit of the access unit 219*c83a76b0SSuyog Pawar * the picture timing SEI message is associated with. 220*c83a76b0SSuyog Pawar * range from 0 to (pic size in ctby - 1) 221*c83a76b0SSuyog Pawar */ 222*c83a76b0SSuyog Pawar UWORD32 au4_num_nalus_in_du_minus1[4320 / MIN_CTB_SIZE]; 223*c83a76b0SSuyog Pawar 224*c83a76b0SSuyog Pawar /** 225*c83a76b0SSuyog Pawar * specifies the duration, in units of clock sub-ticks, 226*c83a76b0SSuyog Pawar * between the nominal CPB removal times of the ( i + 1 )-th decoding unit and the i-th decoding unit, 227*c83a76b0SSuyog Pawar * in decoding order, in the access unit associated with the pt_SEI message 228*c83a76b0SSuyog Pawar */ 229*c83a76b0SSuyog Pawar UWORD32 au4_du_cpb_removal_delay_increment_minus1[4320 / MIN_CTB_SIZE]; 230*c83a76b0SSuyog Pawar 231*c83a76b0SSuyog Pawar }pic_timing_sei_params_t; 232*c83a76b0SSuyog Pawar 233*c83a76b0SSuyog Pawar /** 234*c83a76b0SSuyog Pawar * Structure to hold Recovery point SEI parameters Info 235*c83a76b0SSuyog Pawar */ 236*c83a76b0SSuyog Pawar typedef struct 237*c83a76b0SSuyog Pawar { 238*c83a76b0SSuyog Pawar /** 239*c83a76b0SSuyog Pawar * specifies the recovery point of output pictures in output order 240*c83a76b0SSuyog Pawar */ 241*c83a76b0SSuyog Pawar WORD32 i4_recovery_poc_cnt; 242*c83a76b0SSuyog Pawar 243*c83a76b0SSuyog Pawar UWORD8 u1_exact_match_flag; 244*c83a76b0SSuyog Pawar 245*c83a76b0SSuyog Pawar /** 246*c83a76b0SSuyog Pawar * indicates the presence or absence of a broken link in the NAL unit 247*c83a76b0SSuyog Pawar * stream at the location of the recovery point SEI message 248*c83a76b0SSuyog Pawar */ 249*c83a76b0SSuyog Pawar 250*c83a76b0SSuyog Pawar UWORD8 u1_broken_link_flag; 251*c83a76b0SSuyog Pawar 252*c83a76b0SSuyog Pawar }recovery_point_sei_params_t; 253*c83a76b0SSuyog Pawar 254*c83a76b0SSuyog Pawar /** 255*c83a76b0SSuyog Pawar * Structure to hold Mastering Display Colour Volume SEI 256*c83a76b0SSuyog Pawar */ 257*c83a76b0SSuyog Pawar typedef struct 258*c83a76b0SSuyog Pawar { 259*c83a76b0SSuyog Pawar /** 260*c83a76b0SSuyog Pawar * Array to store the display_primaries_x values 261*c83a76b0SSuyog Pawar */ 262*c83a76b0SSuyog Pawar UWORD16 au2_display_primaries_x[3]; 263*c83a76b0SSuyog Pawar 264*c83a76b0SSuyog Pawar /** 265*c83a76b0SSuyog Pawar * Array to store the display_primaries_y values 266*c83a76b0SSuyog Pawar */ 267*c83a76b0SSuyog Pawar UWORD16 au2_display_primaries_y[3]; 268*c83a76b0SSuyog Pawar 269*c83a76b0SSuyog Pawar /** 270*c83a76b0SSuyog Pawar * Variable to store the white point x value 271*c83a76b0SSuyog Pawar */ 272*c83a76b0SSuyog Pawar UWORD16 u2_white_point_x; 273*c83a76b0SSuyog Pawar 274*c83a76b0SSuyog Pawar /** 275*c83a76b0SSuyog Pawar * Variable to store the white point y value 276*c83a76b0SSuyog Pawar */ 277*c83a76b0SSuyog Pawar UWORD16 u2_white_point_y; 278*c83a76b0SSuyog Pawar 279*c83a76b0SSuyog Pawar /** 280*c83a76b0SSuyog Pawar * Variable to store the max display mastering luminance value 281*c83a76b0SSuyog Pawar */ 282*c83a76b0SSuyog Pawar UWORD32 u4_max_display_mastering_luminance; 283*c83a76b0SSuyog Pawar 284*c83a76b0SSuyog Pawar /** 285*c83a76b0SSuyog Pawar * Variable to store the min display mastering luminance value 286*c83a76b0SSuyog Pawar */ 287*c83a76b0SSuyog Pawar UWORD32 u4_min_display_mastering_luminance; 288*c83a76b0SSuyog Pawar 289*c83a76b0SSuyog Pawar }mastering_dis_col_vol_sei_params_t; 290*c83a76b0SSuyog Pawar 291*c83a76b0SSuyog Pawar /** 292*c83a76b0SSuyog Pawar * Structure to hold active parameter parameter set SEI parameters Info 293*c83a76b0SSuyog Pawar */ 294*c83a76b0SSuyog Pawar typedef struct 295*c83a76b0SSuyog Pawar { 296*c83a76b0SSuyog Pawar /* 297*c83a76b0SSuyog Pawar * active vps id 298*c83a76b0SSuyog Pawar */ 299*c83a76b0SSuyog Pawar 300*c83a76b0SSuyog Pawar UWORD8 u1_active_video_parameter_set_id; 301*c83a76b0SSuyog Pawar 302*c83a76b0SSuyog Pawar /* 303*c83a76b0SSuyog Pawar * default set to zero. 304*c83a76b0SSuyog Pawar */ 305*c83a76b0SSuyog Pawar UWORD8 u1_self_contained_cvs_flag; 306*c83a76b0SSuyog Pawar 307*c83a76b0SSuyog Pawar UWORD8 u1_no_parameter_set_update_flag; 308*c83a76b0SSuyog Pawar 309*c83a76b0SSuyog Pawar UWORD8 u1_num_sps_ids_minus1; 310*c83a76b0SSuyog Pawar 311*c83a76b0SSuyog Pawar /* 312*c83a76b0SSuyog Pawar * active sps id 313*c83a76b0SSuyog Pawar */ 314*c83a76b0SSuyog Pawar UWORD8 au1_active_seq_parameter_set_id[15]; 315*c83a76b0SSuyog Pawar 316*c83a76b0SSuyog Pawar UWORD32 au4_layer_sps_idx[64]; 317*c83a76b0SSuyog Pawar 318*c83a76b0SSuyog Pawar }active_parameter_set_sei_param_t; 319*c83a76b0SSuyog Pawar 320*c83a76b0SSuyog Pawar /** 321*c83a76b0SSuyog Pawar * Structure to hold SEI Hash values 322*c83a76b0SSuyog Pawar */ 323*c83a76b0SSuyog Pawar typedef struct 324*c83a76b0SSuyog Pawar { 325*c83a76b0SSuyog Pawar /* 326*c83a76b0SSuyog Pawar * SEI Hash values for each color component 327*c83a76b0SSuyog Pawar */ 328*c83a76b0SSuyog Pawar UWORD8 au1_sei_hash[3][16]; 329*c83a76b0SSuyog Pawar 330*c83a76b0SSuyog Pawar }hash_sei_param_t; 331*c83a76b0SSuyog Pawar 332*c83a76b0SSuyog Pawar /** 333*c83a76b0SSuyog Pawar * Structure to hold user data registered SEI param Info 334*c83a76b0SSuyog Pawar */ 335*c83a76b0SSuyog Pawar typedef struct 336*c83a76b0SSuyog Pawar { 337*c83a76b0SSuyog Pawar /** 338*c83a76b0SSuyog Pawar * Contains country code by Annex A of Recommendation ITU-T T.35 339*c83a76b0SSuyog Pawar */ 340*c83a76b0SSuyog Pawar UWORD8 u1_itu_t_t35_country_code; 341*c83a76b0SSuyog Pawar 342*c83a76b0SSuyog Pawar /** 343*c83a76b0SSuyog Pawar * Contains country code by Annex B of Recommendation ITU-T T.35 344*c83a76b0SSuyog Pawar */ 345*c83a76b0SSuyog Pawar UWORD8 u1_itu_t_t35_country_code_extension_byte; 346*c83a76b0SSuyog Pawar 347*c83a76b0SSuyog Pawar /** 348*c83a76b0SSuyog Pawar * Contains data registered as specified in Recommendation ITU-T T.35 349*c83a76b0SSuyog Pawar */ 350*c83a76b0SSuyog Pawar UWORD8 u1_itu_t_t35_payload_byte[MAX_USERDATA_PAYLOAD]; 351*c83a76b0SSuyog Pawar 352*c83a76b0SSuyog Pawar /** 353*c83a76b0SSuyog Pawar * Valid payload size present in this buffer 354*c83a76b0SSuyog Pawar */ 355*c83a76b0SSuyog Pawar WORD32 i4_valid_payload_size; 356*c83a76b0SSuyog Pawar 357*c83a76b0SSuyog Pawar /** 358*c83a76b0SSuyog Pawar * Total payload size incase payloadSize > IHEVCD_MAX_USERDATA_PAYLOAD 359*c83a76b0SSuyog Pawar */ 360*c83a76b0SSuyog Pawar WORD32 i4_payload_size; 361*c83a76b0SSuyog Pawar }user_data_registered_itu_t_t35_t; 362*c83a76b0SSuyog Pawar 363*c83a76b0SSuyog Pawar /** 364*c83a76b0SSuyog Pawar * Structure to hold time code SEI param info 365*c83a76b0SSuyog Pawar */ 366*c83a76b0SSuyog Pawar typedef struct 367*c83a76b0SSuyog Pawar { 368*c83a76b0SSuyog Pawar /** 369*c83a76b0SSuyog Pawar * Number of sets of clock timestamp syntax elements present for the current picture 370*c83a76b0SSuyog Pawar */ 371*c83a76b0SSuyog Pawar UWORD8 u1_num_clock_ts; 372*c83a76b0SSuyog Pawar 373*c83a76b0SSuyog Pawar /** 374*c83a76b0SSuyog Pawar * Indicates presenc of associated set of clock timestamps 375*c83a76b0SSuyog Pawar */ 376*c83a76b0SSuyog Pawar UWORD8 au1_clock_timestamp_flag[MAX_NUM_CLOCK_TS]; 377*c83a76b0SSuyog Pawar 378*c83a76b0SSuyog Pawar /** 379*c83a76b0SSuyog Pawar * Used in calculating clockTimestamp[i] 380*c83a76b0SSuyog Pawar */ 381*c83a76b0SSuyog Pawar UWORD8 au1_units_field_based_flag[MAX_NUM_CLOCK_TS]; 382*c83a76b0SSuyog Pawar 383*c83a76b0SSuyog Pawar /** 384*c83a76b0SSuyog Pawar * Specifies the method of dropping values of the n_frames[i] syntax element 385*c83a76b0SSuyog Pawar */ 386*c83a76b0SSuyog Pawar UWORD8 au1_counting_type[MAX_NUM_CLOCK_TS]; 387*c83a76b0SSuyog Pawar 388*c83a76b0SSuyog Pawar /** 389*c83a76b0SSuyog Pawar * Specifies that the n_frames[i] syntax element is followed by seconds_value[i], 390*c83a76b0SSuyog Pawar * minutes_value[i] and hours_value[i] 391*c83a76b0SSuyog Pawar */ 392*c83a76b0SSuyog Pawar UWORD8 au1_full_timestamp_flag[MAX_NUM_CLOCK_TS]; 393*c83a76b0SSuyog Pawar 394*c83a76b0SSuyog Pawar /** 395*c83a76b0SSuyog Pawar * Indicates the discontinuity in clockTimestamp 396*c83a76b0SSuyog Pawar */ 397*c83a76b0SSuyog Pawar UWORD8 au1_discontinuity_flag[MAX_NUM_CLOCK_TS]; 398*c83a76b0SSuyog Pawar 399*c83a76b0SSuyog Pawar /** 400*c83a76b0SSuyog Pawar * Specifies the skipping of one or more values of n_frames[i] 401*c83a76b0SSuyog Pawar */ 402*c83a76b0SSuyog Pawar UWORD8 au1_cnt_dropped_flag[MAX_NUM_CLOCK_TS]; 403*c83a76b0SSuyog Pawar 404*c83a76b0SSuyog Pawar /** 405*c83a76b0SSuyog Pawar * Specifies the value of nFrames used to compute clockTimestamp[i] 406*c83a76b0SSuyog Pawar */ 407*c83a76b0SSuyog Pawar UWORD16 au2_n_frames[MAX_NUM_CLOCK_TS]; 408*c83a76b0SSuyog Pawar 409*c83a76b0SSuyog Pawar /** 410*c83a76b0SSuyog Pawar * Specifies the presence of seconds_value[i] and minutes_flag[i] 411*c83a76b0SSuyog Pawar */ 412*c83a76b0SSuyog Pawar UWORD8 au1_seconds_flag[MAX_NUM_CLOCK_TS]; 413*c83a76b0SSuyog Pawar 414*c83a76b0SSuyog Pawar /** 415*c83a76b0SSuyog Pawar * Specifies the presence of minutes_value[i] and hours_flag[i] 416*c83a76b0SSuyog Pawar */ 417*c83a76b0SSuyog Pawar UWORD8 au1_minutes_flag[MAX_NUM_CLOCK_TS]; 418*c83a76b0SSuyog Pawar 419*c83a76b0SSuyog Pawar /** 420*c83a76b0SSuyog Pawar * Specifies the presence of hours_value[i] 421*c83a76b0SSuyog Pawar */ 422*c83a76b0SSuyog Pawar UWORD8 au1_hours_flag[MAX_NUM_CLOCK_TS]; 423*c83a76b0SSuyog Pawar 424*c83a76b0SSuyog Pawar /** 425*c83a76b0SSuyog Pawar * Specifies the value of sS used to compute clockTimestamp[i] 426*c83a76b0SSuyog Pawar */ 427*c83a76b0SSuyog Pawar UWORD8 au1_seconds_value[MAX_NUM_CLOCK_TS]; 428*c83a76b0SSuyog Pawar 429*c83a76b0SSuyog Pawar /** 430*c83a76b0SSuyog Pawar * Specifies the value of mM used to compute clockTimestamp[i] 431*c83a76b0SSuyog Pawar */ 432*c83a76b0SSuyog Pawar UWORD8 au1_minutes_value[MAX_NUM_CLOCK_TS]; 433*c83a76b0SSuyog Pawar 434*c83a76b0SSuyog Pawar /** 435*c83a76b0SSuyog Pawar * Specifies the value of hH used to compute clockTimestamp[i] 436*c83a76b0SSuyog Pawar */ 437*c83a76b0SSuyog Pawar UWORD8 au1_hours_value[MAX_NUM_CLOCK_TS]; 438*c83a76b0SSuyog Pawar 439*c83a76b0SSuyog Pawar /** 440*c83a76b0SSuyog Pawar * Specifies the length in bits of the time_offset_value[i] 441*c83a76b0SSuyog Pawar */ 442*c83a76b0SSuyog Pawar UWORD8 au1_time_offset_length[MAX_NUM_CLOCK_TS]; 443*c83a76b0SSuyog Pawar 444*c83a76b0SSuyog Pawar /** 445*c83a76b0SSuyog Pawar * pecifies the value of tOffset used to compute clockTimestamp[i] 446*c83a76b0SSuyog Pawar */ 447*c83a76b0SSuyog Pawar UWORD8 au1_time_offset_value[MAX_NUM_CLOCK_TS]; 448*c83a76b0SSuyog Pawar 449*c83a76b0SSuyog Pawar }time_code_t; 450*c83a76b0SSuyog Pawar 451*c83a76b0SSuyog Pawar /** 452*c83a76b0SSuyog Pawar * @brief Structure for Content Light Level Info 453*c83a76b0SSuyog Pawar * 454*c83a76b0SSuyog Pawar */ 455*c83a76b0SSuyog Pawar typedef struct 456*c83a76b0SSuyog Pawar { 457*c83a76b0SSuyog Pawar /** 458*c83a76b0SSuyog Pawar * 16bit unsigned number which indicates the maximum pixel intensity of all samples in bit-stream in units of 1 candela per square metre 459*c83a76b0SSuyog Pawar */ 460*c83a76b0SSuyog Pawar UWORD16 u2_sei_max_cll; 461*c83a76b0SSuyog Pawar 462*c83a76b0SSuyog Pawar /** 463*c83a76b0SSuyog Pawar * 16bit unsigned number which indicates the average pixel intensity of all samples in bit-stream in units of 1 candela per square metre 464*c83a76b0SSuyog Pawar */ 465*c83a76b0SSuyog Pawar UWORD16 u2_sei_avg_cll; 466*c83a76b0SSuyog Pawar 467*c83a76b0SSuyog Pawar }content_light_level_info_sei_params_t; 468*c83a76b0SSuyog Pawar 469*c83a76b0SSuyog Pawar 470*c83a76b0SSuyog Pawar /** 471*c83a76b0SSuyog Pawar * Structure to hold SEI parameters Info 472*c83a76b0SSuyog Pawar */ 473*c83a76b0SSuyog Pawar typedef struct 474*c83a76b0SSuyog Pawar { 475*c83a76b0SSuyog Pawar 476*c83a76b0SSuyog Pawar WORD8 i1_sei_parameters_present_flag; 477*c83a76b0SSuyog Pawar 478*c83a76b0SSuyog Pawar WORD8 i1_aud_present_flag; 479*c83a76b0SSuyog Pawar 480*c83a76b0SSuyog Pawar WORD8 i1_buf_period_params_present_flag; 481*c83a76b0SSuyog Pawar 482*c83a76b0SSuyog Pawar WORD8 i1_pic_timing_params_present_flag; 483*c83a76b0SSuyog Pawar 484*c83a76b0SSuyog Pawar WORD8 i1_recovery_point_params_present_flag; 485*c83a76b0SSuyog Pawar 486*c83a76b0SSuyog Pawar WORD8 i1_active_parameter_set; 487*c83a76b0SSuyog Pawar 488*c83a76b0SSuyog Pawar WORD8 i4_sei_mastering_disp_colour_vol_params_present_flags; 489*c83a76b0SSuyog Pawar 490*c83a76b0SSuyog Pawar WORD8 i1_sei_cll_enable; 491*c83a76b0SSuyog Pawar 492*c83a76b0SSuyog Pawar /* Enable/Disable SEI Hash on the Decoded picture & Hash type */ 493*c83a76b0SSuyog Pawar /* < 3 : Checksum, 2 : CRC, 1 : MD5, 0 : disable > */ 494*c83a76b0SSuyog Pawar /* Other values are not supported */ 495*c83a76b0SSuyog Pawar WORD8 i1_decoded_pic_hash_sei_flag; 496*c83a76b0SSuyog Pawar 497*c83a76b0SSuyog Pawar /* number of user data e.g. CC data, BAR data, AFD data etc */ 498*c83a76b0SSuyog Pawar WORD32 i4_sei_user_data_cnt; 499*c83a76b0SSuyog Pawar 500*c83a76b0SSuyog Pawar WORD8 i1_user_data_registered_present_flag; 501*c83a76b0SSuyog Pawar 502*c83a76b0SSuyog Pawar WORD8 i1_time_code_present_flag; 503*c83a76b0SSuyog Pawar 504*c83a76b0SSuyog Pawar buf_period_sei_params_t s_buf_period_sei_params; 505*c83a76b0SSuyog Pawar 506*c83a76b0SSuyog Pawar pic_timing_sei_params_t s_pic_timing_sei_params; 507*c83a76b0SSuyog Pawar 508*c83a76b0SSuyog Pawar recovery_point_sei_params_t s_recovery_point_params; 509*c83a76b0SSuyog Pawar 510*c83a76b0SSuyog Pawar active_parameter_set_sei_param_t s_active_parameter_set_sei_params; 511*c83a76b0SSuyog Pawar 512*c83a76b0SSuyog Pawar hash_sei_param_t s_hash_sei_params; 513*c83a76b0SSuyog Pawar 514*c83a76b0SSuyog Pawar content_light_level_info_sei_params_t s_cll_info_sei_params; 515*c83a76b0SSuyog Pawar 516*c83a76b0SSuyog Pawar mastering_dis_col_vol_sei_params_t s_mastering_dis_col_vol_sei_params; 517*c83a76b0SSuyog Pawar 518*c83a76b0SSuyog Pawar user_data_registered_itu_t_t35_t as_user_data_registered_itu_t_t35[USER_DATA_MAX]; 519*c83a76b0SSuyog Pawar 520*c83a76b0SSuyog Pawar time_code_t s_time_code; 521*c83a76b0SSuyog Pawar } sei_params_t; 522*c83a76b0SSuyog Pawar 523*c83a76b0SSuyog Pawar #endif 524*c83a76b0SSuyog Pawar 525*c83a76b0SSuyog Pawar /** 526*c83a76b0SSuyog Pawar * Sub-layer HRD parameters Info 527*c83a76b0SSuyog Pawar */ 528*c83a76b0SSuyog Pawar typedef struct 529*c83a76b0SSuyog Pawar { 530*c83a76b0SSuyog Pawar /** 531*c83a76b0SSuyog Pawar * (together with bit_rate_scale) specifies the 532*c83a76b0SSuyog Pawar * maximum input bit rate for the i-th CPB 533*c83a76b0SSuyog Pawar */ 534*c83a76b0SSuyog Pawar UWORD32 au4_bit_rate_value_minus1[MAX_CPB_CNT]; 535*c83a76b0SSuyog Pawar /** 536*c83a76b0SSuyog Pawar * together with cpb_size_scale to specify the 537*c83a76b0SSuyog Pawar * CPB size when the CPB operates at the access unit level. 538*c83a76b0SSuyog Pawar */ 539*c83a76b0SSuyog Pawar UWORD32 au4_cpb_size_value_minus1[MAX_CPB_CNT]; 540*c83a76b0SSuyog Pawar 541*c83a76b0SSuyog Pawar /** 542*c83a76b0SSuyog Pawar * together with cpb_size_du_scale to specify the CPB size 543*c83a76b0SSuyog Pawar * when the CPB operates at sub-picture level 544*c83a76b0SSuyog Pawar */ 545*c83a76b0SSuyog Pawar UWORD32 au4_cpb_size_du_value_minus1[MAX_CPB_CNT]; 546*c83a76b0SSuyog Pawar 547*c83a76b0SSuyog Pawar /** 548*c83a76b0SSuyog Pawar * specifies the maximum input bit rate for the i-th CPB when the CPB 549*c83a76b0SSuyog Pawar * operates at the sub-picture level. bit_rate_du_value_minus1[ i ] 550*c83a76b0SSuyog Pawar * shall be in the range of 0 to 2^32 - 2 551*c83a76b0SSuyog Pawar */ 552*c83a76b0SSuyog Pawar UWORD32 au4_bit_rate_du_value_minus1[MAX_CPB_CNT]; 553*c83a76b0SSuyog Pawar 554*c83a76b0SSuyog Pawar /** 555*c83a76b0SSuyog Pawar * if 1, specifies that the HSS operates in a constant bit rate (CBR) mode 556*c83a76b0SSuyog Pawar * if 0, specifies that the HSS operates in a intermittent bit rate (CBR) mode 557*c83a76b0SSuyog Pawar */ 558*c83a76b0SSuyog Pawar UWORD8 au1_cbr_flag[32]; 559*c83a76b0SSuyog Pawar 560*c83a76b0SSuyog Pawar }sub_lyr_hrd_params_t; 561*c83a76b0SSuyog Pawar 562*c83a76b0SSuyog Pawar /** 563*c83a76b0SSuyog Pawar * HRD parameters Info 564*c83a76b0SSuyog Pawar */ 565*c83a76b0SSuyog Pawar typedef struct 566*c83a76b0SSuyog Pawar { 567*c83a76b0SSuyog Pawar /** 568*c83a76b0SSuyog Pawar * Indicates the presence of the 569*c83a76b0SSuyog Pawar * num_units_in_ticks, time_scale flag 570*c83a76b0SSuyog Pawar */ 571*c83a76b0SSuyog Pawar UWORD8 u1_timing_info_present_flag; 572*c83a76b0SSuyog Pawar 573*c83a76b0SSuyog Pawar /** 574*c83a76b0SSuyog Pawar * Number of units that 575*c83a76b0SSuyog Pawar * correspond to one increment of the 576*c83a76b0SSuyog Pawar * clock. Indicates the resolution 577*c83a76b0SSuyog Pawar */ 578*c83a76b0SSuyog Pawar UWORD32 u4_num_units_in_tick; 579*c83a76b0SSuyog Pawar 580*c83a76b0SSuyog Pawar /** 581*c83a76b0SSuyog Pawar * The number of time units that pass in one second 582*c83a76b0SSuyog Pawar */ 583*c83a76b0SSuyog Pawar UWORD32 u4_time_scale; 584*c83a76b0SSuyog Pawar 585*c83a76b0SSuyog Pawar /** 586*c83a76b0SSuyog Pawar * Nal- hrd parameters flag 587*c83a76b0SSuyog Pawar */ 588*c83a76b0SSuyog Pawar UWORD8 u1_nal_hrd_parameters_present_flag; 589*c83a76b0SSuyog Pawar 590*c83a76b0SSuyog Pawar /** 591*c83a76b0SSuyog Pawar * VCL- hrd parameters flag 592*c83a76b0SSuyog Pawar */ 593*c83a76b0SSuyog Pawar UWORD8 u1_vcl_hrd_parameters_present_flag; 594*c83a76b0SSuyog Pawar 595*c83a76b0SSuyog Pawar /** 596*c83a76b0SSuyog Pawar * Indicates the presence of NAL-HRD params or VCL_HRD params 597*c83a76b0SSuyog Pawar * in the bitstream 598*c83a76b0SSuyog Pawar */ 599*c83a76b0SSuyog Pawar UWORD8 u1_cpbdpb_delays_present_flag; 600*c83a76b0SSuyog Pawar 601*c83a76b0SSuyog Pawar /** 602*c83a76b0SSuyog Pawar * specifies that sub-picture level CPB removal delay parameters are 603*c83a76b0SSuyog Pawar * present in picture timing SEI messages 604*c83a76b0SSuyog Pawar */ 605*c83a76b0SSuyog Pawar UWORD8 u1_sub_pic_cpb_params_present_flag; 606*c83a76b0SSuyog Pawar 607*c83a76b0SSuyog Pawar /** 608*c83a76b0SSuyog Pawar * specify the clock sub-tick 609*c83a76b0SSuyog Pawar * (the minimum interval of time that can be represented in the coded data when sub_pic_cpb_params_present_flag is equal to 1) 610*c83a76b0SSuyog Pawar */ 611*c83a76b0SSuyog Pawar UWORD8 u1_tick_divisor_minus2; 612*c83a76b0SSuyog Pawar 613*c83a76b0SSuyog Pawar /** 614*c83a76b0SSuyog Pawar * specifies the length, in bits for the du cpb delay syntax in pt_sei 615*c83a76b0SSuyog Pawar */ 616*c83a76b0SSuyog Pawar UWORD8 u1_du_cpb_removal_delay_increment_length_minus1; 617*c83a76b0SSuyog Pawar 618*c83a76b0SSuyog Pawar /** 619*c83a76b0SSuyog Pawar * Indicates presence of sub_pic_cpb_params in pic timing sei 620*c83a76b0SSuyog Pawar */ 621*c83a76b0SSuyog Pawar UWORD8 u1_sub_pic_cpb_params_in_pic_timing_sei_flag; 622*c83a76b0SSuyog Pawar 623*c83a76b0SSuyog Pawar /** 624*c83a76b0SSuyog Pawar * specifies the length, in bits, of the pic_dpb_output_du_delay syntax 625*c83a76b0SSuyog Pawar * element in the picture timing SEI message and the 626*c83a76b0SSuyog Pawar * pic_spt_dpb_output_du_delay syntax element in the decoding unit 627*c83a76b0SSuyog Pawar * information SEI message 628*c83a76b0SSuyog Pawar */ 629*c83a76b0SSuyog Pawar UWORD8 u1_dpb_output_delay_du_length_minus1; 630*c83a76b0SSuyog Pawar 631*c83a76b0SSuyog Pawar /** 632*c83a76b0SSuyog Pawar * (together with bit_rate_value_minus1) specifies the 633*c83a76b0SSuyog Pawar * maximum input bit rate of the i-th CPB 634*c83a76b0SSuyog Pawar */ 635*c83a76b0SSuyog Pawar UWORD32 u4_bit_rate_scale; 636*c83a76b0SSuyog Pawar 637*c83a76b0SSuyog Pawar /** 638*c83a76b0SSuyog Pawar * (together with cpb_size_du_value_minus1) specfies 639*c83a76b0SSuyog Pawar * CPB size of the i-th CPB when the CPB operates 640*c83a76b0SSuyog Pawar * at the access unit level 641*c83a76b0SSuyog Pawar */ 642*c83a76b0SSuyog Pawar UWORD32 u4_cpb_size_scale; 643*c83a76b0SSuyog Pawar 644*c83a76b0SSuyog Pawar /** 645*c83a76b0SSuyog Pawar * (together with cpb_size_du_value_minus1) specfies 646*c83a76b0SSuyog Pawar * CPB size of the i-th CPB when the CPB operates 647*c83a76b0SSuyog Pawar * at the sub-picture level 648*c83a76b0SSuyog Pawar */ 649*c83a76b0SSuyog Pawar UWORD32 u4_cpb_size_du_scale; 650*c83a76b0SSuyog Pawar 651*c83a76b0SSuyog Pawar 652*c83a76b0SSuyog Pawar /** 653*c83a76b0SSuyog Pawar * specifies the length, in bits for initial cpb delay (nal/vcl)sysntax in bp sei 654*c83a76b0SSuyog Pawar */ 655*c83a76b0SSuyog Pawar UWORD8 u1_initial_cpb_removal_delay_length_minus1; 656*c83a76b0SSuyog Pawar 657*c83a76b0SSuyog Pawar /** 658*c83a76b0SSuyog Pawar * specifies the length, in bits for the au cpb delay syntax in pt_sei 659*c83a76b0SSuyog Pawar */ 660*c83a76b0SSuyog Pawar UWORD8 u1_au_cpb_removal_delay_length_minus1; 661*c83a76b0SSuyog Pawar 662*c83a76b0SSuyog Pawar /** 663*c83a76b0SSuyog Pawar * specifies the length, in bits, of the pic_dpb_output_delay syntax element in the pt SEI message 664*c83a76b0SSuyog Pawar */ 665*c83a76b0SSuyog Pawar UWORD8 u1_dpb_output_delay_length_minus1; 666*c83a76b0SSuyog Pawar 667*c83a76b0SSuyog Pawar /** 668*c83a76b0SSuyog Pawar * if 1, , for the highest temporal sub-layers, the temporal distance between the HRD output times 669*c83a76b0SSuyog Pawar * of consecutive pictures in output order is constrained refer to Table E-6 670*c83a76b0SSuyog Pawar */ 671*c83a76b0SSuyog Pawar UWORD8 au1_fixed_pic_rate_general_flag[VPS_MAX_SUB_LAYERS]; 672*c83a76b0SSuyog Pawar 673*c83a76b0SSuyog Pawar UWORD8 au1_fixed_pic_rate_within_cvs_flag[VPS_MAX_SUB_LAYERS]; 674*c83a76b0SSuyog Pawar 675*c83a76b0SSuyog Pawar /** 676*c83a76b0SSuyog Pawar * if 1, , for the highest temporal sub-layers, the temporal distance (in clock ticks) between the 677*c83a76b0SSuyog Pawar * element units that specify HRD output times of consecutive pictures in output order is constrained 678*c83a76b0SSuyog Pawar * refer to Table E-6 679*c83a76b0SSuyog Pawar */ 680*c83a76b0SSuyog Pawar UWORD16 au2_elemental_duration_in_tc_minus1[VPS_MAX_SUB_LAYERS]; 681*c83a76b0SSuyog Pawar 682*c83a76b0SSuyog Pawar /** 683*c83a76b0SSuyog Pawar * specifies the HRD operational mode 684*c83a76b0SSuyog Pawar */ 685*c83a76b0SSuyog Pawar UWORD8 au1_low_delay_hrd_flag[VPS_MAX_SUB_LAYERS]; 686*c83a76b0SSuyog Pawar 687*c83a76b0SSuyog Pawar /** 688*c83a76b0SSuyog Pawar * 1 specifies the number of alternative CPB specifications in the 689*c83a76b0SSuyog Pawar * bitstream of the cvs when HighestTid is equal to i 690*c83a76b0SSuyog Pawar */ 691*c83a76b0SSuyog Pawar UWORD8 au1_cpb_cnt_minus1[VPS_MAX_SUB_LAYERS]; 692*c83a76b0SSuyog Pawar 693*c83a76b0SSuyog Pawar 694*c83a76b0SSuyog Pawar /** 695*c83a76b0SSuyog Pawar * VUI level Sub-layer HRD parameters 696*c83a76b0SSuyog Pawar */ 697*c83a76b0SSuyog Pawar sub_lyr_hrd_params_t as_sub_layer_hrd_params[VPS_MAX_SUB_LAYERS]; 698*c83a76b0SSuyog Pawar 699*c83a76b0SSuyog Pawar }hrd_params_t; 700*c83a76b0SSuyog Pawar 701*c83a76b0SSuyog Pawar /** 702*c83a76b0SSuyog Pawar * Structure to hold VUI parameters Info 703*c83a76b0SSuyog Pawar */ 704*c83a76b0SSuyog Pawar typedef struct 705*c83a76b0SSuyog Pawar { 706*c83a76b0SSuyog Pawar /** 707*c83a76b0SSuyog Pawar * indicates the presence of aspect_ratio 708*c83a76b0SSuyog Pawar */ 709*c83a76b0SSuyog Pawar UWORD8 u1_aspect_ratio_info_present_flag; 710*c83a76b0SSuyog Pawar 711*c83a76b0SSuyog Pawar /** 712*c83a76b0SSuyog Pawar * specifies the aspect ratio of the luma samples 713*c83a76b0SSuyog Pawar */ 714*c83a76b0SSuyog Pawar UWORD8 u1_aspect_ratio_idc; 715*c83a76b0SSuyog Pawar 716*c83a76b0SSuyog Pawar /** 717*c83a76b0SSuyog Pawar * width of the luma samples. user dependent 718*c83a76b0SSuyog Pawar */ 719*c83a76b0SSuyog Pawar UWORD16 u2_sar_width; 720*c83a76b0SSuyog Pawar 721*c83a76b0SSuyog Pawar /** 722*c83a76b0SSuyog Pawar * hieght of the luma samples. user dependent 723*c83a76b0SSuyog Pawar */ 724*c83a76b0SSuyog Pawar UWORD16 u2_sar_height; 725*c83a76b0SSuyog Pawar 726*c83a76b0SSuyog Pawar /** 727*c83a76b0SSuyog Pawar * if 1, specifies that the overscan_appropriate_flag is present 728*c83a76b0SSuyog Pawar * if 0, the preferred display method for the video signal is unspecified 729*c83a76b0SSuyog Pawar */ 730*c83a76b0SSuyog Pawar UWORD8 u1_overscan_info_present_flag; 731*c83a76b0SSuyog Pawar 732*c83a76b0SSuyog Pawar /** 733*c83a76b0SSuyog Pawar * if 1,indicates that the cropped decoded pictures output 734*c83a76b0SSuyog Pawar * are suitable for display using overscan 735*c83a76b0SSuyog Pawar */ 736*c83a76b0SSuyog Pawar UWORD8 u1_overscan_appropriate_flag; 737*c83a76b0SSuyog Pawar 738*c83a76b0SSuyog Pawar /** 739*c83a76b0SSuyog Pawar * if 1 specifies that video_format, video_full_range_flag and 740*c83a76b0SSuyog Pawar * colour_description_present_flag are present 741*c83a76b0SSuyog Pawar */ 742*c83a76b0SSuyog Pawar UWORD8 u1_video_signal_type_present_flag; 743*c83a76b0SSuyog Pawar 744*c83a76b0SSuyog Pawar /** 745*c83a76b0SSuyog Pawar * 746*c83a76b0SSuyog Pawar */ 747*c83a76b0SSuyog Pawar UWORD8 u1_video_format; 748*c83a76b0SSuyog Pawar 749*c83a76b0SSuyog Pawar /** 750*c83a76b0SSuyog Pawar * indicates the black level and range of the luma and chroma signals 751*c83a76b0SSuyog Pawar */ 752*c83a76b0SSuyog Pawar UWORD8 u1_video_full_range_flag; 753*c83a76b0SSuyog Pawar 754*c83a76b0SSuyog Pawar /** 755*c83a76b0SSuyog Pawar * if 1,to 1 specifies that colour_primaries, transfer_characteristics 756*c83a76b0SSuyog Pawar * and matrix_coefficients are present 757*c83a76b0SSuyog Pawar */ 758*c83a76b0SSuyog Pawar UWORD8 u1_colour_description_present_flag; 759*c83a76b0SSuyog Pawar 760*c83a76b0SSuyog Pawar /** 761*c83a76b0SSuyog Pawar * indicates the chromaticity coordinates of the source primaries 762*c83a76b0SSuyog Pawar */ 763*c83a76b0SSuyog Pawar UWORD8 u1_colour_primaries; 764*c83a76b0SSuyog Pawar 765*c83a76b0SSuyog Pawar /** 766*c83a76b0SSuyog Pawar * indicates the opto-electronic transfer characteristic of the source picture 767*c83a76b0SSuyog Pawar */ 768*c83a76b0SSuyog Pawar UWORD8 u1_transfer_characteristics; 769*c83a76b0SSuyog Pawar 770*c83a76b0SSuyog Pawar /** 771*c83a76b0SSuyog Pawar * the matrix coefficients used in deriving luma and chroma signals 772*c83a76b0SSuyog Pawar * from the green, blue, and red primaries 773*c83a76b0SSuyog Pawar */ 774*c83a76b0SSuyog Pawar UWORD8 u1_matrix_coefficients; 775*c83a76b0SSuyog Pawar 776*c83a76b0SSuyog Pawar /** 777*c83a76b0SSuyog Pawar * if 1, specifies that chroma_sample_loc_type_top_field and 778*c83a76b0SSuyog Pawar * chroma_sample_loc_type_bottom_field are present 779*c83a76b0SSuyog Pawar */ 780*c83a76b0SSuyog Pawar UWORD8 u1_chroma_loc_info_present_flag; 781*c83a76b0SSuyog Pawar 782*c83a76b0SSuyog Pawar /** 783*c83a76b0SSuyog Pawar * location of chroma samples 784*c83a76b0SSuyog Pawar */ 785*c83a76b0SSuyog Pawar UWORD8 u1_chroma_sample_loc_type_top_field; 786*c83a76b0SSuyog Pawar 787*c83a76b0SSuyog Pawar UWORD8 u1_chroma_sample_loc_type_bottom_field; 788*c83a76b0SSuyog Pawar 789*c83a76b0SSuyog Pawar /** 790*c83a76b0SSuyog Pawar * if 1, indicates that the value of all decoded chroma samples is 791*c83a76b0SSuyog Pawar * equal to 1 << ( BitDepthC - 1 ) 792*c83a76b0SSuyog Pawar */ 793*c83a76b0SSuyog Pawar UWORD8 u1_neutral_chroma_indication_flag; 794*c83a76b0SSuyog Pawar 795*c83a76b0SSuyog Pawar /** 796*c83a76b0SSuyog Pawar * 1 indicates that the coded video sequence conveys pictures that represent fields 797*c83a76b0SSuyog Pawar * 0 indicates the pictures that represents field 798*c83a76b0SSuyog Pawar */ 799*c83a76b0SSuyog Pawar UWORD8 u1_field_seq_flag; 800*c83a76b0SSuyog Pawar 801*c83a76b0SSuyog Pawar /** 802*c83a76b0SSuyog Pawar * specifies that picture timing SEI messages are present for every picture 803*c83a76b0SSuyog Pawar */ 804*c83a76b0SSuyog Pawar UWORD8 u1_frame_field_info_present_flag; 805*c83a76b0SSuyog Pawar 806*c83a76b0SSuyog Pawar /** 807*c83a76b0SSuyog Pawar * 1 indicates that the default display window parameters follow next in the VUI 808*c83a76b0SSuyog Pawar */ 809*c83a76b0SSuyog Pawar UWORD8 u1_default_display_window_flag; 810*c83a76b0SSuyog Pawar 811*c83a76b0SSuyog Pawar /** 812*c83a76b0SSuyog Pawar * specify the samples of the pictures in the coded video sequence 813*c83a76b0SSuyog Pawar * that are within the default display window, 814*c83a76b0SSuyog Pawar * in terms of a rectangular region specified in picture coordinates for display 815*c83a76b0SSuyog Pawar */ 816*c83a76b0SSuyog Pawar UWORD32 u4_def_disp_win_left_offset; 817*c83a76b0SSuyog Pawar 818*c83a76b0SSuyog Pawar UWORD32 u4_def_disp_win_right_offset; 819*c83a76b0SSuyog Pawar 820*c83a76b0SSuyog Pawar UWORD32 u4_def_disp_win_top_offset; 821*c83a76b0SSuyog Pawar 822*c83a76b0SSuyog Pawar UWORD32 u4_def_disp_win_bottom_offset; 823*c83a76b0SSuyog Pawar 824*c83a76b0SSuyog Pawar /** 825*c83a76b0SSuyog Pawar * to 1 specifies that the syntax structure hrd_parameters is present in the vui_parameters syntax structue 826*c83a76b0SSuyog Pawar */ 827*c83a76b0SSuyog Pawar UWORD8 u1_vui_hrd_parameters_present_flag; 828*c83a76b0SSuyog Pawar 829*c83a76b0SSuyog Pawar /** 830*c83a76b0SSuyog Pawar * VUI level HRD parameters 831*c83a76b0SSuyog Pawar */ 832*c83a76b0SSuyog Pawar hrd_params_t s_vui_hrd_parameters; 833*c83a76b0SSuyog Pawar 834*c83a76b0SSuyog Pawar /** 835*c83a76b0SSuyog Pawar * Indicates the presence of the 836*c83a76b0SSuyog Pawar * num_units_in_ticks, time_scale flag 837*c83a76b0SSuyog Pawar */ 838*c83a76b0SSuyog Pawar UWORD8 u1_vui_timing_info_present_flag; 839*c83a76b0SSuyog Pawar 840*c83a76b0SSuyog Pawar /** 841*c83a76b0SSuyog Pawar * Number of units that 842*c83a76b0SSuyog Pawar * correspond to one increment of the 843*c83a76b0SSuyog Pawar * clock. Indicates the resolution 844*c83a76b0SSuyog Pawar */ 845*c83a76b0SSuyog Pawar UWORD32 u4_vui_num_units_in_tick; 846*c83a76b0SSuyog Pawar 847*c83a76b0SSuyog Pawar /** 848*c83a76b0SSuyog Pawar * The number of time units that pass in one second 849*c83a76b0SSuyog Pawar */ 850*c83a76b0SSuyog Pawar UWORD32 u4_vui_time_scale; 851*c83a76b0SSuyog Pawar /** 852*c83a76b0SSuyog Pawar * if 1, indicates that the POC for each picture in the coded video sequence (cvs) (not the first picture), in decoding order, 853*c83a76b0SSuyog Pawar * is proportional to the output time of the picture relative to that of the first picture in the cvs 854*c83a76b0SSuyog Pawar */ 855*c83a76b0SSuyog Pawar UWORD8 u1_poc_proportional_to_timing_flag; 856*c83a76b0SSuyog Pawar 857*c83a76b0SSuyog Pawar /** 858*c83a76b0SSuyog Pawar * num_ticks_poc_diff_one_minus1 plus 1 specifies the number of clock ticks 859*c83a76b0SSuyog Pawar * corresponding to a difference of poc values equal to 1 860*c83a76b0SSuyog Pawar */ 861*c83a76b0SSuyog Pawar UWORD32 u4_num_ticks_poc_diff_one_minus1; 862*c83a76b0SSuyog Pawar 863*c83a76b0SSuyog Pawar /** 864*c83a76b0SSuyog Pawar * 1, specifies that the following cvs bitstream restriction parameters are present 865*c83a76b0SSuyog Pawar */ 866*c83a76b0SSuyog Pawar UWORD8 u1_bitstream_restriction_flag; 867*c83a76b0SSuyog Pawar 868*c83a76b0SSuyog Pawar /** 869*c83a76b0SSuyog Pawar * if 1, indicates that each pps that is active in the cvs has 870*c83a76b0SSuyog Pawar * the same value of the tile syntax elements 871*c83a76b0SSuyog Pawar */ 872*c83a76b0SSuyog Pawar UWORD8 u1_tiles_fixed_structure_flag; 873*c83a76b0SSuyog Pawar 874*c83a76b0SSuyog Pawar /** 875*c83a76b0SSuyog Pawar * if 0, indicates that no pel outside the pic boundaries and 876*c83a76b0SSuyog Pawar * no sub-pels derived using pels outside the pic boundaries is used for inter prediction 877*c83a76b0SSuyog Pawar */ 878*c83a76b0SSuyog Pawar UWORD8 u1_motion_vectors_over_pic_boundaries_flag; 879*c83a76b0SSuyog Pawar 880*c83a76b0SSuyog Pawar /** 881*c83a76b0SSuyog Pawar * if 1, indicates 882*c83a76b0SSuyog Pawar * all P/B slices belonging to the same pic have an identical refpic list0, 883*c83a76b0SSuyog Pawar * all B slices that belong to the same picture have an identical refpic list1. 884*c83a76b0SSuyog Pawar */ 885*c83a76b0SSuyog Pawar UWORD8 u1_restricted_ref_pic_lists_flag; 886*c83a76b0SSuyog Pawar 887*c83a76b0SSuyog Pawar /** 888*c83a76b0SSuyog Pawar * min_spatial_segmentation_idc, when not equal to 0, establishes a bound on the maximum possible size of distinct 889*c83a76b0SSuyog Pawar * coded spatial segmentation regions in the pictures of the CVS. When min_spatial_segmentation_idc is not present, it is 890*c83a76b0SSuyog Pawar * inferred to be equal to 0. The value of min_spatial_segmentation_idc shall be in the range of 0 to 4095, inclusive. 891*c83a76b0SSuyog Pawar * 892*c83a76b0SSuyog Pawar * can be used by a decoder to calculate the maximum number of luma samples to be processed by one processing thread 893*c83a76b0SSuyog Pawar * 894*c83a76b0SSuyog Pawar * If tiles=0 and entropy_sync=0 then 895*c83a76b0SSuyog Pawar * no slice shall exceed ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4 luma samples 896*c83a76b0SSuyog Pawar * 897*c83a76b0SSuyog Pawar * If tiles=1 and entropy_sync=0 then 898*c83a76b0SSuyog Pawar * no tile shall exceed ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4 luma samples 899*c83a76b0SSuyog Pawar * 900*c83a76b0SSuyog Pawar * If tiles=0 and entropy_sync=1 then 901*c83a76b0SSuyog Pawar * ( 2 * pic_height_in_luma_samples + pic_width_in_luma_samples ) * CtbSizeY 902*c83a76b0SSuyog Pawar * <= ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4 903*c83a76b0SSuyog Pawar */ 904*c83a76b0SSuyog Pawar UWORD32 u4_min_spatial_segmentation_idc; 905*c83a76b0SSuyog Pawar /** 906*c83a76b0SSuyog Pawar * Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units 907*c83a76b0SSuyog Pawar * associated with any coded picture 908*c83a76b0SSuyog Pawar */ 909*c83a76b0SSuyog Pawar UWORD8 u1_max_bytes_per_pic_denom; 910*c83a76b0SSuyog Pawar 911*c83a76b0SSuyog Pawar /** 912*c83a76b0SSuyog Pawar * Indicates an upper bound for the number of bits of coding_unit() data 913*c83a76b0SSuyog Pawar */ 914*c83a76b0SSuyog Pawar UWORD8 u1_max_bits_per_mincu_denom; 915*c83a76b0SSuyog Pawar 916*c83a76b0SSuyog Pawar /** 917*c83a76b0SSuyog Pawar * Indicate the maximum absolute value of a decoded horizontal MV component 918*c83a76b0SSuyog Pawar * in quarter-pel luma units 919*c83a76b0SSuyog Pawar */ 920*c83a76b0SSuyog Pawar UWORD8 u1_log2_max_mv_length_horizontal; 921*c83a76b0SSuyog Pawar 922*c83a76b0SSuyog Pawar /** 923*c83a76b0SSuyog Pawar * Indicate the maximum absolute value of a decoded vertical MV component 924*c83a76b0SSuyog Pawar * in quarter-pel luma units 925*c83a76b0SSuyog Pawar */ 926*c83a76b0SSuyog Pawar UWORD8 u1_log2_max_mv_length_vertical; 927*c83a76b0SSuyog Pawar }vui_t; 928*c83a76b0SSuyog Pawar 929*c83a76b0SSuyog Pawar /** 930*c83a76b0SSuyog Pawar * Picture buffer 931*c83a76b0SSuyog Pawar */ 932*c83a76b0SSuyog Pawar typedef struct 933*c83a76b0SSuyog Pawar { 934*c83a76b0SSuyog Pawar UWORD8 *pu1_luma; 935*c83a76b0SSuyog Pawar UWORD8 *pu1_chroma; 936*c83a76b0SSuyog Pawar 937*c83a76b0SSuyog Pawar WORD32 i4_abs_poc; 938*c83a76b0SSuyog Pawar WORD32 i4_poc_lsb; 939*c83a76b0SSuyog Pawar /** Used to store display Timestamp for current buffer */ 940*c83a76b0SSuyog Pawar WORD32 u4_ts; 941*c83a76b0SSuyog Pawar UWORD8 u1_used_as_ref; 942*c83a76b0SSuyog Pawar 943*c83a76b0SSuyog Pawar /** Used to idicate if this buffer needed for output */ 944*c83a76b0SSuyog Pawar UWORD8 u1_pic_output_flag; 945*c83a76b0SSuyog Pawar 946*c83a76b0SSuyog Pawar UWORD8 u1_free_delay_cnt; 947*c83a76b0SSuyog Pawar 948*c83a76b0SSuyog Pawar /** 949*c83a76b0SSuyog Pawar * buffer ID from buffer manager 950*c83a76b0SSuyog Pawar */ 951*c83a76b0SSuyog Pawar UWORD8 u1_buf_id; 952*c83a76b0SSuyog Pawar 953*c83a76b0SSuyog Pawar 954*c83a76b0SSuyog Pawar // See IV_FLD_TYPE_T for all field types 955*c83a76b0SSuyog Pawar UWORD32 e4_fld_type; 956*c83a76b0SSuyog Pawar 957*c83a76b0SSuyog Pawar #ifndef DISABLE_SEI 958*c83a76b0SSuyog Pawar sei_params_t s_sei_params; 959*c83a76b0SSuyog Pawar #endif 960*c83a76b0SSuyog Pawar 961*c83a76b0SSuyog Pawar WORD32 i4_vui_present; 962*c83a76b0SSuyog Pawar 963*c83a76b0SSuyog Pawar vui_t s_vui; 964*c83a76b0SSuyog Pawar 965*c83a76b0SSuyog Pawar }pic_buf_t; 966*c83a76b0SSuyog Pawar 967*c83a76b0SSuyog Pawar 968*c83a76b0SSuyog Pawar /** 969*c83a76b0SSuyog Pawar * Reference List 970*c83a76b0SSuyog Pawar */ 971*c83a76b0SSuyog Pawar typedef struct 972*c83a76b0SSuyog Pawar { 973*c83a76b0SSuyog Pawar void *pv_pic_buf; 974*c83a76b0SSuyog Pawar 975*c83a76b0SSuyog Pawar void *pv_mv_buf; 976*c83a76b0SSuyog Pawar 977*c83a76b0SSuyog Pawar UWORD8 u1_used_as_ref; 978*c83a76b0SSuyog Pawar 979*c83a76b0SSuyog Pawar }ref_list_t; 980*c83a76b0SSuyog Pawar 981*c83a76b0SSuyog Pawar 982*c83a76b0SSuyog Pawar /** 983*c83a76b0SSuyog Pawar * SAO 984*c83a76b0SSuyog Pawar */ 985*c83a76b0SSuyog Pawar typedef struct 986*c83a76b0SSuyog Pawar { 987*c83a76b0SSuyog Pawar /** 988*c83a76b0SSuyog Pawar * sao_type_idx_luma 989*c83a76b0SSuyog Pawar */ 990*c83a76b0SSuyog Pawar UWORD32 b3_y_type_idx : 3; 991*c83a76b0SSuyog Pawar 992*c83a76b0SSuyog Pawar /** 993*c83a76b0SSuyog Pawar * luma SaoOffsetVal[1] 994*c83a76b0SSuyog Pawar */ 995*c83a76b0SSuyog Pawar WORD32 b4_y_offset_1 : 4; 996*c83a76b0SSuyog Pawar 997*c83a76b0SSuyog Pawar /** 998*c83a76b0SSuyog Pawar * luma SaoOffsetVal[2] 999*c83a76b0SSuyog Pawar */ 1000*c83a76b0SSuyog Pawar WORD32 b4_y_offset_2 : 4; 1001*c83a76b0SSuyog Pawar 1002*c83a76b0SSuyog Pawar /** 1003*c83a76b0SSuyog Pawar * luma SaoOffsetVal[3] 1004*c83a76b0SSuyog Pawar */ 1005*c83a76b0SSuyog Pawar WORD32 b4_y_offset_3 : 4; 1006*c83a76b0SSuyog Pawar 1007*c83a76b0SSuyog Pawar /** 1008*c83a76b0SSuyog Pawar * luma SaoOffsetVal[4] 1009*c83a76b0SSuyog Pawar */ 1010*c83a76b0SSuyog Pawar WORD32 b4_y_offset_4 : 4; 1011*c83a76b0SSuyog Pawar 1012*c83a76b0SSuyog Pawar /** 1013*c83a76b0SSuyog Pawar * luma sao_band_position 1014*c83a76b0SSuyog Pawar */ 1015*c83a76b0SSuyog Pawar UWORD32 b5_y_band_pos : 5; 1016*c83a76b0SSuyog Pawar 1017*c83a76b0SSuyog Pawar WORD32 : 0; 1018*c83a76b0SSuyog Pawar 1019*c83a76b0SSuyog Pawar /** 1020*c83a76b0SSuyog Pawar * sao_type_idx_chroma 1021*c83a76b0SSuyog Pawar */ 1022*c83a76b0SSuyog Pawar UWORD32 b3_cb_type_idx : 3; 1023*c83a76b0SSuyog Pawar 1024*c83a76b0SSuyog Pawar /** 1025*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[1] 1026*c83a76b0SSuyog Pawar */ 1027*c83a76b0SSuyog Pawar WORD32 b4_cb_offset_1 : 4; 1028*c83a76b0SSuyog Pawar 1029*c83a76b0SSuyog Pawar /** 1030*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[2] 1031*c83a76b0SSuyog Pawar */ 1032*c83a76b0SSuyog Pawar WORD32 b4_cb_offset_2 : 4; 1033*c83a76b0SSuyog Pawar 1034*c83a76b0SSuyog Pawar /** 1035*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[3] 1036*c83a76b0SSuyog Pawar */ 1037*c83a76b0SSuyog Pawar WORD32 b4_cb_offset_3 : 4; 1038*c83a76b0SSuyog Pawar 1039*c83a76b0SSuyog Pawar /** 1040*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[4] 1041*c83a76b0SSuyog Pawar */ 1042*c83a76b0SSuyog Pawar WORD32 b4_cb_offset_4 : 4; 1043*c83a76b0SSuyog Pawar 1044*c83a76b0SSuyog Pawar /** 1045*c83a76b0SSuyog Pawar * cb sao_band_position 1046*c83a76b0SSuyog Pawar */ 1047*c83a76b0SSuyog Pawar UWORD32 b5_cb_band_pos : 5; 1048*c83a76b0SSuyog Pawar 1049*c83a76b0SSuyog Pawar WORD32 : 0; 1050*c83a76b0SSuyog Pawar 1051*c83a76b0SSuyog Pawar /** 1052*c83a76b0SSuyog Pawar * sao_type_idx_chroma 1053*c83a76b0SSuyog Pawar */ 1054*c83a76b0SSuyog Pawar UWORD32 b3_cr_type_idx : 3; 1055*c83a76b0SSuyog Pawar 1056*c83a76b0SSuyog Pawar /** 1057*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[1] 1058*c83a76b0SSuyog Pawar */ 1059*c83a76b0SSuyog Pawar WORD32 b4_cr_offset_1 : 4; 1060*c83a76b0SSuyog Pawar 1061*c83a76b0SSuyog Pawar /** 1062*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[2] 1063*c83a76b0SSuyog Pawar */ 1064*c83a76b0SSuyog Pawar WORD32 b4_cr_offset_2 : 4; 1065*c83a76b0SSuyog Pawar 1066*c83a76b0SSuyog Pawar /** 1067*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[3] 1068*c83a76b0SSuyog Pawar */ 1069*c83a76b0SSuyog Pawar WORD32 b4_cr_offset_3 : 4; 1070*c83a76b0SSuyog Pawar 1071*c83a76b0SSuyog Pawar /** 1072*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[4] 1073*c83a76b0SSuyog Pawar */ 1074*c83a76b0SSuyog Pawar WORD32 b4_cr_offset_4 : 4; 1075*c83a76b0SSuyog Pawar 1076*c83a76b0SSuyog Pawar /** 1077*c83a76b0SSuyog Pawar * cr sao_band_position 1078*c83a76b0SSuyog Pawar */ 1079*c83a76b0SSuyog Pawar UWORD32 b5_cr_band_pos : 5; 1080*c83a76b0SSuyog Pawar 1081*c83a76b0SSuyog Pawar WORD32 : 0; 1082*c83a76b0SSuyog Pawar 1083*c83a76b0SSuyog Pawar }sao_t; 1084*c83a76b0SSuyog Pawar 1085*c83a76b0SSuyog Pawar /** 1086*c83a76b0SSuyog Pawar * SAO 1087*c83a76b0SSuyog Pawar */ 1088*c83a76b0SSuyog Pawar typedef struct 1089*c83a76b0SSuyog Pawar { 1090*c83a76b0SSuyog Pawar /** 1091*c83a76b0SSuyog Pawar * sao_type_idx_luma 1092*c83a76b0SSuyog Pawar */ 1093*c83a76b0SSuyog Pawar UWORD32 b3_y_type_idx : 3; 1094*c83a76b0SSuyog Pawar 1095*c83a76b0SSuyog Pawar /** 1096*c83a76b0SSuyog Pawar * luma SaoOffsetVal[1] 1097*c83a76b0SSuyog Pawar */ 1098*c83a76b0SSuyog Pawar WORD32 b8_y_offset_1 : 8; 1099*c83a76b0SSuyog Pawar 1100*c83a76b0SSuyog Pawar /** 1101*c83a76b0SSuyog Pawar * luma SaoOffsetVal[2] 1102*c83a76b0SSuyog Pawar */ 1103*c83a76b0SSuyog Pawar WORD32 b8_y_offset_2 : 8; 1104*c83a76b0SSuyog Pawar 1105*c83a76b0SSuyog Pawar /** 1106*c83a76b0SSuyog Pawar * luma SaoOffsetVal[3] 1107*c83a76b0SSuyog Pawar */ 1108*c83a76b0SSuyog Pawar WORD32 b8_y_offset_3 : 8; 1109*c83a76b0SSuyog Pawar 1110*c83a76b0SSuyog Pawar /** 1111*c83a76b0SSuyog Pawar * luma SaoOffsetVal[4] 1112*c83a76b0SSuyog Pawar */ 1113*c83a76b0SSuyog Pawar WORD32 b8_y_offset_4 : 8; 1114*c83a76b0SSuyog Pawar 1115*c83a76b0SSuyog Pawar /** 1116*c83a76b0SSuyog Pawar * luma sao_band_position 1117*c83a76b0SSuyog Pawar */ 1118*c83a76b0SSuyog Pawar UWORD32 b5_y_band_pos : 5; 1119*c83a76b0SSuyog Pawar 1120*c83a76b0SSuyog Pawar WORD32 : 0; 1121*c83a76b0SSuyog Pawar 1122*c83a76b0SSuyog Pawar /** 1123*c83a76b0SSuyog Pawar * sao_type_idx_chroma 1124*c83a76b0SSuyog Pawar */ 1125*c83a76b0SSuyog Pawar UWORD32 b3_cb_type_idx : 3; 1126*c83a76b0SSuyog Pawar 1127*c83a76b0SSuyog Pawar /** 1128*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[1] 1129*c83a76b0SSuyog Pawar */ 1130*c83a76b0SSuyog Pawar WORD32 b8_cb_offset_1 : 8; 1131*c83a76b0SSuyog Pawar 1132*c83a76b0SSuyog Pawar /** 1133*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[2] 1134*c83a76b0SSuyog Pawar */ 1135*c83a76b0SSuyog Pawar WORD32 b8_cb_offset_2 : 8; 1136*c83a76b0SSuyog Pawar 1137*c83a76b0SSuyog Pawar /** 1138*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[3] 1139*c83a76b0SSuyog Pawar */ 1140*c83a76b0SSuyog Pawar WORD32 b8_cb_offset_3 : 8; 1141*c83a76b0SSuyog Pawar 1142*c83a76b0SSuyog Pawar /** 1143*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[4] 1144*c83a76b0SSuyog Pawar */ 1145*c83a76b0SSuyog Pawar WORD32 b8_cb_offset_4 : 8; 1146*c83a76b0SSuyog Pawar 1147*c83a76b0SSuyog Pawar /** 1148*c83a76b0SSuyog Pawar * cb sao_band_position 1149*c83a76b0SSuyog Pawar */ 1150*c83a76b0SSuyog Pawar UWORD32 b5_cb_band_pos : 5; 1151*c83a76b0SSuyog Pawar 1152*c83a76b0SSuyog Pawar WORD32 : 0; 1153*c83a76b0SSuyog Pawar 1154*c83a76b0SSuyog Pawar /** 1155*c83a76b0SSuyog Pawar * sao_type_idx_chroma 1156*c83a76b0SSuyog Pawar */ 1157*c83a76b0SSuyog Pawar UWORD32 b3_cr_type_idx : 3; 1158*c83a76b0SSuyog Pawar 1159*c83a76b0SSuyog Pawar /** 1160*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[1] 1161*c83a76b0SSuyog Pawar */ 1162*c83a76b0SSuyog Pawar WORD32 b8_cr_offset_1 : 8; 1163*c83a76b0SSuyog Pawar 1164*c83a76b0SSuyog Pawar /** 1165*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[2] 1166*c83a76b0SSuyog Pawar */ 1167*c83a76b0SSuyog Pawar WORD32 b8_cr_offset_2 : 8; 1168*c83a76b0SSuyog Pawar 1169*c83a76b0SSuyog Pawar /** 1170*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[3] 1171*c83a76b0SSuyog Pawar */ 1172*c83a76b0SSuyog Pawar WORD32 b8_cr_offset_3 : 8; 1173*c83a76b0SSuyog Pawar 1174*c83a76b0SSuyog Pawar /** 1175*c83a76b0SSuyog Pawar * chroma SaoOffsetVal[4] 1176*c83a76b0SSuyog Pawar */ 1177*c83a76b0SSuyog Pawar WORD32 b8_cr_offset_4 : 8; 1178*c83a76b0SSuyog Pawar 1179*c83a76b0SSuyog Pawar /** 1180*c83a76b0SSuyog Pawar * cr sao_band_position 1181*c83a76b0SSuyog Pawar */ 1182*c83a76b0SSuyog Pawar UWORD32 b5_cr_band_pos : 5; 1183*c83a76b0SSuyog Pawar 1184*c83a76b0SSuyog Pawar WORD32 : 0; 1185*c83a76b0SSuyog Pawar 1186*c83a76b0SSuyog Pawar }sao_10bd_t; 1187*c83a76b0SSuyog Pawar 1188*c83a76b0SSuyog Pawar /** 1189*c83a76b0SSuyog Pawar * Motion vector 1190*c83a76b0SSuyog Pawar */ 1191*c83a76b0SSuyog Pawar typedef struct 1192*c83a76b0SSuyog Pawar { 1193*c83a76b0SSuyog Pawar /** 1194*c83a76b0SSuyog Pawar * Horizontal Motion Vector 1195*c83a76b0SSuyog Pawar */ 1196*c83a76b0SSuyog Pawar WORD16 i2_mvx; 1197*c83a76b0SSuyog Pawar 1198*c83a76b0SSuyog Pawar /** 1199*c83a76b0SSuyog Pawar * Vertical Motion Vector 1200*c83a76b0SSuyog Pawar */ 1201*c83a76b0SSuyog Pawar WORD16 i2_mvy; 1202*c83a76b0SSuyog Pawar }mv_t; 1203*c83a76b0SSuyog Pawar 1204*c83a76b0SSuyog Pawar /*****************************************************************************/ 1205*c83a76b0SSuyog Pawar /* Following results in packed 48 bit structure. If mv_t included */ 1206*c83a76b0SSuyog Pawar /* ref_pic_buf_id, then 8 bits will be wasted for each mv for aligning. */ 1207*c83a76b0SSuyog Pawar /* Also using mv_t as elements directly instead of a pointer to l0 and l1 */ 1208*c83a76b0SSuyog Pawar /* mvs. Since pointer takes 4 bytes and MV itself is 4 bytes. It does not */ 1209*c83a76b0SSuyog Pawar /* really help using pointers. */ 1210*c83a76b0SSuyog Pawar /*****************************************************************************/ 1211*c83a76b0SSuyog Pawar 1212*c83a76b0SSuyog Pawar /** 1213*c83a76b0SSuyog Pawar * PU Motion Vector info 1214*c83a76b0SSuyog Pawar */ 1215*c83a76b0SSuyog Pawar typedef struct 1216*c83a76b0SSuyog Pawar { 1217*c83a76b0SSuyog Pawar /** 1218*c83a76b0SSuyog Pawar * L0 Motion Vector 1219*c83a76b0SSuyog Pawar */ 1220*c83a76b0SSuyog Pawar mv_t s_l0_mv; 1221*c83a76b0SSuyog Pawar 1222*c83a76b0SSuyog Pawar /** 1223*c83a76b0SSuyog Pawar * L1 Motion Vector 1224*c83a76b0SSuyog Pawar */ 1225*c83a76b0SSuyog Pawar mv_t s_l1_mv; 1226*c83a76b0SSuyog Pawar 1227*c83a76b0SSuyog Pawar /** 1228*c83a76b0SSuyog Pawar * L0 Ref index 1229*c83a76b0SSuyog Pawar */ 1230*c83a76b0SSuyog Pawar WORD8 i1_l0_ref_idx; 1231*c83a76b0SSuyog Pawar 1232*c83a76b0SSuyog Pawar /** 1233*c83a76b0SSuyog Pawar * L1 Ref index 1234*c83a76b0SSuyog Pawar */ 1235*c83a76b0SSuyog Pawar WORD8 i1_l1_ref_idx; 1236*c83a76b0SSuyog Pawar 1237*c83a76b0SSuyog Pawar /** 1238*c83a76b0SSuyog Pawar * L0 Ref Pic Buf ID 1239*c83a76b0SSuyog Pawar */ 1240*c83a76b0SSuyog Pawar WORD8 i1_l0_ref_pic_buf_id; 1241*c83a76b0SSuyog Pawar 1242*c83a76b0SSuyog Pawar /** 1243*c83a76b0SSuyog Pawar * L1 Ref Pic Buf ID 1244*c83a76b0SSuyog Pawar */ 1245*c83a76b0SSuyog Pawar WORD8 i1_l1_ref_pic_buf_id; 1246*c83a76b0SSuyog Pawar 1247*c83a76b0SSuyog Pawar }pu_mv_t; 1248*c83a76b0SSuyog Pawar 1249*c83a76b0SSuyog Pawar /** 1250*c83a76b0SSuyog Pawar * PU information 1251*c83a76b0SSuyog Pawar */ 1252*c83a76b0SSuyog Pawar typedef struct 1253*c83a76b0SSuyog Pawar { 1254*c83a76b0SSuyog Pawar 1255*c83a76b0SSuyog Pawar /** 1256*c83a76b0SSuyog Pawar * PU motion vectors 1257*c83a76b0SSuyog Pawar */ 1258*c83a76b0SSuyog Pawar pu_mv_t mv; 1259*c83a76b0SSuyog Pawar 1260*c83a76b0SSuyog Pawar /** 1261*c83a76b0SSuyog Pawar * PU X position in terms of min PU (4x4) units 1262*c83a76b0SSuyog Pawar */ 1263*c83a76b0SSuyog Pawar UWORD32 b4_pos_x : 4; 1264*c83a76b0SSuyog Pawar 1265*c83a76b0SSuyog Pawar /** 1266*c83a76b0SSuyog Pawar * PU Y position in terms of min PU (4x4) units 1267*c83a76b0SSuyog Pawar */ 1268*c83a76b0SSuyog Pawar UWORD32 b4_pos_y : 4; 1269*c83a76b0SSuyog Pawar 1270*c83a76b0SSuyog Pawar /** 1271*c83a76b0SSuyog Pawar * PU width in pixels = (b4_wd + 1) << 2 1272*c83a76b0SSuyog Pawar */ 1273*c83a76b0SSuyog Pawar UWORD32 b4_wd : 4; 1274*c83a76b0SSuyog Pawar 1275*c83a76b0SSuyog Pawar /** 1276*c83a76b0SSuyog Pawar * PU height in pixels = (b4_ht + 1) << 2 1277*c83a76b0SSuyog Pawar */ 1278*c83a76b0SSuyog Pawar UWORD32 b4_ht : 4; 1279*c83a76b0SSuyog Pawar 1280*c83a76b0SSuyog Pawar /** 1281*c83a76b0SSuyog Pawar * Intra or Inter flag for each partition - 0 or 1 1282*c83a76b0SSuyog Pawar */ 1283*c83a76b0SSuyog Pawar UWORD32 b1_intra_flag : 1; 1284*c83a76b0SSuyog Pawar 1285*c83a76b0SSuyog Pawar 1286*c83a76b0SSuyog Pawar /** 1287*c83a76b0SSuyog Pawar * PRED_L0, PRED_L1, PRED_BI - Initialized in parsing only for MVP case 1288*c83a76b0SSuyog Pawar */ 1289*c83a76b0SSuyog Pawar UWORD32 b2_pred_mode : 2; 1290*c83a76b0SSuyog Pawar 1291*c83a76b0SSuyog Pawar 1292*c83a76b0SSuyog Pawar /** 1293*c83a76b0SSuyog Pawar * Merge flag for each partition - 0 or 1 1294*c83a76b0SSuyog Pawar */ 1295*c83a76b0SSuyog Pawar UWORD32 b1_merge_flag : 1; 1296*c83a76b0SSuyog Pawar 1297*c83a76b0SSuyog Pawar /** 1298*c83a76b0SSuyog Pawar * Merge index for each partition - 0 to 4 1299*c83a76b0SSuyog Pawar */ 1300*c83a76b0SSuyog Pawar UWORD32 b3_merge_idx : 3; 1301*c83a76b0SSuyog Pawar 1302*c83a76b0SSuyog Pawar /*************************************************************************/ 1303*c83a76b0SSuyog Pawar /* Following two flags can be overloaded with b3_merge_idx if there */ 1304*c83a76b0SSuyog Pawar /* is need for additional bits */ 1305*c83a76b0SSuyog Pawar /*************************************************************************/ 1306*c83a76b0SSuyog Pawar 1307*c83a76b0SSuyog Pawar /** 1308*c83a76b0SSuyog Pawar * If merge is zero, following gives presence of mvd for L0 MV 1309*c83a76b0SSuyog Pawar */ 1310*c83a76b0SSuyog Pawar UWORD32 b1_l0_mvp_idx : 1; 1311*c83a76b0SSuyog Pawar 1312*c83a76b0SSuyog Pawar /** 1313*c83a76b0SSuyog Pawar * If merge is zero, following gives presence of mvd for L1 MV 1314*c83a76b0SSuyog Pawar */ 1315*c83a76b0SSuyog Pawar UWORD32 b1_l1_mvp_idx : 1; 1316*c83a76b0SSuyog Pawar 1317*c83a76b0SSuyog Pawar /** 1318*c83a76b0SSuyog Pawar * Partition mode - Needed during MV merge stage 1319*c83a76b0SSuyog Pawar * Note: Part mode can be derived using pu_wd, pu_ht and minCB size 1320*c83a76b0SSuyog Pawar * If there is a need for bits, the following can be removed at the cost 1321*c83a76b0SSuyog Pawar * of more control code in MV Merge 1322*c83a76b0SSuyog Pawar */ 1323*c83a76b0SSuyog Pawar UWORD32 b3_part_mode : 3; 1324*c83a76b0SSuyog Pawar 1325*c83a76b0SSuyog Pawar /** 1326*c83a76b0SSuyog Pawar * Partition index - Needed during MV merge stage 1327*c83a76b0SSuyog Pawar */ 1328*c83a76b0SSuyog Pawar UWORD32 b2_part_idx : 2; 1329*c83a76b0SSuyog Pawar 1330*c83a76b0SSuyog Pawar }pu_t; 1331*c83a76b0SSuyog Pawar 1332*c83a76b0SSuyog Pawar /** 1333*c83a76b0SSuyog Pawar * TU information 1334*c83a76b0SSuyog Pawar */ 1335*c83a76b0SSuyog Pawar typedef struct 1336*c83a76b0SSuyog Pawar { 1337*c83a76b0SSuyog Pawar /** 1338*c83a76b0SSuyog Pawar * TU X position in terms of min TU (4x4) units 1339*c83a76b0SSuyog Pawar */ 1340*c83a76b0SSuyog Pawar UWORD32 b4_pos_x : 4; 1341*c83a76b0SSuyog Pawar 1342*c83a76b0SSuyog Pawar /** 1343*c83a76b0SSuyog Pawar * TU Y position in terms of min TU (4x4) units 1344*c83a76b0SSuyog Pawar */ 1345*c83a76b0SSuyog Pawar UWORD32 b4_pos_y : 4; 1346*c83a76b0SSuyog Pawar 1347*c83a76b0SSuyog Pawar /*************************************************************************/ 1348*c83a76b0SSuyog Pawar /* Luma TU size (width or height) = 1 << (b3_size + 2) */ 1349*c83a76b0SSuyog Pawar /* i.e. 0 : 4, 1 : 8, 2: 16, 3: 32, 4: 64 */ 1350*c83a76b0SSuyog Pawar /* Note: Though 64 x 64 TU is not possible, this size is supported to */ 1351*c83a76b0SSuyog Pawar /* signal SKIP CUs or PCM CUs etc where transform is not called */ 1352*c83a76b0SSuyog Pawar /* Chroma width will be half of luma except for 4x4 luma */ 1353*c83a76b0SSuyog Pawar /*************************************************************************/ 1354*c83a76b0SSuyog Pawar /** 1355*c83a76b0SSuyog Pawar * Luma TU size (width or height) 1356*c83a76b0SSuyog Pawar */ 1357*c83a76b0SSuyog Pawar UWORD32 b3_size : 3; //To be changed. 1358*c83a76b0SSuyog Pawar 1359*c83a76b0SSuyog Pawar /*************************************************************************/ 1360*c83a76b0SSuyog Pawar /* Chroma present : For 4x4 Luma TUs only the fourth one contains Cb */ 1361*c83a76b0SSuyog Pawar /* Cr info. For the first three TUs in 8x8 (for 4x4 luma) this will */ 1362*c83a76b0SSuyog Pawar /* be zero. For all the other cases this will be 1 */ 1363*c83a76b0SSuyog Pawar /*************************************************************************/ 1364*c83a76b0SSuyog Pawar /** 1365*c83a76b0SSuyog Pawar * 4x4 Luma TUs only the fourth one contains cb,cr 1366*c83a76b0SSuyog Pawar * TODO: Check if this is really needed, cb_cbf and cr_cbf should be enough 1367*c83a76b0SSuyog Pawar */ 1368*c83a76b0SSuyog Pawar 1369*c83a76b0SSuyog Pawar /** 1370*c83a76b0SSuyog Pawar * Y CBF 1371*c83a76b0SSuyog Pawar */ 1372*c83a76b0SSuyog Pawar UWORD32 b1_y_cbf : 1; 1373*c83a76b0SSuyog Pawar 1374*c83a76b0SSuyog Pawar /** 1375*c83a76b0SSuyog Pawar * Cb CBF 1376*c83a76b0SSuyog Pawar */ 1377*c83a76b0SSuyog Pawar UWORD32 b1_cb_cbf : 1; 1378*c83a76b0SSuyog Pawar 1379*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE 1380*c83a76b0SSuyog Pawar UWORD32 b1_cb_cbf_subtu1 : 1; 1381*c83a76b0SSuyog Pawar #endif 1382*c83a76b0SSuyog Pawar 1383*c83a76b0SSuyog Pawar /** 1384*c83a76b0SSuyog Pawar * Cr CBF 1385*c83a76b0SSuyog Pawar */ 1386*c83a76b0SSuyog Pawar UWORD32 b1_cr_cbf : 1; 1387*c83a76b0SSuyog Pawar 1388*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE 1389*c83a76b0SSuyog Pawar UWORD32 b1_cr_cbf_subtu1 : 1; 1390*c83a76b0SSuyog Pawar #endif 1391*c83a76b0SSuyog Pawar 1392*c83a76b0SSuyog Pawar /** 1393*c83a76b0SSuyog Pawar * Flag to indicate if it is the first TU in a CU 1394*c83a76b0SSuyog Pawar */ 1395*c83a76b0SSuyog Pawar UWORD32 b1_first_tu_in_cu : 1; 1396*c83a76b0SSuyog Pawar 1397*c83a76b0SSuyog Pawar /** 1398*c83a76b0SSuyog Pawar * Transform quant bypass flag 1399*c83a76b0SSuyog Pawar */ 1400*c83a76b0SSuyog Pawar UWORD32 b1_transquant_bypass : 1; 1401*c83a76b0SSuyog Pawar 1402*c83a76b0SSuyog Pawar /** 1403*c83a76b0SSuyog Pawar * Y Qp 1404*c83a76b0SSuyog Pawar */ 1405*c83a76b0SSuyog Pawar //UWORD32 b6_qp : 6; // BUG_FIX related to nighbour QP's in case of negative QP for HBD. 1406*c83a76b0SSuyog Pawar WORD32 b7_qp : 7; 1407*c83a76b0SSuyog Pawar 1408*c83a76b0SSuyog Pawar 1409*c83a76b0SSuyog Pawar /** 1410*c83a76b0SSuyog Pawar * Luma Intra Mode 0 - 34 1411*c83a76b0SSuyog Pawar */ 1412*c83a76b0SSuyog Pawar UWORD32 b6_luma_intra_mode : 6; 1413*c83a76b0SSuyog Pawar 1414*c83a76b0SSuyog Pawar /*************************************************************************/ 1415*c83a76b0SSuyog Pawar /* Chroma Intra Mode Index 0 - 4: Actual mode (0, 1, 10, 26, 34, X) to be*/ 1416*c83a76b0SSuyog Pawar /* derived using luma_intra_mode and the following */ 1417*c83a76b0SSuyog Pawar /*************************************************************************/ 1418*c83a76b0SSuyog Pawar /** 1419*c83a76b0SSuyog Pawar * Chroma Intra Mode Index 0 - 4 1420*c83a76b0SSuyog Pawar */ 1421*c83a76b0SSuyog Pawar UWORD32 b3_chroma_intra_mode_idx : 3; 1422*c83a76b0SSuyog Pawar 1423*c83a76b0SSuyog Pawar }tu_t; 1424*c83a76b0SSuyog Pawar 1425*c83a76b0SSuyog Pawar /** 1426*c83a76b0SSuyog Pawar * CU information 1427*c83a76b0SSuyog Pawar */ 1428*c83a76b0SSuyog Pawar typedef struct 1429*c83a76b0SSuyog Pawar { 1430*c83a76b0SSuyog Pawar 1431*c83a76b0SSuyog Pawar /** 1432*c83a76b0SSuyog Pawar * CU X position in terms of min CU (8x8) units 1433*c83a76b0SSuyog Pawar */ 1434*c83a76b0SSuyog Pawar UWORD32 b3_cu_pos_x :3; 1435*c83a76b0SSuyog Pawar 1436*c83a76b0SSuyog Pawar /** 1437*c83a76b0SSuyog Pawar * CU Y position in terms of min CU (8x8) units 1438*c83a76b0SSuyog Pawar */ 1439*c83a76b0SSuyog Pawar UWORD32 b3_cu_pos_y :3; 1440*c83a76b0SSuyog Pawar 1441*c83a76b0SSuyog Pawar /** 1442*c83a76b0SSuyog Pawar * CU size in terms of min CU (8x8) units 1443*c83a76b0SSuyog Pawar */ 1444*c83a76b0SSuyog Pawar UWORD32 b4_cu_size :4; 1445*c83a76b0SSuyog Pawar 1446*c83a76b0SSuyog Pawar /** 1447*c83a76b0SSuyog Pawar * transquant bypass flag ; 0 for this encoder 1448*c83a76b0SSuyog Pawar */ 1449*c83a76b0SSuyog Pawar UWORD32 b1_tq_bypass_flag :1; 1450*c83a76b0SSuyog Pawar 1451*c83a76b0SSuyog Pawar /** 1452*c83a76b0SSuyog Pawar * CU skip flag 1453*c83a76b0SSuyog Pawar */ 1454*c83a76b0SSuyog Pawar UWORD32 b1_skip_flag :1; 1455*c83a76b0SSuyog Pawar 1456*c83a76b0SSuyog Pawar /** 1457*c83a76b0SSuyog Pawar * intra / inter CU flag 1458*c83a76b0SSuyog Pawar */ 1459*c83a76b0SSuyog Pawar UWORD32 b1_pred_mode_flag :1; 1460*c83a76b0SSuyog Pawar 1461*c83a76b0SSuyog Pawar /** 1462*c83a76b0SSuyog Pawar * indicates partition information for CU 1463*c83a76b0SSuyog Pawar * For intra 0 : for 2Nx2N / 1 for NxN iff CU=minCBsize 1464*c83a76b0SSuyog Pawar * For inter 0 : @sa PART_SIZE_E 1465*c83a76b0SSuyog Pawar */ 1466*c83a76b0SSuyog Pawar UWORD32 b3_part_mode :3; 1467*c83a76b0SSuyog Pawar 1468*c83a76b0SSuyog Pawar /** 1469*c83a76b0SSuyog Pawar * 0 for this encoder 1470*c83a76b0SSuyog Pawar */ 1471*c83a76b0SSuyog Pawar UWORD32 b1_pcm_flag :1; 1472*c83a76b0SSuyog Pawar 1473*c83a76b0SSuyog Pawar /** 1474*c83a76b0SSuyog Pawar * only applicable for intra cu 1475*c83a76b0SSuyog Pawar */ 1476*c83a76b0SSuyog Pawar UWORD32 b3_chroma_intra_pred_mode :3; 1477*c83a76b0SSuyog Pawar 1478*c83a76b0SSuyog Pawar /** 1479*c83a76b0SSuyog Pawar * only applicable for intra cu 1480*c83a76b0SSuyog Pawar */ 1481*c83a76b0SSuyog Pawar UWORD32 b1_prev_intra_luma_pred_flag0 :1; 1482*c83a76b0SSuyog Pawar 1483*c83a76b0SSuyog Pawar /** 1484*c83a76b0SSuyog Pawar * only applicable for intra cu and pred_mode=NxN 1485*c83a76b0SSuyog Pawar */ 1486*c83a76b0SSuyog Pawar UWORD32 b1_prev_intra_luma_pred_flag1 :1; 1487*c83a76b0SSuyog Pawar 1488*c83a76b0SSuyog Pawar /** 1489*c83a76b0SSuyog Pawar * only applicable for intra cu and pred_mode=NxN 1490*c83a76b0SSuyog Pawar */ 1491*c83a76b0SSuyog Pawar UWORD32 b1_prev_intra_luma_pred_flag2 :1; 1492*c83a76b0SSuyog Pawar 1493*c83a76b0SSuyog Pawar /** 1494*c83a76b0SSuyog Pawar * only applicable for intra cu and pred_mode=NxN 1495*c83a76b0SSuyog Pawar */ 1496*c83a76b0SSuyog Pawar UWORD32 b1_prev_intra_luma_pred_flag3 :1; 1497*c83a76b0SSuyog Pawar 1498*c83a76b0SSuyog Pawar /** 1499*c83a76b0SSuyog Pawar * only applicable for luma intra cu 1500*c83a76b0SSuyog Pawar */ 1501*c83a76b0SSuyog Pawar UWORD32 b2_mpm_idx0 :2; 1502*c83a76b0SSuyog Pawar 1503*c83a76b0SSuyog Pawar /** 1504*c83a76b0SSuyog Pawar * only applicable for intra cu and pred_mode=NxN 1505*c83a76b0SSuyog Pawar */ 1506*c83a76b0SSuyog Pawar UWORD32 b2_mpm_idx1 :2; 1507*c83a76b0SSuyog Pawar 1508*c83a76b0SSuyog Pawar /** 1509*c83a76b0SSuyog Pawar * only applicable for intra cu and pred_mode=NxN 1510*c83a76b0SSuyog Pawar */ 1511*c83a76b0SSuyog Pawar UWORD32 b2_mpm_idx2 :2; 1512*c83a76b0SSuyog Pawar 1513*c83a76b0SSuyog Pawar /** 1514*c83a76b0SSuyog Pawar * only applicable for intra cu and pred_mode=NxN 1515*c83a76b0SSuyog Pawar */ 1516*c83a76b0SSuyog Pawar UWORD32 b2_mpm_idx3 :2; 1517*c83a76b0SSuyog Pawar 1518*c83a76b0SSuyog Pawar /** 1519*c83a76b0SSuyog Pawar * only applicable for intra cu 1520*c83a76b0SSuyog Pawar */ 1521*c83a76b0SSuyog Pawar UWORD32 b5_rem_intra_pred_mode0 :5; 1522*c83a76b0SSuyog Pawar 1523*c83a76b0SSuyog Pawar /** 1524*c83a76b0SSuyog Pawar * only applicable for intra cu and pred_mode=NxN 1525*c83a76b0SSuyog Pawar */ 1526*c83a76b0SSuyog Pawar UWORD32 b5_rem_intra_pred_mode1 :5; 1527*c83a76b0SSuyog Pawar 1528*c83a76b0SSuyog Pawar /** 1529*c83a76b0SSuyog Pawar * only applicable for intra cu and pred_mode=NxN 1530*c83a76b0SSuyog Pawar */ 1531*c83a76b0SSuyog Pawar UWORD32 b5_rem_intra_pred_mode2 :5; 1532*c83a76b0SSuyog Pawar 1533*c83a76b0SSuyog Pawar /** 1534*c83a76b0SSuyog Pawar * only applicable for intra cu and pred_mode=NxN 1535*c83a76b0SSuyog Pawar */ 1536*c83a76b0SSuyog Pawar UWORD32 b5_rem_intra_pred_mode3 :5; 1537*c83a76b0SSuyog Pawar 1538*c83a76b0SSuyog Pawar /** 1539*c83a76b0SSuyog Pawar * no residue flag for cu 1540*c83a76b0SSuyog Pawar */ 1541*c83a76b0SSuyog Pawar UWORD32 b1_no_residual_syntax_flag :1; 1542*c83a76b0SSuyog Pawar 1543*c83a76b0SSuyog Pawar }cu_t; 1544*c83a76b0SSuyog Pawar 1545*c83a76b0SSuyog Pawar /*****************************************************************************/ 1546*c83a76b0SSuyog Pawar /* Since the following data will be accessed linearly (no random access */ 1547*c83a76b0SSuyog Pawar /* is needed for this) there is no need to store a frame level offset for */ 1548*c83a76b0SSuyog Pawar /* each CTB's TU data. Only a pointer to this is stored in CTB's structure */ 1549*c83a76b0SSuyog Pawar /*****************************************************************************/ 1550*c83a76b0SSuyog Pawar 1551*c83a76b0SSuyog Pawar typedef struct 1552*c83a76b0SSuyog Pawar { 1553*c83a76b0SSuyog Pawar /*************************************************************************/ 1554*c83a76b0SSuyog Pawar /* Number of TUs filled in as_tu */ 1555*c83a76b0SSuyog Pawar /* Having the first entry as 32 bit data, helps in keeping each of */ 1556*c83a76b0SSuyog Pawar /* the structures aligned to 32 bits at CTB level */ 1557*c83a76b0SSuyog Pawar /*************************************************************************/ 1558*c83a76b0SSuyog Pawar /** 1559*c83a76b0SSuyog Pawar * Number of TUs filled in as_tu 1560*c83a76b0SSuyog Pawar */ 1561*c83a76b0SSuyog Pawar WORD32 i4_tu_cnt; 1562*c83a76b0SSuyog Pawar 1563*c83a76b0SSuyog Pawar /** 1564*c83a76b0SSuyog Pawar * Array to map each min TU unit to a corresponding entry in as_tu 1565*c83a76b0SSuyog Pawar */ 1566*c83a76b0SSuyog Pawar UWORD8 au1_tu_map[MAX_TU_IN_CTB]; 1567*c83a76b0SSuyog Pawar 1568*c83a76b0SSuyog Pawar /*************************************************************************/ 1569*c83a76b0SSuyog Pawar /* TU level information */ 1570*c83a76b0SSuyog Pawar /* Though the allocation for as_pu as done to handle worst case data, */ 1571*c83a76b0SSuyog Pawar /* only valid number of TUs will be filled in the following array. */ 1572*c83a76b0SSuyog Pawar /* Next CTB starts after the valid as_tu entries */ 1573*c83a76b0SSuyog Pawar /*************************************************************************/ 1574*c83a76b0SSuyog Pawar /** 1575*c83a76b0SSuyog Pawar * TU level information 1576*c83a76b0SSuyog Pawar */ 1577*c83a76b0SSuyog Pawar tu_t as_tu[MAX_TU_IN_CTB]; 1578*c83a76b0SSuyog Pawar 1579*c83a76b0SSuyog Pawar }ctb_tu_list_t; 1580*c83a76b0SSuyog Pawar 1581*c83a76b0SSuyog Pawar /*****************************************************************************/ 1582*c83a76b0SSuyog Pawar /* Info from last TU row of CTB is stored in a row level neighbour buffer */ 1583*c83a76b0SSuyog Pawar /* , which will be used for Boundary Strength computation */ 1584*c83a76b0SSuyog Pawar /*****************************************************************************/ 1585*c83a76b0SSuyog Pawar /** 1586*c83a76b0SSuyog Pawar * CTB neighbor info 1587*c83a76b0SSuyog Pawar */ 1588*c83a76b0SSuyog Pawar typedef struct 1589*c83a76b0SSuyog Pawar { 1590*c83a76b0SSuyog Pawar /** 1591*c83a76b0SSuyog Pawar * Slice index of the ctb 1592*c83a76b0SSuyog Pawar */ 1593*c83a76b0SSuyog Pawar UWORD16 u2_slice_idx; 1594*c83a76b0SSuyog Pawar 1595*c83a76b0SSuyog Pawar /*************************************************************************/ 1596*c83a76b0SSuyog Pawar /* CBF of bottom TU row (replicated in 4 pixel boundary) */ 1597*c83a76b0SSuyog Pawar /* MSB contains CBF of first TU in the last row and LSB contains CBF */ 1598*c83a76b0SSuyog Pawar /* of last TU in the last row */ 1599*c83a76b0SSuyog Pawar /*************************************************************************/ 1600*c83a76b0SSuyog Pawar /** 1601*c83a76b0SSuyog Pawar * CBF of bottom TU row 1602*c83a76b0SSuyog Pawar */ 1603*c83a76b0SSuyog Pawar UWORD16 u2_packed_cbf; 1604*c83a76b0SSuyog Pawar 1605*c83a76b0SSuyog Pawar /*************************************************************************/ 1606*c83a76b0SSuyog Pawar /* QP of bottom TU row (replicated at 8 pixel boundary (Since QP can */ 1607*c83a76b0SSuyog Pawar /* not change at less than min CU granularity) */ 1608*c83a76b0SSuyog Pawar /*************************************************************************/ 1609*c83a76b0SSuyog Pawar /** 1610*c83a76b0SSuyog Pawar * QP of bottom TU row 1611*c83a76b0SSuyog Pawar */ 1612*c83a76b0SSuyog Pawar UWORD8 au1_qp[MAX_CU_IN_CTB_ROW]; 1613*c83a76b0SSuyog Pawar 1614*c83a76b0SSuyog Pawar }ctb_top_ny_info_t; 1615*c83a76b0SSuyog Pawar 1616*c83a76b0SSuyog Pawar /** 1617*c83a76b0SSuyog Pawar * CTB level info 1618*c83a76b0SSuyog Pawar */ 1619*c83a76b0SSuyog Pawar typedef struct _ctb_t 1620*c83a76b0SSuyog Pawar { 1621*c83a76b0SSuyog Pawar /*************************************************************************/ 1622*c83a76b0SSuyog Pawar /* Tile boundary can be detected by looking at tile start x and tile */ 1623*c83a76b0SSuyog Pawar /* start y. And based on the tile, slice and frame boundary the */ 1624*c83a76b0SSuyog Pawar /* following will be initialized. */ 1625*c83a76b0SSuyog Pawar /*************************************************************************/ 1626*c83a76b0SSuyog Pawar /** 1627*c83a76b0SSuyog Pawar * Pointer to left CTB 1628*c83a76b0SSuyog Pawar */ 1629*c83a76b0SSuyog Pawar /* If not available, this will be set to NULL */ 1630*c83a76b0SSuyog Pawar struct _ctb_t *ps_ctb_left; 1631*c83a76b0SSuyog Pawar 1632*c83a76b0SSuyog Pawar /** 1633*c83a76b0SSuyog Pawar * Pointer to top-left CTB 1634*c83a76b0SSuyog Pawar */ 1635*c83a76b0SSuyog Pawar /* If not available, this will be set to NULL */ 1636*c83a76b0SSuyog Pawar ctb_top_ny_info_t *ps_ctb_ny_topleft; 1637*c83a76b0SSuyog Pawar 1638*c83a76b0SSuyog Pawar /** 1639*c83a76b0SSuyog Pawar * Pointer to top CTB 1640*c83a76b0SSuyog Pawar */ 1641*c83a76b0SSuyog Pawar /* If not available, this will be set to NULL */ 1642*c83a76b0SSuyog Pawar ctb_top_ny_info_t *ps_ctb_ny_top; 1643*c83a76b0SSuyog Pawar 1644*c83a76b0SSuyog Pawar /** 1645*c83a76b0SSuyog Pawar * Pointer to top-right CTB 1646*c83a76b0SSuyog Pawar */ 1647*c83a76b0SSuyog Pawar /* If not available, this will be set to NULL */ 1648*c83a76b0SSuyog Pawar ctb_top_ny_info_t *ps_ctb_ny_topright; 1649*c83a76b0SSuyog Pawar 1650*c83a76b0SSuyog Pawar /*************************************************************************/ 1651*c83a76b0SSuyog Pawar /* Pointer to PU data. */ 1652*c83a76b0SSuyog Pawar /* This points to a MV Bank stored at frame level. Though this */ 1653*c83a76b0SSuyog Pawar /* pointer can be derived by reading offset at frame level, it is */ 1654*c83a76b0SSuyog Pawar /* stored here for faster access. Can be removed if storage of CTB */ 1655*c83a76b0SSuyog Pawar /* structure is critical */ 1656*c83a76b0SSuyog Pawar /*************************************************************************/ 1657*c83a76b0SSuyog Pawar /** 1658*c83a76b0SSuyog Pawar * Pointer to PU data 1659*c83a76b0SSuyog Pawar */ 1660*c83a76b0SSuyog Pawar pu_t *ps_pu; 1661*c83a76b0SSuyog Pawar 1662*c83a76b0SSuyog Pawar /*************************************************************************/ 1663*c83a76b0SSuyog Pawar /* Pointer to a PU map stored at frame level, */ 1664*c83a76b0SSuyog Pawar /* Though this pointer can be derived by multiplying CTB adress with */ 1665*c83a76b0SSuyog Pawar /* number of minTUs in a CTB, it is stored here for faster access. */ 1666*c83a76b0SSuyog Pawar /* Can be removed if storage of CTB structure is critical */ 1667*c83a76b0SSuyog Pawar /*************************************************************************/ 1668*c83a76b0SSuyog Pawar /** 1669*c83a76b0SSuyog Pawar * Pointer to a PU map stored at frame level 1670*c83a76b0SSuyog Pawar */ 1671*c83a76b0SSuyog Pawar UWORD8 *pu1_pu_map; 1672*c83a76b0SSuyog Pawar 1673*c83a76b0SSuyog Pawar /** 1674*c83a76b0SSuyog Pawar * Number of TUs filled in as_tu 1675*c83a76b0SSuyog Pawar */ 1676*c83a76b0SSuyog Pawar /*************************************************************************/ 1677*c83a76b0SSuyog Pawar /* Having the first entry as 32 bit data, helps in keeping each of */ 1678*c83a76b0SSuyog Pawar /* the structures aligned to 32 bits at CTB level */ 1679*c83a76b0SSuyog Pawar /*************************************************************************/ 1680*c83a76b0SSuyog Pawar WORD32 i4_tu_cnt; 1681*c83a76b0SSuyog Pawar 1682*c83a76b0SSuyog Pawar /** 1683*c83a76b0SSuyog Pawar * Array to map each min TU unit to a corresponding entry in as_tu 1684*c83a76b0SSuyog Pawar */ 1685*c83a76b0SSuyog Pawar UWORD8 *pu1_tu_map; 1686*c83a76b0SSuyog Pawar 1687*c83a76b0SSuyog Pawar /** 1688*c83a76b0SSuyog Pawar * TU level information 1689*c83a76b0SSuyog Pawar */ 1690*c83a76b0SSuyog Pawar /*************************************************************************/ 1691*c83a76b0SSuyog Pawar /* Though the allocation for as_pu as done to handle worst case data, */ 1692*c83a76b0SSuyog Pawar /* only valid number of TUs will be filled in the following array. */ 1693*c83a76b0SSuyog Pawar /* Next CTB starts after the valid as_tu entries */ 1694*c83a76b0SSuyog Pawar /*************************************************************************/ 1695*c83a76b0SSuyog Pawar tu_t *ps_tu; 1696*c83a76b0SSuyog Pawar 1697*c83a76b0SSuyog Pawar /** 1698*c83a76b0SSuyog Pawar * Pointer to transform coeff data 1699*c83a76b0SSuyog Pawar */ 1700*c83a76b0SSuyog Pawar /*************************************************************************/ 1701*c83a76b0SSuyog Pawar /* Following format is repeated for every coded TU */ 1702*c83a76b0SSuyog Pawar /* Luma Block */ 1703*c83a76b0SSuyog Pawar /* num_coeffs : 16 bits */ 1704*c83a76b0SSuyog Pawar /* zero_cols : 8 bits ( 1 bit per 4 columns) */ 1705*c83a76b0SSuyog Pawar /* sig_coeff_map : ((TU Size * TU Size) + 31) >> 5 number of WORD32s */ 1706*c83a76b0SSuyog Pawar /* coeff_data : Non zero coefficients */ 1707*c83a76b0SSuyog Pawar /* Cb Block (only for last TU in 4x4 case else for every luma TU) */ 1708*c83a76b0SSuyog Pawar /* num_coeffs : 16 bits */ 1709*c83a76b0SSuyog Pawar /* zero_cols : 8 bits ( 1 bit per 4 columns) */ 1710*c83a76b0SSuyog Pawar /* sig_coeff_map : ((TU Size * TU Size) + 31) >> 5 number of WORD32s */ 1711*c83a76b0SSuyog Pawar /* coeff_data : Non zero coefficients */ 1712*c83a76b0SSuyog Pawar /* Cr Block (only for last TU in 4x4 case else for every luma TU) */ 1713*c83a76b0SSuyog Pawar /* num_coeffs : 16 bits */ 1714*c83a76b0SSuyog Pawar /* zero_cols : 8 bits ( 1 bit per 4 columns) */ 1715*c83a76b0SSuyog Pawar /* sig_coeff_map : ((TU Size * TU Size) + 31) >> 5 number of WORD32s */ 1716*c83a76b0SSuyog Pawar /* coeff_data : Non zero coefficients */ 1717*c83a76b0SSuyog Pawar /*************************************************************************/ 1718*c83a76b0SSuyog Pawar void *pv_coeff_data; 1719*c83a76b0SSuyog Pawar 1720*c83a76b0SSuyog Pawar /** 1721*c83a76b0SSuyog Pawar * Slice to which the CTB belongs to 1722*c83a76b0SSuyog Pawar */ 1723*c83a76b0SSuyog Pawar WORD32 i4_slice_idx; 1724*c83a76b0SSuyog Pawar 1725*c83a76b0SSuyog Pawar /** 1726*c83a76b0SSuyog Pawar * CTB column position 1727*c83a76b0SSuyog Pawar */ 1728*c83a76b0SSuyog Pawar WORD32 i4_pos_x; 1729*c83a76b0SSuyog Pawar 1730*c83a76b0SSuyog Pawar /** 1731*c83a76b0SSuyog Pawar * CTB row position 1732*c83a76b0SSuyog Pawar */ 1733*c83a76b0SSuyog Pawar WORD32 i4_pos_y; 1734*c83a76b0SSuyog Pawar 1735*c83a76b0SSuyog Pawar /** 1736*c83a76b0SSuyog Pawar * Number of PUs filled in ps_pu 1737*c83a76b0SSuyog Pawar */ 1738*c83a76b0SSuyog Pawar WORD32 i4_pu_cnt; 1739*c83a76b0SSuyog Pawar 1740*c83a76b0SSuyog Pawar /** 1741*c83a76b0SSuyog Pawar * Index of current PU being processed in ps_pu 1742*c83a76b0SSuyog Pawar */ 1743*c83a76b0SSuyog Pawar /* Scratch variable set to 0 at the start of any PU processing function */ 1744*c83a76b0SSuyog Pawar WORD32 i4_pu_idx; 1745*c83a76b0SSuyog Pawar 1746*c83a76b0SSuyog Pawar /** 1747*c83a76b0SSuyog Pawar * Vertical Boundary strength 1748*c83a76b0SSuyog Pawar */ 1749*c83a76b0SSuyog Pawar /* Two bits per edge. 1750*c83a76b0SSuyog Pawar Stored in format. BS[15] | BS[14] | .. |BS[0]*/ 1751*c83a76b0SSuyog Pawar UWORD32 *pu4_vert_bs; 1752*c83a76b0SSuyog Pawar 1753*c83a76b0SSuyog Pawar /** 1754*c83a76b0SSuyog Pawar * Horizontal Boundary strength 1755*c83a76b0SSuyog Pawar */ 1756*c83a76b0SSuyog Pawar 1757*c83a76b0SSuyog Pawar /* Two bits per edge. 1758*c83a76b0SSuyog Pawar Stored in format. BS[15] | BS[14] | .. |BS[0]*/ 1759*c83a76b0SSuyog Pawar UWORD32 *pu4_horz_bs; 1760*c83a76b0SSuyog Pawar 1761*c83a76b0SSuyog Pawar /** 1762*c83a76b0SSuyog Pawar * Qp array stored for each 8x8 pixels 1763*c83a76b0SSuyog Pawar */ 1764*c83a76b0SSuyog Pawar UWORD8 *pu1_qp; 1765*c83a76b0SSuyog Pawar 1766*c83a76b0SSuyog Pawar /** 1767*c83a76b0SSuyog Pawar * Pointer to current frame's pu_t array 1768*c83a76b0SSuyog Pawar */ 1769*c83a76b0SSuyog Pawar pu_t *ps_frm_pu; 1770*c83a76b0SSuyog Pawar 1771*c83a76b0SSuyog Pawar /** 1772*c83a76b0SSuyog Pawar * Pointer to current frame's pu_t index array, which stores starting index 1773*c83a76b0SSuyog Pawar * of pu_t for every CTB 1774*c83a76b0SSuyog Pawar */ 1775*c83a76b0SSuyog Pawar UWORD32 *pu4_frm_pu_idx; 1776*c83a76b0SSuyog Pawar 1777*c83a76b0SSuyog Pawar /** 1778*c83a76b0SSuyog Pawar * Pointer to current frame's pu map array 1779*c83a76b0SSuyog Pawar */ 1780*c83a76b0SSuyog Pawar UWORD8 *pu1_frm_pu_map; 1781*c83a76b0SSuyog Pawar 1782*c83a76b0SSuyog Pawar /*************************************************************************/ 1783*c83a76b0SSuyog Pawar /* Need to add encoder specific elements for identifying the order of */ 1784*c83a76b0SSuyog Pawar /* coding for CU, TU and PU if any */ 1785*c83a76b0SSuyog Pawar /*************************************************************************/ 1786*c83a76b0SSuyog Pawar }ctb_t; 1787*c83a76b0SSuyog Pawar 1788*c83a76b0SSuyog Pawar /*****************************************************************************/ 1789*c83a76b0SSuyog Pawar /* The following can be used to typecast coefficient data that is stored */ 1790*c83a76b0SSuyog Pawar /* per subblock. Note that though i2_level is shown as an array that */ 1791*c83a76b0SSuyog Pawar /* holds 16 coefficients, only the first few entries will be valid. Next */ 1792*c83a76b0SSuyog Pawar /* subblocks data starts after the valid number of coefficients. Number */ 1793*c83a76b0SSuyog Pawar /* of non-zero coefficients will be derived using number of non-zero bits */ 1794*c83a76b0SSuyog Pawar /* in sig coeff map */ 1795*c83a76b0SSuyog Pawar /*****************************************************************************/ 1796*c83a76b0SSuyog Pawar /** 1797*c83a76b0SSuyog Pawar * Structure to hold coefficient info for a 4x4 subblock 1798*c83a76b0SSuyog Pawar */ 1799*c83a76b0SSuyog Pawar typedef struct 1800*c83a76b0SSuyog Pawar { 1801*c83a76b0SSuyog Pawar /** 1802*c83a76b0SSuyog Pawar * sub block position 1803*c83a76b0SSuyog Pawar */ 1804*c83a76b0SSuyog Pawar UWORD16 u2_subblk_pos; 1805*c83a76b0SSuyog Pawar 1806*c83a76b0SSuyog Pawar /** 1807*c83a76b0SSuyog Pawar * significant coefficient map 1808*c83a76b0SSuyog Pawar */ 1809*c83a76b0SSuyog Pawar UWORD16 u2_sig_coeff_map; 1810*c83a76b0SSuyog Pawar 1811*c83a76b0SSuyog Pawar /** 1812*c83a76b0SSuyog Pawar * holds 16 coefficients 1813*c83a76b0SSuyog Pawar */ 1814*c83a76b0SSuyog Pawar WORD16 ai2_level[SUBBLK_COEFF_CNT]; 1815*c83a76b0SSuyog Pawar }tu_sblk_coeff_data_t; 1816*c83a76b0SSuyog Pawar 1817*c83a76b0SSuyog Pawar 1818*c83a76b0SSuyog Pawar /*************************************************************************/ 1819*c83a76b0SSuyog Pawar /* The following describes how each of the CU cases are handled */ 1820*c83a76b0SSuyog Pawar /*************************************************************************/ 1821*c83a76b0SSuyog Pawar 1822*c83a76b0SSuyog Pawar /*************************************************************************/ 1823*c83a76b0SSuyog Pawar /* For SKIP CU */ 1824*c83a76b0SSuyog Pawar /* One Inter PU with appropriate MV */ 1825*c83a76b0SSuyog Pawar /* One TU which says Y, Cb and Cr CBF is zero with size equal to CB size */ 1826*c83a76b0SSuyog Pawar /*************************************************************************/ 1827*c83a76b0SSuyog Pawar 1828*c83a76b0SSuyog Pawar /*************************************************************************/ 1829*c83a76b0SSuyog Pawar /* For Inter CU */ 1830*c83a76b0SSuyog Pawar /* M Inter PU with appropriate MVs (M between 1 to 4) */ 1831*c83a76b0SSuyog Pawar /* N TU (N is number of TU in CU) */ 1832*c83a76b0SSuyog Pawar /*************************************************************************/ 1833*c83a76b0SSuyog Pawar 1834*c83a76b0SSuyog Pawar /*************************************************************************/ 1835*c83a76b0SSuyog Pawar /* For Intra CU */ 1836*c83a76b0SSuyog Pawar /* N TU (N is number of TU in CU) */ 1837*c83a76b0SSuyog Pawar /* N Intra PU with appropriate pred modes for luma and chroma */ 1838*c83a76b0SSuyog Pawar /*************************************************************************/ 1839*c83a76b0SSuyog Pawar 1840*c83a76b0SSuyog Pawar /*************************************************************************/ 1841*c83a76b0SSuyog Pawar /* For Intra PCM CU */ 1842*c83a76b0SSuyog Pawar /* One TU which says transquant bypass is 1 with size equal to CB size */ 1843*c83a76b0SSuyog Pawar /* 1 Intra PU with pcm flag set to 1(which ensures no intra pred is done)*/ 1844*c83a76b0SSuyog Pawar /*************************************************************************/ 1845*c83a76b0SSuyog Pawar 1846*c83a76b0SSuyog Pawar /*************************************************************************/ 1847*c83a76b0SSuyog Pawar /* For a CU where cu_transquant_bypass_flag is 1 */ 1848*c83a76b0SSuyog Pawar /* One TU which says transquant bypass is 1 with size equal to CB size */ 1849*c83a76b0SSuyog Pawar /* N Intra/Inter PUs */ 1850*c83a76b0SSuyog Pawar /*************************************************************************/ 1851*c83a76b0SSuyog Pawar 1852*c83a76b0SSuyog Pawar /*************************************************************************/ 1853*c83a76b0SSuyog Pawar /* For a CU where no_residual_syntax_flag is 1 */ 1854*c83a76b0SSuyog Pawar /* One TU which says Y, Cb, Cr CBF is 0 with size equal to CB size */ 1855*c83a76b0SSuyog Pawar /* N Inter PUs */ 1856*c83a76b0SSuyog Pawar /*************************************************************************/ 1857*c83a76b0SSuyog Pawar 1858*c83a76b0SSuyog Pawar 1859*c83a76b0SSuyog Pawar /** 1860*c83a76b0SSuyog Pawar * Structure giving information about the tile 1861*c83a76b0SSuyog Pawar */ 1862*c83a76b0SSuyog Pawar typedef struct 1863*c83a76b0SSuyog Pawar { 1864*c83a76b0SSuyog Pawar /* X position of the tile in the current frame in CTB units */ 1865*c83a76b0SSuyog Pawar UWORD8 u1_pos_x; 1866*c83a76b0SSuyog Pawar 1867*c83a76b0SSuyog Pawar /* Y position of the tile in the current frame in CTB units */ 1868*c83a76b0SSuyog Pawar UWORD8 u1_pos_y; 1869*c83a76b0SSuyog Pawar 1870*c83a76b0SSuyog Pawar /* Tile width in CTB units */ 1871*c83a76b0SSuyog Pawar UWORD16 u2_wd; 1872*c83a76b0SSuyog Pawar 1873*c83a76b0SSuyog Pawar /* Tile height in CTB units */ 1874*c83a76b0SSuyog Pawar UWORD16 u2_ht; 1875*c83a76b0SSuyog Pawar 1876*c83a76b0SSuyog Pawar }tile_t; 1877*c83a76b0SSuyog Pawar 1878*c83a76b0SSuyog Pawar /** 1879*c83a76b0SSuyog Pawar * Structure to hold Profile tier level info for a given layer 1880*c83a76b0SSuyog Pawar */ 1881*c83a76b0SSuyog Pawar 1882*c83a76b0SSuyog Pawar typedef struct 1883*c83a76b0SSuyog Pawar { 1884*c83a76b0SSuyog Pawar /** 1885*c83a76b0SSuyog Pawar * NAL unit type 1886*c83a76b0SSuyog Pawar */ 1887*c83a76b0SSuyog Pawar WORD8 i1_nal_unit_type; 1888*c83a76b0SSuyog Pawar 1889*c83a76b0SSuyog Pawar /** 1890*c83a76b0SSuyog Pawar * NAL temporal id 1891*c83a76b0SSuyog Pawar */ 1892*c83a76b0SSuyog Pawar WORD8 i1_nuh_temporal_id; 1893*c83a76b0SSuyog Pawar }nal_header_t; 1894*c83a76b0SSuyog Pawar 1895*c83a76b0SSuyog Pawar /** 1896*c83a76b0SSuyog Pawar * Structure to hold Profile tier level info for a given layer 1897*c83a76b0SSuyog Pawar */ 1898*c83a76b0SSuyog Pawar 1899*c83a76b0SSuyog Pawar typedef struct 1900*c83a76b0SSuyog Pawar { 1901*c83a76b0SSuyog Pawar /** 1902*c83a76b0SSuyog Pawar * profile_space 1903*c83a76b0SSuyog Pawar */ 1904*c83a76b0SSuyog Pawar WORD8 i1_profile_space; 1905*c83a76b0SSuyog Pawar 1906*c83a76b0SSuyog Pawar /** 1907*c83a76b0SSuyog Pawar * tier_flag 1908*c83a76b0SSuyog Pawar */ 1909*c83a76b0SSuyog Pawar WORD8 i1_tier_flag; 1910*c83a76b0SSuyog Pawar 1911*c83a76b0SSuyog Pawar /** 1912*c83a76b0SSuyog Pawar * profile_idc 1913*c83a76b0SSuyog Pawar */ 1914*c83a76b0SSuyog Pawar WORD8 i1_profile_idc; 1915*c83a76b0SSuyog Pawar 1916*c83a76b0SSuyog Pawar /** 1917*c83a76b0SSuyog Pawar * profile_compatibility_flag[] 1918*c83a76b0SSuyog Pawar */ 1919*c83a76b0SSuyog Pawar WORD8 ai1_profile_compatibility_flag[MAX_PROFILE_COMPATBLTY]; 1920*c83a76b0SSuyog Pawar 1921*c83a76b0SSuyog Pawar /** 1922*c83a76b0SSuyog Pawar * progressive_source_flag 1923*c83a76b0SSuyog Pawar */ 1924*c83a76b0SSuyog Pawar WORD8 i1_general_progressive_source_flag; 1925*c83a76b0SSuyog Pawar 1926*c83a76b0SSuyog Pawar /** 1927*c83a76b0SSuyog Pawar * interlaced_source_flag 1928*c83a76b0SSuyog Pawar */ 1929*c83a76b0SSuyog Pawar WORD8 i1_general_interlaced_source_flag; 1930*c83a76b0SSuyog Pawar 1931*c83a76b0SSuyog Pawar /** 1932*c83a76b0SSuyog Pawar * non_packed_constraint_flag 1933*c83a76b0SSuyog Pawar */ 1934*c83a76b0SSuyog Pawar WORD8 i1_general_non_packed_constraint_flag; 1935*c83a76b0SSuyog Pawar 1936*c83a76b0SSuyog Pawar /** 1937*c83a76b0SSuyog Pawar * frame_only_constraint_flag 1938*c83a76b0SSuyog Pawar */ 1939*c83a76b0SSuyog Pawar WORD8 i1_frame_only_constraint_flag; 1940*c83a76b0SSuyog Pawar 1941*c83a76b0SSuyog Pawar /** 1942*c83a76b0SSuyog Pawar * general_max_12bit_constraint_flag 1943*c83a76b0SSuyog Pawar */ 1944*c83a76b0SSuyog Pawar WORD8 i1_general_max_12bit_constraint_flag; 1945*c83a76b0SSuyog Pawar 1946*c83a76b0SSuyog Pawar /** 1947*c83a76b0SSuyog Pawar * general_max_10bit_constraint_flag 1948*c83a76b0SSuyog Pawar */ 1949*c83a76b0SSuyog Pawar WORD8 i1_general_max_10bit_constraint_flag; 1950*c83a76b0SSuyog Pawar 1951*c83a76b0SSuyog Pawar /** 1952*c83a76b0SSuyog Pawar * general_max_8bit_constraint_flag 1953*c83a76b0SSuyog Pawar */ 1954*c83a76b0SSuyog Pawar WORD8 i1_general_max_8bit_constraint_flag; 1955*c83a76b0SSuyog Pawar 1956*c83a76b0SSuyog Pawar /** 1957*c83a76b0SSuyog Pawar * general_max_422chroma_constraint_flag 1958*c83a76b0SSuyog Pawar */ 1959*c83a76b0SSuyog Pawar WORD8 i1_general_max_422chroma_constraint_flag; 1960*c83a76b0SSuyog Pawar 1961*c83a76b0SSuyog Pawar /** 1962*c83a76b0SSuyog Pawar * general_max_420chroma_constraint_flag 1963*c83a76b0SSuyog Pawar */ 1964*c83a76b0SSuyog Pawar WORD8 i1_general_max_420chroma_constraint_flag; 1965*c83a76b0SSuyog Pawar 1966*c83a76b0SSuyog Pawar /** 1967*c83a76b0SSuyog Pawar * general_max_monochrome_constraint_flag 1968*c83a76b0SSuyog Pawar */ 1969*c83a76b0SSuyog Pawar WORD8 i1_general_max_monochrome_constraint_flag; 1970*c83a76b0SSuyog Pawar 1971*c83a76b0SSuyog Pawar /** 1972*c83a76b0SSuyog Pawar * general_intra_constraint_flag 1973*c83a76b0SSuyog Pawar */ 1974*c83a76b0SSuyog Pawar WORD8 i1_general_intra_constraint_flag; 1975*c83a76b0SSuyog Pawar 1976*c83a76b0SSuyog Pawar /** 1977*c83a76b0SSuyog Pawar * general_one_picture_only_constraint_flag 1978*c83a76b0SSuyog Pawar */ 1979*c83a76b0SSuyog Pawar WORD8 i1_general_one_picture_only_constraint_flag; 1980*c83a76b0SSuyog Pawar 1981*c83a76b0SSuyog Pawar /** 1982*c83a76b0SSuyog Pawar * general_lower_bit_rate_constraint_flag 1983*c83a76b0SSuyog Pawar */ 1984*c83a76b0SSuyog Pawar WORD8 i1_general_lower_bit_rate_constraint_flag; 1985*c83a76b0SSuyog Pawar 1986*c83a76b0SSuyog Pawar /** 1987*c83a76b0SSuyog Pawar * level_idc 1988*c83a76b0SSuyog Pawar */ 1989*c83a76b0SSuyog Pawar UWORD8 u1_level_idc; 1990*c83a76b0SSuyog Pawar }profile_tier_lvl_t; 1991*c83a76b0SSuyog Pawar 1992*c83a76b0SSuyog Pawar /** 1993*c83a76b0SSuyog Pawar * Structure to hold Profile tier level info for all layers 1994*c83a76b0SSuyog Pawar */ 1995*c83a76b0SSuyog Pawar typedef struct 1996*c83a76b0SSuyog Pawar { 1997*c83a76b0SSuyog Pawar /** 1998*c83a76b0SSuyog Pawar * Profile and tier information for general 1999*c83a76b0SSuyog Pawar */ 2000*c83a76b0SSuyog Pawar profile_tier_lvl_t s_ptl_gen; 2001*c83a76b0SSuyog Pawar 2002*c83a76b0SSuyog Pawar /** 2003*c83a76b0SSuyog Pawar * sub_layer_profile_present_flag[] 2004*c83a76b0SSuyog Pawar */ 2005*c83a76b0SSuyog Pawar WORD8 ai1_sub_layer_profile_present_flag[VPS_MAX_SUB_LAYERS - 1]; 2006*c83a76b0SSuyog Pawar 2007*c83a76b0SSuyog Pawar /** 2008*c83a76b0SSuyog Pawar * sub_layer_level_present_flag[] 2009*c83a76b0SSuyog Pawar */ 2010*c83a76b0SSuyog Pawar WORD8 ai1_sub_layer_level_present_flag[VPS_MAX_SUB_LAYERS - 1]; 2011*c83a76b0SSuyog Pawar 2012*c83a76b0SSuyog Pawar /** 2013*c83a76b0SSuyog Pawar * Profile and tier information for sub layers 2014*c83a76b0SSuyog Pawar */ 2015*c83a76b0SSuyog Pawar profile_tier_lvl_t as_ptl_sub[VPS_MAX_SUB_LAYERS - 1]; 2016*c83a76b0SSuyog Pawar 2017*c83a76b0SSuyog Pawar }profile_tier_lvl_info_t; 2018*c83a76b0SSuyog Pawar 2019*c83a76b0SSuyog Pawar /** 2020*c83a76b0SSuyog Pawar * Structure to hold short term reference picture set info 2021*c83a76b0SSuyog Pawar */ 2022*c83a76b0SSuyog Pawar typedef struct 2023*c83a76b0SSuyog Pawar { 2024*c83a76b0SSuyog Pawar /** 2025*c83a76b0SSuyog Pawar * delta_poc_s0_minus1[ i ] and delta_poc_s1_minus1[ i ] 2026*c83a76b0SSuyog Pawar */ 2027*c83a76b0SSuyog Pawar WORD16 ai2_delta_poc[MAX_DPB_SIZE]; 2028*c83a76b0SSuyog Pawar 2029*c83a76b0SSuyog Pawar /** 2030*c83a76b0SSuyog Pawar * inter_ref_pic_set_prediction_flag 2031*c83a76b0SSuyog Pawar */ 2032*c83a76b0SSuyog Pawar WORD8 i1_inter_ref_pic_set_prediction_flag; 2033*c83a76b0SSuyog Pawar 2034*c83a76b0SSuyog Pawar /** 2035*c83a76b0SSuyog Pawar * num_negative_pics 2036*c83a76b0SSuyog Pawar */ 2037*c83a76b0SSuyog Pawar WORD8 i1_num_neg_pics; 2038*c83a76b0SSuyog Pawar 2039*c83a76b0SSuyog Pawar /** 2040*c83a76b0SSuyog Pawar * num_positive_pics 2041*c83a76b0SSuyog Pawar */ 2042*c83a76b0SSuyog Pawar WORD8 i1_num_pos_pics; 2043*c83a76b0SSuyog Pawar 2044*c83a76b0SSuyog Pawar /** 2045*c83a76b0SSuyog Pawar * used_by_curr_pic_s0_flag[ i ] and used_by_curr_pic_s1_flag[i] 2046*c83a76b0SSuyog Pawar */ 2047*c83a76b0SSuyog Pawar WORD8 ai1_used[MAX_DPB_SIZE]; 2048*c83a76b0SSuyog Pawar 2049*c83a76b0SSuyog Pawar /** 2050*c83a76b0SSuyog Pawar * Ref Idc 2051*c83a76b0SSuyog Pawar */ 2052*c83a76b0SSuyog Pawar WORD8 ai1_ref_idc[MAX_DPB_SIZE]; 2053*c83a76b0SSuyog Pawar 2054*c83a76b0SSuyog Pawar /** 2055*c83a76b0SSuyog Pawar * Sum of positive and negative pics for each refence 2056*c83a76b0SSuyog Pawar */ 2057*c83a76b0SSuyog Pawar WORD8 i1_num_delta_pocs; 2058*c83a76b0SSuyog Pawar 2059*c83a76b0SSuyog Pawar /** 2060*c83a76b0SSuyog Pawar * Number of ref_idc 2061*c83a76b0SSuyog Pawar */ 2062*c83a76b0SSuyog Pawar WORD8 i1_num_ref_idc; 2063*c83a76b0SSuyog Pawar }stref_picset_t; 2064*c83a76b0SSuyog Pawar 2065*c83a76b0SSuyog Pawar /** 2066*c83a76b0SSuyog Pawar * Structure to hold weighted prediction info such as weights and offsets 2067*c83a76b0SSuyog Pawar */ 2068*c83a76b0SSuyog Pawar typedef struct 2069*c83a76b0SSuyog Pawar { 2070*c83a76b0SSuyog Pawar /** luma_log2_weight_denom */ 2071*c83a76b0SSuyog Pawar WORD8 i1_luma_log2_weight_denom; 2072*c83a76b0SSuyog Pawar 2073*c83a76b0SSuyog Pawar /** delta_chroma_log2_weight_denom */ 2074*c83a76b0SSuyog Pawar WORD8 i1_chroma_log2_weight_denom; 2075*c83a76b0SSuyog Pawar 2076*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE 2077*c83a76b0SSuyog Pawar /** WpOffsetBdShiftY */ 2078*c83a76b0SSuyog Pawar WORD8 i1_wp_ofst_bd_shift_luma; 2079*c83a76b0SSuyog Pawar 2080*c83a76b0SSuyog Pawar /** WpOffsetBdShiftC */ 2081*c83a76b0SSuyog Pawar WORD8 i1_wp_ofst_bd_shift_chroma; 2082*c83a76b0SSuyog Pawar 2083*c83a76b0SSuyog Pawar /** WpOffsetHalfRangeY */ 2084*c83a76b0SSuyog Pawar WORD32 i4_wp_ofst_half_rng_luma; 2085*c83a76b0SSuyog Pawar 2086*c83a76b0SSuyog Pawar /** WpOffsetHalfRangeC */ 2087*c83a76b0SSuyog Pawar WORD32 i4_wp_ofst_half_rng_chroma; 2088*c83a76b0SSuyog Pawar #endif 2089*c83a76b0SSuyog Pawar 2090*c83a76b0SSuyog Pawar /** luma_weight_l0_flag[ i ] */ 2091*c83a76b0SSuyog Pawar WORD8 i1_luma_weight_l0_flag[MAX_DPB_SIZE]; 2092*c83a76b0SSuyog Pawar 2093*c83a76b0SSuyog Pawar /** chroma_weight_l0_flag[ i ] */ 2094*c83a76b0SSuyog Pawar WORD8 i1_chroma_weight_l0_flag[MAX_DPB_SIZE]; 2095*c83a76b0SSuyog Pawar 2096*c83a76b0SSuyog Pawar /** delta_luma_weight_l0[ i ] */ 2097*c83a76b0SSuyog Pawar WORD16 i2_luma_weight_l0[MAX_DPB_SIZE]; 2098*c83a76b0SSuyog Pawar 2099*c83a76b0SSuyog Pawar /** luma_offset_l0[ i ] */ 2100*c83a76b0SSuyog Pawar WORD16 i2_luma_offset_l0[MAX_DPB_SIZE]; 2101*c83a76b0SSuyog Pawar 2102*c83a76b0SSuyog Pawar /** delta_chroma_weight_l0[ i ][ j ] */ 2103*c83a76b0SSuyog Pawar WORD16 i2_chroma_weight_l0_cb[MAX_DPB_SIZE]; 2104*c83a76b0SSuyog Pawar 2105*c83a76b0SSuyog Pawar /** delta_chroma_offset_l0[ i ][ j ] */ 2106*c83a76b0SSuyog Pawar WORD16 i2_chroma_offset_l0_cb[MAX_DPB_SIZE]; 2107*c83a76b0SSuyog Pawar 2108*c83a76b0SSuyog Pawar /** delta_chroma_weight_l0[ i ][ j ] */ 2109*c83a76b0SSuyog Pawar WORD16 i2_chroma_weight_l0_cr[MAX_DPB_SIZE]; 2110*c83a76b0SSuyog Pawar 2111*c83a76b0SSuyog Pawar /** delta_chroma_offset_l0[ i ][ j ] */ 2112*c83a76b0SSuyog Pawar WORD16 i2_chroma_offset_l0_cr[MAX_DPB_SIZE]; 2113*c83a76b0SSuyog Pawar 2114*c83a76b0SSuyog Pawar /** luma_weight_l1_flag[ i ] */ 2115*c83a76b0SSuyog Pawar WORD8 i1_luma_weight_l1_flag[MAX_DPB_SIZE]; 2116*c83a76b0SSuyog Pawar 2117*c83a76b0SSuyog Pawar /** chroma_weight_l1_flag[ i ] */ 2118*c83a76b0SSuyog Pawar WORD8 i1_chroma_weight_l1_flag[MAX_DPB_SIZE]; 2119*c83a76b0SSuyog Pawar 2120*c83a76b0SSuyog Pawar /** delta_luma_weight_l1[ i ] */ 2121*c83a76b0SSuyog Pawar WORD16 i2_luma_weight_l1[MAX_DPB_SIZE]; 2122*c83a76b0SSuyog Pawar 2123*c83a76b0SSuyog Pawar /** luma_offset_l1[ i ] */ 2124*c83a76b0SSuyog Pawar WORD16 i2_luma_offset_l1[MAX_DPB_SIZE]; 2125*c83a76b0SSuyog Pawar 2126*c83a76b0SSuyog Pawar /** delta_chroma_weight_l1[ i ][ j ] */ 2127*c83a76b0SSuyog Pawar WORD16 i2_chroma_weight_l1_cb[MAX_DPB_SIZE]; 2128*c83a76b0SSuyog Pawar 2129*c83a76b0SSuyog Pawar /** delta_chroma_offset_l1[ i ][ j ] */ 2130*c83a76b0SSuyog Pawar WORD16 i2_chroma_offset_l1_cb[MAX_DPB_SIZE]; 2131*c83a76b0SSuyog Pawar 2132*c83a76b0SSuyog Pawar /** delta_chroma_weight_l1[ i ][ j ] */ 2133*c83a76b0SSuyog Pawar WORD16 i2_chroma_weight_l1_cr[MAX_DPB_SIZE]; 2134*c83a76b0SSuyog Pawar 2135*c83a76b0SSuyog Pawar /** delta_chroma_offset_l1[ i ][ j ] */ 2136*c83a76b0SSuyog Pawar WORD16 i2_chroma_offset_l1_cr[MAX_DPB_SIZE]; 2137*c83a76b0SSuyog Pawar 2138*c83a76b0SSuyog Pawar }pred_wt_ofst_t; 2139*c83a76b0SSuyog Pawar 2140*c83a76b0SSuyog Pawar 2141*c83a76b0SSuyog Pawar /** 2142*c83a76b0SSuyog Pawar * Structure to hold Reference picture list modification info 2143*c83a76b0SSuyog Pawar */ 2144*c83a76b0SSuyog Pawar typedef struct 2145*c83a76b0SSuyog Pawar { 2146*c83a76b0SSuyog Pawar /* ref_pic_list_modification_flag_l0 */ 2147*c83a76b0SSuyog Pawar WORD8 i1_ref_pic_list_modification_flag_l0; 2148*c83a76b0SSuyog Pawar 2149*c83a76b0SSuyog Pawar /* list_entry_l0[ i ] */ 2150*c83a76b0SSuyog Pawar WORD8 i1_list_entry_l0[16]; 2151*c83a76b0SSuyog Pawar 2152*c83a76b0SSuyog Pawar /* ref_pic_list_modification_flag_l1 */ 2153*c83a76b0SSuyog Pawar WORD8 i1_ref_pic_list_modification_flag_l1; 2154*c83a76b0SSuyog Pawar 2155*c83a76b0SSuyog Pawar /* list_entry_l1[ i ] */ 2156*c83a76b0SSuyog Pawar WORD8 i1_list_entry_l1[16]; 2157*c83a76b0SSuyog Pawar 2158*c83a76b0SSuyog Pawar /* Reference POC values for L0,L1 */ 2159*c83a76b0SSuyog Pawar WORD32 i4_ref_poc_l0[16]; 2160*c83a76b0SSuyog Pawar WORD32 i4_ref_poc_l1[16]; 2161*c83a76b0SSuyog Pawar }rplm_t; 2162*c83a76b0SSuyog Pawar 2163*c83a76b0SSuyog Pawar 2164*c83a76b0SSuyog Pawar /** 2165*c83a76b0SSuyog Pawar * Structure to hold VPS info 2166*c83a76b0SSuyog Pawar */ 2167*c83a76b0SSuyog Pawar typedef struct 2168*c83a76b0SSuyog Pawar { 2169*c83a76b0SSuyog Pawar /** 2170*c83a76b0SSuyog Pawar * video_parameter_set_id 2171*c83a76b0SSuyog Pawar */ 2172*c83a76b0SSuyog Pawar WORD8 i1_vps_id; 2173*c83a76b0SSuyog Pawar 2174*c83a76b0SSuyog Pawar /** 2175*c83a76b0SSuyog Pawar * vps_temporal_id_nesting_flag 2176*c83a76b0SSuyog Pawar */ 2177*c83a76b0SSuyog Pawar WORD8 i1_vps_temporal_id_nesting_flag; 2178*c83a76b0SSuyog Pawar /** 2179*c83a76b0SSuyog Pawar * sub_layer_ordering_info_present_flag 2180*c83a76b0SSuyog Pawar */ 2181*c83a76b0SSuyog Pawar WORD8 i1_sub_layer_ordering_info_present_flag; 2182*c83a76b0SSuyog Pawar /** 2183*c83a76b0SSuyog Pawar * vps_max_sub_layers_minus1 2184*c83a76b0SSuyog Pawar */ 2185*c83a76b0SSuyog Pawar WORD8 i1_vps_max_sub_layers; 2186*c83a76b0SSuyog Pawar 2187*c83a76b0SSuyog Pawar /** 2188*c83a76b0SSuyog Pawar * vps_max_dec_pic_buffering 2189*c83a76b0SSuyog Pawar */ 2190*c83a76b0SSuyog Pawar WORD8 ai1_vps_max_dec_pic_buffering[VPS_MAX_SUB_LAYERS]; 2191*c83a76b0SSuyog Pawar 2192*c83a76b0SSuyog Pawar /** 2193*c83a76b0SSuyog Pawar * vps_max_num_reorder_pics 2194*c83a76b0SSuyog Pawar */ 2195*c83a76b0SSuyog Pawar WORD8 ai1_vps_max_num_reorder_pics[VPS_MAX_SUB_LAYERS]; 2196*c83a76b0SSuyog Pawar 2197*c83a76b0SSuyog Pawar /** 2198*c83a76b0SSuyog Pawar * vps_max_latency_increase 2199*c83a76b0SSuyog Pawar */ 2200*c83a76b0SSuyog Pawar WORD8 ai1_vps_max_latency_increase[VPS_MAX_SUB_LAYERS]; 2201*c83a76b0SSuyog Pawar 2202*c83a76b0SSuyog Pawar /** 2203*c83a76b0SSuyog Pawar * vps_num_hrd_parameters 2204*c83a76b0SSuyog Pawar */ 2205*c83a76b0SSuyog Pawar WORD8 i1_vps_num_hrd_parameters; 2206*c83a76b0SSuyog Pawar 2207*c83a76b0SSuyog Pawar /** 2208*c83a76b0SSuyog Pawar * vps_max_nuh_reserved_zero_layer_id 2209*c83a76b0SSuyog Pawar */ 2210*c83a76b0SSuyog Pawar WORD8 i1_vps_max_nuh_reserved_zero_layer_id; 2211*c83a76b0SSuyog Pawar 2212*c83a76b0SSuyog Pawar /** 2213*c83a76b0SSuyog Pawar * vps_num_op_sets 2214*c83a76b0SSuyog Pawar */ 2215*c83a76b0SSuyog Pawar WORD8 i1_vps_num_op_sets; 2216*c83a76b0SSuyog Pawar 2217*c83a76b0SSuyog Pawar /** 2218*c83a76b0SSuyog Pawar * layer_id_included_flag 2219*c83a76b0SSuyog Pawar */ 2220*c83a76b0SSuyog Pawar //WORD8 ai1_layer_id_included_flag[2][MAX_NUH_LAYERS]; 2221*c83a76b0SSuyog Pawar /** 2222*c83a76b0SSuyog Pawar * Profile, Tier and Level info 2223*c83a76b0SSuyog Pawar */ 2224*c83a76b0SSuyog Pawar profile_tier_lvl_info_t s_ptl; 2225*c83a76b0SSuyog Pawar 2226*c83a76b0SSuyog Pawar /** 2227*c83a76b0SSuyog Pawar * bit_rate_info_present_flag[i] 2228*c83a76b0SSuyog Pawar */ 2229*c83a76b0SSuyog Pawar WORD8 ai1_bit_rate_info_present_flag[VPS_MAX_SUB_LAYERS]; 2230*c83a76b0SSuyog Pawar 2231*c83a76b0SSuyog Pawar /** 2232*c83a76b0SSuyog Pawar * pic_rate_info_present_flag[i] 2233*c83a76b0SSuyog Pawar */ 2234*c83a76b0SSuyog Pawar WORD8 ai1_pic_rate_info_present_flag[VPS_MAX_SUB_LAYERS]; 2235*c83a76b0SSuyog Pawar 2236*c83a76b0SSuyog Pawar /** 2237*c83a76b0SSuyog Pawar * avg_bit_rate[i] 2238*c83a76b0SSuyog Pawar */ 2239*c83a76b0SSuyog Pawar UWORD16 au2_avg_bit_rate[VPS_MAX_SUB_LAYERS]; 2240*c83a76b0SSuyog Pawar 2241*c83a76b0SSuyog Pawar /** 2242*c83a76b0SSuyog Pawar * max_bit_rate[i] 2243*c83a76b0SSuyog Pawar */ 2244*c83a76b0SSuyog Pawar UWORD16 au2_max_bit_rate[VPS_MAX_SUB_LAYERS]; 2245*c83a76b0SSuyog Pawar 2246*c83a76b0SSuyog Pawar /** 2247*c83a76b0SSuyog Pawar * constant_pic_rate_idc[i] 2248*c83a76b0SSuyog Pawar */ 2249*c83a76b0SSuyog Pawar WORD8 ai1_constant_pic_rate_idc[VPS_MAX_SUB_LAYERS]; 2250*c83a76b0SSuyog Pawar 2251*c83a76b0SSuyog Pawar /** 2252*c83a76b0SSuyog Pawar * avg_pic_rate[i] 2253*c83a76b0SSuyog Pawar */ 2254*c83a76b0SSuyog Pawar UWORD16 au2_avg_pic_rate[VPS_MAX_SUB_LAYERS]; 2255*c83a76b0SSuyog Pawar }vps_t; 2256*c83a76b0SSuyog Pawar 2257*c83a76b0SSuyog Pawar 2258*c83a76b0SSuyog Pawar /** 2259*c83a76b0SSuyog Pawar * Structure to hold SPS info 2260*c83a76b0SSuyog Pawar */ 2261*c83a76b0SSuyog Pawar typedef struct 2262*c83a76b0SSuyog Pawar { 2263*c83a76b0SSuyog Pawar /** 2264*c83a76b0SSuyog Pawar * pic_width_in_luma_samples 2265*c83a76b0SSuyog Pawar */ 2266*c83a76b0SSuyog Pawar WORD16 i2_pic_width_in_luma_samples; 2267*c83a76b0SSuyog Pawar 2268*c83a76b0SSuyog Pawar /** 2269*c83a76b0SSuyog Pawar * pic_height_in_luma_samples 2270*c83a76b0SSuyog Pawar */ 2271*c83a76b0SSuyog Pawar WORD16 i2_pic_height_in_luma_samples; 2272*c83a76b0SSuyog Pawar 2273*c83a76b0SSuyog Pawar /** 2274*c83a76b0SSuyog Pawar * pic_crop_left_offset 2275*c83a76b0SSuyog Pawar */ 2276*c83a76b0SSuyog Pawar WORD16 i2_pic_crop_left_offset; 2277*c83a76b0SSuyog Pawar 2278*c83a76b0SSuyog Pawar /** 2279*c83a76b0SSuyog Pawar * pic_crop_right_offset 2280*c83a76b0SSuyog Pawar */ 2281*c83a76b0SSuyog Pawar WORD16 i2_pic_crop_right_offset; 2282*c83a76b0SSuyog Pawar 2283*c83a76b0SSuyog Pawar /** 2284*c83a76b0SSuyog Pawar * pic_crop_top_offset 2285*c83a76b0SSuyog Pawar */ 2286*c83a76b0SSuyog Pawar WORD16 i2_pic_crop_top_offset; 2287*c83a76b0SSuyog Pawar 2288*c83a76b0SSuyog Pawar /** 2289*c83a76b0SSuyog Pawar * pic_crop_bottom_offset 2290*c83a76b0SSuyog Pawar */ 2291*c83a76b0SSuyog Pawar WORD16 i2_pic_crop_bottom_offset; 2292*c83a76b0SSuyog Pawar 2293*c83a76b0SSuyog Pawar /** 2294*c83a76b0SSuyog Pawar * seq_parameter_set_id 2295*c83a76b0SSuyog Pawar */ 2296*c83a76b0SSuyog Pawar WORD8 i1_sps_id; 2297*c83a76b0SSuyog Pawar 2298*c83a76b0SSuyog Pawar /** 2299*c83a76b0SSuyog Pawar * video_parameter_set_id 2300*c83a76b0SSuyog Pawar */ 2301*c83a76b0SSuyog Pawar WORD8 i1_vps_id; 2302*c83a76b0SSuyog Pawar 2303*c83a76b0SSuyog Pawar /** 2304*c83a76b0SSuyog Pawar * sps_max_sub_layers_minus1 2305*c83a76b0SSuyog Pawar */ 2306*c83a76b0SSuyog Pawar WORD8 i1_sps_max_sub_layers; 2307*c83a76b0SSuyog Pawar 2308*c83a76b0SSuyog Pawar /** 2309*c83a76b0SSuyog Pawar * chroma_format_idc 2310*c83a76b0SSuyog Pawar */ 2311*c83a76b0SSuyog Pawar WORD8 i1_chroma_format_idc; 2312*c83a76b0SSuyog Pawar 2313*c83a76b0SSuyog Pawar /** 2314*c83a76b0SSuyog Pawar * Bit depth of luma samples 2315*c83a76b0SSuyog Pawar */ 2316*c83a76b0SSuyog Pawar WORD8 i1_bit_depth_luma_minus8; 2317*c83a76b0SSuyog Pawar 2318*c83a76b0SSuyog Pawar /** 2319*c83a76b0SSuyog Pawar * Bit depth of chrma samples 2320*c83a76b0SSuyog Pawar */ 2321*c83a76b0SSuyog Pawar WORD8 i1_bit_depth_chroma_minus8; 2322*c83a76b0SSuyog Pawar 2323*c83a76b0SSuyog Pawar /* separate_colour_plane_flag */ 2324*c83a76b0SSuyog Pawar WORD8 i1_separate_colour_plane_flag; 2325*c83a76b0SSuyog Pawar 2326*c83a76b0SSuyog Pawar /** 2327*c83a76b0SSuyog Pawar * pic_cropping_flag 2328*c83a76b0SSuyog Pawar */ 2329*c83a76b0SSuyog Pawar WORD8 i1_pic_cropping_flag; 2330*c83a76b0SSuyog Pawar 2331*c83a76b0SSuyog Pawar /** 2332*c83a76b0SSuyog Pawar * pcm_enabled_flag 2333*c83a76b0SSuyog Pawar */ 2334*c83a76b0SSuyog Pawar WORD8 i1_pcm_enabled_flag; 2335*c83a76b0SSuyog Pawar 2336*c83a76b0SSuyog Pawar /** 2337*c83a76b0SSuyog Pawar * pcm_sample_bit_depth_luma 2338*c83a76b0SSuyog Pawar */ 2339*c83a76b0SSuyog Pawar WORD8 i1_pcm_sample_bit_depth_luma; 2340*c83a76b0SSuyog Pawar 2341*c83a76b0SSuyog Pawar /** 2342*c83a76b0SSuyog Pawar * pcm_sample_bit_depth_chroma 2343*c83a76b0SSuyog Pawar */ 2344*c83a76b0SSuyog Pawar WORD8 i1_pcm_sample_bit_depth_chroma; 2345*c83a76b0SSuyog Pawar 2346*c83a76b0SSuyog Pawar /** 2347*c83a76b0SSuyog Pawar * log2_max_pic_order_cnt_lsb_minus4 2348*c83a76b0SSuyog Pawar */ 2349*c83a76b0SSuyog Pawar WORD8 i1_log2_max_pic_order_cnt_lsb; 2350*c83a76b0SSuyog Pawar /** 2351*c83a76b0SSuyog Pawar * sps_sub_layer_ordering_info_present_flag 2352*c83a76b0SSuyog Pawar */ 2353*c83a76b0SSuyog Pawar WORD8 i1_sps_sub_layer_ordering_info_present_flag; 2354*c83a76b0SSuyog Pawar /** 2355*c83a76b0SSuyog Pawar * sps_max_dec_pic_buffering 2356*c83a76b0SSuyog Pawar */ 2357*c83a76b0SSuyog Pawar WORD8 ai1_sps_max_dec_pic_buffering[SPS_MAX_SUB_LAYERS]; 2358*c83a76b0SSuyog Pawar 2359*c83a76b0SSuyog Pawar /** 2360*c83a76b0SSuyog Pawar * sps_max_num_reorder_pics 2361*c83a76b0SSuyog Pawar */ 2362*c83a76b0SSuyog Pawar WORD8 ai1_sps_max_num_reorder_pics[SPS_MAX_SUB_LAYERS]; 2363*c83a76b0SSuyog Pawar 2364*c83a76b0SSuyog Pawar /** 2365*c83a76b0SSuyog Pawar * sps_max_latency_increase 2366*c83a76b0SSuyog Pawar */ 2367*c83a76b0SSuyog Pawar WORD8 ai1_sps_max_latency_increase[SPS_MAX_SUB_LAYERS]; 2368*c83a76b0SSuyog Pawar 2369*c83a76b0SSuyog Pawar /** 2370*c83a76b0SSuyog Pawar * log2_min_coding_block_size_minus3 2371*c83a76b0SSuyog Pawar */ 2372*c83a76b0SSuyog Pawar WORD8 i1_log2_min_coding_block_size; 2373*c83a76b0SSuyog Pawar 2374*c83a76b0SSuyog Pawar /** 2375*c83a76b0SSuyog Pawar * log2_diff_max_min_coding_block_size 2376*c83a76b0SSuyog Pawar */ 2377*c83a76b0SSuyog Pawar WORD8 i1_log2_diff_max_min_coding_block_size; 2378*c83a76b0SSuyog Pawar 2379*c83a76b0SSuyog Pawar /** 2380*c83a76b0SSuyog Pawar * log2_min_transform_block_size_minus2 2381*c83a76b0SSuyog Pawar */ 2382*c83a76b0SSuyog Pawar WORD8 i1_log2_min_transform_block_size; 2383*c83a76b0SSuyog Pawar 2384*c83a76b0SSuyog Pawar /** 2385*c83a76b0SSuyog Pawar * log2_diff_max_min_transform_block_size 2386*c83a76b0SSuyog Pawar */ 2387*c83a76b0SSuyog Pawar WORD8 i1_log2_diff_max_min_transform_block_size; 2388*c83a76b0SSuyog Pawar 2389*c83a76b0SSuyog Pawar /** 2390*c83a76b0SSuyog Pawar * log2_min_pcm_coding_block_size_minus3 2391*c83a76b0SSuyog Pawar */ 2392*c83a76b0SSuyog Pawar WORD8 i1_log2_min_pcm_coding_block_size; 2393*c83a76b0SSuyog Pawar 2394*c83a76b0SSuyog Pawar /** 2395*c83a76b0SSuyog Pawar * log2_diff_max_min_pcm_coding_block_size 2396*c83a76b0SSuyog Pawar */ 2397*c83a76b0SSuyog Pawar WORD8 i1_log2_diff_max_min_pcm_coding_block_size; 2398*c83a76b0SSuyog Pawar 2399*c83a76b0SSuyog Pawar /** 2400*c83a76b0SSuyog Pawar * max_transform_hierarchy_depth_inter 2401*c83a76b0SSuyog Pawar */ 2402*c83a76b0SSuyog Pawar WORD8 i1_max_transform_hierarchy_depth_inter; 2403*c83a76b0SSuyog Pawar 2404*c83a76b0SSuyog Pawar /** 2405*c83a76b0SSuyog Pawar * max_transform_hierarchy_depth_intra 2406*c83a76b0SSuyog Pawar */ 2407*c83a76b0SSuyog Pawar WORD8 i1_max_transform_hierarchy_depth_intra; 2408*c83a76b0SSuyog Pawar 2409*c83a76b0SSuyog Pawar /** 2410*c83a76b0SSuyog Pawar * scaling_list_enable_flag 2411*c83a76b0SSuyog Pawar */ 2412*c83a76b0SSuyog Pawar WORD8 i1_scaling_list_enable_flag; 2413*c83a76b0SSuyog Pawar 2414*c83a76b0SSuyog Pawar /** 2415*c83a76b0SSuyog Pawar * sps_scaling_list_data_present_flag 2416*c83a76b0SSuyog Pawar */ 2417*c83a76b0SSuyog Pawar WORD8 i1_sps_scaling_list_data_present_flag; 2418*c83a76b0SSuyog Pawar 2419*c83a76b0SSuyog Pawar /** 2420*c83a76b0SSuyog Pawar * amp_enabled_flag 2421*c83a76b0SSuyog Pawar */ 2422*c83a76b0SSuyog Pawar WORD8 i1_amp_enabled_flag; 2423*c83a76b0SSuyog Pawar 2424*c83a76b0SSuyog Pawar /** 2425*c83a76b0SSuyog Pawar * sample_adaptive_offset_enabled_flag 2426*c83a76b0SSuyog Pawar */ 2427*c83a76b0SSuyog Pawar WORD8 i1_sample_adaptive_offset_enabled_flag; 2428*c83a76b0SSuyog Pawar 2429*c83a76b0SSuyog Pawar /** 2430*c83a76b0SSuyog Pawar * pcm_loop_filter_disable_flag 2431*c83a76b0SSuyog Pawar */ 2432*c83a76b0SSuyog Pawar WORD8 i1_pcm_loop_filter_disable_flag; 2433*c83a76b0SSuyog Pawar 2434*c83a76b0SSuyog Pawar /** 2435*c83a76b0SSuyog Pawar * sps_temporal_id_nesting_flag 2436*c83a76b0SSuyog Pawar */ 2437*c83a76b0SSuyog Pawar WORD8 i1_sps_temporal_id_nesting_flag; 2438*c83a76b0SSuyog Pawar 2439*c83a76b0SSuyog Pawar /** 2440*c83a76b0SSuyog Pawar * num_short_term_ref_pic_sets 2441*c83a76b0SSuyog Pawar */ 2442*c83a76b0SSuyog Pawar WORD8 i1_num_short_term_ref_pic_sets; 2443*c83a76b0SSuyog Pawar 2444*c83a76b0SSuyog Pawar /** 2445*c83a76b0SSuyog Pawar * long_term_ref_pics_present_flag 2446*c83a76b0SSuyog Pawar */ 2447*c83a76b0SSuyog Pawar WORD8 i1_long_term_ref_pics_present_flag; 2448*c83a76b0SSuyog Pawar 2449*c83a76b0SSuyog Pawar /** 2450*c83a76b0SSuyog Pawar * num_long_term_ref_pics_sps 2451*c83a76b0SSuyog Pawar */ 2452*c83a76b0SSuyog Pawar WORD8 i1_num_long_term_ref_pics_sps; 2453*c83a76b0SSuyog Pawar 2454*c83a76b0SSuyog Pawar /** 2455*c83a76b0SSuyog Pawar * lt_ref_pic_poc_lsb_sps[] 2456*c83a76b0SSuyog Pawar */ 2457*c83a76b0SSuyog Pawar UWORD16 au2_lt_ref_pic_poc_lsb_sps[MAX_LTREF_PICS_SPS]; 2458*c83a76b0SSuyog Pawar 2459*c83a76b0SSuyog Pawar /** 2460*c83a76b0SSuyog Pawar * used_by_curr_pic_lt_sps_flag[] 2461*c83a76b0SSuyog Pawar */ 2462*c83a76b0SSuyog Pawar WORD8 ai1_used_by_curr_pic_lt_sps_flag[MAX_LTREF_PICS_SPS]; 2463*c83a76b0SSuyog Pawar 2464*c83a76b0SSuyog Pawar /** 2465*c83a76b0SSuyog Pawar * sps_temporal_mvp_enable_flag 2466*c83a76b0SSuyog Pawar */ 2467*c83a76b0SSuyog Pawar WORD8 i1_sps_temporal_mvp_enable_flag; 2468*c83a76b0SSuyog Pawar 2469*c83a76b0SSuyog Pawar /** 2470*c83a76b0SSuyog Pawar * strong_intra_smoothing_enable_flag 2471*c83a76b0SSuyog Pawar */ 2472*c83a76b0SSuyog Pawar WORD8 i1_strong_intra_smoothing_enable_flag; 2473*c83a76b0SSuyog Pawar 2474*c83a76b0SSuyog Pawar /** 2475*c83a76b0SSuyog Pawar * vui_parameters_present_flag 2476*c83a76b0SSuyog Pawar */ 2477*c83a76b0SSuyog Pawar WORD8 i1_vui_parameters_present_flag; 2478*c83a76b0SSuyog Pawar 2479*c83a76b0SSuyog Pawar /** 2480*c83a76b0SSuyog Pawar * vui parameters Structure info 2481*c83a76b0SSuyog Pawar */ 2482*c83a76b0SSuyog Pawar vui_t s_vui_parameters; 2483*c83a76b0SSuyog Pawar 2484*c83a76b0SSuyog Pawar /** 2485*c83a76b0SSuyog Pawar * Log2(CTB Size) in luma units 2486*c83a76b0SSuyog Pawar */ 2487*c83a76b0SSuyog Pawar 2488*c83a76b0SSuyog Pawar WORD8 i1_log2_ctb_size; 2489*c83a76b0SSuyog Pawar 2490*c83a76b0SSuyog Pawar /** 2491*c83a76b0SSuyog Pawar * Maximum transform block size 2492*c83a76b0SSuyog Pawar */ 2493*c83a76b0SSuyog Pawar WORD8 i1_log2_max_transform_block_size; 2494*c83a76b0SSuyog Pawar 2495*c83a76b0SSuyog Pawar /** 2496*c83a76b0SSuyog Pawar * Picture width in CTB units 2497*c83a76b0SSuyog Pawar */ 2498*c83a76b0SSuyog Pawar 2499*c83a76b0SSuyog Pawar WORD16 i2_pic_wd_in_ctb; 2500*c83a76b0SSuyog Pawar 2501*c83a76b0SSuyog Pawar /** 2502*c83a76b0SSuyog Pawar * Picture height in CTB units 2503*c83a76b0SSuyog Pawar */ 2504*c83a76b0SSuyog Pawar 2505*c83a76b0SSuyog Pawar WORD16 i2_pic_ht_in_ctb; 2506*c83a76b0SSuyog Pawar 2507*c83a76b0SSuyog Pawar /** 2508*c83a76b0SSuyog Pawar * Picture width in min CB units 2509*c83a76b0SSuyog Pawar */ 2510*c83a76b0SSuyog Pawar 2511*c83a76b0SSuyog Pawar WORD16 i2_pic_wd_in_min_cb; 2512*c83a76b0SSuyog Pawar 2513*c83a76b0SSuyog Pawar /** 2514*c83a76b0SSuyog Pawar * Picture height in min CB units 2515*c83a76b0SSuyog Pawar */ 2516*c83a76b0SSuyog Pawar 2517*c83a76b0SSuyog Pawar WORD16 i2_pic_ht_in_min_cb; 2518*c83a76b0SSuyog Pawar 2519*c83a76b0SSuyog Pawar /** 2520*c83a76b0SSuyog Pawar * Picture size in CTB units 2521*c83a76b0SSuyog Pawar */ 2522*c83a76b0SSuyog Pawar WORD32 i4_pic_size_in_ctb; 2523*c83a76b0SSuyog Pawar 2524*c83a76b0SSuyog Pawar /** 2525*c83a76b0SSuyog Pawar * Profile, Tier and Level info 2526*c83a76b0SSuyog Pawar */ 2527*c83a76b0SSuyog Pawar 2528*c83a76b0SSuyog Pawar profile_tier_lvl_info_t s_ptl; 2529*c83a76b0SSuyog Pawar 2530*c83a76b0SSuyog Pawar /** 2531*c83a76b0SSuyog Pawar * Short term reference pic set 2532*c83a76b0SSuyog Pawar */ 2533*c83a76b0SSuyog Pawar stref_picset_t as_stref_picset[MAX_STREF_PICS_SPS]; 2534*c83a76b0SSuyog Pawar 2535*c83a76b0SSuyog Pawar /** 2536*c83a76b0SSuyog Pawar * Pointer to scaling matrix 2537*c83a76b0SSuyog Pawar */ 2538*c83a76b0SSuyog Pawar /*************************************************************************/ 2539*c83a76b0SSuyog Pawar /* Contanis the matrice in the following order in a 1D buffer */ 2540*c83a76b0SSuyog Pawar /* Intra 4 x 4 Y, 4 x 4 U, 4 x 4 V */ 2541*c83a76b0SSuyog Pawar /* Inter 4 x 4 Y, 4 x 4 U, 4 x 4 V */ 2542*c83a76b0SSuyog Pawar /* Intra 8 x 8 Y, 8 x 8 U, 8 x 8 V */ 2543*c83a76b0SSuyog Pawar /* Inter 8 x 8 Y, 8 x 8 U, 8 x 8 V */ 2544*c83a76b0SSuyog Pawar /* Intra 16x16 Y, 16x16 U, 16x16 V */ 2545*c83a76b0SSuyog Pawar /* Inter 16x16 Y, 16x16 U, 16x16 V */ 2546*c83a76b0SSuyog Pawar /* Intra 32x32 Y */ 2547*c83a76b0SSuyog Pawar /* Inter 32x32 Y */ 2548*c83a76b0SSuyog Pawar /*************************************************************************/ 2549*c83a76b0SSuyog Pawar WORD16 *pi2_scaling_mat; 2550*c83a76b0SSuyog Pawar 2551*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE 2552*c83a76b0SSuyog Pawar 2553*c83a76b0SSuyog Pawar /** 2554*c83a76b0SSuyog Pawar * transform_skip_rotation_enabled_flag 2555*c83a76b0SSuyog Pawar */ 2556*c83a76b0SSuyog Pawar WORD8 i1_transform_skip_rotation_enabled_flag; 2557*c83a76b0SSuyog Pawar 2558*c83a76b0SSuyog Pawar /** 2559*c83a76b0SSuyog Pawar * transform_skip_context_enabled_flag 2560*c83a76b0SSuyog Pawar */ 2561*c83a76b0SSuyog Pawar WORD8 i1_transform_skip_context_enabled_flag; 2562*c83a76b0SSuyog Pawar 2563*c83a76b0SSuyog Pawar /** 2564*c83a76b0SSuyog Pawar * implicit_rdpcm_enabled_flag 2565*c83a76b0SSuyog Pawar */ 2566*c83a76b0SSuyog Pawar WORD8 i1_implicit_rdpcm_enabled_flag; 2567*c83a76b0SSuyog Pawar 2568*c83a76b0SSuyog Pawar /** 2569*c83a76b0SSuyog Pawar * explicit_rdpcm_enabled_flag 2570*c83a76b0SSuyog Pawar */ 2571*c83a76b0SSuyog Pawar WORD8 i1_explicit_rdpcm_enabled_flag; 2572*c83a76b0SSuyog Pawar 2573*c83a76b0SSuyog Pawar /** 2574*c83a76b0SSuyog Pawar * extended_precision_processing_flag 2575*c83a76b0SSuyog Pawar */ 2576*c83a76b0SSuyog Pawar WORD8 i1_extended_precision_processing_flag; 2577*c83a76b0SSuyog Pawar 2578*c83a76b0SSuyog Pawar /** 2579*c83a76b0SSuyog Pawar * intra_smoothing_disabled_flag 2580*c83a76b0SSuyog Pawar */ 2581*c83a76b0SSuyog Pawar WORD8 i1_intra_smoothing_disabled_flag; 2582*c83a76b0SSuyog Pawar 2583*c83a76b0SSuyog Pawar /** 2584*c83a76b0SSuyog Pawar * high_precision_offsets_enabled_flag 2585*c83a76b0SSuyog Pawar */ 2586*c83a76b0SSuyog Pawar WORD8 i1_use_high_precision_pred_wt; 2587*c83a76b0SSuyog Pawar 2588*c83a76b0SSuyog Pawar /** 2589*c83a76b0SSuyog Pawar * fast_rice_adaptation_enabled_flag 2590*c83a76b0SSuyog Pawar */ 2591*c83a76b0SSuyog Pawar WORD8 i1_fast_rice_adaptation_enabled_flag; 2592*c83a76b0SSuyog Pawar 2593*c83a76b0SSuyog Pawar /** 2594*c83a76b0SSuyog Pawar * cabac_bypass_alignment_enabled_flag 2595*c83a76b0SSuyog Pawar */ 2596*c83a76b0SSuyog Pawar WORD8 i1_align_cabac_before_bypass; 2597*c83a76b0SSuyog Pawar #endif 2598*c83a76b0SSuyog Pawar 2599*c83a76b0SSuyog Pawar /* 2600*c83a76b0SSuyog Pawar * Flag indicating if the SPS is parsed 2601*c83a76b0SSuyog Pawar */ 2602*c83a76b0SSuyog Pawar WORD8 i1_sps_valid; 2603*c83a76b0SSuyog Pawar 2604*c83a76b0SSuyog Pawar }sps_t; 2605*c83a76b0SSuyog Pawar 2606*c83a76b0SSuyog Pawar /** 2607*c83a76b0SSuyog Pawar * Structure to hold PPS info 2608*c83a76b0SSuyog Pawar */ 2609*c83a76b0SSuyog Pawar typedef struct 2610*c83a76b0SSuyog Pawar { 2611*c83a76b0SSuyog Pawar /** 2612*c83a76b0SSuyog Pawar * Pointer to scaling matrix 2613*c83a76b0SSuyog Pawar */ 2614*c83a76b0SSuyog Pawar /*************************************************************************/ 2615*c83a76b0SSuyog Pawar /* Contanis the matrice in the following order in a 1D buffer */ 2616*c83a76b0SSuyog Pawar /* Intra 4 x 4 Y, 4 x 4 U, 4 x 4 V */ 2617*c83a76b0SSuyog Pawar /* Inter 4 x 4 Y, 4 x 4 U, 4 x 4 V */ 2618*c83a76b0SSuyog Pawar /* Intra 8 x 8 Y, 8 x 8 U, 8 x 8 V */ 2619*c83a76b0SSuyog Pawar /* Inter 8 x 8 Y, 8 x 8 U, 8 x 8 V */ 2620*c83a76b0SSuyog Pawar /* Intra 16x16 Y, 16x16 U, 16x16 V */ 2621*c83a76b0SSuyog Pawar /* Inter 16x16 Y, 16x16 U, 16x16 V */ 2622*c83a76b0SSuyog Pawar /* Intra 32x32 Y */ 2623*c83a76b0SSuyog Pawar /* Inter 32x32 Y */ 2624*c83a76b0SSuyog Pawar /*************************************************************************/ 2625*c83a76b0SSuyog Pawar WORD16 *pi2_scaling_mat; 2626*c83a76b0SSuyog Pawar 2627*c83a76b0SSuyog Pawar /** 2628*c83a76b0SSuyog Pawar * Pointer to an array containing tile info such as position, width, height 2629*c83a76b0SSuyog Pawar * of each tile 2630*c83a76b0SSuyog Pawar */ 2631*c83a76b0SSuyog Pawar 2632*c83a76b0SSuyog Pawar /* column_width_minus1[ i ] and row_height_minus1[ i ] */ 2633*c83a76b0SSuyog Pawar tile_t *ps_tile; 2634*c83a76b0SSuyog Pawar 2635*c83a76b0SSuyog Pawar /** 2636*c83a76b0SSuyog Pawar * pic_parameter_set_id 2637*c83a76b0SSuyog Pawar */ 2638*c83a76b0SSuyog Pawar WORD8 i1_pps_id; 2639*c83a76b0SSuyog Pawar 2640*c83a76b0SSuyog Pawar /** 2641*c83a76b0SSuyog Pawar * seq_parameter_set_id 2642*c83a76b0SSuyog Pawar */ 2643*c83a76b0SSuyog Pawar WORD8 i1_sps_id; 2644*c83a76b0SSuyog Pawar 2645*c83a76b0SSuyog Pawar /** 2646*c83a76b0SSuyog Pawar * sign_data_hiding_flag 2647*c83a76b0SSuyog Pawar */ 2648*c83a76b0SSuyog Pawar WORD8 i1_sign_data_hiding_flag; 2649*c83a76b0SSuyog Pawar 2650*c83a76b0SSuyog Pawar /** 2651*c83a76b0SSuyog Pawar * cabac_init_present_flag 2652*c83a76b0SSuyog Pawar */ 2653*c83a76b0SSuyog Pawar WORD8 i1_cabac_init_present_flag; 2654*c83a76b0SSuyog Pawar 2655*c83a76b0SSuyog Pawar /** 2656*c83a76b0SSuyog Pawar * num_ref_idx_l0_default_active_minus1 2657*c83a76b0SSuyog Pawar */ 2658*c83a76b0SSuyog Pawar WORD8 i1_num_ref_idx_l0_default_active; 2659*c83a76b0SSuyog Pawar 2660*c83a76b0SSuyog Pawar /** 2661*c83a76b0SSuyog Pawar * num_ref_idx_l1_default_active_minus1 2662*c83a76b0SSuyog Pawar */ 2663*c83a76b0SSuyog Pawar WORD8 i1_num_ref_idx_l1_default_active; 2664*c83a76b0SSuyog Pawar 2665*c83a76b0SSuyog Pawar /** 2666*c83a76b0SSuyog Pawar * pic_init_qp_minus26 2667*c83a76b0SSuyog Pawar */ 2668*c83a76b0SSuyog Pawar WORD8 i1_pic_init_qp; 2669*c83a76b0SSuyog Pawar 2670*c83a76b0SSuyog Pawar /** 2671*c83a76b0SSuyog Pawar * constrained_intra_pred_flag 2672*c83a76b0SSuyog Pawar */ 2673*c83a76b0SSuyog Pawar WORD8 i1_constrained_intra_pred_flag; 2674*c83a76b0SSuyog Pawar 2675*c83a76b0SSuyog Pawar /** 2676*c83a76b0SSuyog Pawar * transform_skip_enabled_flag 2677*c83a76b0SSuyog Pawar */ 2678*c83a76b0SSuyog Pawar WORD8 i1_transform_skip_enabled_flag; 2679*c83a76b0SSuyog Pawar 2680*c83a76b0SSuyog Pawar /** 2681*c83a76b0SSuyog Pawar * cu_qp_delta_enabled_flag 2682*c83a76b0SSuyog Pawar */ 2683*c83a76b0SSuyog Pawar WORD8 i1_cu_qp_delta_enabled_flag; 2684*c83a76b0SSuyog Pawar 2685*c83a76b0SSuyog Pawar /** 2686*c83a76b0SSuyog Pawar * diff_cu_qp_delta_depth 2687*c83a76b0SSuyog Pawar */ 2688*c83a76b0SSuyog Pawar WORD8 i1_diff_cu_qp_delta_depth; 2689*c83a76b0SSuyog Pawar 2690*c83a76b0SSuyog Pawar /** 2691*c83a76b0SSuyog Pawar * pic_cb_qp_offset 2692*c83a76b0SSuyog Pawar */ 2693*c83a76b0SSuyog Pawar WORD8 i1_pic_cb_qp_offset; 2694*c83a76b0SSuyog Pawar 2695*c83a76b0SSuyog Pawar /** 2696*c83a76b0SSuyog Pawar * pic_cr_qp_offset 2697*c83a76b0SSuyog Pawar */ 2698*c83a76b0SSuyog Pawar WORD8 i1_pic_cr_qp_offset; 2699*c83a76b0SSuyog Pawar 2700*c83a76b0SSuyog Pawar /** 2701*c83a76b0SSuyog Pawar * pic_slice_level_chroma_qp_offsets_present_flag 2702*c83a76b0SSuyog Pawar */ 2703*c83a76b0SSuyog Pawar WORD8 i1_pic_slice_level_chroma_qp_offsets_present_flag; 2704*c83a76b0SSuyog Pawar 2705*c83a76b0SSuyog Pawar /** 2706*c83a76b0SSuyog Pawar * weighted_pred_flag 2707*c83a76b0SSuyog Pawar */ 2708*c83a76b0SSuyog Pawar WORD8 i1_weighted_pred_flag; 2709*c83a76b0SSuyog Pawar 2710*c83a76b0SSuyog Pawar /** 2711*c83a76b0SSuyog Pawar * weighted_bipred_flag 2712*c83a76b0SSuyog Pawar */ 2713*c83a76b0SSuyog Pawar WORD8 i1_weighted_bipred_flag; 2714*c83a76b0SSuyog Pawar 2715*c83a76b0SSuyog Pawar /** 2716*c83a76b0SSuyog Pawar * output_flag_present_flag 2717*c83a76b0SSuyog Pawar */ 2718*c83a76b0SSuyog Pawar WORD8 i1_output_flag_present_flag; 2719*c83a76b0SSuyog Pawar 2720*c83a76b0SSuyog Pawar /** 2721*c83a76b0SSuyog Pawar * transquant_bypass_enable_flag 2722*c83a76b0SSuyog Pawar */ 2723*c83a76b0SSuyog Pawar WORD8 i1_transquant_bypass_enable_flag; 2724*c83a76b0SSuyog Pawar 2725*c83a76b0SSuyog Pawar /** 2726*c83a76b0SSuyog Pawar * dependent_slice_enabled_flag 2727*c83a76b0SSuyog Pawar */ 2728*c83a76b0SSuyog Pawar WORD8 i1_dependent_slice_enabled_flag; 2729*c83a76b0SSuyog Pawar 2730*c83a76b0SSuyog Pawar /** 2731*c83a76b0SSuyog Pawar * tiles_enabled_flag 2732*c83a76b0SSuyog Pawar */ 2733*c83a76b0SSuyog Pawar WORD8 i1_tiles_enabled_flag; 2734*c83a76b0SSuyog Pawar 2735*c83a76b0SSuyog Pawar /** 2736*c83a76b0SSuyog Pawar * entropy_coding_sync_enabled_flag 2737*c83a76b0SSuyog Pawar */ 2738*c83a76b0SSuyog Pawar WORD8 i1_entropy_coding_sync_enabled_flag; 2739*c83a76b0SSuyog Pawar 2740*c83a76b0SSuyog Pawar /** 2741*c83a76b0SSuyog Pawar * entropy_slice_enabled_flag 2742*c83a76b0SSuyog Pawar */ 2743*c83a76b0SSuyog Pawar WORD8 i1_entropy_slice_enabled_flag; 2744*c83a76b0SSuyog Pawar 2745*c83a76b0SSuyog Pawar /** 2746*c83a76b0SSuyog Pawar * num_tile_columns_minus1 2747*c83a76b0SSuyog Pawar */ 2748*c83a76b0SSuyog Pawar WORD8 i1_num_tile_columns; 2749*c83a76b0SSuyog Pawar 2750*c83a76b0SSuyog Pawar /** 2751*c83a76b0SSuyog Pawar * num_tile_rows_minus1 2752*c83a76b0SSuyog Pawar */ 2753*c83a76b0SSuyog Pawar WORD8 i1_num_tile_rows; 2754*c83a76b0SSuyog Pawar 2755*c83a76b0SSuyog Pawar /** 2756*c83a76b0SSuyog Pawar * uniform_spacing_flag 2757*c83a76b0SSuyog Pawar */ 2758*c83a76b0SSuyog Pawar WORD8 i1_uniform_spacing_flag; 2759*c83a76b0SSuyog Pawar 2760*c83a76b0SSuyog Pawar /** 2761*c83a76b0SSuyog Pawar * loop_filter_across_tiles_enabled_flag 2762*c83a76b0SSuyog Pawar */ 2763*c83a76b0SSuyog Pawar WORD8 i1_loop_filter_across_tiles_enabled_flag; 2764*c83a76b0SSuyog Pawar 2765*c83a76b0SSuyog Pawar /** 2766*c83a76b0SSuyog Pawar * loop_filter_across_slices_enabled_flag 2767*c83a76b0SSuyog Pawar */ 2768*c83a76b0SSuyog Pawar WORD8 i1_loop_filter_across_slices_enabled_flag; 2769*c83a76b0SSuyog Pawar 2770*c83a76b0SSuyog Pawar /** 2771*c83a76b0SSuyog Pawar * deblocking_filter_control_present_flag 2772*c83a76b0SSuyog Pawar */ 2773*c83a76b0SSuyog Pawar WORD8 i1_deblocking_filter_control_present_flag; 2774*c83a76b0SSuyog Pawar 2775*c83a76b0SSuyog Pawar /** 2776*c83a76b0SSuyog Pawar * deblocking_filter_override_enabled_flag 2777*c83a76b0SSuyog Pawar */ 2778*c83a76b0SSuyog Pawar WORD8 i1_deblocking_filter_override_enabled_flag; 2779*c83a76b0SSuyog Pawar 2780*c83a76b0SSuyog Pawar /** 2781*c83a76b0SSuyog Pawar * pic_disable_deblocking_filter_flag 2782*c83a76b0SSuyog Pawar */ 2783*c83a76b0SSuyog Pawar WORD8 i1_pic_disable_deblocking_filter_flag; 2784*c83a76b0SSuyog Pawar 2785*c83a76b0SSuyog Pawar /** 2786*c83a76b0SSuyog Pawar * beta_offset_div2 2787*c83a76b0SSuyog Pawar */ 2788*c83a76b0SSuyog Pawar WORD8 i1_beta_offset_div2; 2789*c83a76b0SSuyog Pawar 2790*c83a76b0SSuyog Pawar /** 2791*c83a76b0SSuyog Pawar * tc_offset_div2 2792*c83a76b0SSuyog Pawar */ 2793*c83a76b0SSuyog Pawar WORD8 i1_tc_offset_div2; 2794*c83a76b0SSuyog Pawar 2795*c83a76b0SSuyog Pawar /** 2796*c83a76b0SSuyog Pawar * pps_scaling_list_data_present_flag 2797*c83a76b0SSuyog Pawar */ 2798*c83a76b0SSuyog Pawar WORD8 i1_pps_scaling_list_data_present_flag; 2799*c83a76b0SSuyog Pawar 2800*c83a76b0SSuyog Pawar /** 2801*c83a76b0SSuyog Pawar * lists_modification_present_flag 2802*c83a76b0SSuyog Pawar */ 2803*c83a76b0SSuyog Pawar WORD8 i1_lists_modification_present_flag; 2804*c83a76b0SSuyog Pawar 2805*c83a76b0SSuyog Pawar /** 2806*c83a76b0SSuyog Pawar * num_extra_slice_header_bits 2807*c83a76b0SSuyog Pawar */ 2808*c83a76b0SSuyog Pawar WORD8 i1_num_extra_slice_header_bits; 2809*c83a76b0SSuyog Pawar 2810*c83a76b0SSuyog Pawar /** 2811*c83a76b0SSuyog Pawar * log2_parallel_merge_level_minus2 2812*c83a76b0SSuyog Pawar */ 2813*c83a76b0SSuyog Pawar WORD8 i1_log2_parallel_merge_level; 2814*c83a76b0SSuyog Pawar 2815*c83a76b0SSuyog Pawar /** 2816*c83a76b0SSuyog Pawar * slice_header_extension_present_flag 2817*c83a76b0SSuyog Pawar */ 2818*c83a76b0SSuyog Pawar WORD8 i1_slice_header_extension_present_flag; 2819*c83a76b0SSuyog Pawar 2820*c83a76b0SSuyog Pawar /** 2821*c83a76b0SSuyog Pawar * slice_extension_present_flag 2822*c83a76b0SSuyog Pawar */ 2823*c83a76b0SSuyog Pawar WORD8 i1_slice_extension_present_flag; 2824*c83a76b0SSuyog Pawar 2825*c83a76b0SSuyog Pawar /** 2826*c83a76b0SSuyog Pawar * scaling_list_dc_coef_minus8 2827*c83a76b0SSuyog Pawar */ 2828*c83a76b0SSuyog Pawar /*************************************************************************/ 2829*c83a76b0SSuyog Pawar /* DC value of the scaling list */ 2830*c83a76b0SSuyog Pawar /* Only 16 x 16 and 32 x 32 scaling lists have valid entries. */ 2831*c83a76b0SSuyog Pawar /* Entries stored for all sizes for uniformity. */ 2832*c83a76b0SSuyog Pawar /* Remaining will be initialized to default values if used */ 2833*c83a76b0SSuyog Pawar /*************************************************************************/ 2834*c83a76b0SSuyog Pawar UWORD8 au1_scaling_list_dc_coef[TOTAL_SCALE_MAT_COUNT]; 2835*c83a76b0SSuyog Pawar 2836*c83a76b0SSuyog Pawar /** 2837*c83a76b0SSuyog Pawar * Log2MinCuQpDeltaSize 2838*c83a76b0SSuyog Pawar */ 2839*c83a76b0SSuyog Pawar WORD8 i1_log2_min_cu_qp_delta_size; 2840*c83a76b0SSuyog Pawar 2841*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE 2842*c83a76b0SSuyog Pawar /** 2843*c83a76b0SSuyog Pawar * log2_max_transform_skip_block_size_minus2 2844*c83a76b0SSuyog Pawar */ 2845*c83a76b0SSuyog Pawar WORD32 i4_log2_max_transform_skip_block_size_minus2; 2846*c83a76b0SSuyog Pawar 2847*c83a76b0SSuyog Pawar /** 2848*c83a76b0SSuyog Pawar * cross_component_prediction_enabled_flag 2849*c83a76b0SSuyog Pawar */ 2850*c83a76b0SSuyog Pawar WORD8 i1_cross_component_prediction_enabled_flag; 2851*c83a76b0SSuyog Pawar 2852*c83a76b0SSuyog Pawar /** 2853*c83a76b0SSuyog Pawar * chroma_qp_offset_list_enabled_flag 2854*c83a76b0SSuyog Pawar */ 2855*c83a76b0SSuyog Pawar WORD8 i1_chroma_qp_offset_list_enabled_flag; 2856*c83a76b0SSuyog Pawar 2857*c83a76b0SSuyog Pawar /** 2858*c83a76b0SSuyog Pawar * diff_cu_chroma_qp_offset_depth 2859*c83a76b0SSuyog Pawar */ 2860*c83a76b0SSuyog Pawar WORD32 i4_diff_cu_chroma_qp_offset_depth; 2861*c83a76b0SSuyog Pawar 2862*c83a76b0SSuyog Pawar /** 2863*c83a76b0SSuyog Pawar * chroma_qp_offset_list_len_minus1 2864*c83a76b0SSuyog Pawar */ 2865*c83a76b0SSuyog Pawar WORD32 i4_chroma_qp_offset_list_len_minus1; 2866*c83a76b0SSuyog Pawar 2867*c83a76b0SSuyog Pawar /** 2868*c83a76b0SSuyog Pawar * cb_qp_offset_list[] 2869*c83a76b0SSuyog Pawar */ 2870*c83a76b0SSuyog Pawar WORD32 i4_cb_qp_offset_list[6]; 2871*c83a76b0SSuyog Pawar 2872*c83a76b0SSuyog Pawar /** 2873*c83a76b0SSuyog Pawar * cr_qp_offset_list[] 2874*c83a76b0SSuyog Pawar */ 2875*c83a76b0SSuyog Pawar WORD32 i4_cr_qp_offset_list[6]; 2876*c83a76b0SSuyog Pawar 2877*c83a76b0SSuyog Pawar /** 2878*c83a76b0SSuyog Pawar * log2_sao_offset_scale_luma 2879*c83a76b0SSuyog Pawar */ 2880*c83a76b0SSuyog Pawar WORD8 i1_log2_sao_ofst_scale_luma; 2881*c83a76b0SSuyog Pawar 2882*c83a76b0SSuyog Pawar /** 2883*c83a76b0SSuyog Pawar * log2_sao_offset_scale_chroma 2884*c83a76b0SSuyog Pawar */ 2885*c83a76b0SSuyog Pawar WORD8 i1_log2_sao_ofst_scale_chroma; 2886*c83a76b0SSuyog Pawar 2887*c83a76b0SSuyog Pawar #endif 2888*c83a76b0SSuyog Pawar 2889*c83a76b0SSuyog Pawar /* 2890*c83a76b0SSuyog Pawar * Flag indicating if the PPS is parsed 2891*c83a76b0SSuyog Pawar */ 2892*c83a76b0SSuyog Pawar WORD8 i1_pps_valid; 2893*c83a76b0SSuyog Pawar 2894*c83a76b0SSuyog Pawar }pps_t; 2895*c83a76b0SSuyog Pawar 2896*c83a76b0SSuyog Pawar 2897*c83a76b0SSuyog Pawar /** 2898*c83a76b0SSuyog Pawar * Structure to hold slice header info 2899*c83a76b0SSuyog Pawar */ 2900*c83a76b0SSuyog Pawar typedef struct 2901*c83a76b0SSuyog Pawar { 2902*c83a76b0SSuyog Pawar /** 2903*c83a76b0SSuyog Pawar * entry_point_offset[ i ] 2904*c83a76b0SSuyog Pawar */ 2905*c83a76b0SSuyog Pawar WORD32 *pi4_entry_point_offset; 2906*c83a76b0SSuyog Pawar 2907*c83a76b0SSuyog Pawar /** 2908*c83a76b0SSuyog Pawar * poc_lsb_lt[ i ] 2909*c83a76b0SSuyog Pawar */ 2910*c83a76b0SSuyog Pawar WORD32 ai4_poc_lsb_lt[MAX_DPB_SIZE]; 2911*c83a76b0SSuyog Pawar 2912*c83a76b0SSuyog Pawar /** 2913*c83a76b0SSuyog Pawar * slice_header_extension_length 2914*c83a76b0SSuyog Pawar */ 2915*c83a76b0SSuyog Pawar WORD16 i2_slice_header_extension_length; 2916*c83a76b0SSuyog Pawar 2917*c83a76b0SSuyog Pawar /** 2918*c83a76b0SSuyog Pawar * slice_address 2919*c83a76b0SSuyog Pawar */ 2920*c83a76b0SSuyog Pawar WORD16 i2_slice_address; 2921*c83a76b0SSuyog Pawar 2922*c83a76b0SSuyog Pawar /** 2923*c83a76b0SSuyog Pawar * first_slice_in_pic_flag 2924*c83a76b0SSuyog Pawar */ 2925*c83a76b0SSuyog Pawar WORD8 i1_first_slice_in_pic_flag; 2926*c83a76b0SSuyog Pawar 2927*c83a76b0SSuyog Pawar /* PPS id */ 2928*c83a76b0SSuyog Pawar WORD8 i1_pps_id; 2929*c83a76b0SSuyog Pawar /** 2930*c83a76b0SSuyog Pawar * no_output_of_prior_pics_flag 2931*c83a76b0SSuyog Pawar */ 2932*c83a76b0SSuyog Pawar WORD8 i1_no_output_of_prior_pics_flag; 2933*c83a76b0SSuyog Pawar 2934*c83a76b0SSuyog Pawar /** 2935*c83a76b0SSuyog Pawar * dependent_slice_flag 2936*c83a76b0SSuyog Pawar */ 2937*c83a76b0SSuyog Pawar WORD8 i1_dependent_slice_flag; 2938*c83a76b0SSuyog Pawar 2939*c83a76b0SSuyog Pawar /** 2940*c83a76b0SSuyog Pawar * slice_type 2941*c83a76b0SSuyog Pawar */ 2942*c83a76b0SSuyog Pawar WORD8 i1_slice_type; 2943*c83a76b0SSuyog Pawar 2944*c83a76b0SSuyog Pawar /** 2945*c83a76b0SSuyog Pawar * pic_output_flag 2946*c83a76b0SSuyog Pawar */ 2947*c83a76b0SSuyog Pawar WORD8 i1_pic_output_flag; 2948*c83a76b0SSuyog Pawar 2949*c83a76b0SSuyog Pawar /** 2950*c83a76b0SSuyog Pawar * colour_plane_id 2951*c83a76b0SSuyog Pawar */ 2952*c83a76b0SSuyog Pawar WORD8 i1_colour_plane_id; 2953*c83a76b0SSuyog Pawar 2954*c83a76b0SSuyog Pawar /** 2955*c83a76b0SSuyog Pawar * pic_order_cnt_lsb 2956*c83a76b0SSuyog Pawar */ 2957*c83a76b0SSuyog Pawar WORD32 i4_pic_order_cnt_lsb; 2958*c83a76b0SSuyog Pawar 2959*c83a76b0SSuyog Pawar /** 2960*c83a76b0SSuyog Pawar * absolute pic_order_cnt 2961*c83a76b0SSuyog Pawar */ 2962*c83a76b0SSuyog Pawar WORD32 i4_abs_pic_order_cnt; 2963*c83a76b0SSuyog Pawar 2964*c83a76b0SSuyog Pawar /** 2965*c83a76b0SSuyog Pawar * short_term_ref_pic_set_sps_flag 2966*c83a76b0SSuyog Pawar */ 2967*c83a76b0SSuyog Pawar WORD8 i1_short_term_ref_pic_set_sps_flag; 2968*c83a76b0SSuyog Pawar 2969*c83a76b0SSuyog Pawar /** 2970*c83a76b0SSuyog Pawar * short_term_ref_pic_set_idx 2971*c83a76b0SSuyog Pawar */ 2972*c83a76b0SSuyog Pawar WORD8 i1_short_term_ref_pic_set_idx; 2973*c83a76b0SSuyog Pawar 2974*c83a76b0SSuyog Pawar /** 2975*c83a76b0SSuyog Pawar * num_long_term_sps 2976*c83a76b0SSuyog Pawar */ 2977*c83a76b0SSuyog Pawar WORD8 i1_num_long_term_sps; 2978*c83a76b0SSuyog Pawar 2979*c83a76b0SSuyog Pawar /** 2980*c83a76b0SSuyog Pawar * num_long_term_pics 2981*c83a76b0SSuyog Pawar */ 2982*c83a76b0SSuyog Pawar WORD8 i1_num_long_term_pics; 2983*c83a76b0SSuyog Pawar 2984*c83a76b0SSuyog Pawar /** 2985*c83a76b0SSuyog Pawar * lt_idx_sps[ i ] 2986*c83a76b0SSuyog Pawar */ 2987*c83a76b0SSuyog Pawar WORD8 ai1_lt_idx_sps[MAX_DPB_SIZE]; 2988*c83a76b0SSuyog Pawar 2989*c83a76b0SSuyog Pawar /** 2990*c83a76b0SSuyog Pawar * used_by_curr_pic_lt_flag[ i ] 2991*c83a76b0SSuyog Pawar */ 2992*c83a76b0SSuyog Pawar WORD8 ai1_used_by_curr_pic_lt_flag[MAX_DPB_SIZE]; 2993*c83a76b0SSuyog Pawar 2994*c83a76b0SSuyog Pawar /** 2995*c83a76b0SSuyog Pawar * delta_poc_msb_present_flag[ i ] 2996*c83a76b0SSuyog Pawar */ 2997*c83a76b0SSuyog Pawar WORD8 ai1_delta_poc_msb_present_flag[MAX_DPB_SIZE]; 2998*c83a76b0SSuyog Pawar 2999*c83a76b0SSuyog Pawar /** 3000*c83a76b0SSuyog Pawar * delta_poc_msb_cycle_lt[ i ] 3001*c83a76b0SSuyog Pawar */ 3002*c83a76b0SSuyog Pawar WORD8 ai1_delta_poc_msb_cycle_lt[MAX_DPB_SIZE]; 3003*c83a76b0SSuyog Pawar 3004*c83a76b0SSuyog Pawar /** 3005*c83a76b0SSuyog Pawar * slice_sao_luma_flag 3006*c83a76b0SSuyog Pawar */ 3007*c83a76b0SSuyog Pawar WORD8 i1_slice_sao_luma_flag; 3008*c83a76b0SSuyog Pawar 3009*c83a76b0SSuyog Pawar /** 3010*c83a76b0SSuyog Pawar * slice_sao_chroma_flag 3011*c83a76b0SSuyog Pawar */ 3012*c83a76b0SSuyog Pawar WORD8 i1_slice_sao_chroma_flag; 3013*c83a76b0SSuyog Pawar 3014*c83a76b0SSuyog Pawar /** 3015*c83a76b0SSuyog Pawar * slice_temporal_mvp_enable_flag 3016*c83a76b0SSuyog Pawar */ 3017*c83a76b0SSuyog Pawar WORD8 i1_slice_temporal_mvp_enable_flag; 3018*c83a76b0SSuyog Pawar 3019*c83a76b0SSuyog Pawar /** 3020*c83a76b0SSuyog Pawar * num_ref_idx_active_override_flag 3021*c83a76b0SSuyog Pawar */ 3022*c83a76b0SSuyog Pawar WORD8 i1_num_ref_idx_active_override_flag; 3023*c83a76b0SSuyog Pawar 3024*c83a76b0SSuyog Pawar /** 3025*c83a76b0SSuyog Pawar * num_ref_idx_l0_active_minus1 3026*c83a76b0SSuyog Pawar */ 3027*c83a76b0SSuyog Pawar WORD8 i1_num_ref_idx_l0_active; 3028*c83a76b0SSuyog Pawar 3029*c83a76b0SSuyog Pawar /** 3030*c83a76b0SSuyog Pawar * num_ref_idx_l1_active_minus1 3031*c83a76b0SSuyog Pawar */ 3032*c83a76b0SSuyog Pawar WORD8 i1_num_ref_idx_l1_active; 3033*c83a76b0SSuyog Pawar 3034*c83a76b0SSuyog Pawar /** 3035*c83a76b0SSuyog Pawar * mvd_l1_zero_flag 3036*c83a76b0SSuyog Pawar */ 3037*c83a76b0SSuyog Pawar WORD8 i1_mvd_l1_zero_flag; 3038*c83a76b0SSuyog Pawar 3039*c83a76b0SSuyog Pawar /** 3040*c83a76b0SSuyog Pawar * cabac_init_flag 3041*c83a76b0SSuyog Pawar */ 3042*c83a76b0SSuyog Pawar WORD8 i1_cabac_init_flag; 3043*c83a76b0SSuyog Pawar 3044*c83a76b0SSuyog Pawar /** 3045*c83a76b0SSuyog Pawar * collocated_from_l0_flag 3046*c83a76b0SSuyog Pawar */ 3047*c83a76b0SSuyog Pawar WORD8 i1_collocated_from_l0_flag; 3048*c83a76b0SSuyog Pawar 3049*c83a76b0SSuyog Pawar /** 3050*c83a76b0SSuyog Pawar * collocated_ref_idx 3051*c83a76b0SSuyog Pawar */ 3052*c83a76b0SSuyog Pawar WORD8 i1_collocated_ref_idx; 3053*c83a76b0SSuyog Pawar 3054*c83a76b0SSuyog Pawar /** 3055*c83a76b0SSuyog Pawar * five_minus_max_num_merge_cand 3056*c83a76b0SSuyog Pawar */ 3057*c83a76b0SSuyog Pawar WORD8 i1_max_num_merge_cand; 3058*c83a76b0SSuyog Pawar 3059*c83a76b0SSuyog Pawar /** 3060*c83a76b0SSuyog Pawar * slice_qp_delta 3061*c83a76b0SSuyog Pawar */ 3062*c83a76b0SSuyog Pawar WORD8 i1_slice_qp_delta; 3063*c83a76b0SSuyog Pawar 3064*c83a76b0SSuyog Pawar /** 3065*c83a76b0SSuyog Pawar * slice_cb_qp_offset 3066*c83a76b0SSuyog Pawar */ 3067*c83a76b0SSuyog Pawar WORD8 i1_slice_cb_qp_offset; 3068*c83a76b0SSuyog Pawar 3069*c83a76b0SSuyog Pawar /** 3070*c83a76b0SSuyog Pawar * slice_cr_qp_offset 3071*c83a76b0SSuyog Pawar */ 3072*c83a76b0SSuyog Pawar WORD8 i1_slice_cr_qp_offset; 3073*c83a76b0SSuyog Pawar 3074*c83a76b0SSuyog Pawar /** 3075*c83a76b0SSuyog Pawar * deblocking_filter_override_flag 3076*c83a76b0SSuyog Pawar */ 3077*c83a76b0SSuyog Pawar WORD8 i1_deblocking_filter_override_flag; 3078*c83a76b0SSuyog Pawar 3079*c83a76b0SSuyog Pawar /** 3080*c83a76b0SSuyog Pawar * slice_disable_deblocking_filter_flag 3081*c83a76b0SSuyog Pawar */ 3082*c83a76b0SSuyog Pawar WORD8 i1_slice_disable_deblocking_filter_flag; 3083*c83a76b0SSuyog Pawar 3084*c83a76b0SSuyog Pawar /** 3085*c83a76b0SSuyog Pawar * beta_offset_div2 3086*c83a76b0SSuyog Pawar */ 3087*c83a76b0SSuyog Pawar WORD8 i1_beta_offset_div2; 3088*c83a76b0SSuyog Pawar 3089*c83a76b0SSuyog Pawar /** 3090*c83a76b0SSuyog Pawar * tc_offset_div2 3091*c83a76b0SSuyog Pawar */ 3092*c83a76b0SSuyog Pawar WORD8 i1_tc_offset_div2; 3093*c83a76b0SSuyog Pawar 3094*c83a76b0SSuyog Pawar /** 3095*c83a76b0SSuyog Pawar * slice_loop_filter_across_slices_enabled_flag 3096*c83a76b0SSuyog Pawar */ 3097*c83a76b0SSuyog Pawar WORD8 i1_slice_loop_filter_across_slices_enabled_flag; 3098*c83a76b0SSuyog Pawar 3099*c83a76b0SSuyog Pawar /** 3100*c83a76b0SSuyog Pawar * NUmber of entry point offsets 3101*c83a76b0SSuyog Pawar */ 3102*c83a76b0SSuyog Pawar WORD32 i4_num_entry_point_offsets; 3103*c83a76b0SSuyog Pawar 3104*c83a76b0SSuyog Pawar /** 3105*c83a76b0SSuyog Pawar * offset_len_minus1 3106*c83a76b0SSuyog Pawar */ 3107*c83a76b0SSuyog Pawar WORD8 i1_offset_len; 3108*c83a76b0SSuyog Pawar 3109*c83a76b0SSuyog Pawar /** 3110*c83a76b0SSuyog Pawar * Entry point offsets 3111*c83a76b0SSuyog Pawar */ 3112*c83a76b0SSuyog Pawar WORD32 *pu4_entry_point_offset; 3113*c83a76b0SSuyog Pawar 3114*c83a76b0SSuyog Pawar /** 3115*c83a76b0SSuyog Pawar * Short term reference picture set 3116*c83a76b0SSuyog Pawar */ 3117*c83a76b0SSuyog Pawar stref_picset_t s_stref_picset; 3118*c83a76b0SSuyog Pawar 3119*c83a76b0SSuyog Pawar /** 3120*c83a76b0SSuyog Pawar * Weight and offset info for Weighted prediction 3121*c83a76b0SSuyog Pawar */ 3122*c83a76b0SSuyog Pawar pred_wt_ofst_t s_wt_ofst; 3123*c83a76b0SSuyog Pawar 3124*c83a76b0SSuyog Pawar /** 3125*c83a76b0SSuyog Pawar * Reference prediction list modification 3126*c83a76b0SSuyog Pawar */ 3127*c83a76b0SSuyog Pawar rplm_t s_rplm; 3128*c83a76b0SSuyog Pawar 3129*c83a76b0SSuyog Pawar /** 3130*c83a76b0SSuyog Pawar * First CTB' X pos : slice_address % i2_pic_wd_in_ctb 3131*c83a76b0SSuyog Pawar */ 3132*c83a76b0SSuyog Pawar WORD16 i2_ctb_x; 3133*c83a76b0SSuyog Pawar 3134*c83a76b0SSuyog Pawar /** 3135*c83a76b0SSuyog Pawar * First CTB' Y pos : slice_address / i2_pic_wd_in_ctb 3136*c83a76b0SSuyog Pawar */ 3137*c83a76b0SSuyog Pawar WORD16 i2_ctb_y; 3138*c83a76b0SSuyog Pawar 3139*c83a76b0SSuyog Pawar /** 3140*c83a76b0SSuyog Pawar * L0 Reference pic lists 3141*c83a76b0SSuyog Pawar */ 3142*c83a76b0SSuyog Pawar ref_list_t as_ref_pic_list0[MAX_DPB_SIZE]; 3143*c83a76b0SSuyog Pawar 3144*c83a76b0SSuyog Pawar /** 3145*c83a76b0SSuyog Pawar * L1 Reference pic lists 3146*c83a76b0SSuyog Pawar */ 3147*c83a76b0SSuyog Pawar ref_list_t as_ref_pic_list1[MAX_DPB_SIZE]; 3148*c83a76b0SSuyog Pawar 3149*c83a76b0SSuyog Pawar /** 3150*c83a76b0SSuyog Pawar * NAL unit type of the slice 3151*c83a76b0SSuyog Pawar */ 3152*c83a76b0SSuyog Pawar WORD8 i1_nal_unit_type; 3153*c83a76b0SSuyog Pawar 3154*c83a76b0SSuyog Pawar /** 3155*c83a76b0SSuyog Pawar * Low delay check flag 3156*c83a76b0SSuyog Pawar */ 3157*c83a76b0SSuyog Pawar WORD8 i1_low_delay_flag; 3158*c83a76b0SSuyog Pawar 3159*c83a76b0SSuyog Pawar /** 3160*c83a76b0SSuyog Pawar * The last independent slice's start ctb_x 3161*c83a76b0SSuyog Pawar * If the current slice is independent, it is the same as the current CTBs ctb_x 3162*c83a76b0SSuyog Pawar */ 3163*c83a76b0SSuyog Pawar WORD16 i2_independent_ctb_x; 3164*c83a76b0SSuyog Pawar 3165*c83a76b0SSuyog Pawar /** 3166*c83a76b0SSuyog Pawar * The last independent slice's start ctb_y 3167*c83a76b0SSuyog Pawar * If the current slice is independent, it is the same as the current CTBs ctb_y 3168*c83a76b0SSuyog Pawar */ 3169*c83a76b0SSuyog Pawar WORD16 i2_independent_ctb_y; 3170*c83a76b0SSuyog Pawar 3171*c83a76b0SSuyog Pawar #ifdef ENABLE_MAIN_REXT_PROFILE 3172*c83a76b0SSuyog Pawar /** 3173*c83a76b0SSuyog Pawar * cu_chroma_qp_offset_enabled_flag 3174*c83a76b0SSuyog Pawar */ 3175*c83a76b0SSuyog Pawar WORD8 i1_cu_chroma_qp_offset_enabled_flag; 3176*c83a76b0SSuyog Pawar #endif 3177*c83a76b0SSuyog Pawar 3178*c83a76b0SSuyog Pawar UWORD8 u1_parse_data_init_done; 3179*c83a76b0SSuyog Pawar 3180*c83a76b0SSuyog Pawar /** 3181*c83a76b0SSuyog Pawar * Temporal ID in NAL header 3182*c83a76b0SSuyog Pawar */ 3183*c83a76b0SSuyog Pawar WORD32 u4_nuh_temporal_id; 3184*c83a76b0SSuyog Pawar }slice_header_t; 3185*c83a76b0SSuyog Pawar 3186*c83a76b0SSuyog Pawar 3187*c83a76b0SSuyog Pawar 3188*c83a76b0SSuyog Pawar 3189*c83a76b0SSuyog Pawar 3190*c83a76b0SSuyog Pawar 3191*c83a76b0SSuyog Pawar 3192*c83a76b0SSuyog Pawar 3193*c83a76b0SSuyog Pawar #endif /* _IHEVC_STRUCTS_H_ */ 3194