changeset 127:97bb1436e34c

change encode to Hextile from ZRLE
author e085711
date Tue, 02 Aug 2011 13:17:23 +0900
parents 762d2b7f1db2
children fa2122e5c807
files src/myVncProxy/MyRfbProto.java src/myVncProxy/ProxyVncCanvas.java src/myVncProxy/VncProxyService.java
diffstat 3 files changed, 30 insertions(+), 64 deletions(-) [+]
line wrap: on
line diff
--- a/src/myVncProxy/MyRfbProto.java	Tue Aug 02 03:07:22 2011 +0900
+++ b/src/myVncProxy/MyRfbProto.java	Tue Aug 02 13:17:23 2011 +0900
@@ -39,7 +39,6 @@
 	private int rectW;
 	private int rectH;
 	private int encoding;
-	private int zLen;
 	private int bytesPixel;
 
 	private ServerSocket servSock;
@@ -296,10 +295,7 @@
 
 	void bufResetSend(int size) throws IOException {
 		is.reset();
-		int len = size;
-		if (available() < size)
-			len = available();
-		byte buffer[] = new byte[len];
+		byte buffer[] = new byte[size];
 		readFully(buffer);
 		sendData(buffer);
 	}
@@ -315,71 +311,35 @@
 		rectW = readU16();
 		rectH = readU16();
 		encoding = readU32();
-		System.out.println("encoding = "+ encoding);
-		switch (encoding) {
-		case RfbProto.EncodingZRLE:
-			zLen = readU32();
-			break;
-		case RfbProto.EncodingTight:
-			int comp_ctl = readU8();
-			zLen = 1;
-			if (comp_ctl == TightFill) {
-				if (bytesPixel == 1 ) {
-//					int idx = readU8();
-					zLen++;
-				}else {
-/*
-					byte[] buf = new byte[3];
-					readFully(buf);
-*/
-					zLen += 3;
-				}
-			}
-			if ( comp_ctl == TightJpeg) {
-/*
-				byte[] jpegData = new byte[readCompactLen()];
-				readFully(jpegData);
-*/
-				zLen += 3;
-				zLen += readCompactLen();
-			}
-			break;
-		default:
-			
-		}
-			
-		is.reset();
-/*
+
 		int dataLen;
 		switch (encoding) {
 		case RfbProto.EncodingRaw:
 			dataLen = rectW * rectH * 4 + 16;
-			mark(dataLen);
 			break;
-						case RfbProto.EncodingCopyRect:
-			dataLen = 16 + 4;
-			mark(dataLen);
+		case RfbProto.EncodingZRLE:
+			int zLen = readU32();
+			dataLen = zLen + 20;
 			break;
 		case RfbProto.EncodingRRE:
 		case RfbProto.EncodingCoRRE:
 		case RfbProto.EncodingHextile:
-			
 		case RfbProto.EncodingZlib:
 		case RfbProto.EncodingTight:
-		case RfbProto.EncodingZRLE:
-			dataLen = zLen + 20;
-			mark(dataLen);
-			break;
+		// dataLen <= EncodingRaw
 		default:
-			dataLen = 1000000;
-			mark(dataLen);
+			dataLen = rectW * rectH * 4 + 16;
+			break;
 		}
-	
-*/	
-	
+		System.out.println("dataLen = "+dataLen);
+		is.reset();
+		is.mark(dataLen);
+
 	}
 
