1*f6dc9357SAndroid Build Coastguard Worker // Lzx.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_COMPRESS_LZX_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_COMPRESS_LZX_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyTypes.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker namespace NCompress { 9*f6dc9357SAndroid Build Coastguard Worker namespace NLzx { 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker const unsigned kBlockType_NumBits = 3; 12*f6dc9357SAndroid Build Coastguard Worker const unsigned kBlockType_Verbatim = 1; 13*f6dc9357SAndroid Build Coastguard Worker const unsigned kBlockType_Aligned = 2; 14*f6dc9357SAndroid Build Coastguard Worker const unsigned kBlockType_Uncompressed = 3; 15*f6dc9357SAndroid Build Coastguard Worker 16*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumHuffmanBits = 16; 17*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumReps = 3; 18*f6dc9357SAndroid Build Coastguard Worker 19*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumLenSlots = 8; 20*f6dc9357SAndroid Build Coastguard Worker const unsigned kMatchMinLen = 2; 21*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumLenSymbols = 249; 22*f6dc9357SAndroid Build Coastguard Worker const unsigned kMatchMaxLen = kMatchMinLen + (kNumLenSlots - 1) + kNumLenSymbols - 1; 23*f6dc9357SAndroid Build Coastguard Worker 24*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumAlignLevelBits = 3; 25*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumAlignBits = 3; 26*f6dc9357SAndroid Build Coastguard Worker const unsigned kAlignTableSize = 1 << kNumAlignBits; 27*f6dc9357SAndroid Build Coastguard Worker 28*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumPosSlots = 50; 29*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumPosLenSlots = kNumPosSlots * kNumLenSlots; 30*f6dc9357SAndroid Build Coastguard Worker 31*f6dc9357SAndroid Build Coastguard Worker const unsigned kMainTableSize = 256 + kNumPosLenSlots; 32*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelTableSize = 20; 33*f6dc9357SAndroid Build Coastguard Worker const unsigned kMaxTableSize = kMainTableSize; 34*f6dc9357SAndroid Build Coastguard Worker 35*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumLevelBits = 4; 36*f6dc9357SAndroid Build Coastguard Worker 37*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero1 = 17; 38*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero2 = 18; 39*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Same = 19; 40*f6dc9357SAndroid Build Coastguard Worker 41*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero1_Start = 4; 42*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero1_NumBits = 4; 43*f6dc9357SAndroid Build Coastguard Worker 44*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero2_Start = kLevelSym_Zero1_Start + (1 << kLevelSym_Zero1_NumBits); 45*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Zero2_NumBits = 5; 46*f6dc9357SAndroid Build Coastguard Worker 47*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Same_NumBits = 1; 48*f6dc9357SAndroid Build Coastguard Worker const unsigned kLevelSym_Same_Start = 4; 49*f6dc9357SAndroid Build Coastguard Worker 50*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumDictBits_Min = 15; 51*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumDictBits_Max = 21; 52*f6dc9357SAndroid Build Coastguard Worker const UInt32 kDictSize_Max = (UInt32)1 << kNumDictBits_Max; 53*f6dc9357SAndroid Build Coastguard Worker 54*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumLinearPosSlotBits = 17; 55*f6dc9357SAndroid Build Coastguard Worker // const unsigned kNumPowerPosSlots = 38; 56*f6dc9357SAndroid Build Coastguard Worker // const unsigned kNumPowerPosSlots = (kNumLinearPosSlotBits + 1) * 2; // non-including two first linear slots. 57*f6dc9357SAndroid Build Coastguard Worker const unsigned kNumPowerPosSlots = (kNumLinearPosSlotBits + 2) * 2; // including two first linear slots. 58*f6dc9357SAndroid Build Coastguard Worker 59*f6dc9357SAndroid Build Coastguard Worker }} 60*f6dc9357SAndroid Build Coastguard Worker 61*f6dc9357SAndroid Build Coastguard Worker #endif 62