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