xref: /aosp_15_r20/external/libhevc/encoder/ihevce_defs.h (revision c83a76b084498d55f252f48b2e3786804cdf24b7)
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