1 /****************************************************************************** 2 * 3 * Copyright (C) 2018 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 hme_common_defs.h 23 * 24 * \brief 25 * Important definitions, enumerations, macros and structures used by ME 26 * 27 * \date 28 * 18/09/2012 29 * 30 * \author 31 * Ittiam 32 * 33 ****************************************************************************** 34 */ 35 36 #ifndef _HME_COMMON_DEFS_H_ 37 #define _HME_COMMON_DEFS_H_ 38 39 /*****************************************************************************/ 40 /* Constant Macros */ 41 /*****************************************************************************/ 42 #define MAX_32BIT_VAL (0x7FFFFFFF) 43 #define MAX_SIGNED_16BIT_VAL (0x07FFF) 44 #define INTERP_INTERMED_BUF_SIZE (72 * 72 * 2) 45 46 /*****************************************************************************/ 47 /* Function Macros */ 48 /*****************************************************************************/ 49 #define HME_CLIP(x, min, max) (((x) < (min)) ? (min) : (((x) > (max)) ? (max) : (x))) 50 51 #define ARG_NOT_USED(x) ((void)(x)) 52 /** 53 ****************************************************************************** 54 * @brief Average of 2 numbers of any datatype 55 ****************************************************************************** 56 */ 57 #define AVG2(x, y) (((x) + (y) + 1) >> 1) 58 59 #define FLOOR16(x) ((x) & (~15)) 60 #define FLOOR8(x) ((x) & (~7)) 61 62 #define SET_PIC_LIMIT(s_pic_limit, pad_x, pad_y, wd, ht, num_post_refine) \ 63 { \ 64 s_pic_limit.i2_min_x = (S16)(-(pad_x) + (num_post_refine)); \ 65 s_pic_limit.i2_min_y = (S16)(-(pad_y) + (num_post_refine)); \ 66 s_pic_limit.i2_max_x = (S16)((wd) + (pad_x) - (num_post_refine)); \ 67 s_pic_limit.i2_max_y = (S16)((ht) + (pad_y) - (num_post_refine)); \ 68 } 69 70 #define SCALE_FOR_POC_DELTA(x, y, node, ref_tgt, pi2_ref_scf) \ 71 { \ 72 x = node->s_mv.i2_mvx; \ 73 y = node->s_mv.i2_mvy; \ 74 x = x * pi2_ref_scf[ref_tgt * MAX_NUM_REF + node->i1_ref_idx]; \ 75 y = y * pi2_ref_scf[ref_tgt * MAX_NUM_REF + node->i1_ref_idx]; \ 76 x = (x + 128) >> 8; \ 77 y = (y + 128) >> 8; \ 78 HME_CLIP(x, -32768, 32767); \ 79 HME_CLIP(y, -32768, 32767); \ 80 } 81 82 #define SWAP_HME(a, b, data_type) \ 83 { \ 84 data_type temp = a; \ 85 a = b; \ 86 b = temp; \ 87 } 88 89 /** 90 ****************************************************************************** 91 * @brief Check if MVs lie within a range 92 ****************************************************************************** 93 */ 94 #define CHECK_MV_WITHIN_RANGE(x, y, range) \ 95 (((x) > (range)->i2_min_x) && ((x) < (range)->i2_max_x) && ((y) > (range)->i2_min_y) && \ 96 ((y) < (range)->i2_max_y)) 97 98 /*****************************************************************************/ 99 /* Structure */ 100 /*****************************************************************************/ 101 102 /** 103 ****************************************************************************** 104 * @struct mv_t 105 * @brief Basic Motion vector structure (x and y components) 106 ****************************************************************************** 107 */ 108 typedef struct 109 { 110 S16 i2_mv_x; 111 S16 i2_mv_y; 112 } hme_mv_t; 113 114 #endif /* #ifndef _HME_COMMON_DEFS_H_ */ 115