#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().