Mercurial > hg > Members > nobuyasu > tightVNCProxy
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;