You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.2 KiB
131 lines
4.2 KiB
/******************************************************************************
|
|
*
|
|
* 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_decomp_pre_intra_pass.h
|
|
*
|
|
* \brief
|
|
* This file contains declarations related to frame decomposition done during
|
|
* pre intra processing
|
|
*
|
|
* \date
|
|
* 18/09/2012
|
|
*
|
|
* \author
|
|
* Ittiam
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
#ifndef _IHEVCE_DECOMP_PRE_INTRA_PASS_H_
|
|
#define _IHEVCE_DECOMP_PRE_INTRA_PASS_H_
|
|
|
|
/*****************************************************************************/
|
|
/* Typedefs */
|
|
/*****************************************************************************/
|
|
|
|
/*****************************************************************************/
|
|
/* Globals */
|
|
/*****************************************************************************/
|
|
extern WORD32 g_i4_ip_funcs[MAX_NUM_IP_MODES];
|
|
|
|
/*****************************************************************************/
|
|
/* Extern Function Declarations */
|
|
/*****************************************************************************/
|
|
void ihevce_ed_4x4_find_best_modes(
|
|
UWORD8 *pu1_src,
|
|
WORD32 src_stride,
|
|
UWORD8 *pu1_nbr,
|
|
UWORD16 *pu2_mode_bits_cost,
|
|
UWORD8 *pu1_best_modes,
|
|
WORD32 *pu1_best_sad_costs,
|
|
WORD32 u1_low_resol,
|
|
FT_SAD_COMPUTER *pf_4x4_sad_computer);
|
|
|
|
WORD32 ihevce_decomp_pre_intra_get_num_mem_recs(void);
|
|
|
|
WORD32 ihevce_decomp_pre_intra_get_mem_recs(
|
|
iv_mem_rec_t *ps_mem_tab, WORD32 i4_num_proc_thrds, WORD32 i4_mem_space);
|
|
|
|
void *ihevce_decomp_pre_intra_init(
|
|
iv_mem_rec_t *ps_mem_tab,
|
|
ihevce_static_cfg_params_t *ps_init_prms,
|
|
WORD32 i4_num_proc_thrds,
|
|
func_selector_t *ps_func_selector,
|
|
WORD32 i4_resolution_id,
|
|
UWORD8 u1_is_popcnt_available);
|
|
|
|
void ihevce_decomp_pre_intra_process(
|
|
void *pv_ctxt,
|
|
ihevce_lap_output_params_t *ps_lap_out_prms,
|
|
frm_ctb_ctxt_t *ps_frm_ctb_prms,
|
|
void *pv_multi_thrd_ctxt,
|
|
WORD32 thrd_id,
|
|
WORD32 i4_ping_pong);
|
|
|
|
void ihevce_decomp_pre_intra_frame_init(
|
|
void *pv_ctxt,
|
|
UWORD8 **ppu1_decomp_lyr_bufs,
|
|
WORD32 *pi4_lyr_buf_stride,
|
|
ihevce_ed_blk_t *ps_layer1_buf,
|
|
ihevce_ed_blk_t *ps_layer2_buf,
|
|
ihevce_ed_ctb_l1_t *ps_ed_ctb_l1,
|
|
WORD32 i4_ol_sad_lambda_qf,
|
|
ctb_analyse_t *ps_ctb_analyse);
|
|
|
|
void ihevce_decomp_pre_intra_curr_frame_pre_intra_deinit(
|
|
void *pv_pre_intra_ctxt,
|
|
pre_enc_me_ctxt_t *ps_curr_out,
|
|
frm_ctb_ctxt_t *ps_frm_ctb_prms);
|
|
|
|
void ihevce_scale_by_2(
|
|
UWORD8 *pu1_src,
|
|
WORD32 src_stride,
|
|
UWORD8 *pu1_dst,
|
|
WORD32 dst_stride,
|
|
WORD32 wd,
|
|
WORD32 ht,
|
|
UWORD8 *pu1_wkg_mem,
|
|
WORD32 ht_offset,
|
|
WORD32 block_ht,
|
|
WORD32 wd_offset,
|
|
WORD32 block_wd,
|
|
FT_COPY_2D *pf_copy_2d,
|
|
FT_SCALING_FILTER_BY_2 *pf_scaling_filter_mxn);
|
|
|
|
void ihevce_ed_frame_init(void *pv_ed_ctxt, WORD32 i4_layer_no);
|
|
|
|
float fast_log2(float val);
|
|
|
|
WORD32 ihevce_cu_level_qp_mod(
|
|
WORD32 frm_qscale,
|
|
WORD32 cu_satd,
|
|
long double frm_avg_activity,
|
|
float f_mod_strength,
|
|
WORD32 *pi4_act_factor,
|
|
WORD32 *pi4_q_scale_mod,
|
|
rc_quant_t *rc_quant_ctxt);
|
|
|
|
LWORD64 ihevce_decomp_pre_intra_get_frame_satd(void *pv_ctxt, WORD32 *wd, WORD32 *ht);
|
|
|
|
LWORD64 ihevce_decomp_pre_intra_get_frame_satd_squared(void *pv_ctxt, WORD32 *wd, WORD32 *ht);
|
|
|
|
#endif
|