Home | History | Annotate | Download | only in aom_dsp
      1 /*
      2  * Copyright (c) 2016, Alliance for Open Media. All rights reserved
      3  *
      4  * This source code is subject to the terms of the BSD 2 Clause License and
      5  * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
      6  * was not distributed with this source code in the LICENSE file, you can
      7  * obtain it at www.aomedia.org/license/software. If the Alliance for Open
      8  * Media Patent License 1.0 was not distributed with this source code in the
      9  * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
     10  */
     11 
     12 #ifndef AOM_AOM_DSP_AOM_FILTER_H_
     13 #define AOM_AOM_DSP_AOM_FILTER_H_
     14 
     15 #include "aom/aom_integer.h"
     16 
     17 #ifdef __cplusplus
     18 extern "C" {
     19 #endif
     20 
     21 #define FILTER_BITS 7
     22 
     23 #define SUBPEL_BITS 4
     24 #define SUBPEL_MASK ((1 << SUBPEL_BITS) - 1)
     25 #define SUBPEL_SHIFTS (1 << SUBPEL_BITS)
     26 #define SUBPEL_TAPS 8
     27 
     28 #define SCALE_SUBPEL_BITS 10
     29 #define SCALE_SUBPEL_SHIFTS (1 << SCALE_SUBPEL_BITS)
     30 #define SCALE_SUBPEL_MASK (SCALE_SUBPEL_SHIFTS - 1)
     31 #define SCALE_EXTRA_BITS (SCALE_SUBPEL_BITS - SUBPEL_BITS)
     32 #define SCALE_EXTRA_OFF ((1 << SCALE_EXTRA_BITS) / 2)
     33 
     34 #define RS_SUBPEL_BITS 6
     35 #define RS_SUBPEL_MASK ((1 << RS_SUBPEL_BITS) - 1)
     36 #define RS_SCALE_SUBPEL_BITS 14
     37 #define RS_SCALE_SUBPEL_MASK ((1 << RS_SCALE_SUBPEL_BITS) - 1)
     38 #define RS_SCALE_EXTRA_BITS (RS_SCALE_SUBPEL_BITS - RS_SUBPEL_BITS)
     39 #define RS_SCALE_EXTRA_OFF (1 << (RS_SCALE_EXTRA_BITS - 1))
     40 
     41 typedef int16_t InterpKernel[SUBPEL_TAPS];
     42 
     43 #define BIL_SUBPEL_BITS 3
     44 #define BIL_SUBPEL_SHIFTS (1 << BIL_SUBPEL_BITS)
     45 
     46 // 2 tap bilinear filters
     47 static const uint8_t bilinear_filters_2t[BIL_SUBPEL_SHIFTS][2] = {
     48   { 128, 0 }, { 112, 16 }, { 96, 32 }, { 80, 48 },
     49   { 64, 64 }, { 48, 80 },  { 32, 96 }, { 16, 112 },
     50 };
     51 
     52 #ifdef __cplusplus
     53 }  // extern "C"
     54 #endif
     55 
     56 #endif  // AOM_AOM_DSP_AOM_FILTER_H_
     57