xref: /aosp_15_r20/external/libhevc/encoder/ihevce_entropy_structs.h (revision c83a76b084498d55f252f48b2e3786804cdf24b7)
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