xref: /aosp_15_r20/external/libavc/encoder/ih264e_bitstream.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1*495ae853SAndroid Build Coastguard Worker /******************************************************************************
2*495ae853SAndroid Build Coastguard Worker  *
3*495ae853SAndroid Build Coastguard Worker  * Copyright (C) 2015 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 *  ih264e_bitstream.h
25*495ae853SAndroid Build Coastguard Worker *
26*495ae853SAndroid Build Coastguard Worker * @brief
27*495ae853SAndroid Build Coastguard Worker *  This file contains encoder bitstream engine related structures and
28*495ae853SAndroid Build Coastguard Worker *  interface prototypes
29*495ae853SAndroid Build Coastguard Worker *
30*495ae853SAndroid Build Coastguard Worker * @author
31*495ae853SAndroid Build Coastguard Worker *  ittiam
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 _IH264E_BITSTREAM_H_
40*495ae853SAndroid Build Coastguard Worker #define _IH264E_BITSTREAM_H_
41*495ae853SAndroid Build Coastguard Worker 
42*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
43*495ae853SAndroid Build Coastguard Worker /* Constant Macros                                                           */
44*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
45*495ae853SAndroid Build Coastguard Worker 
46*495ae853SAndroid Build Coastguard Worker /**
47*495ae853SAndroid Build Coastguard Worker ******************************************************************************
48*495ae853SAndroid Build Coastguard Worker  *  @brief      defines the maximum number of bits in a bitstream word
49*495ae853SAndroid Build Coastguard Worker ******************************************************************************
50*495ae853SAndroid Build Coastguard Worker  */
51*495ae853SAndroid Build Coastguard Worker #define WORD_SIZE         32
52*495ae853SAndroid Build Coastguard Worker 
53*495ae853SAndroid Build Coastguard Worker /**
54*495ae853SAndroid Build Coastguard Worker ******************************************************************************
55*495ae853SAndroid Build Coastguard Worker  *  @brief  The number of consecutive zero bytes for emulation prevention check
56*495ae853SAndroid Build Coastguard Worker ******************************************************************************
57*495ae853SAndroid Build Coastguard Worker  */
58*495ae853SAndroid Build Coastguard Worker #define EPB_ZERO_BYTES      2
59*495ae853SAndroid Build Coastguard Worker 
60*495ae853SAndroid Build Coastguard Worker /**
61*495ae853SAndroid Build Coastguard Worker ******************************************************************************
62*495ae853SAndroid Build Coastguard Worker  *  @brief  Emulation prevention insertion byte
63*495ae853SAndroid Build Coastguard Worker ******************************************************************************
64*495ae853SAndroid Build Coastguard Worker  */
65*495ae853SAndroid Build Coastguard Worker #define EPB_BYTE            0x03
66*495ae853SAndroid Build Coastguard Worker 
67*495ae853SAndroid Build Coastguard Worker 
68*495ae853SAndroid Build Coastguard Worker /**
69*495ae853SAndroid Build Coastguard Worker ******************************************************************************
70*495ae853SAndroid Build Coastguard Worker  *  @brief  Stream buffer allocated per frame should be atleast MIN_STREAM_SIZE
71*495ae853SAndroid Build Coastguard Worker ******************************************************************************
72*495ae853SAndroid Build Coastguard Worker  */
73*495ae853SAndroid Build Coastguard Worker #define MIN_STREAM_SIZE            0x800
74*495ae853SAndroid Build Coastguard Worker 
75*495ae853SAndroid Build Coastguard Worker 
76*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
77*495ae853SAndroid Build Coastguard Worker /* Function Macros                                                           */
78*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
79*495ae853SAndroid Build Coastguard Worker 
80*495ae853SAndroid Build Coastguard Worker /**
81*495ae853SAndroid Build Coastguard Worker ******************************************************************************
82*495ae853SAndroid Build Coastguard Worker  *  @brief   Macro to check if emulation prevention byte insertion is required
83*495ae853SAndroid Build Coastguard Worker ******************************************************************************
84*495ae853SAndroid Build Coastguard Worker  */
85*495ae853SAndroid Build Coastguard Worker #define SHOULD_INSERT_EPB(zero_run, next_byte)                                \
86*495ae853SAndroid Build Coastguard Worker     ((zero_run) == EPB_ZERO_BYTES) && (0 == ((next_byte) & 0xFC))
87*495ae853SAndroid Build Coastguard Worker 
88*495ae853SAndroid Build Coastguard Worker /**
89*495ae853SAndroid Build Coastguard Worker ******************************************************************************
90*495ae853SAndroid Build Coastguard Worker  *  @brief   returns the bit position of a leading 1 (msb) in a code value
91*495ae853SAndroid Build Coastguard Worker ******************************************************************************
92*495ae853SAndroid Build Coastguard Worker  */
93*495ae853SAndroid Build Coastguard Worker #if !MSVC
94*495ae853SAndroid Build Coastguard Worker #define GETRANGE(r,value)   \
95*495ae853SAndroid Build Coastguard Worker {                           \
96*495ae853SAndroid Build Coastguard Worker     r = 0;                  \
97*495ae853SAndroid Build Coastguard Worker     if(0 == value)          \
98*495ae853SAndroid Build Coastguard Worker         r = 1;              \
99*495ae853SAndroid Build Coastguard Worker     else                    \
100*495ae853SAndroid Build Coastguard Worker     {                       \
101*495ae853SAndroid Build Coastguard Worker         r = 32-CLZ(value);  \
102*495ae853SAndroid Build Coastguard Worker     }\
103*495ae853SAndroid Build Coastguard Worker }
104*495ae853SAndroid Build Coastguard Worker #else
105*495ae853SAndroid Build Coastguard Worker #define GETRANGE(r,value)                 \
106*495ae853SAndroid Build Coastguard Worker {                                         \
107*495ae853SAndroid Build Coastguard Worker     unsigned long  msb_one_bit = 0;       \
108*495ae853SAndroid Build Coastguard Worker     r = _BitScanReverse(&msb_one_bit, value) ? (UWORD32)(msb_one_bit + 1) : 1 ; \
109*495ae853SAndroid Build Coastguard Worker }
110*495ae853SAndroid Build Coastguard Worker #endif
111*495ae853SAndroid Build Coastguard Worker 
112*495ae853SAndroid Build Coastguard Worker /**
113*495ae853SAndroid Build Coastguard Worker ******************************************************************************
114*495ae853SAndroid Build Coastguard Worker  *  @brief   returns bits required to code a value
115*495ae853SAndroid Build Coastguard Worker ******************************************************************************
116*495ae853SAndroid Build Coastguard Worker  */
117*495ae853SAndroid Build Coastguard Worker #define UE_LENGTH(bits,x)        \
118*495ae853SAndroid Build Coastguard Worker {                                \
119*495ae853SAndroid Build Coastguard Worker     UWORD32 r_bit;               \
120*495ae853SAndroid Build Coastguard Worker     GETRANGE(r_bit,x+1)          \
121*495ae853SAndroid Build Coastguard Worker     bits =(((r_bit - 1) << 1)+1);\
122*495ae853SAndroid Build Coastguard Worker }                                \
123*495ae853SAndroid Build Coastguard Worker 
124*495ae853SAndroid Build Coastguard Worker /**
125*495ae853SAndroid Build Coastguard Worker ******************************************************************************
126*495ae853SAndroid Build Coastguard Worker  *  @brief  Inserts 1 byte and Emulation Prevention Byte(if any) into bitstream
127*495ae853SAndroid Build Coastguard Worker  *          Increments the stream offset and zero run correspondingly
128*495ae853SAndroid Build Coastguard Worker ******************************************************************************
129*495ae853SAndroid Build Coastguard Worker  */
130*495ae853SAndroid Build Coastguard Worker #define PUTBYTE_EPB(ptr,off,byte,zero_run)                      \
131*495ae853SAndroid Build Coastguard Worker {                                                               \
132*495ae853SAndroid Build Coastguard Worker     if( SHOULD_INSERT_EPB(zero_run, byte) )                     \
133*495ae853SAndroid Build Coastguard Worker     {                                                           \
134*495ae853SAndroid Build Coastguard Worker         ptr[off] = EPB_BYTE;                                    \
135*495ae853SAndroid Build Coastguard Worker         off++;                                                  \
136*495ae853SAndroid Build Coastguard Worker         zero_run = 0;                                           \
137*495ae853SAndroid Build Coastguard Worker     }                                                           \
138*495ae853SAndroid Build Coastguard Worker                                                                 \
139*495ae853SAndroid Build Coastguard Worker     ptr[off] = byte;                                            \
140*495ae853SAndroid Build Coastguard Worker     off++;                                                      \
141*495ae853SAndroid Build Coastguard Worker     zero_run = byte ? 0 : zero_run+1;                           \
142*495ae853SAndroid Build Coastguard Worker }                                                               \
143*495ae853SAndroid Build Coastguard Worker 
144*495ae853SAndroid Build Coastguard Worker /**
145*495ae853SAndroid Build Coastguard Worker ******************************************************************************
146*495ae853SAndroid Build Coastguard Worker  *  @brief  Ensures Byte alignment of the slice header
147*495ae853SAndroid Build Coastguard Worker ******************************************************************************
148*495ae853SAndroid Build Coastguard Worker  */
149*495ae853SAndroid Build Coastguard Worker #define BYTE_ALIGNMENT(ps_bitstrm) ih264e_put_rbsp_trailing_bits(ps_bitstrm)
150*495ae853SAndroid Build Coastguard Worker 
151*495ae853SAndroid Build Coastguard Worker /**
152*495ae853SAndroid Build Coastguard Worker ******************************************************************************
153*495ae853SAndroid Build Coastguard Worker  *  @brief  Gets number of  bits coded
154*495ae853SAndroid Build Coastguard Worker ******************************************************************************
155*495ae853SAndroid Build Coastguard Worker  */
156*495ae853SAndroid Build Coastguard Worker 
157*495ae853SAndroid Build Coastguard Worker #define GET_NUM_BITS(ps_bitstream) ((ps_bitstream->u4_strm_buf_offset << 3) \
158*495ae853SAndroid Build Coastguard Worker                                     + 32 - ps_bitstream->i4_bits_left_in_cw);
159*495ae853SAndroid Build Coastguard Worker 
160*495ae853SAndroid Build Coastguard Worker 
161*495ae853SAndroid Build Coastguard Worker 
162*495ae853SAndroid Build Coastguard Worker /**
163*495ae853SAndroid Build Coastguard Worker ******************************************************************************
164*495ae853SAndroid Build Coastguard Worker  *  @macro Align bitstream to byte - Remainig bits are filled with '1'
165*495ae853SAndroid Build Coastguard Worker ******************************************************************************
166*495ae853SAndroid Build Coastguard Worker */
167*495ae853SAndroid Build Coastguard Worker #define BITSTREAM_BYTE_ALIGN(ps_bitstrm)                                    \
168*495ae853SAndroid Build Coastguard Worker    if (ps_bitstrm->i4_bits_left_in_cw & 0x07)                               \
169*495ae853SAndroid Build Coastguard Worker    {                                                                        \
170*495ae853SAndroid Build Coastguard Worker        const WORD32 len = (WORD32)((ps_bitstrm->i4_bits_left_in_cw) & 0x07);\
171*495ae853SAndroid Build Coastguard Worker        ih264e_put_bits(ps_bitstrm, (UWORD32)((1 << len) - 1), len);         \
172*495ae853SAndroid Build Coastguard Worker    }                                                                        \
173*495ae853SAndroid Build Coastguard Worker 
174*495ae853SAndroid Build Coastguard Worker 
175*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
176*495ae853SAndroid Build Coastguard Worker /* Structures                                                                */
177*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
178*495ae853SAndroid Build Coastguard Worker 
179*495ae853SAndroid Build Coastguard Worker /**
180*495ae853SAndroid Build Coastguard Worker ******************************************************************************
181*495ae853SAndroid Build Coastguard Worker  *  @brief      Bitstream context for encoder
182*495ae853SAndroid Build Coastguard Worker ******************************************************************************
183*495ae853SAndroid Build Coastguard Worker  */
184*495ae853SAndroid Build Coastguard Worker typedef struct bitstrm
185*495ae853SAndroid Build Coastguard Worker {
186*495ae853SAndroid Build Coastguard Worker     /** points to start of stream buffer.    */
187*495ae853SAndroid Build Coastguard Worker     UWORD8  *pu1_strm_buffer;
188*495ae853SAndroid Build Coastguard Worker 
189*495ae853SAndroid Build Coastguard Worker     /**
190*495ae853SAndroid Build Coastguard Worker      *  max bitstream size (in bytes).
191*495ae853SAndroid Build Coastguard Worker      *  Encoded stream shall not exceed this size.
192*495ae853SAndroid Build Coastguard Worker      */
193*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_strm_size;
194*495ae853SAndroid Build Coastguard Worker 
195*495ae853SAndroid Build Coastguard Worker     /**
196*495ae853SAndroid Build Coastguard Worker      *  byte offset (w.r.t pu1_strm_buffer) where next byte would be written
197*495ae853SAndroid Build Coastguard Worker      *  Bitstream engine makes sure it would not corrupt data beyond
198*495ae853SAndroid Build Coastguard Worker      *  u4_max_strm_size bytes
199*495ae853SAndroid Build Coastguard Worker                                  */
200*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_strm_buf_offset;
201*495ae853SAndroid Build Coastguard Worker 
202*495ae853SAndroid Build Coastguard Worker     /**
203*495ae853SAndroid Build Coastguard Worker      *  current bitstream word; It is a scratch word containing max of
204*495ae853SAndroid Build Coastguard Worker      *  WORD_SIZE bits. Will be copied to stream buffer when the word is
205*495ae853SAndroid Build Coastguard Worker      *  full
206*495ae853SAndroid Build Coastguard Worker                                  */
207*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_cur_word;
208*495ae853SAndroid Build Coastguard Worker 
209*495ae853SAndroid Build Coastguard Worker     /**
210*495ae853SAndroid Build Coastguard Worker      *  signifies number of bits available in u4_cur_word
211*495ae853SAndroid Build Coastguard Worker      *  bits from msb to i4_bits_left_in_cw of u4_cur_word have already been
212*495ae853SAndroid Build Coastguard Worker      *  inserted next bits would be inserted from pos [i4_bits_left_in_cw-1]
213*495ae853SAndroid Build Coastguard Worker      *  Range of this variable [1 : WORD_SIZE]
214*495ae853SAndroid Build Coastguard Worker                                  */
215*495ae853SAndroid Build Coastguard Worker     WORD32  i4_bits_left_in_cw;
216*495ae853SAndroid Build Coastguard Worker 
217*495ae853SAndroid Build Coastguard Worker     /**
218*495ae853SAndroid Build Coastguard Worker      *  signifies the number of consecutive zero bytes propogated from previous
219*495ae853SAndroid Build Coastguard Worker      *  word. It is used for emulation prevention byte insertion in the stream
220*495ae853SAndroid Build Coastguard Worker                                  */
221*495ae853SAndroid Build Coastguard Worker     WORD32  i4_zero_bytes_run;
222*495ae853SAndroid Build Coastguard Worker 
223*495ae853SAndroid Build Coastguard Worker } bitstrm_t;
224*495ae853SAndroid Build Coastguard Worker 
225*495ae853SAndroid Build Coastguard Worker 
226*495ae853SAndroid Build Coastguard Worker /**
227*495ae853SAndroid Build Coastguard Worker ******************************************************************************
228*495ae853SAndroid Build Coastguard Worker *  @brief  Inserts 1 byte and Emulation Prevention Byte(if any) into bitstream
229*495ae853SAndroid Build Coastguard Worker *          Increments the stream offset and zero run correspondingly
230*495ae853SAndroid Build Coastguard Worker ******************************************************************************
231*495ae853SAndroid Build Coastguard Worker */
ih264e_put_byte_epb(bitstrm_t * ps_bitstrm,UWORD8 byte)232*495ae853SAndroid Build Coastguard Worker static inline IH264E_ERROR_T ih264e_put_byte_epb(bitstrm_t *ps_bitstrm, UWORD8 byte)
233*495ae853SAndroid Build Coastguard Worker {
234*495ae853SAndroid Build Coastguard Worker     if (SHOULD_INSERT_EPB(ps_bitstrm->i4_zero_bytes_run, byte))
235*495ae853SAndroid Build Coastguard Worker     {
236*495ae853SAndroid Build Coastguard Worker         if ((ps_bitstrm->u4_strm_buf_offset + 1) >= ps_bitstrm->u4_max_strm_size)
237*495ae853SAndroid Build Coastguard Worker         {
238*495ae853SAndroid Build Coastguard Worker             return IH264E_BITSTREAM_BUFFER_OVERFLOW;
239*495ae853SAndroid Build Coastguard Worker         }
240*495ae853SAndroid Build Coastguard Worker         ps_bitstrm->pu1_strm_buffer[ps_bitstrm->u4_strm_buf_offset++] = EPB_BYTE;
241*495ae853SAndroid Build Coastguard Worker         ps_bitstrm->i4_zero_bytes_run = 0;
242*495ae853SAndroid Build Coastguard Worker     }
243*495ae853SAndroid Build Coastguard Worker 
244*495ae853SAndroid Build Coastguard Worker     if ((ps_bitstrm->u4_strm_buf_offset + 1) >= ps_bitstrm->u4_max_strm_size)
245*495ae853SAndroid Build Coastguard Worker     {
246*495ae853SAndroid Build Coastguard Worker         return IH264E_BITSTREAM_BUFFER_OVERFLOW;
247*495ae853SAndroid Build Coastguard Worker     }
248*495ae853SAndroid Build Coastguard Worker     ps_bitstrm->pu1_strm_buffer[ps_bitstrm->u4_strm_buf_offset++] = byte;
249*495ae853SAndroid Build Coastguard Worker     ps_bitstrm->i4_zero_bytes_run = byte ? 0 : ps_bitstrm->i4_zero_bytes_run + 1;
250*495ae853SAndroid Build Coastguard Worker 
251*495ae853SAndroid Build Coastguard Worker     return IH264E_SUCCESS;
252*495ae853SAndroid Build Coastguard Worker }
253*495ae853SAndroid Build Coastguard Worker 
254*495ae853SAndroid Build Coastguard Worker /**
255*495ae853SAndroid Build Coastguard Worker ******************************************************************************
256*495ae853SAndroid Build Coastguard Worker * flush the bits in cur word byte by byte  and copy to stream                *
257*495ae853SAndroid Build Coastguard Worker * (current word is assumed to be byte aligned)                               *
258*495ae853SAndroid Build Coastguard Worker ******************************************************************************
259*495ae853SAndroid Build Coastguard Worker */
260*495ae853SAndroid Build Coastguard Worker #define  BITSTREAM_FLUSH(ps_bitstrm, err)                                      \
261*495ae853SAndroid Build Coastguard Worker {                                                                              \
262*495ae853SAndroid Build Coastguard Worker     WORD32 i;                                                                  \
263*495ae853SAndroid Build Coastguard Worker     for (i = WORD_SIZE; i > ps_bitstrm->i4_bits_left_in_cw; i -= 8)            \
264*495ae853SAndroid Build Coastguard Worker     {                                                                          \
265*495ae853SAndroid Build Coastguard Worker        UWORD8 u1_next_byte = (ps_bitstrm->u4_cur_word >> (i - 8)) & 0xFF;      \
266*495ae853SAndroid Build Coastguard Worker        err |= ih264e_put_byte_epb(ps_bitstrm, u1_next_byte);                   \
267*495ae853SAndroid Build Coastguard Worker     }                                                                          \
268*495ae853SAndroid Build Coastguard Worker     if (err == IH264E_SUCCESS) {                                               \
269*495ae853SAndroid Build Coastguard Worker         ps_bitstrm->u4_cur_word = 0;                                           \
270*495ae853SAndroid Build Coastguard Worker         ps_bitstrm->i4_bits_left_in_cw = WORD_SIZE;                            \
271*495ae853SAndroid Build Coastguard Worker     }                                                                          \
272*495ae853SAndroid Build Coastguard Worker }
273*495ae853SAndroid Build Coastguard Worker 
274*495ae853SAndroid Build Coastguard Worker 
275*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
276*495ae853SAndroid Build Coastguard Worker /* Function Declarations                                                     */
277*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
278*495ae853SAndroid Build Coastguard Worker 
279*495ae853SAndroid Build Coastguard Worker IH264E_ERROR_T ih264e_bitstrm_init(bitstrm_t *ps_bitstrm,
280*495ae853SAndroid Build Coastguard Worker                                    UWORD8 *pu1_bitstrm_buf,
281*495ae853SAndroid Build Coastguard Worker                                    UWORD32 u4_max_bitstrm_size);
282*495ae853SAndroid Build Coastguard Worker 
283*495ae853SAndroid Build Coastguard Worker IH264E_ERROR_T ih264e_put_bits(bitstrm_t *ps_bitstrm, UWORD32 u4_code_val,
284*495ae853SAndroid Build Coastguard Worker                                WORD32 code_len);
285*495ae853SAndroid Build Coastguard Worker 
286*495ae853SAndroid Build Coastguard Worker IH264E_ERROR_T ih264e_put_bit(bitstrm_t *ps_bitstrm, UWORD32 u4_code_val);
287*495ae853SAndroid Build Coastguard Worker 
288*495ae853SAndroid Build Coastguard Worker IH264E_ERROR_T ih264e_put_rbsp_trailing_bits(bitstrm_t *ps_bitstrm);
289*495ae853SAndroid Build Coastguard Worker 
290*495ae853SAndroid Build Coastguard Worker IH264E_ERROR_T ih264e_put_uev(bitstrm_t *ps_bitstrm, UWORD32 u4_code_num);
291*495ae853SAndroid Build Coastguard Worker 
292*495ae853SAndroid Build Coastguard Worker IH264E_ERROR_T ih264e_put_sev(bitstrm_t *ps_bitstrm, WORD32 syntax_elem);
293*495ae853SAndroid Build Coastguard Worker 
294*495ae853SAndroid Build Coastguard Worker IH264E_ERROR_T ih264e_put_nal_start_code_prefix(bitstrm_t *ps_bitstrm,
295*495ae853SAndroid Build Coastguard Worker                                                 WORD32 insert_leading_zero_8bits);
296*495ae853SAndroid Build Coastguard Worker 
297*495ae853SAndroid Build Coastguard Worker #endif /* _IH264E_BITSTREAM_H_ */
298