CN110868614B - 显卡透传环境下基于spice协议的差异图像显示系统 - Google Patents
显卡透传环境下基于spice协议的差异图像显示系统 Download PDFInfo
- Publication number
- CN110868614B CN110868614B CN201911115585.0A CN201911115585A CN110868614B CN 110868614 B CN110868614 B CN 110868614B CN 201911115585 A CN201911115585 A CN 201911115585A CN 110868614 B CN110868614 B CN 110868614B
- Authority
- CN
- China
- Prior art keywords
- image
- module
- rectangular
- desktop
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Abstract
本发明属于计算机科学技术领域,具体涉及一种显卡透传环境下基于SPICE协议的差异图像显示系统。与现有技术相比较,本发明通过比较虚拟机桌面图像产生差异图像数据,对差异图像数据的合并,差异图像数据的压缩。通过采用差异图像算法既能降低传输数据量,又能做到高清晰度低延时。由此,相比现有技术,本发明由于只将图像的差异部分传输给SPICE服务端,极大的降低了图像数据量,且将差异图像进行了合并,减少虚拟机I/O的传输次数,不再占用大量的虚拟机I/O,降低虚拟机性能。并且,由于只需要比较当前桌面和上一幅桌面就能发送一个数据报文,可以在获取桌面图像的同时将其发送给客户端,随抓随发,可以做到即时显示,降低延时。
Description
技术领域
本发明属于计算机科学技术领域,具体涉及一种显卡透传环境下基于SPICE协议的差异图像显示系统。
背景技术
SPICE是一款开源桌面虚拟化数据传输协议,通过QEMU提供的显卡直通机制,将服务器上的物理显卡提供给虚拟机使用,能满足用户三维设计、工业设计、视频播放等高性能显示需求。现有技术通过虚拟机内代理采集虚拟机内的桌面图像数据,将捕获到的显卡透传桌面图像,使用原始图像压缩算法或者H264视频压缩算法,将这些图像数据传递给客户端。
1)使用原始图像压缩算法传输显卡透传数据:
虚拟机内代理捕获每一帧的桌面,只要桌面刷新就进行捕获,然后使用透传显卡压缩每一幅桌面图像,图像数据大小与桌面分辨率成正比。虚拟机内代理一边进行图像压缩,一边将图像数据使用通信信道发送给SPICE服务端,SPICE服务端将压缩后的图像数据转换成SPICE协议数据,发送给客户端。
2)使用H264视频压缩算法传输显卡透传数据:
虚拟机内代理从虚拟机桌面捕获若干幅显示图像,通过透传显卡将图像硬件压缩成H264视频流。H264视频压缩算法将若干幅图像压缩成一帧进行传输,图像之间帧间相关,帧之间有先后顺序要求。虚拟机内代理将压缩后的视频流使用通信信道发送给SPICE服务端,SPICE服务端将视频流转换成SPICE协议数据,发送给客户端。客户端接收视频流后需要使用硬件解码或软件解码后才能显示。
但,上述两种方案均存在其固有缺陷如下:
1)现有方案使用原始图像压缩算法,由于捕获每一帧的桌面,即使进行了图像压缩,图像数据量依然巨大,且与桌面分辨率成正比,缺点如下:
a)压缩后的数据需要传输给SPICE服务端,占用大量虚拟机I/O,降低虚拟机性能。
b)图像压缩后的图像数据量依然巨大,大大占用网络带宽,降低网络性能,不适合复杂的互联网环境。
2)现有方案使用使用H264视频压缩算法传输显卡透传数据,缺点如下:
a)H264视频压缩算法为有损压缩算法,造成图片质量损耗,降低清晰度。
b)H264视频压缩算法将若干幅图像压缩成一帧进行传输,捕获时需要一小段时间差,造成一定的延时。
c)客户端接收到H264视频流,需要解码后显示。解码有两种方法:
a.使用硬件解码H264视频流,客户端需要具有硬件解码能力;
b.不具备硬件解码H264视频流能力的客户端,需要使用CPU解码H264视频流,会占用大量CPU资源,且解码能力差。
综上,使用原始图像压缩算法传输显卡透传数据,极大的影响了虚拟机性能并且占用大量网络带宽,不适用于互联网环境。使用H264视频压缩算法传输显卡透传数据,会造成网络延时,图像质量损耗,不适用于工业设计等要求高清晰度、低延时的场景。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何提供一种显卡透传环境下基于SPICE协议的差异图像显示系统。
(二)技术方案
为解决上述技术问题,本发明提供一种显卡透传环境下基于SPICE协议的差异图像显示系统,所述差异图像显示系统包括:虚拟机端代理组件及SPICE服务器端的图像转换模块;所述虚拟机端代理组件包括:分辨率获取模块、图像切割模块、图像排列模块、图像比较模块、图像合并模块、第一图像发送模块、图像保存模块;所述图像转换模块包括:图像大小判断模块、第二图像发送模块、图像压缩模块;其中,
所述分辨率获取模块,用于从透传显卡获取当前桌面分辨率,根据虚拟机性能确定切割后矩形图像的长X和宽Y的大小;
所述图像切割模块,用于从透传显卡获取当前的桌面图像A,按照长X和宽Y进行切割,将桌面图像A切割成N个的矩形图像,每个矩形图像内的图像数据都为原始位图数据;
所述图像排列模块,用于将N个矩形图像按照桌面坐标次序进行排列,左上角的矩形图像为第一个,右下角的矩形图像为最后一个,按照坐标从左到右然后从上到下的顺序排列,记录这些矩形图像的图像数据和坐标数据,放入一个数组LA中;
在桌面分辨率不变的情况下,当桌面刷新时,从透传显卡获取新的桌面图像B,重复图像切割模块和图像排列模块的工作,得到对应新的桌面图像B的一系列的矩形图像的数组LB;
所述图像比较模块,用于对由桌面图像A和桌面图像B切割形成的N个有次序的矩形图像按顺序进行比较,即比较数组LA中的第i个矩形图像是否和数组LB中的第i个矩形图像是否一致,然后从数组LB中删除一样的矩形图像,只保留不一样的矩形图像,从而得到新的数组LB2;
所述图像合并模块,用于将LB2数组中的矩形图像做合并操作:如果某个矩形图像的左右或者上下的矩形图像也在LB2中,那么将这些位置邻近的矩形图像组合成一个大的矩形图像,修改其长和宽、坐标数据以及图像数据,将新组合成的矩形图像放入数组LB3中,新的数组LB3中的矩形图像的大小不再一致;
所述第一图像发送模块,用于将来自图像合并模块的数组LB3发送给SPICE服务端,数组LB3中的图像即为差异图像;
所述图像保存模块,用于将数组LB的图像保存至内存,释放数组LA、数组LB2、数组LB3的图像;
由此,重复上述分辨率获取模块、图像切割模块、图像排列模块、图像比较模块、图像合并模块、第一图像发送模块、图像保存模块的工作,每捕获到一幅新的桌面图像,进行切割,并和上一幅桌面图像比较、合并,然后传输给SPICE服务端;
由此,通过分辨率获取模块、图像切割模块、图像排列模块、图像比较模块、图像合并模块、第一图像发送模块、图像保存模块的工作,完成虚拟机端代理组件的工作;
所述图像大小判断模块,用于接收来自虚拟机端代理组件的若干个数组LB3的矩形图像,依次对数组中的每一个矩形图像根据图像的大小进行判断,是否进行图像压缩;
所述第二图像发送模块,用于对于数组LB3中不需要压缩的矩形图像,依次取出,根据矩形图像的原始坐标数据和原始图像数据,将图像转化成SPICE协议所规定数据格式的SPICE协议数据,形成一个数据报文,发送到客户端;
所述图像压缩模块,对于需要压缩的矩形图像,在SPICE服务端由图像压缩模块无损压缩后,根据矩形图像的原始坐标数据和压缩后的图像数据,将图像转化成SPICE协议数据,形成一个数据报文,再由第二图像发送模块发送到客户端;
由此,完成SPICE服务器端的图像转换模块的工作;
在SPICE客户端,在接收到SPICE服务端发送的SPICE协议数据,将其转化为图像数据;对于不需要解压的图像,将其直接显示到客户端桌面;对于需要解压缩的图像,对其进行解压缩,再显示到客户端桌面。
其中,所述透传显卡定义为:图像通过物理显卡透传到虚拟机的过程中,该物理显卡称为透传显卡。
其中,所述分辨率获取模块工作过程中,X=系统桌面分辨率长/32,Y=系统桌面分辨率宽/32。
其中,所述图像切割模块工作过程中,若当前桌面图像A为分辨率改变后的第一幅桌面图像,则将桌面图像A压缩后整幅图像传输给客户。
其中,所述图像排列模块工作过程中,所述图像数据为图像位图数据。
其中,在获得数组LB之后,在桌面分辨率改变时,需要重新开始分辨率获取模块的工作。
其中,所述图像比较模块工作过程中,比较数组LA中的第i个矩形图像是否和数组LB中的第i个矩形图像是否一致为:比较矩形图像的图像数据和坐标数据是否均一致。
其中,所述图像合并模块工作过程中,所述某个矩形图像的左右或者上下的矩形图像表示:
对于某个矩形图像的左边的矩形图像,其坐标数据的右坐标数据与前述某个矩形图像的左坐标数据相同;
对于某个矩形图像的右边的矩形图像,其坐标数据的左坐标数据与前述某个矩形图像的右坐标数据相同;
对于某个矩形图像的上边的矩形图像,其坐标数据的下坐标数据与前述某个矩形图像的上坐标数据相同;
对于某个矩形图像的下边的矩形图像,其坐标数据的上坐标数据与前述某个矩形图像的下坐标数据相同。
其中,所述图像大小判断模块工作过程中,是否进行图像压缩的大小限制条件为:图像大小是否超过128像素*128像素,若超过128像素*128像素,则需要进行压缩。
其中,所述图像压缩模块工作过程中,所述服务端无损压缩过程为并行处理,即将数据Lb3内的多个图像进行并行压缩。
(三)有益效果
现有基于SPICE的显卡直通方案中,使用原始图像压缩算法传输显卡透传数据时,由于图像数据量大,降低虚拟机性能和网络性能;使用H264视频压缩算法传输显卡透传数据时,清晰度低延时高,并且要求客户端具有H264硬解码功能,否则会消耗大量客户端的CPU资源。
与现有技术相比较,本发明采用差异图像算法既能降低传输数据量,又能做到高清晰度低延时。
其中,本发明所采用的区别技术特征包括:
(1)比较虚拟机桌面图像产生差异图像数据。
(2)对差异图像数据的合并。
(3)差异图像数据的压缩。
由此,相比现有技术,本发明的优点如下:
(1)对比原始图像压缩算法:
a)由于只将图像的差异部分传输给SPICE服务端,极大的降低了图像数据量,且将差异图像进行了合并,减少虚拟机I/O的传输次数,不再占用大量的虚拟机I/O,降低虚拟机性能。
b)首先图像的差异部分会降低一部分数据量,其次对差异部分中较大的图像再进行压缩,进一步降低数据量,不再占用大量的网络带宽,影响网络性能。
(2)对比H264视频压缩算法:
a)只需要比较当前桌面和上一幅桌面就能发送一个数据报文,可以在获取桌面图像的同时将其发送给客户端,随抓随发,可以做到即时显示,降低延时。
b)对图像进行无损压缩,不损耗图像质量,具有更高的清晰度。
c)对于不具备硬件解码H264视频流能力的客户端,采用差异图像算法时,解码一幅图片所消耗的CPU资源比解码H264视频流少,提升性能。
附图说明
图1及图2为本发明技术方案原理示意图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
为解决现有技术问题,本发明提供一种显卡透传环境下基于SPICE协议的差异图像显示系统,如图1及图2所示,所述差异图像显示系统包括:虚拟机端代理组件及SPICE服务器端的图像转换模块;所述虚拟机端代理组件包括:分辨率获取模块、图像切割模块、图像排列模块、图像比较模块、图像合并模块、第一图像发送模块、图像保存模块;所述图像转换模块包括:图像大小判断模块、第二图像发送模块、图像压缩模块;其中,
所述分辨率获取模块,用于从透传显卡获取当前桌面分辨率,根据虚拟机性能确定切割后矩形图像的长X和宽Y的大小,单位为像素;
所述图像切割模块,用于从透传显卡获取当前的桌面图像A,按照长X和宽Y进行切割,将桌面图像A切割成N个的矩形图像,每个矩形图像内的图像数据都为原始位图数据;
所述图像排列模块,用于将N个矩形图像按照桌面坐标次序进行排列,左上角的矩形图像为第一个,右下角的矩形图像为最后一个,按照坐标从左到右然后从上到下的顺序排列,记录这些矩形图像的图像数据和坐标数据,放入一个数组LA中;
在桌面分辨率不变的情况下,当桌面刷新时,从透传显卡获取新的桌面图像B,重复图像切割模块和图像排列模块的工作,得到对应新的桌面图像B的一系列的矩形图像的数组LB;
所述图像比较模块,用于对由桌面图像A和桌面图像B切割形成的N个有次序的矩形图像按顺序进行比较,即通过OpenGL快速比较数组LA中的第i个矩形图像是否和数组LB中的第i个矩形图像是否一致,然后从数组LB中删除一样的矩形图像,只保留不一样的矩形图像,从而得到新的数组LB2;
所述图像合并模块,用于将LB2数组中的矩形图像做合并操作:如果某个矩形图像的左右或者上下的矩形图像也在LB2中,那么将这些位置邻近的矩形图像组合成一个大的矩形图像,修改其长和宽、坐标数据以及图像数据,将新组合成的矩形图像放入数组LB3中,新的数组LB3中的矩形图像的大小不再一致;
所述第一图像发送模块,用于将来自图像合并模块的数组LB3发送给SPICE服务端,数组LB3中的图像即为差异图像;
所述图像保存模块,用于将数组LB的图像保存至内存,释放数组LA、数组LB2、数组LB3的图像;
由此,重复上述分辨率获取模块、图像切割模块、图像排列模块、图像比较模块、图像合并模块、第一图像发送模块、图像保存模块的工作,每捕获到一幅新的桌面图像,进行切割,并和上一幅桌面图像比较、合并,然后传输给SPICE服务端;
由此,通过分辨率获取模块、图像切割模块、图像排列模块、图像比较模块、图像合并模块、第一图像发送模块、图像保存模块的工作,完成虚拟机端代理组件的工作;
所述图像大小判断模块,用于接收来自虚拟机端代理组件的若干个数组LB3的矩形图像,依次对数组中的每一个矩形图像根据图像的大小进行判断,是否进行图像压缩;
所述第二图像发送模块,用于对于数组LB3中不需要压缩的矩形图像,依次取出,根据矩形图像的原始坐标数据和原始图像数据,将图像转化成SPICE协议所规定数据格式的SPICE协议数据,形成一个数据报文,发送到客户端,没有先后顺序要求;
所述图像压缩模块,对于需要压缩的矩形图像,在SPICE服务端由图像压缩模块无损压缩后,根据矩形图像的原始坐标数据和压缩后的图像数据,将图像转化成SPICE协议数据,形成一个数据报文,再由第二图像发送模块发送到客户端,没有先后顺序要求;
由此,完成SPICE服务器端的图像转换模块的工作;
在SPICE客户端,在接收到SPICE服务端发送的SPICE协议数据,将其转化为图像数据;对于不需要解压的图像,将其直接显示到客户端桌面,没有先后顺序要求;对于需要解压缩的图像,对其进行解压缩(并行处理),再显示到客户端桌面,没有先后顺序要求。
其中,所述透传显卡定义为:图像通过物理显卡透传到虚拟机的过程中,该物理显卡称为透传显卡。
其中,所述分辨率获取模块工作过程中,X=系统桌面分辨率长/32,Y=系统桌面分辨率宽/32,虚拟机性能越高,X和Y可以越小。
其中,所述图像切割模块工作过程中,若当前桌面图像A为分辨率改变后的第一幅桌面图像,则将桌面图像A压缩后整幅图像传输给客户。
其中,所述图像排列模块工作过程中,所述图像数据为图像位图数据。
其中,在获得数组LB之后,在桌面分辨率改变时,需要重新开始分辨率获取模块的工作。
其中,所述图像比较模块工作过程中,比较数组LA中的第i个矩形图像是否和数组LB中的第i个矩形图像是否一致为:比较矩形图像的图像数据和坐标数据是否均一致。
其中,所述图像合并模块工作过程中,所述某个矩形图像的左右或者上下的矩形图像表示:
对于某个矩形图像的左边的矩形图像,其坐标数据的右坐标数据与前述某个矩形图像的左坐标数据相同;
对于某个矩形图像的右边的矩形图像,其坐标数据的左坐标数据与前述某个矩形图像的右坐标数据相同;
对于某个矩形图像的上边的矩形图像,其坐标数据的下坐标数据与前述某个矩形图像的上坐标数据相同;
对于某个矩形图像的下边的矩形图像,其坐标数据的上坐标数据与前述某个矩形图像的下坐标数据相同。
其中,所述图像大小判断模块工作过程中,是否进行图像压缩的大小限制条件默认为:图像大小是否超过128像素*128像素,若超过128像素*128像素,则需要进行压缩,该图像大小会根据用户设定,服务器CPU性能和网络带宽条件进行动态调整,当CPU性能越低或者网络带宽较高时,会限制需要图像压缩的矩形图像数量,需要压缩的图像大小长和宽以指数型增长。
其中,所述图像压缩模块工作过程中,所述服务端无损压缩过程为并行处理,即将数据Lb3内的多个图像进行并行压缩。
此外,本发明还提供一种显卡透传环境下基于SPICE协议的差异图像显示方法,如图1及图2所示,所述方法基于差异图像显示系统来实施,所述差异图像显示系统包括:虚拟机端代理组件及SPICE服务器端的图像转换模块;所述虚拟机端代理组件包括:分辨率获取模块、图像切割模块、图像排列模块、图像比较模块、图像合并模块、第一图像发送模块、图像保存模块;所述图像转换模块包括:图像大小判断模块、第二图像发送模块、图像压缩模块;
所述差异图像显示方法包括如下步骤:
步骤1:所述分辨率获取模块从透传显卡获取当前桌面分辨率,根据虚拟机性能确定切割后矩形图像的长X和宽Y的大小,单位为像素。
步骤2:所述图像切割模块从透传显卡获取当前的桌面图像A,按照长X和宽Y进行切割,将桌面图像A切割成N个的矩形图像,每个矩形图像内的图像数据都为原始位图数据;
步骤3:所述图像排列模块将N个矩形图像按照桌面坐标次序进行排列,左上角的矩形图像为第一个,右下角的矩形图像为最后一个,按照坐标从左到右然后从上到下的顺序排列,记录这些矩形图像的图像数据和坐标数据,放入一个数组LA中;
步骤4:在桌面分辨率不变的情况下,当桌面刷新时,从透传显卡获取新的桌面图像B,重复步骤2和步骤3,得到对应新的桌面图像B的一系列的矩形图像的数组LB;
步骤5:所述图像比较模块对由桌面图像A和桌面图像B切割形成的N个有次序的矩形图像按顺序进行比较,即通过OpenGL快速比较数组LA中的第i个矩形图像是否和数组LB中的第i个矩形图像是否一致,然后从数组LB中删除一样的矩形图像,只保留不一样的矩形图像,从而得到新的数组LB2;
步骤6:所述图像合并模块将LB2数组中的矩形图像做合并操作:如果某个矩形图像的左右或者上下的矩形图像也在LB2中,那么将这些位置邻近的矩形图像组合成一个大的矩形图像,修改其长和宽、坐标数据以及图像数据,将新组合成的矩形图像放入数组LB3中,新的数组LB3中的矩形图像的大小不再一致;
步骤7:所述第一图像发送模块将步骤6获得的数组LB3发送给SPICE服务端,数组LB3中的图像即为差异图像;
步骤8:所述图像保存模块将数组LB的图像保存至内存,释放数组LA、数组LB2、数组LB3的图像;
步骤9:重复上述步骤1至步骤8,每捕获到一幅新的桌面图像,进行切割,并和上一幅桌面图像比较、合并,然后传输给SPICE服务端;
由此,通过步骤1-步骤9,完成虚拟机端代理组件的工作;
步骤10:所述图像大小判断模块接收到来自虚拟机端代理组件的若干个数组LB3的矩形图像,依次对数组中的每一个矩形图像根据图像的大小进行判断,是否进行图像压缩;
步骤11:所述第二图像发送模块对于数组LB3中不需要压缩的矩形图像,依次取出,根据矩形图像的原始坐标数据和原始图像数据,将图像转化成SPICE协议所规定数据格式的SPICE协议数据,形成一个数据报文,发送到客户端,没有先后顺序要求;
步骤12:对于需要压缩的矩形图像,在SPICE服务端由图像压缩模块无损压缩后,根据矩形图像的原始坐标数据和压缩后的图像数据,将图像转化成SPICE协议数据,形成一个数据报文,再由第二图像发送模块发送到客户端,没有先后顺序要求;
由此,完成SPICE服务器端的图像转换模块的工作;
在SPICE客户端,继续完成下述步骤:
步骤13:接收到SPICE服务端发送的SPICE协议数据,将其转化为图像数据;
步骤14:将不需要解压的图像直接显示到客户端桌面,没有先后顺序要求;
步骤15:将需要解压缩的图像进行解压缩(并行处理),再显示到客户端桌面,没有先后顺序要求。
其中,所述透传显卡定义为:图像通过物理显卡透传到虚拟机的过程中,该物理显卡称为透传显卡。
其中,所述步骤1中,X=系统桌面分辨率长/32,Y=系统桌面分辨率宽/32,虚拟机性能越高,X和Y可以越小。
其中,所述步骤2中,若当前桌面图像A为分辨率改变后的第一幅桌面图像,则将桌面图像A压缩后整幅图像传输给客户。
其中,所述步骤3中,所述图像数据为图像位图数据。
其中,所述步骤4中,在桌面分辨率改变时,需要重新开始步骤1。
其中,所述步骤5中,比较数组LA中的第i个矩形图像是否和数组LB中的第i个矩形图像是否一致为:比较矩形图像的图像数据和坐标数据是否均一致。
其中,所述步骤6中,所述某个矩形图像的左右或者上下的矩形图像表示:
对于某个矩形图像的左边的矩形图像,其坐标数据的右坐标数据与前述某个矩形图像的左坐标数据相同;
对于某个矩形图像的右边的矩形图像,其坐标数据的左坐标数据与前述某个矩形图像的右坐标数据相同;
对于某个矩形图像的上边的矩形图像,其坐标数据的下坐标数据与前述某个矩形图像的上坐标数据相同;
对于某个矩形图像的下边的矩形图像,其坐标数据的上坐标数据与前述某个矩形图像的下坐标数据相同。
其中,所述步骤10中,是否进行图像压缩的大小限制条件默认为:图像大小是否超过128像素*128像素,若超过128像素*128像素,则需要进行压缩,该图像大小会根据用户设定,服务器CPU性能和网络带宽条件进行动态调整,当CPU性能越低或者网络带宽较高时,会限制需要图像压缩的矩形图像数量,需要压缩的图像大小长和宽以指数型增长。
其中,所述步骤12中,所述服务端无损压缩过程为并行处理,即将数据Lb3内的多个图像进行并行压缩。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (9)
1.一种显卡透传环境下基于SPICE协议的差异图像显示系统,其特征在于,所述差异图像显示系统包括:虚拟机端代理组件及SPICE服务器端的图像转换模块;所述虚拟机端代理组件包括:分辨率获取模块、图像切割模块、图像排列模块、图像比较模块、图像合并模块、第一图像发送模块、图像保存模块;所述图像转换模块包括:图像大小判断模块、第二图像发送模块、图像压缩模块;其中,
所述分辨率获取模块,用于从透传显卡获取当前桌面分辨率,根据虚拟机性能确定切割后矩形图像的长X和宽Y的大小;
所述图像切割模块,用于从透传显卡获取当前的桌面图像A,按照长X和宽Y进行切割,将桌面图像A切割成N个的矩形图像,每个矩形图像内的图像数据都为原始位图数据;
所述图像排列模块,用于将N个矩形图像按照桌面坐标次序进行排列,左上角的矩形图像为第一个,右下角的矩形图像为最后一个,按照坐标从左到右然后从上到下的顺序排列,记录这些矩形图像的图像数据和坐标数据,放入一个数组LA中;
在桌面分辨率不变的情况下,当桌面刷新时,从透传显卡获取新的桌面图像B,重复图像切割模块和图像排列模块的工作,得到对应新的桌面图像B的一系列的矩形图像的数组LB;
所述图像比较模块,用于对由桌面图像A和桌面图像B切割形成的N个有次序的矩形图像按顺序进行比较,即比较数组LA中的第i个矩形图像是否和数组LB中的第i个矩形图像是否一致,然后从数组LB中删除一样的矩形图像,只保留不一样的矩形图像,从而得到新的数组LB2;
所述图像合并模块,用于将LB2数组中的矩形图像做合并操作:如果某个矩形图像的左右或者上下的矩形图像也在LB2中,那么将这些位置邻近的矩形图像组合成一个大的矩形图像,修改其长和宽、坐标数据以及图像数据,将新组合成的矩形图像放入数组LB3中,新的数组LB3中的矩形图像的大小不再一致;
所述第一图像发送模块,用于将来自图像合并模块的数组LB3发送给SPICE服务端,数组LB3中的图像即为差异图像;
所述图像保存模块,用于将数组LB的图像保存至内存,释放数组LA、数组LB2、数组LB3的图像;
由此,重复上述分辨率获取模块、图像切割模块、图像排列模块、图像比较模块、图像合并模块、第一图像发送模块、图像保存模块的工作,每捕获到一幅新的桌面图像,进行切割,并和上一幅桌面图像比较、合并,然后传输给SPICE服务端;
由此,通过分辨率获取模块、图像切割模块、图像排列模块、图像比较模块、图像合并模块、第一图像发送模块、图像保存模块的工作,完成虚拟机端代理组件的工作;
所述图像大小判断模块,用于接收来自虚拟机端代理组件的若干个数组LB3的矩形图像,依次对数组中的每一个矩形图像根据图像的大小进行判断,是否进行图像压缩;
所述第二图像发送模块,用于对于数组LB3中不需要压缩的矩形图像,依次取出,根据矩形图像的原始坐标数据和原始图像数据,将图像转化成SPICE协议所规定数据格式的SPICE协议数据,形成一个数据报文,发送到客户端;
所述图像压缩模块,对于需要压缩的矩形图像,在SPICE服务端由图像压缩模块无损压缩后,根据矩形图像的原始坐标数据和压缩后的图像数据,将图像转化成SPICE协议数据,形成一个数据报文,再由第二图像发送模块发送到客户端;
由此,完成SPICE服务器端的图像转换模块的工作;
在SPICE客户端,在接收到SPICE服务端发送的SPICE协议数据,将其转化为图像数据;对于不需要解压的图像,将其直接显示到客户端桌面;对于需要解压缩的图像,对其进行解压缩,再显示到客户端桌面。
2.如权利要求1所述的显卡透传环境下基于SPICE协议的差异图像显示系统,其特征在于,所述透传显卡定义为:图像通过物理显卡透传到虚拟机的过程中,该物理显卡称为透传显卡。
3.如权利要求1所述的显卡透传环境下基于SPICE协议的差异图像显示系统,其特征在于,所述分辨率获取模块工作过程中,X=系统桌面分辨率长/32,Y=系统桌面分辨率宽/32。
4.如权利要求1所述的显卡透传环境下基于SPICE协议的差异图像显示系统,其特征在于,所述图像切割模块工作过程中,若当前桌面图像A为分辨率改变后的第一幅桌面图像,则将桌面图像A压缩后整幅图像传输给客户。
5.如权利要求1所述的显卡透传环境下基于SPICE协议的差异图像显示系统,其特征在于,所述图像排列模块工作过程中,所述图像数据为图像位图数据。
6.如权利要求1所述的显卡透传环境下基于SPICE协议的差异图像显示系统,其特征在于,所述图像比较模块工作过程中,比较数组LA中的第i个矩形图像是否和数组LB中的第i个矩形图像是否一致为:比较矩形图像的图像数据和坐标数据是否均一致。
7.如权利要求1所述的显卡透传环境下基于SPICE协议的差异图像显示系统,其特征在于,所述图像合并模块工作过程中,所述某个矩形图像的左右或者上下的矩形图像表示:
对于某个矩形图像的左边的矩形图像,其坐标数据的右坐标数据与前述某个矩形图像的左坐标数据相同;
对于某个矩形图像的右边的矩形图像,其坐标数据的左坐标数据与前述某个矩形图像的右坐标数据相同;
对于某个矩形图像的上边的矩形图像,其坐标数据的下坐标数据与前述某个矩形图像的上坐标数据相同;
对于某个矩形图像的下边的矩形图像,其坐标数据的上坐标数据与前述某个矩形图像的下坐标数据相同。
8.如权利要求1所述的显卡透传环境下基于SPICE协议的差异图像显示系统,其特征在于,所述图像大小判断模块工作过程中,是否进行图像压缩的大小限制条件为:图像大小是否超过128像素*128像素,若超过128像素*128像素,则需要进行压缩。
9.如权利要求1所述的显卡透传环境下基于SPICE协议的差异图像显示系统,其特征在于,所述图像压缩模块工作过程中,所述服务端无损压缩过程为并行处理,即将数据LB3内的多个图像进行并行压缩。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911115585.0A CN110868614B (zh) | 2019-11-14 | 2019-11-14 | 显卡透传环境下基于spice协议的差异图像显示系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911115585.0A CN110868614B (zh) | 2019-11-14 | 2019-11-14 | 显卡透传环境下基于spice协议的差异图像显示系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110868614A CN110868614A (zh) | 2020-03-06 |
CN110868614B true CN110868614B (zh) | 2021-09-28 |
Family
ID=69654053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911115585.0A Active CN110868614B (zh) | 2019-11-14 | 2019-11-14 | 显卡透传环境下基于spice协议的差异图像显示系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110868614B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1684464A (zh) * | 2004-04-15 | 2005-10-19 | 微软公司 | 用于远程差分压缩的有效算法和协议 |
CN1720868A (zh) * | 2004-06-14 | 2006-01-18 | 伊西康内外科公司 | 具有带储能元件的旋转致动器的内窥镜外科仪器 |
WO2012106980A1 (zh) * | 2011-02-11 | 2012-08-16 | 运软网络科技(上海)有限公司 | 多维智能服务点虚拟桌面方法及基础架构 |
CN103858095A (zh) * | 2013-08-02 | 2014-06-11 | 华为技术有限公司 | 一种图像显示方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120075346A1 (en) * | 2010-09-29 | 2012-03-29 | Microsoft Corporation | Low Complexity Method For Motion Compensation Of DWT Based Systems |
CN103701807B (zh) * | 2013-12-26 | 2016-08-24 | 华为技术有限公司 | 一种vdi环境下的数据发送方法和装置 |
CN104768009B (zh) * | 2015-03-19 | 2018-01-05 | 中国科学院信息工程研究所 | 一种桌面虚拟化spice协议下的图像传输方法 |
CN105262825A (zh) * | 2015-10-29 | 2016-01-20 | 曲阜师范大学 | 基于h.265的spice云桌面传输和展现方法及系统 |
CN110018873A (zh) * | 2019-03-31 | 2019-07-16 | 山东超越数控电子股份有限公司 | 一种基于fpga优化虚拟桌面传输的方法 |
-
2019
- 2019-11-14 CN CN201911115585.0A patent/CN110868614B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1684464A (zh) * | 2004-04-15 | 2005-10-19 | 微软公司 | 用于远程差分压缩的有效算法和协议 |
CN1720868A (zh) * | 2004-06-14 | 2006-01-18 | 伊西康内外科公司 | 具有带储能元件的旋转致动器的内窥镜外科仪器 |
WO2012106980A1 (zh) * | 2011-02-11 | 2012-08-16 | 运软网络科技(上海)有限公司 | 多维智能服务点虚拟桌面方法及基础架构 |
CN103858095A (zh) * | 2013-08-02 | 2014-06-11 | 华为技术有限公司 | 一种图像显示方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110868614A (zh) | 2020-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111399964B (zh) | 一种基于视频串流技术的云桌面平台 | |
CN110740352B (zh) | 显卡透传环境下基于spice协议的差异图像显示方法 | |
KR101698951B1 (ko) | 복수의 시각적 요소를 가지는 스크린을 공유하는 시스템, 장치, 및 방법 | |
JP5319875B2 (ja) | アプリケーション・メタデータを用いるグラフィカル・ユーザ・インターフェースの適応ビデオ圧縮法 | |
CN105677279B (zh) | 桌面区域共享方法、系统及相应的共享端和观看端 | |
US9426476B2 (en) | Video stream | |
EP3177024B1 (en) | Apparatus for cloud streaming service | |
CN105338323A (zh) | 一种视频监控方法及装置 | |
CN109040786B (zh) | 摄像头数据的传输方法、装置、系统及存储介质 | |
WO2022111631A1 (zh) | 视频传输方法、服务器、终端和视频传输系统 | |
US20140177957A1 (en) | Systems and methods for determining compression methods to use for an image | |
CN110891084A (zh) | 一种基于自主hvdp协议的瘦客户端远程桌面控制系统 | |
CN111625211B (zh) | 一种屏幕投屏方法、装置、安卓设备及显示设备 | |
KR101742258B1 (ko) | 웹 기반 가상 데스크탑 프로토콜을 이용한 컨텐츠 제공 방법 및 장치 | |
US20100049832A1 (en) | Computer program product, a system and a method for providing video content to a target system | |
CN110868614B (zh) | 显卡透传环境下基于spice协议的差异图像显示系统 | |
EP3063937B1 (en) | Chroma down-conversion and up-conversion processing | |
CN108933945B (zh) | 一种gif图片的压缩方法、装置及存储介质 | |
CN111190675A (zh) | 基于鲲鹏处理器的三维图像传输方法及设备 | |
WO2022127565A1 (zh) | 一种视频处理方法、装置以及设备 | |
CN116405606A (zh) | 一种提高图像网络传输效率的方法 | |
WO2022234575A1 (en) | System and method for dynamic video compression | |
CN107506232A (zh) | 一种图片获取方法及系统 | |
EP2946554B1 (en) | System, apparatus and method for sharing a screen having multiple visual components | |
CN111506374A (zh) | 基于不同对象的云应用ui交互方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |