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