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.c
23 *
24 * \brief
25 *    This file contains function pointer initialization of functions used during
26 *    pre-enc intra pred estimation
27 *
28 * \date
29 *    15/07/2013
30 *
31 * \author
32 *    Ittiam
33 *
34 * List of Functions
35 *  ihevce_ipe_instr_set_router()
36 *
37 ******************************************************************************
38 */
39 
40 /*****************************************************************************/
41 /* File Includes                                                             */
42 /*****************************************************************************/
43 /* System include files */
44 #include <stdio.h>
45 #include <stdlib.h>
46 #include <assert.h>
47 
48 /* User include files */
49 #include "ihevc_typedefs.h"
50 #include "itt_video_api.h"
51 #include "ihevc_debug.h"
52 #include "ihevce_ipe_instr_set_router.h"
53 
54 /*****************************************************************************/
55 /* Function Definitions                                                      */
56 /*****************************************************************************/
57 
58 /*!
59 ******************************************************************************
60 * \if Function name : ihevce_ipe_instr_set_router \endif
61 *
62 * \brief
63 *    Function pointer initialization of pre enc ipe struct
64 *
65 *****************************************************************************
66 */
ihevce_ipe_instr_set_router(ihevce_ipe_optimised_function_list_t * ps_func_list,IV_ARCH_T e_arch)67 void ihevce_ipe_instr_set_router(
68     ihevce_ipe_optimised_function_list_t *ps_func_list, IV_ARCH_T e_arch)
69 {
70     // clang-format off
71     switch(e_arch)
72     {
73 
74 #ifdef ENABLE_NEON
75     case ARCH_ARM_A9Q:
76     case ARCH_ARM_V8_NEON:
77         ps_func_list->pf_4x4_sad_computer = ihevce_4x4_sad_computer_neon;
78         ps_func_list->pf_8x8_sad_computer = ihevce_8x8_sad_computer_neon;
79         ps_func_list->pf_ed_4x4_find_best_modes = ihevce_ed_4x4_find_best_modes;
80         ps_func_list->pf_nxn_sad_computer = ihevce_nxn_sad_computer_neon;
81         ps_func_list->pf_scaling_filter_mxn = ihevce_scaling_filter_mxn_neon;
82         break;
83 #endif
84 
85     default:
86         ps_func_list->pf_4x4_sad_computer = ihevce_4x4_sad_computer;
87         ps_func_list->pf_8x8_sad_computer = ihevce_8x8_sad_computer;
88         ps_func_list->pf_ed_4x4_find_best_modes = ihevce_ed_4x4_find_best_modes;
89         ps_func_list->pf_nxn_sad_computer = ihevce_nxn_sad_computer;
90         ps_func_list->pf_scaling_filter_mxn = ihevce_scaling_filter_mxn;
91         break;
92     }
93     // clang-format on
94 }
95