xref: /aosp_15_r20/external/libavc/encoder/svc/isvce_cabac.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1*495ae853SAndroid Build Coastguard Worker /******************************************************************************
2*495ae853SAndroid Build Coastguard Worker  *
3*495ae853SAndroid Build Coastguard Worker  * Copyright (C) 2022 The Android Open Source Project
4*495ae853SAndroid Build Coastguard Worker  *
5*495ae853SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*495ae853SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*495ae853SAndroid Build Coastguard Worker  * You may obtain a copy of the License at:
8*495ae853SAndroid Build Coastguard Worker  *
9*495ae853SAndroid Build Coastguard Worker  * http://www.apache.org/licenses/LICENSE-2.0
10*495ae853SAndroid Build Coastguard Worker  *
11*495ae853SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*495ae853SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*495ae853SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*495ae853SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*495ae853SAndroid Build Coastguard Worker  * limitations under the License.
16*495ae853SAndroid Build Coastguard Worker  *
17*495ae853SAndroid Build Coastguard Worker  *****************************************************************************
18*495ae853SAndroid Build Coastguard Worker  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*495ae853SAndroid Build Coastguard Worker  */
20*495ae853SAndroid Build Coastguard Worker 
21*495ae853SAndroid Build Coastguard Worker /**
22*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
23*495ae853SAndroid Build Coastguard Worker  * @file
24*495ae853SAndroid Build Coastguard Worker  *  isvce_cabac_structs.h
25*495ae853SAndroid Build Coastguard Worker  *
26*495ae853SAndroid Build Coastguard Worker  * @brief
27*495ae853SAndroid Build Coastguard Worker  *  This file contains cabac related macros, enums, tables and function
28*495ae853SAndroid Build Coastguard Worker  *declarations.
29*495ae853SAndroid Build Coastguard Worker  *
30*495ae853SAndroid Build Coastguard Worker  * @author
31*495ae853SAndroid Build Coastguard Worker  *  Doney Alex
32*495ae853SAndroid Build Coastguard Worker  *
33*495ae853SAndroid Build Coastguard Worker  * @remarks
34*495ae853SAndroid Build Coastguard Worker  *  none
35*495ae853SAndroid Build Coastguard Worker  *
36*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
37*495ae853SAndroid Build Coastguard Worker  */
38*495ae853SAndroid Build Coastguard Worker 
39*495ae853SAndroid Build Coastguard Worker #ifndef _ISVCE_CABAC_H_
40*495ae853SAndroid Build Coastguard Worker #define _ISVCE_CABAC_H_
41*495ae853SAndroid Build Coastguard Worker 
42*495ae853SAndroid Build Coastguard Worker #include "ih264e_cabac.h"
43*495ae853SAndroid Build Coastguard Worker #include "isvce_cabac_structs.h"
44*495ae853SAndroid Build Coastguard Worker #include "isvce_defs.h"
45*495ae853SAndroid Build Coastguard Worker #include "isvce_structs.h"
46*495ae853SAndroid Build Coastguard Worker 
47*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
48*495ae853SAndroid Build Coastguard Worker /* Function Declarations                                                 */
49*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
50*495ae853SAndroid Build Coastguard Worker 
51*495ae853SAndroid Build Coastguard Worker /**
52*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
53*495ae853SAndroid Build Coastguard Worker  *
54*495ae853SAndroid Build Coastguard Worker  * @brief
55*495ae853SAndroid Build Coastguard Worker  * Initialize default context values and pointers.
56*495ae853SAndroid Build Coastguard Worker  *
57*495ae853SAndroid Build Coastguard Worker  * @param[in] ps_ent_ctxt
58*495ae853SAndroid Build Coastguard Worker  *  Pointer to entropy context structure
59*495ae853SAndroid Build Coastguard Worker  *
60*495ae853SAndroid Build Coastguard Worker  * @returns
61*495ae853SAndroid Build Coastguard Worker  *
62*495ae853SAndroid Build Coastguard Worker  * @remarks
63*495ae853SAndroid Build Coastguard Worker  *  None
64*495ae853SAndroid Build Coastguard Worker  *
65*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
66*495ae853SAndroid Build Coastguard Worker  */
67*495ae853SAndroid Build Coastguard Worker void isvce_init_cabac_table(isvce_entropy_ctxt_t *ps_ent_ctxt);
68*495ae853SAndroid Build Coastguard Worker 
69*495ae853SAndroid Build Coastguard Worker /**
70*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
71*495ae853SAndroid Build Coastguard Worker  *
72*495ae853SAndroid Build Coastguard Worker  * @brief
73*495ae853SAndroid Build Coastguard Worker  * Initialize cabac context: Intitalize all contest with init values given in
74*495ae853SAndroid Build Coastguard Worker  *the spec. Called at the beginning of entropy coding of each slice for CABAC
75*495ae853SAndroid Build Coastguard Worker  *encoding.
76*495ae853SAndroid Build Coastguard Worker  *
77*495ae853SAndroid Build Coastguard Worker  * @param[in] ps_ent_ctxt
78*495ae853SAndroid Build Coastguard Worker  *  Pointer to entropy context structure
79*495ae853SAndroid Build Coastguard Worker  *
80*495ae853SAndroid Build Coastguard Worker  * @returns
81*495ae853SAndroid Build Coastguard Worker  *
82*495ae853SAndroid Build Coastguard Worker  * @remarks
83*495ae853SAndroid Build Coastguard Worker  *  None
84*495ae853SAndroid Build Coastguard Worker  *
85*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
86*495ae853SAndroid Build Coastguard Worker  */
87*495ae853SAndroid Build Coastguard Worker extern void isvce_init_cabac_ctxt(isvce_entropy_ctxt_t *ps_ent_ctxt, slice_header_t *ps_slice_hdr);
88*495ae853SAndroid Build Coastguard Worker 
89*495ae853SAndroid Build Coastguard Worker /**
90*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
91*495ae853SAndroid Build Coastguard Worker  *
92*495ae853SAndroid Build Coastguard Worker  * @brief
93*495ae853SAndroid Build Coastguard Worker  *  k-th order Exp-Golomb (UEGk) binarization process: Implements concatenated
94*495ae853SAndroid Build Coastguard Worker  *   unary/ k-th order Exp-Golomb  (UEGk) binarization process,
95*495ae853SAndroid Build Coastguard Worker  *   where k = 0 as defined in 9.3.2.3 of  ITU_T_H264-201402
96*495ae853SAndroid Build Coastguard Worker  *
97*495ae853SAndroid Build Coastguard Worker  * @param[in] i2_sufs
98*495ae853SAndroid Build Coastguard Worker  *  Suffix bit string
99*495ae853SAndroid Build Coastguard Worker  *
100*495ae853SAndroid Build Coastguard Worker  * @param[in] pi1_bins_len
101*495ae853SAndroid Build Coastguard Worker  *  Pointer to length of the string
102*495ae853SAndroid Build Coastguard Worker  *
103*495ae853SAndroid Build Coastguard Worker  * @returns Binarized value
104*495ae853SAndroid Build Coastguard Worker  *
105*495ae853SAndroid Build Coastguard Worker  * @remarks
106*495ae853SAndroid Build Coastguard Worker  *  None
107*495ae853SAndroid Build Coastguard Worker  *
108*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
109*495ae853SAndroid Build Coastguard Worker  */
110*495ae853SAndroid Build Coastguard Worker UWORD32 isvce_cabac_UEGk0_binarization(WORD16 i2_sufs, WORD8 *pi1_bins_len);
111*495ae853SAndroid Build Coastguard Worker 
112*495ae853SAndroid Build Coastguard Worker /**
113*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
114*495ae853SAndroid Build Coastguard Worker  *
115*495ae853SAndroid Build Coastguard Worker  * @brief
116*495ae853SAndroid Build Coastguard Worker  *  Get cabac context for the MB :calculates the pointers to Top and   left
117*495ae853SAndroid Build Coastguard Worker  *          cabac neighbor context depending upon neighbor  availability.
118*495ae853SAndroid Build Coastguard Worker  *
119*495ae853SAndroid Build Coastguard Worker  * @param[in] ps_ent_ctxt
120*495ae853SAndroid Build Coastguard Worker  *  Pointer to entropy context structure
121*495ae853SAndroid Build Coastguard Worker  *
122*495ae853SAndroid Build Coastguard Worker  * @param[in] u4_mb_type
123*495ae853SAndroid Build Coastguard Worker  *  Type of MB
124*495ae853SAndroid Build Coastguard Worker  *
125*495ae853SAndroid Build Coastguard Worker  * @returns
126*495ae853SAndroid Build Coastguard Worker  *
127*495ae853SAndroid Build Coastguard Worker  * @remarks
128*495ae853SAndroid Build Coastguard Worker  *  None
129*495ae853SAndroid Build Coastguard Worker  *
130*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
131*495ae853SAndroid Build Coastguard Worker  */
132*495ae853SAndroid Build Coastguard Worker void isvce_get_cabac_context(isvce_entropy_ctxt_t *ps_ent_ctxt, WORD32 u4_mb_type);
133*495ae853SAndroid Build Coastguard Worker 
134*495ae853SAndroid Build Coastguard Worker /**
135*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
136*495ae853SAndroid Build Coastguard Worker  * @brief
137*495ae853SAndroid Build Coastguard Worker  *  flushing at termination: Explained in flowchart 9-12(ITU_T_H264-201402).
138*495ae853SAndroid Build Coastguard Worker  *
139*495ae853SAndroid Build Coastguard Worker  *  @param[in]   ps_cabac_ctxt
140*495ae853SAndroid Build Coastguard Worker  *  pointer to cabac context (handle)
141*495ae853SAndroid Build Coastguard Worker  *
142*495ae853SAndroid Build Coastguard Worker  * @returns  none
143*495ae853SAndroid Build Coastguard Worker  *
144*495ae853SAndroid Build Coastguard Worker  * @remarks
145*495ae853SAndroid Build Coastguard Worker  *  None
146*495ae853SAndroid Build Coastguard Worker  *
147*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
148*495ae853SAndroid Build Coastguard Worker  */
149*495ae853SAndroid Build Coastguard Worker void isvce_cabac_flush(isvce_cabac_ctxt_t *ps_cabac_ctxt);
150*495ae853SAndroid Build Coastguard Worker 
151*495ae853SAndroid Build Coastguard Worker /**
152*495ae853SAndroid Build Coastguard Worker  ******************************************************************************
153*495ae853SAndroid Build Coastguard Worker  *
154*495ae853SAndroid Build Coastguard Worker  *  @brief Puts new byte (and outstanding bytes) into bitstream after cabac
155*495ae853SAndroid Build Coastguard Worker  *         renormalization
156*495ae853SAndroid Build Coastguard Worker  *
157*495ae853SAndroid Build Coastguard Worker  *  @par   Description
158*495ae853SAndroid Build Coastguard Worker  *  1. Extract the leading byte of low(L)
159*495ae853SAndroid Build Coastguard Worker  *  2. If leading byte=0xff increment outstanding bytes and return
160*495ae853SAndroid Build Coastguard Worker  *     (as the actual bits depend on carry propogation later)
161*495ae853SAndroid Build Coastguard Worker  *  3. If leading byte is not 0xff check for any carry propogation
162*495ae853SAndroid Build Coastguard Worker  *  4. Insert the carry (propogated in previous byte) along with outstanding
163*495ae853SAndroid Build Coastguard Worker  *     bytes (if any) and leading byte
164*495ae853SAndroid Build Coastguard Worker  *
165*495ae853SAndroid Build Coastguard Worker  *
166*495ae853SAndroid Build Coastguard Worker  *  @param[inout]   ps_cabac_ctxt
167*495ae853SAndroid Build Coastguard Worker  *  pointer to cabac context (handle)
168*495ae853SAndroid Build Coastguard Worker  *
169*495ae853SAndroid Build Coastguard Worker  *  @return
170*495ae853SAndroid Build Coastguard Worker  *
171*495ae853SAndroid Build Coastguard Worker  ******************************************************************************
172*495ae853SAndroid Build Coastguard Worker  */
173*495ae853SAndroid Build Coastguard Worker void isvce_cabac_put_byte(isvce_cabac_ctxt_t *ps_cabac_ctxt);
174*495ae853SAndroid Build Coastguard Worker 
175*495ae853SAndroid Build Coastguard Worker /**
176*495ae853SAndroid Build Coastguard Worker  ******************************************************************************
177*495ae853SAndroid Build Coastguard Worker  *
178*495ae853SAndroid Build Coastguard Worker  *  @brief Codes a bin based on probablilty and mps packed context model
179*495ae853SAndroid Build Coastguard Worker  *
180*495ae853SAndroid Build Coastguard Worker  *  @par   Description
181*495ae853SAndroid Build Coastguard Worker  *  1. Apart from encoding bin, context model is updated as per state transition
182*495ae853SAndroid Build Coastguard Worker  *  2. Range and Low renormalization is done based on bin and original state
183*495ae853SAndroid Build Coastguard Worker  *  3. After renorm bistream is updated (if required)
184*495ae853SAndroid Build Coastguard Worker  *
185*495ae853SAndroid Build Coastguard Worker  *  @param[inout]   ps_cabac
186*495ae853SAndroid Build Coastguard Worker  *  pointer to cabac context (handle)
187*495ae853SAndroid Build Coastguard Worker  *
188*495ae853SAndroid Build Coastguard Worker  *  @param[in]   bin
189*495ae853SAndroid Build Coastguard Worker  *  bin(boolean) to be encoded
190*495ae853SAndroid Build Coastguard Worker  *
191*495ae853SAndroid Build Coastguard Worker  *  @param[in]  pu1_bin_ctxts
192*495ae853SAndroid Build Coastguard Worker  *  index of cabac context model containing pState[bits 5-0] | MPS[bit6]
193*495ae853SAndroid Build Coastguard Worker  *
194*495ae853SAndroid Build Coastguard Worker  *  @return
195*495ae853SAndroid Build Coastguard Worker  *
196*495ae853SAndroid Build Coastguard Worker  ******************************************************************************
197*495ae853SAndroid Build Coastguard Worker  */
198*495ae853SAndroid Build Coastguard Worker void isvce_cabac_encode_bin(isvce_cabac_ctxt_t *ps_cabac, WORD32 bin,
199*495ae853SAndroid Build Coastguard Worker                             bin_ctxt_model *pu1_bin_ctxts);
200*495ae853SAndroid Build Coastguard Worker 
201*495ae853SAndroid Build Coastguard Worker /**
202*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
203*495ae853SAndroid Build Coastguard Worker  *
204*495ae853SAndroid Build Coastguard Worker  * @brief
205*495ae853SAndroid Build Coastguard Worker  *  Encoding process for a binary decision :implements encoding process of a
206*495ae853SAndroid Build Coastguard Worker  decision
207*495ae853SAndroid Build Coastguard Worker  *  as defined in 9.3.4.2 . This function encodes multiple bins, of a symbol.
208*495ae853SAndroid Build Coastguard Worker  Implements
209*495ae853SAndroid Build Coastguard Worker  *  flowchart Figure 9-7( ITU_T_H264-201402)
210*495ae853SAndroid Build Coastguard Worker  *
211*495ae853SAndroid Build Coastguard Worker  * @param[in] u4_bins
212*495ae853SAndroid Build Coastguard Worker  * array of bin values
213*495ae853SAndroid Build Coastguard Worker  *
214*495ae853SAndroid Build Coastguard Worker  * @param[in] i1_bins_len
215*495ae853SAndroid Build Coastguard Worker  *  Length of bins, maximum 32
216*495ae853SAndroid Build Coastguard Worker  *
217*495ae853SAndroid Build Coastguard Worker  * @param[in] u4_ctx_inc
218*495ae853SAndroid Build Coastguard Worker  *  CtxInc, byte0- bin0, byte1-bin1 ..
219*495ae853SAndroid Build Coastguard Worker  *
220*495ae853SAndroid Build Coastguard Worker  * @param[in] i1_valid_len
221*495ae853SAndroid Build Coastguard Worker  *  valid length of bins, after that CtxInc is constant
222*495ae853SAndroid Build Coastguard Worker  *
223*495ae853SAndroid Build Coastguard Worker  * @param[in] pu1_bin_ctxt_type
224*495ae853SAndroid Build Coastguard Worker  *  Pointer to binary contexts
225*495ae853SAndroid Build Coastguard Worker 
226*495ae853SAndroid Build Coastguard Worker  * @param[in] ps_cabac
227*495ae853SAndroid Build Coastguard Worker  *  Pointer to cabac_context_structure
228*495ae853SAndroid Build Coastguard Worker  *
229*495ae853SAndroid Build Coastguard Worker  * @returns
230*495ae853SAndroid Build Coastguard Worker  *
231*495ae853SAndroid Build Coastguard Worker  * @remarks
232*495ae853SAndroid Build Coastguard Worker  *  None
233*495ae853SAndroid Build Coastguard Worker  *
234*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
235*495ae853SAndroid Build Coastguard Worker  */
236*495ae853SAndroid Build Coastguard Worker void isvce_encode_decision_bins(UWORD32 u4_bins, WORD8 i1_bins_len, UWORD32 u4_ctx_inc,
237*495ae853SAndroid Build Coastguard Worker                                 WORD8 i1_valid_len, bin_ctxt_model *pu1_bin_ctxt_type,
238*495ae853SAndroid Build Coastguard Worker                                 isvce_cabac_ctxt_t *ps_cabac);
239*495ae853SAndroid Build Coastguard Worker 
240*495ae853SAndroid Build Coastguard Worker /**
241*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
242*495ae853SAndroid Build Coastguard Worker  * @brief
243*495ae853SAndroid Build Coastguard Worker  *  Encoding process for a binary decision before termination:Encoding process
244*495ae853SAndroid Build Coastguard Worker  *  of a termination(9.3.4.5 :ITU_T_H264-201402) . Explained in flowchart 9-11.
245*495ae853SAndroid Build Coastguard Worker  *
246*495ae853SAndroid Build Coastguard Worker  * @param[in] ps_cabac
247*495ae853SAndroid Build Coastguard Worker  *  Pointer to cabac structure
248*495ae853SAndroid Build Coastguard Worker  *
249*495ae853SAndroid Build Coastguard Worker  * @param[in] term_bin
250*495ae853SAndroid Build Coastguard Worker  *  Symbol value, end of slice or not, term_bin is binary
251*495ae853SAndroid Build Coastguard Worker  *
252*495ae853SAndroid Build Coastguard Worker  * @returns
253*495ae853SAndroid Build Coastguard Worker  *
254*495ae853SAndroid Build Coastguard Worker  * @remarks
255*495ae853SAndroid Build Coastguard Worker  *  None
256*495ae853SAndroid Build Coastguard Worker  *
257*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
258*495ae853SAndroid Build Coastguard Worker  */
259*495ae853SAndroid Build Coastguard Worker void isvce_cabac_encode_terminate(isvce_cabac_ctxt_t *ps_cabac, WORD32 term_bin);
260*495ae853SAndroid Build Coastguard Worker 
261*495ae853SAndroid Build Coastguard Worker /**
262*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
263*495ae853SAndroid Build Coastguard Worker  * @brief
264*495ae853SAndroid Build Coastguard Worker  * Bypass encoding process for binary decisions:  Explained (9.3.4.4
265*495ae853SAndroid Build Coastguard Worker  *:ITU_T_H264-201402) , flowchart 9-10.
266*495ae853SAndroid Build Coastguard Worker  *
267*495ae853SAndroid Build Coastguard Worker  *  @param[in]  ps_cabac : pointer to cabac context (handle)
268*495ae853SAndroid Build Coastguard Worker  *
269*495ae853SAndroid Build Coastguard Worker  *  @param[in]   bin :  bypass bin(0/1) to be encoded
270*495ae853SAndroid Build Coastguard Worker  *
271*495ae853SAndroid Build Coastguard Worker  *  @returns
272*495ae853SAndroid Build Coastguard Worker  *
273*495ae853SAndroid Build Coastguard Worker  *  @remarks
274*495ae853SAndroid Build Coastguard Worker  *  None
275*495ae853SAndroid Build Coastguard Worker  *
276*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
277*495ae853SAndroid Build Coastguard Worker  */
278*495ae853SAndroid Build Coastguard Worker 
279*495ae853SAndroid Build Coastguard Worker void isvce_cabac_encode_bypass_bin(isvce_cabac_ctxt_t *ps_cabac, WORD32 bin);
280*495ae853SAndroid Build Coastguard Worker 
281*495ae853SAndroid Build Coastguard Worker /**
282*495ae853SAndroid Build Coastguard Worker  ******************************************************************************
283*495ae853SAndroid Build Coastguard Worker  *
284*495ae853SAndroid Build Coastguard Worker  *  @brief Encodes a series of bypass bins (FLC bypass bins)
285*495ae853SAndroid Build Coastguard Worker  *
286*495ae853SAndroid Build Coastguard Worker  *  @par   Description
287*495ae853SAndroid Build Coastguard Worker  *  This function is more optimal than calling isvce_cabac_encode_bypass_bin()
288*495ae853SAndroid Build Coastguard Worker  *  in a loop as cabac low, renorm and generating the stream (8bins at a time)
289*495ae853SAndroid Build Coastguard Worker  *  can be done in one operation
290*495ae853SAndroid Build Coastguard Worker  *
291*495ae853SAndroid Build Coastguard Worker  *  @param[inout]ps_cabac
292*495ae853SAndroid Build Coastguard Worker  *   pointer to cabac context (handle)
293*495ae853SAndroid Build Coastguard Worker  *
294*495ae853SAndroid Build Coastguard Worker  *  @param[in]   u4_bins
295*495ae853SAndroid Build Coastguard Worker  *   syntax element to be coded (as FLC bins)
296*495ae853SAndroid Build Coastguard Worker  *
297*495ae853SAndroid Build Coastguard Worker  *  @param[in]   num_bins
298*495ae853SAndroid Build Coastguard Worker  *   This is the FLC length for u4_sym
299*495ae853SAndroid Build Coastguard Worker  *
300*495ae853SAndroid Build Coastguard Worker  *  @return
301*495ae853SAndroid Build Coastguard Worker  *
302*495ae853SAndroid Build Coastguard Worker  ******************************************************************************
303*495ae853SAndroid Build Coastguard Worker  */
304*495ae853SAndroid Build Coastguard Worker 
305*495ae853SAndroid Build Coastguard Worker void isvce_cabac_encode_bypass_bins(isvce_cabac_ctxt_t *ps_cabac, UWORD32 u4_bins, WORD32 num_bins);
306*495ae853SAndroid Build Coastguard Worker 
307*495ae853SAndroid Build Coastguard Worker /**
308*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
309*495ae853SAndroid Build Coastguard Worker  *
310*495ae853SAndroid Build Coastguard Worker  * @brief
311*495ae853SAndroid Build Coastguard Worker  *  This function generates CABAC coded bit stream for an Intra Slice.
312*495ae853SAndroid Build Coastguard Worker  *
313*495ae853SAndroid Build Coastguard Worker  * @description
314*495ae853SAndroid Build Coastguard Worker  *  The mb syntax layer for intra slices constitutes luma mb mode, luma sub
315*495ae853SAndroid Build Coastguard Worker  *modes (if present), mb qp delta, coded block pattern, chroma mb mode and
316*495ae853SAndroid Build Coastguard Worker  *  luma/chroma residue. These syntax elements are written as directed by table
317*495ae853SAndroid Build Coastguard Worker  *  7.3.5 of h264 specification.
318*495ae853SAndroid Build Coastguard Worker  *
319*495ae853SAndroid Build Coastguard Worker  * @param[in] ps_ent_ctxt
320*495ae853SAndroid Build Coastguard Worker  *  pointer to entropy context
321*495ae853SAndroid Build Coastguard Worker  *
322*495ae853SAndroid Build Coastguard Worker  * @returns error code
323*495ae853SAndroid Build Coastguard Worker  *
324*495ae853SAndroid Build Coastguard Worker  * @remarks none
325*495ae853SAndroid Build Coastguard Worker  *
326*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
327*495ae853SAndroid Build Coastguard Worker  */
328*495ae853SAndroid Build Coastguard Worker IH264E_ERROR_T isvce_write_islice_mb_cabac(isvce_entropy_ctxt_t *ps_ent_ctxt);
329*495ae853SAndroid Build Coastguard Worker 
330*495ae853SAndroid Build Coastguard Worker /**
331*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
332*495ae853SAndroid Build Coastguard Worker  *
333*495ae853SAndroid Build Coastguard Worker  * @brief
334*495ae853SAndroid Build Coastguard Worker  *  This function generates CABAC coded bit stream for Inter slices
335*495ae853SAndroid Build Coastguard Worker  *
336*495ae853SAndroid Build Coastguard Worker  * @description
337*495ae853SAndroid Build Coastguard Worker  *  The mb syntax layer for inter slices constitutes luma mb mode, luma sub
338*495ae853SAndroid Build Coastguard Worker  *modes (if present), mb qp delta, coded block pattern, chroma mb mode and
339*495ae853SAndroid Build Coastguard Worker  *  luma/chroma residue. These syntax elements are written as directed by table
340*495ae853SAndroid Build Coastguard Worker  *  7.3.5 of h264 specification
341*495ae853SAndroid Build Coastguard Worker  *
342*495ae853SAndroid Build Coastguard Worker  * @param[in] ps_ent_ctxt
343*495ae853SAndroid Build Coastguard Worker  *  pointer to entropy context
344*495ae853SAndroid Build Coastguard Worker  *
345*495ae853SAndroid Build Coastguard Worker  * @returns error code
346*495ae853SAndroid Build Coastguard Worker  *
347*495ae853SAndroid Build Coastguard Worker  * @remarks none
348*495ae853SAndroid Build Coastguard Worker  *
349*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
350*495ae853SAndroid Build Coastguard Worker  */
351*495ae853SAndroid Build Coastguard Worker IH264E_ERROR_T isvce_write_pslice_mb_cabac(isvce_entropy_ctxt_t *ps_ent_ctxt);
352*495ae853SAndroid Build Coastguard Worker 
353*495ae853SAndroid Build Coastguard Worker /**
354*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
355*495ae853SAndroid Build Coastguard Worker  *
356*495ae853SAndroid Build Coastguard Worker  * @brief
357*495ae853SAndroid Build Coastguard Worker  *  This function generates CABAC coded bit stream for B slices
358*495ae853SAndroid Build Coastguard Worker  *
359*495ae853SAndroid Build Coastguard Worker  * @description
360*495ae853SAndroid Build Coastguard Worker  *  The mb syntax layer for inter slices constitutes luma mb mode,
361*495ae853SAndroid Build Coastguard Worker  *  mb qp delta, coded block pattern, chroma mb mode and
362*495ae853SAndroid Build Coastguard Worker  *  luma/chroma residue. These syntax elements are written as directed by table
363*495ae853SAndroid Build Coastguard Worker  *  7.3.5 of h264 specification
364*495ae853SAndroid Build Coastguard Worker  *
365*495ae853SAndroid Build Coastguard Worker  * @param[in] ps_ent_ctxt
366*495ae853SAndroid Build Coastguard Worker  *  pointer to entropy context
367*495ae853SAndroid Build Coastguard Worker  *
368*495ae853SAndroid Build Coastguard Worker  * @returns error code
369*495ae853SAndroid Build Coastguard Worker  *
370*495ae853SAndroid Build Coastguard Worker  * @remarks none
371*495ae853SAndroid Build Coastguard Worker  *
372*495ae853SAndroid Build Coastguard Worker  *******************************************************************************
373*495ae853SAndroid Build Coastguard Worker  */
374*495ae853SAndroid Build Coastguard Worker IH264E_ERROR_T isvce_write_bslice_mb_cabac(isvce_entropy_ctxt_t *ps_ent_ctxt);
375*495ae853SAndroid Build Coastguard Worker 
376*495ae853SAndroid Build Coastguard Worker #if ENABLE_RE_ENC_AS_SKIP
377*495ae853SAndroid Build Coastguard Worker IH264E_ERROR_T isvce_reencode_as_skip_frame_cabac(isvce_entropy_ctxt_t *ps_ent_ctxt);
378*495ae853SAndroid Build Coastguard Worker #endif
379*495ae853SAndroid Build Coastguard Worker 
380*495ae853SAndroid Build Coastguard Worker #endif
381