+	
 	int checkAndMark() throws IOException {
+/*
 		int dataLen;
 		switch (encoding) {
 		case RfbProto.EncodingRaw:
@@ -415,6 +375,8 @@
 			is.mark(dataLen);
 		}
 		return dataLen;
+*/
+		return 0;
 	}
 	
 	void readSendData(int dataLen) throws IOException {
@@ -510,8 +472,9 @@
 		System.out.println("messageType=" + messageType);
 		System.out.println("rectangles=" + rectangles);
 		System.out.println("encoding=" + encoding);
-		System.out.println("rectX = "+rectX+": rectY = "+rectY);
-		System.out.println("rectW = "+rectW+": rectH = "+rectH);
+		System.out.println("rectX = "+ rectX +": rectY = "+rectY);
+		System.out.println("rectW = "+ rectW +": rectH = "+rectH);
+		System.out.println("rectW * rectH = " + rectW * rectH);
 		switch (encoding) {
 		case RfbProto.EncodingRaw:
 			System.out.println("rectW * rectH * 4 + 16 =" + rectW * rectH * 4
--- a/src/myVncProxy/ProxyVncCanvas.java	Tue Aug 02 03:07:22 2011 +0900
+++ b/src/myVncProxy/ProxyVncCanvas.java	Tue Aug 02 13:17:23 2011 +0900
@@ -371,6 +371,8 @@
 			 */
 			//rfb.sendDataToClient();
 			//rfb.sendDataToClient(bytesPixel);
+			rfb.regiFramebufferUpdate();
+			rfb.printFramebufferUpdate();
 			
 			int bufSize = (int)rfb.getNumBytesRead();
 			
@@ -414,14 +416,12 @@
 						updateFramebufferSize();
 						break;
 					}
-
 					if (rfb.updateRectEncoding == rfb.EncodingXCursor
 							|| rfb.updateRectEncoding == rfb.EncodingRichCursor) {
 						handleCursorShapeUpdate(rfb.updateRectEncoding, rx, ry,
 								rw, rh);
 						continue;
 					}
-
 					if (rfb.updateRectEncoding == rfb.EncodingPointerPos) {
 						softCursorMove(rx, ry);
 						cursorPosReceived = true;
@@ -531,8 +531,8 @@
 			}
 
 			bufSize = (int)rfb.getNumBytesRead() - bufSize;
-//			System.out.println("bufSize="+bufSize);
-//			rfb.bufResetSend(bufSize);
+			System.out.println("bufSize="+bufSize);
+			rfb.bufResetSend(bufSize);
 
 
 
--- a/src/myVncProxy/VncProxyService.java	Tue Aug 02 03:07:22 2011 +0900
+++ b/src/myVncProxy/VncProxyService.java	Tue Aug 02 13:17:23 2011 +0900
@@ -326,7 +326,7 @@
 			if (nEncodingsSaved < 1) {
 				// Choose Tight or ZRLE encoding for the very first update.
 				System.out.println("Using Tight/ZRLE encodings");
-				preferredEncoding = RfbProto.EncodingTight;
+//				preferredEncoding = RfbProto.EncodingTight;
 			} else if (kbitsPerSecond > 2000
 					&& encodingsSaved[0] != RfbProto.EncodingHextile) {
 				// Switch to Hextile if the connection speed is above 2Mbps.
@@ -338,7 +338,7 @@
 				// Switch to Tight/ZRLE if the connection speed is below 1Mbps.
 				System.out.println("Throughput " + kbitsPerSecond
 						+ " kbit/s - changing to Tight/ZRLE encodings");
-				preferredEncoding = RfbProto.EncodingTight;
+//				preferredEncoding = RfbProto.EncodingTight;
 			} else {
 				// Don't change the encoder.
 				if (autoSelectOnly)
@@ -359,26 +359,29 @@
 		if (options.useCopyRect) {
 			encodings[nEncodings++] = RfbProto.EncodingCopyRect;
 		}
+/*
 		if (preferredEncoding != RfbProto.EncodingTight) {
 			encodings[nEncodings++] = RfbProto.EncodingTight;
 		}
 		if (preferredEncoding != RfbProto.EncodingZRLE) {
 			encodings[nEncodings++] = RfbProto.EncodingZRLE;
 		}
+*/
 		if (preferredEncoding != RfbProto.EncodingHextile) {
 			encodings[nEncodings++] = RfbProto.EncodingHextile;
 		}
+/*
 		if (preferredEncoding != RfbProto.EncodingZlib) {
 			encodings[nEncodings++] = RfbProto.EncodingZlib;
 		}
-/*
+
 		if (preferredEncoding != RfbProto.EncodingCoRRE) {
 			encodings[nEncodings++] = RfbProto.EncodingCoRRE;
 		}
 		if (preferredEncoding != RfbProto.EncodingRRE) {
 			encodings[nEncodings++] = RfbProto.EncodingRRE;
 		}
-
+/*
 		if (options.compressLevel >= 0 && options.compressLevel <= 9) {
 			encodings[nEncodings++] = RfbProto.EncodingCompressLevel0
 					+ options.compressLevel;