1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2018 The Android Open Source Project 4*c83a76b0SSuyog Pawar * 5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License"); 6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License. 7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at: 8*c83a76b0SSuyog Pawar * 9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0 10*c83a76b0SSuyog Pawar * 11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software 12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS, 13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and 15*c83a76b0SSuyog Pawar * limitations under the License. 16*c83a76b0SSuyog Pawar * 17*c83a76b0SSuyog Pawar ***************************************************************************** 18*c83a76b0SSuyog Pawar * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*c83a76b0SSuyog Pawar */ 20*c83a76b0SSuyog Pawar 21*c83a76b0SSuyog Pawar /** 22*c83a76b0SSuyog Pawar ****************************************************************************** 23*c83a76b0SSuyog Pawar * @file ihevce_entropy_structs.h 24*c83a76b0SSuyog Pawar * 25*c83a76b0SSuyog Pawar * @brief 26*c83a76b0SSuyog Pawar * This file contains encoder entropy context related structures and 27*c83a76b0SSuyog Pawar * interface prototypes 28*c83a76b0SSuyog Pawar * 29*c83a76b0SSuyog Pawar * @author 30*c83a76b0SSuyog Pawar * Ittiam 31*c83a76b0SSuyog Pawar ****************************************************************************** 32*c83a76b0SSuyog Pawar */ 33*c83a76b0SSuyog Pawar 34*c83a76b0SSuyog Pawar #ifndef _IHEVCE_ENTROPY_STRUCTS_H_ 35*c83a76b0SSuyog Pawar #define _IHEVCE_ENTROPY_STRUCTS_H_ 36*c83a76b0SSuyog Pawar 37*c83a76b0SSuyog Pawar /*****************************************************************************/ 38*c83a76b0SSuyog Pawar /* Constant Macros */ 39*c83a76b0SSuyog Pawar /*****************************************************************************/ 40*c83a76b0SSuyog Pawar /** 41*c83a76b0SSuyog Pawar ****************************************************************************** 42*c83a76b0SSuyog Pawar * @brief defines maximum transform depth in HEVC (32 to 4) 43*c83a76b0SSuyog Pawar ****************************************************************************** 44*c83a76b0SSuyog Pawar */ 45*c83a76b0SSuyog Pawar #define MAX_TFR_DEPTH 5 46*c83a76b0SSuyog Pawar 47*c83a76b0SSuyog Pawar /** 48*c83a76b0SSuyog Pawar ****************************************************************************** 49*c83a76b0SSuyog Pawar * @brief defines maximum qp delta to be coded as truncated unary code 50*c83a76b0SSuyog Pawar ****************************************************************************** 51*c83a76b0SSuyog Pawar */ 52*c83a76b0SSuyog Pawar #define TU_MAX_QP_DELTA_ABS 5 53*c83a76b0SSuyog Pawar 54*c83a76b0SSuyog Pawar /** 55*c83a76b0SSuyog Pawar ****************************************************************************** 56*c83a76b0SSuyog Pawar * @brief defines maximum value of context increment used for qp delta encode 57*c83a76b0SSuyog Pawar ****************************************************************************** 58*c83a76b0SSuyog Pawar */ 59*c83a76b0SSuyog Pawar #define CTXT_MAX_QP_DELTA_ABS 1 60*c83a76b0SSuyog Pawar 61*c83a76b0SSuyog Pawar /** 62*c83a76b0SSuyog Pawar ****************************************************************************** 63*c83a76b0SSuyog Pawar * @brief header length in the compressed scan coeff buffer of a TU 64*c83a76b0SSuyog Pawar ****************************************************************************** 65*c83a76b0SSuyog Pawar */ 66*c83a76b0SSuyog Pawar #define COEFF_BUF_HEADER_LEN 4 67*c83a76b0SSuyog Pawar 68*c83a76b0SSuyog Pawar /** 69*c83a76b0SSuyog Pawar ****************************************************************************** 70*c83a76b0SSuyog Pawar * @brief extracts the "bitpos" bit of a input variable x 71*c83a76b0SSuyog Pawar ****************************************************************************** 72*c83a76b0SSuyog Pawar */ 73*c83a76b0SSuyog Pawar #define EXTRACT_BIT(val, x, bitpos) \ 74*c83a76b0SSuyog Pawar { \ 75*c83a76b0SSuyog Pawar val = ((((x) >> (bitpos)) & 0x1)); \ 76*c83a76b0SSuyog Pawar } 77*c83a76b0SSuyog Pawar 78*c83a76b0SSuyog Pawar /** 79*c83a76b0SSuyog Pawar ****************************************************************************** 80*c83a76b0SSuyog Pawar * @brief inserts bit y in "bitpos' position of input varaible x 81*c83a76b0SSuyog Pawar ****************************************************************************** 82*c83a76b0SSuyog Pawar */ 83*c83a76b0SSuyog Pawar #define INSERT_BIT(x, bitpos, y) ((x) |= ((y) << (bitpos))) 84*c83a76b0SSuyog Pawar 85*c83a76b0SSuyog Pawar /** 86*c83a76b0SSuyog Pawar ****************************************************************************** 87*c83a76b0SSuyog Pawar * @brief sets n bits starting from "bitpos' position of input varaible x 88*c83a76b0SSuyog Pawar ****************************************************************************** 89*c83a76b0SSuyog Pawar */ 90*c83a76b0SSuyog Pawar #define SET_BITS(x, bitpos, n) ((x) |= (((1 << (n)) - 1) << (bitpos))) 91*c83a76b0SSuyog Pawar 92*c83a76b0SSuyog Pawar /** 93*c83a76b0SSuyog Pawar ****************************************************************************** 94*c83a76b0SSuyog Pawar * @brief clears n bits starting from "bitpos' position of input varaible x 95*c83a76b0SSuyog Pawar ****************************************************************************** 96*c83a76b0SSuyog Pawar */ 97*c83a76b0SSuyog Pawar #define CLEAR_BITS(x, bitpos, n) ((x) &= (~(((1 << (n)) - 1) << (bitpos)))) 98*c83a76b0SSuyog Pawar 99*c83a76b0SSuyog Pawar /*****************************************************************************/ 100*c83a76b0SSuyog Pawar /* Enums */ 101*c83a76b0SSuyog Pawar /*****************************************************************************/ 102*c83a76b0SSuyog Pawar 103*c83a76b0SSuyog Pawar /** 104*c83a76b0SSuyog Pawar ****************************************************************************** 105*c83a76b0SSuyog Pawar * @brief Enumeration for memory records requested by entropy module 106*c83a76b0SSuyog Pawar ****************************************************************************** 107*c83a76b0SSuyog Pawar */ 108*c83a76b0SSuyog Pawar typedef enum 109*c83a76b0SSuyog Pawar { 110*c83a76b0SSuyog Pawar ENTROPY_CTXT = 0, 111*c83a76b0SSuyog Pawar ENTROPY_TOP_SKIP_FLAGS, 112*c83a76b0SSuyog Pawar ENTROPY_TOP_CU_DEPTH, 113*c83a76b0SSuyog Pawar ENTROPY_DUMMY_OUT_BUF, 114*c83a76b0SSuyog Pawar 115*c83a76b0SSuyog Pawar /* should always be the last entry */ 116*c83a76b0SSuyog Pawar NUM_ENTROPY_MEM_RECS 117*c83a76b0SSuyog Pawar 118*c83a76b0SSuyog Pawar } IHEVCE_ENTROPY_MEM_TABS_T; 119*c83a76b0SSuyog Pawar 120*c83a76b0SSuyog Pawar /*****************************************************************************/ 121*c83a76b0SSuyog Pawar /* Structures */ 122*c83a76b0SSuyog Pawar /*****************************************************************************/ 123*c83a76b0SSuyog Pawar 124*c83a76b0SSuyog Pawar /** 125*c83a76b0SSuyog Pawar ****************************************************************************** 126*c83a76b0SSuyog Pawar * @brief Entropy context for encoder 127*c83a76b0SSuyog Pawar ****************************************************************************** 128*c83a76b0SSuyog Pawar */ 129*c83a76b0SSuyog Pawar typedef struct entropy_context 130*c83a76b0SSuyog Pawar { 131*c83a76b0SSuyog Pawar /** cabac engine context */ 132*c83a76b0SSuyog Pawar cab_ctxt_t s_cabac_ctxt; 133*c83a76b0SSuyog Pawar 134*c83a76b0SSuyog Pawar /** bitstream context */ 135*c83a76b0SSuyog Pawar bitstrm_t s_bit_strm; 136*c83a76b0SSuyog Pawar 137*c83a76b0SSuyog Pawar /** 138*c83a76b0SSuyog Pawar * duplicate bitstream to generate entry offset 139*c83a76b0SSuyog Pawar * to support entropy sync 140*c83a76b0SSuyog Pawar */ 141*c83a76b0SSuyog Pawar bitstrm_t s_dup_bit_strm_ent_offset; 142*c83a76b0SSuyog Pawar 143*c83a76b0SSuyog Pawar /** pointer to top row cu skip flags (1 bit per 8x8CU) */ 144*c83a76b0SSuyog Pawar UWORD8 *pu1_skip_cu_top; 145*c83a76b0SSuyog Pawar 146*c83a76b0SSuyog Pawar /** pointer to top row cu depth buffer (1 byte per 8x8CU) */ 147*c83a76b0SSuyog Pawar UWORD8 *pu1_cu_depth_top; 148*c83a76b0SSuyog Pawar 149*c83a76b0SSuyog Pawar /** pointer to parent coded block flags based on trasform depth */ 150*c83a76b0SSuyog Pawar UWORD8 *apu1_cbf_cb[2]; 151*c83a76b0SSuyog Pawar 152*c83a76b0SSuyog Pawar /** pointer to parent coded block flags based on trasform depth */ 153*c83a76b0SSuyog Pawar UWORD8 *apu1_cbf_cr[2]; 154*c83a76b0SSuyog Pawar 155*c83a76b0SSuyog Pawar /** left cu skip flags (max of 8) (1 bit per 8x8) */ 156*c83a76b0SSuyog Pawar UWORD32 u4_skip_cu_left; 157*c83a76b0SSuyog Pawar 158*c83a76b0SSuyog Pawar /** array of left cu skip flags (max of 8) (1 byte per 8x8) */ 159*c83a76b0SSuyog Pawar UWORD8 au1_cu_depth_left[8]; 160*c83a76b0SSuyog Pawar 161*c83a76b0SSuyog Pawar /** scratch array of cb coded block flags for tu recursion */ 162*c83a76b0SSuyog Pawar UWORD8 au1_cbf_cb[2][MAX_TFR_DEPTH + 1]; 163*c83a76b0SSuyog Pawar 164*c83a76b0SSuyog Pawar /** scratch array of cr coded block flags for tu recursion */ 165*c83a76b0SSuyog Pawar UWORD8 au1_cbf_cr[2][MAX_TFR_DEPTH + 1]; 166*c83a76b0SSuyog Pawar 167*c83a76b0SSuyog Pawar /** current ctb x offset w.r.t frame start */ 168*c83a76b0SSuyog Pawar WORD32 i4_ctb_x; 169*c83a76b0SSuyog Pawar 170*c83a76b0SSuyog Pawar /** current ctb y offset w.r.t frame start */ 171*c83a76b0SSuyog Pawar WORD32 i4_ctb_y; 172*c83a76b0SSuyog Pawar 173*c83a76b0SSuyog Pawar //These values are never consumed apart from test-bench. Observed on June16 2014. 174*c83a76b0SSuyog Pawar /** current slice first ctb x offset w.r.t frame start */ 175*c83a76b0SSuyog Pawar /** current slice first ctb y offset w.r.t frame start */ 176*c83a76b0SSuyog Pawar WORD32 i4_ctb_slice_x; 177*c83a76b0SSuyog Pawar WORD32 i4_ctb_slice_y; 178*c83a76b0SSuyog Pawar 179*c83a76b0SSuyog Pawar /** Address of first CTB of next slice segment. In ctb unit */ 180*c83a76b0SSuyog Pawar WORD32 i4_next_slice_seg_x; 181*c83a76b0SSuyog Pawar 182*c83a76b0SSuyog Pawar /** Address of first CTB of next slice segment. In ctb unit */ 183*c83a76b0SSuyog Pawar WORD32 i4_next_slice_seg_y; 184*c83a76b0SSuyog Pawar 185*c83a76b0SSuyog Pawar /** sracth place holder for cu index of a ctb in context */ 186*c83a76b0SSuyog Pawar WORD32 i4_cu_idx; 187*c83a76b0SSuyog Pawar 188*c83a76b0SSuyog Pawar /** sracth place holder for tu index of a cu in context */ 189*c83a76b0SSuyog Pawar WORD32 i4_tu_idx; 190*c83a76b0SSuyog Pawar 191*c83a76b0SSuyog Pawar /** pcm not supported currently; this parameter shall be 0 */ 192*c83a76b0SSuyog Pawar WORD8 i1_ctb_num_pcm_blks; 193*c83a76b0SSuyog Pawar 194*c83a76b0SSuyog Pawar /** indicates if qp delta is to be coded in trasform unit of a cu */ 195*c83a76b0SSuyog Pawar WORD8 i1_encode_qp_delta; 196*c83a76b0SSuyog Pawar 197*c83a76b0SSuyog Pawar /** place holder for current qp of a cu */ 198*c83a76b0SSuyog Pawar WORD8 i1_cur_qp; 199*c83a76b0SSuyog Pawar 200*c83a76b0SSuyog Pawar /** log2ctbsize indicated in SPS */ 201*c83a76b0SSuyog Pawar WORD8 i1_log2_ctb_size; 202*c83a76b0SSuyog Pawar 203*c83a76b0SSuyog Pawar /**************************************************************************/ 204*c83a76b0SSuyog Pawar /* Following are shared structures with the encoder loop */ 205*c83a76b0SSuyog Pawar /* entropy context is not the owner of these and hence not allocated here */ 206*c83a76b0SSuyog Pawar /**************************************************************************/ 207*c83a76b0SSuyog Pawar /** pointer to current vps parameters */ 208*c83a76b0SSuyog Pawar vps_t *ps_vps; 209*c83a76b0SSuyog Pawar 210*c83a76b0SSuyog Pawar /** pointer to current sps parameters */ 211*c83a76b0SSuyog Pawar sps_t *ps_sps; 212*c83a76b0SSuyog Pawar 213*c83a76b0SSuyog Pawar /** pointer to current pps parameters */ 214*c83a76b0SSuyog Pawar pps_t *ps_pps; 215*c83a76b0SSuyog Pawar 216*c83a76b0SSuyog Pawar #ifndef DISABLE_SEI 217*c83a76b0SSuyog Pawar /** pointer to current sei parameters */ 218*c83a76b0SSuyog Pawar sei_params_t *ps_sei; 219*c83a76b0SSuyog Pawar #endif 220*c83a76b0SSuyog Pawar 221*c83a76b0SSuyog Pawar /** pointer to current slice header parameters */ 222*c83a76b0SSuyog Pawar slice_header_t *ps_slice_hdr; 223*c83a76b0SSuyog Pawar 224*c83a76b0SSuyog Pawar /** pointer to frame level ctb structures prepared by main encode loop */ 225*c83a76b0SSuyog Pawar ctb_enc_loop_out_t *ps_frm_ctb; 226*c83a76b0SSuyog Pawar 227*c83a76b0SSuyog Pawar /** 228*c83a76b0SSuyog Pawar * array to store cu level qp for entire 64x64 ctb 229*c83a76b0SSuyog Pawar */ 230*c83a76b0SSuyog Pawar WORD32 ai4_8x8_cu_qp[64]; 231*c83a76b0SSuyog Pawar 232*c83a76b0SSuyog Pawar /** 233*c83a76b0SSuyog Pawar * flag to check if cbf all tu in a given cu is zero 234*c83a76b0SSuyog Pawar */ 235*c83a76b0SSuyog Pawar WORD32 i4_is_cu_cbf_zero; 236*c83a76b0SSuyog Pawar 237*c83a76b0SSuyog Pawar /** 238*c83a76b0SSuyog Pawar * flag to enable / disbale residue encoding (used for RD opt bits estimate mode) 239*c83a76b0SSuyog Pawar */ 240*c83a76b0SSuyog Pawar WORD32 i4_enable_res_encode; 241*c83a76b0SSuyog Pawar 242*c83a76b0SSuyog Pawar /* flag to enable/disable insertion of SPS, VPS, PPS at CRA pictures */ 243*c83a76b0SSuyog Pawar WORD32 i4_sps_at_cdr_enable; 244*c83a76b0SSuyog Pawar 245*c83a76b0SSuyog Pawar /* quantization group position variables which stores the aligned position */ 246*c83a76b0SSuyog Pawar WORD32 i4_qg_pos_x; 247*c83a76b0SSuyog Pawar 248*c83a76b0SSuyog Pawar WORD32 i4_qg_pos_y; 249*c83a76b0SSuyog Pawar 250*c83a76b0SSuyog Pawar void *pv_tile_params_base; 251*c83a76b0SSuyog Pawar 252*c83a76b0SSuyog Pawar s_pic_level_acc_info_t *ps_pic_level_info; 253*c83a76b0SSuyog Pawar 254*c83a76b0SSuyog Pawar void *pv_sys_api; 255*c83a76b0SSuyog Pawar 256*c83a76b0SSuyog Pawar /* Flag to control dependent slices. 257*c83a76b0SSuyog Pawar 0: Disable all slice segment limits 258*c83a76b0SSuyog Pawar 1: Enforce max number of CTBs (not supported) 259*c83a76b0SSuyog Pawar 2: Enforce max number of bytes */ 260*c83a76b0SSuyog Pawar WORD32 i4_slice_segment_mode; 261*c83a76b0SSuyog Pawar 262*c83a76b0SSuyog Pawar /* Max number of CTBs/bytes in encoded slice. Will be used only when 263*c83a76b0SSuyog Pawar i4_slice_mode_enable is set to 1 or 2 in configuration file. This parameter is 264*c83a76b0SSuyog Pawar used for limiting the size of encoded slice under user-configured value */ 265*c83a76b0SSuyog Pawar WORD32 i4_slice_segment_max_length; 266*c83a76b0SSuyog Pawar 267*c83a76b0SSuyog Pawar /* Accumulated number of CTBs/bytes in current slice */ 268*c83a76b0SSuyog Pawar WORD32 i4_slice_seg_len; 269*c83a76b0SSuyog Pawar 270*c83a76b0SSuyog Pawar /** Number of slice segments generated per picture 271*c83a76b0SSuyog Pawar this parameter is to track the number of slices generated 272*c83a76b0SSuyog Pawar and comapre aganist MAX NUM VCL Nals allowed at a given level */ 273*c83a76b0SSuyog Pawar WORD32 i4_num_slice_seg; 274*c83a76b0SSuyog Pawar 275*c83a76b0SSuyog Pawar /** Codec Level */ 276*c83a76b0SSuyog Pawar WORD32 i4_codec_level; 277*c83a76b0SSuyog Pawar 278*c83a76b0SSuyog Pawar /** 279*c83a76b0SSuyog Pawar * number of neigbour cus coded as skips; Cannot exceed 2 (1 left, 1 top) 280*c83a76b0SSuyog Pawar */ 281*c83a76b0SSuyog Pawar WORD32 i4_num_nbr_skip_cus; 282*c83a76b0SSuyog Pawar 283*c83a76b0SSuyog Pawar void *pv_dummy_out_buf; 284*c83a76b0SSuyog Pawar 285*c83a76b0SSuyog Pawar WORD32 i4_bitstream_buf_size; 286*c83a76b0SSuyog Pawar } entropy_context_t; 287*c83a76b0SSuyog Pawar 288*c83a76b0SSuyog Pawar /*****************************************************************************/ 289*c83a76b0SSuyog Pawar /* Extern Function Declarations */ 290*c83a76b0SSuyog Pawar /*****************************************************************************/ 291*c83a76b0SSuyog Pawar WORD32 ihevce_encode_transform_tree( 292*c83a76b0SSuyog Pawar entropy_context_t *ps_entropy_ctxt, 293*c83a76b0SSuyog Pawar WORD32 x0_ctb, 294*c83a76b0SSuyog Pawar WORD32 y0_ctb, 295*c83a76b0SSuyog Pawar WORD32 log2_tr_size, 296*c83a76b0SSuyog Pawar WORD32 tr_depth, 297*c83a76b0SSuyog Pawar WORD32 blk_num, 298*c83a76b0SSuyog Pawar cu_enc_loop_out_t *ps_enc_cu); 299*c83a76b0SSuyog Pawar 300*c83a76b0SSuyog Pawar WORD32 ihevce_cabac_residue_encode( 301*c83a76b0SSuyog Pawar entropy_context_t *ps_entropy_ctxt, void *pv_coeff, WORD32 log2_tr_size, WORD32 is_luma); 302*c83a76b0SSuyog Pawar 303*c83a76b0SSuyog Pawar WORD32 ihevce_cabac_residue_encode_rdopt( 304*c83a76b0SSuyog Pawar entropy_context_t *ps_entropy_ctxt, 305*c83a76b0SSuyog Pawar void *pv_coeff, 306*c83a76b0SSuyog Pawar WORD32 log2_tr_size, 307*c83a76b0SSuyog Pawar WORD32 is_luma, 308*c83a76b0SSuyog Pawar WORD32 perform_rdoq); 309*c83a76b0SSuyog Pawar 310*c83a76b0SSuyog Pawar WORD32 ihevce_cabac_residue_encode_rdoq( 311*c83a76b0SSuyog Pawar entropy_context_t *ps_entropy_ctxt, 312*c83a76b0SSuyog Pawar void *pv_coeff, 313*c83a76b0SSuyog Pawar WORD32 log2_tr_size, 314*c83a76b0SSuyog Pawar WORD32 is_luma, 315*c83a76b0SSuyog Pawar void *ps_rdoq_ctxt_1, 316*c83a76b0SSuyog Pawar LWORD64 *pi8_tu_coded_dist, 317*c83a76b0SSuyog Pawar LWORD64 *pi8_not_coded_dist, 318*c83a76b0SSuyog Pawar WORD32 perform_sbh); 319*c83a76b0SSuyog Pawar 320*c83a76b0SSuyog Pawar WORD32 ihevce_find_new_last_csb( 321*c83a76b0SSuyog Pawar WORD32 *pi4_subBlock2csbfId_map, 322*c83a76b0SSuyog Pawar WORD32 cur_last_csb_pos, 323*c83a76b0SSuyog Pawar void *pv_rdoq_ctxt, 324*c83a76b0SSuyog Pawar UWORD8 *pu1_trans_table, 325*c83a76b0SSuyog Pawar UWORD8 *pu1_csb_table, 326*c83a76b0SSuyog Pawar WORD16 *pi2_coeffs, 327*c83a76b0SSuyog Pawar WORD32 shift_value, 328*c83a76b0SSuyog Pawar WORD32 mask_value, 329*c83a76b0SSuyog Pawar UWORD8 **ppu1_addr); 330*c83a76b0SSuyog Pawar 331*c83a76b0SSuyog Pawar WORD32 ihevce_code_all_sig_coeffs_as_0_explicitly( 332*c83a76b0SSuyog Pawar void *pv_rdoq_ctxt, 333*c83a76b0SSuyog Pawar WORD32 i, 334*c83a76b0SSuyog Pawar UWORD8 *pu1_trans_table, 335*c83a76b0SSuyog Pawar WORD32 is_luma, 336*c83a76b0SSuyog Pawar WORD32 scan_type, 337*c83a76b0SSuyog Pawar WORD32 infer_coeff, 338*c83a76b0SSuyog Pawar WORD32 nbr_csbf, 339*c83a76b0SSuyog Pawar cab_ctxt_t *ps_cabac); 340*c83a76b0SSuyog Pawar 341*c83a76b0SSuyog Pawar void ihevce_copy_backup_ctxt( 342*c83a76b0SSuyog Pawar void *pv_dest, void *pv_src, void *pv_backup_ctxt_dest, void *pv_backup_ctxt_src); 343*c83a76b0SSuyog Pawar 344*c83a76b0SSuyog Pawar WORD32 ihevce_cabac_encode_coding_unit( 345*c83a76b0SSuyog Pawar entropy_context_t *ps_entropy_ctxt, 346*c83a76b0SSuyog Pawar cu_enc_loop_out_t *ps_enc_cu, 347*c83a76b0SSuyog Pawar WORD32 cu_depth, 348*c83a76b0SSuyog Pawar WORD32 top_avail, 349*c83a76b0SSuyog Pawar WORD32 left_avail); 350*c83a76b0SSuyog Pawar 351*c83a76b0SSuyog Pawar WORD32 ihevce_encode_slice_data( 352*c83a76b0SSuyog Pawar entropy_context_t *ps_entropy_ctxt, 353*c83a76b0SSuyog Pawar ihevce_tile_params_t *ps_tile_params, 354*c83a76b0SSuyog Pawar WORD32 *pi4_end_of_slice_flag); 355*c83a76b0SSuyog Pawar 356*c83a76b0SSuyog Pawar WORD32 ihevce_cabac_encode_sao( 357*c83a76b0SSuyog Pawar entropy_context_t *ps_entropy_ctxt, ctb_enc_loop_out_t *ps_ctb_enc_loop_out); 358*c83a76b0SSuyog Pawar 359*c83a76b0SSuyog Pawar #endif /* _IHEVCE_ENTROPY_STRUCTS_H_ */ 360