1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2018 The Android Open Source Project 4*c83a76b0SSuyog Pawar * 5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License"); 6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License. 7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at: 8*c83a76b0SSuyog Pawar * 9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0 10*c83a76b0SSuyog Pawar * 11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software 12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS, 13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and 15*c83a76b0SSuyog Pawar * limitations under the License. 16*c83a76b0SSuyog Pawar * 17*c83a76b0SSuyog Pawar ***************************************************************************** 18*c83a76b0SSuyog Pawar * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*c83a76b0SSuyog Pawar */ 20*c83a76b0SSuyog Pawar /** 21*c83a76b0SSuyog Pawar ******************************************************************************* 22*c83a76b0SSuyog Pawar * @file 23*c83a76b0SSuyog Pawar * ihevce_function_selector.c 24*c83a76b0SSuyog Pawar * 25*c83a76b0SSuyog Pawar * @brief 26*c83a76b0SSuyog Pawar * Contains functions to initialize function pointers used in hevc 27*c83a76b0SSuyog Pawar * 28*c83a76b0SSuyog Pawar * @author 29*c83a76b0SSuyog Pawar * ittiam 30*c83a76b0SSuyog Pawar * 31*c83a76b0SSuyog Pawar * @par List of Functions: 32*c83a76b0SSuyog Pawar * ihevce_default_arch() 33*c83a76b0SSuyog Pawar * ihevce_init_function_ptr_generic() 34*c83a76b0SSuyog Pawar * ihevce_init_function_ptr_av8() 35*c83a76b0SSuyog Pawar * ihevce_init_function_ptr_a9q() 36*c83a76b0SSuyog Pawar * ihevce_init_function_ptr() 37*c83a76b0SSuyog Pawar * 38*c83a76b0SSuyog Pawar * @remarks 39*c83a76b0SSuyog Pawar * None 40*c83a76b0SSuyog Pawar * 41*c83a76b0SSuyog Pawar ******************************************************************************* 42*c83a76b0SSuyog Pawar */ 43*c83a76b0SSuyog Pawar 44*c83a76b0SSuyog Pawar /*****************************************************************************/ 45*c83a76b0SSuyog Pawar /* File Includes */ 46*c83a76b0SSuyog Pawar /*****************************************************************************/ 47*c83a76b0SSuyog Pawar /* System include files */ 48*c83a76b0SSuyog Pawar #include <stdio.h> 49*c83a76b0SSuyog Pawar #include <string.h> 50*c83a76b0SSuyog Pawar #include <stddef.h> 51*c83a76b0SSuyog Pawar #include <stdlib.h> 52*c83a76b0SSuyog Pawar #include <assert.h> 53*c83a76b0SSuyog Pawar 54*c83a76b0SSuyog Pawar /* User include files */ 55*c83a76b0SSuyog Pawar #include "ihevc_typedefs.h" 56*c83a76b0SSuyog Pawar #include "itt_video_api.h" 57*c83a76b0SSuyog Pawar #include "ihevce_api.h" 58*c83a76b0SSuyog Pawar 59*c83a76b0SSuyog Pawar #include "rc_cntrl_param.h" 60*c83a76b0SSuyog Pawar #include "rc_frame_info_collector.h" 61*c83a76b0SSuyog Pawar #include "rc_look_ahead_params.h" 62*c83a76b0SSuyog Pawar 63*c83a76b0SSuyog Pawar #include "ihevc_defs.h" 64*c83a76b0SSuyog Pawar #include "ihevc_structs.h" 65*c83a76b0SSuyog Pawar #include "ihevc_platform_macros.h" 66*c83a76b0SSuyog Pawar #include "ihevc_deblk.h" 67*c83a76b0SSuyog Pawar #include "ihevc_itrans_recon.h" 68*c83a76b0SSuyog Pawar #include "ihevc_chroma_itrans_recon.h" 69*c83a76b0SSuyog Pawar #include "ihevc_chroma_intra_pred.h" 70*c83a76b0SSuyog Pawar #include "ihevc_intra_pred.h" 71*c83a76b0SSuyog Pawar #include "ihevc_inter_pred.h" 72*c83a76b0SSuyog Pawar #include "ihevc_mem_fns.h" 73*c83a76b0SSuyog Pawar #include "ihevc_padding.h" 74*c83a76b0SSuyog Pawar #include "ihevc_weighted_pred.h" 75*c83a76b0SSuyog Pawar #include "ihevc_sao.h" 76*c83a76b0SSuyog Pawar #include "ihevc_resi_trans.h" 77*c83a76b0SSuyog Pawar #include "ihevc_quant_iquant_ssd.h" 78*c83a76b0SSuyog Pawar #include "ihevc_cabac_tables.h" 79*c83a76b0SSuyog Pawar 80*c83a76b0SSuyog Pawar #include "ihevce_defs.h" 81*c83a76b0SSuyog Pawar #include "ihevce_lap_enc_structs.h" 82*c83a76b0SSuyog Pawar #include "ihevce_multi_thrd_structs.h" 83*c83a76b0SSuyog Pawar #include "ihevce_multi_thrd_funcs.h" 84*c83a76b0SSuyog Pawar #include "ihevce_me_common_defs.h" 85*c83a76b0SSuyog Pawar #include "ihevce_had_satd.h" 86*c83a76b0SSuyog Pawar #include "ihevce_error_codes.h" 87*c83a76b0SSuyog Pawar #include "ihevce_bitstream.h" 88*c83a76b0SSuyog Pawar #include "ihevce_cabac.h" 89*c83a76b0SSuyog Pawar #include "ihevce_rdoq_macros.h" 90*c83a76b0SSuyog Pawar #include "ihevce_function_selector.h" 91*c83a76b0SSuyog Pawar #include "ihevce_enc_structs.h" 92*c83a76b0SSuyog Pawar #include "ihevce_cmn_utils_instr_set_router.h" 93*c83a76b0SSuyog Pawar 94*c83a76b0SSuyog Pawar /*****************************************************************************/ 95*c83a76b0SSuyog Pawar /* Function Definitions */ 96*c83a76b0SSuyog Pawar /*****************************************************************************/ 97*c83a76b0SSuyog Pawar 98*c83a76b0SSuyog Pawar /*! 99*c83a76b0SSuyog Pawar ****************************************************************************** 100*c83a76b0SSuyog Pawar * \if Function name : ihevce_default_arch \endif 101*c83a76b0SSuyog Pawar * 102*c83a76b0SSuyog Pawar * \brief 103*c83a76b0SSuyog Pawar * Get Default architecture 104*c83a76b0SSuyog Pawar * 105*c83a76b0SSuyog Pawar ***************************************************************************** 106*c83a76b0SSuyog Pawar */ ihevce_default_arch(void)107*c83a76b0SSuyog PawarIV_ARCH_T ihevce_default_arch(void) 108*c83a76b0SSuyog Pawar { 109*c83a76b0SSuyog Pawar #if(defined(ENABLE_NEON) && defined(ARMV8)) 110*c83a76b0SSuyog Pawar return ARCH_ARM_V8_NEON; 111*c83a76b0SSuyog Pawar #elif(defined(ENABLE_NEON) && defined(ARM)) 112*c83a76b0SSuyog Pawar return ARCH_ARM_A9Q; 113*c83a76b0SSuyog Pawar #else 114*c83a76b0SSuyog Pawar return ARCH_ARM_NONEON; 115*c83a76b0SSuyog Pawar #endif 116*c83a76b0SSuyog Pawar } 117*c83a76b0SSuyog Pawar 118*c83a76b0SSuyog Pawar // clang-format off 119*c83a76b0SSuyog Pawar /*! 120*c83a76b0SSuyog Pawar ****************************************************************************** 121*c83a76b0SSuyog Pawar * \if Function name : ihevce_init_function_ptr_generic \endif 122*c83a76b0SSuyog Pawar * 123*c83a76b0SSuyog Pawar * \brief 124*c83a76b0SSuyog Pawar * Function pointer initialization of encoder context struct 125*c83a76b0SSuyog Pawar * 126*c83a76b0SSuyog Pawar ***************************************************************************** 127*c83a76b0SSuyog Pawar */ ihevce_init_function_ptr_generic(enc_ctxt_t * ps_enc_ctxt)128*c83a76b0SSuyog Pawarstatic void ihevce_init_function_ptr_generic(enc_ctxt_t *ps_enc_ctxt) 129*c83a76b0SSuyog Pawar { 130*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_chroma_horz_fptr = &ihevc_deblk_chroma_horz; 131*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_chroma_vert_fptr = &ihevc_deblk_chroma_vert; 132*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_422chroma_horz_fptr = &ihevc_deblk_422chroma_horz; 133*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_422chroma_vert_fptr = &ihevc_deblk_422chroma_vert; 134*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_luma_vert_fptr = &ihevc_deblk_luma_vert; 135*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_luma_horz_fptr = &ihevc_deblk_luma_horz; 136*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_copy_fptr = &ihevc_inter_pred_chroma_copy; 137*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_copy_w16out_fptr = &ihevc_inter_pred_chroma_copy_w16out; 138*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_horz_fptr = &ihevc_inter_pred_chroma_horz; 139*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_horz_w16out_fptr = &ihevc_inter_pred_chroma_horz_w16out; 140*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_fptr = &ihevc_inter_pred_chroma_vert; 141*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_fptr = &ihevc_inter_pred_chroma_vert_w16inp; 142*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_w16out_fptr = &ihevc_inter_pred_chroma_vert_w16inp_w16out; 143*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_w16out_fptr = &ihevc_inter_pred_chroma_vert_w16out; 144*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_horz_fptr = &ihevc_inter_pred_luma_horz; 145*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_fptr = &ihevc_inter_pred_luma_vert; 146*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_w16out_fptr = &ihevc_inter_pred_luma_vert_w16out; 147*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_fptr = &ihevc_inter_pred_luma_vert_w16inp; 148*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_copy_fptr = &ihevc_inter_pred_luma_copy; 149*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_copy_w16out_fptr = &ihevc_inter_pred_luma_copy_w16out; 150*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_horz_w16out_fptr = &ihevc_inter_pred_luma_horz_w16out; 151*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_w16out_fptr = &ihevc_inter_pred_luma_vert_w16inp_w16out; 152*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_ref_substitution_fptr = &ihevc_intra_pred_chroma_ref_substitution; 153*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_ref_substitution_fptr = &ihevc_intra_pred_luma_ref_substitution; 154*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_ref_filtering_fptr = &ihevc_intra_pred_ref_filtering; 155*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_dc_fptr = &ihevc_intra_pred_chroma_dc; 156*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_horz_fptr = &ihevc_intra_pred_chroma_horz; 157*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode2_fptr = &ihevc_intra_pred_chroma_mode2; 158*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_18_34_fptr = &ihevc_intra_pred_chroma_mode_18_34; 159*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_27_to_33_fptr = &ihevc_intra_pred_chroma_mode_27_to_33; 160*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_3_to_9_fptr = &ihevc_intra_pred_chroma_mode_3_to_9; 161*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_planar_fptr = &ihevc_intra_pred_chroma_planar; 162*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_ver_fptr = &ihevc_intra_pred_chroma_ver; 163*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_11_to_17_fptr = &ihevc_intra_pred_chroma_mode_11_to_17; 164*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_19_to_25_fptr = &ihevc_intra_pred_chroma_mode_19_to_25; 165*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_11_to_17_fptr = &ihevc_intra_pred_luma_mode_11_to_17; 166*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_19_to_25_fptr = &ihevc_intra_pred_luma_mode_19_to_25; 167*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_dc_fptr = &ihevc_intra_pred_luma_dc; 168*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_horz_fptr = &ihevc_intra_pred_luma_horz; 169*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode2_fptr = &ihevc_intra_pred_luma_mode2; 170*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_18_34_fptr = &ihevc_intra_pred_luma_mode_18_34; 171*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_27_to_33_fptr = &ihevc_intra_pred_luma_mode_27_to_33; 172*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_3_to_9_fptr = &ihevc_intra_pred_luma_mode_3_to_9; 173*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_planar_fptr = &ihevc_intra_pred_luma_planar; 174*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_ver_fptr = &ihevc_intra_pred_luma_ver; 175*c83a76b0SSuyog Pawar 176*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_4x4_ttype1_fptr = &ihevc_itrans_recon_4x4_ttype1; 177*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_4x4_fptr = &ihevc_itrans_recon_4x4; 178*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_8x8_fptr = &ihevc_itrans_recon_8x8; 179*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_16x16_fptr = &ihevc_itrans_recon_16x16; 180*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_32x32_fptr = &ihevc_itrans_recon_32x32; 181*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_chroma_itrans_recon_4x4_fptr = &ihevc_chroma_itrans_recon_4x4; 182*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_chroma_itrans_recon_8x8_fptr = &ihevc_chroma_itrans_recon_8x8; 183*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_chroma_itrans_recon_16x16_fptr = &ihevc_chroma_itrans_recon_16x16; 184*c83a76b0SSuyog Pawar 185*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memcpy_mul_8_fptr = &ihevc_memcpy_mul_8; 186*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memcpy_fptr = &ihevc_memcpy; 187*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_mul_8_fptr = &ihevc_memset_mul_8; 188*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_fptr = &ihevc_memset; 189*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_16bit_mul_8_fptr = &ihevc_memset_16bit_mul_8; 190*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_16bit_fptr = &ihevc_memset_16bit; 191*c83a76b0SSuyog Pawar 192*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_bi_fptr = &ihevc_weighted_pred_bi; 193*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_bi_default_fptr = &ihevc_weighted_pred_bi_default; 194*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_uni_fptr = &ihevc_weighted_pred_uni; 195*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_chroma_bi_fptr = &ihevc_weighted_pred_chroma_bi; 196*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_chroma_bi_default_fptr = &ihevc_weighted_pred_chroma_bi_default; 197*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_chroma_uni_fptr = &ihevc_weighted_pred_chroma_uni; 198*c83a76b0SSuyog Pawar 199*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_4x4_ttype1_fptr = &ihevc_resi_trans_4x4_ttype1; 200*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_4x4_fptr = &ihevc_resi_trans_4x4; 201*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_8x8_fptr = &ihevc_resi_trans_8x8; 202*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_16x16_fptr = &ihevc_resi_trans_16x16; 203*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_32x32_fptr = &ihevc_resi_trans_32x32; 204*c83a76b0SSuyog Pawar 205*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_quant_iquant_ssd_fptr = &ihevc_quant_iquant_ssd; 206*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_quant_iquant_ssd_rdoq_fptr = &ihevc_quant_iquant_ssd_rdoq; 207*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_quant_iquant_ssd_flat_scale_mat_fptr = &ihevc_quant_iquant_ssd_flat_scale_mat; 208*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_quant_iquant_ssd_flat_scale_mat_rdoq_fptr = &ihevc_quant_iquant_ssd_flat_scale_mat_rdoq; 209*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_q_iq_ssd_var_rnd_fact_fptr = &ihevc_q_iq_ssd_var_rnd_fact; 210*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_q_iq_ssd_flat_scale_mat_var_rnd_fact_fptr = &ihevc_q_iq_ssd_flat_scale_mat_var_rnd_fact; 211*c83a76b0SSuyog Pawar 212*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_quant_iquant_fptr = &ihevc_quant_iquant; 213*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_quant_iquant_rdoq_fptr = &ihevc_quant_iquant_rdoq; 214*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_quant_iquant_flat_scale_mat_fptr = &ihevc_quant_iquant_flat_scale_mat; 215*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_quant_iquant_flat_scale_mat_rdoq_fptr = &ihevc_quant_iquant_flat_scale_mat_rdoq; 216*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_q_iq_var_rnd_fact_fptr = &ihevc_q_iq_var_rnd_fact; 217*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_q_iq_flat_scale_mat_var_rnd_fact_fptr = &ihevc_q_iq_flat_scale_mat_var_rnd_fact; 218*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_pad_bottom_fptr = &ihevc_pad_bottom; 219*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_pad_horz_chroma_fptr = &ihevc_pad_horz_chroma; 220*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_pad_horz_luma_fptr = &ihevc_pad_horz_luma; 221*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_pad_left_chroma_fptr = &ihevc_pad_left_chroma; 222*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_pad_left_luma_fptr = &ihevc_pad_left_luma; 223*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_pad_right_chroma_fptr = &ihevc_pad_right_chroma; 224*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_pad_right_luma_fptr = &ihevc_pad_right_luma; 225*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_pad_top_fptr = &ihevc_pad_top; 226*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_pad_vert_fptr = &ihevc_pad_vert; 227*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class0_fptr = &ihevc_sao_edge_offset_class0; 228*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class1_fptr = &ihevc_sao_edge_offset_class1; 229*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class2_fptr = &ihevc_sao_edge_offset_class2; 230*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class3_fptr = &ihevc_sao_edge_offset_class3; 231*c83a76b0SSuyog Pawar 232*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class0_chroma_fptr = &ihevc_sao_edge_offset_class0_chroma; 233*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class1_chroma_fptr = &ihevc_sao_edge_offset_class1_chroma; 234*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class2_chroma_fptr = &ihevc_sao_edge_offset_class2_chroma; 235*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class3_chroma_fptr = &ihevc_sao_edge_offset_class3_chroma; 236*c83a76b0SSuyog Pawar } 237*c83a76b0SSuyog Pawar 238*c83a76b0SSuyog Pawar #ifdef ENABLE_NEON 239*c83a76b0SSuyog Pawar #ifdef ARMV8 240*c83a76b0SSuyog Pawar /*! 241*c83a76b0SSuyog Pawar ****************************************************************************** 242*c83a76b0SSuyog Pawar * \if Function name : ihevce_init_function_ptr_av8 \endif 243*c83a76b0SSuyog Pawar * 244*c83a76b0SSuyog Pawar * \brief 245*c83a76b0SSuyog Pawar * Function pointer initialization of encoder context struct 246*c83a76b0SSuyog Pawar * 247*c83a76b0SSuyog Pawar ***************************************************************************** 248*c83a76b0SSuyog Pawar */ ihevce_init_function_ptr_av8(enc_ctxt_t * ps_enc_ctxt)249*c83a76b0SSuyog Pawarstatic void ihevce_init_function_ptr_av8(enc_ctxt_t *ps_enc_ctxt) 250*c83a76b0SSuyog Pawar { 251*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_chroma_horz_fptr = &ihevc_deblk_chroma_horz_av8; 252*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_chroma_vert_fptr = &ihevc_deblk_chroma_vert_av8; 253*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_luma_vert_fptr = &ihevc_deblk_luma_vert_av8; 254*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_luma_horz_fptr = &ihevc_deblk_luma_horz_av8; 255*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_copy_fptr = &ihevc_inter_pred_chroma_copy_av8; 256*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_copy_w16out_fptr = &ihevc_inter_pred_chroma_copy_w16out_av8; 257*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_horz_fptr = &ihevc_inter_pred_chroma_horz; 258*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_horz_w16out_fptr = &ihevc_inter_pred_chroma_horz_w16out_av8; 259*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_fptr = &ihevc_inter_pred_chroma_vert; 260*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_fptr = &ihevc_inter_pred_chroma_vert_w16inp_av8; 261*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_w16out_fptr = &ihevc_inter_pred_chroma_vert_w16inp_w16out_av8; 262*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_w16out_fptr = &ihevc_inter_pred_chroma_vert_w16out_av8; 263*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_horz_fptr = &ihevc_inter_pred_luma_horz_av8; 264*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_fptr = &ihevc_inter_pred_luma_vert_av8; 265*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_w16out_fptr = &ihevc_inter_pred_luma_vert_w16out_av8; 266*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_fptr = &ihevc_inter_pred_luma_vert_w16inp_av8; 267*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_copy_fptr = &ihevc_inter_pred_luma_copy_av8; 268*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_copy_w16out_fptr = &ihevc_inter_pred_luma_copy_w16out_av8; 269*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_horz_w16out_fptr = &ihevc_inter_pred_luma_horz_w16out_av8; 270*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_w16out_fptr = &ihevc_inter_pred_luma_vert_w16inp_w16out_av8; 271*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_ref_substitution_fptr = &ihevc_intra_pred_chroma_ref_substitution; 272*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_ref_substitution_fptr = &ihevc_intra_pred_luma_ref_substitution; 273*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_ref_filtering_fptr = &ihevc_intra_pred_ref_filtering_neonintr; 274*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_dc_fptr = &ihevc_intra_pred_chroma_dc_av8; 275*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_horz_fptr = &ihevc_intra_pred_chroma_horz_av8; 276*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode2_fptr = &ihevc_intra_pred_chroma_mode2_av8; 277*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_18_34_fptr = &ihevc_intra_pred_chroma_mode_18_34_av8; 278*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_27_to_33_fptr = &ihevc_intra_pred_chroma_mode_27_to_33_av8; 279*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_3_to_9_fptr = &ihevc_intra_pred_chroma_mode_3_to_9_av8; 280*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_planar_fptr = &ihevc_intra_pred_chroma_planar_av8; 281*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_ver_fptr = &ihevc_intra_pred_chroma_ver_av8; 282*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_11_to_17_fptr = &ihevc_intra_pred_chroma_mode_11_to_17_av8; 283*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_19_to_25_fptr = &ihevc_intra_pred_chroma_mode_19_to_25_av8; 284*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_11_to_17_fptr = &ihevc_intra_pred_luma_mode_11_to_17_av8; 285*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_19_to_25_fptr = &ihevc_intra_pred_luma_mode_19_to_25_av8; 286*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_dc_fptr = &ihevc_intra_pred_luma_dc_av8; 287*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_horz_fptr = &ihevc_intra_pred_luma_horz_av8; 288*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode2_fptr = &ihevc_intra_pred_luma_mode2_av8; 289*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_18_34_fptr = &ihevc_intra_pred_luma_mode_18_34_av8; 290*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_27_to_33_fptr = &ihevc_intra_pred_luma_mode_27_to_33_av8; 291*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_3_to_9_fptr = &ihevc_intra_pred_luma_mode_3_to_9_av8; 292*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_planar_fptr = &ihevc_intra_pred_luma_planar_av8; 293*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_ver_fptr = &ihevc_intra_pred_luma_ver_av8; 294*c83a76b0SSuyog Pawar 295*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_4x4_ttype1_fptr = &ihevc_itrans_recon_4x4_ttype1_av8; 296*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_4x4_fptr = &ihevc_itrans_recon_4x4_av8; 297*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_8x8_fptr = &ihevc_itrans_recon_8x8_av8; 298*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_16x16_fptr = &ihevc_itrans_recon_16x16_av8; 299*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_32x32_fptr = &ihevc_itrans_recon_32x32; 300*c83a76b0SSuyog Pawar 301*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memcpy_mul_8_fptr = &ihevc_memcpy_mul_8_av8; 302*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memcpy_fptr = &ihevc_memcpy_av8; 303*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_mul_8_fptr = &ihevc_memset_mul_8_av8; 304*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_fptr = &ihevc_memset_av8; 305*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_16bit_mul_8_fptr = &ihevc_memset_16bit_mul_8_av8; 306*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_16bit_fptr = &ihevc_memset_16bit_av8; 307*c83a76b0SSuyog Pawar 308*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_bi_fptr = &ihevc_weighted_pred_bi_av8; 309*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_bi_default_fptr = &ihevc_weighted_pred_bi_default_av8; 310*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_uni_fptr = &ihevc_weighted_pred_uni_av8; 311*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_chroma_bi_fptr = &ihevc_weighted_pred_chroma_bi_neonintr; 312*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_chroma_bi_default_fptr = &ihevc_weighted_pred_chroma_bi_default_neonintr; 313*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_chroma_uni_fptr = &ihevc_weighted_pred_chroma_uni_neonintr; 314*c83a76b0SSuyog Pawar 315*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_4x4_ttype1_fptr = &ihevc_resi_trans_4x4_ttype1_neon; 316*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_4x4_fptr = &ihevc_resi_trans_4x4_neon; 317*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_8x8_fptr = &ihevc_resi_trans_8x8_neon; 318*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_16x16_fptr = &ihevc_resi_trans_16x16_neon; 319*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_32x32_fptr = &ihevc_resi_trans_32x32_neon; 320*c83a76b0SSuyog Pawar 321*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_quant_iquant_ssd_flat_scale_mat_fptr = &ihevc_quant_iquant_ssd_flat_scale_mat_neon; 322*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_q_iq_ssd_flat_scale_mat_var_rnd_fact_fptr = &ihevc_q_iq_ssd_flat_scale_mat_var_rnd_fact_neon; 323*c83a76b0SSuyog Pawar 324*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class0_fptr = &ihevc_sao_edge_offset_class0_av8; 325*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class1_fptr = &ihevc_sao_edge_offset_class1_av8; 326*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class2_fptr = &ihevc_sao_edge_offset_class2_av8; 327*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class3_fptr = &ihevc_sao_edge_offset_class3_av8; 328*c83a76b0SSuyog Pawar 329*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class0_chroma_fptr = &ihevc_sao_edge_offset_class0_chroma_av8; 330*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class1_chroma_fptr = &ihevc_sao_edge_offset_class1_chroma_av8; 331*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class2_chroma_fptr = &ihevc_sao_edge_offset_class2_chroma_av8; 332*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class3_chroma_fptr = &ihevc_sao_edge_offset_class3_chroma_av8; 333*c83a76b0SSuyog Pawar } 334*c83a76b0SSuyog Pawar 335*c83a76b0SSuyog Pawar #else 336*c83a76b0SSuyog Pawar 337*c83a76b0SSuyog Pawar /*! 338*c83a76b0SSuyog Pawar ****************************************************************************** 339*c83a76b0SSuyog Pawar * \if Function name : ihevce_init_function_ptr_a9q \endif 340*c83a76b0SSuyog Pawar * 341*c83a76b0SSuyog Pawar * \brief 342*c83a76b0SSuyog Pawar * Function pointer initialization of encoder context struct 343*c83a76b0SSuyog Pawar * 344*c83a76b0SSuyog Pawar ***************************************************************************** 345*c83a76b0SSuyog Pawar */ ihevce_init_function_ptr_a9q(enc_ctxt_t * ps_enc_ctxt)346*c83a76b0SSuyog Pawarstatic void ihevce_init_function_ptr_a9q(enc_ctxt_t *ps_enc_ctxt) 347*c83a76b0SSuyog Pawar { 348*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_chroma_horz_fptr = &ihevc_deblk_chroma_horz_a9q; 349*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_chroma_vert_fptr = &ihevc_deblk_chroma_vert_a9q; 350*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_luma_vert_fptr = &ihevc_deblk_luma_vert_a9q; 351*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_deblk_luma_horz_fptr = &ihevc_deblk_luma_horz_a9q; 352*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_copy_fptr = &ihevc_inter_pred_chroma_copy_a9q; 353*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_copy_w16out_fptr = &ihevc_inter_pred_chroma_copy_w16out_a9q; 354*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_horz_fptr = &ihevc_inter_pred_chroma_horz; 355*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_horz_w16out_fptr = &ihevc_inter_pred_chroma_horz_w16out_a9q; 356*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_fptr = &ihevc_inter_pred_chroma_vert_a9q; 357*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_fptr = &ihevc_inter_pred_chroma_vert_w16inp_a9q; 358*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_w16out_fptr = &ihevc_inter_pred_chroma_vert_w16inp_w16out_a9q; 359*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_chroma_vert_w16out_fptr = &ihevc_inter_pred_chroma_vert_w16out_a9q; 360*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_horz_fptr = &ihevc_inter_pred_luma_horz_a9q; 361*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_fptr = &ihevc_inter_pred_luma_vert_a9q; 362*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_w16out_fptr = &ihevc_inter_pred_luma_vert_w16out_a9q; 363*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_fptr = &ihevc_inter_pred_luma_vert_w16inp_a9q; 364*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_copy_fptr = &ihevc_inter_pred_luma_copy_a9q; 365*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_copy_w16out_fptr = &ihevc_inter_pred_luma_copy_w16out_a9q; 366*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_horz_w16out_fptr = &ihevc_inter_pred_luma_horz_w16out_a9q; 367*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_w16out_fptr = &ihevc_inter_pred_luma_vert_w16inp_w16out_a9q; 368*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_ref_substitution_fptr = &ihevc_intra_pred_chroma_ref_substitution; 369*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_ref_substitution_fptr = &ihevc_intra_pred_luma_ref_substitution_a9q; 370*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_ref_filtering_fptr = &ihevc_intra_pred_ref_filtering; 371*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_dc_fptr = &ihevc_intra_pred_chroma_dc_a9q; 372*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_horz_fptr = &ihevc_intra_pred_chroma_horz_a9q; 373*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode2_fptr = &ihevc_intra_pred_chroma_mode2_a9q; 374*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_18_34_fptr = &ihevc_intra_pred_chroma_mode_18_34_a9q; 375*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_27_to_33_fptr = &ihevc_intra_pred_chroma_mode_27_to_33_a9q; 376*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_3_to_9_fptr = &ihevc_intra_pred_chroma_mode_3_to_9_a9q; 377*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_planar_fptr = &ihevc_intra_pred_chroma_planar_a9q; 378*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_ver_fptr = &ihevc_intra_pred_chroma_ver_a9q; 379*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_11_to_17_fptr = &ihevc_intra_pred_chroma_mode_11_to_17_a9q; 380*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_chroma_mode_19_to_25_fptr = &ihevc_intra_pred_chroma_mode_19_to_25_a9q; 381*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_11_to_17_fptr = &ihevc_intra_pred_luma_mode_11_to_17_a9q; 382*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_19_to_25_fptr = &ihevc_intra_pred_luma_mode_19_to_25_a9q; 383*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_dc_fptr = &ihevc_intra_pred_luma_dc_a9q; 384*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_horz_fptr = &ihevc_intra_pred_luma_horz_a9q; 385*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode2_fptr = &ihevc_intra_pred_luma_mode2_a9q; 386*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_18_34_fptr = &ihevc_intra_pred_luma_mode_18_34_a9q; 387*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_27_to_33_fptr = &ihevc_intra_pred_luma_mode_27_to_33_a9q; 388*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_mode_3_to_9_fptr = &ihevc_intra_pred_luma_mode_3_to_9_a9q; 389*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_planar_fptr = &ihevc_intra_pred_luma_planar_a9q; 390*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_intra_pred_luma_ver_fptr = &ihevc_intra_pred_luma_ver_a9q; 391*c83a76b0SSuyog Pawar 392*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_4x4_ttype1_fptr = &ihevc_itrans_recon_4x4_ttype1_a9q; 393*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_4x4_fptr = &ihevc_itrans_recon_4x4_a9q; 394*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_8x8_fptr = &ihevc_itrans_recon_8x8_a9q; 395*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_16x16_fptr = &ihevc_itrans_recon_16x16_a9q; 396*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_itrans_recon_32x32_fptr = &ihevc_itrans_recon_32x32; 397*c83a76b0SSuyog Pawar 398*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memcpy_mul_8_fptr = &ihevc_memcpy_mul_8_a9q; 399*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memcpy_fptr = &ihevc_memcpy_a9q; 400*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_mul_8_fptr = &ihevc_memset_mul_8_a9q; 401*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_fptr = &ihevc_memset_a9q; 402*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_16bit_mul_8_fptr = &ihevc_memset_16bit_mul_8_a9q; 403*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_memset_16bit_fptr = &ihevc_memset_16bit_a9q; 404*c83a76b0SSuyog Pawar 405*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_bi_fptr = &ihevc_weighted_pred_bi_a9q; 406*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_bi_default_fptr = &ihevc_weighted_pred_bi_default_a9q; 407*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_uni_fptr = &ihevc_weighted_pred_uni_a9q; 408*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_chroma_bi_fptr = &ihevc_weighted_pred_chroma_bi; 409*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_chroma_bi_default_fptr = &ihevc_weighted_pred_chroma_bi_default; 410*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_weighted_pred_chroma_uni_fptr = &ihevc_weighted_pred_chroma_uni; 411*c83a76b0SSuyog Pawar 412*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_4x4_ttype1_fptr = &ihevc_resi_trans_4x4_ttype1_a9q; 413*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_4x4_fptr = &ihevc_resi_trans_4x4_a9q; 414*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_8x8_fptr = &ihevc_resi_trans_8x8_a9q; 415*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_16x16_fptr = &ihevc_resi_trans_16x16_a9q; 416*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_resi_trans_32x32_fptr = &ihevc_resi_trans_32x32_a9q; 417*c83a76b0SSuyog Pawar 418*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_quant_iquant_ssd_flat_scale_mat_fptr = &ihevc_quant_iquant_ssd_flat_scale_mat_neon; 419*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_q_iq_ssd_flat_scale_mat_var_rnd_fact_fptr = &ihevc_q_iq_ssd_flat_scale_mat_var_rnd_fact_neon; 420*c83a76b0SSuyog Pawar 421*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class0_fptr = &ihevc_sao_edge_offset_class0_a9q; 422*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class1_fptr = &ihevc_sao_edge_offset_class1_a9q; 423*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class2_fptr = &ihevc_sao_edge_offset_class2_a9q; 424*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class3_fptr = &ihevc_sao_edge_offset_class3_a9q; 425*c83a76b0SSuyog Pawar 426*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class0_chroma_fptr = &ihevc_sao_edge_offset_class0_chroma_a9q; 427*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class1_chroma_fptr = &ihevc_sao_edge_offset_class1_chroma_a9q; 428*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class2_chroma_fptr = &ihevc_sao_edge_offset_class2_chroma_a9q; 429*c83a76b0SSuyog Pawar ps_enc_ctxt->s_func_selector.ihevc_sao_edge_offset_class3_chroma_fptr = &ihevc_sao_edge_offset_class3_chroma_a9q; 430*c83a76b0SSuyog Pawar } 431*c83a76b0SSuyog Pawar #endif 432*c83a76b0SSuyog Pawar #endif 433*c83a76b0SSuyog Pawar // clang-format on 434*c83a76b0SSuyog Pawar 435*c83a76b0SSuyog Pawar /*! 436*c83a76b0SSuyog Pawar ****************************************************************************** 437*c83a76b0SSuyog Pawar * \if Function name : ihevce_init_function_ptr \endif 438*c83a76b0SSuyog Pawar * 439*c83a76b0SSuyog Pawar * \brief 440*c83a76b0SSuyog Pawar * Function pointer initialization of encoder context struct 441*c83a76b0SSuyog Pawar * 442*c83a76b0SSuyog Pawar ***************************************************************************** 443*c83a76b0SSuyog Pawar */ ihevce_init_function_ptr(void * pv_enc_ctxt,IV_ARCH_T e_processor_arch)444*c83a76b0SSuyog Pawarvoid ihevce_init_function_ptr(void *pv_enc_ctxt, IV_ARCH_T e_processor_arch) 445*c83a76b0SSuyog Pawar { 446*c83a76b0SSuyog Pawar (void)e_processor_arch; 447*c83a76b0SSuyog Pawar ihevce_init_function_ptr_generic(pv_enc_ctxt); 448*c83a76b0SSuyog Pawar #ifdef ENABLE_NEON 449*c83a76b0SSuyog Pawar switch(e_processor_arch) 450*c83a76b0SSuyog Pawar { 451*c83a76b0SSuyog Pawar #ifdef ARMV8 452*c83a76b0SSuyog Pawar case ARCH_ARM_V8_NEON: 453*c83a76b0SSuyog Pawar ihevce_init_function_ptr_av8(pv_enc_ctxt); 454*c83a76b0SSuyog Pawar break; 455*c83a76b0SSuyog Pawar #else 456*c83a76b0SSuyog Pawar case ARCH_ARM_A9Q: 457*c83a76b0SSuyog Pawar ihevce_init_function_ptr_a9q(pv_enc_ctxt); 458*c83a76b0SSuyog Pawar break; 459*c83a76b0SSuyog Pawar #endif 460*c83a76b0SSuyog Pawar default: 461*c83a76b0SSuyog Pawar break; 462*c83a76b0SSuyog Pawar } 463*c83a76b0SSuyog Pawar #endif 464*c83a76b0SSuyog Pawar } 465