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_enc_cu_recursion.h 23 * 24 * \brief 25 * This file contains interface declarations of encoder normative loop pass 26 * related functions 27 * 28 * \date 29 * 18/09/2012 30 * 31 * \author 32 * Ittiam 33 * 34 ****************************************************************************** 35 */ 36 37 #ifndef _IHEVCE_ENC_CU_RECURION_H_ 38 #define _IHEVCE_ENC_CU_RECURION_H_ 39 40 /*****************************************************************************/ 41 /* Constant Macros */ 42 /*****************************************************************************/ 43 #define ENABLE_TREE_DUMP 0 44 45 /*****************************************************************************/ 46 /* Extern Function Declarations */ 47 /*****************************************************************************/ 48 void ihevce_store_cu_final( 49 ihevce_enc_loop_ctxt_t *ps_ctxt, 50 cu_enc_loop_out_t *ps_cu_final, 51 UWORD8 *pu1_ecd_data, 52 ihevce_enc_cu_node_ctxt_t *ps_enc_out_ctxt, 53 enc_loop_cu_prms_t *ps_cu_prms); 54 55 void ihevce_populate_cu_tree( 56 ipe_l0_ctb_analyse_for_me_t *ps_cur_ipe_ctb, 57 cur_ctb_cu_tree_t *ps_cu_tree, 58 WORD32 tree_depth, 59 IHEVCE_QUALITY_CONFIG_T e_quality_preset, 60 CU_POS_T e_grandparent_blk_pos, 61 CU_POS_T e_parent_blk_pos, 62 CU_POS_T e_cur_blk_pos); 63 64 void ihevce_update_final_cu_results( 65 ihevce_enc_loop_ctxt_t *ps_ctxt, 66 ihevce_enc_cu_node_ctxt_t *ps_enc_out_ctxt, 67 enc_loop_cu_prms_t *ps_cu_prms, 68 pu_col_mv_t **pps_row_col_pu, 69 WORD32 *pi4_col_pu_map_idx, 70 cu_final_update_prms *ps_cu_update_prms, 71 WORD32 ctb_ctr, 72 WORD32 vert_ctb_ctr); 73 74 WORD32 ihevce_cu_recurse_decide( 75 ihevce_enc_loop_ctxt_t *ps_ctxt, 76 enc_loop_cu_prms_t *ps_cu_prms, 77 cur_ctb_cu_tree_t *ps_cu_tree_analyse, 78 cur_ctb_cu_tree_t *ps_cu_tree_analyse_parent, 79 ipe_l0_ctb_analyse_for_me_t *ps_cur_ipe_ctb, 80 me_ctb_data_t *ps_cu_me_data, 81 pu_col_mv_t **pps_col_pu, 82 cu_final_update_prms *ps_cu_update_prms, 83 UWORD8 *pu1_col_pu_map, 84 WORD32 *pi4_col_start_pu_idx, 85 WORD32 i4_tree_depth, 86 WORD32 i4_ctb_x_off, 87 WORD32 i4_ctb_y_off, 88 WORD32 cur_ctb_ht); 89 90 void ihevce_store_cu_results( 91 ihevce_enc_loop_ctxt_t *ps_ctxt, 92 enc_loop_cu_prms_t *ps_cu_prms, 93 final_mode_state_t *ps_final_state); 94 95 void ihevce_enc_loop_cu_bot_copy( 96 ihevce_enc_loop_ctxt_t *ps_ctxt, 97 enc_loop_cu_prms_t *ps_cu_prms, 98 ihevce_enc_cu_node_ctxt_t *ps_enc_out_ctxt, 99 WORD32 curr_cu_pos_in_row, 100 WORD32 curr_cu_pos_in_ctb); 101 102 void ihevce_intra_and_inter_cuTree_merger( 103 cur_ctb_cu_tree_t *ps_merged_tree, 104 cur_ctb_cu_tree_t *ps_intra_tree, 105 cur_ctb_cu_tree_t *ps_inter_tree, 106 WORD8 *pi1_8x8CULevel_intraData_availability_indicator); 107 108 #endif /* _IHEVCE_ENC_CU_RECURION_H_ */ 109