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 ihevce_ipe_instr_set_router.h 23 * 24 * \brief 25 * This file contains declarations related to pre enc intra pred estimation 26 * functions used in encoder 27 * 28 * \date 29 * 15/07/2013 30 * 31 * \author 32 * Ittiam 33 * 34 * List of Functions 35 * 36 * 37 ****************************************************************************** 38 */ 39 40 #ifndef __IHEVCE_IPE_INSTR_SET_ROUTER_H_ 41 #define __IHEVCE_IPE_INSTR_SET_ROUTER_H_ 42 43 #include "ihevc_typedefs.h" 44 #include "ihevce_defs.h" 45 #include "ihevce_cmn_utils_instr_set_router.h" 46 47 /*****************************************************************************/ 48 /* Typedefs */ 49 /*****************************************************************************/ 50 typedef UWORD16 FT_SAD_COMPUTER(UWORD8 *, UWORD8 *, WORD32, WORD32); 51 52 typedef UWORD32 FT_BLK_SAD_COMPUTER(UWORD8 *, UWORD8 *, WORD32, WORD32, WORD32, WORD32); 53 54 typedef WORD32 FT_SAD_COMPUTER_GENERIC(UWORD8 *, WORD32, UWORD8 *, WORD32, WORD32); 55 56 typedef void 57 FT_SCALING_FILTER_BY_2(UWORD8 *, WORD32, UWORD8 *, WORD32, UWORD8 *, WORD32, WORD32, WORD32); 58 59 typedef void FT_SCALE_BY_2( 60 UWORD8 *, 61 WORD32, 62 UWORD8 *, 63 WORD32, 64 WORD32, 65 WORD32, 66 UWORD8 *, 67 WORD32, 68 WORD32, 69 WORD32, 70 WORD32, 71 FT_COPY_2D *, 72 FT_SCALING_FILTER_BY_2 *); 73 74 typedef void FT_ED_4X4_FIND_BEST_MODES( 75 UWORD8 *, WORD32, UWORD8 *, UWORD16 *, UWORD8 *, WORD32 *, WORD32, FT_SAD_COMPUTER *); 76 77 /*****************************************************************************/ 78 /* Structure */ 79 /*****************************************************************************/ 80 typedef struct 81 { 82 FT_SAD_COMPUTER *pf_4x4_sad_computer; 83 FT_SAD_COMPUTER *pf_8x8_sad_computer; 84 FT_SAD_COMPUTER_GENERIC *pf_nxn_sad_computer; 85 FT_SCALING_FILTER_BY_2 *pf_scaling_filter_mxn; 86 FT_ED_4X4_FIND_BEST_MODES *pf_ed_4x4_find_best_modes; 87 } ihevce_ipe_optimised_function_list_t; 88 89 /*****************************************************************************/ 90 /* Extern Function Declarations */ 91 /*****************************************************************************/ 92 void ihevce_ipe_instr_set_router( 93 ihevce_ipe_optimised_function_list_t *ps_func_list, IV_ARCH_T e_arch); 94 95 /* Function List - C */ 96 FT_SAD_COMPUTER ihevce_4x4_sad_computer; 97 FT_SAD_COMPUTER ihevce_8x8_sad_computer; 98 FT_SAD_COMPUTER_GENERIC ihevce_nxn_sad_computer; 99 FT_SCALE_BY_2 ihevce_scale_by_2; 100 FT_SCALING_FILTER_BY_2 ihevce_scaling_filter_mxn; 101 FT_ED_4X4_FIND_BEST_MODES ihevce_ed_4x4_find_best_modes; 102 103 #ifdef ENABLE_NEON 104 /* Function List - ARM Neon */ 105 FT_SAD_COMPUTER ihevce_4x4_sad_computer_neon; 106 FT_SAD_COMPUTER ihevce_8x8_sad_computer_neon; 107 FT_SAD_COMPUTER_GENERIC ihevce_nxn_sad_computer_neon; 108 FT_BLK_SAD_COMPUTER ihevce_4mx4n_sad_computer_neon; 109 FT_SCALING_FILTER_BY_2 ihevce_scaling_filter_mxn_neon; 110 #endif 111 112 #endif 113