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