Lines Matching defs:bitD
85 * `dstCapacity` must be >= sizeof(bitD->bitContainer), otherwise @return will be an error code.
118 ZSTD_STATIC size_t BIT_initDStream(BIT_DStream_t *bitD, const void *srcBuffer, size_t srcSize);
119 ZSTD_STATIC size_t BIT_readBits(BIT_DStream_t *bitD, unsigned nbBits);
120 ZSTD_STATIC BIT_DStream_status BIT_reloadDStream(BIT_DStream_t *bitD);
121 ZSTD_STATIC unsigned BIT_endOfDStream(const BIT_DStream_t *bitD);
128 * A reload guarantee a minimum of ((8*sizeof(bitD->bitContainer))-7) bits when its result is BIT_DStream_unfinished.
142 ZSTD_STATIC size_t BIT_readBitsFast(BIT_DStream_t *bitD, unsigned nbBits);
235 * `bitD` : a pointer to an already allocated BIT_DStream_t structure.
239 ZSTD_STATIC size_t BIT_initDStream(BIT_DStream_t *bitD, const void *srcBuffer, size_t srcSize)
242 memset(bitD, 0, sizeof(*bitD));
246 if (srcSize >= sizeof(bitD->bitContainer)) { /* normal case */
247 bitD->start = (const char *)srcBuffer;
248 bitD->ptr = (const char *)srcBuffer + srcSize - sizeof(bitD->bitContainer);
249 bitD->bitContainer = ZSTD_readLEST(bitD->ptr);
252 bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; /* ensures bitsConsumed is always set */
257 bitD->start = (const char *)srcBuffer;
258 bitD->ptr = bitD->start;
259 bitD->bitContainer = *(const BYTE *)(bitD->start);
261 case 7: bitD->bitContainer += (size_t)(((const BYTE *)(srcBuffer))[6]) << (sizeof(bitD->bitContainer) * 8 - 16);
263 case 6: bitD->bitContainer += (size_t)(((const BYTE *)(srcBuffer))[5]) << (sizeof(bitD->bitContainer) * 8 - 24);
265 case 5: bitD->bitContainer += (size_t)(((const BYTE *)(srcBuffer))[4]) << (sizeof(bitD->bitContainer) * 8 - 32);
267 case 4: bitD->bitContainer += (size_t)(((const BYTE *)(srcBuffer))[3]) << 24;
269 case 3: bitD->bitContainer += (size_t)(((const BYTE *)(srcBuffer))[2]) << 16;
271 case 2: bitD->bitContainer += (size_t)(((const BYTE *)(srcBuffer))[1]) << 8;
276 bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0;
280 bitD->bitsConsumed += (U32)(sizeof(bitD->bitContainer) - srcSize) * 8;
299 ZSTD_STATIC size_t BIT_lookBits(const BIT_DStream_t *bitD, U32 nbBits)
301 U32 const bitMask = sizeof(bitD->bitContainer) * 8 - 1;
302 return ((bitD->bitContainer << (bitD->bitsConsumed & bitMask)) >> 1) >> ((bitMask - nbBits) & bitMask);
307 ZSTD_STATIC size_t BIT_lookBitsFast(const BIT_DStream_t *bitD, U32 nbBits)
309 U32 const bitMask = sizeof(bitD->bitContainer) * 8 - 1;
310 return (bitD->bitContainer << (bitD->bitsConsumed & bitMask)) >> (((bitMask + 1) - nbBits) & bitMask);
313 ZSTD_STATIC void BIT_skipBits(BIT_DStream_t *bitD, U32 nbBits) { bitD->bitsConsumed += nbBits; }
320 ZSTD_STATIC size_t BIT_readBits(BIT_DStream_t *bitD, U32 nbBits)
322 size_t const value = BIT_lookBits(bitD, nbBits);
323 BIT_skipBits(bitD, nbBits);
329 ZSTD_STATIC size_t BIT_readBitsFast(BIT_DStream_t *bitD, U32 nbBits)
331 size_t const value = BIT_lookBitsFast(bitD, nbBits);
332 BIT_skipBits(bitD, nbBits);
337 * Refill `bitD` from buffer previously set in BIT_initDStream() .
340 if status == BIT_DStream_unfinished, internal register is filled with >= (sizeof(bitD->bitContainer)*8 - 7) bits */
341 ZSTD_STATIC BIT_DStream_status BIT_reloadDStream(BIT_DStream_t *bitD)
343 if (bitD->bitsConsumed > (sizeof(bitD->bitContainer) * 8)) /* should not happen => corruption detected */
346 if (bitD->ptr >= bitD->start + sizeof(bitD->bitContainer)) {
347 bitD->ptr -= bitD->bitsConsumed >> 3;
348 bitD->bitsConsumed &= 7;
349 bitD->bitContainer = ZSTD_readLEST(bitD->ptr);
352 if (bitD->ptr == bitD->start) {
353 if (bitD->bitsConsumed < sizeof(bitD->bitContainer) * 8)
358 U32 nbBytes = bitD->bitsConsumed >> 3;
360 if (bitD->ptr - nbBytes < bitD->start) {
361 nbBytes = (U32)(bitD->ptr - bitD->start); /* ptr > start */
364 bitD->ptr -= nbBytes;
365 bitD->bitsConsumed -= nbBytes * 8;
366 bitD->bitContainer = ZSTD_readLEST(bitD->ptr); /* reminder : srcSize > sizeof(bitD) */