aboutsummaryrefslogtreecommitdiff
path: root/encoder/ihevce_ipe_pass.h
diff options
context:
space:
mode:
authorRam Mohan <ram.mohan@ittiam.com>2018-10-05 18:05:06 +0530
committerRay Essick <essick@google.com>2019-02-18 07:43:11 -0800
commit69da5e22f66880b785b8d9d9b2b0ca706ac24d91 (patch)
treef74d679fa97b370f412b864781c3bc03bde0e256 /encoder/ihevce_ipe_pass.h
parente9568e04fc0749e3b3ad8bdcce61163f0f08d894 (diff)
downloadlibhevc-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.h171
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_ */