亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? modelppm.java

?? 這是架包java-unrar-0.2.jar的源碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * Copyright (c) 2007 innoSysTec (R) GmbH, Germany. All rights reserved.
 * Original author: Edmund Wagner
 * Creation date: 31.05.2007
 *
 * Source: $HeadURL$
 * Last changed: $LastChangedDate$
 * 
 * the unrar licence applies to all junrar source and binary distributions 
 * you are not allowed to use this source to re-create the RAR compression algorithm
 * 
 * Here some html entities which can be used for escaping javadoc tags:
 * "&":  "&" or "&"
 * "<":  "&#060;" or "&lt;"
 * ">":  "&#062;" or "&gt;"
 * "@":  "&#064;" 
 */
package de.innosystec.unrar.unpack.ppm;

import java.io.IOException;
import java.util.Arrays;

import de.innosystec.unrar.exception.RarException;
import de.innosystec.unrar.unpack.Unpack;

/**
 * DOCUMENT ME
 * 
 * @author $LastChangedBy$
 * @version $LastChangedRevision$
 */
public class ModelPPM
{
	public static final int MAX_O = 64; /* maximum allowed model order */

	public static final int INT_BITS = 7;

	public static final int PERIOD_BITS = 7;

	public static final int TOT_BITS = INT_BITS + PERIOD_BITS;

	public static final int INTERVAL = 1 << INT_BITS;

	public static final int BIN_SCALE = 1 << TOT_BITS;

	public static final int MAX_FREQ = 124;

	private SEE2Context[][] SEE2Cont = new SEE2Context[25][16];

	private SEE2Context dummySEE2Cont;

	private PPMContext minContext, medContext, maxContext;

	private State foundState; // found next state transition

	private int numMasked, initEsc, orderFall, maxOrder, runLength, initRL;

	private int[] charMask = new int[256];

	private int[] NS2Indx = new int[256];

	private int[] NS2BSIndx = new int[256];

	private int[] HB2Flag = new int[256];

    // byte EscCount, PrevSuccess, HiBitsFlag;
	private int escCount, prevSuccess, hiBitsFlag;

	private int[][] binSumm = new int[128][64]; // binary SEE-contexts

	private RangeCoder coder = new RangeCoder();

	private SubAllocator subAlloc = new SubAllocator();

	private static int InitBinEsc[] = { 0x3CDD, 0x1F3F, 0x59BF, 0x48F3,
			0x64A1, 0x5ABC, 0x6632, 0x6051 };

    // Temp fields
    private final State tempState1 = new State(null);
    private final State tempState2 = new State(null);
    private final State tempState3 = new State(null);
    private final State tempState4 = new State(null);
    private final StateRef tempStateRef1 = new StateRef();
    private final StateRef tempStateRef2 = new StateRef();
    private final PPMContext tempPPMContext1 = new PPMContext(null);
    private final PPMContext tempPPMContext2 = new PPMContext(null);
    private final PPMContext tempPPMContext3 = new PPMContext(null);
    private final PPMContext tempPPMContext4 = new PPMContext(null);
    private final int[] ps = new int[MAX_O];

	public ModelPPM()
	{
		minContext = null;
		maxContext = null;
		medContext = null;
	}

	public SubAllocator getSubAlloc()
	{
		return subAlloc;
	}

	private void restartModelRare()
	{
		Arrays.fill(charMask, 0);
		subAlloc.initSubAllocator();
		initRL = -(maxOrder < 12 ? maxOrder : 12) - 1;
		int addr = subAlloc.allocContext();
		minContext.setAddress(addr);
		maxContext.setAddress(addr);
		minContext.setSuffix(0);
		orderFall = maxOrder;
		minContext.setNumStats(256);
		minContext.getFreqData().setSummFreq(minContext.getNumStats()+1);
				
		addr = subAlloc.allocUnits(256 / 2);
		foundState.setAddress(addr);
		minContext.getFreqData().setStats(addr);

		State state = new State(subAlloc.getHeap());
		addr = minContext.getFreqData().getStats();
        runLength = initRL;
        prevSuccess = 0;
		for (int i = 0; i < 256; i++) {
			state.setAddress(addr + i * State.size);
			state.setSymbol(i);
			state.setFreq(1);
			state.setSuccessor(0);
		}

		for (int i = 0; i < 128; i++) {
			for (int k = 0; k < 8; k++) {
				for (int m = 0; m < 64; m += 8) {
					binSumm[i][k + m] = BIN_SCALE - InitBinEsc[k] / (i + 2);
				}
			}
		}
		for (int i = 0; i < 25; i++) {
			for (int k = 0; k < 16; k++) {
				SEE2Cont[i][k].init(5 * i + 10);
			}
		}
	}

