comparison OpenSourceConference/index.html @ 9:95d46a58d75e

modify
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Thu, 08 Sep 2011 12:40:56 +0900
parents 7e05f4f580b7
children eaf3f3d169fe
comparison
equal deleted inserted replaced
8:a2ddbfc1a8f7 9:95d46a58d75e
630 </table> 630 </table>
631 </div> 631 </div>
632 <!-- PAGE --> 632 <!-- PAGE -->
633 <div class="slide"> 633 <div class="slide">
634 <h1>ZRLEE</h1> 634 <h1>ZRLEE</h1>
635 <li>そこで、Top ProxyにZRLEのデータを再度圧縮し直すことで辞書を付けてもらうことにした。</li> 635 <li>そこで、Top ProxyにZRLEのデータを再度圧縮し直すことで辞書を付けてもらうことにした。以下はその部分のソースである。</li>
636 <small> 636 <small>
637 <pre> 637 <pre>
638 Deflater nDeflater = deflater; // new Deflater(); 638 Deflater nDeflater = deflater; // new Deflater();
639 LinkedList<ByteBuffer> out = new LinkedList<ByteBuffer>(); 639 LinkedList<ByteBuffer> out = new LinkedList<ByteBuffer>();
640 unzip(inflater, inputs, 0 , out, INFLATE_BUFSIZE); 640 unzip(inflater, inputs, 0 , out, INFLATE_BUFSIZE);
655 </table> 655 </table>
656 </div> 656 </div>
657 <!-- PAGE --> 657 <!-- PAGE -->
658 <div class="slide"> 658 <div class="slide">
659 <h1>ZRLEE</h1> 659 <h1>ZRLEE</h1>
660 <li>クライアント側は毎回新しい解凍器(Deflater)を使うようにする。</li> 660 <li>クライアント側は毎回新しいZRLEのストリームを使うようにする。</li>
661 <pre> 661 <pre>
662 if (rfb.updateRectEncoding==RfbProto.EncodingZRLEE) zrleInStream = null; 662 if (rfb.updateRectEncoding==RfbProto.EncodingZRLEE)
663 zrleInStream = null;
663 if (zrleInStream == null) 664 if (zrleInStream == null)
664 zrleInStream = new ZlibInStream(); 665 zrleInStream = new ZlibInStream();
665 </pre> 666 </pre>
666 </div> 667 <li>JavaではZlibの辞書を取り出す機能がなかった為、このような方法をとることになった。</li>
667 <!-- PAGE --> 668 </div>
668 <div class="slide"> 669 <!-- PAGE -->
669 <h1>ZRLEの問題</h1> 670 <div class="slide">
670 <li>解凍に必要な辞書を取り出すことができないため、ZRLEのデータはそのまま投げるだけでは正しく解凍されない。</li> 671
671 <li>そこで、VNC Serverへ接続するTop ProxyはZRLEで送られてきたデータを毎回新しく圧縮し直すという方法をとった。</li> 672
672 <li>一度圧縮し直されたデータはそのまま流すことができる。よってクライアント側では圧縮し直す必要はない。 </li>
673 </div>
674 <!-- PAGE -->
675 <div class="slide">
676 <h1>データ量の見積もり</h1>
677 <li>先頭20バイトを読みupdate一回分のデータ量を調べる。</li>
678 <li>update1回分のデータを読み込み次のクライアントに送信する。</li>
679 <li>また、描画データを送信すると同時に画面の更新を行うようにする。</li>
680 <li class="incremental">描画データの管理はMulticastQueueで行った。 </li>
681 </div> 673 </div>
682 <!-- PAGE --> 674 <!-- PAGE -->
683 <div class="slide"> 675 <div class="slide">
684 <h1>MulticastQueue</h1> 676 <h1>MulticastQueue</h1>
685 <li>MulticastQueueはjava.util.CountDownLatchを用いて実装されたクラスである。 </li> 677 <li>MulticastQueueはjava.util.CountDownLatchを用いて実装されたクラスである。 </li>