CN102713882B - 用于选择性地实现渐进显示技术的方法和系统 - Google Patents

用于选择性地实现渐进显示技术的方法和系统 Download PDF

Info

Publication number
CN102713882B
CN102713882B CN201080061450.1A CN201080061450A CN102713882B CN 102713882 B CN102713882 B CN 102713882B CN 201080061450 A CN201080061450 A CN 201080061450A CN 102713882 B CN102713882 B CN 102713882B
Authority
CN
China
Prior art keywords
application
data
window
mark
renewal
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
Application number
CN201080061450.1A
Other languages
English (en)
Other versions
CN102713882A (zh
Inventor
N·德赛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN102713882A publication Critical patent/CN102713882A/zh
Application granted granted Critical
Publication of CN102713882B publication Critical patent/CN102713882B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0407Resolution change, inclusive of the use of different resolutions for different screen areas
    • G09G2340/0435Change or adaptation of the frame rate of the video stream
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems

Abstract

本公开涉及根据窗口中显示的多个帧来选择性地实现渐进显示技术的系统和方法。第一钩子组件为在本地计算装置上显示第一应用数据的窗口识别在该窗口中将要显示的多个帧。显示管理器根据所识别的将要显示的帧的数量产生压缩对该应用数据的更新的标识的指令。该数据被压缩并被发送和传输到本地装置以便被显示在该窗口上。显示管理器可以为在该本地装置上显示不同的应用数据的另一个窗口确定是否压缩对第二应用数据的更新的第二标识。基于该确定压缩或不压缩该第二应用数据,并可以将该第二应用数据传输到本地装置。

Description

用于选择性地实现渐进显示技术的方法和系统
相关申请
本专利申请要求2009年11月16日提交的、标题为“Me thods and Systemsfor Selective Implementation of Progressive Display Techniques”、序列号为61/261528的美国临时申请的利益和优先权,该申请通过引用被整体包含于此。
技术领域
本申请总的涉及数据通信网络。本申请尤其涉及用于实现显示技术的系统和方法。
背景技术
在企业网络上运行的服务器可以给远程客户机提供服务。这些服务可包括在该服务器上本地运行的且由远程客户机通过网络访问的应用。使用所述应用的客户机可能收到各种显示窗口,所述显示窗口可能包含应用相关的信息或功能,例如图形用户接口、显示或图形。由于应用可能在类型、格式和资源利用方面不同,某些应用可能比其他应用要求更多的资源。在特定的时间段内用户可能与某个应用交互要比与其他应用的交互更频繁。由于网络上的带宽可能是有限的或者用户需求可能增加,所以企业可能希望提高在远程客户机和服务器之间的数据传输的效率。
发明内容
在处理请求的虚拟服务器出现故障的情况下,由负载平衡器提供的服务可能被中断并且客户机可能经历延迟。其他虚拟服务器可以承担先前由出现故障的虚拟服务器处理的流量。
本公开涉及用于选择性地实现渐进显示技术的方法和系统。本公开尤其涉及根据对于单独应用窗口在一段时间内在窗口中显示的多个帧来选择性地实现渐进显示技术的方法和系统。可以在具有合成桌面环境的系统上和不具有合成桌面环境的系统上实现这些渐进显示技术。
被设计为在远程计算机器和本地计算机器之间传输二维或者三维图形的系统通常因为种种原因要求大量的资源。在许多情况下,这些系统被要求在短时间内传输大量的图像或者传输要求大量资源的复杂图形。资源的传送-例如应用、桌面、虚拟机器或其他远程地传送的资源-可能在许多情况下要求将图像快速地传送到多种不同类型的计算环境。
存在许多方法和技术来压缩和编码图形以减轻图形处理在系统和网络上造成的压力。通常,这些解决方案对向本地计算机器发送的所有图形应用压缩技术或者都不应用压缩技术。这些解决方案通常是在固定的时间点静态地做出关于是否应用压缩技术的确定。
然而,在一些实施例中,某些应用可能在不同的时间点要求与其他应用不同水平的图像质量。例如,在其中频繁更新图像的一些实施例中,由于频繁的更新,图像的美感质量对用户可能是不重要的;在其中不经常更新图像的其他实施例中,图像的美感质量对用户可能是更重要的。通常,环境基于对计算机器可用的带宽量而不是基于用户期望的质量水平来应用压缩技术或渐进显示技术。此外,传统环境通常不处理这样的场景-例如显示合成桌面环境的那些场景-在其中特定应用可能比另一个应用或桌面计算环境的其余部分要求更高或更低的图像质量。
在一个方面,根据对于合成桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧来选择性地实现渐进显示技术的方法包括为在本地计算装置上显示应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第一应用产生的。该方法包括响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识。该方法包括将压缩的标识从远程计算装置传输到本地计算装置。该方法包括为在本地计算装置上显示应用输出数据的第二窗口识别一段时间内在第二窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第二应用产生的。该方法包括将对第二应用所产生的应用输出数据的更新的未被压缩的标识从远程计算装置传输到本地计算装置。
在又一个方面,根据对于合成桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧选择性地实现渐进显示技术的方法包括为在本地计算装置上显示应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第一应用产生的。该方法包括响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识。该方法包括将该压缩的标识从远程计算装置传输到本地计算装置。该方法包括响应于所识别的在该段时间内在第一窗口中显示的帧的数量,来为在本地计算装置上显示应用输出数据的第二窗口确定传输对在远程计算装置上执行的第二应用所产生的应用输出数据的更新的压缩的标识。该方法包括将对第二应用所产生的应用输出数据的更新的压缩的标识从远程计算装置传输到本地计算装置。
在又一个方面,根据对于合成桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧来选择性地实现渐进显示技术的方法包括为在本地计算装置上显示应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第一应用产生的。该方法包括响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识。该方法包括将该压缩的标识从远程计算装置传输到本地计算装置。该方法包括响应于所识别的在该段时间内在第一窗口中显示的帧的数量来为在本地计算装置上显示输出数据的合成桌面确定传输对在远程计算装置上执行的远程桌面合成引擎所产生的输出数据的更新的压缩的标识。该方法包括将对远程桌面合成引擎所产生的输出数据的更新的压缩的标识从远程计算装置传输到本地计算装置。
在又一个方面,根据对于合成桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧来选择性地实现渐进显示技术的系统包括第一钩子组件、第二钩子组件、显示管理器和远程代理。在远程计算装置上执行的第一钩子组件为在本地计算装置上显示应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第一应用产生的。在远程计算装置上执行的第二钩子组件为在本地计算装置上显示应用输出数据的第二窗口识别在一段时间内在第一窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第二应用产生的。在远程计算装置上执行的显示管理器确定是否指示对第一应用所产生的第一输出数据更新和第二应用所产生的第二输出数据更新中的至少一个进行压缩。在远程计算装置上执行的远程代理接收来自显示管理器的压缩第一输出数据更新的指令,接收来自显示管理器的不压缩第二输出数据更新的指令、压缩第一输出数据更新以及向本地计算装置传输压缩的第一输出数据更新和未被压缩的第二输出数据更新。
在一个实施例中,远程代理包括用于接收来自显示管理器的指令的接收器。在又一个实施例中,该系统包括在远程计算装置上执行的且产生合成的桌面环境的远程桌面合成引擎。在又一个实施例中,该系统包括在本地计算装置上执行的且显示由远程桌面合成引擎产生的合成的桌面环境的本地桌面窗口管理器。在又一个实施例中,显示管理器响应于所识别的在该时间段内在第一窗口中显示的帧的数量来指示对第二输出数据更新进行压缩。在又一个实施例中,远程代理接收来自显示管理器的压缩第二输出数据更新的指令并且接收来自显示管理器的不压缩第一输出数据更新的指令;远程代理压缩第二输出数据更新并向本地计算装置传输压缩的第二输出数据更新和未被压缩的第一输出数据更新。
在一些方面,本公开涉及根据在一段时间内在窗口中显示的多个帧来选择性地实现渐进显示技术的方法。第一钩子组件可以为在本地计算装置上显示第一应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧,该第一应用输出数据是由在远程计算装置上执行的第一应用产生的。远程代理可以响应于所识别的帧的数量来压缩对第一应用所产生的第一应用输出数据的更新的标识。远程代理可以将该压缩的标识从远程计算装置传输到本地计算装置。第二钩子组件可以为在本地计算装置上显示第二应用输出数据的第二窗口识别在一段时间内在第二窗口中显示的多个帧,该第二应用输出数据是由在远程计算装置上执行的第二应用产生的。远程代理可以将对第二应用所产生的第二应用输出数据的更新的未被压缩的标识从远程计算装置传输到本地计算装置。
在一些实施例中,第一钩子组件接收识别由第一应用产生的多个帧的信息。在另外的实施例中,第一钩子组件将该识别帧的数量的信息转发到显示管理器。在另外的实施例中,显示管理器监控第一应用输出数据和第二应用输出数据的帧率。在另外的实施例中,显示管理器确定第一应用输出数据的帧率已经改变。在另外的实施例中,显示管理器响应于确定所述帧率已经改变来产生对远程代理的压缩对第一应用输出数据的更新的标识的指令。在另外的实施例中,显示管理器根据识别帧的数量的信息来确定第一应用输出数据的帧率已经改变。在一些实施例中,显示管理器根据所确定的帧率上的改变向远程代理传输压缩对第一应用输出数据的更新的标识的指令。在其他实施例中,显示管理器根据所确定的帧率上的改变向远程代理传输不压缩对第二应用输出数据的更新的标识的指令。
在一些方面,本公开涉及根据在窗口中显示的多个帧来选择性地实现渐进显示技术的方法。第一钩子组件可以为在本地计算装置上显示第一应用输出数据的第一窗口识别在一段时间内在第一窗口中将要显示的多个帧,该第一应用输出数据是由在远程计算装置上执行的第一应用产生的。显示管理器可以根据所识别的将要显示的帧的数量产生压缩对第一应用所产生的第一应用输出数据的更新的标识的指令。远程代理可以压缩对第一应用所产生的第一应用输出数据的更新的标识。远程代理可以将该压缩的标识从远程计算装置传输到本地计算装置。显示管理器可以为在本地计算装置上显示第二应用输出数据的第二窗口确定是压缩还是不压缩对在远程计算装置上执行的第二应用所产生的第二应用输出数据的更新的第二标识。远程代理可以将对第二应用所产生的第二应用输出数据的更新的第二标识从远程计算装置传输到本地计算装置。可以根据显示管理器的确定来压缩或不压缩对第二应用输出数据的更新的第二标识。
在一些实施例中,显示管理器确定响应于识别在该时间段内在第一窗口中显示的帧的数量来确定压缩或不压缩对第二应用输出数据的更新的第二标识。在另外的实施例中,显示管理器监控第一应用输出数据和第二应用输出数据的帧率。在一些其他实施例中,显示管理器确定压缩对第二应用输出数据的更新的第二标识并且将该对第二应用所产生的第二应用输出数据的更新的压缩的第二标识传输到本地计算装置上的接收代理。在一些实施例中,远程代理传输该对第二应用的更新的压缩的第二标识。在另外的实施例中,显示管理器确定不压缩对第二应用输出数据的更新的第二标识并且将该对第二应用所产生的第二应用输出数据的更新的未被压缩的第二标识传输到本地计算装置上的接收代理。在另外的实施例中,远程代理传输该更新的未被压缩的第二标识。
在一些方面,本公开涉及根据对于合成的桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧,选择性地实现渐进显示技术的方法。在本地计算装置上的本地代理或在远程计算装置上执行的第一钩子组件可以为显示第一应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧,该第一应用输出数据是由在远程计算装置上执行的第一应用产生的。可以响应于所识别的帧的数量来压缩对第一应用所产生的第一应用输出数据的更新的标识。可以将该压缩的标识从远程计算装置传输到本地计算装置。响应于所识别的在该段时间内在第一窗口中显示的帧的数量,可以为在本地计算装置上显示输出数据的合成桌面确定传输对远程计算装置上的远程桌面窗口管理器所产生的输出数据的更新的压缩的标识。将对远程桌面窗口管理器所产生的输出数据的更新的压缩的标识从远程计算装置传输到本地计算装置。
在一些方面,本公开涉及根据在窗口中显示的多个帧来选择性地实现渐进显示技术的系统。在远程计算装置上执行的第一钩子组件可以为在本地计算装置上显示第一应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧。该第一应用输出数据可以是由在远程计算装置上执行的第一应用所产生的。在远程计算装置上执行的第二钩子组件可以为在本地计算装置上显示第二应用输出数据的第二窗口识别在一段时间内在第二窗口中显示的多个帧。该第二应用输出数据可以是由在远程计算装置上执行的第二应用所产生的。在远程计算装置上执行的显示管理器可以确定是否指示对第一应用所产生的第一输出应用数据更新和第二应用所产生的第二输出应用数据更新中的至少一个进行压缩。在远程计算装置上执行的远程代理可以接收来自显示管理器的压缩第一输出数据更新的指令,接收来自显示管理器的不压缩第二输出数据更新的指令、压缩第一输出数据更新以及向本地计算装置传输压缩的第一输出数据更新和未被压缩的第二输出数据更新。
在一些实施例中,远程代理还包括用于接收来自显示管理器的指令的接收器。在另外的实施例中,远程桌面窗口管理器在远程计算装置上执行并且产生合成的桌面环境。在一些实施例中,本地桌面窗口管理器在本地计算装置上执行并且显示由远程桌面窗口管理器产生的合成的桌面环境。在另外的实施例中,显示管理器还包括用于响应于识别在该段时间内在第一窗口中显示的帧的数量来指示对第二输出数据更新进行压缩的装置。在一些实施例中,远程代理还包括用于接收来自显示管理器的压缩第二输出数据更新的指令的装置、用于接收来自显示管理器的不压缩第一输出数据更新的指令的装置、用于压缩第二输出数据更新的装置和用于向本地计算装置传输压缩的第二输出数据更新和未被压缩的第一输出数据更新的装置。
在一些实施例中,显示管理器还包括用于响应于所识别的在该段时间内在第一窗口中显示的多个帧来为在本地计算装置上显示输出数据的合成桌面确定指示压缩对在远程计算装置上执行的远程桌面窗口管理器产生的输出数据的更新的装置。在一些实施例中,远程代理还包括用于接收来自显示管理器的压缩由远程桌面窗口管理器产生的输出数据更新的指令的装置、用于压缩由远程桌面窗口管理器产生的输出数据更新的装置和用于向本地计算装置传输远程桌面窗口管理器所产生的压缩的输出数据更新的装置。
在一些方面,本公开涉及根据对于合成的桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧,选择性地实现渐进显示技术的系统。该系统可以包括用于为在本地计算装置上显示应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧的装置,该应用输出数据是由在远程计算装置上执行的第一应用产生的。该系统也可以包括用于响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识的装置。该系统还可以包括用于将该压缩的标识从远程计算装置传输到本地计算装置的装置。该系统也可以包括用于为在本地计算装置上显示应用输出数据的第二窗口识别在一段时间内在第二窗口中显示的多个帧的装置,该应用输出数据是由在远程计算装置上执行的第二应用产生的。该方法还包括用于将对第二应用所产生的应用输出数据的更新的未被压缩的标识从远程计算装置传输到本地计算装置的装置。
在一些方面,本公开涉及根据对于合成的桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧,选择性地实现渐进显示技术的系统。该系统包括用于为在本地计算装置上显示应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧的装置,该应用输出数据是由在远程计算装置上执行的第一应用产生的。该系统也可以包括用于响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识的装置。该系统还可以包括用于将该压缩的标识从远程计算装置传输到本地计算装置的装置以及用于响应于所识别的在该段时间内在第一窗口中显示的帧的数量来为在本地计算装置上显示应用输出数据的第二窗口确定传输对在远程计算装置上执行的第二应用所产生的应用输出数据的更新的压缩的标识的装置。该系统也可包括用于将对第二应用所产生的应用输出数据的更新的压缩的标识从远程计算装置传输到本地计算装置的装置。
在一些方面,本公开涉及根据对于合成的桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧,选择性地实现渐进显示技术的系统。本公开也可涉及根据对于非合成的桌面系统中的单独应用窗口在一段时间内在窗口中显示的多个帧,选择性地实现渐进显示技术的系统和方法。该系统可包括用于为在本地计算装置上显示应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧的装置,该应用输出数据是由在远程计算装置上执行的第一应用产生的。该系统也可以包括用于响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识的装置。该系统可以包括用于将该压缩的标识从远程计算装置传输到本地计算装置的装置。该系统还可以包括用于响应于所识别的在该段时间内在第一窗口中显示的帧的数量来为在本地计算装置上显示输出数据的合成桌面确定传输对在远程计算装置上执行的远程桌面窗口管理器所产生的输出数据的更新的压缩的标识的装置。该系统可包括用于将对远程桌面窗口管理器所产生的输出数据的更新的压缩的标识从远程计算装置传输到本地计算装置的装置。
附图说明
通过参考下述结合附图的描述,本公开的前述和其它目的、方面、特征和优点将会更加明显并更易于理解,其中:
图1A是描述包括与远程机器通信的本地机器的网络环境的实施例的框图;
图1B-1E是描述适用于此处所描述的方法和系统的计算机的实施例的框图;
图2A是描述根据对于合成的桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧来选择性地实现渐进显示技术的系统的一个实施例的框图;
图2B是描述用于选择性地实现渐进显示技术的系统的一个实施例的框图;
图2C是描述用于选择性地实现渐进显示技术的系统的一个实施例的框图;
图3是描述根据对于合成的桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧来选择性地实现渐进显示技术的方法的一个实施例的流程图;
图4是描述根据对于合成的桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧来选择性地实现渐进显示技术的方法的实施例的流程图;
图5是描述根据对于合成的桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧来选择性实现渐进显示技术的方法的又一个实施例的流程图。
具体实施方式
现参考图1A,描述了网络环境的实施例。总的来说,网络环境包括经由一个或者多个网络104与一个或者多个远程机器106a-106n(总的还称为服务器106或者远程机器106)通信的一个或者多个本地机器102a-102n(总的还称为本地机器102、客户机102、客户节点102、客户机器102、客户计算机102、客户装置102、端点102或端点节点102)。在一些实施例中,本地机器102既有作为客户节点寻求访问服务器所提供资源的能力,也有作为服务器向其他客户机102a-102n提供对所寄载的资源的访问的能力。
虽然图1A示出了在本地机器102和远程机器106之间的网络104,本地机器102和远程机器106可以位于相同的网络104上。网络104可为局域网(LAN)(例如公司内网),城域网(MAN),或者广域网(WAN)(例如因特网或万维网)。在一些实施例中,在本地机器102和远程机器106之间可以有多个网络104。在这些实施例的一个中,网络104’(未示出)可为专用网并且网络104可为公网。在这些实施例的另一个中,网络104’可为专用网并且网络104’可为公网。在又一个实施例中,网络104和104’可都为专用网。而在另一个实施例中,网络104和104’可都为公网。
网络104可以是任何类型和/或形式的网络,并且可包括任意下述网络:点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET(同步光纤网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在一些实施例中,网络104可以包括无线链路,诸如红外信道或者卫星频带。网络104的拓扑可为总线型、星型或环型网络拓扑。网络104可以具有对于本领域普通技术人员所熟知的、能够支持此处描述的操作的任何这样的网络拓扑。网络可包括利用用于移动装置间通信的任一或一些协议的移动电话网络,这些协议包括:AMPS、TDMA、CDMA、GSM、GPRS或UMTS。在一些实施例中,不同类型的数据可以通过不同协议传输。在其他实施例中,同一类型的数据可通过不同协议传输。
在一些实施例中,系统可包括多个逻辑分组的远程机器106。在这些实施例的一个中,服务器的逻辑分组可以被称为服务器群38。在这些实施例的又一个中,远程机器106可为地理上分散的。在其他实施例中,服务器群38可以作为单个实体被管理。仍在其他实施例中,服务器群38包括多个服务器群38。每个服务器群38内的远程机器106可能是异构的---一个或多个远程机器106可根据一种类型的操作系统平台(例如,WINDOWS NT、WINDOWS 2003或WINDOWS 2008,所有这些都是由华盛顿州Redmond的Microsoft公司出品的)操作,而一个或多个其它远程机器106可根据另一类型的操作系统平台(例如,Unix或Linux)操作。
每个服务器群38的远程机器106不必与同一服务器群38中的另一个远程机器106在物理上接近。因此,逻辑上分组为服务器群38的远程机器106组可以是使用广域网(WAN)连接或城域网(MAN)连接来互联的。例如,服务器群38可包括物理上位于不同大陆或大陆、国家、州、城市、校园或房间的不同区域的远程机器106。如果远程机器106使用局域网(LAN)连接或一些直连形式进行连接,则可增加服务器群38中的远程机器106间的数据传送速度。
远程机器106可以是文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器,或防火墙。在一些实施例中,远程机器106提供远程认证拨入用户服务,并且可被称为RADIUS服务器。在其他实施例中,远程机器106可以有作为应用服务器或者作为主应用服务器工作的能力。仍在其他实施例中,远程机器106是刀片服务器。在其他实施例中,远程机器106执行向用户或客户计算机102提供对计算环境访问的虚拟机。
在一个实施例中,远程机器106可包括活动目录。远程机器106可以是应用加速设备。对于其中远程机器106是应用加速设备的实施例,远程机器106可提供包括防火墙功能、应用防火墙功能,或负载平衡功能的功能。在一些实施例中,远程机器106包括诸如由位于美国加州San Jose的Citrix应用网络组、位于美国加州Mountain View,的Silver Peak Systems公司、位于美国加州San Francisco的Riverbed Technology公司、位于美国华盛顿州Seattle的F5 Networks公司或位于美国加州Sunnyvale的JuniperNetworks公司制造的设备系列中的一个的设备。
在一些实施例中,远程机器106代表本地机器102的用户执行应用。在其他实施例中,远程机器106执行虚拟机,该虚拟机提供执行会话,在该执行会话中应用代表本地机器102的用户来执行。在这些实施例的一个中,该执行会话是所寄载的桌面会话。在这些实施例的另一个中,该执行会话提供对计算环境的访问,该计算环境包括如下的一个或多个:应用、多个应用、桌面应用、以及在其中可执行一个或多个应用的桌面会话。
在一些实施例中,本地机器102与远程机器106通信。在一个实施例中,本地机器102与服务器群38中的远程机器106之一直接通信。在又一个实施例中,本地机器102执行程序邻近应用(a program neighborhoodapplication)以与服务器群38内的远程机器106通信。在又一个实施例中,远程机器106提供主节点的功能。在一些实施例中,本地机器102通过网络104与服务器群38中的远程机器106通信。例如通过网络104,本地机器102可以请求执行服务器群38中的远程机器106a-106n所寄载的各种应用,并接收应用执行结果的输出进行显示。在一些实施例中,只有主节点提供这样的功能,即识别和提供与远程机器106b相关的地址信息所需的功能,所述远程机器106b寄载所请求的应用。
在一个实施例中,远程机器106提供web服务器的功能。在又一个实施例中,远程机器106a接收来自本地机器102的请求,将该请求转发到第二远程机器106b,并用远程机器106b对该请求的响应来对本地机器102的请求进行响应。在又一个实施例中,远程机器106a获得对本地机器102可用的应用的列举,以及与寄载由该应用的列举所识别的应用的远程机器106b相关联的地址信息。在又一个实施例中,远程机器106使用web接口提供对本地机器102的请求的响应。在一个实施例中,本地机器102直接与远程机器106通信以访问所识别的应用。在又一个实施例中,本地机器102接收通过执行远程机器106上所识别的应用而产生的输出数据,例如显示数据。
在一些实施例中,远程机器106或服务器群38可运行一个或多个应用,例如提供瘦客户端计算的应用或远程显示表示应用。在一个实施例中,远程机器106或服务器群38作为应用来执行Citrix Systems有限公司的CITRIXACCESS SUITE的任一部分(例如产品METAFRAME或CITRIX PRESENTATIONSERVER),由Citrix Systems有限公司出品的任何下列产品:CITRIX XENAPP、CITRIX XENDESKTOP、CITRIX ACCESS GATEWAY,和/或微软公司出品的MICROSOFT WINDOWS终端服务中的任意一个。在又一个实施例中,该应用是由位于美国佛罗里达州Fort Lauderdale的Citrix Systems有限公司开发的ICA客户机。仍在又一个实施例中,远程机器106可以运行应用,例如,该应用可以是提供诸如由位于美国华盛顿州Redmond的微软公司制造的MICROSOFT EXCHANGE的电子邮件服务的应用服务器、web或Internet服务器,或桌面共享服务器,或协同服务器。在又一个实施例中,任何应用可以包括任何类型的所寄载的服务或产品,例如位于美国加利福尼亚州SantaBarbara的Citrix Online Divisi on公司提供的GOTOMEETING,位于美国加利福尼亚州Santa Clara的WebEx有限公司提供的WEBEX,或者位于美国华盛顿州Redmond的微软公司提供的Microsoft Office LIVE MEETING。
本地机器102可以执行、操作或者以其它方式提供应用,应用可为任何类型和/或形式的软件、程序或者可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、或者Java小应用程序、或者可以在本地机器102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中,该应用可以是代表本地机器102在远程机器106上执行的基于服务器或者基于远程的应用。在其他实施例中,远程机器106可以使用任意瘦-客户端协议、表示层协议或远程显示协议来显示输出到本地机器102,所述协议例如由位于美国佛罗里达州Ft.Lauderdale的Citrix Systems有限公司出品的独立计算架构(ICA)协议;由位于美国华盛顿州Redmond的微软公司出品的远程桌面协议(RDP);X11协议;由AT&T贝尔实验室出品的虚拟网络计算(VNC)协议;由位于美国加里福尼亚州Sunnyvale和位于以色列Raanana的Qumranet有限公司出品的SPICE协议;由加里福尼亚州Milpitas的VESA公司出品的Net2Display协议;由位于加拿大不列颠哥伦比亚省的Burnaby的Teradici公司出品的PC-over-IP协议;由加里福尼亚州San Jose的Wyse Technology有限公司出品的TCX协议;由纽约州纽约市的哥伦比亚大学开发的THINC协议;或由马萨诸塞州Chelmsford的Desktone有限公司开发的Virtual-D协议。该应用可使用任何类型的协议,并且它可为,例如,HTTP客户端、FTP客户端、Oscar客户端或Telnet客户端。在其它实施例中,该应用包括与互联网协议电话(VoIP)通信相关的任何类型的软件,例如软IP电话。在进一步的实施例中,该应用包括与实时数据通信相关的任一应用,例如用于流式传输视频和/或音频的应用。
本地机器102和远程机器106可以被部署为任意类型和形式的计算装置和/或在其上执行,例如能够与任意类型和形式的网络通信并且执行此处所描述的操作的计算机、网络装置或设备。图1B和1C描述了用于实施本地机器102或远程机器106的实施例的计算装置100的框图。如图1B和1C所示,每个计算装置100包括中央处理单元121和主存储器单元122。如图1B所示,计算装置100可包括存储装置128、安装装置116、网络接口118、I/O控制器123、显示装置124a-124n、键盘126和诸如鼠标的指示装置127。存储装置128可包括但不限于操作系统、软件和客户机代理120。如图1C所示,每个计算装置100也可包括另外的可选部件,例如存储器端口103、桥170、一个或多个输入/输出装置130a-130n(总的使用标号130表示)以及与中央处理单元121通信的高速缓存存储器140。
中央处理单元121是响应并处理从主存储器单元122取出的指令的任意逻辑电路。在一些实施例中,中央处理单元121由微处理器单元提供,例如:由位于美国加利福尼亚州Mountain View的Intel公司制造的微处理器单元;由位于美国伊利诺伊州Schaumburg的Motorola公司制造的微处理器单元;由位于美国加利福尼亚州Santa Clara的Transmeta公司制造的微处理器单元;RS/6000处理器,由位于美国纽约州White Plains的InternationalBusiness Machines公司制造的微处理器单元;或者由位于美国加利福尼亚州Sunnyvale的Advanced Micro Devices公司制造的微处理器单元。计算装置100可以基于这些处理器中的任意一种,或者能够如此处所述方式运行的任意其它处理器。
主存储器单元122可以是能够存储数据并允许微处理器121直接访问任意存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页模式DRAM(FPM DRAM)、增强DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发扩展数据输出DRAM(BEDO DRAM)、增强DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双倍数据速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接内存总线DRAM(DRDRAM)或铁电RAM(FRAM)。主存储器122可以基于上述存储器芯片的任意一种,或者能够如此处所述方式运行的任意其它可用存储器芯片。在图1B所示的实施例中处理器121通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图1C描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1C中主存储器122可以是DRDRAM。
图1C描述在其中主处理器121通过有时被称为后端总线的次级总线直接与高速缓存存储器140通信的实施例。其他实施例中,主处理器121使用系统总线150与高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1B所示的实施例中,处理器121通过本地系统总线150与各种I/O装置130进行通信。可以使用各种不同的总线将中央处理单元121连接到任意I/O装置130,包括VESA VL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器121可以使用高级图形端口(AGP)与显示器124通信。图1C描述了在其中主处理器121通过HYPERTRANSPORT、RAPIDIO、或INFINIBAND通信技术直接与I/O装置130b通信的计算机100的实施例。图1C也描述了在其中本地总线和直接通信相混合的实施例:处理器121使用本地互连总线与I/O装置130a通信同时直接与I/O装置130b通信。
计算装置100中可以有多种I/O装置130a-130n。输入装置包括键盘、鼠标、触控板、轨迹球、麦克风和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图1B所示,I/O装置可以由I/O控制器123控制。I/O控制器可以控制一个或多个I/O装置,例如键盘126和指示装置127(如鼠标或光笔)。此外,I/O装置还可以为计算装置100提供存储和/或安装介质116。在其它实施例中,计算装置100可以提供USB连接(未示出)以接纳手持USB存储装置,例如由位于美国加利福尼亚州Los Alamitos的Twintech Industry有限公司生产的USB闪存驱动系列装置。
再次参考图1B,计算装置100可以支持任意适当的安装装置116,例如用于接纳诸如3.5英寸、5.25英寸磁盘或ZIP磁盘的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装软件和程序的任意其它装置。计算装置100还可以包括存储装置,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任意程序的应用软件程序。或者,可以使用安装装置116的任意一种作为存储装置。此外,操作系统和软件可从可引导介质运行,可引导介质例如是可引导CD,诸如KNOPPIX,其为一种用于GNU/Linux的可引导CD,可自knoppix.net作为GNU/Linux一个发行版获得。
此外,计算装置100可以包括网络接口118以通过多种连接来与网络104对接,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11、T1、T3、56kb、X.25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、基于SONET的以太网(Ethernet-over-SONET))、无线连接、或上述任意或全部的某种组合。可使用多种通信协议(例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口(FDDI)、RS232、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接)来建立连接。在一个实施例中,计算装置100可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或由位于美国佛罗里达州Ft.Lauderdale的Citrix Systems公司制造的Citrix网关协议的隧道协议来与其他计算装置100’通信。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100对接到能够通信并执行这里所说明的操作的任意类型的网络的任意其它装置。
在一些实施例中,计算装置100可以包括多个显示装置124a-124n或与其相连,这些显示装置各自可以是相同或不同的类型和/或形式。因而,任意一种I/O装置130a-130n和/或I/O控制器123可以包括任何类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置124a-124n对接、通信、连接或以其他方式使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置124a-124n对接。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器与显示装置124a-124n中的一个或多个连接。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器124a-124n。在其它实施例中,显示装置124a-124n中的一个或多个可以由一个或多个其它计算装置提供,诸如(例如通过网络)与计算装置100连接的计算装置100a和100b。这些实施例可以包括被设计和构造来使用另一个计算机的显示装置作为计算装置100的第二显示装置124a的任何类型的软件。本领域的普通技术人员应认识和意识到可以将计算装置100配置成拥有多个显示装置124a-124n的各种方式和实施例。
在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥,所述外部通信总线如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线、串行SCSI总线。
图1B和1C中所描述类型的计算装置100通常地在操作系统的控制下运行,所述操作系统控制任务的调度和对系统资源的访问。计算装置100可运行任何操作系统,诸如任意版本的MICROSOFT WINDOWS操作系统;不同发行版本的Unix和Linux操作系统;用于Macintosh计算机的MAC OS的任意版本;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算装置的操作系统,或者能够在计算装置上运行且执行此处所描述的操作的任意其它操作系统。典型的操作系统包括但不限于:WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT3.51、WINDOWS NT 4.0、WINDOWS 7、WINDOWS CE、WINDOWS XP和WINDOWS VISTA,所有这些均由位于美国华盛顿州Redmond的微软公司出品;由位于美国加利福尼亚州Cupertino的苹果计算机公司出品的MAC OS;由位于美国纽约州Armonk的国际商业机器公司出品的OS/2;以及由位于美国犹他州Salt LakeCity的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或形式的Unix操作系统,以及其它。
计算装置100可以是任意工作站、电话、台式计算机、膝上型或笔记本电脑、服务器、掌上电脑、移动电话或其他便携电信装置、媒体播放装置、游戏系统、移动计算装置,或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的任意其它类型和/或形式的计算、电信或者媒体装置。例如,计算机装置100可包括由位于美国加利福尼亚州Cupertino的苹果计算机公司出品的IPOD系列装置、由位于日本东京的索尼公司出品的PLAYSTATION2、PLAYSTATION3或PERSONAL PLAYSTATION PORTABLE(PSP)装置,由位于日本京都的Nintendo有限公司出品的NINTENDO DS、NINTENDOGAMEBOY、NINTENDO GAMEBOY ADVANCED或NINTENDO REVOLUTION装置,或者由位于美国华盛顿州Redmond的微软公司出品的XBOX或XBOX 360装置。
在一些实施例中,计算装置100可以有不同的处理器、操作系统以及符合该装置的输入装置。例如,在一个实施例中,计算装置100是由Palm有限公司出品的TREO180、270、600、650、680、700p、700w/wx、750、755p、800w、Centro或Pro智能电话。在这些实施例的一些中,TERO智能电话是在Pa lmOS操作系统的控制下操作并且包括笔输入装置以及五向导航装置。
在其他实施例中,计算装置100是移动装置,例如,JAVA使能蜂窝电话或个人数字助理(PDA),诸如i55sr、i58sr、i85s、i88s、i90c、i95c1、i335、i365、i570、I576、i580、i615、i760、i836、i850、i870、i880、i920、i930、ic502、ic602、ic902、i776或im1100,以上这些均由位于美国伊利诺伊州Schaumburg的摩托罗拉公司制造;由位于日本京都的Kyocera公司制造的6035或7135;或者由位于韩国首尔的Samsung电子有限公司制造的i300或i330。在一些实施例中,计算装置100是由位于芬兰的诺基亚公司制造或由位于瑞典Lund的Sony Ericsson Mobile Communications AB公司制造的移动装置。
在其他实施例中,计算装置100是黑莓(Blackberry)手持或智能电话,诸如由Research In Motion有限公司制造的装置,包括黑莓7100系列、8700系列、7700系列、7200系列、黑莓7520、黑莓PEARL 8100、8700系列、8800系列、黑莓Storm、黑莓Bold、黑莓Curve 8900、黑莓Pearl Flip。在其他实施例中,计算装置100是智能电话、Pocket PC、Pocket PC电话,或支持Microsoft Windows Mobile Software的其它手持移动装置。此外,计算装置100可以是任意工作站、台式计算机、膝上型或笔记本电脑、服务器、掌上电脑、移动电话、任意其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述操作的其它形式的计算或者电信装置。
在一些实施例中,计算装置100是数字音频播放器。在这些实施例的一个中,计算装置100是诸如由位于美国加利福尼亚州Cupertino的苹果计算机公司制造的Apple IPOD、IPOD Touch、IPOD NANO和IPOD SHUFFLE系列装置的数字音频播放器。在这些实施例的另一个中,数字音频播放器可作为便携媒体播放器和作为大容量存储装置来工作。在其他实施例中,计算装置100是诸如由位于美国新泽西州Ridgefield Park的Samsung ElectronicsAmerica公司制造的DigitalAudioPlayer Select MP3播放器,或由位于美国伊利诺伊州Schaumburg的Motorola公司制造的Motorola m500或m25的数字音频播放器。在其他实施例中,计算装置100是便携媒体播放器,诸如由Creative Technologies有限公司制造的Zen Vision W、Zen Vision系列、Zen Portable Media Center装置或Digital MP3系列的MP3播放器。仍在其他实施例中,计算装置100是支持以下文件格式的便携媒体播放器或数字音频播放器,这些文件格式包括但不限于MP3、WAV、M4A/AAC、WMAProtected AAC、AIFF、Audible有声读物、Apple Lossless音频文件格式和.mov、.m4v以及.mp4MPEG-4(H.264/MPEG-4AVC)视频文件格式。
在一些实施例中,计算装置100包括装置的组合,例如与数字音频播放器或便携媒体播放器相组合的移动电话。在这些实施例的一个中,计算装置100是组合数字音频播放器和移动电话的Motorola RAZR或Motorola ROKR系列。在这些实施例的又一个中,计算装置100是由位于加利福尼亚州Cupertino的苹果公司制造的iPhone系列智能电话中的装置。
在一个实施例中,计算装置102a可从远程机器106请求资源,同时向客户机102b提供远程机器106的功能。在这样的实施例中,就从远程机器106(其可以被称为服务器)接收数据而言,计算装置102a可以被称为客户机,而就第二客户机102b而言,计算装置102a可以被称为服务器。在又一个实施例中,客户机102可代表客户机102上的用户从远程机器106请求资源。
如图1D所示,计算装置100可以包括多个处理器,并且可以提供用于对不只一个数据片同时执行多个指令或者同时执行一个指令的功能。在一些实施例中,计算装置100可包括具有一个或多个核的并行处理器。在这些实施例的一个中,计算装置100是共享内存并行装置,具有多个处理器和/或多个处理器核,将所有可用内存作为一个全局地址空间进行访问。在这些实施例的又一个中,计算装置100是分布式存储器并行装置,具有多个处理器,每个处理器仅访问本地存储器。在这些实施例的又一个中,计算装置100既有共享的存储器又有仅由特定处理器或处理器子集访问的存储器。在这些实施例的又一个中,如多核微处理器的计算装置100将两个或多个独立处理器组合在一个封装中,通常在一个集成电路(IC)中。在这些实施例的又一个中,计算装置100包括具有单元宽带引擎(CELL BROADBAND ENGINE)架构的芯片,并包括高能处理器单元以及多个协同处理单元,高能处理器单元和多个协同处理单元通过内部高速总线连接在一起,可以将内部高速总线称为单元互连总线。
在一些实施例中,处理器提供用于对多个数据片同时执行单个指令(SIMD)的功能。其他实施例中,处理器提供用于对多个数据片同时执行多个指令(MIMD)的功能。又一个实施例中,处理器可以在单个装置中使用SIMD和MIMD核的任意组合。
在一些实施例中,计算装置100可包括图形处理单元。图1E所示的这些实施例的一个中,计算装置100包括至少一个中央处理单元121和至少一个图形处理单元。在这些实施例的又一个中,计算装置100包括至少一个并行处理单元和至少一个图形处理单元。在这些实施例的又一个中,计算装置100包括任意类型的多个处理单元,多个处理单元中的一个包括图形处理单元。
现参考图2A,框图描述了用于选择性地实现渐进显示技术的系统的一个实施例。在合成的桌面环境中该技术可以是基于对于单独应用窗口在一段时间内在窗口中显示的多个帧。在一些实施例中,在非桌面合成系统中该技术基于在一段时间内由驱动程序(例如,显示驱动程序)从应用接收的多个帧。总的来说,该系统包括第一钩子(hooking)组件202、第二钩子组件208、显示管理器220和远程代理222。第一钩子组件202在远程计算装置106上执行。第一钩子组件202为在本地计算装置102上显示应用输出数据的第一窗口204识别在一段时间内在第一窗口204内显示的多个帧。该应用输出数据可以是由在远程计算装置106上执行的第一应用206所产生的任何数据或输出。第二钩子组件208在远程计算装置106上执行。第二钩子组件208为在本地计算装置102上显示应用输出数据的第二窗口210识别在一段时间内在第二窗口210内显示的多个帧。在第二窗口中显示的应用输出数据可以包括在远程计算装置106上执行的第二应用212的数据或输出。显示管理器220在远程计算装置106上执行。显示管理器220确定是否指示、启用、禁用或管理对第一应用所产生的第一输出数据更新或第二应用所产生的第二输出数据更新中的至少一个的压缩。远程代理222在远程计算装置106上执行。远程代理222可接收来自显示管理器220的对第一输出数据更新进行压缩的指令。远程代理222可接收来自显示管理器220的不对第二输出数据更新进行压缩的指令。远程代理222可以压缩第一输出数据更新。远程代理222可以向本地计算装置102传输用于在第一窗口204中显示的压缩的第一输出数据更新以及用于在第二窗口204中显示的未被压缩的第二输出数据更新。
在非桌面合成系统的一些实施例中,第一钩子组件202、第二钩子组件208、第三钩子组件230和显示管理器220是驱动程序所包含的功能或功能组件。该驱动程序可以是显示驱动程序。在一些实施例中,该驱动程序是Citrix图形驱动程序(Citrix Graphics Driver),例如Thinwire。钩子组件可包括该驱动器内监控从与一个或多个应用所产生的数据有关的应用接收的帧和/或调用的功能。在一些实施例中,来自应用的调用对应于由应用产生的单个帧。在其他实施例中,调用对应于任何数量的帧。在一些实施例中,根据一段时间内调用的数量或者一段时间内多个帧,显示管理器220确定帧率上的变化。在一些实施例中,根据一段时间内帧的数量来检测帧率上的变化。对输出到客户装置上的应用的窗口的帧率的控制可以完全在包含钩子组件和/或显示管理器220的功能的显示驱动程序内进行确定和/或控制。
仍参考图2A,更具体地,第一钩子组件202在远程计算装置106上执行。钩子组件202可包括硬件、软件或硬件和软件的组合。钩子组件202可包括可执行文件、算法、函数、编程代码、脚本、API函数、驱动程序、库或可在处理器121上执行的任何其他软件。在一个实施例中,第一钩子组件202是文件系统驱动程序。钩子组件202可包括在由Citrix Systems有限公司的ICA协议内操作的驱动程序。在一些实施例中,钩子组件202可包括用于在远程计算装置106和本地计算装置102之间传输图形命令的图形驱动程序。钩子组件202可包括CitrixSystems有限公司的Thinwire虚拟显示适配器或者Thinwire虚拟显示适配器的功能。在一些实施例中,第一钩子组件202是文件系统过滤驱动程序。钩子组件202可包括图形用户接口系统的功能,例如微软公司的Window 7或Windows Vista操作系统的DesktopWindow Manager(桌面窗口管理器)或Desktop Compositing Engine(桌面合成引擎)。钩子组件202可以是用于运行或显示音频或视频内容的应用,或包含所述应用的功能,所述应用例如Apple有限公司的Quicktime多媒体播放器或RealNetworks有限公司的RealPlayer媒体播放器。在又一个实施例中,第一钩子组件202是微型驱动程序。在又一个实施例中,第一钩子组件202是微型过滤器。在又一个实施例中,第一钩子组件202是用户模式钩子机制。钩子组件202可包括视频缓冲的功能。在又一个实施例中,第一钩子组件202是内核模式钩子机制,例如内核模式驱动程序。在又一个实施例中,第一钩子组件202是用户模式钩子设备。在一些实施例中,第一钩子组件202指访问一个或多个软件库以执行此处所述功能的钩子机制。
第一钩子组件202可包括监控和/或识别将要在客户计算装置上的窗口(例如第一窗口204)中显示的多个帧。第一钩子组件202可包括为在本地计算装置102上显示应用输出数据的第一窗口204识别一段时间内在第一窗口204中显示的多个帧的功能。钩子组件202可识别或监控由在远程计算装置106上执行的第一应用206产生的并且计划在客户计算装置102上显示的应用输出数据。在一些实施例中,第一钩子组件202是在第一应用206内部执行。在其他实施例中,第一钩子组件202在远程计算装置106上执行的操作系统的内部执行。钩子组件可包括接收或拦截用于识别将要在窗口中显示的多个帧的任何信息的任何功能。钩子组件可接收或拦截来自第一应用206的识别将要在窗口中显示的每秒帧数的信息。钩子组件也可识别对于特定窗口(例如窗口204或窗口210)在每秒将要显示的帧数上的变化速度。在这些实施例的一个中,第一钩子组件202拦截在第一应用206和操作系统之间的通信。在其他实施例中,第一钩子组件202拦截用于修改限定在一段时间内在第一窗口204中显示的多个帧的设置的命令。该命令可能来自应用206,被定向到应用206或者被定向到第一钩子组件202。
第二钩子组件212可包括第一钩子组件202的任何功能或实施例。第二钩子组件212可以是在远程计算装置106上执行钩子组件。与第一钩子组件202一样,第二钩子组件可以包括Citrix Systems有限公司的Thinwire虚拟显示适配器或者诸如微软公司的桌面窗口管理器或桌面合成引擎的图形用户接口系统的任何功能。第二钩子组件212可包括多媒体播放器的任何功能,所述多媒体播放器例如微软公司的Windows Media Player、Apple有限公司的Qucktime或者RealNetworks公司的RealPlayer。如第一钩子组件202一样,第二钩子组件212可包括用于对任何数量的应用(例如应用206或应用212)监控或测量每秒将要在本地计算装置102或客户计算装置102上的一个或多个窗口中显示的帧数。在一个实施例中,第二钩子组件212是文件系统驱动程序。在又一个实施例中,第二钩子组件212是文件系统过滤驱动程序。在又一个实施例中,第二钩子组件212是微型驱动程序。在又一个实施例中,第二钩子组件212是微型过滤器。在又一个实施例中,第二钩子组件212是用户模式钩子机制。在又一个实施例中,第二钩子组件212是内核模式钩子机制,例如内核模式驱动程序。在又一个实施例中,第二钩子组件212是用户模式钩子设备。在一些实施例中,第二钩子组件212指的是访问一个或多个软件库以执行此处所述功能的钩子机制。
第二钩子组件212为在本地计算装置102上显示应用输出数据的第二窗口210识别在一段时间内在第二窗口210内显示的多个帧,该应用输出数据是由在远程计算装置106上执行的第二应用212产生的。第二钩子组件212可识别每秒将要在第二窗口212中显示的帧率的变化。在一些实施例中,第二钩子组件212在第二应用212内部执行。在其他实施例中,第二钩子组件212在远程计算装置106上执行的操作系统的内部执行。在这些实施例的一个中,第二钩子组件212拦截在第二应用212和操作系统之间的通信。在其他实施例中,第二钩子组件212拦截来自第二应用212的修改限定在一段时间内在第二窗口210中显示的多个帧的设置的命令。
在一些实施例中,多个钩子组件在远程计算装置106上执行。在这些实施例的一个中,钩子组件在远程计算装置106上执行的多个应用的每一个内执行。在这些实施例的又一个中,钩子组件在远程桌面合成引擎232内执行。
远程桌面合成引擎232可包括任何图形用户接口或图形驱动程序或在远程计算装置106上的操作系统上操作的功能。在一些实施例中,远程桌面合成引擎232被称为桌面窗口管理器。在这些实施例的一个中,远程桌面合成引擎232在MI CROSOFT操作系统(例如WINDOWS 7或VISTA操作系统)中执行。在其他实施例中,远程桌面合成引擎232是在MAC OS操作系统中执行的合成引擎。在一个实施例中,远程桌面合成引擎232是产生合成的桌面环境的组件。在又一个实施例中,当在远程计算装置上执行的应用产生用于向用户显示的输出数据时,该应用将所产生的输出数据传输到离屏幕缓冲区(例如,不直接将其内容呈现给显示装置124的存储单元);远程桌面合成引擎232从该离屏幕缓冲区检索数据并在产生用于向用户显示的合成桌面环境中使用该数据的子集。在一些实施例中,远程桌面合成引擎232为CitrixSystems有限公司的Thinwire虚拟显示适配器。远程桌面合成引擎232可包括钩子组件,例如第三钩子组件230。第三钩子组件230可包括第一钩子组件202和第二钩子组件212的任何功能。
远程代理222可包括用于控制和/或管理对在远程计算装置106和本地计算装置102之间传输的数据的压缩的任何软件、硬件或软件和硬件的组合。远程代理222可包括可执行文件、算法、函数、编程代码、脚本、API函数、驱动程序、库或可在处理器121上执行的任何其他软件。远程代理222可包括用于控制、管理或触发对用于在窗口204或210上显示的数据的压缩、解压缩、加密和/或解密的任何功能。远程代理222接收来自显示管理器的压缩第一输出数据更新的指令,接收来自显示管理器的不压缩第二输出数据更新的指令、压缩第一输出数据更新以及向本地计算装置传输压缩的第一输出数据更新和未被压缩的第二输出数据更新。在一个实施例中,远程代理222包括用于经由瘦客户端协议、表示层协议或远程显示协议(包括例如上文结合图1A所讨论的任何协议)与本地代理224通信的功能。
显示管理器220可包括用于管理、控制和触发对在装置102和106之间传输的数据的压缩的任何软件、硬件或软件和硬件的组合。显示管理器220可包括可执行文件、函数、算法、API、小应用程序或可执行代码的任何其他功能部分。显示管理器220可包括Citrix Systems有限公司的Thinwire虚拟显示适配器的任何功能或者诸如微软公司的桌面窗口管理器或桌面合成引擎的图形用户接口系统的任何功能。显示管理器220可包括用于确定是否指示对用于在特定窗口中显示的由应用产生的第一输出数据更新的至少一个进行压缩的功能。显示管理器220可包括与钩子组件202、208和230通信并使用来自钩子组件的信息来确定哪个输出数据应该被压缩或者不被压缩的功能。显示管理器220可根据关于用户与关联到特定应用的特定窗口交互的信息来确定压缩对于该特定窗口204或210的特定输出数据。例如,显示管理器220可以根据装置102上的用户已经增加或减少与第一应用206的交互的信息来确定压缩或不压缩来自第一应用206的、计划发往装置106上的第一窗口204的输出数据。显示管理器可包括用于接收关于用户与第一窗口204或第二窗口210的交互性的信息以及使用该信息来设置、确定或调整对来自应用206、212或232的任何一个的输出数据进行压缩或解压缩的任何功能。
诸如第一应用206或第二应用212的应用可以是在远程计算装置106上运行或执行的任何应用。应用206和/或212可以是由来自本地计算装置102的客户访问的并且在远程计算装置106上运行的任何应用。该应用可以是多媒体演示应用或功能。该应用可以是多媒体播放器,例如微软公司的WindowsMedia Player、Apple有限公司的Quicktime播放器、RealNetworks有限公司的RealPlayer。该应用可以是web浏览器应用,例如微软公司的InternetExplore,或者可以是文字处理应用,例如微软公司的Mircrosoft Word。在一个实施例中,该应用可以被配置为显示每个时间段的第一数量的帧而远程桌面合成引擎232被配置为显示每个时间段的第二数量的帧。在又一个实施例中,远程桌面合成引擎232指定每个时间段将要显示的多个帧,而不是允许应用来指定每个时间段将要显示的帧的数量。
诸如第一窗口204和第二窗口210的窗口可包括对应于在远程计算装置106上运行的应用的任何用户接口。窗口204和210可包括对于任何应用206或212的任何图形用户接口、交互接口或显示接口。窗口204和210可包括视频显示、音频显示、图形显示、文字处理文档的窗口、web浏览器或电子邮件接口。窗口204和210可接收来自在远程计算装置106上运行的应用206和212的数据并且可以将该数据显示给用户。
本地代理224可以是用于对在装置102和装置106之间传输的压缩或未被压缩的数据进行处理的任何代理。本地代理224可包括用于压缩、解压缩、加密或解密数据的任何功能。本地代理224可利用来自应用206和212的任何指令来重建曾在装置106侧被压缩的数据以便将其呈现在窗口204和210中。本地代理224可包括远程代理222和/或显示管理器220的任何功能。
在一些实施例中,由应用或产生用于在窗口中显示的输出数据的其他源来控制在窗口内显示的多个帧。在这些实施例的一个中,例如,在计算装置100上执行的应用产生输出显示。与计算装置100上执行的操作系统相结合,该应用可指示在该窗口内显示所产生的输出数据,该输出数据被显示给(例如,显示装置124上的)用户。在这些实施例的又一个中,当应用产生更新的输出显示,该应用生成对该输出数据的更新的标识,而操作系统指示在窗口中显示所标识的更新。在这些实施例的又一个中,在一段时间内在窗口中显示的帧的数量指示对在该段时间内在该窗口中显示的输出数据的多个更新-例如,如果该窗口每秒显示两帧,则在1秒之内,该窗口显示最初从应用接收的输出数据以用于显示(经由操作系统),然后显示包含由该应用产生的经更新的输出数据的第二帧。在其他实施例中,每个时间段大量的帧指示窗口比在该窗口在每个时间段显示少量的帧的情况更频繁地显示对初始输出数据的更新;例如,每秒显示10帧的窗口显示最初从应用接收的输出数据和九次更新,而每秒显示两帧的窗口显示最初从应用接收的输出数据和一次更新。在其他实施例中,每个时间段显示的多个帧是用户与产生这些帧的应用交互程度的结果。在这些实施例的一个中,例如,如果用户请求旋转应用内的图像,则在该段时间内显示的帧的数量要比在用户请求静态显示图像的情况下高。
现参考图2B,显示用于根据所检测的用户交互性实现选择性渐进显示技术的实施例。图2B示出了在诸如Windows XP系统的非桌面合成系统的用户级上运行的应用App1、App2和App3。在内核级,诸如Citrix图形驱动程序或Thinwire的函数与Win32k.sys函数一起运行。Citrix图形驱动程序函数可以检测给定应用的帧率的变化并且基于该帧率的变化,该函数可以确定用户已经开始与该给定的应用进行交互。响应于该确定,该函数可以通过通知显示管理器220用户已经开始与该应用更主动地交互来实现选择性渐进显示技术。然后,为了适应在用户与该应用的交互期间增加的用户需求,显示管理器220可发送压缩或不压缩该给定应用的应用输出数据的指令。该应用输出数据可包括将要在窗口中显示的任何数据或者对应用的输出数据的更新的任何标识。在一些实施例中,对应用输出数据的更新的标识包括一个或多个用于在窗口中做出改变或进行绘制的命令或指令。在其他实施例中,对应用输出数据的更新的标识包括修改图像的指令。对输出数据的更新的标识可包括对于将要被修改或重绘的每个像素、像素的组、整个窗口或者任意数量的窗口部分的任何指令或数据。
诸如Citrix图形驱动程序或Thinwire驱动程序的函数或驱动程序可确定在远程计算装置106上操作的哪个应用正在提交用于在装置102的远程窗口上显示的数据。该函数可以在本地计算装置102上操作。在一些实施例中,该函数可以在远程计算装置106上操作。该函数可以是本地代理224或远程代理222的操作或函数。在一些实施例中,该函数是显示管理器220。该函数可以识别使用进程名的相关应用。该函数也可以确定应用正在本地计算装置102的屏幕上的哪些地方绘制或显示图形。该函数也可以确定应用正在如何快速地绘制或显示图形(包括位图)。当用户与应用的窗口(例如第一窗口204或第二窗口210)交互时,该应用可以更快地进行绘制,以使得在屏幕的特定区域中以每秒帧数为单位的帧率增加。该帧率上的增加可能是对于当用户正在与应用交互时的短时间段,或者对于较长的一段时间。该帧率上的增加可以由函数检测到,以便该函数检测或查看来自应用的帧的突发。在一些实施例中,该函数通过检测对于特定应用或应用窗口的帧率上的增加来检测用户已经开始经由ICA与该应用交互。在一些实施例中,在窗口204或206中的选择性渐进显示数据的技术被应用于在该函数或驱动程序检查到突发活动(直到用户交互时)的期间应用所选择的位图之内。在一些实施例中,该函数是桌面合成系统,其中当用户与应用交互时对于特定视频缓冲器的应用帧率激增。在这样的实施例中,选择性渐进显示技术被应用于用户与其交互的那些应用的选择的位图。在其他实施例中,对于在该函数检查到特定应用的每秒增加的帧数行为的时间段期间应用选择性渐进显示技术。
现参考图2C,显示对于非交互式应用实现选择性渐进显示技术的实施例。在一些实施例中,非交互式应用可包括用于在客户机装置上播放视频或图形文件的媒体应用或视频显示应用。诸如GDI App、DirecX App和OpenGLApp的应用可以在装置102和/或106上操作。这些应用的每一个可以被连接到单独的视频缓冲器。应用的以每秒帧数为单位的视频更新速率可能很高。在一些实施例中,操作系统的桌面窗口管理器可以降低视频的帧率以便节约带宽。例如,桌面窗口管理器可以降低对于一个或多个应用的输出的一个或多个视频流的每秒帧数。
产生将要在装置102的窗口上显示的数据的应用可以以较高的帧率产生视频输出。一些视频应用可以以比其他应用更快的帧率来显示视频。然而,在一些实施例中,在窗口204或210中显示视频的应用在绝大部分时间可能在屏幕上的同一区域进行绘制。这个绘制的位置可能不同于交互式应用,在交互式应用中绘制数据可以处理“屏幕上的邻近区域”中变化。在一个实施例中,例如,当正在使用诸如Quicktime播放器的视频或媒体应用播放视频时,诸如桌面窗口管理器的函数可以识别该媒体应用并且确定该应用在屏幕中的同一区域之内进行绘制。该函数或驱动程序可以确定该媒体应用比预期的更快地进行绘制,例如以每秒24帧或更高的速度。该函数可以将每秒帧数降低到比每秒24帧低的数量。该每秒帧数上的降低可以是根据带宽需求、视频显示器的当前设置或者甚至基于用户可能正与之交互的其他应用。在一些实施例中,用户可以使用交互式应用旋转模型。在这样的实施例中,应用将会在邻近区域中而不是在与该媒体应用显示区域相同的区域中快速地进行绘制。该函数可以根据所检测到的用户交互来增加交互式应用的帧率并减小正在显示的视频的帧率。在一些实施例中,当视频应用窗口被不断移动或滚动时,应用正在进行绘制的区域可能发生变化并在新的区域中平息下来。一旦检测到视频位图,就可以使用在这些视频位图上的选择性渐进显示。在这样的实施例,每秒帧数和视频帧的图像质量可以根据带宽动态地变化。在一些实施例,每秒帧数和视频帧的图像质量可以根据用户可能与之交互的其他应用而不同。在其他实施例中,选择性渐进显示可以使用CODEC技术,例如视频编解码器(Theora编码器的H.263/H.264标准)。可以经由ICA、经由TCP或者在一些实施例中,经由不同的传输协议(例如UDP)来传输数据。
现参考图3,流程图描述了根据合成的桌面环境中的应用的窗口中显示的数据的帧率的变化,选择性地实现渐进显示技术的方法的一个实施例。总的来说,该方法300包括为在本地计算装置上显示应用输出数据的第一窗口识别一段时间内在第一窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第一应用产生的(302)。该方法包括响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识(304)。该方法包括将该压缩的标识从远程计算装置传输到本地计算装置(306)。该方法包括为在本地计算装置上显示应用输出数据的第二窗口识别一段时间内在第二窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第二应用产生的(308)。该方法包括将对第二应用所产生的应用输出数据的更新的未被压缩的标识从远程计算装置传输到本地计算装置。
在一个实施例中,在应用的窗口内显示的多个帧与用户与应用的交互程度有关。在一个示例中,如果应用被设置为很少更新输出数据(通常导致在该时间段内显示较低数量的帧),那么用户与应用的交互可能不如当应用被设置为经常更新输出数据时那么多。换句话说,用户交互性可以导致在一段时间内在窗口204或210中显示的大量的帧。在一些实施例中,如果用户与由应用显示的数据或代表应用的数据交互,则用户可以请求或者引起额外的更新,例如添加或修改数据,或以这样的方式与应用交互,即使得用户受益于对数据的更频繁的更新。
显示管理器220可根据在一段时间内在窗口中显示的多个帧的识别来确定本地计算装置102的用户与应用输出数据具有较高程度的交互。在这些实施例的又一个中,诸如显示管理器220的组件可根据在一段时间内在窗口中显示的帧的数量的识别来确定本地计算装置102的用户与应用输出数据具有较低程度的交互。在其他实施例中,响应于确定存在用户与输出数据的高交互速率,显示管理器220可确定发送对输出数据的更新的较低质量的版本。在其他实施例中,响应于确定存在用户与输出数据的低交互速率,显示管理器220可确定发送对输出数据的更新的较高质量的版本-即由于图像很少发生变化,所以做出提供图像的较高质量版本的确定。在其他实施例中,显示管理器220接收一段时间内在与第一应用关联的第一窗口中显示的帧的数量的识别。显示管理器220可以根据所识别的在该段时间内在第一窗口中显示的帧的数量,来确定应用质量水平以更新用于在第二窗口中显示的由第二应用产生的输出数据。
在其中应用是显示视频的非交互式媒体应用的一些实施例中,该应用可以产生也是带宽要求的每秒帧数。在这样的实施例,显示管理器220可降低应用的输出的帧率以节省带宽。显示管理器220可通过压缩该媒体应用输出数据或者通过移除该应用的一些帧来进行这样的降低。显示管理器220可响应于要求更大帧率的、客户机也使用的交互式应用来降低该媒体应用的帧率。在这样的实施例中,显示管理器220可压缩媒体应用的输出或者减小媒体应用的输出大小并且增加交互式应用的输出大小或者传输未被压缩的交互式应用输出。
仍参考图3,更具体地,为在本地计算装置上显示应用输出数据的第一窗口确定在一段时间内在第一窗口中显示的多个帧,所述应用输出数据是由在远程计算装置上执行的第一应用产生的(302)。在一些实施例中,在该段时间内显示的帧的数量是每秒帧的数量。在其他实施例中,第一钩子组件202确定在该段时间内在第一窗口204中显示的帧的数量。
在一个实施例中,第一钩子组件202拦截从第一应用206到远程代理222的命令,该命令指示本地代理224对第一窗口204的设置进行修改使得第一窗口204显示该数量的帧。在又一个实施例中,第一钩子组件202拦截从第一应用206到在远程计算装置106上执行的操作系统的命令。该命令可包括修改要在与第一应用206关联的窗口中显示的帧的数量的设置的指示。例如,在该操作系统上运行的函数可以修改在远程计算装置106上产生的由第三窗口显示的多个帧的设置。在又一个实施例中,第一钩子组件202分析从第一应用206和远程计算装置106上执行的操作系统之间的通信拦截的数据,以便确定在该段时间内在第一窗口204中显示的帧的数量。在又一个实施例中,第一钩子组件206向显示管理器220传输对在该段时间内在第一窗口204中显示的帧的数量的确定。在另外的实施例中,显示管理器220的Citrix图形驱动程序或桌面窗口管理器产生修改与特定应用关联的窗口的帧率的命令。
在一个实施例中,第一钩子组件202拦截第一应用206的呈现帧的命令。第一钩子组件202可监控第一应用206的输出的帧率并检测帧率上的变化。在一些实施例中,第一钩子组件202检测帧率上的增加。在其他实施例中,第一钩子组件检测帧率上的降低。在又一个实施例中,第一钩子组件202拦截第一应用206的更新包含用于显示的输出数据的缓冲器的命令。在又一个实施例中,第一钩子组件202拦截从第一应用206向应用编程接口传输的命令,所述应用编程接口例如为图形设计接口(GDI)。
在一个实施例中,显示管理器220从第一钩子组件202接收在一段时间内在第一窗口204中显示的多个帧的识别。在另外的实施例中,显示管理器220从第一钩子组件202接收已检测到帧率上的变化的指示。第一钩子组件202可通知显示管理器220帧率的变化。在又一个实施例中,显示管理器220响应于所接收的识别来确定对从第一应用206向本地计算装置102传输的应用输出数据的后续的更新执行渐进显示技术。
响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识(304)。在一些实施例中,远程代理222从显示管理器220接收将渐进显示技术应用于对应用输出数据的更新的标识的指令。在这些实施例的一个中,远程代理222接收压缩从远程代理220向本地代理224传输的、用于在第一窗口204中显示的所有数据的指令。在这些实施例的又一个中,远程代理222接收压缩对第一应用206所产生的应用输出数据的更新的标识的指令。在这些实施例的又一个中,远程代理222压缩应用输出数据的标识。远程代理220可接收对与应用206有关的任何数据进行压缩或解压缩的指令。
在其他实施例中,显示管理器220压缩对第一应用206所产生的应用输出数据的更新的标识。在这些实施例的一个中,显示管理器220向远程代理222传输该对第一应用206所产生的应用输出数据的更新的压缩的标识,以用于向本地计算装置102进行传输。
将该压缩的标识从远程计算装置传输到本地计算装置(306)。在一个实施例中,远程代理222将该压缩的标识传输到本地代理224。在又一个实施例中,本地代理224对所接收的标识进行解压缩。在又一个实施例中,本地代理224指示在第一窗口204中显示该更新的输出数据。在又一个实施例中,本地代理224将对第一应用206所产生的应用输出数据的更新的解压缩的标识传输到本地桌面窗口管理器,以用于在第一窗口204中进行显示。
为在本地计算装置上显示应用输出数据的窗口识别在一段时间内在第二窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第二应用产生的(308)。在一个实施例中,第二钩子组件208识别在第二窗口210中显示的帧的数量。在又一个实施例中,如上文结合图3(302)处的第一钩子组件202所描述的,第二钩子组件208提供用于识别帧的数量的功能。
将对第二应用所产生的应用输出数据的更新的未被压缩的标识从远程计算装置传输到本地计算装置(310)。在一个实施例中,根据确定用户将受益于为查看对第二应用212所产生的应用输出数据的更新提供的、比为查看对第一应用206所产生的应用输出数据的更新提供的图像质量水平更高的图像质量,将对第二应用212所产生的应用输出数据的更新的标识以一种格式(例如,未被压缩的)传输到本地计算装置102,而将对第一应用206所产生的输出数据的更新的标识以第二格式(例如,压缩的)传输到本地计算装置102。
现参考图4,流程图描述了根据对于合成的桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧,选择性地实现渐进显示技术的方法的又一个实施例。总的来说,该方法400包括为在本地计算装置上显示应用输出数据的第一窗口识别一段时间内在第一窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第一应用产生的(402)。该方法包括响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识(404)。该方法包括将该压缩的标识从远程计算装置传输到本地计算装置(406)。该方法包括响应于所识别的在该段时间内在第一窗口中显示的帧的数量来为在本地计算装置上显示应用输出数据的第二窗口确定传输对在远程计算装置上执行的第二应用所产生的应用输出数据的更新的压缩的标识(408)。该方法包括将对第二应用所产生的应用输出数据的更新的压缩的标识从远程计算装置传输到本地计算装置(410)。
现参考图4,更具体地,为在本地计算装置上显示应用输出数据的第一窗口确定在一段时间内在第一窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第一应用产生的(402)。在一些实施例中,如上文结合图3(302)所讨论的来确定在该段时间内在第一窗口中显示的帧的数量。
响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识(304)。在一些实施例中,如上文结合图3(304)所讨论的来压缩对第一应用所产生的应用输出数据的更新的标识。
将该压缩的标识从远程计算装置传输到本地计算装置(406)。在一些实施例中,如上文结合图3(306)所讨论的来传输该压缩的标识。
响应于所识别的在该段时间内在第一窗口中显示的帧的数量来为在本地计算装置上显示应用输出数据的第二窗口确定传输对在远程计算装置上执行的第二应用所产生的应用输出数据的更新的压缩的标识(408)。在这些实施例的一个中,显示管理器220确定由第一应用在一段时间内显示的多个帧指示用户正在以高速率与第一应用交互,并且因此将不会受到对该输出数据使用压缩技术的不利影响-例如,对更新的标识使用有损压缩算法,其可能导致比使用不同的压缩技术更低质量的图像。
将对第二应用所产生的应用输出数据的更新的压缩的标识从远程计算装置传输到本地计算装置(410)。因此,在一些实施例中,显示管理器220确定对于第一应用传输压缩的输出数据更新而对于第二应用传输未被压缩的输出数据更新。
现参考图5,流程图描述了根据对于合成的桌面环境中的单独应用窗口在一段时间内在窗口中显示的多个帧,选择性地实现渐进显示技术的方法的一个实施例。总的来说,该方法500包括为在本地计算装置上显示应用输出数据的第一窗口识别一段时间内在第一窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第一应用产生的(502)。该方法包括响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识(504)。该方法包括将该压缩的标识从远程计算装置传输到本地计算装置(506)。该方法包括响应于所识别的在该段时间内在第一窗口中显示的帧的数量来为在本地计算装置上显示输出数据的合成桌面确定传输对在远程计算装置上执行的远程桌面合成引擎所产生的输出数据的更新的压缩的标识(508)。该方法包括将对第二应用所产生的输出数据的更新的压缩的标识从远程计算装置传输到本地计算装置(510)。
现参考图5,更具体地,为在本地计算装置上显示应用输出数据的第一窗口确定在一段时间内在第一窗口中显示的多个帧,该应用输出数据是由在远程计算装置上执行的第一应用产生的(502)。在一些实施例中,如上文结合图3(302)所讨论的来确定在该段时间内在第一窗口中显示的帧的数量。
响应于所识别的帧的数量来压缩对第一应用所产生的应用输出数据的更新的标识(504)。在一些实施例中,如上文结合图3(304)所讨论的来压缩对第一应用所产生的应用输出数据的更新的标识。
将该压缩的标识从远程计算装置传输到本地计算装置(506)。在一些实施例中,如上文结合图3(306)所讨论的来传输该压缩的标识。
响应于所识别的在该段时间内在第一窗口中显示的帧的数量来为在本地计算装置上显示输出数据的合成桌面确定传输对在远程计算装置上执行的远程桌面合成引擎所产生的输出数据的更新的压缩的标识(508)。在一个实施例中,显示管理器220确定由第一应用在一段时间内显示的多个帧指示用户正在以高速率与第一应用交互,并且因此将不会受到对该由远程桌面合成引擎232选择的用于显示的输出数据使用压缩技术的不利影响-例如,通过对更新的标识使用有损压缩算法,这可能导致比使用不同的压缩技术更低质量的图像。将对远程桌面合成引擎所产生的输出数据的更新的压缩的标识从远程计算装置传输到本地计算装置(510)。
在一些实施例中,压缩技术包括用于更新诸如本地计算装置102的装置的显示单元的方法。在其他实施例中,示例的压缩技术包括用于根据对在远程计算装置106和本地计算装置102之间的通信可用的带宽量来使用压缩算法的方法。在这些实施例的一个中,方法可包括:(a)从位于远离计算装置102的、执行应用的计算装置106的视频缓冲器复制显示信息;(b)计算该显示更新的大小;(c)确定连接计算装置和显示单元的网络的可用带宽量;(d)计算将该显示更新从计算装置106传送到计算装置102所需的时间段;(e)将该显示更新传输到该显示器;以及(f)在该段时间过去之后重复步骤(a)-(e)。在这些实施例的又一个中,应用206产生输出并且发出指示应用206的该图形输出的绘制命令。绘制命令的示例可包括但不限于光栅操作、由基于WINDOWS的操作系统提供的GDI命令,和由基于MAC/OS操作系统提供的QUICKDRAW或QUARTZ命令。绘制命令也可以被称为“GDI命令”。在这些实施例的又一个中,绘制命令被写到由计算装置106提供的缓冲器。在这些实施例的又一个中,例如对与计算装置106的图形显示关联的装置驱动程序的接口调用的较低层的命令被将写到该缓冲器。缓冲器的内容被周期性地传送到计算装置102。在这些实施例的又一个中,多长时间一次将缓存器的内容传送到远程显示单元可以是网络上目前待定数据量的函数。通过动态地确定该时间段,该技术可以给计算装置102提供对显示更新帧的“即时”传送。在这些实施例的又一个中,在确定显示上的变化量之后,创建显示更新帧,并且如有需要(例如,如果由显示管理器220确定将需要该特定更新),对该更新显示帧应用有损压缩技术以创建有损更新显示帧,用于向计算装置102进行传输。在这些实施例的又一个中,使用图像编解码器(例如,使用算术编码的JPEG压缩)。尽管这种类型的编码更多地使用处理器,但它相对于其他编解码器(例如,使用优化的Huffman编码的JPEG压缩)能将显示更新帧的大小降低差不多百分之三十。在应用有损压缩算法之前,可以缓存该显示更新帧。在这些实施例的又一个中,一旦高更新期间已经结束,则所缓存的显示更新帧随后被转发到远程显示单元。
在其他实施例中,示例的压缩技术包括用于基于预定时间段的流逝应用压缩算法的方法。在一个实施例中,例如更新本地装置102的显示单元的方法包括:(a)访问来自存储应用206所发出的绘制命令的更新队列的显示更新信息;(b)缓存该显示更新信息;(c)对该显示更新信息应用有损压缩算法以创建有损显示更新;(d)将该有损的更新传输到本地计算装置102;(e)对缓存中的显示更新信息应用无损压缩算法以创建无损显示更新;(f)在传输有损更新之后的预定时间传输无损显示更新。在一些实施例中,特定更新的特定部分可以经受有损压缩算法。在这些实施例的一个中,有损压缩的应用是通过设置全局标志来手工地调用操作模式而进行控制的;例如,可以由用户开启和关闭该压缩模式。在这些实施例的又一个中,显示管理器220指示更新是否将要承受有损压缩算法。在这些实施例的又一个中,有损压缩算法是图像编解码器(例如,使用算术编码的JPEG压缩);尽管这种类型的编码更多地使用处理器,但它相对于其他编解码器(例如,使用优化的Huffman编码的JPEG压缩)能将显示更新帧的大小降低差不多百分之三十。在又一个实施例中,使用其他的有损压缩技术。在这些实施例的又一个中,如果在缓冲器中不存在新的绘制命令,那么无损压缩算法被应用于该缓冲器中的显示的副本以产生无损显示更新,其接着被传输到本地计算装置102。
在压缩技术的其他实施例中,近似于渐进图像编码的方法使用利用图像分割和插值的技术以近似渐进图像编码的结果。在这些实施例的一个中,远程计算装置106上的图像分割器接收图像并根据预定数量的水平区域和垂直区域将该图像分割成多个区域。在这些实施例的又一个中,通过分割图像创建的结果图像具有指定给特定区域或与特定区域关联的像素,其中贯穿整个图像以及因而贯穿全部像素这些区域是交错的。在这些实施例的又一个中,从分割的图像创建图像块或图像部分,其中每个图像块与特定区域关联。在这些实施例的又一个中,通过编码器对图像块进行编码并且通过通信信道将其传输到本地计算装置102。在这些实施的又一个中,在本地计算装置102上的本地代理224接收每个图像块并将图像块转发到解码器(未示出),然后解码器对每个图像块进行解码。在这些实施例的又一个中,图像块被从解码器发送到组合代理(未示出),该组合代理用其他所接收的图像块反交错每个所接收的图像块并且使用邻近像素的加权平均来进行插值以近似缺失像素的像素值。在这些实施例的又一个中,当图像已经被插值或充分重建时,在本地计算装置102上显示该图像。
在一些实施例中,压缩技术包括用于渐进显示的方法。在这些实施例的一个中,例如,本地计算装置102的用户要求访问应用206所产生的输出数据,而与显示管理器220通信的远程代理222传输对本地计算装置102的响应,包括高度压缩的初始图像。在这些实施例中,在接下来的几帧刷新,用渐进式的较高质量图像更新任何未曾改变的屏幕上的图像,直到它们大体上无损为止(例如未被压缩)。在这些实施例的又一个中,可以不对初始图像进行高度压缩,因为它可能是已被以取决于例如网络条件的第一质量水平进行编码或压缩的图像,同时可以第二质量水平(例如比第一水平更好的质量水平)对随后的图像进行编码或压缩;可以以逐渐提高的质量水平对随后的图像进行编码直到达到期望的质量水平为止。在这些实施例的一个中,可以经由提供不断增加在每个编码上的细节水平的有损编码/压缩技术对初始和随后的图像进行编码,直到达到图像质量的预定阈值(其仍有可能是有损的)或获得无损图像为止。在这些实施例的又一个中,渐进显示技术可以被模糊地应用于任何屏幕变化。
在其他实施例中,渐进显示方法包括对压缩算法的智能应用以确保尽可能及时地在本地计算装置102上显示输出数据,而不管本地计算装置102和远程计算装置106之间的通信的网络延迟或可用带宽如何。在这些实施例的一个中,对数据应用压缩算法使压缩的图像能被传输到本地计算装置102,并接着提供随时间而进行的图像质量的逐步细化。在这些实施例的又一个中,压缩技术的-或渐进显示方法本身的-选择性应用改善了通过网络104向计算装置102传输数据的效率。
在用于渐进显示的系统的其他实施例中,显示管理器220被称为主处理器。在这些实施例的一个中,这样的主机处理器可以包括远程代理222的功能。在这些实施例的又一个中,该主机处理器包括显示管理器220的功能。在这些实施例的又一个中,该主处理器包括与显示管理器220通信的图像引擎,其在收到显示管理器220的对输出数据应用压缩技术的指令时,对输出数据应用压缩技术。在这些实施例的又一个中,该主处理器包括显示管理器220、远程代理222和图像引擎。在这些实施例的又一个中,例如,主处理器可以作为片上系统或作为在远程计算装置106上执行的软件进程而被提供。在这些实施例的又一个中,本地代理224可以被称为入口。
应该理解,上文描述的系统可提供这些组件的任意多个或每一个并且这些组件可以在独立机器上提供,或者在一些实施例中,可在分布式系统的多个机器上提供。可以使用编程和/或工程技术将上文所描述的系统和方法实现为方法、装置或产品以提供软件、固件、硬件或上述的任何组合。此外,上述系统和方法可作为在一件或多件产品上实现或在其中实现的一个或多个计算机可读程序而被提供。此处使用的术语“产品”旨在包括从一个或多个计算机可读的装置、固件、可编程逻辑、存储器装置(例如,EEPROM、ROM、PROM、RAM、SRAM等)、硬件(例如,集成电路芯片、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)、电子装置、计算机可读的非易失存储单元(例如,CD-ROM、软盘、硬盘等)可访问的或嵌入其中的代码或逻辑。所述产品可以是从经由网络传输线、无线传输介质、通过空间传播的信号、无线电波、红外信号等提供对计算机可读程序的访问的文件服务器可访问的。所述产品可以是闪存卡或磁带。所述产品包括硬件逻辑以及嵌入在计算机可读介质中由处理器执行的软件或可编程代码。通常,计算机可读程序可以任何编程语言来实现,如LISP、PERL、C、C++、C#、PROLOG,或者诸如JAVA的任何字节码语言。软件程序可以作为目标代码被存储在一件或多件产品上或其中。
已经描述了用于选择性地实现渐进显示技术的方法和系统的某些实施例,对本领域技术人员而言,显而易见可以使用包含本发明的概念的其他实施例。

Claims (34)

1.一种根据在一段时间内在窗口中显示的多个帧选择性地实现渐进显示技术的方法,所述方法包括:
由第一钩子组件为在本地计算装置上显示第一应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧,所述第一应用输出数据是由在远程计算装置上执行的第一应用产生的;
响应于所识别的帧的数量,由远程代理压缩对第一应用所产生的第一应用输出数据的更新的标识;
由远程代理将该压缩的标识从远程计算装置传输到本地计算装置;
由第二钩子组件为在本地计算装置上显示第二应用输出数据的第二窗口识别在一段时间内在第二窗口中显示的多个帧,所述第二应用输出数据是由在远程计算装置上执行的第二应用产生的;
由远程代理将对第二应用所产生的第二应用输出数据的更新的未被压缩的标识从远程计算装置传输到本地计算装置。
2.根据权利要求1所述的方法,还包括由第一钩子组件接收识别由第一应用产生的多个帧的信息。
3.根据权利要求2所述的方法,还包括由第一钩子组件将该识别帧的数量的信息转发到显示管理器。
4.根据权利要求1所述的方法,还包括由显示管理器监控第一应用输出数据和第二应用输出数据的帧率。
5.根据权利要求1所述的方法,还包括由显示管理器确定第一应用输出数据的帧率已经改变。
6.根据权利要求5所述的方法,还包括由显示管理器响应于确定所述帧率已经改变来产生对远程代理的压缩对第一应用输出数据的更新的标识的指令。
7.根据权利要求1所述的方法,其中第一钩子组件、第二钩子组件和显示管理器是结合非桌面合成系统执行的驱动程序内部的函数。
8.根据权利要求1所述的方法,还包括:
由显示管理器根据识别帧的数量的信息来确定第一应用输出数据的帧率已经改变;
由显示管理器根据所确定的帧率的改变向远程代理传输压缩对第一应用输出数据的更新的标识的指令;以及
由显示管理器根据所确定的帧率的改变向远程代理传输不压缩对第二应用输出数据的更新的标识的指令。
9.一种根据在窗口中显示的多个帧选择性地实现渐进显示技术的方法,所述方法包括:
由第一钩子组件为在本地计算装置上显示第一应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧,所述第一应用输出数据是由在远程计算装置上执行的第一应用产生的;
由显示管理器根据所识别的要显示的多个帧产生压缩对第一应用所产生的第一应用输出数据的更新的标识的指令;
由远程代理压缩对第一应用所产生的第一应用输出数据的更新的标识;
由远程代理将该压缩的标识从远程计算装置传输到本地计算装置;
由显示管理器为在本地计算装置上显示第二应用输出数据的第二窗口确定是压缩还是不压缩对在远程计算装置上执行的第二应用所产生的第二应用输出数据的更新的第二标识;以及
由远程代理将所述对第二应用所产生的第二应用输出数据的更新的第二标识从远程计算装置传输到本地计算装置,根据显示管理器的确定来压缩或不压缩该对第二应用输出数据的更新的第二标识。
10.根据权利要求9所述的方法,还包括由显示管理器响应于识别在该时间段内在第一窗口中显示的帧的数量来确定压缩或不压缩所述对第二应用输出数据的更新的第二标识。
11.根据权利要求9所述的方法,还包括由显示管理器监控第一应用输出数据和第二应用输出数据的帧率。
12.根据权利要求9所述的方法,还包括:
由显示管理器确定压缩对第二应用输出数据的更新的第二标识;以及
由远程代理将对第二应用所产生的第二应用输出数据的更新的压缩的第二标识传输到本地计算装置上的接收代理。
13.根据权利要求9所述的方法,还包括:
由显示管理器确定不压缩对第二应用输出数据的更新的第二标识;以及
由远程代理将对第二应用所产生的第二应用输出数据的更新的未被压缩的第二标识传输到本地计算装置上的接收代理。
14.根据权利要求9所述的方法,其中第一钩子组件、第二钩子组件和显示管理器是结合非桌面合成系统执行的驱动程序内部的函数。
15.一种根据对于在环境中执行的各个应用在一段时间内在窗口中显示的多个帧选择性地实现渐进显示技术的方法,所述方法包括:
为在本地计算装置上显示第一应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧,所述第一应用输出数据是由在远程计算装置上的环境中执行的第一应用产生的;
响应于所识别的帧的数量,压缩对第一应用所产生的第一应用输出数据的更新的标识;
将该压缩的标识从远程计算装置传输到本地计算装置;
响应于所识别的在该时间段内在第一窗口中显示的帧的数量,为在本地计算装置上显示输出数据的环境确定传输对远程计算装置上的远程桌面窗口管理器所产生的输出数据的更新的压缩的标识;以及
将对远程桌面窗口管理器所产生的输出数据的更新的压缩的标识从远程计算装置传输到本地计算装置。
16.根据权利要求15所述的方法,其中所述环境包括桌面合成系统。
17.根据权利要求15所述的方法,其中所述环境包括非桌面合成系统。
18.一种根据在窗口中显示的多个帧选择性地实现渐进显示技术的系统,所述系统包括:
第一钩子组件,其用于为在本地计算装置上显示第一应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧,所述第一应用输出数据是由在远程计算装置上执行的第一应用产生的;
远程代理,其用于响应于所识别的帧的数量,压缩对第一应用所产生的第一应用输出数据的更新的标识;以及用于将该压缩的标识从远程计算装置传输到本地计算装置;
第二钩子组件,其用于为在本地计算装置上显示第二应用输出数据的第二窗口识别在一段时间内在第二窗口中显示的多个帧,所述第二应用输出数据是由在远程计算装置上执行的第二应用产生的;
所述远程代理还用于将对第二应用所产生的第二应用输出数据的更新的未被压缩的标识从远程计算装置传输到本地计算装置。
19.根据权利要求18所述的系统,还包括显示管理器,其用于监控第一应用输出数据和第二应用输出数据的帧率。
20.根据权利要求18所述的系统,其中,所述第一钩子组件接收识别由第一应用产生的多个帧的信息。
21.根据权利要求19所述的系统,其中,所述第一钩子组件将识别帧的数量的信息转发到显示管理器。
22.根据权利要求19所述的系统,其中,所述显示管理器确定第一应用输出数据的帧率已经改变。
23.根据权利要求19所述的系统,其中,所述显示管理器响应于确定所述帧率已经改变来产生对远程代理的压缩对第一应用输出数据的更新的标识的指令。
24.根据权利要求19所述的系统,其中第一钩子组件、第二钩子组件和显示管理器是结合非桌面合成系统执行的驱动程序内部的函数。
25.根据权利要求18所述的系统,还包括显示管理器,其用于:
根据识别帧的数量的信息来确定第一应用输出数据的帧率已经改变;
根据所确定的帧率的改变向远程代理传输压缩对第一应用输出数据的更新的标识的指令;以及
根据所确定的帧率的改变向远程代理传输不压缩对第二应用输出数据的更新的标识的指令。
26.一种根据在窗口中显示的多个帧选择性地实现渐进显示技术的系统,所述系统包括:
第一钩子组件,用于为在本地计算装置上显示第一应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧,所述第一应用输出数据是由在远程计算装置上执行的第一应用产生的;
显示管理器,用于:
根据所识别的要显示的多个帧产生压缩对第一应用所产生的第一应用输出数据的更新的标识的指令;
为在本地计算装置上显示第二应用输出数据的第二窗口确定是压缩还是不压缩对在远程计算装置上执行的第二应用所产生的第二应用输出数据的更新的第二标识;和
远程代理,用于:
压缩对第一应用所产生的第一应用输出数据的更新的标识;
将该压缩的标识从远程计算装置传输到本地计算装置;以及
将所述对第二应用所产生的第二应用输出数据的更新的第二标识从远程计算装置传输到本地计算装置,根据显示管理器的确定来压缩或不压缩该对第二应用输出数据的更新的第二标识。
27.根据权利要求26所述的系统,其中,所述显示管理器响应于识别在该时间段内在第一窗口中显示的帧的数量来确定压缩或不压缩所述对第二应用输出数据的更新的第二标识。
28.根据权利要求26所述的系统,其中,所述显示管理器监控第一应用输出数据和第二应用输出数据的帧率。
29.根据权利要求26所述的系统,其中:
显示管理器确定压缩对第二应用输出数据的更新的第二标识;以及
远程代理将对第二应用所产生的第二应用输出数据的更新的压缩的第二标识传输到本地计算装置上的接收代理。
30.根据权利要求26所述的系统,其中:
显示管理器确定不压缩对第二应用输出数据的更新的第二标识;以及
远程代理将对第二应用所产生的第二应用输出数据的更新的未被压缩的第二标识传输到本地计算装置上的接收代理。
31.根据权利要求26所述的系统,其中第一钩子组件、第二钩子组件和显示管理器是结合非桌面合成系统执行的驱动程序内部的函数。
32.一种根据对于在环境中执行的各个应用在一段时间内在窗口中显示的多个帧选择性地实现渐进显示技术的系统,所述系统包括:
用于为在本地计算装置上显示第一应用输出数据的第一窗口识别在一段时间内在第一窗口中显示的多个帧的装置,所述第一应用输出数据是由在远程计算装置上的环境中执行的第一应用产生的;
用于响应于所识别的帧的数量,压缩对第一应用所产生的第一应用输出数据的更新的标识的装置;
用于将该压缩的标识从远程计算装置传输到本地计算装置的装置;
用于响应于所识别的在该时间段内在第一窗口中显示的帧的数量,为在本地计算装置上显示输出数据的环境确定传输对远程计算装置上的远程桌面窗口管理器所产生的输出数据的更新的压缩的标识的装置;以及
用于将对远程桌面窗口管理器所产生的输出数据的更新的压缩的标识从远程计算装置传输到本地计算装置的装置。
33.根据权利要求32所述的系统,其中所述环境包括桌面合成系统。
34.根据权利要求32所述的系统,其中所述环境包括非桌面合成系统。
CN201080061450.1A 2009-11-16 2010-11-16 用于选择性地实现渐进显示技术的方法和系统 Active CN102713882B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US26152809P 2009-11-16 2009-11-16
US61/261528 2009-11-16
PCT/US2010/056892 WO2011060442A2 (en) 2009-11-16 2010-11-16 Methods and systems for selective implementation of progressive display techniques

Publications (2)

Publication Number Publication Date
CN102713882A CN102713882A (zh) 2012-10-03
CN102713882B true CN102713882B (zh) 2015-04-01

Family

ID=43992478

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080061450.1A Active CN102713882B (zh) 2009-11-16 2010-11-16 用于选择性地实现渐进显示技术的方法和系统

Country Status (4)

Country Link
US (1) US8111086B2 (zh)
EP (1) EP2502153A4 (zh)
CN (1) CN102713882B (zh)
WO (1) WO2011060442A2 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8111086B2 (en) * 2009-11-16 2012-02-07 Citrix Systems, Inc. Methods and systems for selective implementation of progressive display techniques
US9641497B2 (en) * 2011-04-08 2017-05-02 Microsoft Technology Licensing, Llc Multi-browser authentication
US9361715B2 (en) * 2011-06-02 2016-06-07 Microsoft Technology Licensing, Llc Global composition system
US9578336B2 (en) 2011-08-31 2017-02-21 Texas Instruments Incorporated Hybrid video and graphics system with automatic content detection process, and other circuits, processes, and systems
US8924507B2 (en) * 2011-09-02 2014-12-30 Microsoft Corporation Cross-frame progressive spoiling support for reduced network bandwidth usage
WO2013154522A2 (en) 2012-04-09 2013-10-17 Empire Technology Development Llc Processing load distribution
JP2014041455A (ja) * 2012-08-22 2014-03-06 Sony Corp 画像処理装置、画像処理方法、及びプログラム
US9454943B2 (en) * 2012-10-16 2016-09-27 Razer (Asia-Pacific) Pte. Ltd. Computing systems and methods for controlling a computing system
US9257092B2 (en) * 2013-02-12 2016-02-09 Vmware, Inc. Method and system for enhancing user experience for remoting technologies
US9235905B2 (en) * 2013-03-13 2016-01-12 Ologn Technologies Ag Efficient screen image transfer
US9542906B2 (en) 2013-05-10 2017-01-10 Microsoft Technology Licensing, Llc Shared compositional resources
WO2015013981A1 (zh) * 2013-08-02 2015-02-05 华为技术有限公司 一种图像显示方法和装置
US9332216B2 (en) * 2014-03-12 2016-05-03 Sony Computer Entertainment America, LLC Video frame rate compensation through adjustment of vertical blanking
CN105122204A (zh) * 2014-03-13 2015-12-02 华为技术有限公司 一种图像处理方法、虚拟机及虚拟机系统
KR20150142718A (ko) * 2014-06-11 2015-12-23 한국전자통신연구원 데이터 전송 방법 및 장치
US9565227B1 (en) 2014-06-16 2017-02-07 Teradici Corporation Composition control method for remote application delivery
CN104572086A (zh) * 2014-12-24 2015-04-29 惠州Tcl移动通信有限公司 基于安卓设备的fps值获取方法及获取系统
CN105812922A (zh) * 2014-12-30 2016-07-27 中兴通讯股份有限公司 多媒体文件数据的处理方法及系统、播放器和客户端
US9819937B1 (en) * 2015-04-14 2017-11-14 Teradici Corporation Resource-aware desktop image decimation method and apparatus
US10082941B2 (en) * 2015-05-20 2018-09-25 Vmware, Inc. Optimizing window move actions for remoted applications
CN105100204B (zh) * 2015-06-12 2019-03-29 联想(北京)有限公司 一种信息处理方法及装置
CN105141626A (zh) * 2015-09-17 2015-12-09 上海赛为信息技术有限公司 优化的spice wan的系统及方法
US10564829B2 (en) 2016-03-25 2020-02-18 Vmware, Inc. Optimizing window resize actions for remoted applications
CN106339300A (zh) * 2016-08-12 2017-01-18 武汉斗鱼网络科技有限公司 一种第三方游戏的fps获取方法及获取系统
CN107977272A (zh) * 2016-10-25 2018-05-01 腾讯科技(深圳)有限公司 应用运行的方法及装置
US11755272B2 (en) 2021-12-10 2023-09-12 Vmware, Inc. Method and system for using enhancement techniques to improve remote display while reducing hardware consumption at a remote desktop

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010028352A1 (en) * 2000-01-11 2001-10-11 Naegle N. David Graphics system having a super-sampled sample buffer and having single sample per pixel support
CN1734444A (zh) * 2004-08-11 2006-02-15 佳能株式会社 图像处理装置及其控制方法
CN101288104A (zh) * 2003-10-23 2008-10-15 微软公司 动态视窗分解
WO2009014875A1 (en) * 2007-07-25 2009-01-29 Silicon Image, Inc. Data stream control for network devices

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6573905B1 (en) * 1999-11-09 2003-06-03 Broadcom Corporation Video and graphics system with parallel processing of graphics windows
US6704024B2 (en) * 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
US7171444B2 (en) * 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
US20030191860A1 (en) * 2002-04-05 2003-10-09 Gadepalli Krishna K. Accelerated collaboration of high frame rate applications
JP2004086550A (ja) * 2002-08-27 2004-03-18 Matsushita Electric Ind Co Ltd 表示画面更新システム
US7839419B2 (en) * 2003-10-23 2010-11-23 Microsoft Corporation Compositing desktop window manager
CN1332300C (zh) * 2005-04-30 2007-08-15 广东威创日新电子有限公司 一种基于服务器端\客户端结构远程显示处理方法
CA2636010A1 (en) * 2006-01-17 2007-07-17 Baker Hughes Inc SYSTEM AND METHOD FOR REMOTE DATA ACQUISITION AND DISTRIBUTION
JP2007206644A (ja) * 2006-02-06 2007-08-16 Seiko Epson Corp 画像表示システム,画像表示方法,画像表示プログラム,記録媒体,データ処理装置,画像表示装置
US8758109B2 (en) * 2008-08-20 2014-06-24 Cfph, Llc Game of chance systems and methods
GB0808023D0 (en) * 2008-05-02 2008-06-11 British Telecomm Graphical data processing
US8111086B2 (en) * 2009-11-16 2012-02-07 Citrix Systems, Inc. Methods and systems for selective implementation of progressive display techniques
EP3002683B1 (en) * 2009-12-14 2017-07-12 Citrix Systems Inc. Methods and systems for communicating between trusted and non-trusted virtual machines

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010028352A1 (en) * 2000-01-11 2001-10-11 Naegle N. David Graphics system having a super-sampled sample buffer and having single sample per pixel support
CN101288104A (zh) * 2003-10-23 2008-10-15 微软公司 动态视窗分解
CN1734444A (zh) * 2004-08-11 2006-02-15 佳能株式会社 图像处理装置及其控制方法
WO2009014875A1 (en) * 2007-07-25 2009-01-29 Silicon Image, Inc. Data stream control for network devices

Also Published As

Publication number Publication date
US8111086B2 (en) 2012-02-07
US20110115800A1 (en) 2011-05-19
WO2011060442A2 (en) 2011-05-19
EP2502153A2 (en) 2012-09-26
WO2011060442A3 (en) 2011-09-29
EP2502153A4 (en) 2015-12-16
CN102713882A (zh) 2012-10-03

Similar Documents

Publication Publication Date Title
CN102713882B (zh) 用于选择性地实现渐进显示技术的方法和系统
CN102763063B (zh) 用表示远程应用的用户界面元素更新停靠栏的方法和系统
US9406099B2 (en) Methods and systems for maintaining state in a virtual machine when disconnected from graphics hardware
US20090102838A1 (en) Methods and systems for remoting three dimensional graphical data
US9135024B2 (en) Playing multimedia content at remote graphics display client
US8718400B2 (en) Methods and systems for prioritizing dirty regions within an image
AU2009206251B2 (en) Methods and systems for remoting three dimensional graphics
CN110647375A (zh) 云桌面的图像渲染方法、装置和云服务器
US8433747B2 (en) Graphics remoting architecture
JP5027899B2 (ja) 遠隔の表示部へ伝送するためにフレームバッファをコピーする方法及びシステム
CN102804140B (zh) 用于将设备驱动程序导入到客户计算环境中的方法和系统
US20120297383A1 (en) Methods and systems for virtualizing audio hardware for one or more virtual machines
CN102317909A (zh) 便于在多个物理机器间迁移虚拟机的系统和方法
US9122414B2 (en) Methods and systems for optimizing a process of archiving at least one block of a virtual disk image
WO2019114185A1 (zh) 一种app远程控制方法及相关设备
JP2008538829A (ja) 圧縮を用いて分散処理環境における図形表示を更新する方法および装置
US20150178105A1 (en) Method and System for Optimizing Virtual Disk Provisioning
EP2422506B1 (en) Methods and systems for preventing a local display device from displaying data generated by a remote computing device
US9460481B2 (en) Systems and methods for processing desktop graphics for remote display
CN113835816A (zh) 一种虚拟机桌面显示方法、装置、设备及可读存储介质
US20120110478A1 (en) System and method for supporting software
CN107079200B (zh) 处理瘦客户端终端中的数据
CN115562794B (zh) 虚拟桌面系统及虚拟桌面的实现方法
CN115801747A (zh) 一种基于arm架构的云服务器及音视频数据传输方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant