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