// Debug // public void dumpHeap() { // subAlloc.dumpHeap(); // } internal bool DecodeInit(Stream stream, int maxOrder, int maxMemory) { if (stream != null) { Coder = new RangeCoder(stream); } if (maxOrder == 1) { SubAlloc.StopSubAllocator(); return(false); } SubAlloc.StartSubAllocator(maxMemory); _minContext = new PpmContext(Heap); //medContext = new PPMContext(Heap); _maxContext = new PpmContext(Heap); FoundState = new State(Heap); _dummySee2Cont = new See2Context(); for (int i = 0; i < 25; i++) { for (int j = 0; j < 16; j++) { _see2Cont[i][j] = new See2Context(); } } StartModelRare(maxOrder); return(_minContext.Address != 0); }
internal bool DecodeInit(IRarUnpack unpackRead, int escChar) { int maxOrder = unpackRead.Char & 0xff; bool reset = ((maxOrder & 0x20) != 0); int maxMb = 0; if (reset) { maxMb = unpackRead.Char; } else { if (SubAlloc.GetAllocatedMemory() == 0) { return(false); } } if ((maxOrder & 0x40) != 0) { escChar = unpackRead.Char; unpackRead.PpmEscChar = escChar; } Coder = new RangeCoder(unpackRead); if (reset) { maxOrder = (maxOrder & 0x1f) + 1; if (maxOrder > 16) { maxOrder = 16 + (maxOrder - 16) * 3; } if (maxOrder == 1) { SubAlloc.StopSubAllocator(); return(false); } SubAlloc.StartSubAllocator((maxMb + 1) << 20); _minContext = new PpmContext(Heap); //medContext = new PPMContext(Heap); _maxContext = new PpmContext(Heap); FoundState = new State(Heap); _dummySee2Cont = new See2Context(); for (int i = 0; i < 25; i++) { for (int j = 0; j < 16; j++) { _see2Cont[i][j] = new See2Context(); } } StartModelRare(maxOrder); } return(_minContext.Address != 0); }