xref: /aosp_15_r20/external/libmpeg2/common/ideint_defs.h (revision a97c2a1f0a796dc32bed80d3353c69c5fc07c750)
1*a97c2a1fSXin Li /******************************************************************************
2*a97c2a1fSXin Li  *
3*a97c2a1fSXin Li  * Copyright (C) 2015 The Android Open Source Project
4*a97c2a1fSXin Li  *
5*a97c2a1fSXin Li  * Licensed under the Apache License, Version 2.0 (the "License");
6*a97c2a1fSXin Li  * you may not use this file except in compliance with the License.
7*a97c2a1fSXin Li  * You may obtain a copy of the License at:
8*a97c2a1fSXin Li  *
9*a97c2a1fSXin Li  * http://www.apache.org/licenses/LICENSE-2.0
10*a97c2a1fSXin Li  *
11*a97c2a1fSXin Li  * Unless required by applicable law or agreed to in writing, software
12*a97c2a1fSXin Li  * distributed under the License is distributed on an "AS IS" BASIS,
13*a97c2a1fSXin Li  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*a97c2a1fSXin Li  * See the License for the specific language governing permissions and
15*a97c2a1fSXin Li  * limitations under the License.
16*a97c2a1fSXin Li  *
17*a97c2a1fSXin Li  *****************************************************************************
18*a97c2a1fSXin Li  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*a97c2a1fSXin Li */
20*a97c2a1fSXin Li /**
21*a97c2a1fSXin Li *******************************************************************************
22*a97c2a1fSXin Li * @file
23*a97c2a1fSXin Li *  ideint_defs.h
24*a97c2a1fSXin Li *
25*a97c2a1fSXin Li * @brief
26*a97c2a1fSXin Li *  Contains deinterlacer definitions
27*a97c2a1fSXin Li *
28*a97c2a1fSXin Li * @author
29*a97c2a1fSXin Li *  Ittiam
30*a97c2a1fSXin Li *
31*a97c2a1fSXin Li * @par List of Functions:
32*a97c2a1fSXin Li *
33*a97c2a1fSXin Li * @remarks
34*a97c2a1fSXin Li *  None
35*a97c2a1fSXin Li *
36*a97c2a1fSXin Li *******************************************************************************
37*a97c2a1fSXin Li */
38*a97c2a1fSXin Li 
39*a97c2a1fSXin Li #ifndef __IDEINT_DEFS_H__
40*a97c2a1fSXin Li #define __IDEINT_DEFS_H__
41*a97c2a1fSXin Li 
42*a97c2a1fSXin Li #define ADJ_SAD_THRESH (6 * (FLD_BLK_SIZE * 2)) // *2 : 2 way collapsing (col+row)
43*a97c2a1fSXin Li 
44*a97c2a1fSXin Li #define RSUM_CSUM_THRESH_PER_PEL  5//0
45*a97c2a1fSXin Li 
46*a97c2a1fSXin Li /* Block dimensions. All the decisions (which method to be used) are     */
47*a97c2a1fSXin Li /* made on block basis. The blk level decisions help us in               */
48*a97c2a1fSXin Li /* reducing the time-complexity of the algorithm.                        */
49*a97c2a1fSXin Li #define BLK_WD_SHIFT 3
50*a97c2a1fSXin Li #define BLK_HT_SHIFT 3
51*a97c2a1fSXin Li 
52*a97c2a1fSXin Li #define BLK_WD     (1 << BLK_WD_SHIFT )
53*a97c2a1fSXin Li #define BLK_HT     (1 << BLK_HT_SHIFT)
54*a97c2a1fSXin Li 
55*a97c2a1fSXin Li #define FLD_BLK_SIZE   (BLK_WD * (BLK_HT >> 1))
56*a97c2a1fSXin Li 
57*a97c2a1fSXin Li 
58*a97c2a1fSXin Li /* Inside the algorithm, the block itself is divided amongst further     */
59*a97c2a1fSXin Li /* smaller blocks.                                                       */
60*a97c2a1fSXin Li #define SUB_BLK_WD  (BLK_WD  >> 1)
61*a97c2a1fSXin Li #define SUB_BLK_HT (BLK_HT >> 1) /* field dimensions. */
62*a97c2a1fSXin Li 
63*a97c2a1fSXin Li #define FLD_SUB_BLK_SIZE (SUB_BLK_WD * SUB_BLK_HT)
64*a97c2a1fSXin Li 
65*a97c2a1fSXin Li 
66*a97c2a1fSXin Li /*****************************************************************************/
67*a97c2a1fSXin Li /* Stationarity check threshold, used in deciding when to weave.             */
68*a97c2a1fSXin Li /*****************************************************************************/
69*a97c2a1fSXin Li #define ST_THRESH        ((15 * FLD_BLK_SIZE) >> 1)
70*a97c2a1fSXin Li 
71*a97c2a1fSXin Li #define MOD_IDX_ST_NUM   3
72*a97c2a1fSXin Li #define MOD_IDX_ST_SHIFT 1
73*a97c2a1fSXin Li 
74*a97c2a1fSXin Li #define VAR_AVG_LUMA   735
75*a97c2a1fSXin Li #define VAR_AVG_CHROMA  38
76*a97c2a1fSXin Li 
77*a97c2a1fSXin Li /*****************************************************************************/
78*a97c2a1fSXin Li /* Threshold to choose the fallback method out of Bob and 3-field Kernel     */
79*a97c2a1fSXin Li /* method.                                                                   */
80*a97c2a1fSXin Li /*****************************************************************************/
81*a97c2a1fSXin Li #define FB_THRESH  (32 * FLD_BLK_SIZE)
82*a97c2a1fSXin Li 
83*a97c2a1fSXin Li #define MOD_IDX_FB    4
84*a97c2a1fSXin Li 
85*a97c2a1fSXin Li 
86*a97c2a1fSXin Li #define EDGE_BIAS_0  5
87*a97c2a1fSXin Li #define EDGE_BIAS_1  7
88*a97c2a1fSXin Li 
89*a97c2a1fSXin Li /*****************************************************************************/
90*a97c2a1fSXin Li /* Adjacent correlation bias, used in biasing the adjacent correlation over  */
91*a97c2a1fSXin Li /* the alternate one, while comparing the two; in the combing-artifact-check */
92*a97c2a1fSXin Li /* function.                                                                 */
93*a97c2a1fSXin Li /*****************************************************************************/
94*a97c2a1fSXin Li #define SAD_BIAS_ADDITIVE   (FLD_SUB_BLK_SIZE >> 1)
95*a97c2a1fSXin Li 
96*a97c2a1fSXin Li /*****************************************************************************/
97*a97c2a1fSXin Li /* Mult bias is 1.125 = 9/8. Multiplication by this number is done in two    */
98*a97c2a1fSXin Li /* stpes, first multiplication by 9 and then shift by 3.                     */
99*a97c2a1fSXin Li /*****************************************************************************/
100*a97c2a1fSXin Li #define SAD_BIAS_MULT_SHIFT   3
101*a97c2a1fSXin Li 
102*a97c2a1fSXin Li /*****************************************************************************/
103*a97c2a1fSXin Li /* row_sum threshold, used for making the combing artifact check more robust */
104*a97c2a1fSXin Li /* against the noise (e.g. ringing) by rejecting insignificant pixel         */
105*a97c2a1fSXin Li /* difference across two adjacent rows; in the combing artifact check        */
106*a97c2a1fSXin Li /* function.                                                                 */
107*a97c2a1fSXin Li /*****************************************************************************/
108*a97c2a1fSXin Li #define RSUM_CSUM_THRESH   (RSUM_CSUM_THRESH_PER_PEL * SUB_BLK_WD)
109*a97c2a1fSXin Li 
110*a97c2a1fSXin Li /*****************************************************************************/
111*a97c2a1fSXin Li /* The 3-field filter is of type [-k 2k -k, 0.5 0.5, -k 2k -k], where k is   */
112*a97c2a1fSXin Li /* the COEFF_THREE_FIELD defined below.                                      */
113*a97c2a1fSXin Li /*****************************************************************************/
114*a97c2a1fSXin Li #define COEFF_THREE_FIELD 13
115*a97c2a1fSXin Li 
116*a97c2a1fSXin Li /*****************************************************************************/
117*a97c2a1fSXin Li /* Definitions used by the variance calculations module. */
118*a97c2a1fSXin Li /*****************************************************************************/
119*a97c2a1fSXin Li #define SQR_SUB_BLK_SZ       (FLD_BLK_SIZE * FLD_BLK_SIZE)
120*a97c2a1fSXin Li #define SUB_BLK_SZ_SHIFT     5                       /* 2^5  = 32 */
121*a97c2a1fSXin Li #define SQR_SUB_BLK_SZ_SHIFT (SUB_BLK_SZ_SHIFT << 1) /* 2^10 = 1024 = 32 * 32 */
122*a97c2a1fSXin Li 
123*a97c2a1fSXin Li 
124*a97c2a1fSXin Li 
125*a97c2a1fSXin Li #endif /* __IDEINT_DEFS_H__ */
126