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 ihevce_enc_loop_pass.h 23*c83a76b0SSuyog Pawar * 24*c83a76b0SSuyog Pawar * \brief 25*c83a76b0SSuyog Pawar * This file contains interface defination of Encode loop pass function 26*c83a76b0SSuyog Pawar * 27*c83a76b0SSuyog Pawar * \date 28*c83a76b0SSuyog Pawar * 18/09/2012 29*c83a76b0SSuyog Pawar * 30*c83a76b0SSuyog Pawar * \author 31*c83a76b0SSuyog Pawar * Ittiam 32*c83a76b0SSuyog Pawar * 33*c83a76b0SSuyog Pawar ****************************************************************************** 34*c83a76b0SSuyog Pawar */ 35*c83a76b0SSuyog Pawar 36*c83a76b0SSuyog Pawar #ifndef _IHEVCE_ENC_LOOP_PASS_H_ 37*c83a76b0SSuyog Pawar #define _IHEVCE_ENC_LOOP_PASS_H_ 38*c83a76b0SSuyog Pawar 39*c83a76b0SSuyog Pawar /*****************************************************************************/ 40*c83a76b0SSuyog Pawar /* Constant Macros */ 41*c83a76b0SSuyog Pawar /*****************************************************************************/ 42*c83a76b0SSuyog Pawar 43*c83a76b0SSuyog Pawar /*****************************************************************************/ 44*c83a76b0SSuyog Pawar /* Function Macros */ 45*c83a76b0SSuyog Pawar /*****************************************************************************/ 46*c83a76b0SSuyog Pawar 47*c83a76b0SSuyog Pawar /*****************************************************************************/ 48*c83a76b0SSuyog Pawar /* Typedefs */ 49*c83a76b0SSuyog Pawar /*****************************************************************************/ 50*c83a76b0SSuyog Pawar 51*c83a76b0SSuyog Pawar /*****************************************************************************/ 52*c83a76b0SSuyog Pawar /* Enums */ 53*c83a76b0SSuyog Pawar /*****************************************************************************/ 54*c83a76b0SSuyog Pawar 55*c83a76b0SSuyog Pawar /*****************************************************************************/ 56*c83a76b0SSuyog Pawar /* Structure */ 57*c83a76b0SSuyog Pawar /*****************************************************************************/ 58*c83a76b0SSuyog Pawar 59*c83a76b0SSuyog Pawar /*****************************************************************************/ 60*c83a76b0SSuyog Pawar /* Extern Variable Declarations */ 61*c83a76b0SSuyog Pawar /*****************************************************************************/ 62*c83a76b0SSuyog Pawar 63*c83a76b0SSuyog Pawar /*****************************************************************************/ 64*c83a76b0SSuyog Pawar /* Extern Function Declarations */ 65*c83a76b0SSuyog Pawar /*****************************************************************************/ 66*c83a76b0SSuyog Pawar WORD32 ihevce_enc_loop_get_num_mem_recs(WORD32 i4_num_bitrate_inst, WORD32 i4_num_enc_frm_parallel); 67*c83a76b0SSuyog Pawar 68*c83a76b0SSuyog Pawar WORD32 ihevce_enc_loop_get_mem_recs( 69*c83a76b0SSuyog Pawar iv_mem_rec_t *ps_mem_tab, 70*c83a76b0SSuyog Pawar ihevce_static_cfg_params_t *ps_init_prms, 71*c83a76b0SSuyog Pawar WORD32 i4_num_proc_thrds, 72*c83a76b0SSuyog Pawar WORD32 i4_num_bitrate_inst, 73*c83a76b0SSuyog Pawar WORD32 i4_num_enc_frm_parallel, 74*c83a76b0SSuyog Pawar WORD32 i4_mem_space, 75*c83a76b0SSuyog Pawar WORD32 i4_resolution_id); 76*c83a76b0SSuyog Pawar 77*c83a76b0SSuyog Pawar void *ihevce_enc_loop_init( 78*c83a76b0SSuyog Pawar iv_mem_rec_t *ps_mem_tab, 79*c83a76b0SSuyog Pawar ihevce_static_cfg_params_t *ps_init_prms, 80*c83a76b0SSuyog Pawar WORD32 i4_num_proc_thrds, 81*c83a76b0SSuyog Pawar void *pv_osal_handle, 82*c83a76b0SSuyog Pawar func_selector_t *ps_func_selector, 83*c83a76b0SSuyog Pawar rc_quant_t *ps_rc_quant_ctxt, 84*c83a76b0SSuyog Pawar ihevce_tile_params_t *ps_tile_params_base, 85*c83a76b0SSuyog Pawar WORD32 i4_resolution_id, 86*c83a76b0SSuyog Pawar WORD32 i4_num_enc_loop_frm_pllel, 87*c83a76b0SSuyog Pawar UWORD8 u1_is_popcnt_available); 88*c83a76b0SSuyog Pawar 89*c83a76b0SSuyog Pawar void ihevce_enc_loop_reg_sem_hdls( 90*c83a76b0SSuyog Pawar void *pv_enc_loop_ctxt, void **ppv_sem_hdls, WORD32 i4_num_proc_thrds); 91*c83a76b0SSuyog Pawar 92*c83a76b0SSuyog Pawar void ihevce_enc_loop_dep_mngr_frame_reset(void *pv_enc_loop_ctxt, WORD32 enc_frm_id); 93*c83a76b0SSuyog Pawar 94*c83a76b0SSuyog Pawar void ihevce_enc_loop_delete(void *pv_enc_loop_ctxt); 95*c83a76b0SSuyog Pawar 96*c83a76b0SSuyog Pawar void ihevce_enc_loop_frame_init( 97*c83a76b0SSuyog Pawar void *pv_enc_loop_ctxt, 98*c83a76b0SSuyog Pawar WORD32 i4_frm_qp, 99*c83a76b0SSuyog Pawar recon_pic_buf_t *(*aps_ref_list)[HEVCE_MAX_REF_PICS * 2], 100*c83a76b0SSuyog Pawar recon_pic_buf_t *ps_frm_recon, 101*c83a76b0SSuyog Pawar slice_header_t *ps_slice_hdr, 102*c83a76b0SSuyog Pawar pps_t *ps_pps, 103*c83a76b0SSuyog Pawar sps_t *ps_sps, 104*c83a76b0SSuyog Pawar vps_t *ps_vps, 105*c83a76b0SSuyog Pawar WORD8 i1_weighted_pred_flag, 106*c83a76b0SSuyog Pawar WORD8 i1_weighted_bipred_flag, 107*c83a76b0SSuyog Pawar WORD32 log2_luma_wght_denom, 108*c83a76b0SSuyog Pawar WORD32 log2_chroma_wght_denom, 109*c83a76b0SSuyog Pawar WORD32 cur_poc, 110*c83a76b0SSuyog Pawar WORD32 i4_display_num, 111*c83a76b0SSuyog Pawar enc_ctxt_t *ps_enc_ctxt, 112*c83a76b0SSuyog Pawar me_enc_rdopt_ctxt_t *ps_cur_pic_ctxt, 113*c83a76b0SSuyog Pawar WORD32 i4_bitrate_instance_num, 114*c83a76b0SSuyog Pawar WORD32 i4_thrd_id, 115*c83a76b0SSuyog Pawar WORD32 i4_enc_frm_id, 116*c83a76b0SSuyog Pawar WORD32 i4_num_bitrates, 117*c83a76b0SSuyog Pawar WORD32 i4_quality_preset, 118*c83a76b0SSuyog Pawar void *pv_dep_mngr_encloop_dep_me); 119*c83a76b0SSuyog Pawar 120*c83a76b0SSuyog Pawar void ihevce_enc_loop_process( 121*c83a76b0SSuyog Pawar void *pv_ctxt, 122*c83a76b0SSuyog Pawar ihevce_lap_enc_buf_t *ps_curr_inp, 123*c83a76b0SSuyog Pawar ctb_analyse_t *ps_ctb_in, 124*c83a76b0SSuyog Pawar ipe_l0_ctb_analyse_for_me_t *ps_ipe_analyse, 125*c83a76b0SSuyog Pawar recon_pic_buf_t *ps_frm_recon, 126*c83a76b0SSuyog Pawar cur_ctb_cu_tree_t *ps_cu_tree_out, 127*c83a76b0SSuyog Pawar ctb_enc_loop_out_t *ps_ctb_out, 128*c83a76b0SSuyog Pawar cu_enc_loop_out_t *ps_cu_out, 129*c83a76b0SSuyog Pawar tu_enc_loop_out_t *ps_tu_out, 130*c83a76b0SSuyog Pawar pu_t *ps_pu_out, 131*c83a76b0SSuyog Pawar UWORD8 *pu1_frm_ecd_data, 132*c83a76b0SSuyog Pawar frm_ctb_ctxt_t *ps_frm_ctb_prms, 133*c83a76b0SSuyog Pawar frm_lambda_ctxt_t *ps_frm_lamda, 134*c83a76b0SSuyog Pawar multi_thrd_ctxt_t *ps_multi_thrd_ctxt, 135*c83a76b0SSuyog Pawar WORD32 thrd_id, 136*c83a76b0SSuyog Pawar WORD32 i4_enc_frm_id, 137*c83a76b0SSuyog Pawar WORD32 i4_pass); 138*c83a76b0SSuyog Pawar 139*c83a76b0SSuyog Pawar LWORD64 ihevce_cu_mode_decide( 140*c83a76b0SSuyog Pawar ihevce_enc_loop_ctxt_t *ps_ctxt, 141*c83a76b0SSuyog Pawar enc_loop_cu_prms_t *ps_cu_prms, 142*c83a76b0SSuyog Pawar cu_analyse_t *ps_cu_analyse, 143*c83a76b0SSuyog Pawar final_mode_state_t *ps_final_mode_state, 144*c83a76b0SSuyog Pawar UWORD8 *pu1_ecd_data, 145*c83a76b0SSuyog Pawar pu_col_mv_t *ps_col_pu, 146*c83a76b0SSuyog Pawar UWORD8 *pu1_col_pu_map, 147*c83a76b0SSuyog Pawar WORD32 col_start_pu_idx); 148*c83a76b0SSuyog Pawar 149*c83a76b0SSuyog Pawar #endif /* _IHEVCE_ENC_LOOP_PASS_H_ */ 150