Home | History | Annotate | Download | only in common
      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