Lines Matching refs:bitD
454 MEM_STATIC size_t BITv07_initDStream(BITv07_DStream_t* bitD, const void* srcBuffer, size_t srcSize);
455 MEM_STATIC size_t BITv07_readBits(BITv07_DStream_t* bitD, unsigned nbBits);
456 MEM_STATIC BITv07_DStream_status BITv07_reloadDStream(BITv07_DStream_t* bitD);
457 MEM_STATIC unsigned BITv07_endOfDStream(const BITv07_DStream_t* bitD);
464 MEM_STATIC size_t BITv07_readBitsFast(BITv07_DStream_t* bitD, unsigned nbBits);
498 * `bitD` : a pointer to an already allocated BITv07_DStream_t structure.
502 MEM_STATIC size_t BITv07_initDStream(BITv07_DStream_t* bitD, const void* srcBuffer, size_t srcSize)
504 if (srcSize < 1) { memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); }
506 if (srcSize >= sizeof(bitD->bitContainer)) { /* normal case */
507 bitD->start = (const char*)srcBuffer;
508 bitD->ptr = (const char*)srcBuffer + srcSize - sizeof(bitD->bitContainer);
509 bitD->bitContainer = MEM_readLEST(bitD->ptr);
511 bitD->bitsConsumed = lastByte ? 8 - BITv07_highbit32(lastByte) : 0;
514 bitD->start = (const char*)srcBuffer;
515 bitD->ptr = bitD->start;
516 bitD->bitContainer = *(const BYTE*)(bitD->start);
519 case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16);/* fall-through */
520 case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24);/* fall-through */
521 case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32);/* fall-through */
522 case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24; /* fall-through */
523 case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16; /* fall-through */
524 case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8; /* fall-through */
528 bitD->bitsConsumed = lastByte ? 8 - BITv07_highbit32(lastByte) : 0;
530 bitD->bitsConsumed += (U32)(sizeof(bitD->bitContainer) - srcSize)*8;
537 MEM_STATIC size_t BITv07_lookBits(const BITv07_DStream_t* bitD, U32 nbBits)
539 U32 const bitMask = sizeof(bitD->bitContainer)*8 - 1;
540 return ((bitD->bitContainer << (bitD->bitsConsumed & bitMask)) >> 1) >> ((bitMask-nbBits) & bitMask);
545 MEM_STATIC size_t BITv07_lookBitsFast(const BITv07_DStream_t* bitD, U32 nbBits)
547 U32 const bitMask = sizeof(bitD->bitContainer)*8 - 1;
548 return (bitD->bitContainer << (bitD->bitsConsumed & bitMask)) >> (((bitMask+1)-nbBits) & bitMask);
551 MEM_STATIC void BITv07_skipBits(BITv07_DStream_t* bitD, U32 nbBits)
553 bitD->bitsConsumed += nbBits;
556 MEM_STATIC size_t BITv07_readBits(BITv07_DStream_t* bitD, U32 nbBits)
558 size_t const value = BITv07_lookBits(bitD, nbBits);
559 BITv07_skipBits(bitD, nbBits);
565 MEM_STATIC size_t BITv07_readBitsFast(BITv07_DStream_t* bitD, U32 nbBits)
567 size_t const value = BITv07_lookBitsFast(bitD, nbBits);
568 BITv07_skipBits(bitD, nbBits);
572 MEM_STATIC BITv07_DStream_status BITv07_reloadDStream(BITv07_DStream_t* bitD)
574 if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* should not happen => corruption detected */
577 if (bitD->ptr >= bitD->start + sizeof(bitD->bitContainer)) {
578 bitD->ptr -= bitD->bitsConsumed >> 3;
579 bitD->bitsConsumed &= 7;
580 bitD->bitContainer = MEM_readLEST(bitD->ptr);
583 if (bitD->ptr == bitD->start) {
584 if (bitD->bitsConsumed < sizeof(bitD->bitContainer)*8) return BITv07_DStream_endOfBuffer;
587 { U32 nbBytes = bitD->bitsConsumed >> 3;
589 if (bitD->ptr - nbBytes < bitD->start) {
590 nbBytes = (U32)(bitD->ptr - bitD->start); /* ptr > start */
593 bitD->ptr -= nbBytes;
594 bitD->bitsConsumed -= nbBytes*8;
595 bitD->bitContainer = MEM_readLEST(bitD->ptr); /* reminder : srcSize > sizeof(bitD) */
790 static void FSEv07_initDState(FSEv07_DState_t* DStatePtr, BITv07_DStream_t* bitD, const FSEv07_DTable* dt);
792 static unsigned char FSEv07_decodeSymbol(FSEv07_DState_t* DStatePtr, BITv07_DStream_t* bitD);
799 static unsigned char FSEv07_decodeSymbolFast(FSEv07_DState_t* DStatePtr, BITv07_DStream_t* bitD);
817 MEM_STATIC void FSEv07_initDState(FSEv07_DState_t* DStatePtr, BITv07_DStream_t* bitD, const FSEv07_DTable* dt)
821 DStatePtr->state = BITv07_readBits(bitD, DTableH->tableLog);
822 BITv07_reloadDStream(bitD);
832 MEM_STATIC void FSEv07_updateState(FSEv07_DState_t* DStatePtr, BITv07_DStream_t* bitD)
836 size_t const lowBits = BITv07_readBits(bitD, nbBits);
840 MEM_STATIC BYTE FSEv07_decodeSymbol(FSEv07_DState_t* DStatePtr, BITv07_DStream_t* bitD)
845 size_t const lowBits = BITv07_readBits(bitD, nbBits);
853 MEM_STATIC BYTE FSEv07_decodeSymbolFast(FSEv07_DState_t* DStatePtr, BITv07_DStream_t* bitD)
858 size_t const lowBits = BITv07_readBitsFast(bitD, nbBits);
1542 BITv07_DStream_t bitD;
1547 { size_t const errorCode = BITv07_initDStream(&bitD, cSrc, cSrcSize); /* replaced last arg by maxCompressed Size */
1550 FSEv07_initDState(&state1, &bitD, dt);
1551 FSEv07_initDState(&state2, &bitD, dt);
1553 #define FSEv07_GETSYMBOL(statePtr) fast ? FSEv07_decodeSymbolFast(statePtr, &bitD) : FSEv07_decodeSymbol(statePtr, &bitD)
1556 for ( ; (BITv07_reloadDStream(&bitD)==BITv07_DStream_unfinished) && (op<olimit) ; op+=4) {
1559 if (FSEv07_MAX_TABLELOG*2+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
1560 BITv07_reloadDStream(&bitD);
1564 if (FSEv07_MAX_TABLELOG*4+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
1565 { if (BITv07_reloadDStream(&bitD) > BITv07_DStream_unfinished) { op+=2; break; } }
1569 if (FSEv07_MAX_TABLELOG*2+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
1570 BITv07_reloadDStream(&bitD);
1576 /* note : BITv07_reloadDStream(&bitD) >= FSEv07_DStream_partiallyFilled; Ends at exactly BITv07_DStream_completed */
1582 if (BITv07_reloadDStream(&bitD)==BITv07_DStream_overflow) {
1591 if (BITv07_reloadDStream(&bitD)==BITv07_DStream_overflow) {
1821 BITv07_DStream_t bitD;
1825 { size_t const errorCode = BITv07_initDStream(&bitD, cSrc, cSrcSize);
1828 HUFv07_decodeStreamX2(op, &bitD, oend, dt, dtLog);
1831 if (!BITv07_endOfDStream(&bitD)) return ERROR(corruption_detected);
2225 BITv07_DStream_t bitD;
2228 { size_t const errorCode = BITv07_initDStream(&bitD, cSrc, cSrcSize);
2238 HUFv07_decodeStreamX4(ostart, &bitD, oend, dt, dtd.tableLog);
2242 if (!BITv07_endOfDStream(&bitD)) return ERROR(corruption_detected);