diff options
author | Ram Mohan <ram.mohan@ittiam.com> | 2018-10-05 18:05:06 +0530 |
---|---|---|
committer | Ray Essick <essick@google.com> | 2019-02-18 07:43:11 -0800 |
commit | 69da5e22f66880b785b8d9d9b2b0ca706ac24d91 (patch) | |
tree | f74d679fa97b370f412b864781c3bc03bde0e256 /encoder/ihevce_ipe_pass.h | |
parent | e9568e04fc0749e3b3ad8bdcce61163f0f08d894 (diff) | |
download | libhevc-69da5e22f66880b785b8d9d9b2b0ca706ac24d91.tar.gz |
libhevcenc: Initial commit
Test: hevcenc -c vid_enc_cfg.txt
Bug: 110456253
Test: CtsMediaTests/VideoEncoder
Change-Id: I9df8143709c3fe5d2c8398974a16529a3f8b8ebc
Diffstat (limited to 'encoder/ihevce_ipe_pass.h')
-rw-r--r-- | encoder/ihevce_ipe_pass.h | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/encoder/ihevce_ipe_pass.h b/encoder/ihevce_ipe_pass.h new file mode 100644 index 0000000..c9624e5 --- /dev/null +++ b/encoder/ihevce_ipe_pass.h @@ -0,0 +1,171 @@ +/****************************************************************************** + * + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ***************************************************************************** + * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore +*/ +/*! +****************************************************************************** +* \file ihevce_ipe_pass.h +* +* \brief +* This file contains interface defination of Encode loop pass function +* +* \date +* 18/09/2012 +* +* \author +* Ittiam +* +****************************************************************************** +*/ + +#ifndef _IHEVCE_IPE_PASS_H_ +#define _IHEVCE_IPE_PASS_H_ + +/*****************************************************************************/ +/* Constant Macros */ +/*****************************************************************************/ +#define IPE_TEST_DBG_L0 0 +#define IPE_TEST_DBG_L1 0 +#define IPE_TEST_DBG_L2 0 +#define IPE_TEST_DBG_L3 0 +#define IPE_TEST_DBG_L4 0 + +#define IPE_ME_DBG_L0 0 +#define IPE_ME_DBG_L1 0 + +#define INTRA_PART_DBG 0 // Dump Debug Information related to intra partitioning + +#define INTRA_NON_CTB_PIC_DBG 0 + +#define IPE_MODE_MAP_DBG 0 + +#define FAST_INTRA_8421_MODES_ENABLE 1 + +#define FAST_PART_WITH_OPTION_4 1 + +#define IPE_SAD_TYPE 0 /* 0 => Hadamard SAD, 1 => full SAD */ +#define IPE_STEP_SIZE 1 /* Intra Prediction Mode Step Size During Analysis */ +#define LAMBDA_DIV_FACTOR 1 + +/*satd/q_scale is accumualted cu level*/ +#define SATD_BY_ACT_Q_FAC 10 + +/** defines the ratio of bits generated per cabac bin in Q8 format */ +#define CABAC_BITS_PER_BIN 192 + +/** define modulation factor for qp modulation */ +#define INTRA_QP_MOD_FACTOR_NUM 16 +#define INTER_QP_MOD_FACTOR_NUM 4 +#define QP_MOD_FACTOR_DEN 2 + +/*****************************************************************************/ +/* Function Macros */ +/*****************************************************************************/ + +/*****************************************************************************/ +/* Typedefs */ +/*****************************************************************************/ + +/*****************************************************************************/ +/* Enums */ +/*****************************************************************************/ +typedef enum +{ + CU_1TU = 0, + CU_4TU, + SUB_CU_1TU, + SUB_CU_4TU +} IPE_CU_TU_SPLIT_PATTERN; + +/*****************************************************************************/ +/* Structure */ +/*****************************************************************************/ + +/*****************************************************************************/ +/* Extern Variable Declarations */ +/*****************************************************************************/ + +/*****************************************************************************/ +/* Extern Function Declarations */ +/*****************************************************************************/ +WORD32 ihevce_ipe_get_num_mem_recs(void); + +WORD32 + ihevce_ipe_get_mem_recs(iv_mem_rec_t *ps_mem_tab, WORD32 i4_num_proc_thrds, WORD32 i4_mem_space); + +void *ihevce_ipe_init( + iv_mem_rec_t *ps_mem_tab, + ihevce_static_cfg_params_t *ps_init_prms, + WORD32 i4_num_proc_thrds, + WORD32 i4_ref_id, + func_selector_t *ps_func_selector, + rc_quant_t *ps_rc_quant_ctxt, + WORD32 i4_resolution_id, + UWORD8 u1_is_popcnt_available); + +void ihevce_intra_pred_ref_filtering(UWORD8 *pu1_src, WORD32 nt, UWORD8 *pu1_dst); +void ihevce_intra_pred_ref_filtering(UWORD8 *pu1_src, WORD32 nt, UWORD8 *pu1_dst); + +UWORD32 ihevce_ipe_pass_satd(WORD16 *pi2_coeff, WORD32 coeff_stride, WORD32 trans_size); + +void ihevce_ipe_process( + void *pv_ctxt, + frm_ctb_ctxt_t *ps_frm_ctb_prms, + frm_lambda_ctxt_t *ps_frm_lamda, + ihevce_lap_enc_buf_t *ps_curr_inp, + pre_enc_L0_ipe_encloop_ctxt_t *ps_L0_IPE_curr_out_pre_enc, + ctb_analyse_t *ps_ctb_out, + //cu_analyse_t *ps_cu_out, + ipe_l0_ctb_analyse_for_me_t *ps_ipe_ctb_out, + void *pv_multi_thrd_ctxt, + WORD32 slice_type, + ihevce_ed_blk_t *ps_ed_pic_l1, + ihevce_ed_blk_t *ps_ed_pic_l2, + ihevce_ed_ctb_l1_t *ps_ed_ctb_l1_pic, + WORD32 thrd_id, + WORD32 i4_ping_pong); + +void ihevce_populate_ipe_ol_cu_lambda_prms( + void *pv_ctxt, + frm_lambda_ctxt_t *ps_frm_lamda, + WORD32 i4_slice_type, + WORD32 i4_temporal_lyr_id, + WORD32 i4_lambda_type); + +void ihevce_get_ipe_ol_cu_lambda_prms(void *pv_ctxt, WORD32 i4_cur_cu_qp); + +void ihevce_populate_ipe_frame_init( + void *pv_ctxt, + ihevce_static_cfg_params_t *ps_stat_prms, + WORD32 i4_curr_frm_qp, + WORD32 i4_slice_type, + WORD32 i4_thrd_id, + pre_enc_me_ctxt_t *ps_curr_out, + WORD8 i1_cu_qp_delta_enabled_flag, + rc_quant_t *ps_rc_quant_ctxt, + WORD32 i4_quality_preset, + WORD32 i4_temporal_lyr_id, + ihevce_lap_output_params_t *ps_lap_out); + +LWORD64 ihevce_ipe_get_frame_intra_satd_cost( + void *pv_ctxt, + LWORD64 *pi8_frame_satd_by_qpmod, + LWORD64 *pi8_frame_acc_mode_bits_cost, + LWORD64 *pi8_frame_acc_activity_factor, + LWORD64 *pi8_frame_l0_acc_satd); +#endif /* _IHEVCE_IPE_PASS_H_ */ |