Lines Matching refs:bitctx

24 static MPP_RET update_curbyte_default(BitReadCtx_t *bitctx)  in update_curbyte_default()  argument
26 if (bitctx->bytes_left_ < 1) in update_curbyte_default()
30 bitctx->curr_byte_ = *bitctx->data_++ & 0xff; in update_curbyte_default()
31 --bitctx->bytes_left_; in update_curbyte_default()
32 bitctx->num_remaining_bits_in_curr_byte_ = 8; in update_curbyte_default()
33 bitctx->prev_two_bytes_ = (bitctx->prev_two_bytes_ << 8) | bitctx->curr_byte_; in update_curbyte_default()
38 static MPP_RET update_curbyte_h264(BitReadCtx_t *bitctx) in update_curbyte_h264() argument
40 if (bitctx->bytes_left_ < 1) in update_curbyte_h264()
45 if ((*bitctx->data_ == 0x03) in update_curbyte_h264()
46 && ((bitctx->prev_two_bytes_ & 0xffff) == 0)) { in update_curbyte_h264()
48 ++bitctx->data_; in update_curbyte_h264()
49 --bitctx->bytes_left_; in update_curbyte_h264()
50 ++bitctx->emulation_prevention_bytes_; in update_curbyte_h264()
51 bitctx->used_bits += 8; in update_curbyte_h264()
53 bitctx->prev_two_bytes_ = 0xffff; in update_curbyte_h264()
54 if (bitctx->bytes_left_ < 1) in update_curbyte_h264()
58 bitctx->curr_byte_ = *bitctx->data_++ & 0xff; in update_curbyte_h264()
59 --bitctx->bytes_left_; in update_curbyte_h264()
60 bitctx->num_remaining_bits_in_curr_byte_ = 8; in update_curbyte_h264()
61 bitctx->prev_two_bytes_ = (bitctx->prev_two_bytes_ << 8) | bitctx->curr_byte_; in update_curbyte_h264()
66 static MPP_RET update_curbyte_h2645_sei(BitReadCtx_t *bitctx) in update_curbyte_h2645_sei() argument
68 if (bitctx->bytes_left_ < 1) in update_curbyte_h2645_sei()
73 if ((*bitctx->data_ == 0x03) in update_curbyte_h2645_sei()
74 && ((bitctx->prev_two_bytes_ & 0xffff) == 0)) { in update_curbyte_h2645_sei()
76 ++bitctx->data_; in update_curbyte_h2645_sei()
78 bitctx->prev_two_bytes_ = 0xffff; in update_curbyte_h2645_sei()
81 bitctx->curr_byte_ = *bitctx->data_++ & 0xff; in update_curbyte_h2645_sei()
82 --bitctx->bytes_left_; in update_curbyte_h2645_sei()
83 bitctx->num_remaining_bits_in_curr_byte_ = 8; in update_curbyte_h2645_sei()
84 bitctx->prev_two_bytes_ = (bitctx->prev_two_bytes_ << 8) | bitctx->curr_byte_; in update_curbyte_h2645_sei()
89 static MPP_RET update_curbyte_avs2(BitReadCtx_t *bitctx) in update_curbyte_avs2() argument
91 if (bitctx->bytes_left_ < 1) in update_curbyte_avs2()
94 if (*bitctx->data_ == 0x02 && ((bitctx->prev_two_bytes_ & 0xffff) == 0)) { in update_curbyte_avs2()
96 bitctx->curr_byte_ = 0; in update_curbyte_avs2()
97 bitctx->num_remaining_bits_in_curr_byte_ = 6; in update_curbyte_avs2()
98 ++bitctx->data_; in update_curbyte_avs2()
100 bitctx->curr_byte_ = *bitctx->data_++ & 0xff; in update_curbyte_avs2()
101 bitctx->num_remaining_bits_in_curr_byte_ = 8; in update_curbyte_avs2()
104 bitctx->prev_two_bytes_ = (bitctx->prev_two_bytes_ << 8) | bitctx->curr_byte_; in update_curbyte_avs2()
105 --bitctx->bytes_left_; in update_curbyte_avs2()
118 MPP_RET mpp_read_bits(BitReadCtx_t *bitctx, RK_S32 num_bits, RK_S32 *out) in mpp_read_bits() argument
125 while (bitctx->num_remaining_bits_in_curr_byte_ < bits_left) { in mpp_read_bits()
127 *out |= (bitctx->curr_byte_ << (bits_left - bitctx->num_remaining_bits_in_curr_byte_)); in mpp_read_bits()
128 bits_left -= bitctx->num_remaining_bits_in_curr_byte_; in mpp_read_bits()
129 if (bitctx->update_curbyte(bitctx)) { in mpp_read_bits()
133 *out |= (bitctx->curr_byte_ >> (bitctx->num_remaining_bits_in_curr_byte_ - bits_left)); in mpp_read_bits()
135 bitctx->num_remaining_bits_in_curr_byte_ -= bits_left; in mpp_read_bits()
136 bitctx->used_bits += num_bits; in mpp_read_bits()
146 MPP_RET mpp_read_longbits(BitReadCtx_t *bitctx, RK_S32 num_bits, RK_U32 *out) in mpp_read_longbits() argument
151 return mpp_read_bits(bitctx, num_bits, (RK_S32 *)out); in mpp_read_longbits()
153 if (mpp_read_bits(bitctx, 16, &val)) { in mpp_read_longbits()
156 if (mpp_read_bits(bitctx, (num_bits - 16), &val1)) { in mpp_read_longbits()
170 MPP_RET mpp_skip_bits(BitReadCtx_t *bitctx, RK_S32 num_bits) in mpp_skip_bits() argument
174 while (bitctx->num_remaining_bits_in_curr_byte_ < bits_left) { in mpp_skip_bits()
176 bits_left -= bitctx->num_remaining_bits_in_curr_byte_; in mpp_skip_bits()
177 if (bitctx->update_curbyte(bitctx)) { in mpp_skip_bits()
181 bitctx->num_remaining_bits_in_curr_byte_ -= bits_left; in mpp_skip_bits()
182 bitctx->used_bits += num_bits; in mpp_skip_bits()
192 MPP_RET mpp_skip_longbits(BitReadCtx_t *bitctx, RK_S32 num_bits) in mpp_skip_longbits() argument
195 return mpp_skip_bits(bitctx, num_bits); in mpp_skip_longbits()
197 if (mpp_skip_bits(bitctx, 16)) { in mpp_skip_longbits()
200 if (mpp_skip_bits(bitctx, (num_bits - 16))) { in mpp_skip_longbits()
211 MPP_RET mpp_show_bits(BitReadCtx_t *bitctx, RK_S32 num_bits, RK_S32 *out) in mpp_show_bits() argument
214 BitReadCtx_t tmp_ctx = *bitctx; in mpp_show_bits()
229 MPP_RET mpp_show_longbits(BitReadCtx_t *bitctx, RK_S32 num_bits, RK_U32 *out) in mpp_show_longbits() argument
232 BitReadCtx_t tmp_ctx = *bitctx; in mpp_show_longbits()
244 MPP_RET mpp_read_ue(BitReadCtx_t *bitctx, RK_U32 *val) in mpp_read_ue() argument
251 if (mpp_read_bits(bitctx, 1, &bit)) { in mpp_read_ue()
262 if (mpp_read_bits(bitctx, num_bits, &rest)) { in mpp_read_ue()
276 MPP_RET mpp_read_se(BitReadCtx_t *bitctx, RK_S32 *val) in mpp_read_se() argument
280 if (mpp_read_ue(bitctx, &ue)) { in mpp_read_se()
297 RK_U32 mpp_has_more_rbsp_data(BitReadCtx_t *bitctx) in mpp_has_more_rbsp_data() argument
300 while (bitctx->bytes_left_ && in mpp_has_more_rbsp_data()
301 bitctx->data_[bitctx->bytes_left_ - 1] == 0) in mpp_has_more_rbsp_data()
302 bitctx->bytes_left_--; in mpp_has_more_rbsp_data()
306 if (bitctx->num_remaining_bits_in_curr_byte_ == 0 && bitctx->update_curbyte(bitctx)) in mpp_has_more_rbsp_data()
309 if (bitctx->bytes_left_) in mpp_has_more_rbsp_data()
314 if (bitctx->num_remaining_bits_in_curr_byte_) in mpp_has_more_rbsp_data()
315 return (bitctx->curr_byte_ & in mpp_has_more_rbsp_data()
316 ((1 << (bitctx->num_remaining_bits_in_curr_byte_ - 1)) - 1)) != 0; in mpp_has_more_rbsp_data()
326 void mpp_set_bitread_ctx(BitReadCtx_t *bitctx, RK_U8 *data, RK_S32 size) in mpp_set_bitread_ctx() argument
328 memset(bitctx, 0, sizeof(BitReadCtx_t)); in mpp_set_bitread_ctx()
329 bitctx->data_ = data; in mpp_set_bitread_ctx()
330 bitctx->bytes_left_ = size; in mpp_set_bitread_ctx()
331 bitctx->num_remaining_bits_in_curr_byte_ = 0; in mpp_set_bitread_ctx()
333 bitctx->prev_two_bytes_ = 0xffff; in mpp_set_bitread_ctx()
334 bitctx->emulation_prevention_bytes_ = 0; in mpp_set_bitread_ctx()
336 bitctx->buf = data; in mpp_set_bitread_ctx()
337 bitctx->buf_len = size; in mpp_set_bitread_ctx()
338 bitctx->used_bits = 0; in mpp_set_bitread_ctx()
339 mpp_set_bitread_pseudo_code_type(bitctx, PSEUDO_CODE_NONE); in mpp_set_bitread_ctx()
342 void mpp_set_bitread_pseudo_code_type(BitReadCtx_t *bitctx, PseudoCodeType type) in mpp_set_bitread_pseudo_code_type() argument
344 bitctx->prevention_type = type; in mpp_set_bitread_pseudo_code_type()
347 bitctx->update_curbyte = update_curbyte_h264; in mpp_set_bitread_pseudo_code_type()
350 bitctx->update_curbyte = update_curbyte_h2645_sei; in mpp_set_bitread_pseudo_code_type()
353 bitctx->update_curbyte = update_curbyte_avs2; in mpp_set_bitread_pseudo_code_type()
356 bitctx->update_curbyte = update_curbyte_default; in mpp_set_bitread_pseudo_code_type()
367 RK_U8 *mpp_align_get_bits(BitReadCtx_t *bitctx) in mpp_align_get_bits() argument
369 int n = bitctx->num_remaining_bits_in_curr_byte_; in mpp_align_get_bits()
371 mpp_skip_bits(bitctx, n); in mpp_align_get_bits()
372 return bitctx->data_; in mpp_align_get_bits()
375 RK_S32 mpp_get_bits_left(BitReadCtx_t *bitctx) in mpp_get_bits_left() argument
377 return bitctx->bytes_left_ * 8 + bitctx->num_remaining_bits_in_curr_byte_; in mpp_get_bits_left()
380 RK_S32 mpp_get_bits_count(BitReadCtx_t *bitctx) in mpp_get_bits_count() argument
382 return bitctx->used_bits; in mpp_get_bits_count()