private static void FSE_encodeSymbol(BIT_CStream_t *bitC, FSE_CState_t *statePtr, uint symbol) { FSE_symbolCompressionTransform symbolTT = ((FSE_symbolCompressionTransform *)(statePtr->symbolTT))[symbol]; ushort *stateTable = (ushort *)(statePtr->stateTable); uint nbBitsOut = (uint)(((nuint)statePtr->value + symbolTT.deltaNbBits) >> 16); BIT_addBits(bitC, (nuint)statePtr->value, nbBitsOut); statePtr->value = (nint)(stateTable[(statePtr->value >> (int)nbBitsOut) + symbolTT.deltaFindState]); }
private static void FSE_initCState(FSE_CState_t *statePtr, uint *ct) { void * ptr = (void *)ct; ushort *u16ptr = (ushort *)(ptr); uint tableLog = MEM_read16(ptr); statePtr->value = (nint)(1) << (int)tableLog; statePtr->stateTable = u16ptr + 2; statePtr->symbolTT = ct + 1 + (tableLog != 0 ? (1 << (int)(tableLog - 1)) : 1); statePtr->stateLog = tableLog; }
private static void FSE_initCState2(FSE_CState_t *statePtr, uint *ct, uint symbol) { FSE_initCState(statePtr, ct); { FSE_symbolCompressionTransform symbolTT = ((FSE_symbolCompressionTransform *)(statePtr->symbolTT))[symbol]; ushort *stateTable = (ushort *)(statePtr->stateTable); uint nbBitsOut = (uint)((symbolTT.deltaNbBits + (uint)((1 << 15))) >> 16); statePtr->value = (nint)((nbBitsOut << 16) - symbolTT.deltaNbBits); statePtr->value = (nint)(stateTable[(statePtr->value >> (int)nbBitsOut) + symbolTT.deltaFindState]); } }
private static void FSE_flushCState(BIT_CStream_t *bitC, FSE_CState_t *statePtr) { BIT_addBits(bitC, (nuint)statePtr->value, statePtr->stateLog); BIT_flushBits(bitC); }