#include "LzmaDecode.h"Go to the source code of this file.
Defines | |
| #define | Byte unsigned char |
| #define | kNumTopBits 24 |
| #define | kTopValue ((UInt32)1 << kNumTopBits) |
| #define | kNumBitModelTotalBits 11 |
| #define | kBitModelTotal (1 << kNumBitModelTotalBits) |
| #define | kNumMoveBits 5 |
| #define | RC_READ_BYTE (*Buffer++) |
| #define | RC_INIT2 |
| #define | RC_TEST |
| #define | RC_INIT Buffer = BufferLim = 0; RC_INIT2 |
| #define | RC_NORMALIZE if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; } |
| #define | IfBit0(p) RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound) |
| #define | UpdateBit0(p) Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits; |
| #define | UpdateBit1(p) Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits; |
| #define | RC_GET_BIT2(p, mi, A0, A1) |
| #define | RC_GET_BIT(p, mi) RC_GET_BIT2(p, mi, ; , ;) |
| #define | RangeDecoderBitTreeDecode(probs, numLevels, res) |
| #define | kNumPosBitsMax 4 |
| #define | kNumPosStatesMax (1 << kNumPosBitsMax) |
| #define | kLenNumLowBits 3 |
| #define | kLenNumLowSymbols (1 << kLenNumLowBits) |
| #define | kLenNumMidBits 3 |
| #define | kLenNumMidSymbols (1 << kLenNumMidBits) |
| #define | kLenNumHighBits 8 |
| #define | kLenNumHighSymbols (1 << kLenNumHighBits) |
| #define | LenChoice 0 |
| #define | LenChoice2 (LenChoice + 1) |
| #define | LenLow (LenChoice2 + 1) |
| #define | LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits)) |
| #define | LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits)) |
| #define | kNumLenProbs (LenHigh + kLenNumHighSymbols) |
| #define | kNumStates 12 |
| #define | kNumLitStates 7 |
| #define | kStartPosModelIndex 4 |
| #define | kEndPosModelIndex 14 |
| #define | kNumFullDistances (1 << (kEndPosModelIndex >> 1)) |
| #define | kNumPosSlotBits 6 |
| #define | kNumLenToPosStates 4 |
| #define | kNumAlignBits 4 |
| #define | kAlignTableSize (1 << kNumAlignBits) |
| #define | kMatchMinLen 2 |
| #define | IsMatch 0 |
| #define | IsRep (IsMatch + (kNumStates << kNumPosBitsMax)) |
| #define | IsRepG0 (IsRep + kNumStates) |
| #define | IsRepG1 (IsRepG0 + kNumStates) |
| #define | IsRepG2 (IsRepG1 + kNumStates) |
| #define | IsRep0Long (IsRepG2 + kNumStates) |
| #define | PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax)) |
| #define | SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) |
| #define | Align (SpecPos + kNumFullDistances - kEndPosModelIndex) |
| #define | LenCoder (Align + kAlignTableSize) |
| #define | RepLenCoder (LenCoder + kNumLenProbs) |
| #define | Literal (RepLenCoder + kNumLenProbs) |
| #define | kLzmaStreamWasFinishedId (-1) |
Functions | |
| int | LzmaDecodeProperties (CLzmaProperties *propsRes, const unsigned char *propsData, int size) |
| int | LzmaDecode (CLzmaDecoderState *vs, ILzmaInCallback *InCallback, unsigned char *outStream, unsigned int outSize, unsigned int *outSizeProcessed) |
| #define Align (SpecPos + kNumFullDistances - kEndPosModelIndex) |
| #define Byte unsigned char |
| #define IfBit0 | ( | p | ) | RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound) |
| #define IsMatch 0 |
| #define IsRep (IsMatch + (kNumStates << kNumPosBitsMax)) |
| #define IsRep0Long (IsRepG2 + kNumStates) |
| #define IsRepG0 (IsRep + kNumStates) |
| #define IsRepG1 (IsRepG0 + kNumStates) |
| #define IsRepG2 (IsRepG1 + kNumStates) |
| #define kAlignTableSize (1 << kNumAlignBits) |
Definition at line 103 of file LzmaDecode.c.
| #define kBitModelTotal (1 << kNumBitModelTotalBits) |
| #define kEndPosModelIndex 14 |
| #define kLenNumHighBits 8 |
| #define kLenNumHighSymbols (1 << kLenNumHighBits) |
Definition at line 82 of file LzmaDecode.c.
| #define kLenNumLowBits 3 |
| #define kLenNumLowSymbols (1 << kLenNumLowBits) |
| #define kLenNumMidBits 3 |
| #define kLenNumMidSymbols (1 << kLenNumMidBits) |
| #define kLzmaStreamWasFinishedId (-1) |
| #define kMatchMinLen 2 |
| #define kNumAlignBits 4 |
| #define kNumBitModelTotalBits 11 |
Definition at line 31 of file LzmaDecode.c.
| #define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) |
Definition at line 97 of file LzmaDecode.c.
| #define kNumLenProbs (LenHigh + kLenNumHighSymbols) |
Definition at line 89 of file LzmaDecode.c.
| #define kNumLenToPosStates 4 |
| #define kNumLitStates 7 |
| #define kNumMoveBits 5 |
Definition at line 33 of file LzmaDecode.c.
| #define kNumPosBitsMax 4 |
| #define kNumPosSlotBits 6 |
| #define kNumPosStatesMax (1 << kNumPosBitsMax) |
Definition at line 75 of file LzmaDecode.c.
| #define kNumStates 12 |
Definition at line 92 of file LzmaDecode.c.
| #define kNumTopBits 24 |
Definition at line 28 of file LzmaDecode.c.
| #define kStartPosModelIndex 4 |
| #define kTopValue ((UInt32)1 << kNumTopBits) |
Definition at line 29 of file LzmaDecode.c.
| #define LenChoice 0 |
| #define LenChoice2 (LenChoice + 1) |
| #define LenCoder (Align + kAlignTableSize) |
| #define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits)) |
| #define LenLow (LenChoice2 + 1) |
| #define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits)) |
| #define Literal (RepLenCoder + kNumLenProbs) |
| #define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax)) |
| #define RangeDecoderBitTreeDecode | ( | probs, | |||
| numLevels, | |||||
| res | ) |
Value:
{ int i = numLevels; res = 1; \
do { CProb *p = probs + res; RC_GET_BIT(p, res) } while(--i != 0); \
res -= (1 << numLevels); }
Definition at line 68 of file LzmaDecode.c.
Referenced by LzmaDecode().
| #define RC_GET_BIT | ( | p, | |||
| mi | ) | RC_GET_BIT2(p, mi, ; , ;) |
| #define RC_GET_BIT2 | ( | p, | |||
| mi, | |||||
| A0, | |||||
| A1 | ) |
Value:
IfBit0(p) \ { UpdateBit0(p); mi <<= 1; A0; } else \ { UpdateBit1(p); mi = (mi + mi) + 1; A1; }
Definition at line 62 of file LzmaDecode.c.
Referenced by LzmaDecode().
| #define RC_INIT Buffer = BufferLim = 0; RC_INIT2 |
| #define RC_INIT2 |
Value:
Code = 0; Range = 0xFFFFFFFF; \
{ int i; for(i = 0; i < 5; i++) { RC_TEST; Code = (Code << 8) | RC_READ_BYTE; }}
Definition at line 37 of file LzmaDecode.c.
| #define RC_NORMALIZE if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; } |
| #define RC_READ_BYTE (*Buffer++) |
Definition at line 35 of file LzmaDecode.c.
| #define RC_TEST |
Value:
{ if (Buffer == BufferLim) \
{ SizeT size; int result = InCallback->Read(InCallback, &Buffer, &size); if (result != LZMA_RESULT_OK) return result; \
BufferLim = Buffer + size; if (size == 0) return LZMA_RESULT_DATA_ERROR; }}
Definition at line 42 of file LzmaDecode.c.
| #define RepLenCoder (LenCoder + kNumLenProbs) |
| #define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) |
| #define UpdateBit0 | ( | p | ) | Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits; |
| #define UpdateBit1 | ( | p | ) | Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits; |
| int LzmaDecode | ( | CLzmaDecoderState * | vs, | |
| ILzmaInCallback * | InCallback, | |||
| unsigned char * | outStream, | |||
| unsigned int | outSize, | |||
| unsigned int * | outSizeProcessed | |||
| ) |
Definition at line 159 of file LzmaDecode.c.
References _LZMA_OUT_READ, Align, _CLzmaDecoderState::Buffer, _CLzmaDecoderState::BufferLim, Byte, _CLzmaDecoderState::Code, CProb, _CLzmaDecoderState::Dictionary, _CLzmaDecoderState::DictionaryPos, _CLzmaProperties::DictionarySize, _CLzmaDecoderState::DistanceLimit, _CLzmaDecoderState::GlobalPos, IfBit0, IsMatch, IsRep, IsRep0Long, IsRepG0, IsRepG1, IsRepG2, kBitModelTotal, kEndPosModelIndex, kLenNumHighBits, kLenNumLowBits, kLenNumLowSymbols, kLenNumMidBits, kLenNumMidSymbols, kLzmaNeedInitId, kLzmaStreamWasFinishedId, kMatchMinLen, kNumAlignBits, kNumLenToPosStates, kNumLitStates, kNumPosBitsMax, kNumPosSlotBits, kStartPosModelIndex, _CLzmaProperties::lc, LenChoice, LenChoice2, LenCoder, LenHigh, LenLow, LenMid, Literal, _CLzmaProperties::lp, LZMA_LIT_SIZE, LZMA_RESULT_DATA_ERROR, LZMA_RESULT_OK, _CLzmaProperties::pb, PosSlot, _CLzmaDecoderState::Probs, _CLzmaDecoderState::Properties, _CLzmaDecoderState::Range, RangeDecoderBitTreeDecode, RC_GET_BIT, RC_GET_BIT2, RC_INIT, RC_NORMALIZE, _CLzmaDecoderState::RemainLen, RepLenCoder, _CLzmaDecoderState::Reps, SizeT, SpecPos, _CLzmaDecoderState::State, _CLzmaDecoderState::TempDictionary, UInt32, UpdateBit0, and UpdateBit1.
Referenced by lzdRead().
| int LzmaDecodeProperties | ( | CLzmaProperties * | propsRes, | |
| const unsigned char * | propsData, | |||
| int | size | |||
| ) |
Definition at line 124 of file LzmaDecode.c.
References _CLzmaProperties::DictionarySize, _CLzmaProperties::lc, _CLzmaProperties::lp, LZMA_PROPERTIES_SIZE, LZMA_RESULT_DATA_ERROR, LZMA_RESULT_OK, _CLzmaProperties::pb, and UInt32.
Referenced by lzdReadOpen().
1.5.1