private static void FSE_updateState(FSE_DState_t *DStatePtr, BIT_DStream_t *bitD) { FSE_decode_t DInfo = ((FSE_decode_t *)(DStatePtr->table))[DStatePtr->state]; uint nbBits = DInfo.nbBits; nuint lowBits = BIT_readBits(bitD, nbBits); DStatePtr->state = DInfo.newState + lowBits; }
private static void FSE_initDState(FSE_DState_t *DStatePtr, BIT_DStream_t *bitD, uint *dt) { void * ptr = (void *)dt; FSE_DTableHeader *DTableH = (FSE_DTableHeader *)(ptr); DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); BIT_reloadDStream(bitD); DStatePtr->table = dt + 1; }
private static byte FSE_decodeSymbolFast(FSE_DState_t *DStatePtr, BIT_DStream_t *bitD) { FSE_decode_t DInfo = ((FSE_decode_t *)(DStatePtr->table))[DStatePtr->state]; uint nbBits = DInfo.nbBits; byte symbol = DInfo.symbol; nuint lowBits = BIT_readBitsFast(bitD, nbBits); DStatePtr->state = DInfo.newState + lowBits; return(symbol); }
private static uint FSE_endOfDState(FSE_DState_t *DStatePtr) { return((DStatePtr->state == 0) ? 1U : 0U); }
private static byte FSE_peekSymbol(FSE_DState_t *DStatePtr) { FSE_decode_t DInfo = ((FSE_decode_t *)(DStatePtr->table))[DStatePtr->state]; return(DInfo.symbol); }