	private void startModelRare(int MaxOrder)
	{
        int i, k, m, Step;
		escCount = 1;
		this.maxOrder = MaxOrder;
		restartModelRare();
        // Bug Fixed
        NS2BSIndx[0] = 0;
        NS2BSIndx[1] = 2;
		for (int j = 0; j < 9; j++) {
			NS2BSIndx[2 + j] = 4;
		}
		for (int j = 0; j < 256 - 11; j++) {
			NS2BSIndx[11 + j] = 6;
		}
		for (i = 0; i < 3; i++) {
			NS2Indx[i] = i;
		}
		for (m = i, k = 1, Step = 1; i < 256; i++) {
			NS2Indx[i] = m;
			if ((--k) == 0) {
				k = ++Step;
				m++;
			}
		}
		for (int j = 0; j < 0x40; j++) {
			HB2Flag[j] = 0;
		}
		for (int j = 0; j < 0x100 - 0x40; j++) {
			HB2Flag[0x40 + j] = 0x08;
		}
		dummySEE2Cont.setShift(PERIOD_BITS);

	}

	private void clearMask()
	{
		escCount = 1;
		Arrays.fill(charMask, 0);
	}

	public boolean decodeInit(Unpack unpackRead, int escChar/* ref */)
			throws IOException, RarException
	{

		int MaxOrder = unpackRead.getChar() & 0xff;
		boolean reset = ((MaxOrder & 0x20) != 0);

		int MaxMB = 0;
		if (reset) {
			MaxMB = unpackRead.getChar();
		} else {
			if (subAlloc.GetAllocatedMemory() == 0) {
				return (false);
			}
		}
		if ((MaxOrder & 0x40) != 0) {
			escChar = unpackRead.getChar();
			unpackRead.setPpmEscChar(escChar);
		}
		coder.initDecoder(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);
			minContext = new PPMContext(getHeap());
			medContext = new PPMContext(getHeap());
			maxContext = new PPMContext(getHeap());
			foundState = new State(getHeap());
			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.getAddress() != 0);
	}

	public int decodeChar() throws IOException, RarException
	{
        // Debug
        //subAlloc.dumpHeap();

		if (minContext.getAddress() <= subAlloc.getPText()
				|| minContext.getAddress() > subAlloc.getHeapEnd()) {
			return (-1);
		}

		if (minContext.getNumStats() != 1) {
			if (minContext.getFreqData().getStats() <= subAlloc.getPText()
					|| minContext.getFreqData().getStats() > subAlloc.getHeapEnd()) {
				return (-1);
			}
			if (!minContext.decodeSymbol1(this)) {
				return (-1);
			}
		} else {
			minContext.decodeBinSymbol(this);
		}
		coder.decode();
		while (foundState.getAddress() == 0) {
			coder.ariDecNormalize();
			do {
				orderFall++;
				minContext.setAddress(minContext.getSuffix());// =MinContext->Suffix;
				if (minContext.getAddress() <= subAlloc.getPText()
						|| minContext.getAddress() > subAlloc.getHeapEnd()) {
					return (-1);
				}
			} while (minContext.getNumStats() == numMasked);
			if (!minContext.decodeSymbol2(this)) {
				return (-1);
			}
			coder.decode();
		}
		int Symbol = foundState.getSymbol();
		if ((orderFall == 0) && foundState.getSuccessor() > subAlloc.getPText()) {
			// MinContext=MaxContext=FoundState->Successor;
			int addr = foundState.getSuccessor();
			minContext.setAddress(addr);
			maxContext.setAddress(addr);
		} else {
			updateModel();
			//this.foundState.setAddress(foundState.getAddress());//TODO just 4 debugging
			if (escCount == 0) {
				clearMask();
			}
		}
		coder.ariDecNormalize();// ARI_DEC_NORMALIZE(Coder.code,Coder.low,Coder.range,Coder.UnpackRead);
		return (Symbol);
	}

	public SEE2Context[][] getSEE2Cont()
	{
		return SEE2Cont;
	}

	public SEE2Context getDummySEE2Cont()
	{
		return dummySEE2Cont;
	}

	public int getInitRL()
	{
		return initRL;
	}

	public void setEscCount(int escCount)
	{
		this.escCount = escCount&0xff;
	}

	public int getEscCount()
	{
		return escCount;
	}

    public void incEscCount(int dEscCount) {
        setEscCount(getEscCount() + dEscCount);
    }

	public int[] getCharMask()
	{
		return charMask;
	}

	public int getNumMasked()
	{
		return numMasked;
	}

	public void setNumMasked(int numMasked)
	{
		this.numMasked = numMasked;
	}

	public void setPrevSuccess(int prevSuccess)
	{
		this.prevSuccess = prevSuccess&0xff;
	}

	public int getInitEsc()
	{
		return initEsc;
	}

	public void setInitEsc(int initEsc)
	{
		this.initEsc = initEsc;
	}

	public void setRunLength(int runLength)
	{
		this.runLength = runLength;
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
偷窥国产亚洲免费视频| 欧美婷婷六月丁香综合色| 日本韩国欧美在线| 精品粉嫩超白一线天av| 亚洲午夜久久久久久久久电影网| 国产真实精品久久二三区| 欧美色图免费看| 亚洲情趣在线观看| 成人在线综合网| 久久午夜电影网| 强制捆绑调教一区二区| 欧美视频在线观看一区| 国产精品热久久久久夜色精品三区 | 国产综合色精品一区二区三区| 在线观看视频一区| 亚洲三级小视频| 成人黄动漫网站免费app| 久久综合精品国产一区二区三区| 国产福利视频一区二区三区| 欧美性大战久久久久久久| 国产精品久久久久影院色老大| 激情亚洲综合在线| 欧美成人国产一区二区| 美女视频黄久久| 日韩精品一区二区三区四区| 日av在线不卡| 精品国产三级a在线观看| 麻豆精品精品国产自在97香蕉| 在线播放国产精品二区一二区四区| 一区二区三区美女| 在线欧美日韩精品| 亚洲高清不卡在线观看| 欧美在线观看视频在线| 亚洲一二三区视频在线观看| 在线观看欧美日本| 午夜欧美2019年伦理| 56国语精品自产拍在线观看| 日韩激情av在线| 欧美成人免费网站| 国产91高潮流白浆在线麻豆| 国产精品久久久久影视| 91免费观看视频| 亚洲成人tv网| 精品粉嫩超白一线天av| 成人高清视频在线观看| 亚洲欧美日韩系列| 欧美日韩美女一区二区| 久久91精品国产91久久小草| 久久综合狠狠综合久久激情| 成人精品在线视频观看| 亚洲综合无码一区二区| 欧美久久一区二区| 国内精品在线播放| 亚洲色图欧美激情| 538在线一区二区精品国产| 韩国欧美国产1区| 国产精品国产三级国产普通话蜜臀 | 亚洲女厕所小便bbb| 欧美高清性hdvideosex| 久久99精品久久久久久动态图| 国产精品伦一区二区三级视频| 色悠悠亚洲一区二区| 麻豆精品久久精品色综合| 国产精品久久久久国产精品日日| 欧美伊人精品成人久久综合97| 看片的网站亚洲| 亚洲欧美激情插 | 久久99精品视频| 亚洲日本在线a| 精品国产髙清在线看国产毛片| 99麻豆久久久国产精品免费| 日韩国产一二三区| 国产精品国产三级国产aⅴ原创| 91精品欧美久久久久久动漫| 成人精品亚洲人成在线| 麻豆精品一区二区三区| 一区二区三区高清在线| 久久日韩精品一区二区五区| 欧美亚洲国产一区二区三区| 国产精品性做久久久久久| 亚洲午夜私人影院| 国产精品沙发午睡系列990531| 在线播放中文一区| 日本高清不卡一区| 成人在线一区二区三区| 免费在线观看成人| 午夜激情一区二区三区| 亚洲欧美视频在线观看| 久久久精品2019中文字幕之3| 欧美视频一区在线| 97超碰欧美中文字幕| 国产乱子轮精品视频| 麻豆成人久久精品二区三区红| 一区二区三区在线高清| 中文字幕一区二区三区在线观看 | 久久99热这里只有精品| 亚洲一二三四久久| 亚洲欧美国产高清| 亚洲日本乱码在线观看| 中文字幕精品在线不卡| 久久久噜噜噜久噜久久综合| 精品久久久久一区| 欧美刺激午夜性久久久久久久| 欧美三级视频在线观看| 在线观看av一区| 日本久久电影网| 日本乱人伦aⅴ精品| 91亚洲精华国产精华精华液| 成人免费视频播放| 播五月开心婷婷综合| 成人av免费在线播放| www.99精品| 99精品视频在线观看免费| 波多野结衣中文字幕一区| 成人黄色片在线观看| 波多野结衣在线aⅴ中文字幕不卡| 国产乱淫av一区二区三区| 国产宾馆实践打屁股91| 成人黄动漫网站免费app| 97久久精品人人澡人人爽| 色综合久久中文综合久久97| 欧美亚洲动漫制服丝袜| 宅男在线国产精品| 亚洲精品一区二区三区四区高清| 久久久久久久久99精品| 日本一区二区视频在线观看| 自拍偷自拍亚洲精品播放| 亚洲综合小说图片| 久草精品在线观看| 大白屁股一区二区视频| 91天堂素人约啪| 欧美亚洲动漫精品| 精品少妇一区二区三区| 国产午夜亚洲精品午夜鲁丝片 | 亚洲bt欧美bt精品| 久久精品99久久久| 成人黄色av电影| 欧美日韩一区在线| 精品99一区二区| 亚洲人成网站色在线观看| 亚洲bt欧美bt精品777| 国产精品自在欧美一区| 色婷婷综合久久久久中文 | 91久久久免费一区二区| 欧美猛男男办公室激情| 久久久久久久久久久久电影| 亚洲精品自拍动漫在线| 日本不卡中文字幕| 成人免费视频免费观看| 欧美丰满少妇xxxxx高潮对白| 久久夜色精品国产噜噜av| 亚洲激情第一区| 国产精品亚洲成人| 欧美日韩一区成人| 中文字幕制服丝袜一区二区三区 | 欧美理论在线播放| 欧美tk丨vk视频| 亚洲一区在线免费观看| 国产高清在线观看免费不卡| 欧美日韩一区三区四区| 国产精品天干天干在线综合| 日韩av中文字幕一区二区| 成人18视频在线播放| 日韩精品一区二区三区在线播放| 亚洲人成精品久久久久| 激情文学综合插| 色综合天天狠狠| 国产欧美日韩在线| 日韩精品亚洲专区| 色婷婷精品大视频在线蜜桃视频| 精品国产一区二区三区忘忧草| 一区二区三区av电影| 国产suv精品一区二区三区| 日韩午夜激情视频| 亚洲一区二区三区四区五区黄 | 欧美自拍偷拍午夜视频| 欧美激情一二三区| 国产在线精品免费| 日韩你懂的电影在线观看| 亚洲精选免费视频| 97成人超碰视| 国产精品色呦呦| 国产99精品国产| 久久久国产一区二区三区四区小说 | 亚洲伦在线观看| www.在线成人| 国产精品久久久久一区二区三区| 黄色成人免费在线| 精品成人佐山爱一区二区| 日韩av电影一区| 欧美一区三区四区| 天天色天天操综合| 欧美另类久久久品| 午夜国产精品一区| 日韩一区二区三区三四区视频在线观看| 亚洲成人黄色影院| 555夜色666亚洲国产免| 美女免费视频一区二区| 91麻豆精品国产91久久久更新时间 | 91原创在线视频|