一种虚拟桌面压缩的方法
【技术领域】
[0001]本发明涉及虚拟桌面技术领域,尤其涉及一种虚拟桌面压缩的方法。
【背景技术】
[0002]近年来,虚拟化技术的研究和应用随着云计算的发展逐步深入,包括硬件平台虚拟化,网络虚拟化和桌面虚拟化等。用户使用手机或其它便携设备通过网络,利用云平台进行办公或业务处理已经被用户广泛接受。桌面云(Virtual Desktop Cloud,VDC)是指用户可以像使用本地个人电脑(PC) —样通过瘦客户端或者其他任何与网络相连的设备来跨平台访问远程桌面应用。桌面云的桌面操作系统和应用环境都是集中部署在远程的数据中心,本地终端只是一个低性能的客户端或者一个显示设备通过网络接入从而使用户获得PC—样的操作体验。桌面云改变了过去分散、独立的桌面系统环境,使资源得到整合,更容易管理。首先,桌面云加强了工作桌面的安全性。所有的工作桌面和应用数据完全保存在后台,本地终端只是工作桌面影像的显示。拷贝、下载、存盘、非法外设连接等操作都易于管控;其次,通过集中快速地执行桌面的管理工作,大大提高了桌面管理效率。软件的安装、升级、恢复、扩展等工作桌面管理都可由后台快速、统一地执行;再者,桌面云真正实现了可移动工作。只要能联网,员工在工作场合以外的任何场合,使用个人电脑、笔记本、云终端、平板等设备,均可打开自己的工作桌面进行工作。另外,桌面云终端的功耗一般是普通台式机的10%,能够大幅降低能耗,实现节能减排。
[0003]虚拟桌面图像的压缩传输架构如图1所示,最早起源于远程控制协议,如虚拟网络计算机(Virtual Network Computer, VNC)和 Windows 系统常用的 RDP (Remote DesktopProtocol)远程桌面传输协议,终端用户可以在瘦客户端上通过网络访问远程的服务器,获得跟本地PC—样的高性能计算资源和桌面显示效果。从桌面图像渲染所在的位置可以大致分为两种:一种是客户端清染,这种方法把虚拟机(Virtual Machine,VM)的图形设备接口(Graphics Device Interface,⑶I)指令和指令所带位图压缩后传输给客户端,由客户端在本地执行GDI指令,渲染生成桌面图像并呈现;第二种是服务器渲染,这种方法在服务器,也可以是虚拟机上,执行⑶I指令,渲染生成桌面图像然后进行压缩,也可以是虚拟化层(Hyperviser)对渲染后的图像进行压缩。压缩后的桌面图像传输到客户端后解压缩后呈现给用户。基于客户端的虚拟桌面传输方案只需要传输图像指令,而不需要在服务器侧渲染出实际的桌面图像,因此复杂度相对比较低,对服务器的硬件规格要求不高,在远程桌面研究的初期受到比较多的关注。但是客户端渲染方案的缺陷在于对客户端的渲染能力有一定要求,如果是虚拟机上执行三维应用(3Dimens1n,3D),这里3D应用特指基于DX指令或openGL指令的3D建模或基于DX或openGL的游戏等,非立体视频应用,客户端还必须支持DirectX或openGL等3D指令功能。另外客户端清染的缺点在于指令压缩的性能有限,不能很好的利用图像的时空相关性,带宽占用较高:在低分辨率的应用场景比如打字、简单的窗口操作等,客户端渲染方案所需的带宽还可以接受,但是对于高清桌面场景,指令压缩方式的带宽占用会大幅增长,而多媒体应用和3D游戏等应用会使得这种方式的带宽占用更加恶化。服务器侧渲染对客户端需求很低,只要能够提供视频解码的能力即可,像手机等移动终端也可以接入桌面云。但是服务器侧渲染方案的缺陷在于云端需要多次渲染和编码,对于服务器的硬件性能和成本影响较大。
[0004]当前主流的VDI (Virtual Desktop Infrastructure,虚拟桌面基础架构)产品在视频和基于3D指令的多媒体应用领域的用户体验比较差,还不能像PC —样满足用户对基于3D指令的多媒体应用的基本需求。由于云计算是未来信息领域的重要发展方向,很多国际知名IT企业,如微软(MS, Microsoft),思杰(CITRIX),威睿(Vmware)均提供了 GPU方案在视频和基于3D指令的多媒体应用方面进行虚拟桌面加速。由于编码算法的性能和GPU虚拟化的性能等原因,这些技术在局域网的效果有一定提高,但是在广域网的环境里还不能大规模应用。可以说虚拟桌面的高效压缩和传输是让用户获得与个人电脑一样的用户体验的关键技术。
【发明内容】
[0005]本发明的目的在于通过一种虚拟桌面压缩的方法,来解决以上【背景技术】部分提到的问题。
[0006]为达此目的,本发明采用以下技术方案:
[0007]一种虚拟桌面压缩的方法,其包括如下步骤:
[0008]S101、在虚拟桌面系统的虚拟显卡中构建指令缓存装置,保存渲染指令;
[0009]S102、从虚拟显卡中定时获取桌面图像和渲染指令;
[0010]S103、采用图像压缩器对图像进行压缩,具体包括:
[0011]S1031、对于帧内预测图像:一、根据清染指令中的点/线/填充(line/point/fill)指令判断宏块的分割;二、根据渲染指令中的图像填充指令,判断宏块的分割;三、根据渲染指令中的文本指令,判断宏块的分割,以及环路滤波器的系数;
[0012]S1032、对于帧间预测图像:一、如果虚拟桌面中有区域未被渲染指令覆盖或部分覆盖,则该区域的宏块模式可以直接选择跳过(skip)模式;二、根据渲染指令中的点/线/填充(line/point/fill)指令,判断宏块运动估计的方向和范围;三、根据清染指令中的文本指令,判断宏块的分割方式和运动估计方向及范围;四、根据渲染指令的绘图指令中图片大小和位置,判断该区域的宏块分割,运动估计方向和范围以及图像边界的环路滤波器的系数;
[0013]S104、压缩后的图像通过网络发送给客户端;
[0014]S105、客户端接收压缩图像;
[0015]S106、客户端对所述压缩图像进行解码;
[0016]S107、客户端显示解码后的图像。
[0017]特别地,所述步骤S1031中根据清染指令中的点/线/填充(line/point/fill)指令判断宏块的分割,包括:当桌面图像区域发生一条区域填充指令,帧内预测(Intrapredict1n)编码的模式选择将依据填充的区域大小和颜色,从所有可用的模式中选择一种或几种。
[0018]特别地,所述步骤S1031中根据渲染指令中的图像填充指令,判断宏块的分割,包括:当桌面图像区域发生一条图片填充指令,帧内预测编码的模式选择将依据填充的区域对图片边界所在的宏块的划分从所有可用的模式中选择一种或几种。
[0019]特别地,所述步骤S1031中根据渲染指令中的文本指令,判断宏块的分割,以及环路滤波器的系数,包括:当桌面图像区域发生一条文本输出指令,帧内预测编码的模式选择将依据填充的区域对文本边界所在的宏块的划分从所有可用的模式中选择一种或几种,并选择相应的去块滤波器(deblocking filter)处理文本区域的内容。
[0020]特别地,所述步骤S1032中根据清染指令中的点/线/填充(line/point/fill)指令,判断宏块运动估计的方向和范围,包括:当桌面图像区域发生一条区域填充指令,帧间预测(Interpredict