coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
lzmadecode.c File Reference
#include "lzmadecode.h"
#include <types.h>
Include dependency graph for lzmadecode.c:

Go to the source code of this file.

Macros

#define kNumTopBits   24
 
#define kTopValue   ((UInt32)1 << kNumTopBits)
 
#define kNumBitModelTotalBits   11
 
#define kBitModelTotal   (1 << kNumBitModelTotalBits)
 
#define kNumMoveBits   5
 
#define RC_READ_BYTE
 
#define RC_INIT2
 
#define RC_TEST   { if (Buffer == BufferLim) return LZMA_RESULT_DATA_ERROR; }
 
#define RC_INIT(buffer, bufferSize)
 
#define RC_NORMALIZE
 
#define IfBit0(p)
 
#define UpdateBit0(p)
 
#define UpdateBit1(p)
 
#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, const unsigned char *inStream, SizeT inSize, SizeT *inSizeProcessed, unsigned char *outStream, SizeT outSize, SizeT *outSizeProcessed)
 

Macro Definition Documentation

◆ Align

#define Align   (SpecPos + kNumFullDistances - kEndPosModelIndex)

Definition at line 148 of file lzmadecode.c.

◆ IfBit0

#define IfBit0 (   p)
Value:
bound = (Range >> kNumBitModelTotalBits) * *(p); \
if (Code < bound)
#define RC_NORMALIZE
Definition: lzmadecode.c:60
#define kNumBitModelTotalBits
Definition: lzmadecode.c:28

Definition at line 67 of file lzmadecode.c.

◆ IsMatch

#define IsMatch   0

Definition at line 140 of file lzmadecode.c.

◆ IsRep

#define IsRep   (IsMatch + (kNumStates << kNumPosBitsMax))

Definition at line 141 of file lzmadecode.c.

◆ IsRep0Long

#define IsRep0Long   (IsRepG2 + kNumStates)

Definition at line 145 of file lzmadecode.c.

◆ IsRepG0

#define IsRepG0   (IsRep + kNumStates)

Definition at line 142 of file lzmadecode.c.

◆ IsRepG1

#define IsRepG1   (IsRepG0 + kNumStates)

Definition at line 143 of file lzmadecode.c.

◆ IsRepG2

#define IsRepG2   (IsRepG1 + kNumStates)

Definition at line 144 of file lzmadecode.c.

◆ kAlignTableSize

#define kAlignTableSize   (1 << kNumAlignBits)

Definition at line 136 of file lzmadecode.c.

◆ kBitModelTotal

#define kBitModelTotal   (1 << kNumBitModelTotalBits)

Definition at line 29 of file lzmadecode.c.

◆ kEndPosModelIndex

#define kEndPosModelIndex   14

Definition at line 129 of file lzmadecode.c.

◆ kLenNumHighBits

#define kLenNumHighBits   8

Definition at line 114 of file lzmadecode.c.

◆ kLenNumHighSymbols

#define kLenNumHighSymbols   (1 << kLenNumHighBits)

Definition at line 115 of file lzmadecode.c.

◆ kLenNumLowBits

#define kLenNumLowBits   3

Definition at line 110 of file lzmadecode.c.

◆ kLenNumLowSymbols

#define kLenNumLowSymbols   (1 << kLenNumLowBits)

Definition at line 111 of file lzmadecode.c.

◆ kLenNumMidBits

#define kLenNumMidBits   3

Definition at line 112 of file lzmadecode.c.

◆ kLenNumMidSymbols

#define kLenNumMidSymbols   (1 << kLenNumMidBits)

Definition at line 113 of file lzmadecode.c.

◆ kLzmaStreamWasFinishedId

#define kLzmaStreamWasFinishedId   (-1)

Definition at line 184 of file lzmadecode.c.

◆ kMatchMinLen

#define kMatchMinLen   2

Definition at line 138 of file lzmadecode.c.

◆ kNumAlignBits

#define kNumAlignBits   4

Definition at line 135 of file lzmadecode.c.

◆ kNumBitModelTotalBits

#define kNumBitModelTotalBits   11

Definition at line 28 of file lzmadecode.c.

◆ kNumFullDistances

#define kNumFullDistances   (1 << (kEndPosModelIndex >> 1))

Definition at line 130 of file lzmadecode.c.

◆ kNumLenProbs

#define kNumLenProbs   (LenHigh + kLenNumHighSymbols)

Definition at line 122 of file lzmadecode.c.

◆ kNumLenToPosStates

#define kNumLenToPosStates   4

Definition at line 133 of file lzmadecode.c.

◆ kNumLitStates

#define kNumLitStates   7

Definition at line 126 of file lzmadecode.c.

◆ kNumMoveBits

#define kNumMoveBits   5

Definition at line 30 of file lzmadecode.c.

◆ kNumPosBitsMax

#define kNumPosBitsMax   4

Definition at line 107 of file lzmadecode.c.

◆ kNumPosSlotBits

#define kNumPosSlotBits   6

Definition at line 132 of file lzmadecode.c.

◆ kNumPosStatesMax

#define kNumPosStatesMax   (1 << kNumPosBitsMax)

Definition at line 108 of file lzmadecode.c.

◆ kNumStates

#define kNumStates   12

Definition at line 125 of file lzmadecode.c.

◆ kNumTopBits

#define kNumTopBits   24

Definition at line 25 of file lzmadecode.c.

◆ kStartPosModelIndex

#define kStartPosModelIndex   4

Definition at line 128 of file lzmadecode.c.

