Home | History | Annotate | Download | only in utils

Lines Matching refs:br

124 void VP8InitBitReader(VP8BitReader* const br,
128 uint32_t VP8GetValue(VP8BitReader* const br, int num_bits);
129 static WEBP_INLINE uint32_t VP8Get(VP8BitReader* const br) {
130 return VP8GetValue(br, 1);
134 int32_t VP8GetSignedValue(VP8BitReader* const br, int num_bits);
140 void VP8LoadFinalBytes(VP8BitReader* const br); // special case for the tail
142 static WEBP_INLINE void VP8LoadNewBytes(VP8BitReader* const br) {
143 assert(br != NULL && br->buf_ != NULL);
145 if (br->buf_ + sizeof(lbit_t) <= br->buf_end_) {
148 lbit_t in_bits = *(lbit_t*)br->buf_;
149 br->buf_ += (BITS) >> 3;
174 br->value_ |= bits << (-br->bits_);
176 br->value_ = bits | (br->value_ << (BITS));
178 br->bits_ += (BITS);
180 VP8LoadFinalBytes(br); // no need to be inlined
184 static WEBP_INLINE int VP8BitUpdate(VP8BitReader* const br, range_t split) {
185 if (br->bits_ < 0) { // Make sure we have a least BITS bits in 'value_'
186 VP8LoadNewBytes(br);
190 if (br->value_ > split) {
191 br->range_ -= split + 1;
192 br->value_ -= split + 1;
195 br->range_ = split;
200 const int pos = br->bits_;
201 const range_t value = (range_t)(br->value_ >> pos);
203 br->range_ -= split + 1;
204 br->value_ -= (bit_t)(split + 1) << pos;
207 br->range_ = split;
214 static WEBP_INLINE void VP8Shift(VP8BitReader* const br) {
217 const bit_t idx = br->range_ >> (BITS);
219 br->range_ = kVP8NewRange[idx];
220 br->value_ <<= shift;
221 br->bits_ -= shift;
223 const int shift = kVP8Log2Range[br->range_];
224 assert(br->range_ < (range_t)128);
225 br->range_ = kVP8NewRange[br->range_];
226 br->bits_ -= shift;
229 static WEBP_INLINE int VP8GetBit(VP8BitReader* const br, int prob) {
234 (range_t)((uint32_t)(br->range_ >> (BITS)) * prob) << ((BITS) - 8);
235 const int bit = VP8BitUpdate(br, split);
236 if (br->range_ <= (((range_t)0x7e << (BITS)) | (MASK))) {
237 VP8Shift(br);
241 const range_t split = (br->range_ * prob) >> 8;
242 const int bit = VP8BitUpdate(br, split);
243 if (br->range_ <= (range_t)0x7e) {
244 VP8Shift(br);
250 static WEBP_INLINE int VP8GetSigned(VP8BitReader* const br, int v) {
251 const bit_t split = (br->range_ >> 1);
252 const int bit = VP8BitUpdate(br, split);
253 VP8Shift(br);
273 void VP8LInitBitReader(VP8LBitReader* const br,
278 void VP8LBitReaderSetBuffer(VP8LBitReader* const br,
284 uint32_t VP8LReadBits(VP8LBitReader* const br, int n_bits);
287 static WEBP_INLINE uint32_t VP8LPrefetchBits(VP8LBitReader* const br) {
288 return (uint32_t)(br->val_ >> br->bit_pos_);
292 static WEBP_INLINE void VP8LDiscardBits(VP8LBitReader* const br, int num_bits) {
293 br->bit_pos_ += num_bits;
297 void VP8LFillBitWindow(VP8LBitReader* const br);