void skip_bits(bitreader* br, int n) { if (br->nextbits_cnt < n) { bitreader_refill(br); } br->nextbits <<= n; br->nextbits_cnt -= n; }
void bitreader_init(bitreader* br, rbsp_buffer* buffer) { br->data = buffer->data; br->bytes_remaining = buffer->size; br->nextbits=0; br->nextbits_cnt=0; bitreader_refill(br); }
int peek_bits(bitreader* br, int n) { if (br->nextbits_cnt < n) { bitreader_refill(br); } uint64_t val = br->nextbits; val >>= 64-n; return val; }
static uint32_t bitreader_get(bitreader_context *cont, size_t number) { uint32_t ret = 0; ssize_t diff = number - cont->available; if ( diff >= 0 ) { ret = cont->current << diff; bitreader_refill(cont); cont->available = 32 - diff; if ( diff ) ret |= cont->current >> (32 - diff); } else {