Ppmd7.c (p7zip_15.14.1_src_all) | : | Ppmd7.c (p7zip_16.02_src_all) | ||
---|---|---|---|---|
/* Ppmd7.c -- PPMdH codec | /* Ppmd7.c -- PPMdH codec | |||
2015-09-28 : Igor Pavlov : Public domain | 2016-05-21 : Igor Pavlov : Public domain | |||
This code is based on PPMd var.H (2001): Dmitry Shkarin : Public domain */ | This code is based on PPMd var.H (2001): Dmitry Shkarin : Public domain */ | |||
#include "Precomp.h" | #include "Precomp.h" | |||
#include <string.h> | #include <string.h> | |||
#include "Ppmd7.h" | #include "Ppmd7.h" | |||
const Byte PPMD7_kExpEscape[16] = { 25, 14, 9, 7, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2 }; | const Byte PPMD7_kExpEscape[16] = { 25, 14, 9, 7, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2 }; | |||
static const UInt16 kInitBinEsc[] = { 0x3CDD, 0x1F3F, 0x59BF, 0x48F3, 0x64A1, 0x 5ABC, 0x6632, 0x6051}; | static const UInt16 kInitBinEsc[] = { 0x3CDD, 0x1F3F, 0x59BF, 0x48F3, 0x64A1, 0x 5ABC, 0x6632, 0x6051}; | |||
skipping to change at line 642 | skipping to change at line 642 | |||
p->MinContext->SummFreq = (UInt16)(sumFreq + escFreq - (escFreq >> 1)); | p->MinContext->SummFreq = (UInt16)(sumFreq + escFreq - (escFreq >> 1)); | |||
p->FoundState = STATS(p->MinContext); | p->FoundState = STATS(p->MinContext); | |||
} | } | |||
CPpmd_See *Ppmd7_MakeEscFreq(CPpmd7 *p, unsigned numMasked, UInt32 *escFreq) | CPpmd_See *Ppmd7_MakeEscFreq(CPpmd7 *p, unsigned numMasked, UInt32 *escFreq) | |||
{ | { | |||
CPpmd_See *see; | CPpmd_See *see; | |||
unsigned nonMasked = p->MinContext->NumStats - numMasked; | unsigned nonMasked = p->MinContext->NumStats - numMasked; | |||
if (p->MinContext->NumStats != 256) | if (p->MinContext->NumStats != 256) | |||
{ | { | |||
see = p->See[p->NS2Indx[nonMasked - 1]] + | see = p->See[(unsigned)p->NS2Indx[nonMasked - 1]] + | |||
(nonMasked < (unsigned)SUFFIX(p->MinContext)->NumStats - p->MinContext-> NumStats) + | (nonMasked < (unsigned)SUFFIX(p->MinContext)->NumStats - p->MinContext-> NumStats) + | |||
2 * (p->MinContext->SummFreq < 11 * p->MinContext->NumStats) + | 2 * (unsigned)(p->MinContext->SummFreq < 11 * p->MinContext->NumStats) + | |||
4 * (numMasked > nonMasked) + | 4 * (unsigned)(numMasked > nonMasked) + | |||
p->HiBitsFlag; | p->HiBitsFlag; | |||
{ | { | |||
unsigned r = (see->Summ >> see->Shift); | unsigned r = (see->Summ >> see->Shift); | |||
see->Summ = (UInt16)(see->Summ - r); | see->Summ = (UInt16)(see->Summ - r); | |||
*escFreq = r + (r == 0); | *escFreq = r + (r == 0); | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
see = &p->DummySee; | see = &p->DummySee; | |||
End of changes. 3 change blocks. | ||||
4 lines changed or deleted | 4 lines changed or added |