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