comparison src/myVncProxy/MyRfbProto.java @ 127:97bb1436e34c

change encode to Hextile from ZRLE
author e085711
date Tue, 02 Aug 2011 13:17:23 +0900
parents 762d2b7f1db2
children fa2122e5c807
comparison
equal deleted inserted replaced
126:762d2b7f1db2 127:97bb1436e34c
37 private int rectX; 37 private int rectX;
38 private int rectY; 38 private int rectY;
39 private int rectW; 39 private int rectW;
40 private int rectH; 40 private int rectH;
41 private int encoding; 41 private int encoding;
42 private int zLen;
43 private int bytesPixel; 42 private int bytesPixel;
44 43
45 private ServerSocket servSock; 44 private ServerSocket servSock;
46 private int acceptPort; 45 private int acceptPort;
47 private byte initData[]; 46 private byte initData[];
294 System.out.println("numBytesRead=" + numBytesRead); 293 System.out.println("numBytesRead=" + numBytesRead);
295 } 294 }
296 295
297 void bufResetSend(int size) throws IOException { 296 void bufResetSend(int size) throws IOException {
298 is.reset(); 297 is.reset();
299 int len = size; 298 byte buffer[] = new byte[size];
300 if (available() < size)
301 len = available();
302 byte buffer[] = new byte[len];
303 readFully(buffer); 299 readFully(buffer);
304 sendData(buffer); 300 sendData(buffer);
305 } 301 }
306 302
307 303
313 rectX = readU16(); 309 rectX = readU16();
314 rectY = readU16(); 310 rectY = readU16();
315 rectW = readU16(); 311 rectW = readU16();
316 rectH = readU16(); 312 rectH = readU16();
317 encoding = readU32(); 313 encoding = readU32();
318 System.out.println("encoding = "+ encoding); 314
319 switch (encoding) {
320 case RfbProto.EncodingZRLE:
321 zLen = readU32();
322 break;
323 case RfbProto.EncodingTight:
324 int comp_ctl = readU8();
325 zLen = 1;
326 if (comp_ctl == TightFill) {
327 if (bytesPixel == 1 ) {
328 // int idx = readU8();
329 zLen++;
330 }else {
331 /*
332 byte[] buf = new byte[3];
333 readFully(buf);
334 */
335 zLen += 3;
336 }
337 }
338 if ( comp_ctl == TightJpeg) {
339 /*
340 byte[] jpegData = new byte[readCompactLen()];
341 readFully(jpegData);
342 */
343 zLen += 3;
344 zLen += readCompactLen();
345 }
346 break;
347 default:
348
349 }
350
351 is.reset();
352 /*
353 int dataLen; 315 int dataLen;
354 switch (encoding) { 316 switch (encoding) {
355 case RfbProto.EncodingRaw: 317 case RfbProto.EncodingRaw:
356 dataLen = rectW * rectH * 4 + 16; 318 dataLen = rectW * rectH * 4 + 16;
357 mark(dataLen); 319 break;
358 break; 320 case RfbProto.EncodingZRLE:
359 case RfbProto.EncodingCopyRect: 321 int zLen = readU32();
360 dataLen = 16 + 4; 322 dataLen = zLen + 20;
361 mark(dataLen);
362 break; 323 break;
363 case RfbProto.EncodingRRE: 324 case RfbProto.EncodingRRE:
364 case RfbProto.EncodingCoRRE: 325 case RfbProto.EncodingCoRRE:
365 case RfbProto.EncodingHextile: 326 case RfbProto.EncodingHextile:
366
367 case RfbProto.EncodingZlib: 327 case RfbProto.EncodingZlib:
368 case RfbProto.EncodingTight: 328 case RfbProto.EncodingTight:
369 case RfbProto.EncodingZRLE: 329 // dataLen <= EncodingRaw
370 dataLen = zLen + 20;
371 mark(dataLen);
372 break;
373 default: 330 default:
374 dataLen = 1000000; 331 dataLen = rectW * rectH * 4 + 16;
375 mark(dataLen); 332 break;
376 } 333 }
334 System.out.println("dataLen = "+dataLen);
335 is.reset();
336 is.mark(dataLen);
337
338 }
339
377 340
378 */
379
380 }
381
382 int checkAndMark() throws IOException { 341 int checkAndMark() throws IOException {
342 /*
383 int dataLen; 343 int dataLen;
384 switch (encoding) { 344 switch (encoding) {
385 case RfbProto.EncodingRaw: 345 case RfbProto.EncodingRaw:
386 dataLen = rectW * rectH * 4 + 16; 346 dataLen = rectW * rectH * 4 + 16;
387 is.mark(dataLen); 347 is.mark(dataLen);
413 default: 373 default:
414 dataLen = 1000000; 374 dataLen = 1000000;
415 is.mark(dataLen); 375 is.mark(dataLen);
416 } 376 }
417 return dataLen; 377 return dataLen;
378 */
379 return 0;
418 } 380 }
419 381
420 void readSendData(int dataLen) throws IOException { 382 void readSendData(int dataLen) throws IOException {
421 byte buffer[] = new byte[dataLen]; 383 byte buffer[] = new byte[dataLen];
422 readFully(buffer); 384 readFully(buffer);
508 void printFramebufferUpdate() { 470 void printFramebufferUpdate() {
509 471
510 System.out.println("messageType=" + messageType); 472 System.out.println("messageType=" + messageType);
511 System.out.println("rectangles=" + rectangles); 473 System.out.println("rectangles=" + rectangles);
512 System.out.println("encoding=" + encoding); 474 System.out.println("encoding=" + encoding);
513 System.out.println("rectX = "+rectX+": rectY = "+rectY); 475 System.out.println("rectX = "+ rectX +": rectY = "+rectY);
514 System.out.println("rectW = "+rectW+": rectH = "+rectH); 476 System.out.println("rectW = "+ rectW +": rectH = "+rectH);
477 System.out.println("rectW * rectH = " + rectW * rectH);
515 switch (encoding) { 478 switch (encoding) {
516 case RfbProto.EncodingRaw: 479 case RfbProto.EncodingRaw:
517 System.out.println("rectW * rectH * 4 + 16 =" + rectW * rectH * 4 480 System.out.println("rectW * rectH * 4 + 16 =" + rectW * rectH * 4
518 + 16); 481 + 16);
519 break; 482 break;