Home | History | Annotate | Download | only in utils

Lines Matching refs:br

24 void VP8BitReaderSetBuffer(VP8BitReader* const br,
27 br->buf_ = start;
28 br->buf_end_ = start + size;
29 br->buf_max_ =
34 void VP8InitBitReader(VP8BitReader* const br,
36 assert(br != NULL);
39 br->range_ = 255 - 1;
40 br->value_ = 0;
41 br->bits_ = -8; // to load the very first 8bits
42 br->eof_ = 0;
43 VP8BitReaderSetBuffer(br, start, size);
44 VP8LoadNewBytes(br);
47 void VP8RemapBitReader(VP8BitReader* const br, ptrdiff_t offset) {
48 if (br->buf_ != NULL) {
49 br->buf_ += offset;
50 br->buf_end_ += offset;
51 br->buf_max_ += offset;
87 void VP8LoadFinalBytes(VP8BitReader* const br) {
88 assert(br != NULL && br->buf_ != NULL);
90 if (br->buf_ < br->buf_end_) {
91 br->bits_ += 8;
92 br->value_ = (bit_t)(*br->buf_++) | (br->value_ << 8);
93 } else if (!br->eof_) {
94 br->value_ <<= 8;
95 br->bits_ += 8;
96 br->eof_ = 1;
98 br->bits_ = 0; // This is to avoid undefined behaviour with shifts.
105 uint32_t VP8GetValue(VP8BitReader* const br, int bits) {
108 v |= VP8GetBit(br, 0x80) << bits;
113 int32_t VP8GetSignedValue(VP8BitReader* const br, int bits) {
114 const int value = VP8GetValue(br, bits);
115 return VP8Get(br) ? -value : value;
139 void VP8LInitBitReader(VP8LBitReader* const br, const uint8_t* const start,
143 assert(br != NULL);
147 br->len_ = length;
148 br->val_ = 0;
149 br->bit_pos_ = 0;
150 br->eos_ = 0;
152 if (length > sizeof(br->val_)) {
153 length = sizeof(br->val_);
158 br->val_ = value;
159 br->pos_ = length;
160 br->buf_ = start;
163 void VP8LBitReaderSetBuffer(VP8LBitReader* const br,
165 assert(br != NULL);
168 br->buf_ = buf;
169 br->len_ = len;
171 br->eos_ = (br->pos_ > br->len_) || VP8LIsEndOfStream(br);
174 static void VP8LSetEndOfStream(VP8LBitReader* const br) {
175 br->eos_ = 1;
176 br->bit_pos_ = 0; // To avoid undefined behaviour with shifts.
180 static void ShiftBytes(VP8LBitReader* const br) {
181 while (br->bit_pos_ >= 8 && br->pos_ < br->len_) {
182 br->val_ >>= 8;
183 br->val_ |= ((vp8l_val_t)br->buf_[br->pos_]) << (VP8L_LBITS - 8);
184 ++br->pos_;
185 br->bit_pos_ -= 8;
187 if (VP8LIsEndOfStream(br)) {
188 VP8LSetEndOfStream(br);
192 void VP8LDoFillBitWindow(VP8LBitReader* const br) {
193 assert(br->bit_pos_ >= VP8L_WBITS);
195 if (br->pos_ + sizeof(br->val_) < br->len_) {
196 br->val_ >>= VP8L_WBITS;
197 br->bit_pos_ -= VP8L_WBITS;
198 br->val_ |= (vp8l_val_t)HToLE32(WebPMemToUint32(br->buf_ + br->pos_)) <<
200 br->pos_ += VP8L_LOG8_WBITS;
204 ShiftBytes(br); // Slow path.
207 uint32_t VP8LReadBits(VP8LBitReader* const br, int n_bits) {
210 if (!br->eos_ && n_bits <= VP8L_MAX_NUM_BIT_READ) {
211 const uint32_t val = VP8LPrefetchBits(br) & kBitMask[n_bits];
212 const int new_bits = br->bit_pos_ + n_bits;
213 br->bit_pos_ = new_bits;
214 ShiftBytes(br);
217 VP8LSetEndOfStream(br);