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

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

?? advancejpeg-lscode.cpp

?? 改進的JPEG-LS算法
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
			
			if(Errval<0)Nn[Q-365]++;

			A[Q]+=((EMErrval+1-RItype)>>1);

			if(N[Q]==RESET)
			{
				A[Q]>>=1;
				N[Q]>>=1;
				Nn[Q-365]>>=1;
			}
			N[Q]++;
		}
	}
	//調節門限參數的優化
	if(AllTestNumber>20)
	{//由象素調節率,優化象素調節門限
		i=AdjustNumber/AllTestNumber;
		if(i>=55)
		{
			if(TestErrorMeLimen<=MaxMTestErrMeLimen(qNEAR))
			{//加大調節門限
				TestErrorMeLimen++;
				RunContext=SetRunContext[RunTestThresholdStep];
				DoubleMaxError=SetDoubleMaxError[RunTestThresholdStep];
			}
		}
		else if(i<=30)
		{//減小調節門限
			if(TestErrorMeLimen>MinMTestErrMeLimen(qNEAR)&&TestErrorMeLimen>1)
			{
				TestErrorMeLimen--;
				if(TestErrorMeLimen==0)
				{
					RunContext=qNEAR;
					DoubleMaxError=qNEAR;
				}
			}
		}
		if(AllTestNumber>0x10000)
		{
			AdjustNumber/=2;
			AllTestNumber/=2;
		}
	}
	int ii;
	//行尾大誤差編碼處理
	if(DoubleErrN!=0)//可能產生大誤差象素數
	{
		EncodeDoubleError();//對每行游程編碼中的象素大誤差的符號編碼。
		ii=0;//用于二級大誤差可能象素的計數
		if(DErrN>0)for(i=0;i<DoubleErrN;i++)
		{//修正當前象素
			j=lpDoubleErrList[i].PixSeat;//大誤差的位置
			if(lpDoubleErrList[i].Sign>=1)
			{//正向大誤差時
				lpDoubleErrList[ii++]=lpDoubleErrList[i];//作為二級大誤差可能的象素
				lpCurrentLine[j]+=MaxErrAdjust1;
				if(lpCurrentLine[j]<0)lpCurrentLine[j]=0;
				else if(lpCurrentLine[j]>MAXVAL)lpCurrentLine[j]=MAXVAL;
			}
			else if(lpDoubleErrList[i].Sign<=-1)
			{
				lpDoubleErrList[ii++]=lpDoubleErrList[i];
				lpCurrentLine[j]-=MaxErrAdjust1;
				if(lpCurrentLine[j]<0)lpCurrentLine[j]=0;
				else if(lpCurrentLine[j]>MAXVAL)lpCurrentLine[j]=MAXVAL;
			}
		}
		if((DErrN=ii)>0)
		{
			EncodeDDoubleError();//對每行游程編碼中的象素大誤差的符號編碼。
			if(DDErrN>0)for(i=0;i<DErrN;i++)
			{//修正當前象素
				j=lpDoubleErrList[i].PixSeat;
				if(lpDoubleErrList[i].Sign>=2)
				{
					lpCurrentLine[j]+=MaxErrAdjust2;
					if(lpCurrentLine[j]<0)lpCurrentLine[j]=0;
					else if(lpCurrentLine[j]>MAXVAL)lpCurrentLine[j]=MAXVAL;
				}
				else if(lpDoubleErrList[i].Sign<=-2)
				{
					lpCurrentLine[j]-=MaxErrAdjust2;
					if(lpCurrentLine[j]<0)lpCurrentLine[j]=0;
					else if(lpCurrentLine[j]>MAXVAL)lpCurrentLine[j]=MAXVAL;
				}
			}
		}
		DoubleErrN=0;
		DErrN=0;
		DDErrN=0;
	}
	//構造重建圖像
	if(AllowBandPrediction==TRUE)
	{
		if(OpenOffBandPrediction==FALSE)
		{
			MoveMemory(lpReconstructCurrentLine,lpCurrentLine,X*sizeof(int));
		}
		else//重建時要考慮波段預測因素
		{
			for(i=0;i<X;i++)//在新起一行時將當前重建象素行保存到重建圖像緩沖中
			{
				pp=lpPredictionBandCode->lpReconstructCurrentLine[i];
				if((ppx=(A_Mul*pp/UNIFORM_FLOAT_TO_INT_MUL+B_Add))>Pixel_ADD)ppx=pp;
				pc=lpCurrentLine[i]+ppx-Pixel_ADD;
				if(pc<0)pc=0;
				else if(pc>(MAXVAL>>2))pc=(MAXVAL>>2);
				lpReconstructCurrentLine[i]=pc;
			}
		}
		//更新預測系數與相關系數
		UpdateBandPrediction();
	}
	else
	{
		lpReconstructCurrentLine=lpCurrentLine;
	}
	if(lpErrorMse!=NULL)
	{
		*lpErrorMse=0;
		for(i=0;i<X;i++)
		{
			lpImage[i]=(*((int *)(lpImageBuf+OneSampleBytes*i)))&AndCode;
			j=lpImage[i]-lpReconstructCurrentLine[i];
			*lpErrorMse+=j*j;
		}
	}
	LineN++;//行計數
	return CodeBitcp-CompressBitcp;
}
void CAdvanceJepgLSOneLineCode::ResetContext(int Seat)
{
	if(Seat>=2)
	{
		Raa=lpCurrentLine[Seat-2];
		Ra=lpCurrentLine[Seat-1];
		Rc=lpPrecedingLine[Seat-1];
	}
	else if(Seat>=1)
	{
		Rc=lpPrecedingLine[Seat-1];
		Ra=lpCurrentLine[Seat-1];
		Raa=lpPrecedingLine[Seat-1];
	}
	else
	{
		Rc=lpThirdLine[0];
		Raa=Ra=lpPrecedingLine[0];
	}
	Rb=lpPrecedingLine[Seat];
	if(x<X-1)Rd=lpPrecedingLine[Seat+1];
	else Rd=lpPrecedingLine[X-1];
}
int CAdvanceJepgLSOneLineCode::RunPredicate()
{
	int D_up_down,D_left_right,Sv,Sh;
//由梯度決定預測的兩參量的分配
	if((D_up_down=((Rb-lpThirdLine[x])*3+Ra-Rc)/4)<0)D_up_down=-D_up_down;
	if((D_left_right=((Ra-Raa)*3+Rb-Rc)/4)<0)D_left_right=-D_left_right;
	D_left_right+=2;
	D_up_down+=2;
	Sv=Rb-lpThirdLine[x];
	Sh=Ra-Raa;
	Px=((Rb-Sv/4)*D_left_right+(Ra-Sh/4)*D_up_down)/(D_left_right+D_up_down);

	if(Px<0)Px=0;
	else if(Px>MAXVAL)Px=MAXVAL;
	return Px;
}
void CAdvanceJepgLSOneLineCode::AppendRunEncode(int Bgx,int Runl)
{
	int i,ii,j,n,j1,k,RunB,RunL,d1l,d1r,d2l,d2r,d1,d2,Winn;
	int Me,IIx,err,AdjustWinL,WinL,AdjustN,TwoAdjustN,*lpTwoAdjust,*lpAdjust,AdjustRate;
	BOOL Modify=FALSE,OpenTwoAdjust=FALSE,OpenAdjust=FALSE;
	RunB=Bgx;RunL=Runl;

	if(RunL<=0)return;//游程不是正數時不動作
	Modify=FALSE;//置修改標志為否
	if(RunL>=AdjustWinLength&&TestErrorMeLimen!=0)
	{//可以調節
		Modify=TRUE;
		if(AllTestNumber>20)
		{//調節率的計算是AdjustNumber比實際數大100倍.
			AdjustRate=AdjustNumber/AllTestNumber;
		}
		else AdjustRate=50;
		//計算調節窗長
		if(RunL<(AdjustWinLength*2))AdjustWinL=RunL;//2倍窗長以下時,取序列長
		else if(RunL<(AdjustWinLength*4))AdjustWinL=RunL/2;//4倍窗長以下時取半序列長
		else //4倍以上窗長時
		{
			if(RunL<(AdjustWinLength*12))AdjustWinL=AdjustWinLength*2;//12倍以下窗長取2倍
			else AdjustWinL=AdjustWinLength*3;//12倍以上取3倍
			if(RunL>=AdjustWinL*8&&AdjustRate>10)
			{//在序列足夠長并且調節率很低時啟動兩級調節
				OpenTwoAdjust=TRUE;
			}
			if(RunL>=AdjustWinL*8&&AdjustRate<30)
			{//在序列足夠長并且調節率較低時啟動游程編碼
				OpenAdjust=TRUE;
			}
		}
		if(OpenTwoAdjust==TRUE)
		{//兩級調節時,準備緩沖
			lpTwoAdjust=new int[RunL/AdjustWinL+2];
			ZeroMemory(lpTwoAdjust,sizeof(int)*(RunL/AdjustWinL+2));
		}
		lpAdjust=new int[RunL/AdjustWinL+2];
		ZeroMemory(lpAdjust,sizeof(int)*(RunL/AdjustWinL+2));
		for(i=0,AdjustN=0,Winn=0,TwoAdjustN=0;i<RunL;Winn++)
		{//調節序列的檢測
			if((RunL-i)<AdjustWinL*3/2)WinL=RunL-i;//剩余象素數不足窗長的3/2時,最后一段窗口取序剩余列長
			else WinL=AdjustWinL;
			for(j=0,Me=0,n=0;j<WinL;j++)
			{
				err=lpImage[RunB+i+j]-lpCurrentLine[RunB+i+j];
				if(err<=qNEAR&&err>=-qNEAR)
				{
					Me+=err;
				}
				else 
				{//大誤差時要限制其在均值中的作用
					if(err>0)Me+=(qNEAR/2+(err-qNEAR/2)/3);
					else Me-=(qNEAR/2-(qNEAR/2+err)/3);
				}
				n++;
			}
			if(n>3)Me/=n;
			else Me=0;
			if(Me>TestErrorMeLimen)
			{//作正向調節
				lpAdjust[Winn]=1;//保存的是調節狀態
				if(OpenAdjust==FALSE)AppendToBitStream(0x1,1);//直接變成比特輸出
				if(OpenTwoAdjust==TRUE)
				{//二級編碼時
					if(Me<(TestErrorMeLimen+MAdjustErrMe(TestErrorMeLimen)))
					{
						AdjustErrorMe=MAdjustErrMe(TestErrorMeLimen);
					}
					else
					{
						AdjustErrorMe=MAdjustErrMe2(TestErrorMeLimen);
						lpTwoAdjust[AdjustN]=1;//狀態由一級調節數索引
						TwoAdjustN++;//二級調節數累加
					}
				}
				else AdjustErrorMe=MAdjustErrMe(TestErrorMeLimen);
				AdjustN++;
				if(OpenAdjust==FALSE)AppendToBitStream(0x1,1);//直接編碼時輸出符號
				AdjustNumber+=100;//調節次數,按100倍累計
				AllTestNumber++;
				Me=AdjustErrorMe;
				for(j=0;j<WinL;j++)
				{//窗內調節
						k=lpCurrentLine[RunB+i+j]+Me;
						if(k<0)k=0;
						else if(k>MAXVAL)k=MAXVAL;
						lpCurrentLine[RunB+i+j]=k;
				}
				if(Winn>0&&lpAdjust[Winn-1]==0&&TestErrorMeLimen>=3)
				{//當前窗被調節時,如果前面的窗口未被調節,而且,檢測門限大于等于3,
				// 則前面未調節的窗口按檢測門限的1/3調節.
					Me=TestErrorMeLimen/3;
					for(j=0;j<AdjustWinL;j++)
					{
						k=lpCurrentLine[RunB+i+j-AdjustWinL]+Me;
						if(k<0)k=0;
						else if(k>MAXVAL)k=MAXVAL;
						lpCurrentLine[RunB+i+j-AdjustWinL]=k;
					}
				}
			}
			else if(Me<-TestErrorMeLimen)
			{//作負向調節
				lpAdjust[Winn]=-1;//該序列中含有符號信息
				if(OpenAdjust==FALSE)AppendToBitStream(0x1,1);
				if(OpenTwoAdjust==TRUE)
				{
					if(Me>-(TestErrorMeLimen+MAdjustErrMe(TestErrorMeLimen)))
					{
						AdjustErrorMe=MAdjustErrMe(TestErrorMeLimen);
					}
					else
					{
						AdjustErrorMe=MAdjustErrMe2(TestErrorMeLimen);
						lpTwoAdjust[AdjustN]=1;TwoAdjustN++;
					}
				}
				else AdjustErrorMe=MAdjustErrMe(TestErrorMeLimen);
				AdjustN++;
				if(OpenAdjust==FALSE)AppendToBitStream(0x0,1);
				AdjustNumber+=100;
				AllTestNumber++;
				Me=-AdjustErrorMe;
				for(j=0;j<WinL;j++)
				{
						k=lpCurrentLine[RunB+i+j]+Me;
						if(k<0)k=0;
						else if(k>MAXVAL)k=MAXVAL;
						lpCurrentLine[RunB+i+j]=k;
				}
				if(Winn>0&&lpAdjust[Winn-1]==0&&TestErrorMeLimen>=3)
				{
					Me=-TestErrorMeLimen/3;
					for(j=0;j<AdjustWinL;j++)
					{
						k=lpCurrentLine[RunB+i+j-AdjustWinL]+Me;
						if(k<0)k=0;
						else if(k>MAXVAL)k=MAXVAL;
						lpCurrentLine[RunB+i+j-AdjustWinL]=k;
					}
				}
			}
			else 
			{//不調節
				AllTestNumber++;
				if(OpenAdjust==FALSE)AppendToBitStream(0,1);
				if(Winn>0&&lpAdjust[Winn-1]!=0&&TestErrorMeLimen>=3)
				{//若前面的窗口作了調節,則,當前窗口作些微調
					Me=lpAdjust[Winn-1]*(TestErrorMeLimen/3);
					for(j=0;j<WinL;j++)
					{
						k=lpCurrentLine[RunB+i+j]+Me;
						if(k<0)k=0;
						else if(k>MAXVAL)k=MAXVAL;
						lpCurrentLine[RunB+i+j]=k;
					}
				}
			}
			i+=WinL;
		}
		if(OpenAdjust==TRUE)
		{//一級調節游程編碼
			EncodeAdjust(lpAdjust,Winn,AdjustN);
		}
		delete lpAdjust;
		if(OpenTwoAdjust==TRUE)
		{//二級調節游程編碼
			if(AdjustN>0)EncodeTwoAdjust(lpTwoAdjust,AdjustN,TwoAdjustN);
			delete lpTwoAdjust;
		}
	}
	if(RunL>=AdjustWinLength)
	{//作平滑濾波處理
		int *pLin=new int[RunL];
		j=lpCurrentLine[RunB];
		j1=lpCurrentLine[RunB-1];
		for(i=1;i<RunL-2;i++)
		{
			//根據重建信號的前后梯度決定
			d1l=lpCurrentLine[RunB+i]-j;
			if(d1l<0)d1l=-d1l;
			d1r=lpCurrentLine[RunB+i]-lpCurrentLine[RunB+i+1];
			if(d1r<0)d1r=-d1r;
			if(i>=2)d2l=lpCurrentLine[RunB+i]-j1;
			else d2l=MFilterGradeLimen(qNEAR)+1;
			if(d2l<0)d2l=-d2l;
			if(i<RunL-2)d2r=lpCurrentLine[RunB+i]-lpCurrentLine[RunB+i+2];
			else d2r=MFilterGradeLimen(qNEAR)+1;
			if(d2r<0)d2r=-d2r;
			d1=(d1l>d1r)?d1l:d1r;
			d2=(d2l>d2r)?d2l:d2r;
			if(d1<MFilterGradeLimen(qNEAR))
			{
				if(d2<MFilterGradeLimen(qNEAR))
				{
					if(i>=2&&i<RunL-2)
					{
						k=(lpCurrentLine[RunB+i]*2+
							j+
							lpCurrentLine[RunB+i+1]+
							j1+
							lpCurrentLine[RunB+i+2])/6;
						Modify=TRUE;
					}
					else k=lpCurrentLine[RunB+i];
				}
				else
				{
					k=(lpCurrentLine[RunB+i]*2+
						j+
						lpCurrentLine[RunB+i+1])/4;
					Modify=TRUE;
				}
			}
			else k=lpCurrentLine[RunB+i];
			j1=j;
			j=lpCurrentLine[RunB+i];

			if(k<0)k=0;
			else if(k>MAXVAL)k=MAXVAL;
			pLin[i]=k;
		}
		for(i=1;i<RunL-2;i++)lpCurrentLine[RunB+i]=pLin[i];
		delete pLin;
	}
	if(Modify==TRUE||DoubleMaxError>qNEAR)
	{//大誤差檢測,大誤差序列全部從此處生成
		for(j=0,i=0,ii=0;j<RunL;j++)
		{//i計大誤差數,ii計二級大誤差數
			IIx=lpImage[RunB+j];
			IIx-=lpCurrentLine[RunB+j];
			lpDoubleErrList[DoubleErrN].PixSeat=RunB+j;//保存可能產生大誤差象素的位置
			if(IIx>qNEAR)
			{//正向大誤差時
				i++;
				if(IIx-MaxErrAdjust1>=qNEAR)
				{
					lpDoubleErrList[DoubleErrN].Sign=2;//二級大誤差狀態
					ii++;
				}
				else lpDoubleErrList[DoubleErrN].Sign=1;//一級大誤差狀態
			}
			else if(IIx<-qNEAR)
			{//負向大誤差時
				i++;
				if(IIx+MaxErrAdjust1<=-qNEAR)
				{
					lpDoubleErrList[DoubleErrN].Sign=-2;
					ii++;
				}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级淫片007| 成人美女视频在线观看| 亚洲视频一区在线| 日韩美女在线视频| 日韩久久精品一区| 精品久久99ma| 精品久久久久久久人人人人传媒 | 视频一区中文字幕| 亚洲国产毛片aaaaa无费看| 亚洲国产wwwccc36天堂| 亚洲成人精品在线观看| 日本视频中文字幕一区二区三区| 日日夜夜精品免费视频| 青青草国产精品亚洲专区无| 久久精品国产免费看久久精品| 经典三级视频一区| 成人综合在线观看| 色先锋aa成人| 7777精品伊人久久久大香线蕉| 日韩精品自拍偷拍| 国产精品无人区| 一区二区三区在线观看国产| 亚洲丶国产丶欧美一区二区三区| 免费观看日韩av| 成人中文字幕合集| 欧洲日韩一区二区三区| 日韩一级精品视频在线观看| 欧美精品一区二区三区四区 | 在线观看日韩毛片| 欧洲一区在线观看| 欧美日韩国产乱码电影| 日韩精品一区二区三区中文精品| 欧美丰满嫩嫩电影| 欧美一区日韩一区| 国产精品久久久久久久久晋中 | 久久久久久久综合狠狠综合| 国产精品美女久久久久久2018| 亚洲成av人在线观看| 国产在线播放一区| 在线一区二区三区四区五区 | 久久久青草青青国产亚洲免观| 国产精品国产三级国产a| 午夜不卡av在线| 国产sm精品调教视频网站| 欧洲视频一区二区| 国产喷白浆一区二区三区| 肉丝袜脚交视频一区二区| av在线综合网| 日韩一区二区在线看| 亚洲精选一二三| 国产精品夜夜嗨| 日韩一区二区精品| 亚洲国产成人va在线观看天堂| 国产乱人伦精品一区二区在线观看| 欧美天堂亚洲电影院在线播放| 国产网站一区二区三区| 日韩电影在线一区二区三区| 91丝袜高跟美女视频| 久久精品视频在线免费观看| 美女视频一区在线观看| 欧美日韩一区二区三区视频| 一区在线播放视频| 成人性生交大片免费看视频在线| 制服丝袜中文字幕一区| 亚洲高清视频中文字幕| 色网站国产精品| 亚洲精品视频在线观看网站| www.在线成人| 国产精品午夜久久| 成人理论电影网| 中文久久乱码一区二区| 国产白丝网站精品污在线入口| 久久久国产精品麻豆| 久久99这里只有精品| 日韩欧美亚洲国产另类| 青青草97国产精品免费观看| 欧美日韩国产精品成人| 五月天久久比比资源色| 欧美妇女性影城| 另类综合日韩欧美亚洲| xfplay精品久久| 国产成人av影院| 国产精品天美传媒| 9l国产精品久久久久麻豆| 一区在线观看免费| 欧美在线免费观看视频| 丝袜美腿亚洲一区二区图片| 日韩欧美激情四射| 狠狠色伊人亚洲综合成人| 久久免费电影网| www.在线欧美| 亚洲一区成人在线| 91精品国产91热久久久做人人| 青青草91视频| 国产精品视频九色porn| 一本久道久久综合中文字幕| 亚洲成人av电影在线| 日韩欧美一级二级三级久久久| 国产制服丝袜一区| 日韩一区在线免费观看| 欧美三区在线观看| 久久国内精品视频| 国产精品三级在线观看| 色综合视频在线观看| 午夜精品123| 亚洲国产精品二十页| 日本道在线观看一区二区| 蜜桃在线一区二区三区| 国产女主播视频一区二区| 色婷婷av一区二区三区软件| 美女尤物国产一区| 亚洲色图在线播放| 日韩欧美在线1卡| 成人看片黄a免费看在线| 午夜精品视频在线观看| 久久久久久日产精品| 91九色最新地址| 国产在线精品视频| 亚洲成人自拍偷拍| 亚洲精品一区二区三区福利| 欧美日韩在线观看一区二区 | 国产精品国产三级国产a| 制服丝袜在线91| 一本大道久久a久久综合| 美腿丝袜亚洲一区| 亚洲一区二区在线视频| 中文字幕第一区| 欧美另类z0zxhd电影| 99国产一区二区三精品乱码| 久色婷婷小香蕉久久| 亚洲午夜精品在线| 日韩午夜激情av| 欧美日韩久久一区二区| 高潮精品一区videoshd| 狠狠色狠狠色综合| 久草热8精品视频在线观看| 亚洲图片激情小说| 精品捆绑美女sm三区| 91精品国产综合久久精品app| 99久久伊人精品| 成人av综合一区| 东方aⅴ免费观看久久av| 九一九一国产精品| 日日骚欧美日韩| 日韩电影在线免费| 亚洲高清不卡在线| 亚洲国产精品一区二区www| 亚洲人成精品久久久久| 中文字幕一区二区三区四区 | 日韩视频中午一区| 欧美美女直播网站| 欧美日韩激情一区二区三区| 欧美日韩中文另类| 欧美久久久久久蜜桃| 欧美日韩成人激情| 91.com在线观看| av在线播放成人| 琪琪久久久久日韩精品| 婷婷中文字幕一区三区| 蜜桃av一区二区三区| 蜜桃av一区二区| 日本系列欧美系列| 青椒成人免费视频| 日韩二区三区四区| 亚洲国产精品久久人人爱蜜臀| 午夜精品久久久久久久久久久| 日本人妖一区二区| 国产一区二区三区久久久| 黄页网站大全一区二区| 国产电影一区在线| 91在线播放网址| 欧美日韩综合不卡| 日韩欧美一区二区免费| www久久精品| 亚洲同性gay激情无套| 亚洲图片欧美色图| 伦理电影国产精品| www.综合网.com| 欧美日韩一区二区三区四区 | 欧美日韩一本到| 日韩欧美不卡在线观看视频| 欧美国产一区二区在线观看 | 国产精品1区二区.| 91香蕉视频黄| 日韩一级高清毛片| 亚洲人成亚洲人成在线观看图片| 亚洲二区在线观看| 国产成人av一区| 欧美亚洲动漫精品| 日韩女优av电影| 亚洲老妇xxxxxx| 精品午夜久久福利影院| 99re热视频精品| 日韩欧美精品在线视频| 亚洲男同1069视频| 国产一区二区视频在线| 欧美在线观看视频在线| 久久婷婷国产综合国色天香| 亚洲综合一区二区精品导航| 国产激情视频一区二区三区欧美|