Lines Matching refs:bitD
684 MEM_STATIC size_t BITv05_initDStream(BITv05_DStream_t* bitD, const void* srcBuffer, size_t srcSize);
685 MEM_STATIC size_t BITv05_readBits(BITv05_DStream_t* bitD, unsigned nbBits);
686 MEM_STATIC BITv05_DStream_status BITv05_reloadDStream(BITv05_DStream_t* bitD);
687 MEM_STATIC unsigned BITv05_endOfDStream(const BITv05_DStream_t* bitD);
693 MEM_STATIC size_t BITv05_readBitsFast(BITv05_DStream_t* bitD, unsigned nbBits);
729 * @bitD : a pointer to an already allocated BITv05_DStream_t structure
734 MEM_STATIC size_t BITv05_initDStream(BITv05_DStream_t* bitD, const void* srcBuffer, size_t srcSize)
736 if (srcSize < 1) { memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); }
740 bitD->start = (const char*)srcBuffer;
741 bitD->ptr = (const char*)srcBuffer + srcSize - sizeof(size_t);
742 bitD->bitContainer = MEM_readLEST(bitD->ptr);
745 bitD->bitsConsumed = 8 - BITv05_highbit32(contain32);
748 bitD->start = (const char*)srcBuffer;
749 bitD->ptr = bitD->start;
750 bitD->bitContainer = *(const BYTE*)(bitD->start);
753 case 7: bitD->bitContainer += (size_t)(((const BYTE*)(bitD->start))[6]) << (sizeof(size_t)*8 - 16);/* fall-through */
754 case 6: bitD->bitContainer += (size_t)(((const BYTE*)(bitD->start))[5]) << (sizeof(size_t)*8 - 24);/* fall-through */
755 case 5: bitD->bitContainer += (size_t)(((const BYTE*)(bitD->start))[4]) << (sizeof(size_t)*8 - 32);/* fall-through */
756 case 4: bitD->bitContainer += (size_t)(((const BYTE*)(bitD->start))[3]) << 24; /* fall-through */
757 case 3: bitD->bitContainer += (size_t)(((const BYTE*)(bitD->start))[2]) << 16; /* fall-through */
758 case 2: bitD->bitContainer += (size_t)(((const BYTE*)(bitD->start))[1]) << 8; /* fall-through */
763 bitD->bitsConsumed = 8 - BITv05_highbit32(contain32);
764 bitD->bitsConsumed += (U32)(sizeof(size_t) - srcSize)*8;
770 MEM_STATIC size_t BITv05_lookBits(BITv05_DStream_t* bitD, U32 nbBits)
772 const U32 bitMask = sizeof(bitD->bitContainer)*8 - 1;
773 return ((bitD->bitContainer << (bitD->bitsConsumed & bitMask)) >> 1) >> ((bitMask-nbBits) & bitMask);
778 MEM_STATIC size_t BITv05_lookBitsFast(BITv05_DStream_t* bitD, U32 nbBits)
780 const U32 bitMask = sizeof(bitD->bitContainer)*8 - 1;
781 return (bitD->bitContainer << (bitD->bitsConsumed & bitMask)) >> (((bitMask+1)-nbBits) & bitMask);
784 MEM_STATIC void BITv05_skipBits(BITv05_DStream_t* bitD, U32 nbBits)
786 bitD->bitsConsumed += nbBits;
789 MEM_STATIC size_t BITv05_readBits(BITv05_DStream_t* bitD, unsigned nbBits)
791 size_t value = BITv05_lookBits(bitD, nbBits);
792 BITv05_skipBits(bitD, nbBits);
798 MEM_STATIC size_t BITv05_readBitsFast(BITv05_DStream_t* bitD, unsigned nbBits)
800 size_t value = BITv05_lookBitsFast(bitD, nbBits);
801 BITv05_skipBits(bitD, nbBits);
805 MEM_STATIC BITv05_DStream_status BITv05_reloadDStream(BITv05_DStream_t* bitD)
807 if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* should never happen */
810 if (bitD->ptr >= bitD->start + sizeof(bitD->bitContainer)) {
811 bitD->ptr -= bitD->bitsConsumed >> 3;
812 bitD->bitsConsumed &= 7;
813 bitD->bitContainer = MEM_readLEST(bitD->ptr);
816 if (bitD->ptr == bitD->start) {
817 if (bitD->bitsConsumed < sizeof(bitD->bitContainer)*8) return BITv05_DStream_endOfBuffer;
821 U32 nbBytes = bitD->bitsConsumed >> 3;
823 if (bitD->ptr - nbBytes < bitD->start) {
824 nbBytes = (U32)(bitD->ptr - bitD->start); /* ptr > start */
827 bitD->ptr -= nbBytes;
828 bitD->bitsConsumed -= nbBytes*8;
829 bitD->bitContainer = MEM_readLEST(bitD->ptr); /* reminder : srcSize > sizeof(bitD) */
918 static void FSEv05_initDState(FSEv05_DState_t* DStatePtr, BITv05_DStream_t* bitD, const FSEv05_DTable* dt);
920 static unsigned char FSEv05_decodeSymbol(FSEv05_DState_t* DStatePtr, BITv05_DStream_t* bitD);
929 static unsigned char FSEv05_decodeSymbolFast(FSEv05_DState_t* DStatePtr, BITv05_DStream_t* bitD);
950 MEM_STATIC void FSEv05_initDState(FSEv05_DState_t* DStatePtr, BITv05_DStream_t* bitD, const FSEv05_DTable* dt)
954 DStatePtr->state = BITv05_readBits(bitD, DTableH->tableLog);
955 BITv05_reloadDStream(bitD);
965 MEM_STATIC BYTE FSEv05_decodeSymbol(FSEv05_DState_t* DStatePtr, BITv05_DStream_t* bitD)
970 size_t lowBits = BITv05_readBits(bitD, nbBits);
976 MEM_STATIC BYTE FSEv05_decodeSymbolFast(FSEv05_DState_t* DStatePtr, BITv05_DStream_t* bitD)
981 size_t lowBits = BITv05_readBitsFast(bitD, nbBits);
1382 BITv05_DStream_t bitD;
1388 errorCode = BITv05_initDStream(&bitD, cSrc, cSrcSize); /* replaced last arg by maxCompressed Size */
1391 FSEv05_initDState(&state1, &bitD, dt);
1392 FSEv05_initDState(&state2, &bitD, dt);
1394 #define FSEv05_GETSYMBOL(statePtr) fast ? FSEv05_decodeSymbolFast(statePtr, &bitD) : FSEv05_decodeSymbol(statePtr, &bitD)
1397 for ( ; (BITv05_reloadDStream(&bitD)==BITv05_DStream_unfinished) && (op<olimit) ; op+=4) {
1400 if (FSEv05_MAX_TABLELOG*2+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
1401 BITv05_reloadDStream(&bitD);
1405 if (FSEv05_MAX_TABLELOG*4+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
1406 { if (BITv05_reloadDStream(&bitD) > BITv05_DStream_unfinished) { op+=2; break; } }
1410 if (FSEv05_MAX_TABLELOG*2+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
1411 BITv05_reloadDStream(&bitD);
1417 /* note : BITv05_reloadDStream(&bitD) >= FSEv05_DStream_partiallyFilled; Ends at exactly BITv05_DStream_completed */
1419 if ( (BITv05_reloadDStream(&bitD)>BITv05_DStream_completed) || (op==omax) || (BITv05_endOfDStream(&bitD) && (fast || FSEv05_endOfDState(&state1))) )
1424 if ( (BITv05_reloadDStream(&bitD)>BITv05_DStream_completed) || (op==omax) || (BITv05_endOfDStream(&bitD) && (fast || FSEv05_endOfDState(&state2))) )
1431 if (BITv05_endOfDStream(&bitD) && FSEv05_endOfDState(&state1) && FSEv05_endOfDState(&state2))
1914 BITv05_DStream_t bitD;
1917 { size_t const errorCode = BITv05_initDStream(&bitD, cSrc, cSrcSize);
1920 HUFv05_decodeStreamX2(op, &bitD, oend, dt, dtLog);
1923 if (!BITv05_endOfDStream(&bitD)) return ERROR(corruption_detected);
2298 BITv05_DStream_t bitD;
2299 errorCode = BITv05_initDStream(&bitD, istart, cSrcSize);
2303 HUFv05_decodeStreamX4(ostart, &bitD, oend, dt, dtLog);
2306 if (!BITv05_endOfDStream(&bitD)) return ERROR(corruption_detected);