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

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

?? jpeg-ls.cpp

?? 連續色調圖像無損(近無損)壓縮標準Jpeg_Ls源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//            ******************************************************************           
//            *                      JPEG-LS源程序清單                         *
//            ******************************************************************

//     ************ 
//     *包含庫文件* 
//     ************ 

#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys\types.h>
#include <sys\timeb.h>
//     ************ 
//     *  宏定義  * 
//     ************ 
//RESET:  threshold value at which A,B,and N are halved
//NEAR:   difference bound for near-lossless coding
//MIN_C:  minimum allowed value of C[0..364],equal to -128
//MAX_C:  maximum allowed value of C[0..364],equal to 127
#define RESET 64
#define NEAR 0
#define MIN_C -128
#define MAX_C 127

//     ************************************
//     *           全局變量初始化         *    
//     ************************************ 
//MAXVAL:   maximum possible image sample value ove all component of a scan
//RUNindex: index for run mode order
//qbpp:     number of bits needed to represent a mapped error value
//bpp:      number of bits needed to represent MAXVAL,with a minimum of 2
//LIMIT:    the value of glimit for a sample encoded in regular mode
//Q:        context determined from Q1,Q2,Q3
//RANGE:    range of prediction error representation
//A[0..366]:367 counters for the accumulated preditection error magnitude
//B[0..364]:365 counters for computing the bias
//C[0..364]:365 counters storing prediction coreection values
//J[0..31]: 32 variables indicating order of run-length codes
//N[0..366]:367 counters for frequency of occurrence of each context
//Nn[365..366]:2 counters for negative prediction error for run interruption
//EOLine:   end of line indicator,used in run mode 
//Errval:   prediction error
//EMErrval: Errval mapped to non-negative integers in run interruption mode
//MErrval:  Errval mapped to non-negative integers in regular mode
//--------------------------------------------------------------------------------
//    LinX:當前行號
//    RowX:當前列號
//    *f:指向碼流的指針
//    *fp:文件指針   
//    counter:計算編碼文件長度
//    output:編碼的數值
//    cnt:當前碼流的長度
//    code:當前碼流的數值
//    pp:前一碼流的長度    
    int MAXVAL=0; 
    unsigned long  output=0;//輸出碼流
    static int cnt=0,code=0,pp=0;//計數器
	int LinX=1,RowX=1; //當前點的行列值
	static int RUNindex=0; 
	int qbpp,bpp,*f;
	static int B[365],C[365];
	int LIMIT,Q,RANGE;
	int J[32]={0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,5,5,6,6,7,7,8,9,10,11,12,13,14,15};
	int A[367],N[367];
	int Nn[2]={0};
	int EOLine=0;
	long int counter=0;
	FILE *fp;
//     **********************************
//     *      計算T1,T2,T3值的子程序    *
//     **********************************	
	float CLAMP_1(float i)
	{
	if(i>MAXVAL||i<NEAR+1)
		return(NEAR+1);
	else
		return(i);
	}
    float CLAMP_2(float i,float T1)
	{
	if(i>MAXVAL||i<T1)
		return(T1);
	else
		return(i);
	}
   float CLAMP_3(float i,float T2)
   {
	if(i>MAXVAL||i<T2)
		return(T2);
	else
		return(i);
   }	
//     ******************************	
//     *  求算術編碼的長度的子程序  *
//     ******************************
  int LG(int Q)
		{
	     int i;		
	     for(i=0;(N[Q]<<i)<A[Q];i++);
	     return(i);
		}
//      ******************************
//      *      規整Errval的值        *
//      ****************************** 
  int ModRange(int a)
  {
	  if(a<((0-RANGE)/2))
		 a=a+RANGE;
	  if(a>=((1+RANGE)/2))
		  a=a-RANGE;
	  return(a);
  }
//        **************************************
//        *         寫碼流的子程序             *
//        **************************************
  void writecode(int *cnt,int *pp,unsigned long *output,int *code)
  {
	  unsigned long c;
	  if((*cnt)<8)
				*code=(*code<<(*cnt-*pp))+(*output);/*以1byte為單位處理。把之前的碼流向前推當前碼流的長度,加入當前輸出的碼流*/
	  else{
			while(*cnt>=8)
			{
				if(*cnt>32)/*以4byte為存儲器最大值*/
					{
			   
			
					*code=(*code<<(8-*pp));
					fwrite(code,1,1,fp);/*把code指向的1×1個字節輸出到fp所指的文件中*/
					counter++;
					*code=0;
					*cnt=*cnt-8;
					
					} 
				else        
					{
					*code=(*code<<(8-*pp))+(255&(*output>>(*cnt-8)));
					fwrite(code,1,1,fp);
					counter++;
					*code=0;
					*cnt=*cnt-8;
					}
			}
            c=~(~0<<*cnt);
			*code=c&(*output);
		}
  }
