Lines Matching refs:bitD
783 MEM_STATIC size_t BITv06_initDStream(BITv06_DStream_t* bitD, const void* srcBuffer, size_t srcSize);
784 MEM_STATIC size_t BITv06_readBits(BITv06_DStream_t* bitD, unsigned nbBits);
785 MEM_STATIC BITv06_DStream_status BITv06_reloadDStream(BITv06_DStream_t* bitD);
786 MEM_STATIC unsigned BITv06_endOfDStream(const BITv06_DStream_t* bitD);
793 MEM_STATIC size_t BITv06_readBitsFast(BITv06_DStream_t* bitD, unsigned nbBits);
829 * `bitD` : a pointer to an already allocated BITv06_DStream_t structure.
833 MEM_STATIC size_t BITv06_initDStream(BITv06_DStream_t* bitD, const void* srcBuffer, size_t srcSize)
835 if (srcSize < 1) { memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); }
837 if (srcSize >= sizeof(bitD->bitContainer)) { /* normal case */
838 bitD->start = (const char*)srcBuffer;
839 bitD->ptr = (const char*)srcBuffer + srcSize - sizeof(bitD->bitContainer);
840 bitD->bitContainer = MEM_readLEST(bitD->ptr);
843 bitD->bitsConsumed = 8 - BITv06_highbit32(lastByte); }
845 bitD->start = (const char*)srcBuffer;
846 bitD->ptr = bitD->start;
847 bitD->bitContainer = *(const BYTE*)(bitD->start);
850 case 7: bitDbitD->bitContainer)*8 - 16);/* fall-through */
851 case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24);/* fall-through */
852 case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32);/* fall-through */
853 case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24; /* fall-through */
854 case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16; /* fall-through */
855 case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8; /* fall-through */
860 bitD->bitsConsumed = 8 - BITv06_highbit32(lastByte); }
861 bitD->bitsConsumed += (U32)(sizeof(bitD->bitContainer) - srcSize)*8;
868 MEM_STATIC size_t BITv06_lookBits(const BITv06_DStream_t* bitD, U32 nbBits)
870 U32 const bitMask = sizeof(bitD->bitContainer)*8 - 1;
871 return ((bitD->bitContainer << (bitD->bitsConsumed & bitMask)) >> 1) >> ((bitMask-nbBits) & bitMask);
876 MEM_STATIC size_t BITv06_lookBitsFast(const BITv06_DStream_t* bitD, U32 nbBits)
878 U32 const bitMask = sizeof(bitD->bitContainer)*8 - 1;
879 return (bitD->bitContainer << (bitD->bitsConsumed & bitMask)) >> (((bitMask+1)-nbBits) & bitMask);
882 MEM_STATIC void BITv06_skipBits(BITv06_DStream_t* bitD, U32 nbBits)
884 bitD->bitsConsumed += nbBits;
887 MEM_STATIC size_t BITv06_readBits(BITv06_DStream_t* bitD, U32 nbBits)
889 size_t const value = BITv06_lookBits(bitD, nbBits);
890 BITv06_skipBits(bitD, nbBits);
896 MEM_STATIC size_t BITv06_readBitsFast(BITv06_DStream_t* bitD, U32 nbBits)
898 size_t const value = BITv06_lookBitsFast(bitD, nbBits);
899 BITv06_skipBits(bitD, nbBits);
903 MEM_STATIC BITv06_DStream_status BITv06_reloadDStream(BITv06_DStream_t* bitD)
905 if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* should never happen */
908 if (bitD->ptr >= bitD->start + sizeof(bitD->bitContainer)) {
909 bitD->ptr -= bitD->bitsConsumed >> 3;
910 bitD->bitsConsumed &= 7;
911 bitD->bitContainer = MEM_readLEST(bitD->ptr);
914 if (bitD->ptr == bitD->start) {
915 if (bitD->bitsConsumed < sizeof(bitD->bitContainer)*8) return BITv06_DStream_endOfBuffer;
918 { U32 nbBytes = bitD->bitsConsumed >> 3;
920 if (bitD->ptr - nbBytes < bitD->start) {
921 nbBytes = (U32)(bitD->ptr - bitD->start); /* ptr > start */
924 bitD->ptr -= nbBytes;
925 bitD->bitsConsumed -= nbBytes*8;
926 bitD->bitContainer = MEM_readLEST(bitD->ptr); /* reminder : srcSize > sizeof(bitD) */
1021 static void FSEv06_initDState(FSEv06_DState_t* DStatePtr, BITv06_DStream_t* bitD, const FSEv06_DTable* dt);
1023 static unsigned char FSEv06_decodeSymbol(FSEv06_DState_t* DStatePtr, BITv06_DStream_t* bitD);
1029 static unsigned char FSEv06_decodeSymbolFast(FSEv06_DState_t* DStatePtr, BITv06_DStream_t* bitD);
1052 MEM_STATIC void FSEv06_initDState(FSEv06_DState_t* DStatePtr, BITv06_DStream_t* bitD, const FSEv06_DTable* dt)
1056 DStatePtr->state = BITv06_readBits(bitD, DTableH->tableLog);
1057 BITv06_reloadDStream(bitD);
1067 MEM_STATIC void FSEv06_updateState(FSEv06_DState_t* DStatePtr, BITv06_DStream_t* bitD)
1071 size_t const lowBits = BITv06_readBits(bitD, nbBits);
1075 MEM_STATIC BYTE FSEv06_decodeSymbol(FSEv06_DState_t* DStatePtr, BITv06_DStream_t* bitD)
1080 size_t const lowBits = BITv06_readBits(bitD, nbBits);
1088 MEM_STATIC BYTE FSEv06_decodeSymbolFast(FSEv06_DState_t* DStatePtr, BITv06_DStream_t* bitD)
1093 size_t const lowBits = BITv06_readBitsFast(bitD, nbBits);
1521 BITv06_DStream_t bitD;
1526 { size_t const errorCode = BITv06_initDStream(&bitD, cSrc, cSrcSize); /* replaced last arg by maxCompressed Size */
1529 FSEv06_initDState(&state1, &bitD, dt);
1530 FSEv06_initDState(&state2, &bitD, dt);
1532 #define FSEv06_GETSYMBOL(statePtr) fast ? FSEv06_decodeSymbolFast(statePtr, &bitD) : FSEv06_decodeSymbol(statePtr, &bitD)
1535 for ( ; (BITv06_reloadDStream(&bitD)==BITv06_DStream_unfinished) && (op<olimit) ; op+=4) {
1538 if (FSEv06_MAX_TABLELOG*2+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
1539 BITv06_reloadDStream(&bitD);
1543 if (FSEv06_MAX_TABLELOG*4+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
1544 { if (BITv06_reloadDStream(&bitD) > BITv06_DStream_unfinished) { op+=2; break; } }
1548 if (FSEv06_MAX_TABLELOG*2+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
1549 BITv06_reloadDStream(&bitD);
1555 /* note : BITv06_reloadDStream(&bitD) >= FSEv06_DStream_partiallyFilled; Ends at exactly BITv06_DStream_completed */
1561 if (BITv06_reloadDStream(&bitD)==BITv06_DStream_overflow) {
1570 if (BITv06_reloadDStream(&bitD)==BITv06_DStream_overflow) {
2046 BITv06_DStream_t bitD;
2048 { size_t const errorCode = BITv06_initDStream(&bitD, cSrc, cSrcSize);
2051 HUFv06_decodeStreamX2(op, &bitD, oend, dt, dtLog);
2054 if (!BITv06_endOfDStream(&bitD)) return ERROR(corruption_detected);
2422 BITv06_DStream_t bitD;
2423 { size_t const errorCode = BITv06_initDStream(&bitD, istart, cSrcSize);
2427 HUFv06_decodeStreamX4(ostart, &bitD, oend, dt, dtLog);
2430 if (!BITv06_endOfDStream(&bitD)) return ERROR(corruption_detected);