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

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

?? rawnjl2.cc

?? 在Linux開發環境下實現JPEG_LS壓縮標注
?? CC
?? 第 1 頁 / 共 4 頁
字號:
//cerr << "\tRUNcnt " << RUNcnt << endl;					// Encode length of run (A.7.1.2) ...					Uint16 rm;					while (RUNcnt >= (rm=J_rm[RUNIndex])) {//cerr << "\tRUNIndex " << RUNIndex << endl;//cerr << "\trm " << rm << endl;						writeBit(out,1);						RUNcnt-=rm;//cerr << "\tRUNcnt decremented to " << RUNcnt << endl;						Assert(RUNcnt >= 0);	// is why int not unsigned						if (RUNIndex < 31) {	// ie. value ranges from 0..31							++RUNIndex;//cerr << "\tRUNIndex incremented to " << RUNIndex << endl;						}					}					if (col < COLUMNS) {	// Must have been terminated by different value//cerr << "pixel[" << row << "," << col << "] = " << thisRow[col] << endl;//cerr << "\tcol " << col << endl;//cerr << "\tDifferent value is " << thisRow[col] << endl;						writeBit(out,0);						// Append least significant J[RUNIndex] bits						Uint16 bits=J[RUNIndex];						Uint32 value=RUNcnt;						Assert(value < J_rm[RUNIndex]);	// Does it really fit in this ? It should else would have been coded by J_rm[RUNIndex]//cerr << "\tRemaining RUNcnt " << RUNcnt << endl;//cerr << "\tEncoding in bits " << bits << endl;						// msb bit is written first						while (bits--) {							Uint32 bit=(value>>bits)&1;							writeBit(out,bit);  // use the decremented bits as shift						}						// Encode run interruption sample (A.7.2) ...//cerr << "\tcol at end of run " << col << endl;						Assert(col<COLUMNS);//cerr << "\tBefore encoding value that ends run " << endl;//dumpWriteBitPosition();//cerr << "\tValue that ends run " << thisRow[col] << endl;						// First update local context for interrupting sample, since weren't kept updated during run						if (row > 0) {							Rb=prevRow[col];							Ra=(col > 0) ? thisRow[col-1] : Rb;						}						else {							Rb=0;							Ra=(col > 0) ? thisRow[col-1] : 0;						}//cerr << "\t\tUpdated Ra = " << Ra << endl;//cerr << "\t\tUpdated Rb = " << Rb << endl;						codecRunEndSample(thisRow[col],Ra,Rb,RANGE,NEAR,MAXVAL,RESET,LIMIT,qbpp,J[RUNIndex],A,N,Nn,in,out,decompressing);//cerr << "\tAfter encoding value that ends run " << endl;//dumpWriteBitPosition();						if (RUNIndex > 0) {							--RUNIndex;	// NB. Do this AFTER J[RUNIndex] used in the limited length Golomb coding//cerr << "\tRUNIndex decremented to " << RUNIndex << endl;						}					}					else {						// Aborted at end of row//cerr << "\tEnd of row" << endl;						if (RUNcnt > 0) {							writeBit(out,1);		// Append an extra 1											// decoder knows to stop at end of row											// though remainder can't be > 1<<J[RUNIndex]//cerr << "1 for end of row" << endl;//cerr << "\tAfter indicating end of row " << endl;//dumpWriteBitPosition();						}					}				}			}			else				{				// Regular mode				// Gradient quantization ... (A.3.3)				Int16 Q1,Q2,Q3;				if      (D1 <= -T3)   Q1=-4;				else if (D1 <= -T2)   Q1=-3;				else if (D1 <= -T1)   Q1=-2;				else if (D1 <  -NEAR) Q1=-1;				else if (D1 <=  NEAR) Q1= 0;				else if (D1 <   T1)   Q1= 1;				else if (D1 <   T2)   Q1= 2;				else if (D1 <   T3)   Q1= 3;				else                  Q1= 4;				if      (D2 <= -T3)   Q2=-4;				else if (D2 <= -T2)   Q2=-3;				else if (D2 <= -T1)   Q2=-2;				else if (D2 <  -NEAR) Q2=-1;				else if (D2 <=  NEAR) Q2= 0;				else if (D2 <   T1)   Q2= 1;				else if (D2 <   T2)   Q2= 2;				else if (D2 <   T3)   Q2= 3;				else                  Q2= 4;				if      (D3 <= -T3)   Q3=-4;				else if (D3 <= -T2)   Q3=-3;				else if (D3 <= -T1)   Q3=-2;				else if (D3 <  -NEAR) Q3=-1;				else if (D3 <=  NEAR) Q3= 0;				else if (D3 <   T1)   Q3= 1;				else if (D3 <   T2)   Q3= 2;				else if (D3 <   T3)   Q3= 3;				else                  Q3= 4;//cerr << "\t\tQ1 = " << Q1 << endl;//cerr << "\t\tQ2 = " << Q2 << endl;//cerr << "\t\tQ3 = " << Q3 << endl;				// Context merging and determination of SIGN ... (A.3.4)				Int16 SIGN;				// "If the 1st non-zero component of vector (Q1,Q2,Q3) is negative" ...				if ( Q1 < 0				 || (Q1 == 0 && Q2 < 0)				 || (Q1 == 0 && Q2 == 0 && Q3 < 0) ) {					Q1=-Q1;					Q2=-Q2;					Q3=-Q3;					SIGN=-1;	// signifies -ve				}				else {					SIGN=1;		// signifies +ve				}//cerr << "\t\tSIGN= " << SIGN << endl;//cerr << "\t\tQ1 after SIGN = " << Q1 << endl;//cerr << "\t\tQ2 after SIGN = " << Q2 << endl;//cerr << "\t\tQ3 after SIGN = " << Q3 << endl;				// The derivation of Q is not specified in the standard :(				// Let's try this approach ....				// Q1 can be 0 to 4 only				// Q1 1 to 4 and Q2 -4 to 4 and Q3 -4 to 4	= 4*9*9 = 324				// Q1 0 and Q2 1 to 4 only and Q3 -4 to 4	= 1*4*9 = 36				// Q1 0 and Q2 0 and Q3 0 to 4			= 1*1*5 = 5				// total of 365				// and 0,0,0 (Q == 360) only occurs for run mode or regular mode with sample interleaved				Uint16 Q;				if (Q1 == 0) {					if (Q2 == 0) {						Q=360+Q3;		// fills 360..364					}					else {	// Q2 is 1 to 4						Q=324+(Q2-1)*9+(Q3+4);	// fills 324..359					}				}				else {		// Q1 is 1 to 4					Q=(Q1-1)*81+(Q2+4)*9+(Q3+4);	// fills 0..323				}//cerr << "\t\tQ = " << Q << endl;//if (Q >= nContexts) {//	cerr << "\t\tQ1 after SIGN = " << Q1 << endl;//	cerr << "\t\tQ2 after SIGN = " << Q2 << endl;//	cerr << "\t\tQ3 after SIGN = " << Q3 << endl;//	cerr << "\t\tQ itself = " << Q << endl;//}				Assert(Q<nContexts);	// Just in case				// Figure A.5 Edge detecting predictor ...				Int32 Px;	// Predicted value - not Uint16 to allow overrange before clamping				if      (Rc >= Maximum(Ra,Rb))	Px = Minimum(Ra,Rb);				else if (Rc <= Minimum(Ra,Rb))	Px = Maximum(Ra,Rb);				else				Px = (Int32)Ra+Rb-Rc;//cerr << "\t\tPx = " << Px << endl;				// Figure A.6 Prediction correction and clamping ...				Px = Px + ((SIGN > 0) ? C[Q] : -C[Q]);//cerr << "\t\tC[Q] = " << C[Q] << endl;//cerr << "\t\tPx corrected = " << Px << endl;				clampPredictedValue(Px,MAXVAL);//cerr << "\t\tPx clamped = " << Px << endl;				// Figure A.10 Prediction error Golomb encoding and decoding...				Uint16 k = determineGolombParameter(N[Q],A[Q]);								Uint32 MErrval;				Int32 Errval;				Int32 updateErrval;				if (decompressing) {					// Decode Golomb mapped error from input...					decodeMappedErrvalWithGolomb(k,LIMIT,qbpp,MErrval,in);//cerr << "\t\tMErrval = " << MErrval << endl;					// Unmap error from non-negative (inverse of A.5.2 Figure A.11) ...					if (NEAR == 0 && k == 0 && 2*B[Q] <= -N[Q]) {						if (MErrval%2 != 0)							Errval=((Int32)MErrval-1)/2;	//  1 becomes  0,  3 becomes  1,  5 becomes  2						else							Errval=-(Int32)MErrval/2 - 1;	//  0 becomes -1,  2 becomes -2,  4 becomes -3					}					else {						if (MErrval%2 == 0)							Errval=(Int32)MErrval/2;	//  0 becomes  0, 2 becomes  1,  4 becomes  2						else							Errval=-((Int32)MErrval + 1)/2;	//  1 becomes -1, 3 becomes -2					}					updateErrval=Errval;			// NB. Before dequantization and sign correction					deQuantizeErrval(NEAR,Errval);//cerr << "\t\tErrval SIGN uncorrected = " << Errval << endl;					if (SIGN < 0) Errval=-Errval;		// if "context type" was negative//cerr << "\t\tErrval result = " << Errval << endl;					Rx=Px+Errval;					// modulo(RANGE*(2*NEAR+1)) as per F.1 Item 14					// (NB. Is this really the reverse of the encoding procedure ???)					if (Rx < -NEAR)						Rx+=RANGE*(2*NEAR+1);					else if (Rx > MAXVAL+NEAR)						Rx-=RANGE*(2*NEAR+1);					clampPredictedValue(Rx,MAXVAL);					// Apply inverse point transform and mapping table when implemented					thisRow[col]=(Uint16)Rx;//cerr << "pixel[" << row << "," << col << "] = " << thisRow[col] << endl;				}				else {	// compressing ...					Int32 Ix = thisRow[col];	// Input value - not Uint16 to allow overrange before clamping//cerr << "pixel[" << row << "," << col << "] = " << thisRow[col] << endl;					Errval = Ix - Px;		// watch this for bad unsigned->signed conversion :(//cerr << "\t\tErrval start = " << Errval << endl;					if (SIGN < 0) Errval=-Errval;	// if "context type" was negative//cerr << "\t\tErrval SIGN corrected = " << Errval << endl;					if (NEAR > 0) {	// For near-lossless, quantize Errval and derive reconstructed value (A.4.4)						quantizeErrval(NEAR,Errval);						// Replace with the reconstructed value the decoder will have						// (obviously if in lossless mode there will be no difference)						Rx=Px+SIGN*Errval*(2*NEAR+1);						clampPredictedValue(Rx,MAXVAL);											thisRow[col]=(Uint16)Rx;					}					// Modulo reduction of the prediction error (A.4.5)					if (Errval < 0)			Errval=Errval+RANGE;					if (Errval >= (RANGE+1)/2)	Errval=Errval-RANGE;//cerr << "\t\tErrval modulo " << RANGE << " = " << Errval << endl;					updateErrval=Errval;			// NB. After sign correction but before mapping					// Prediction error encoding (A.5)					// Golomb k parameter determined already outside decompress/compress test					// Map Errval to non-negative (A.5.2) ...					if (NEAR == 0 && k == 0 && 2*B[Q] <= -N[Q]) {						if (Errval >= 0)							MErrval =  2*Errval + 1;	//  0 becomes 1,  1 becomes 3,  2 becomes 5						else							MErrval = -2*(Errval+1);	// -1 becomes 0, -2 becomes 2, -3 becomes 4					}					else {						if (Errval >= 0)							MErrval =  2*Errval;		//  0 becomes 0,  1 becomes 2,  2 becomes 4						else							MErrval = -2*Errval - 1;	// -1 becomes 1, -2 becomes 3					}//cerr << "\t\tMErrval = " << MErrval << endl;					encodeMappedErrvalWithGolomb(k,LIMIT,qbpp,MErrval,out);				}				// Update variables (A.6) ...//cerr << "\t\tUpdate variables with error updateErrval = " << updateErrval << endl;//cerr << "\t\tA[Q] old = " << A[Q] << endl;//cerr << "\t\tB[Q] old = " << B[Q] << endl;//cerr << "\t\tC[Q] old = " << C[Q] << endl;//cerr << "\t\tN[Q] old = " << N[Q] << endl;				// A.6.1 Use the signed error after modulo reduction (figure A.12 note). which is updateErrval				B[Q]=B[Q]+updateErrval*(2*NEAR+1);				A[Q]=A[Q]+Abs(updateErrval);				if (N[Q] == RESET) {					A[Q]=A[Q]>>1;					B[Q]=B[Q]>>1;					N[Q]=N[Q]>>1;				}				++N[Q];//cerr << "\t\tA[Q] updated = " << A[Q] << endl;//cerr << "\t\tB[Q] updated = " << B[Q] << endl;//cerr << "\t\tC[Q] updated = " << C[Q] << endl;//cerr << "\t\tN[Q] updated = " << N[Q] << endl;				// A.6.2 Context dependent bias cancellation ...				if (B[Q] <= -N[Q]) {					B[Q]+=N[Q];					if (C[Q] > MIN_C) --C[Q];					if (B[Q] <= -N[Q]) B[Q]=-N[Q]+1;				}				else if (B[Q] > 0) {					B[Q]-=N[Q];					if (C[Q] < MAX_C) ++C[Q];					if (B[Q] > 0) B[Q]=0;				}//cerr << "\t\tA[Q] bias cancelled = " << A[Q] << endl;//cerr << "\t\tB[Q] bias cancelled = " << B[Q] << endl;//cerr << "\t\tC[Q] bias cancelled = " << C[Q] << endl;//cerr << "\t\tN[Q] bias cancelled = " << N[Q] << endl;			}		}		if (decompressing) {			if (!writeRow(out,thisRow,COLUMNS,bpp)) Assert(0);		}		Uint16 *tmpRow=thisRow;		thisRow=prevRow;		prevRow=tmpRow;	}	if (!decompressing) writeBitFlush(out);	if (!decompressing && useJPEGmarkers)  {		writeEOI(out);	}	if (rowA) delete[] rowA;	if (rowB) delete[] rowB;	if (A) delete[] A;	if (B) delete[] B;	if (C) delete[] C;	if (N) delete[] N;	return success ? 0 : 1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品久久理论片| 欧美在线观看视频在线| 天堂一区二区在线| 亚洲人妖av一区二区| 久久婷婷综合激情| 久久影视一区二区| 久久综合九色综合欧美98 | 国产精品911| 卡一卡二国产精品| 国产一区二区三区在线看麻豆| 日av在线不卡| 国产中文一区二区三区| 国产一本一道久久香蕉| 国产精品原创巨作av| 99久久亚洲一区二区三区青草| 成人黄色电影在线| 日本久久一区二区三区| 欧美日韩二区三区| 日韩欧美国产精品| 国产欧美一区二区精品性色超碰 | 欧美男女性生活在线直播观看| 欧美日韩国产综合一区二区| 3d成人动漫网站| 欧美va亚洲va| 一区二区中文字幕在线| 亚洲影院在线观看| 狠狠色综合色综合网络| 亚洲青青青在线视频| 91色在线porny| 欧美片在线播放| 国产性色一区二区| 亚洲一级不卡视频| 黄一区二区三区| 在线观看视频欧美| 欧美精品一区二区三区蜜臀| 一区视频在线播放| 久久成人免费网站| 色婷婷精品久久二区二区蜜臂av| 91精品国产色综合久久不卡蜜臀 | 成人天堂资源www在线| 色吧成人激情小说| 精品成人一区二区| 亚洲一区二区在线视频| 国产精品亚洲午夜一区二区三区 | 国产精品中文字幕一区二区三区| 日本韩国一区二区三区视频| 欧美大胆人体bbbb| 一区二区三区四区精品在线视频| 久88久久88久久久| 欧美日韩高清一区二区不卡| 中文字幕在线一区二区三区| 经典三级一区二区| 欧美日韩国产精品成人| 亚洲免费高清视频在线| 国产美女精品人人做人人爽| 欧美嫩在线观看| 夜夜嗨av一区二区三区中文字幕| 国产精品一二三在| 欧美成人一区二区| 亚洲国产精品自拍| caoporn国产精品| 国产亚洲一区二区在线观看| 美日韩黄色大片| 欧美亚洲一区二区在线| 亚洲免费观看在线视频| 成人动漫在线一区| 久久精品夜夜夜夜久久| 国产在线播放一区二区三区| 欧美一区二区视频在线观看2022| 亚洲综合一区二区精品导航| 91视频在线看| 久久婷婷色综合| 亚洲第一久久影院| 人人狠狠综合久久亚洲| 欧美色欧美亚洲另类二区| 欧美日韩三级视频| 亚洲伦理在线免费看| 91日韩一区二区三区| 中文字幕亚洲视频| 99re在线视频这里只有精品| 亚洲视频一区在线| 色婷婷激情一区二区三区| 亚洲欧美综合另类在线卡通| 91在线小视频| 一区二区三区在线观看网站| 在线亚洲免费视频| 亚洲国产乱码最新视频| 欧美高清精品3d| 老司机午夜精品99久久| 久久久久久免费| 成人高清免费在线播放| 亚洲男人的天堂av| 在线精品亚洲一区二区不卡| 午夜精品一区二区三区电影天堂| 欧美丰满少妇xxxxx高潮对白| 久久精品免费看| 国产女人18水真多18精品一级做| kk眼镜猥琐国模调教系列一区二区| 日韩一区在线播放| 欧美日韩午夜影院| 久久精品国产第一区二区三区| 久久久久久久久久久99999| 粉嫩av一区二区三区粉嫩 | 欧美亚男人的天堂| 日韩影视精彩在线| 久久免费视频色| 91丨porny丨户外露出| 青青草国产成人av片免费| 国产亚洲欧美在线| 欧美性一二三区| 国产一区二区三区在线观看免费| 国产精品乱码人人做人人爱| 欧美日韩国产精选| 成人自拍视频在线观看| 国产婷婷精品av在线| 91精品午夜视频| 99久久久免费精品国产一区二区| 亚洲电影视频在线| 欧美国产精品v| 8x8x8国产精品| 91免费小视频| 精品一区二区免费视频| 国产精品久久国产精麻豆99网站 | 99久久99精品久久久久久 | 成人精品视频.| 日韩精品一卡二卡三卡四卡无卡| 欧美激情艳妇裸体舞| 欧美一区二区在线看| 91麻豆蜜桃一区二区三区| 极品美女销魂一区二区三区| 亚洲精品乱码久久久久久黑人| 日韩免费性生活视频播放| 在线这里只有精品| 成人久久视频在线观看| 国产一区91精品张津瑜| 日本麻豆一区二区三区视频| 一区二区三区日韩精品| 国产精品乱子久久久久| 久久蜜桃一区二区| 日韩精品一区二区在线观看| 欧美综合一区二区三区| 91在线精品一区二区| 国产精品77777竹菊影视小说| 日韩中文字幕区一区有砖一区| 樱花影视一区二区| 亚洲日本在线a| 国产精品天干天干在观线| 久久色视频免费观看| 精品国产91洋老外米糕| 日韩欧美中文字幕制服| 欧美一区二区三区喷汁尤物| 欧美视频你懂的| 一本色道久久综合狠狠躁的推荐| 国产**成人网毛片九色| 成人一区二区三区视频在线观看| 激情久久久久久久久久久久久久久久| 热久久一区二区| 精品一区二区在线视频| 国产在线精品一区二区夜色| 精彩视频一区二区三区| 成人午夜电影小说| 99精品视频中文字幕| 色综合夜色一区| 欧美怡红院视频| 欧美三级在线播放| 制服视频三区第一页精品| 日韩欧美自拍偷拍| 久久久三级国产网站| 日本一二三四高清不卡| 99久久精品国产精品久久| 久久成人免费电影| 国产一区二区三区在线观看精品 | 免费看欧美美女黄的网站| 欧美男男青年gay1069videost| 3atv在线一区二区三区| 亚洲精品一区二区三区蜜桃下载| 激情综合色丁香一区二区| 极品少妇xxxx精品少妇| 91在线视频免费91| 欧美日韩美女一区二区| 在线播放一区二区三区| 精品视频在线免费| 欧美日韩国产一二三| 欧美精品一区二区三区蜜桃| 国产精品美女一区二区三区| 夜夜嗨av一区二区三区中文字幕| 日韩在线一区二区| 成人免费精品视频| 777xxx欧美| 国产精品色在线| 日韩国产高清在线| 成人美女在线观看| 91.xcao| 国产精品免费久久久久| 午夜精品久久久久久不卡8050| 国产毛片一区二区| 欧美福利视频导航| 亚洲综合一区在线| 亚洲女同一区二区| 国内外成人在线|