4
void backbits(struct bitstream_info *bitbuf,int number_of_bits)
6
bitbuf->bitindex -= number_of_bits;
7
bitbuf->wordpointer += (bitbuf->bitindex>>3);
8
bitbuf->bitindex &= 0x7;
11
int getbitoffset(struct bitstream_info *bitbuf)
13
return (-bitbuf->bitindex)&0x7;
16
int getbyte(struct bitstream_info *bitbuf)
20
fprintf(stderr,"getbyte called unsynched!\n");
22
return *bitbuf->wordpointer++;
25
unsigned int getbits(struct bitstream_info *bitbuf,int number_of_bits)
30
fprintf(stderr,"g%d",number_of_bits);
37
check_buffer_range(number_of_bits+bitbuf->bitindex);
41
rval = bitbuf->wordpointer[0];
43
rval |= bitbuf->wordpointer[1];
45
rval |= bitbuf->wordpointer[2];
47
rval <<= bitbuf->bitindex;
50
bitbuf->bitindex += number_of_bits;
52
rval >>= (24-number_of_bits);
54
bitbuf->wordpointer += (bitbuf->bitindex>>3);
55
bitbuf->bitindex &= 7;
59
fprintf(stderr,":%x ",rval);
65
unsigned int getbits_fast(struct bitstream_info *bitbuf,int number_of_bits)
69
fprintf(stderr,"g%d",number_of_bits);
73
check_buffer_range(number_of_bits+bitbuf->bitindex);
76
rval = (unsigned char) (bitbuf->wordpointer[0] << bitbuf->bitindex);
77
rval |= ((unsigned int) bitbuf->wordpointer[1]<<bitbuf->bitindex)>>8;
78
rval <<= number_of_bits;
81
bitbuf->bitindex += number_of_bits;
83
bitbuf->wordpointer += (bitbuf->bitindex>>3);
84
bitbuf->bitindex &= 7;
87
fprintf(stderr,":%x ",rval);
92
unsigned int get1bit(struct bitstream_info *bitbuf)
97
fprintf(stderr,"g%d",1);
101
check_buffer_range(1+bitbuf->bitindex);
104
rval = *(bitbuf->wordpointer) << bitbuf->bitindex;
107
bitbuf->wordpointer += (bitbuf->bitindex>>3);
108
bitbuf->bitindex &= 7;
111
fprintf(stderr,":%d ",rval>>7);