Lines Matching refs:bits
34 void BitBufferInit (BitBuffer * bits, uint8_t * buffer, uint32_t byteSize)
36 bits->cur = buffer ;
37 bits->end = bits->cur + byteSize ;
38 bits->bitIndex = 0 ;
39 bits->byteSize = byteSize ;
44 uint32_t BitBufferRead (BitBuffer * bits, uint8_t numBits)
50 returnBits = ((uint32_t) bits->cur [0] << 16) | ((uint32_t) bits->cur [1] << 8) | ((uint32_t) bits->cur [2]) ;
51 returnBits = returnBits << bits->bitIndex ;
54 bits->bitIndex += numBits ;
58 bits->cur += (bits->bitIndex >> 3) ;
59 bits->bitIndex &= 7 ;
61 //Assert (bits->cur <= bits->end) ;
68 // Reads up to 8 bits
69 uint8_t BitBufferReadSmall (BitBuffer * bits, uint8_t numBits)
75 returnBits = (bits->cur [0] << 8) | bits->cur [1] ;
76 returnBits = returnBits << bits->bitIndex ;
78 bits->bitIndex += numBits ;
82 bits->cur += (bits->bitIndex >> 3) ;
83 bits->bitIndex &= 7 ;
85 //Assert (bits->cur <= bits->end) ;
93 uint8_t BitBufferReadOne (BitBuffer * bits)
97 returnBits = (bits->cur [0] >> (7 - bits->bitIndex)) & 1 ;
99 bits->bitIndex++ ;
101 bits->cur += (bits->bitIndex >> 3) ;
102 bits->bitIndex &= 7 ;
104 //Assert (bits->cur <= bits->end) ;
111 uint32_t BitBufferPeek (BitBuffer * bits, uint8_t numBits)
113 return ((((((uint32_t) bits->cur [0] << 16) | ((uint32_t) bits->cur [1] << 8) |
114 ((uint32_t) bits->cur [2])) << bits->bitIndex) & 0x00FFFFFF) >> (24 - numBits)) ;
119 uint32_t BitBufferPeekOne (BitBuffer * bits)
121 return ((bits->cur [0] >> (7 - bits->bitIndex)) & 1) ;
126 uint32_t BitBufferUnpackBERSize (BitBuffer * bits)
132 tmp = (uint8_t) BitBufferReadSmall (bits, 8) ;
139 uint32_t BitBufferGetPosition (BitBuffer * bits)
143 begin = bits->end - bits->byteSize ;
145 return ((uint32_t) (bits->cur - begin) * 8) + bits->bitIndex ;
150 void BitBufferByteAlign (BitBuffer * bits, int32_t addZeros)
153 if (bits->bitIndex == 0)
157 BitBufferWrite (bits, 0, 8 - bits->bitIndex) ;
159 BitBufferAdvance (bits, 8 - bits->bitIndex) ;
164 void BitBufferAdvance (BitBuffer * bits, uint32_t numBits)
168 bits->bitIndex += numBits ;
169 bits->cur += (bits->bitIndex >> 3) ;
170 bits->bitIndex &= 7 ;
176 void BitBufferRewind (BitBuffer * bits, uint32_t numBits)
183 if (bits->bitIndex >= numBits)
185 bits->bitIndex -= numBits ;
189 numBits -= bits->bitIndex ;
190 bits->bitIndex = 0 ;
195 bits->cur -= numBytes ;
199 bits->bitIndex = 8 - numBits ;
200 bits->cur-- ;
203 if (bits->cur < (bits->end - bits->byteSize))
207 bits->cur = (bits->end - bits->byteSize) ;
208 bits->bitIndex = 0 ;
214 void BitBufferWrite (BitBuffer * bits, uint32_t bitValues, uint32_t numBits)
218 RequireAction (bits != NULL, return ;) ;
221 invBitIndex = 8 - bits->bitIndex ;
238 bits->cur [0] = (bits->cur [0] & ~mask) | (((uint8_t) tmp << shift) & mask) ;
246 bits->cur++ ;
250 bits->bitIndex = 8 - invBitIndex ;
253 void BitBufferReset (BitBuffer * bits)
254 //void BitBufferInit (BitBuffer * bits, uint8_t * buffer, uint32_t byteSize)
256 bits->cur = bits->end - bits->byteSize ;
257 bits->bitIndex = 0 ;