◆ kTopValue

#define kTopValue   ((UInt32)1 << kNumTopBits)

Definition at line 26 of file lzmadecode.c.

◆ LenChoice

#define LenChoice   0

Definition at line 117 of file lzmadecode.c.

◆ LenChoice2

#define LenChoice2   (LenChoice + 1)

Definition at line 118 of file lzmadecode.c.

◆ LenCoder

#define LenCoder   (Align + kAlignTableSize)

Definition at line 149 of file lzmadecode.c.

◆ LenHigh

#define LenHigh   (LenMid + (kNumPosStatesMax << kLenNumMidBits))

Definition at line 121 of file lzmadecode.c.

◆ LenLow

#define LenLow   (LenChoice2 + 1)

Definition at line 119 of file lzmadecode.c.

◆ LenMid

#define LenMid   (LenLow + (kNumPosStatesMax << kLenNumLowBits))

Definition at line 120 of file lzmadecode.c.

◆ Literal

#define Literal   (RepLenCoder + kNumLenProbs)

Definition at line 151 of file lzmadecode.c.

◆ PosSlot

#define PosSlot   (IsRep0Long + (kNumStates << kNumPosBitsMax))

Definition at line 146 of file lzmadecode.c.

◆ RangeDecoderBitTreeDecode

#define RangeDecoderBitTreeDecode (   probs,
  numLevels,
  res 
)
Value:
{ \
int i = numLevels; \
\
res = 1; \
do { \
CProb *cp = probs + res; \
RC_GET_BIT(cp, res) \
} while (--i != 0); \
res -= (1 << numLevels); \
}

Definition at line 94 of file lzmadecode.c.

◆ RC_GET_BIT

#define RC_GET_BIT (   p,
  mi 
)    RC_GET_BIT2(p, mi, ;, ;)

Definition at line 92 of file lzmadecode.c.

◆ RC_GET_BIT2

#define RC_GET_BIT2 (   p,
  mi,
  A0,
  A1 
)
Value:
IfBit0(p) { \
UpdateBit0(p); \
mi <<= 1; \
A0; \
} else { \
UpdateBit1(p); \
mi = (mi + mi) + 1; \
A1; \
}
#define IfBit0(p)
Definition: lzmadecode.c:67

Definition at line 81 of file lzmadecode.c.

◆ RC_INIT

#define RC_INIT (   buffer,
  bufferSize 
)
Value:
Buffer = buffer; \
BufferLim = buffer + bufferSize; RC_INIT2
#define RC_INIT2
Definition: lzmadecode.c:43
u8 buffer[C2P_BUFFER_MAXSIZE]
Definition: psp_smm.c:18

Definition at line 56 of file lzmadecode.c.

◆ 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; \
} \
}
#define RC_READ_BYTE
Definition: lzmadecode.c:36

Definition at line 43 of file lzmadecode.c.

◆ RC_NORMALIZE

#define RC_NORMALIZE
Value:
if (Range < kTopValue) { \
RC_TEST; \
Range <<= 8; \
Code = (Code << 8) | RC_READ_BYTE; \
}
#define kTopValue
Definition: lzmadecode.c:26

Definition at line 60 of file lzmadecode.c.

◆ RC_READ_BYTE

#define RC_READ_BYTE
Value:
(look_ahead_ptr < 4 ? look_ahead.raw[look_ahead_ptr++] \
: ((((uintptr_t) Buffer & 3) \
|| ((SizeT) (BufferLim - Buffer) <= 4)) ? (*Buffer++) \
: ((look_ahead.dw = *(UInt32 *)Buffer), (Buffer += 4), \
(look_ahead_ptr = 1), look_ahead.raw[0])))
unsigned int UInt32
Definition: lzmadecode.h:27
UInt32 SizeT
Definition: lzmadecode.h:28
unsigned long uintptr_t
Definition: stdint.h:21

Definition at line 36 of file lzmadecode.c.

◆ RC_TEST

#define RC_TEST   { if (Buffer == BufferLim) return LZMA_RESULT_DATA_ERROR; }

Definition at line 54 of file lzmadecode.c.

◆ RepLenCoder

#define RepLenCoder   (LenCoder + kNumLenProbs)

Definition at line 150 of file lzmadecode.c.

◆ SpecPos

#define SpecPos   (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))

Definition at line 147 of file lzmadecode.c.

◆ UpdateBit0

#define UpdateBit0 (   p)
Value:
Range = bound; \
*(p) += (kBitModelTotal - *(p)) >> kNumMoveBits
#define kBitModelTotal
Definition: lzmadecode.c:29
#define kNumMoveBits
Definition: lzmadecode.c:30

Definition at line 72 of file lzmadecode.c.

◆ UpdateBit1

#define UpdateBit1 (   p)
Value:
Range -= bound; \
Code -= bound; \
*(p) -= (*(p)) >> kNumMoveBits

Definition at line 76 of file lzmadecode.c.

Function Documentation

◆ LzmaDecode()

◆ LzmaDecodeProperties()

int LzmaDecodeProperties ( CLzmaProperties propsRes,
const unsigned char *  propsData,
int  size 
)

Definition at line 157 of file lzmadecode.c.

References _CLzmaProperties::lc, _CLzmaProperties::lp, LZMA_PROPERTIES_SIZE, LZMA_RESULT_DATA_ERROR, LZMA_RESULT_OK, and _CLzmaProperties::pb.

Referenced by ulzman().

Here is the caller graph for this function: