VNCRFB编码格式总结.doc_第1页
VNCRFB编码格式总结.doc_第2页
VNCRFB编码格式总结.doc_第3页
VNCRFB编码格式总结.doc_第4页
VNCRFB编码格式总结.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编码格式说明Raw(0)不进行编码,直接传送数据,是最慢的一种Copyrect(1)对于客户端,在已经有了相同象素数据的时候比较有效,比如移动或窗口内容滚动时RRE(2)将象素颜色相同的某一个矩形区域作为一个整体传输Hextile是RRE编码的变种,把屏幕分成16x16象素的小块,每块用Raw或RRE方式转送ZRLE(16)结合了zlib压缩编码格式本文的编码类型其他编码类型原始编码(Raw 编码)即采用原始的像素数据,而不进行任何的加工处理。在这种情况下,对于一个宽度乘以高度(即面积)为N的矩形,数据就由N个像素值组成,这些值表示按照扫描线顺序从左到右排列的每个像素。很明显,这种编码方式是最简单的,也是效率最低的。RFB要求所有的客户都必须能够处理这种原始编码的数据,并且在客户没有特别指定需要某种编码方式的时候,RFB服务器就默认生成原始编码。复制矩形编码(CopyRect编码)CopyRect 编码方式对于客户端在某些已经有了相同的象素数据的时候是非常简单和有效的。这种编码方式在网络中表现为x,y 坐标。让客户端知道去拷贝那一个矩形的象素数据。它可以应用于很多种情况。最明显的就是当用户在屏幕上移动某一个窗口的时候,还有在窗口内容滚动的时候。在优化画的时候不是很明显,一个比较智能的服务器可能只会发送一次,因为它知道在客户端的帧缓存里已经存在了。复制矩形编码并不是完全独立地发送所有的数据矩形,而是对于像素值完全相同的一组矩形,只发送第一个矩形全部数据,随后的矩形则只需要发送左上角X、Y坐标。实际上,复制矩形编码主要指的就是随后的这一系列X、Y坐标,而对于第一个矩形具体采用何种编码类型并没有限制,仅仅需要知道第一个矩形在帧缓冲区中的位置,以便于完成复制操作。因此,往往是把复制矩形编码和其它针对某一个矩形的编码类型结合使用。接下来使用CopyRect 编码方式发送相同的式样。二维行程编码(rise-and-run-length,RRE)RRE表示提升和运行长度,正如它名字暗示的那样,它实质上表示二维向量的运行长度编码。RRE把矩形编码成可以被客户机的图形引擎翻译的格式。RRE不适合复杂的桌面,但在一些情况下比较有用。RRE的思想就是把像素矩形的数据分成一些子区域,和一些压缩原始区域的单元。最近最佳的分区方式一般是比较容易计算的。编码是由像素值组成的,Vb(基本上是在矩形中最常用的像素值)和一个计数N,紧接着是N的子矩形列表,这些里面由数组组成,(x,y)是对应子矩形的坐标,表示子矩形上-左的坐标值,(w,h) 则表示子矩形的宽高。客户端可以通过绘制使用背景像素数据值,然后再根据子矩形来绘制原始矩形。二维行程编码本质上是对行程编码的一个二维模拟,而其压缩度可以保证与行程编码相同甚至更好。而且更重要的是,采用RRE编码的矩形被传送到客户端以后,可以立即有效地被最简单的图形引擎所还原。在传输中,数据以下面的头开始描述:后面跟随重复的子矩形结构:CoRRE编码CoRRE是RRE的变体,它把发送的最大矩形限制在255255个像素以内,用一个字节就能表示子矩形的维度。如果服务器想要发送一个超出限制的矩形,则只要把它划分成几个更小的RFB矩形即可。“对于通常的桌面,这样的方式具有比RRE更好的压缩度”。实际上,如果进一步限制矩形的大小,就能够获得最好的压缩度。“矩形的最大值越小,决策的尺度就越好”。但是,如果把矩形的最大值限制得太小,就增加了矩形的数量,而由于每个RFB矩形都会有一定的开销,结果反而会使压缩度变差。所以应该选择一个比较恰当的数字。在目前的实现中,采用的最大值为4848。Hextile编码Hextile 是RRE编码的变种,矩形被分割成1616 小片,允许每个小片的维数为4位,总共16 位。把原始矩形划分成小块是预定义的,这意味着每个块的位置与大小不需要明确地指定。矩形被分割的小片从上开始,遵守自左到右,自顶向下的顺序。小片的编码内容按照预定的顺序进行编码。如果整个矩形的宽度不是16 的整数倍,那么每行最后的小片也相应减少。高度也类似。每个小片可以使用raw 编码,也可以是RRE编码的变种,用一个类型字节来进行说明即可。每个小片有一个背景像素值。但是,如果小片的背景像素值和前一个小片相同,那么就不需要明确定义。如果小片的子矩形有相同的像素值,那么前景像素值就可以只定义一次。和背景像素值一样,前景像素值也可以通过前一个小片获得。因此由小片组成的数据是按照顺序进行编码的。每一个小片以子编码类型的字节开始。它是位数的掩码组成。如果Raw 位被设置,那么其余的位就无效;接着是宽X高像素值(宽和高是小片的宽高)。否则其他的位就有效。背景定义-如果设置,那么像素值就会跟着小片的背景色:在矩形中的第一片非Raw 小片必须设置这一位,如果不设置,那么它的背景就会和上一片相同。前景定义-如果设置,那么像素值就会定义小片中所有子矩形的前景色。如果这一位被设置,那么子矩形着色位必须为0。任意子矩形-如果设置,那么一个字节包含着子矩形的个数。如果这一位不设置,那么就不会有子矩形。(例如,整个小片就是背景颜色)子矩形着色-如果设置,那么任意子矩形的像素值的优先级都高于子矩形的颜色定义,因此子矩形是:如果不设置,所有子矩形都是前景色的颜色,如果前景定义没有设置,那么前景色和前一个片的相同。子矩形就是:每一个子矩形的位置和大小都是使用两位进行定义,x - and - y - position 和width -And - height。最重要的四位x - an d - y - posi tion 定义X的位置,不重要的定义Y位置。最重要的四位width - and - height 定义宽度- 1,不重要的定义高度- 1。ZRLE编码ZRLE(Zlib Run - Length Encoding),它结合了zlib 压缩,片技术、调色板和运行长度编码。在传输中,矩形以4 字节长度区域开始,紧接着是zlib 压缩的数据,一个单一的zlib“流”对象被用在RFB协议的连接上,因此ZRLE矩形必须严格的按照顺序进行编码和译码。zlibData 在没有压缩之前,代表了由64x64 像素组成的从左到右,从高到低的顺序的片,和hextile 编码有点类似。如果整个矩形的宽度不是64 的整数倍,那么每行最后的小片也相应减少。高度也类似。ZRLE编码利用了一种新的压缩像素CPIXEL(Compres se d PIXEL)。这个和PIXEL有着相同的像素格式,除了真彩标志是非零,位每像素是32,色深不大于24。所有的位组成红,绿和蓝的亮度填充最不重要的或最重要的三字节。如果CPIXEL只有3 字节长,并且包含有合适的最不重要或最重要3 字节。那么bytesPerCPixel 就是CPIXEL的字节数。每片都是以子编码类型字节开始,如果片被使用运行长度编码,那么本字节的最高位就会被设置。其余7 位表示绘图样式-零表示没有样式,1 表示片为单色,2 - 127 表示对应的样式。可能的子编码值如下:0 - Raw 像素数据 宽X高像素值(宽和高为对应片的宽和高,对应像素值如下:2 - 16 -打包的样式类型。对应像素值是由palet teSize(=子编码)像素值,打包像素值组成,每个打包像素值表示为一位区域服从样式索引(0 表示第一个条目),对应palet teSize 2,1 位被使用,palet teSize 3,4 有两位被使用,从5 - 16 均有4 位区域被使用。位的区域被打包成字节,最重要的位表示最左边像素。因为片并不是8,4,2 像素宽的乘积,所以填充位被用来按照字节数排列每一个行。m 表示打包像素的字节数。对于palet teSize 2 就是floor(width + 7) / 8) x height,相应3,4 就是floor(width + 3) / 4) x height,而5 - 16 就是floor(width + 1) / 2)xheight。17 - 127 未使用(对于palet te RLE并没有什么优势)。128 -简单RLE 它由一些不断重复的执行组成,一直到片结束。执行可能从一行的结束到另一行的开始。每一次运行是通过一个像素值和像素值长度来表示的。长度一般为1 个或多个字节。经过计算多于所有字节总和+ 1 作为长度。除了255 任何字节值都隐含最后的字节。例如长度1 表示为0,255 表示为254,256 表示为255,0,257 表示为255,1,510 表示为25

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论