1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2018 The Android Open Source Project 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 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*c83a76b0SSuyog Pawar */ 20*c83a76b0SSuyog Pawar 21*c83a76b0SSuyog Pawar /** 22*c83a76b0SSuyog Pawar ******************************************************************************* 23*c83a76b0SSuyog Pawar * @file 24*c83a76b0SSuyog Pawar * ihevce_defs.h 25*c83a76b0SSuyog Pawar * 26*c83a76b0SSuyog Pawar * @brief 27*c83a76b0SSuyog Pawar * Definitions used in the codec 28*c83a76b0SSuyog Pawar * 29*c83a76b0SSuyog Pawar * @author 30*c83a76b0SSuyog Pawar * Ittiam 31*c83a76b0SSuyog Pawar * 32*c83a76b0SSuyog Pawar * @remarks 33*c83a76b0SSuyog Pawar * None 34*c83a76b0SSuyog Pawar * 35*c83a76b0SSuyog Pawar ******************************************************************************* 36*c83a76b0SSuyog Pawar */ 37*c83a76b0SSuyog Pawar #ifndef _IHEVCE_DEFS_H_ 38*c83a76b0SSuyog Pawar #define _IHEVCE_DEFS_H_ 39*c83a76b0SSuyog Pawar 40*c83a76b0SSuyog Pawar /*****************************************************************************/ 41*c83a76b0SSuyog Pawar /* Constant Macros */ 42*c83a76b0SSuyog Pawar /*****************************************************************************/ 43*c83a76b0SSuyog Pawar 44*c83a76b0SSuyog Pawar #define SINGLE_THREAD_INTERFACE 0 45*c83a76b0SSuyog Pawar 46*c83a76b0SSuyog Pawar #define DEFAULT_VPS_ID 0 47*c83a76b0SSuyog Pawar 48*c83a76b0SSuyog Pawar #define DEFAULT_SPS_ID 0 49*c83a76b0SSuyog Pawar 50*c83a76b0SSuyog Pawar #define DEFAULT_PPS_ID 0 51*c83a76b0SSuyog Pawar 52*c83a76b0SSuyog Pawar #define DEFAULT_CHROMA_FORMAT_IDC 1 53*c83a76b0SSuyog Pawar 54*c83a76b0SSuyog Pawar #define AMP_ENABLED 1 55*c83a76b0SSuyog Pawar 56*c83a76b0SSuyog Pawar #define AMP_DISABLED 0 57*c83a76b0SSuyog Pawar 58*c83a76b0SSuyog Pawar #define LISTS_MODIFICATION_ABSENT 0 59*c83a76b0SSuyog Pawar 60*c83a76b0SSuyog Pawar #define LISTS_MODIFICATION_PRESENT 1 61*c83a76b0SSuyog Pawar 62*c83a76b0SSuyog Pawar #define LONG_TERM_REF_PICS_PRESENT 1 63*c83a76b0SSuyog Pawar 64*c83a76b0SSuyog Pawar #define LONG_TERM_REF_PICS_ABSENT 0 65*c83a76b0SSuyog Pawar 66*c83a76b0SSuyog Pawar #define PCM_ENABLED 1 67*c83a76b0SSuyog Pawar 68*c83a76b0SSuyog Pawar #define PCM_DISABLED 0 69*c83a76b0SSuyog Pawar 70*c83a76b0SSuyog Pawar #define PCM_LOOP_FILTER_DISABLED 1 71*c83a76b0SSuyog Pawar 72*c83a76b0SSuyog Pawar #define PCM_LOOP_FILTER_ENABLED 0 73*c83a76b0SSuyog Pawar 74*c83a76b0SSuyog Pawar #define REF_PIC_LISTS_RESTRICTED 1 75*c83a76b0SSuyog Pawar 76*c83a76b0SSuyog Pawar #define REF_PIC_LISTS_UNRESTRICTED 0 77*c83a76b0SSuyog Pawar 78*c83a76b0SSuyog Pawar #define SCALING_LIST_DISABLED 0 79*c83a76b0SSuyog Pawar 80*c83a76b0SSuyog Pawar #define SCALING_LIST_ENABLED 1 81*c83a76b0SSuyog Pawar 82*c83a76b0SSuyog Pawar #define DEFAULT_SPS_MAX_SUB_LAYERS 1 83*c83a76b0SSuyog Pawar 84*c83a76b0SSuyog Pawar #define VPS_SUB_LAYER_ORDERING_INFO_PRESENT 1 85*c83a76b0SSuyog Pawar 86*c83a76b0SSuyog Pawar #define VPS_SUB_LAYER_ORDERING_INFO_ABSENT 0 87*c83a76b0SSuyog Pawar 88*c83a76b0SSuyog Pawar #define SPS_SUB_LAYER_ORDERING_INFO_PRESENT 1 89*c83a76b0SSuyog Pawar 90*c83a76b0SSuyog Pawar #define SPS_SUB_LAYER_ORDERING_INFO_ABSENT 0 91*c83a76b0SSuyog Pawar 92*c83a76b0SSuyog Pawar #define SCALING_LIST_DATA_PRESENT 1 93*c83a76b0SSuyog Pawar 94*c83a76b0SSuyog Pawar #define SCALING_LIST_DATA_ABSENT 0 95*c83a76b0SSuyog Pawar 96*c83a76b0SSuyog Pawar #define SPS_TEMPORAL_ID_NESTING_DONE 1 97*c83a76b0SSuyog Pawar 98*c83a76b0SSuyog Pawar #define NO_SPS_TEMPORAL_ID_NESTING_DONE 0 99*c83a76b0SSuyog Pawar 100*c83a76b0SSuyog Pawar #define STRONG_INTRA_SMOOTHING_FLAG_DISABLE 0 101*c83a76b0SSuyog Pawar 102*c83a76b0SSuyog Pawar #define STRONG_INTRA_SMOOTHING_FLAG_ENABLE 1 103*c83a76b0SSuyog Pawar 104*c83a76b0SSuyog Pawar #define DEFAULT_LOG2_MAX_POC_LSB 10 105*c83a76b0SSuyog Pawar 106*c83a76b0SSuyog Pawar #define DEFAULT_PIC_CROP_TOP_OFFSET 0 107*c83a76b0SSuyog Pawar 108*c83a76b0SSuyog Pawar #define DEFAULT_PIC_CROP_LEFT_OFFSET 0 109*c83a76b0SSuyog Pawar 110*c83a76b0SSuyog Pawar #define DEFAULT_PIC_CROP_RIGHT_OFFSET 0 111*c83a76b0SSuyog Pawar 112*c83a76b0SSuyog Pawar #define DEFAULT_PIC_CROP_BOTTOM_OFFSET 0 113*c83a76b0SSuyog Pawar 114*c83a76b0SSuyog Pawar #define DEFAULT_MAX_DEC_PIC_BUFFERING 8 115*c83a76b0SSuyog Pawar 116*c83a76b0SSuyog Pawar #define DEFAULT_MAX_NUM_REORDER_PICS 8 117*c83a76b0SSuyog Pawar 118*c83a76b0SSuyog Pawar #define DEFAULT_MAX_LATENCY_INCREASE 8 119*c83a76b0SSuyog Pawar 120*c83a76b0SSuyog Pawar #define HIGH_TIER 1 121*c83a76b0SSuyog Pawar 122*c83a76b0SSuyog Pawar #define MAIN_TIER 0 123*c83a76b0SSuyog Pawar 124*c83a76b0SSuyog Pawar #define DEFAULT_BETA_OFFSET 0 125*c83a76b0SSuyog Pawar 126*c83a76b0SSuyog Pawar #define CABAC_INIT_PRESENT 1 127*c83a76b0SSuyog Pawar 128*c83a76b0SSuyog Pawar #define CABAC_INIT_ABSENT 0 129*c83a76b0SSuyog Pawar 130*c83a76b0SSuyog Pawar #define CU_QP_DELTA_ENABLED 1 131*c83a76b0SSuyog Pawar 132*c83a76b0SSuyog Pawar #define CU_QP_DELTA_DISABLED 0 133*c83a76b0SSuyog Pawar 134*c83a76b0SSuyog Pawar #define MAX_MERGE_CANDIDATES 5 135*c83a76b0SSuyog Pawar 136*c83a76b0SSuyog Pawar #define CONSTR_IPRED_ENABLED 1 137*c83a76b0SSuyog Pawar 138*c83a76b0SSuyog Pawar #define CONSTR_IPRED_DISABLED 0 139*c83a76b0SSuyog Pawar 140*c83a76b0SSuyog Pawar #define DISABLE_DEBLOCKING_FLAG 1 141*c83a76b0SSuyog Pawar 142*c83a76b0SSuyog Pawar #define ENABLE_DEBLOCKING_FLAG 0 143*c83a76b0SSuyog Pawar 144*c83a76b0SSuyog Pawar #define DEBLOCKING_FILTER_CONTROL_PRESENT 1 145*c83a76b0SSuyog Pawar 146*c83a76b0SSuyog Pawar #define DEBLOCKING_FILTER_CONTROL_ABSENT 0 147*c83a76b0SSuyog Pawar 148*c83a76b0SSuyog Pawar #define DEBLOCKING_FILTER_OVERRIDE_ENABLED 1 149*c83a76b0SSuyog Pawar 150*c83a76b0SSuyog Pawar #define DEBLOCKING_FILTER_OVERRIDE_DISABLED 0 151*c83a76b0SSuyog Pawar 152*c83a76b0SSuyog Pawar #define DEPENDENT_SLICE_ENABLED 1 153*c83a76b0SSuyog Pawar 154*c83a76b0SSuyog Pawar #define DEPENDENT_SLICE_DISABLED 0 155*c83a76b0SSuyog Pawar 156*c83a76b0SSuyog Pawar #define DEFAULT_DIFF_CU_QP_DELTA_DEPTH 0 157*c83a76b0SSuyog Pawar 158*c83a76b0SSuyog Pawar #define ENTROPY_CODING_SYNC_ENABLED 1 159*c83a76b0SSuyog Pawar 160*c83a76b0SSuyog Pawar #define ENTROPY_CODING_SYNC_DISABLED 0 161*c83a76b0SSuyog Pawar 162*c83a76b0SSuyog Pawar #define ENTROPY_SLICE_ENABLED 1 163*c83a76b0SSuyog Pawar 164*c83a76b0SSuyog Pawar #define ENTROPY_SLICE_DISABLED 0 165*c83a76b0SSuyog Pawar 166*c83a76b0SSuyog Pawar #define DEFAULT_PARALLEL_MERGE_LEVEL 2 167*c83a76b0SSuyog Pawar 168*c83a76b0SSuyog Pawar #define DEFAULT_NUM_REF_IDX_L0_DEFAULT_ACTIVE 6 169*c83a76b0SSuyog Pawar 170*c83a76b0SSuyog Pawar #define DEFAULT_NUM_REF_IDX_L1_DEFAULT_ACTIVE 6 171*c83a76b0SSuyog Pawar 172*c83a76b0SSuyog Pawar #define NUM_TILES_COLS 0 173*c83a76b0SSuyog Pawar 174*c83a76b0SSuyog Pawar #define NUM_TILES_ROWS 0 175*c83a76b0SSuyog Pawar 176*c83a76b0SSuyog Pawar #define OUTPUT_FLAG_PRESENT 1 177*c83a76b0SSuyog Pawar 178*c83a76b0SSuyog Pawar #define OUTPUT_FLAG_ABSENT 0 179*c83a76b0SSuyog Pawar 180*c83a76b0SSuyog Pawar #define DEFAULT_PIC_CB_QP_OFFSET 0 181*c83a76b0SSuyog Pawar 182*c83a76b0SSuyog Pawar #define DEFAULT_PIC_CR_QP_OFFSET 0 183*c83a76b0SSuyog Pawar 184*c83a76b0SSuyog Pawar #define SLICE_LEVEL_CHROMA_QP_OFFSETS_PRESENT 1 185*c83a76b0SSuyog Pawar 186*c83a76b0SSuyog Pawar #define SLICE_LEVEL_CHROMA_QP_OFFSETS_ABSENT 0 187*c83a76b0SSuyog Pawar 188*c83a76b0SSuyog Pawar #define DEBLOCKING_FILTER_DISABLED 1 189*c83a76b0SSuyog Pawar 190*c83a76b0SSuyog Pawar #define DEBLOCKING_FILTER_ENABLED 0 191*c83a76b0SSuyog Pawar 192*c83a76b0SSuyog Pawar #define LF_ACROSS_SLICES_ENABLED 1 193*c83a76b0SSuyog Pawar 194*c83a76b0SSuyog Pawar #define LF_ACROSS_SLICES_DISABLED 0 195*c83a76b0SSuyog Pawar 196*c83a76b0SSuyog Pawar #define SAO_ENABLED 1 197*c83a76b0SSuyog Pawar 198*c83a76b0SSuyog Pawar #define SAO_DISABLED 0 199*c83a76b0SSuyog Pawar 200*c83a76b0SSuyog Pawar #define SCALING_LIST_DATA_PRESENT 1 201*c83a76b0SSuyog Pawar 202*c83a76b0SSuyog Pawar #define SCALING_LIST_DATA_ABSENT 0 203*c83a76b0SSuyog Pawar 204*c83a76b0SSuyog Pawar #define SIGN_DATA_HIDDEN 1 205*c83a76b0SSuyog Pawar 206*c83a76b0SSuyog Pawar #define SIGN_DATA_UNHIDDEN 0 207*c83a76b0SSuyog Pawar 208*c83a76b0SSuyog Pawar #define SLICE_EXTENSION_PRESENT 1 209*c83a76b0SSuyog Pawar 210*c83a76b0SSuyog Pawar #define SLICE_EXTENSION_ABSENT 0 211*c83a76b0SSuyog Pawar 212*c83a76b0SSuyog Pawar #define SLICE_HEADER_EXTENSION_PRESENT 1 213*c83a76b0SSuyog Pawar 214*c83a76b0SSuyog Pawar #define SLICE_HEADER_EXTENSION_ABSENT 0 215*c83a76b0SSuyog Pawar 216*c83a76b0SSuyog Pawar #define DEFAULT_TC_OFFSET 0 217*c83a76b0SSuyog Pawar 218*c83a76b0SSuyog Pawar #define TRANSFORM_SKIP_ENABLED 1 219*c83a76b0SSuyog Pawar 220*c83a76b0SSuyog Pawar #define TRANSFORM_SKIP_DISABLED 0 221*c83a76b0SSuyog Pawar 222*c83a76b0SSuyog Pawar #define TRANSFORM_BYPASS_ENABLED 1 223*c83a76b0SSuyog Pawar 224*c83a76b0SSuyog Pawar #define TRANSFORM_BYPASS_DISABLED 0 225*c83a76b0SSuyog Pawar 226*c83a76b0SSuyog Pawar #define SPACING_IS_UNIFORM 1 227*c83a76b0SSuyog Pawar 228*c83a76b0SSuyog Pawar #define SPACING_IS_NONUNIFORM 0 229*c83a76b0SSuyog Pawar 230*c83a76b0SSuyog Pawar #define TILES_ENABLED 1 231*c83a76b0SSuyog Pawar 232*c83a76b0SSuyog Pawar #define TILES_DISABLED 0 233*c83a76b0SSuyog Pawar 234*c83a76b0SSuyog Pawar #define TOTAL_NUM_TIERS 2 235*c83a76b0SSuyog Pawar 236*c83a76b0SSuyog Pawar #define TOTAL_NUM_LEVELS 13 237*c83a76b0SSuyog Pawar 238*c83a76b0SSuyog Pawar #define SET_CTB_ALIGN(x, y) ((((x) & ((y)-1)) == 0) ? 0 : (y) - ((x) & ((y)-1))) 239*c83a76b0SSuyog Pawar 240*c83a76b0SSuyog Pawar /* Enables HM-8.1 compatible stream, setting to 0 will make it 8.2 compatible*/ 241*c83a76b0SSuyog Pawar #define HM_8DOT1_SYNTAX 0 242*c83a76b0SSuyog Pawar 243*c83a76b0SSuyog Pawar /* Enables cu level RD optimized encoding by computing cabac bits for the cu */ 244*c83a76b0SSuyog Pawar #define RDOPT_ENABLE 1 245*c83a76b0SSuyog Pawar 246*c83a76b0SSuyog Pawar /* Enables inclusion of chroma coding cost for RD opt decisions */ 247*c83a76b0SSuyog Pawar #define CHROMA_RDOPT_ENABLE 1 248*c83a76b0SSuyog Pawar 249*c83a76b0SSuyog Pawar /* Enables tu level zero cbf based RD optimized encoding */ 250*c83a76b0SSuyog Pawar #define RDOPT_ZERO_CBF_ENABLE 1 251*c83a76b0SSuyog Pawar 252*c83a76b0SSuyog Pawar /* Enables bit savings in tu tree of inter cus by merging not coded child nodes to parent node */ 253*c83a76b0SSuyog Pawar #define SHRINK_INTER_TUTREE 1 254*c83a76b0SSuyog Pawar 255*c83a76b0SSuyog Pawar /* q format for lamba used in the encoder */ 256*c83a76b0SSuyog Pawar #define LAMBDA_Q_SHIFT 8 257*c83a76b0SSuyog Pawar 258*c83a76b0SSuyog Pawar /* If 0, Allign PIC Wd/ht to Min CU size */ 259*c83a76b0SSuyog Pawar /* If 1, Allign PIC Wd/ht to CTB size */ 260*c83a76b0SSuyog Pawar #define PIC_ALIGN_CTB_SIZE 0 261*c83a76b0SSuyog Pawar 262*c83a76b0SSuyog Pawar /** Enables DCT integer transform / Hadamard Transform based SATD evaluation 263*c83a76b0SSuyog Pawar * 1 : DCT integer Transform, 0 : Hadamard Transform 264*c83a76b0SSuyog Pawar */ 265*c83a76b0SSuyog Pawar #define USE_EXACT_TFR 0 266*c83a76b0SSuyog Pawar 267*c83a76b0SSuyog Pawar /** Enable colocated PU population */ 268*c83a76b0SSuyog Pawar #define ENABLE_COL_PU_POPULATION 1 269*c83a76b0SSuyog Pawar 270*c83a76b0SSuyog Pawar #define MAX_MVX_SUPPORTED_IN_COARSE_LAYER 128 271*c83a76b0SSuyog Pawar 272*c83a76b0SSuyog Pawar #define MAX_MVY_SUPPORTED_IN_COARSE_LAYER 64 273*c83a76b0SSuyog Pawar 274*c83a76b0SSuyog Pawar //ME_Experiments 275*c83a76b0SSuyog Pawar 276*c83a76b0SSuyog Pawar #define USE_4x4_IN_L1 0 277*c83a76b0SSuyog Pawar 278*c83a76b0SSuyog Pawar #define DIAMOND_GRID 1 279*c83a76b0SSuyog Pawar 280*c83a76b0SSuyog Pawar #define SUBPEL_DEDUPLICATE_ENABLE 1 281*c83a76b0SSuyog Pawar 282*c83a76b0SSuyog Pawar /** Enables CU delta QP population within a frame : Random for now */ 283*c83a76b0SSuyog Pawar //#define RANDOM_CU_QP 0 284*c83a76b0SSuyog Pawar 285*c83a76b0SSuyog Pawar /** 286*c83a76b0SSuyog Pawar * @brief Mapping of Minimum HEVC qp to MPEG2 QP 287*c83a76b0SSuyog Pawar */ 288*c83a76b0SSuyog Pawar #define MIN_RC_QP (1) 289*c83a76b0SSuyog Pawar /** 290*c83a76b0SSuyog Pawar * @brief Mapping of Maximum HEVC qp to MPEG2 QP 291*c83a76b0SSuyog Pawar */ 292*c83a76b0SSuyog Pawar #define MAX_RC_QP (228) 293*c83a76b0SSuyog Pawar /** 294*c83a76b0SSuyog Pawar * @brief Total NUmber of MPEG2 QPs 295*c83a76b0SSuyog Pawar */ 296*c83a76b0SSuyog Pawar #define MPEG2_QP_ELEM (MAX_RC_QP + 1) 297*c83a76b0SSuyog Pawar /** 298*c83a76b0SSuyog Pawar * @brief Total NUmber of HEVC QPs 299*c83a76b0SSuyog Pawar */ 300*c83a76b0SSuyog Pawar #define HEVC_QP_ELEM (MAX_HEVC_QP_10bit + 1) 301*c83a76b0SSuyog Pawar 302*c83a76b0SSuyog Pawar #define QP_LEVEL_MOD_ACT_FACTOR 10 303*c83a76b0SSuyog Pawar 304*c83a76b0SSuyog Pawar #define TWO_POW_QP_LEVEL_MOD_ACT_FACTOR (1 << (QP_LEVEL_MOD_ACT_FACTOR)) 305*c83a76b0SSuyog Pawar 306*c83a76b0SSuyog Pawar #define DEFAULT_NON_PACKED_CONSTRAINT_FLAG 1 307*c83a76b0SSuyog Pawar 308*c83a76b0SSuyog Pawar #define DEFAULT_FRAME_ONLY_CONSTRAINT_FLAG 0 309*c83a76b0SSuyog Pawar 310*c83a76b0SSuyog Pawar #define ENABLE_CU_TREE_CULLING (1 && ENABLE_4CTB_EVALUATION) 311*c83a76b0SSuyog Pawar 312*c83a76b0SSuyog Pawar #define RATIONALISE_NUM_RDO_MODES_IN_PQ_AND_HQ 1 313*c83a76b0SSuyog Pawar 314*c83a76b0SSuyog Pawar #define MAX_NUMBER_OF_INTER_RDOPT_CANDS_IN_PQ_AND_HQ 2 315*c83a76b0SSuyog Pawar 316*c83a76b0SSuyog Pawar #define MAX_NUMBER_OF_INTER_RDOPT_CANDS_IN_MS 2 317*c83a76b0SSuyog Pawar 318*c83a76b0SSuyog Pawar #define MAX_NUMBER_OF_INTER_RDOPT_CANDS_IN_HS_AND_XS 1 319*c83a76b0SSuyog Pawar 320*c83a76b0SSuyog Pawar #define BUFFER_SIZE_MULTIPLIER_IF_HBD 3 321*c83a76b0SSuyog Pawar 322*c83a76b0SSuyog Pawar /* If */ 323*c83a76b0SSuyog Pawar /* qp_bdoffset = 6 * (bit_depth - 8) */ 324*c83a76b0SSuyog Pawar /* and */ 325*c83a76b0SSuyog Pawar /* lambda = pow(2.0, (((i4_cur_frame_qp + qp_bdoffset - 12)) / 3)), */ 326*c83a76b0SSuyog Pawar /* Then 'Lambda Types' are - */ 327*c83a76b0SSuyog Pawar /* 0, when bit_depth_in_module = 8 => qp_bdoffset = 0 always */ 328*c83a76b0SSuyog Pawar /* 1, when bit_depth_in_module > 8, => qp_bdoffset = value derived above */ 329*c83a76b0SSuyog Pawar /* 2, when both of the lambdas referred to in the previous cases are required */ 330*c83a76b0SSuyog Pawar 331*c83a76b0SSuyog Pawar #define PRE_ENC_LAMBDA_TYPE 0 332*c83a76b0SSuyog Pawar 333*c83a76b0SSuyog Pawar #define ENC_LAMBDA_TYPE 0 334*c83a76b0SSuyog Pawar 335*c83a76b0SSuyog Pawar #define IPE_LAMBDA_TYPE 0 336*c83a76b0SSuyog Pawar 337*c83a76b0SSuyog Pawar #define ME_LAMBDA_TYPE 0 338*c83a76b0SSuyog Pawar 339*c83a76b0SSuyog Pawar #define ENC_LOOP_LAMBDA_TYPE 2 340*c83a76b0SSuyog Pawar 341*c83a76b0SSuyog Pawar #define ENABLE_SSIM 0 342*c83a76b0SSuyog Pawar 343*c83a76b0SSuyog Pawar #define VUI_BIT_RATE_SCALE 6 344*c83a76b0SSuyog Pawar 345*c83a76b0SSuyog Pawar #define VUI_CPB_SIZE_SCALE 8 346*c83a76b0SSuyog Pawar 347*c83a76b0SSuyog Pawar #define CBP_VCL_FACTOR 1000 348*c83a76b0SSuyog Pawar 349*c83a76b0SSuyog Pawar #define ENABLE_REFINED_QP_MOD 1 350*c83a76b0SSuyog Pawar 351*c83a76b0SSuyog Pawar #if ENABLE_REFINED_QP_MOD 352*c83a76b0SSuyog Pawar /* to find the uncovered region (or new region) which will be used for reference for the upcoming pictures 353*c83a76b0SSuyog Pawar will be coded well to enhance coding efficiency*/ 354*c83a76b0SSuyog Pawar #define ENABLE_TEMPORAL_WEIGHING 0 355*c83a76b0SSuyog Pawar 356*c83a76b0SSuyog Pawar /* to enable modulation factor based on spatial variance when we calculate activity factor using 357*c83a76b0SSuyog Pawar the following equaltion 358*c83a76b0SSuyog Pawar act_factor = (m * c + a )/(c + m * a)*/ 359*c83a76b0SSuyog Pawar // SATD_NOISE_FLOOR_THRESHOLD was earlier controlled using this 360*c83a76b0SSuyog Pawar #define ENABLE_QP_MOD_BASED_ON_SPATIAL_VARIANCE 0 361*c83a76b0SSuyog Pawar 362*c83a76b0SSuyog Pawar /* To enable the trace for delta Qp bits */ 363*c83a76b0SSuyog Pawar #define QP_DELTA_BITS_TRACE 364*c83a76b0SSuyog Pawar 365*c83a76b0SSuyog Pawar /* to enable modulation based LAP2 average satd*/ 366*c83a76b0SSuyog Pawar #define MODULATION_OVER_LAP 1 367*c83a76b0SSuyog Pawar 368*c83a76b0SSuyog Pawar /* 0 - Lamda and Qp are decoupled, 369*c83a76b0SSuyog Pawar 1 - Lamda and Qp are coupled*/ 370*c83a76b0SSuyog Pawar #define LAMDA_BASED_ON_QUANT 0 371*c83a76b0SSuyog Pawar 372*c83a76b0SSuyog Pawar /* 373*c83a76b0SSuyog Pawar 0 - act_factor = (m * c + a )/(c + m * a) 374*c83a76b0SSuyog Pawar m = modulation factor 375*c83a76b0SSuyog Pawar c = cur satd 376*c83a76b0SSuyog Pawar a = average satd 377*c83a76b0SSuyog Pawar ---------------------------------------- 378*c83a76b0SSuyog Pawar 1 - act_factor = (c/a) ^ (s/3) 379*c83a76b0SSuyog Pawar s = strength 380*c83a76b0SSuyog Pawar c = cur satd 381*c83a76b0SSuyog Pawar a = average satd 382*c83a76b0SSuyog Pawar */ 383*c83a76b0SSuyog Pawar #define LOGARITHMIC_MODULATION 1 384*c83a76b0SSuyog Pawar 385*c83a76b0SSuyog Pawar #define MEDIAN_ENABLE 1 386*c83a76b0SSuyog Pawar #define MIN_ENABLE 0 387*c83a76b0SSuyog Pawar 388*c83a76b0SSuyog Pawar /* well compensatable regions are not considered for 389*c83a76b0SSuyog Pawar QP modulation*/ 390*c83a76b0SSuyog Pawar #define DISABLE_COMPENSATION 1 391*c83a76b0SSuyog Pawar 392*c83a76b0SSuyog Pawar #define CST_NOISE_THRSHLD 0 393*c83a76b0SSuyog Pawar 394*c83a76b0SSuyog Pawar /*decrease intra cu qp by 1 in Inter Pictures*/ 395*c83a76b0SSuyog Pawar #define DECREASE_QP 0 396*c83a76b0SSuyog Pawar 397*c83a76b0SSuyog Pawar /*strength calculation based on deviation*/ 398*c83a76b0SSuyog Pawar #define STRENGTH_BASED_ON_DEVIATION 1 399*c83a76b0SSuyog Pawar 400*c83a76b0SSuyog Pawar /*enable allow cliping of qctivity factor such that 401*c83a76b0SSuyog Pawar deviation of qp in modulation is controlled*/ 402*c83a76b0SSuyog Pawar #define ALLOW_ACT_FACTOR_CLIP_IN_QP_MOD 1 403*c83a76b0SSuyog Pawar 404*c83a76b0SSuyog Pawar /*instead of avg activity use sqrt(avg of satd square)*/ 405*c83a76b0SSuyog Pawar #define USE_SQRT_AVG_OF_SATD_SQR 1 406*c83a76b0SSuyog Pawar 407*c83a76b0SSuyog Pawar /*use sum of squared transform coeff*/ 408*c83a76b0SSuyog Pawar #define USE_SQR_SATD_COEFF 0 409*c83a76b0SSuyog Pawar 410*c83a76b0SSuyog Pawar /*instead of L1 IPE SATD, use L1 CUR SATD*/ 411*c83a76b0SSuyog Pawar #define USE_CUR_SATD 0 // else it will use satd of cur - pred 412*c83a76b0SSuyog Pawar 413*c83a76b0SSuyog Pawar /*use L0 CUR SATD */ 414*c83a76b0SSuyog Pawar #define USE_CUR_L0_SATD 0 415*c83a76b0SSuyog Pawar 416*c83a76b0SSuyog Pawar /* strength based on only curr frame deviation else it is based on average over lap2 */ 417*c83a76b0SSuyog Pawar #define STRENGTH_BASED_ON_CURR_FRM 0 418*c83a76b0SSuyog Pawar 419*c83a76b0SSuyog Pawar #define POW_OPT 1 420*c83a76b0SSuyog Pawar 421*c83a76b0SSuyog Pawar #else /*INITIAL QP MOD*/ 422*c83a76b0SSuyog Pawar /*Same as 11_0 Mod version */ 423*c83a76b0SSuyog Pawar // SATD_NOISE_FLOOR_THRESHOLD was earlier controlled using this 424*c83a76b0SSuyog Pawar #define ENABLE_QP_MOD_BASED_ON_SPATIAL_VARIANCE 0 425*c83a76b0SSuyog Pawar #define ENABLE_TEMPORAL_WEIGHING 0 426*c83a76b0SSuyog Pawar #define MODULATION_OVER_LAP 0 427*c83a76b0SSuyog Pawar #define LAMDA_BASED_ON_QUANT 1 428*c83a76b0SSuyog Pawar #define LOGARITHMIC_MODULATION 0 429*c83a76b0SSuyog Pawar #define MIN_ENABLE 1 430*c83a76b0SSuyog Pawar #define DISABLE_COMPENSATION 1 431*c83a76b0SSuyog Pawar #define CST_NOISE_THRSHLD 1 432*c83a76b0SSuyog Pawar #define DECREASE_QP 0 433*c83a76b0SSuyog Pawar #endif 434*c83a76b0SSuyog Pawar 435*c83a76b0SSuyog Pawar #define MASK_4AC 0xFFFFFFFEFEFEFCE0 436*c83a76b0SSuyog Pawar #define MASK_3AC 0xFFFFFFFFFEFEFCF0 437*c83a76b0SSuyog Pawar #define MASK_2AC 0xFFFFFFFFFFFEFCF8 438*c83a76b0SSuyog Pawar #define MASK_DC 0xFFFFFFFFFFFFFFFE 439*c83a76b0SSuyog Pawar #define I_PIC_LAMDA_MODIFIER 0.5 440*c83a76b0SSuyog Pawar #define CONST_LAMDA_MODIFIER 1 441*c83a76b0SSuyog Pawar #define NO_EXTRA_MULTIPLIER 1 442*c83a76b0SSuyog Pawar #define NEW_LAMDA_MODIFIER (!CONST_LAMDA_MODIFIER) 443*c83a76b0SSuyog Pawar #define LAMDA_MODIFIER(QP, Tid) \ 444*c83a76b0SSuyog Pawar (0.85 * pow(2.0, (Tid * (CLIP3(((QP + 5.0) / 25.0), 1.0, 2.0) - 1.0)) / 3.0)) 445*c83a76b0SSuyog Pawar #define CONST_LAMDA_MOD_VAL (0.85) 446*c83a76b0SSuyog Pawar #define MEAN_BASED_QP_MOD 0 447*c83a76b0SSuyog Pawar 448*c83a76b0SSuyog Pawar #if MEDIAN_ENABLE 449*c83a76b0SSuyog Pawar #define MEDIAN_CU_TU 1 450*c83a76b0SSuyog Pawar #define MEDIAN_CU_TU_BY_2 3 451*c83a76b0SSuyog Pawar #define MEDIAN_CU_TU_BY_4 10 452*c83a76b0SSuyog Pawar #endif 453*c83a76b0SSuyog Pawar 454*c83a76b0SSuyog Pawar #if MIN_ENABLE 455*c83a76b0SSuyog Pawar #define MEDIAN_CU_TU 0 456*c83a76b0SSuyog Pawar #define MEDIAN_CU_TU_BY_2 0 457*c83a76b0SSuyog Pawar #define MEDIAN_CU_TU_BY_4 0 458*c83a76b0SSuyog Pawar #endif 459*c83a76b0SSuyog Pawar 460*c83a76b0SSuyog Pawar #define COMP_RATIO_NORM 5 461*c83a76b0SSuyog Pawar #define COMP_RATIO_MIN 0 462*c83a76b0SSuyog Pawar #define COMP_RATIO_MAX 3 463*c83a76b0SSuyog Pawar #define NOISE_THRE_MAP_TO_8 3 464*c83a76b0SSuyog Pawar 465*c83a76b0SSuyog Pawar #define REF_MOD_VARIANCE (0.6696) 466*c83a76b0SSuyog Pawar 467*c83a76b0SSuyog Pawar #define REF_MOD_DEVIATION (473.0) //(0.6696) // 468*c83a76b0SSuyog Pawar #define NO_MOD_DEVIATION (220.0) 469*c83a76b0SSuyog Pawar #define BELOW_REF_DEVIATION (0.0) 470*c83a76b0SSuyog Pawar #define ABOVE_REF_DEVIATION (220.0) 471*c83a76b0SSuyog Pawar 472*c83a76b0SSuyog Pawar #define MIN_BITRATE (1 << (6 + (VUI_BIT_RATE_SCALE))) 473*c83a76b0SSuyog Pawar #define MIN_QP_MOD_OFFSET (-10) 474*c83a76b0SSuyog Pawar #define MAX_QP_MOD_OFFSET 3 475*c83a76b0SSuyog Pawar #define TOT_QP_MOD_OFFSET (MAX_QP_MOD_OFFSET - MIN_QP_MOD_OFFSET + 1) 476*c83a76b0SSuyog Pawar 477*c83a76b0SSuyog Pawar #define ENABLE_UNIFORM_CU_SIZE_16x16 0 478*c83a76b0SSuyog Pawar 479*c83a76b0SSuyog Pawar #define ENABLE_UNIFORM_CU_SIZE_8x8 0 480*c83a76b0SSuyog Pawar 481*c83a76b0SSuyog Pawar #define MAX_QP_BD_OFFSET 24 482*c83a76b0SSuyog Pawar 483*c83a76b0SSuyog Pawar // chroma mode index for derived from luma intra mode 484*c83a76b0SSuyog Pawar #define DM_CHROMA_IDX 36 485*c83a76b0SSuyog Pawar 486*c83a76b0SSuyog Pawar #define DISABLE_RDOQ 0 487*c83a76b0SSuyog Pawar 488*c83a76b0SSuyog Pawar #define DISABLE_SKIP_AND_MERGE_EVAL 0 489*c83a76b0SSuyog Pawar 490*c83a76b0SSuyog Pawar #define ENABLE_PICKING_4_BEST_IN_B_PIC_IN_ME 0 491*c83a76b0SSuyog Pawar 492*c83a76b0SSuyog Pawar #define ENABLE_TU_TREE_DETERMINATION_IN_RDOPT 0 493*c83a76b0SSuyog Pawar 494*c83a76b0SSuyog Pawar #define MAX_NUM_MIXED_MODE_INTER_RDO_CANDS (MAX_NUMBER_OF_INTER_RDOPT_CANDS_IN_PQ_AND_HQ * 2) 495*c83a76b0SSuyog Pawar 496*c83a76b0SSuyog Pawar #define MAX_NUM_CU_MERGE_SKIP_CAND (MAX_NUMBER_OF_INTER_RDOPT_CANDS_IN_PQ_AND_HQ + 1) 497*c83a76b0SSuyog Pawar 498*c83a76b0SSuyog Pawar #define NUM_MODE_COMBINATIONS_IN_INTER_CU_WITH_2_PUS 4 499*c83a76b0SSuyog Pawar 500*c83a76b0SSuyog Pawar /* +1 for skip candidate */ 501*c83a76b0SSuyog Pawar #define MAX_NUM_INTER_RDO_CANDS \ 502*c83a76b0SSuyog Pawar (NUM_MODE_COMBINATIONS_IN_INTER_CU_WITH_2_PUS * MAX_NUMBER_OF_INTER_RDOPT_CANDS_IN_PQ_AND_HQ + \ 503*c83a76b0SSuyog Pawar 1) 504*c83a76b0SSuyog Pawar 505*c83a76b0SSuyog Pawar #define UNI_SATD_SCALE 1 506*c83a76b0SSuyog Pawar 507*c83a76b0SSuyog Pawar #define ENABLE_MIXED_INTER_MODE_EVAL 1 508*c83a76b0SSuyog Pawar 509*c83a76b0SSuyog Pawar #define DISABLE_SAO 0 510*c83a76b0SSuyog Pawar 511*c83a76b0SSuyog Pawar #define DISABLE_LUMA_SAO (0 || (DISABLE_SAO)) 512*c83a76b0SSuyog Pawar 513*c83a76b0SSuyog Pawar #define DISABLE_CHROMA_SAO (0 || (DISABLE_SAO)) 514*c83a76b0SSuyog Pawar 515*c83a76b0SSuyog Pawar #define MAX_NUM_INTER_CANDS_PQ 4 /*MAX_NUM_INTER_RDO_CANDS*/ 516*c83a76b0SSuyog Pawar 517*c83a76b0SSuyog Pawar #define MAX_NUM_INTER_CANDS_HQ 4 /*MAX_NUM_INTER_RDO_CANDS*/ 518*c83a76b0SSuyog Pawar 519*c83a76b0SSuyog Pawar #define MAX_NUM_INTER_CANDS_MS 3 520*c83a76b0SSuyog Pawar 521*c83a76b0SSuyog Pawar #define MAX_NUM_INTER_CANDS_HS 2 522*c83a76b0SSuyog Pawar 523*c83a76b0SSuyog Pawar #define MAX_NUM_INTER_CANDS_ES 2 524*c83a76b0SSuyog Pawar 525*c83a76b0SSuyog Pawar #define RESTRICT_NUM_INTER_CANDS_PER_PART_TYPE 0 526*c83a76b0SSuyog Pawar 527*c83a76b0SSuyog Pawar #define MAX_NUM_INTER_CANDS_PER_PART_TYPE 3 528*c83a76b0SSuyog Pawar 529*c83a76b0SSuyog Pawar #define PICK_ONLY_BEST_CAND_PER_PART_TYPE 0 530*c83a76b0SSuyog Pawar 531*c83a76b0SSuyog Pawar #define REUSE_ME_COMPUTED_ERROR_FOR_INTER_CAND_SIFTING 0 532*c83a76b0SSuyog Pawar 533*c83a76b0SSuyog Pawar #define DISABLE_SBH 0 534*c83a76b0SSuyog Pawar 535*c83a76b0SSuyog Pawar #define DISABLE_TMVP 0 536*c83a76b0SSuyog Pawar 537*c83a76b0SSuyog Pawar #define DISABLE_QUANT_ROUNDING 0 538*c83a76b0SSuyog Pawar 539*c83a76b0SSuyog Pawar #define ENABLE_SEPARATE_LUMA_CHROMA_INTRA_MODE 1 540*c83a76b0SSuyog Pawar 541*c83a76b0SSuyog Pawar #define FORCE_INTRA_TU_DEPTH_TO_0 0 542*c83a76b0SSuyog Pawar 543*c83a76b0SSuyog Pawar #define WEIGH_CHROMA_COST 1 544*c83a76b0SSuyog Pawar 545*c83a76b0SSuyog Pawar #define ENABLE_ZERO_CBF_IN_INTRA 0 546*c83a76b0SSuyog Pawar 547*c83a76b0SSuyog Pawar #define DISABLE_ZERO_ZBF_IN_INTER 0 548*c83a76b0SSuyog Pawar 549*c83a76b0SSuyog Pawar #define ENABLE_INTER_ZCU_COST 1 550*c83a76b0SSuyog Pawar 551*c83a76b0SSuyog Pawar #define ADAPT_COLOCATED_FROM_L0_FLAG 1 552*c83a76b0SSuyog Pawar 553*c83a76b0SSuyog Pawar #define CHROMA_COST_WEIGHING_FACTOR_Q_SHIFT 10 554*c83a76b0SSuyog Pawar 555*c83a76b0SSuyog Pawar #define ENABLE_SSD_CALC_RC 0 556*c83a76b0SSuyog Pawar 557*c83a76b0SSuyog Pawar #define SRC_PADDING_FOR_TRAQO 1 558*c83a76b0SSuyog Pawar 559*c83a76b0SSuyog Pawar #define ENABLE_CU_SPLIT_FLAG_RATE_ESTIMATION 1 560*c83a76b0SSuyog Pawar 561*c83a76b0SSuyog Pawar #define ZCBF_SKIP_DISTORTION_THRESHOLD (1.2) 562*c83a76b0SSuyog Pawar 563*c83a76b0SSuyog Pawar #define ENABLE_CHROMA_RDOPT_EVAL_IN_PQ 1 564*c83a76b0SSuyog Pawar 565*c83a76b0SSuyog Pawar #define ENABLE_CHROMA_RDOPT_EVAL_IN_HQ 1 566*c83a76b0SSuyog Pawar 567*c83a76b0SSuyog Pawar #define ENABLE_CHROMA_RDOPT_EVAL_IN_MS 1 568*c83a76b0SSuyog Pawar 569*c83a76b0SSuyog Pawar #define ENABLE_CHROMA_RDOPT_EVAL_IN_HS 0 570*c83a76b0SSuyog Pawar 571*c83a76b0SSuyog Pawar #define ENABLE_CHROMA_RDOPT_EVAL_IN_XS 0 572*c83a76b0SSuyog Pawar 573*c83a76b0SSuyog Pawar #define ENABLE_CHROMA_RDOPT_EVAL_IN_XS6 0 574*c83a76b0SSuyog Pawar 575*c83a76b0SSuyog Pawar #define ENABLE_ADDITIONAL_CHROMA_MODES_EVAL_IN_PQ \ 576*c83a76b0SSuyog Pawar (1 && (ENABLE_CHROMA_RDOPT_EVAL_IN_PQ) && (ENABLE_SEPARATE_LUMA_CHROMA_INTRA_MODE)) 577*c83a76b0SSuyog Pawar 578*c83a76b0SSuyog Pawar #define ENABLE_ADDITIONAL_CHROMA_MODES_EVAL_IN_HQ \ 579*c83a76b0SSuyog Pawar (1 && (ENABLE_CHROMA_RDOPT_EVAL_IN_HQ) && (ENABLE_SEPARATE_LUMA_CHROMA_INTRA_MODE)) 580*c83a76b0SSuyog Pawar 581*c83a76b0SSuyog Pawar #define ENABLE_ADDITIONAL_CHROMA_MODES_EVAL_IN_MS \ 582*c83a76b0SSuyog Pawar (0 && (ENABLE_CHROMA_RDOPT_EVAL_IN_MS) && (ENABLE_SEPARATE_LUMA_CHROMA_INTRA_MODE)) 583*c83a76b0SSuyog Pawar 584*c83a76b0SSuyog Pawar #define ENABLE_ADDITIONAL_CHROMA_MODES_EVAL_IN_HS \ 585*c83a76b0SSuyog Pawar (0 && (ENABLE_CHROMA_RDOPT_EVAL_IN_HS) && (ENABLE_SEPARATE_LUMA_CHROMA_INTRA_MODE)) 586*c83a76b0SSuyog Pawar 587*c83a76b0SSuyog Pawar #define ENABLE_ADDITIONAL_CHROMA_MODES_EVAL_IN_XS \ 588*c83a76b0SSuyog Pawar (0 && (ENABLE_CHROMA_RDOPT_EVAL_IN_XS) && (ENABLE_SEPARATE_LUMA_CHROMA_INTRA_MODE)) 589*c83a76b0SSuyog Pawar 590*c83a76b0SSuyog Pawar #define ENABLE_ADDITIONAL_CHROMA_MODES_EVAL_IN_XS6 \ 591*c83a76b0SSuyog Pawar (0 && (ENABLE_CHROMA_RDOPT_EVAL_IN_XS6) && (ENABLE_SEPARATE_LUMA_CHROMA_INTRA_MODE)) 592*c83a76b0SSuyog Pawar 593*c83a76b0SSuyog Pawar #define RC_BUFFER_INFO 0 594*c83a76b0SSuyog Pawar 595*c83a76b0SSuyog Pawar #define DISABLE_SMP_IN_XS25 1 596*c83a76b0SSuyog Pawar 597*c83a76b0SSuyog Pawar #define DISABLE_64X64_BLOCK_MERGE_IN_ME_IN_XS25 1 598*c83a76b0SSuyog Pawar 599*c83a76b0SSuyog Pawar #define MAX_NUM_TU_RECUR_CANDS_IN_XS25 1 600*c83a76b0SSuyog Pawar 601*c83a76b0SSuyog Pawar #define MAX_NUM_CANDS_FOR_FPEL_REFINE_IN_XS25 1 602*c83a76b0SSuyog Pawar 603*c83a76b0SSuyog Pawar #define MAX_NUM_CONSTITUENT_MVS_TO_ENABLE_32MERGE_IN_XS25 4 604*c83a76b0SSuyog Pawar 605*c83a76b0SSuyog Pawar #define NUM_INIT_SEARCH_CANDS_IN_L1_AND_L2_ME_IN_XS25 2 606*c83a76b0SSuyog Pawar 607*c83a76b0SSuyog Pawar #define DISABLE_TOP_SYNC 0 608*c83a76b0SSuyog Pawar 609*c83a76b0SSuyog Pawar #define ENABLE_MULTI_THREAD_FILE_WRITES 0 610*c83a76b0SSuyog Pawar 611*c83a76b0SSuyog Pawar #define DISABLE_EARLY_ZCBF 0 612*c83a76b0SSuyog Pawar 613*c83a76b0SSuyog Pawar #define EARLY_CBF_ON 1 614*c83a76b0SSuyog Pawar 615*c83a76b0SSuyog Pawar #define DUMP_CBF_HIST_DATA 0 616*c83a76b0SSuyog Pawar 617*c83a76b0SSuyog Pawar #define ENABLE_INTRA_MODE_FILTERING_IN_XS25 1 618*c83a76b0SSuyog Pawar 619*c83a76b0SSuyog Pawar #define MAX_NUM_INTRA_MODES_PER_TU_DISTRIBUTION_IN_XS25 2 620*c83a76b0SSuyog Pawar 621*c83a76b0SSuyog Pawar #define MAX_NUM_REFS_IN_PPICS_IN_XS25 1 622*c83a76b0SSuyog Pawar 623*c83a76b0SSuyog Pawar #define USE_CONSTANT_LAMBDA_MODIFIER 0 624*c83a76b0SSuyog Pawar 625*c83a76b0SSuyog Pawar /* Actual Lambda in ME -> (100 - ME_LAMBDA_DISCOUNT) * lambda / 100 */ 626*c83a76b0SSuyog Pawar #define ME_LAMBDA_DISCOUNT 0 627*c83a76b0SSuyog Pawar 628*c83a76b0SSuyog Pawar #define FORCE_AT_LEAST_1_UNICAND_IN_BPICS 0 629*c83a76b0SSuyog Pawar 630*c83a76b0SSuyog Pawar #define MULTI_REF_ENABLE 1 631*c83a76b0SSuyog Pawar 632*c83a76b0SSuyog Pawar #define PROHIBIT_INTRA_QUANT_ROUNDING_FACTOR_TO_DROP_BELOW_1BY3 0 633*c83a76b0SSuyog Pawar 634*c83a76b0SSuyog Pawar #define ENABLE_INTRA_GATING_FOR_HQ 0 635*c83a76b0SSuyog Pawar 636*c83a76b0SSuyog Pawar #define ADD_NOISE_TERM_TO_COST 1 637*c83a76b0SSuyog Pawar 638*c83a76b0SSuyog Pawar #define ALPHA_Q_FORMAT 4 639*c83a76b0SSuyog Pawar #define ALPHA_FOR_NOISE_TERM_IN_ME_P (1 << ((ALPHA_Q_FORMAT)-2)) //0.25 640*c83a76b0SSuyog Pawar #define ALPHA_FOR_NOISE_TERM_IN_ME_BREF (1 << ((ALPHA_Q_FORMAT)-2)) //0.25 641*c83a76b0SSuyog Pawar #define ALPHA_FOR_NOISE_TERM_IN_RDOPT_P (1 << ((ALPHA_Q_FORMAT)-2)) 642*c83a76b0SSuyog Pawar 643*c83a76b0SSuyog Pawar #define ALPHA_FOR_NOISE_TERM (1 << ((ALPHA_Q_FORMAT)-2)) 644*c83a76b0SSuyog Pawar 645*c83a76b0SSuyog Pawar #define ALPHA_FOR_NOISE_TERM_IN_ME (ALPHA_FOR_NOISE_TERM) 646*c83a76b0SSuyog Pawar 647*c83a76b0SSuyog Pawar #define ALPHA_FOR_NOISE_TERM_IN_RDOPT (ALPHA_FOR_NOISE_TERM) 648*c83a76b0SSuyog Pawar 649*c83a76b0SSuyog Pawar #define ALPHA_DISCOUNT_IN_REF_PICS_IN_RDOPT 50 650*c83a76b0SSuyog Pawar 651*c83a76b0SSuyog Pawar #define ALPHA_FOR_ZERO_CODING_DECISIONS (ALPHA_FOR_NOISE_TERM_IN_RDOPT) 652*c83a76b0SSuyog Pawar 653*c83a76b0SSuyog Pawar #define STIM_Q_FORMAT 8 654*c83a76b0SSuyog Pawar 655*c83a76b0SSuyog Pawar #define USE_NOISE_TERM_IN_L0_ME (1 && (ADD_NOISE_TERM_TO_COST)) 656*c83a76b0SSuyog Pawar 657*c83a76b0SSuyog Pawar #define USE_NOISE_TERM_IN_ENC_LOOP (1 && (ADD_NOISE_TERM_TO_COST)) 658*c83a76b0SSuyog Pawar 659*c83a76b0SSuyog Pawar #define COMPUTE_NOISE_TERM_AT_THE_TU_LEVEL (1 && (USE_NOISE_TERM_IN_ENC_LOOP)) 660*c83a76b0SSuyog Pawar 661*c83a76b0SSuyog Pawar #define DISABLE_SUBPEL_REFINEMENT_WHEN_SRC_IS_NOISY (0 && (USE_NOISE_TERM_IN_L0_ME)) 662*c83a76b0SSuyog Pawar 663*c83a76b0SSuyog Pawar #define USE_NOISE_TERM_DURING_BICAND_SEARCH (1 && (USE_NOISE_TERM_IN_L0_ME)) 664*c83a76b0SSuyog Pawar 665*c83a76b0SSuyog Pawar #define DISABLE_BLK_MERGE_WHEN_NOISY (0 && (USE_NOISE_TERM_IN_L0_ME)) 666*c83a76b0SSuyog Pawar 667*c83a76b0SSuyog Pawar /* Macros for Noise detection implmentation */ 668*c83a76b0SSuyog Pawar #define NOISE_DETECT (ADD_NOISE_TERM_TO_COST) 669*c83a76b0SSuyog Pawar 670*c83a76b0SSuyog Pawar #define PSY_RD_DEBUG_CTBX 2048 671*c83a76b0SSuyog Pawar #define PSY_RD_DEBUG_CTBY 1600 672*c83a76b0SSuyog Pawar #define DEBUG_POC_NO 0 673*c83a76b0SSuyog Pawar 674*c83a76b0SSuyog Pawar #define DISABLE_LARGE_INTRA_PQ 1 675*c83a76b0SSuyog Pawar 676*c83a76b0SSuyog Pawar #define EVERYWHERE_NOISY 0 677*c83a76b0SSuyog Pawar 678*c83a76b0SSuyog Pawar #define DEBUG_PRINT_NOISE_SPATIAL 0 679*c83a76b0SSuyog Pawar 680*c83a76b0SSuyog Pawar #define DEBUG_PRINT_NOISE_TEMPORAL 0 681*c83a76b0SSuyog Pawar 682*c83a76b0SSuyog Pawar #define TEMPORAL_NOISE_DETECT (1 && (USE_NOISE_TERM_IN_L0_ME) && !(EVERYWHERE_NOISY)) 683*c83a76b0SSuyog Pawar 684*c83a76b0SSuyog Pawar #define MIN_NOISY_BLOCKS_CNT_16x16 7 685*c83a76b0SSuyog Pawar 686*c83a76b0SSuyog Pawar #define ALTERNATE_METRIC 0 687*c83a76b0SSuyog Pawar 688*c83a76b0SSuyog Pawar #define PSY_STRENGTH_CHROMA 2 // 0.5 in Q2 689*c83a76b0SSuyog Pawar 690*c83a76b0SSuyog Pawar #define Q_PSY_STRENGTH_CHROMA 2 691*c83a76b0SSuyog Pawar 692*c83a76b0SSuyog Pawar #define PSY_STRENGTH 4 // 0.5 in Q2 693*c83a76b0SSuyog Pawar 694*c83a76b0SSuyog Pawar #define Q_PSY_STRENGTH 2 695*c83a76b0SSuyog Pawar 696*c83a76b0SSuyog Pawar /* between 0 and 100 */ 697*c83a76b0SSuyog Pawar #define MIN_ENERGY_FOR_NOISE_PERCENT_16x16 20 698*c83a76b0SSuyog Pawar 699*c83a76b0SSuyog Pawar /* normalised value between 0 and 1 */ 700*c83a76b0SSuyog Pawar #define MIN_VARIANCE_FOR_NOISE_16x16 0.6 701*c83a76b0SSuyog Pawar 702*c83a76b0SSuyog Pawar /* HAD size is restricted to square blocks only. so we specify only one dimension */ 703*c83a76b0SSuyog Pawar #define HAD_BLOCK_SIZE_16x16 16 704*c83a76b0SSuyog Pawar 705*c83a76b0SSuyog Pawar #define MIN_NUM_COEFFS_ABOVE_AVG_16x16 41 706*c83a76b0SSuyog Pawar 707*c83a76b0SSuyog Pawar #define MIN_COEFF_AVG_ENERGY_16x16 0 708*c83a76b0SSuyog Pawar 709*c83a76b0SSuyog Pawar #define MIN_NOISY_BLOCKS_CNT_8x8 30 710*c83a76b0SSuyog Pawar 711*c83a76b0SSuyog Pawar /* between 0 and 100 */ 712*c83a76b0SSuyog Pawar #define MIN_ENERGY_FOR_NOISE_PERCENT_8x8 20 713*c83a76b0SSuyog Pawar 714*c83a76b0SSuyog Pawar /* normalised value between 0 and 1 */ 715*c83a76b0SSuyog Pawar #define MIN_VARIANCE_FOR_NOISE_8x8 0.6 716*c83a76b0SSuyog Pawar 717*c83a76b0SSuyog Pawar /* HAD size is restricted to square blocks only. so we specify only one dimension */ 718*c83a76b0SSuyog Pawar #define HAD_BLOCK_SIZE_8x8 8 719*c83a76b0SSuyog Pawar 720*c83a76b0SSuyog Pawar #define MIN_NUM_COEFFS_ABOVE_AVG_8x8 17 721*c83a76b0SSuyog Pawar 722*c83a76b0SSuyog Pawar #define MIN_COEFF_AVG_ENERGY_8x8 0 723*c83a76b0SSuyog Pawar 724*c83a76b0SSuyog Pawar #define SATD_NOISE_FLOOR_THRESHOLD 16 725*c83a76b0SSuyog Pawar 726*c83a76b0SSuyog Pawar #define ENABLE_DEBUG_PRINTS_IN_ME 0 727*c83a76b0SSuyog Pawar 728*c83a76b0SSuyog Pawar #define RC_DEBUG_LEVEL_1 0 729*c83a76b0SSuyog Pawar 730*c83a76b0SSuyog Pawar #define RC_2PASS_GOP_DEBUG 0 731*c83a76b0SSuyog Pawar 732*c83a76b0SSuyog Pawar #define DUMP_NOISE_MAP 0 733*c83a76b0SSuyog Pawar 734*c83a76b0SSuyog Pawar #define DISABLE_SKIP 0 735*c83a76b0SSuyog Pawar 736*c83a76b0SSuyog Pawar #define DISABLE_NOISE_DETECTION_IN_P_PICS (0 && (NOISE_DETECT)) 737*c83a76b0SSuyog Pawar 738*c83a76b0SSuyog Pawar #define MAX_LAYER_ID_OF_B_PICS_WITHOUT_NOISE_DETECTION \ 739*c83a76b0SSuyog Pawar ((1 == (DISABLE_NOISE_DETECTION_IN_P_PICS)) ? 0 : 0) 740*c83a76b0SSuyog Pawar 741*c83a76b0SSuyog Pawar #define DISABLE_INTRA_WHEN_NOISY (0 && (NOISE_DETECT)) 742*c83a76b0SSuyog Pawar 743*c83a76b0SSuyog Pawar #define DISABLE_BIPRED_MODES_WHEN_NOISY (0 && (ADD_NOISE_TERM_TO_COST)) 744*c83a76b0SSuyog Pawar 745*c83a76b0SSuyog Pawar #define TEMPORAL_VARIANCE_FACTOR 3 // in Q2 746*c83a76b0SSuyog Pawar 747*c83a76b0SSuyog Pawar #define Q_TEMPORAL_VARIANCE_FACTOR 2 748*c83a76b0SSuyog Pawar 749*c83a76b0SSuyog Pawar /* Actual Lambda -> (100 - ME_LAMBDA_DISCOUNT_WHEN_NOISY) * lambda / 100 */ 750*c83a76b0SSuyog Pawar /*(((100 * (ALPHA_FOR_NOISE_TERM_IN_ME) + (1 << ((ALPHA_Q_FORMAT) - 1)))) >> (ALPHA_Q_FORMAT))*/ 751*c83a76b0SSuyog Pawar #define ME_LAMBDA_DISCOUNT_WHEN_NOISY 50 752*c83a76b0SSuyog Pawar 753*c83a76b0SSuyog Pawar /*(((100 * (ALPHA_FOR_NOISE_TERM_IN_RDOPT) + (1 << ((ALPHA_Q_FORMAT) - 1)))) >> (ALPHA_Q_FORMAT))*/ 754*c83a76b0SSuyog Pawar #define RDOPT_LAMBDA_DISCOUNT_WHEN_NOISY 25 755*c83a76b0SSuyog Pawar 756*c83a76b0SSuyog Pawar #define DISABLE_SKIP_AND_MERGE_WHEN_NOISY (0 && (USE_NOISE_TERM_IN_ENC_LOOP)) 757*c83a76b0SSuyog Pawar 758*c83a76b0SSuyog Pawar #define NO_QP_OFFSET 0 759*c83a76b0SSuyog Pawar 760*c83a76b0SSuyog Pawar #define CONVERT_SSDS_TO_SPATIAL_DOMAIN (1 || (USE_NOISE_TERM_IN_ENC_LOOP)) 761*c83a76b0SSuyog Pawar 762*c83a76b0SSuyog Pawar #define MAX_QP_WHERE_SPATIAL_SSD_ENABLED 18 763*c83a76b0SSuyog Pawar 764*c83a76b0SSuyog Pawar #define USE_RECON_TO_EVALUATE_STIM_IN_RDOPT (1 && (USE_NOISE_TERM_IN_ENC_LOOP)) 765*c83a76b0SSuyog Pawar 766*c83a76b0SSuyog Pawar #define DISABLE_SAO_WHEN_NOISY (1 && (USE_NOISE_TERM_IN_ENC_LOOP)) 767*c83a76b0SSuyog Pawar 768*c83a76b0SSuyog Pawar #define MAX_TU_SIZE_WHEN_NOISY 64 769*c83a76b0SSuyog Pawar 770*c83a76b0SSuyog Pawar #define RANDOMIZE_MERGE_IDX_WHEN_NOISY (0 && (USE_NOISE_TERM_IN_ENC_LOOP)) 771*c83a76b0SSuyog Pawar 772*c83a76b0SSuyog Pawar #define MAX_CU_SIZE_WHERE_MERGE_AND_SKIPS_ENABLED_AND_WHEN_NOISY 64 773*c83a76b0SSuyog Pawar 774*c83a76b0SSuyog Pawar #define NUM_ELEMENTS_IN_RANDOMIZED_MERGE_IDX_LIST 113 775*c83a76b0SSuyog Pawar 776*c83a76b0SSuyog Pawar #define NUM_MERGE_INDICES_TO_PICK_WHEN_LIST_RANDOMIZED_MAXIDX4 \ 777*c83a76b0SSuyog Pawar ((DISABLE_SKIP_AND_MERGE_WHEN_NOISY) ? 0 : 2) 778*c83a76b0SSuyog Pawar 779*c83a76b0SSuyog Pawar #define NUM_MERGE_INDICES_TO_PICK_WHEN_LIST_RANDOMIZED_MAXIDX3 \ 780*c83a76b0SSuyog Pawar ((DISABLE_SKIP_AND_MERGE_WHEN_NOISY) ? 0 : 2) 781*c83a76b0SSuyog Pawar 782*c83a76b0SSuyog Pawar #define NUM_MERGE_INDICES_TO_PICK_WHEN_LIST_RANDOMIZED_MAXIDX2 \ 783*c83a76b0SSuyog Pawar ((DISABLE_SKIP_AND_MERGE_WHEN_NOISY) ? 0 : 1) 784*c83a76b0SSuyog Pawar 785*c83a76b0SSuyog Pawar #define NUM_MERGE_INDICES_TO_PICK_WHEN_LIST_RANDOMIZED_MAXIDX1 \ 786*c83a76b0SSuyog Pawar ((DISABLE_SKIP_AND_MERGE_WHEN_NOISY) ? 0 : 1) 787*c83a76b0SSuyog Pawar 788*c83a76b0SSuyog Pawar #define USE_NOISE_TERM_IN_ZERO_CODING_DECISION_ALGORITHMS \ 789*c83a76b0SSuyog Pawar (1 && (COMPUTE_NOISE_TERM_AT_THE_TU_LEVEL)) 790*c83a76b0SSuyog Pawar 791*c83a76b0SSuyog Pawar #define BITPOS_IN_VQ_TOGGLE_FOR_CONTROL_TOGGLER 0 792*c83a76b0SSuyog Pawar 793*c83a76b0SSuyog Pawar #define BITPOS_IN_VQ_TOGGLE_FOR_ENABLING_NOISE_PRESERVATION 29 794*c83a76b0SSuyog Pawar 795*c83a76b0SSuyog Pawar #define BITPOS_IN_VQ_TOGGLE_FOR_ENABLING_PSYRDOPT_1 5 796*c83a76b0SSuyog Pawar #define BITPOS_IN_VQ_TOGGLE_FOR_ENABLING_PSYRDOPT_2 6 797*c83a76b0SSuyog Pawar #define BITPOS_IN_VQ_TOGGLE_FOR_ENABLING_PSYRDOPT_3 7 798*c83a76b0SSuyog Pawar 799*c83a76b0SSuyog Pawar #define MODULATE_LAMDA_WHEN_SPATIAL_MOD_ON 1 800*c83a76b0SSuyog Pawar 801*c83a76b0SSuyog Pawar #define MODULATE_LAMDA_WHEN_TRAQO_MOD_ON 1 802*c83a76b0SSuyog Pawar 803*c83a76b0SSuyog Pawar #define ENABLE_RUNTIME_ARCH_SWITCH 1 804*c83a76b0SSuyog Pawar 805*c83a76b0SSuyog Pawar #define DISABLE_8X8CUS_IN_NREFBPICS_IN_P6 1 806*c83a76b0SSuyog Pawar 807*c83a76b0SSuyog Pawar #define DISABLE_8X8CUS_IN_REFBPICS_IN_P6 (0 && (DISABLE_8X8CUS_IN_NREFBPICS_IN_P6)) 808*c83a76b0SSuyog Pawar 809*c83a76b0SSuyog Pawar #define DISABLE_8X8CUS_IN_PPICS_IN_P6 (0 && (DISABLE_8X8CUS_IN_REFBPICS_IN_P6)) 810*c83a76b0SSuyog Pawar 811*c83a76b0SSuyog Pawar #define L0ME_IN_OPENLOOP_MODE 0 812*c83a76b0SSuyog Pawar 813*c83a76b0SSuyog Pawar #define DISABLE_INTRAS_IN_BPIC 0 814*c83a76b0SSuyog Pawar 815*c83a76b0SSuyog Pawar #define MAX_RE_ENC 1 816*c83a76b0SSuyog Pawar 817*c83a76b0SSuyog Pawar #define ENABLE_RDO_BASED_TU_RECURSION 1 818*c83a76b0SSuyog Pawar 819*c83a76b0SSuyog Pawar #define ENABLE_TOP_DOWN_TU_RECURSION 1 820*c83a76b0SSuyog Pawar 821*c83a76b0SSuyog Pawar #define INCLUDE_CHROMA_DURING_TU_RECURSION (0 && (ENABLE_RDO_BASED_TU_RECURSION)) 822*c83a76b0SSuyog Pawar 823*c83a76b0SSuyog Pawar #define PROCESS_GT_1CTB_VIA_CU_RECUR_IN_FAST_PRESETS (0) 824*c83a76b0SSuyog Pawar 825*c83a76b0SSuyog Pawar #define PROCESS_INTRA_AND_INTER_CU_TREES_SEPARATELY \ 826*c83a76b0SSuyog Pawar (0 && (PROCESS_GT_1CTB_VIA_CU_RECUR_IN_FAST_PRESETS)) 827*c83a76b0SSuyog Pawar 828*c83a76b0SSuyog Pawar #define RESTRICT_NUM_PARTITION_LEVEL_L0ME_RESULTS_TO_1 1 829*c83a76b0SSuyog Pawar 830*c83a76b0SSuyog Pawar #define RESTRICT_NUM_PARTITION_LEVEL_L1ME_RESULTS_TO_1 1 831*c83a76b0SSuyog Pawar 832*c83a76b0SSuyog Pawar #define RESTRICT_NUM_PARTITION_LEVEL_L2ME_RESULTS_TO_1 1 833*c83a76b0SSuyog Pawar 834*c83a76b0SSuyog Pawar #define RESTRICT_NUM_SEARCH_CANDS_PER_SEARCH_CAND_LOC 1 835*c83a76b0SSuyog Pawar 836*c83a76b0SSuyog Pawar #define RESTRICT_NUM_2NX2N_TU_RECUR_CANDS 1 837*c83a76b0SSuyog Pawar 838*c83a76b0SSuyog Pawar /*****************************************************************************/ 839*c83a76b0SSuyog Pawar /* Function Macros */ 840*c83a76b0SSuyog Pawar /*****************************************************************************/ 841*c83a76b0SSuyog Pawar 842*c83a76b0SSuyog Pawar #define CREATE_SUBBLOCK2CSBFID_MAP(map, numMapElements, transSize, csbfBufStride) \ 843*c83a76b0SSuyog Pawar { \ 844*c83a76b0SSuyog Pawar WORD32 i, j; \ 845*c83a76b0SSuyog Pawar \ 846*c83a76b0SSuyog Pawar WORD32 i4NumSubBlocksPerRow = transSize / 4; \ 847*c83a76b0SSuyog Pawar WORD32 i4NumSubBlocksPerColumn = i4NumSubBlocksPerRow; \ 848*c83a76b0SSuyog Pawar \ 849*c83a76b0SSuyog Pawar ASSERT(numMapElements >= i4NumSubBlocksPerRow * i4NumSubBlocksPerColumn); \ 850*c83a76b0SSuyog Pawar \ 851*c83a76b0SSuyog Pawar for(i = 0; i < i4NumSubBlocksPerColumn; i++) \ 852*c83a76b0SSuyog Pawar { \ 853*c83a76b0SSuyog Pawar for(j = 0; j < i4NumSubBlocksPerRow; j++) \ 854*c83a76b0SSuyog Pawar { \ 855*c83a76b0SSuyog Pawar map[j + i * i4NumSubBlocksPerRow] = j + i * csbfBufStride; \ 856*c83a76b0SSuyog Pawar } \ 857*c83a76b0SSuyog Pawar } \ 858*c83a76b0SSuyog Pawar } 859*c83a76b0SSuyog Pawar 860*c83a76b0SSuyog Pawar #define COPY_CABAC_STATES(dest, src, size) \ 861*c83a76b0SSuyog Pawar { \ 862*c83a76b0SSuyog Pawar memcpy(dest, src, size); \ 863*c83a76b0SSuyog Pawar } 864*c83a76b0SSuyog Pawar 865*c83a76b0SSuyog Pawar #define COPY_CABAC_STATES_FRM_CAB_COEFFX_PREFIX(dest, src, size) \ 866*c83a76b0SSuyog Pawar { \ 867*c83a76b0SSuyog Pawar memcpy(dest, src, size); \ 868*c83a76b0SSuyog Pawar } 869*c83a76b0SSuyog Pawar 870*c83a76b0SSuyog Pawar #define PAD_BUF(pu1_start, stride, wd, ht, p_x, p_y, plane, function_pointer1, function_pointer2) \ 871*c83a76b0SSuyog Pawar { \ 872*c83a76b0SSuyog Pawar function_pointer1(pu1_start, stride, ht, wd, p_x); \ 873*c83a76b0SSuyog Pawar function_pointer2((pu1_start) - (p_x), stride, ht, wd + ((p_x) << 1), p_y); \ 874*c83a76b0SSuyog Pawar } 875*c83a76b0SSuyog Pawar 876*c83a76b0SSuyog Pawar #define PAD_BUF_HOR(pu1_start, stride, ht, p_x, p_y, function_pointer) \ 877*c83a76b0SSuyog Pawar { \ 878*c83a76b0SSuyog Pawar function_pointer(pu1_start, stride, ht, p_x); \ 879*c83a76b0SSuyog Pawar } 880*c83a76b0SSuyog Pawar 881*c83a76b0SSuyog Pawar #define PAD_BUF_VER(pu1_start, stride, wd, p_x, p_y, function_pointer) \ 882*c83a76b0SSuyog Pawar { \ 883*c83a76b0SSuyog Pawar function_pointer(pu1_start, stride, wd, p_y); \ 884*c83a76b0SSuyog Pawar } 885*c83a76b0SSuyog Pawar 886*c83a76b0SSuyog Pawar #define POPULATE_PART_RESULTS(ps_part_results, ps_search_node) \ 887*c83a76b0SSuyog Pawar { \ 888*c83a76b0SSuyog Pawar ps_part_results->i1_ref_idx = ps_search_node->i1_ref_idx; \ 889*c83a76b0SSuyog Pawar ps_part_results->i2_mv_x = ps_search_node->i2_mv_x; \ 890*c83a76b0SSuyog Pawar ps_part_results->i2_mv_y = ps_search_node->i2_mv_y; \ 891*c83a76b0SSuyog Pawar ps_part_results->i4_sad = ps_search_node->i4_sad; \ 892*c83a76b0SSuyog Pawar } 893*c83a76b0SSuyog Pawar 894*c83a76b0SSuyog Pawar #define GET_IDX_CIRCULAR_BUF(idx, increment, size) \ 895*c83a76b0SSuyog Pawar { \ 896*c83a76b0SSuyog Pawar if(increment < 0) \ 897*c83a76b0SSuyog Pawar { \ 898*c83a76b0SSuyog Pawar idx += increment; \ 899*c83a76b0SSuyog Pawar if(idx < 0) \ 900*c83a76b0SSuyog Pawar { \ 901*c83a76b0SSuyog Pawar idx += size; \ 902*c83a76b0SSuyog Pawar } \ 903*c83a76b0SSuyog Pawar } \ 904*c83a76b0SSuyog Pawar else \ 905*c83a76b0SSuyog Pawar { \ 906*c83a76b0SSuyog Pawar idx += increment; \ 907*c83a76b0SSuyog Pawar if(idx >= size) \ 908*c83a76b0SSuyog Pawar { \ 909*c83a76b0SSuyog Pawar idx %= size; \ 910*c83a76b0SSuyog Pawar } \ 911*c83a76b0SSuyog Pawar } \ 912*c83a76b0SSuyog Pawar } 913*c83a76b0SSuyog Pawar 914*c83a76b0SSuyog Pawar #define CLIPUCHAR(x) CLIP3((x), 0, 255) 915*c83a76b0SSuyog Pawar 916*c83a76b0SSuyog Pawar #define CLIPUCHAR10BIT(x) CLIP3((x), 0, 1023) 917*c83a76b0SSuyog Pawar 918*c83a76b0SSuyog Pawar #define CEIL4(x) (((x + 3) >> 2) << 2) 919*c83a76b0SSuyog Pawar 920*c83a76b0SSuyog Pawar #define CEIL8(x) (((x + 7) >> 3) << 3) 921*c83a76b0SSuyog Pawar 922*c83a76b0SSuyog Pawar #define CEIL2(x) (((x + 1) >> 1) << 1) 923*c83a76b0SSuyog Pawar 924*c83a76b0SSuyog Pawar #define CEIL16(x) (((x) + 15) & (~15)) 925*c83a76b0SSuyog Pawar 926*c83a76b0SSuyog Pawar #define CEIL_POW2(x, align) (((x) + (align)-1) & (~((align)-1))) 927*c83a76b0SSuyog Pawar 928*c83a76b0SSuyog Pawar #define PAD_SUBPEL PAD_BUF 929*c83a76b0SSuyog Pawar #define PAD_FPEL PAD_BUF 930*c83a76b0SSuyog Pawar #define PAD_FPEL_HOR PAD_BUF_HOR 931*c83a76b0SSuyog Pawar #define PAD_FPEL_VER PAD_BUF_VER 932*c83a76b0SSuyog Pawar 933*c83a76b0SSuyog Pawar /* Defining a printf macro: To disable all prints inside codec in release mode */ 934*c83a76b0SSuyog Pawar #ifdef _DEBUG 935*c83a76b0SSuyog Pawar #define DBG_PRINTF(...) printf(__VA_ARGS__) 936*c83a76b0SSuyog Pawar #else 937*c83a76b0SSuyog Pawar #define DBG_PRINTF(...) 938*c83a76b0SSuyog Pawar #endif 939*c83a76b0SSuyog Pawar 940*c83a76b0SSuyog Pawar /*****************************************************************************/ 941*c83a76b0SSuyog Pawar /* Enumerations */ 942*c83a76b0SSuyog Pawar /*****************************************************************************/ 943*c83a76b0SSuyog Pawar 944*c83a76b0SSuyog Pawar typedef enum 945*c83a76b0SSuyog Pawar { 946*c83a76b0SSuyog Pawar LEVEL1 = 30, 947*c83a76b0SSuyog Pawar LEVEL2 = 60, 948*c83a76b0SSuyog Pawar LEVEL2_1 = 63, 949*c83a76b0SSuyog Pawar LEVEL3 = 90, 950*c83a76b0SSuyog Pawar LEVEL3_1 = 93, 951*c83a76b0SSuyog Pawar LEVEL4 = 120, 952*c83a76b0SSuyog Pawar LEVEL4_1 = 123, 953*c83a76b0SSuyog Pawar LEVEL5 = 150, 954*c83a76b0SSuyog Pawar LEVEL5_1 = 153, 955*c83a76b0SSuyog Pawar LEVEL5_2 = 156, 956*c83a76b0SSuyog Pawar LEVEL6 = 180, 957*c83a76b0SSuyog Pawar LEVEL6_1 = 183, 958*c83a76b0SSuyog Pawar LEVEL6_2 = 186 959*c83a76b0SSuyog Pawar } LEVEL_T; 960*c83a76b0SSuyog Pawar 961*c83a76b0SSuyog Pawar typedef enum 962*c83a76b0SSuyog Pawar { 963*c83a76b0SSuyog Pawar LIST_0, 964*c83a76b0SSuyog Pawar LIST_1, 965*c83a76b0SSuyog Pawar 966*c83a76b0SSuyog Pawar NUM_REF_LISTS 967*c83a76b0SSuyog Pawar 968*c83a76b0SSuyog Pawar } REF_LISTS_t; 969*c83a76b0SSuyog Pawar 970*c83a76b0SSuyog Pawar typedef enum SSD_TYPE_T 971*c83a76b0SSuyog Pawar { 972*c83a76b0SSuyog Pawar NULL_TYPE = -1, 973*c83a76b0SSuyog Pawar SPATIAL_DOMAIN_SSD, 974*c83a76b0SSuyog Pawar FREQUENCY_DOMAIN_SSD 975*c83a76b0SSuyog Pawar 976*c83a76b0SSuyog Pawar } SSD_TYPE_T; 977*c83a76b0SSuyog Pawar 978*c83a76b0SSuyog Pawar #endif 979