//          ****************************************     
//          *        常規編碼過程的子程序          *
//          ****************************************  
  void  RegularModeProcessing(int y,int Ra,int Rb,int Rc,int Rd,int Ix,int D1,int D2,int D3,float T1,float T2,float T3)
	{
//       ********************
//       *  當地梯度的量化  *
//       ********************
		int Di[4]={0,D1,D2,D3};
		int Qi[4],Errval,MErrval;
		int i,k,SIGN,Rx,Px;
        unsigned interim;
		output=0;
		
	
			for(i=1;i<4;i++)
		{
			if(Di[i]<=-T3)      Qi[i]=-4;
			else if(Di[i]<=-T2) Qi[i]=-3;
			else if(Di[i]<=-T1) Qi[i]=-2;
			else if(Di[i]<-NEAR)Qi[i]=-1;
			else if(Di[i]<=NEAR)Qi[i]=0;
			else if(Di[i]<T1)   Qi[i]=1;
			else if(Di[i]<T2)   Qi[i]=2;
			else if(Di[i]<T3)   Qi[i]=3;
			else Qi[i]=4;
		}
//         ********************************************** 
//         *  完成從矢量(Q1,Q2,Q3)到Q的一一對應的映射  *
//         **********************************************
		    if((Qi[1]<0)||((Qi[1]==0)&&(Qi[2]<0))||(((Qi[1]==0)&&(Qi[2]==0))&&(Qi[3]<0)))
			SIGN=-1;
			else     SIGN=1;
			if(SIGN==-1)
			{  
				for(i=1;i<4;i++)
			        Qi[i]=Qi[i]*SIGN;
			}
			Q=(Qi[1]*9+Qi[2])*9+Qi[3];/*人為設定*/
//          ***************************** 			 
//          *    計算Px的值(預測)     *
//          *****************************			
	if(Rc>=__max(Ra,Rb))
		Px=__min(Ra,Rb);
	else{
		if(Rc<=__min(Ra,Rb))
			Px=__max(Ra,Rb);
		else
			Px=Ra+Rb-Rc;
	}/*邊緣檢測*/
/*		if(Rc<=__max(Ra,Rb)){
				if(Rc<=__min(Ra,Rb)){
					if((10<=(Rd-Rb))&&(abs(Ra-Rb))<=10&&(__min(Ra,Rb)-Rc)>=5&&(Rd-Rb)<=50)
						Px=Rd/2+__max(Ra,Rb)/2;
					else 
						Px=__max(Ra,Rb);}
				else
					Px=Ra+Rb-Rc;}
			else{
				if(Rc-Ra>=10&&Rd<Rb&&Ra-Rb<=5)
					Px=Rd/2+__min(Ra,Rb)/2;
				else 
					Px=__min(Ra,Rb);
			}	*/	
	if(SIGN==1)
		Px=Px+C[Q];
	else
		Px=Px-C[Q];
//       **********************************	
//       *  將Px規整到(0..MAXVAL)的范圍  *
//       **********************************
	if(Px>MAXVAL)
		Px=MAXVAL;
	else if(Px<0) 
		Px=0;/*預測修正*/
//       ******************** 	
//       *    計算Errval    *
//       ********************
   	Errval=Ix-Px;

	if(SIGN==-1)
		Errval=-Errval;

	if(Errval>0)
		Errval=(Errval+NEAR)/(2*NEAR+1);
	else
		Errval=-(NEAR-Errval)/(2*NEAR+1);/*量化預測誤差*/
	Rx=Px+SIGN*Errval*(2*NEAR+1);/*重建*/
	
	if(Rx<0)
		Rx=0;
	else if(Rx>MAXVAL)
		Rx=MAXVAL;
    *(f+LinX*(y+2)+RowX)=Rx;/*用重建值代替實際值*/
//        ******************************************************	
//        *   將Errval規整到[-(RANGE-1)/2..+RANGE/2)的范圍     *
//        ******************************************************
	Errval=ModRange(Errval);
//        ***********************************	
//        *    將Errval映射到MErrval        *
//        *********************************** 
	k=LG(Q);
	if((NEAR==0)&&(k==0)&&(2*B[Q]<=-N[Q]))
	{
		if(Errval>=0)
			MErrval=2*Errval+1;
		else
			MErrval=-2*(Errval+1);
	}
	else{
		if(Errval>=0)
			MErrval=2*Errval;
		else
			MErrval=-2*Errval-1;
	}
//        **********************************	
//        *      對MErrval進行編碼         *
//        **********************************
	    interim=MErrval;
		interim=interim>>k;/*除最低k位以外的高位*/
		if(interim<((unsigned)(LIMIT-qbpp-1)))
		{
			unsigned b,c;
 			c=~(~0<<k);
			b=c&MErrval;/*截取MErrval的最低k位*/
			output=(output<<(interim+1))+1;/*左移interim+1得到interim+1個零,加一后即interim個零接一個1*/
   			output=output<<k;
			output=output+b;
//         *******************************   
//         *     向二進制文件寫碼流      *
//         *******************************			
		    pp=cnt;
			cnt=cnt+interim+1+k; 		
            writecode(&cnt,&pp,&output,&code);
			
		}
		else
		{
			unsigned b,c;
			output=(output<<(LIMIT-qbpp))+1;/*當前碼流為:LIMIT-qbpp-1個零,一個1*/
			output=output<<qbpp;/*后接qbpp位的數字*/
			c=~(~0<<qbpp);
			b=c&(MErrval-1);/*取MErrval-1的后qbpp位*/
			output=output+b;
	        pp=cnt;
			cnt=cnt+LIMIT; 		
            writecode(&cnt,&pp,&output,&code);

		}
//      *********************************		
//      *        更新各個變量           *
//      *********************************		
		B[Q]=B[Q]+Errval*(2*NEAR+1);
		A[Q]=A[Q]+abs(Errval);
		if(N[Q]==RESET)
		{
			A[Q]=A[Q]>>1;
			B[Q]=B[Q]>>1;
			N[Q]=N[Q]>>1;
		}
		N[Q]=N[Q]+1;/*N[Q]指此種上下文出現的次數,最多為64次*/
//		Nt[Q]=Nt[Q]+1;
		if(B[Q]<=-N[Q]){
			B[Q]=B[Q]+N[Q];
			if(C[Q]>MIN_C)
				C[Q]=C[Q]-1;
			if(B[Q]<=-N[Q])
				B[Q]=-N[Q]+1;
		}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩高清一区二区不卡| 日韩三区在线观看| 日韩午夜av一区| 1024国产精品| 精品一区二区在线视频| 欧洲精品一区二区| 国产日韩欧美精品综合| 亚洲成av人片| 色综合欧美在线视频区| 久久免费电影网| 蜜臀av一区二区在线观看| 色综合 综合色| 中日韩免费视频中文字幕| 蜜臀精品一区二区三区在线观看| 欧美亚洲动漫另类| 国产欧美一区二区精品忘忧草| 亚洲成人av电影| 日本韩国欧美国产| 国产精品久久久久久久岛一牛影视| 狠狠色伊人亚洲综合成人| 欧美精三区欧美精三区| 亚洲影视在线观看| 在线中文字幕一区二区| 亚洲靠逼com| 91福利国产精品| 亚洲另类色综合网站| 色视频成人在线观看免| 国产精品国产三级国产普通话三级| 久久成人免费网站| 日韩精品最新网址| 激情五月婷婷综合网| 欧美mv日韩mv| 国产伦精品一区二区三区免费迷| 久久久久久影视| 成人av资源在线观看| 综合久久一区二区三区| aaa国产一区| 亚洲免费观看高清完整版在线| 风间由美性色一区二区三区| 国产欧美精品在线观看| 91在线免费播放| 一区二区三区不卡在线观看| 欧美亚洲一区二区在线观看| 午夜一区二区三区视频| 91精品国产综合久久香蕉麻豆| 日韩综合一区二区| wwww国产精品欧美| 成人高清视频在线观看| 亚洲一区免费在线观看| 欧美日韩的一区二区| 精品一区二区三区在线播放| 国产视频一区在线观看| 日本国产一区二区| 蜜臀av一区二区在线免费观看 | 国产精品久久久久久久久免费相片 | 欧美一区二区三区男人的天堂| 麻豆国产欧美一区二区三区| 国产色一区二区| 一本大道久久a久久综合| 日韩黄色在线观看| 国产亚洲精品久| 欧美视频中文一区二区三区在线观看| 免费成人在线视频观看| **欧美大码日韩| 欧美一二三区精品| 99久久国产综合精品色伊| 视频一区二区三区在线| 欧美激情在线一区二区三区| 欧美日韩大陆一区二区| 国产成人精品三级| 爽爽淫人综合网网站| 国产精品拍天天在线| 91精品国产欧美一区二区18| 成人av影院在线| 另类的小说在线视频另类成人小视频在线 | 成人一道本在线| 亚洲成a天堂v人片| 国产精品萝li| 日韩女同互慰一区二区| 91黄视频在线| www.性欧美| 国产精品一二三区在线| 亚洲观看高清完整版在线观看 | 91精品国产一区二区三区香蕉| 国产成人av一区二区| 亚洲大尺度视频在线观看| 欧美激情资源网| 精品福利二区三区| 在线播放一区二区三区| 91久久精品国产91性色tv| 成人精品视频.| 国产一区二区精品久久99| 日韩成人一级片| 亚洲一二三四区不卡| 综合网在线视频| 国产日产欧美一区二区视频| 欧美成人性战久久| 欧美丝袜丝交足nylons图片| 91美女片黄在线观看91美女| 国产美女娇喘av呻吟久久| 蜜桃一区二区三区在线| 视频一区二区三区入口| 性欧美疯狂xxxxbbbb| 亚洲中国最大av网站| 亚洲靠逼com| 亚洲伊人色欲综合网| 亚洲第一狼人社区| 亚洲在线视频一区| 亚洲成a人v欧美综合天堂下载 | 欧美乱妇一区二区三区不卡视频| 97久久超碰国产精品| kk眼镜猥琐国模调教系列一区二区| 国模套图日韩精品一区二区| 国产美女久久久久| 成人午夜私人影院| 99免费精品在线观看| 99久久精品情趣| 日本精品一区二区三区高清| 91国在线观看| 欧美精品xxxxbbbb| 欧美一区二区黄色| 欧美刺激午夜性久久久久久久| 日韩午夜激情视频| 久久综合色之久久综合| 国产视频在线观看一区二区三区 | 成人免费毛片aaaaa**| 丁香桃色午夜亚洲一区二区三区| 国产成人精品一区二| 91在线小视频| 欧美日韩国产综合一区二区| 日韩一区二区三区精品视频| 精品久久久久久无| 中文字幕欧美激情| 亚洲黄色片在线观看| 日欧美一区二区| 国产麻豆视频精品| 日本乱码高清不卡字幕| 欧美美女直播网站| www成人在线观看| 国产精品乱码人人做人人爱| 亚洲欧洲制服丝袜| 免费一区二区视频| 成人网页在线观看| 欧美色倩网站大全免费| 精品久久久久久久久久久院品网| 国产视频一区二区在线观看| 综合精品久久久| 免费看欧美女人艹b| 成人av在线电影| 日韩一二三四区| 亚洲精品视频免费看| 日韩电影在线观看一区| 岛国精品在线播放| 欧美群妇大交群中文字幕| 国产亚洲欧美日韩在线一区| 亚洲黄色免费电影| 国产a区久久久| 3d成人动漫网站| 日韩伦理电影网| 国产一区二区电影| 91精品中文字幕一区二区三区| 欧美国产精品久久| 蜜桃免费网站一区二区三区| 91在线观看地址| 国产视频亚洲色图| 免费在线看成人av| 欧美亚洲国产bt| 国产精品久久久久国产精品日日| 日本不卡1234视频| 91官网在线免费观看| 国产精品美女久久久久久| 狂野欧美性猛交blacked| 欧美蜜桃一区二区三区| 亚洲三级免费电影| 国产大陆亚洲精品国产| 91精品国产乱码| 亚洲国产成人av网| 在线亚洲免费视频| 亚洲三级在线免费| 99精品国产91久久久久久| 久久久91精品国产一区二区三区| 日韩电影在线一区二区| 欧美日韩不卡在线| 洋洋av久久久久久久一区| 99久久久久免费精品国产| 精品999在线播放| 久久精品国产第一区二区三区| 欧美群妇大交群的观看方式| 一个色妞综合视频在线观看| 91美女在线看| 一区二区三区久久| 欧洲精品视频在线观看| 夜夜精品视频一区二区| 色拍拍在线精品视频8848| 亚洲人快播电影网| 色综合久久综合中文综合网| 亚洲色图视频网站| 欧美中文字幕一区| 亚欧色一区w666天堂| 欧美日韩国产一区二区三区地区|