/****************************************************************************** * * 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_cabac_rdo.h * * @brief * This file contains function prototypes for rdopt cabac entropy modules * * @author * ittiam * ****************************************************************************** */ #ifndef _IHEVCE_CABAC_RDO_H_ #define _IHEVCE_CABAC_RDO_H_ /*****************************************************************************/ /* Constant Macros */ /*****************************************************************************/ /*****************************************************************************/ /* Function Macros */ /*****************************************************************************/ /*****************************************************************************/ /* Enums */ /*****************************************************************************/ typedef enum { UPDATE_ENT_SYNC_RDO_STATE = 0, STORE_ENT_SYNC_RDO_STATE = 1, } CABAC_RDO_COPY_STATE_T; /*****************************************************************************/ /* Structures */ /*****************************************************************************/ /*****************************************************************************/ /* Extern Function Declarations */ /*****************************************************************************/ void ihevce_entropy_rdo_frame_init( rdopt_entropy_ctxt_t *ps_rdopt_entropy_ctxt, slice_header_t *ps_slice_hdr, pps_t *ps_pps, sps_t *ps_sps, vps_t *ps_vps, UWORD8 *pu1_cu_skip_top_row, rc_quant_t *ps_rc_quant_ctxt); void ihevce_entropy_rdo_ctb_init( rdopt_entropy_ctxt_t *ps_rdopt_entropy_ctxt, WORD32 ctb_x, WORD32 ctb_y); WORD32 ihevce_entropy_rdo_encode_cu( rdopt_entropy_ctxt_t *ps_rdopt_entropy_ctxt, enc_loop_cu_final_prms_t *ps_cu_prms, WORD32 cu_pos_x, WORD32 cu_pos_y, WORD32 cu_size, WORD32 top_avail, WORD32 left_avail, void *pv_ecd_coeff, WORD32 *pi4_cu_rdopt_tex_bits); void ihevce_entropy_update_best_cu_states( rdopt_entropy_ctxt_t *ps_rdopt_entropy_ctxt, WORD32 cu_pos_x, WORD32 cu_pos_y, WORD32 cu_size, WORD32 cu_skip_flag, WORD32 rdopt_best_cu_idx); WORD32 ihevce_entropy_rdo_encode_tu( rdopt_entropy_ctxt_t *ps_rdopt_entropy_ctxt, void *pv_ecd_coeff, WORD32 transform_size, WORD32 is_luma, WORD32 perform_sbh); WORD32 ihevce_cabac_rdo_encode_sao( rdopt_entropy_ctxt_t *ps_rdopt_entropy_ctxt, ctb_enc_loop_out_t *ps_ctb_enc_loop_out); WORD32 ihevce_update_best_sao_cabac_state( rdopt_entropy_ctxt_t *ps_rdopt_entropy_ctxt, WORD32 i4_best_buf_idx); WORD32 ihevce_entropy_rdo_encode_tu_rdoq( rdopt_entropy_ctxt_t *ps_rdopt_entropy_ctxt, void *pv_ecd_coeff, WORD32 transform_size, WORD32 is_luma, rdoq_sbh_ctxt_t *ps_rdoq_ctxt, LWORD64 *pi8_coded_tu_dist, LWORD64 *pi8_not_coded_tu_dist, WORD32 perform_sbh); void ihevce_entropy_rdo_copy_states( rdopt_entropy_ctxt_t *ps_rdopt_entropy_ctxt, UWORD8 *pu1_entropy_sync_states, WORD32 copy_mode); #endif /* _IHEVCE_CABAC_RDO_H_ */