CN102203760B - 为客户端提供高保真显示和交互性的远程计算平台 - Google Patents
为客户端提供高保真显示和交互性的远程计算平台 Download PDFInfo
- Publication number
- CN102203760B CN102203760B CN200980143747.XA CN200980143747A CN102203760B CN 102203760 B CN102203760 B CN 102203760B CN 200980143747 A CN200980143747 A CN 200980143747A CN 102203760 B CN102203760 B CN 102203760B
- Authority
- CN
- China
- Prior art keywords
- pixels
- block
- client
- piece
- screen image
- 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
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1415—Digital output to display device ; Cooperation and interconnection of the display device with other functional units with means for detecting differences between the image stored in the host and the images displayed on the displays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1454—Digital 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
- G06F3/1462—Digital 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 with means for detecting differences between the image stored in the host and the images displayed on the remote displays
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/02—Handling of images in compressed format, e.g. JPEG, MPEG
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2350/00—Solving problems of bandwidth in display systems
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/122—Tiling
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/18—Use of a frame buffer in a display terminal, inclusive of the display panel
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/625—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
- Telephonic Communication Services (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
在此所述的“远程显示生成器”提供如下的各种技术:所述技术用于在用于被远程主控的应用的大范围网络带宽的范围内向客户端提供具有高响应性交互式应用体验的高保真显示。一般而言,远程显示发生器将压缩友好的远程显示架构用作核心。在该压缩架构的情况下,来自远程服务器的实际屏幕数据被从显示缓冲器中逐帧读出,并且然后利用统一的屏幕编解码器被压缩。于是,包括定时器驱动的屏幕更新模型和自适应传输机制的其他技术与远程显示发生器的各种实施例相整合,以通过改善显示质量和与被远程主控的应用之间的用户交互的响应性来改善总体用户体验。
Description
相关申请的交叉引用
本申请要求由Yan Lu等人于2008年10月30日提交并且名称为“TitaniumRemote Platform”(钛远程平台)的以前提交的美国临时专利申请序列号61/109,57依照美国法典第35部第119(e)章的利益。
背景
技术领域:
“远程显示生成器”提供用于实现远程计算平台的各种技术,所述远程计算平台向客户端提供对各种应用的远程访问,并且具体而言,“远程显示生成器”提供如下的各种技术:所述技术用于在用于被远程主控的应用的大范围网络带宽的范围内向客户端提供具有高响应性交互式应用体验的高保真显示。
相关技术:
网络带宽的快速发展为用户提供了出于多种原因利用远程计算资源的机会。例如,可以使用便携式或网络附加设备来访问由远程站点处的强大机器所主控的具有大量资源需求的应用和与该应用进行交互。另外,大的网络带宽和普遍深入的计算环境有益于软件即服务(SaaS)模型的部署。在软件消费的SaaS模型中,软件在因特网或其他网络的范围内作为服务被提供给消费者并且应用由远程服务器来主控。因此,在客户端侧,用户可以消除软件安装和维护,并且使用瘦客户端计算平台来访问由远程服务器所提供的软件服务。
更具体而言,典型的远程计算平台将应用逻辑从用户界面去耦合,并且使得客户端能够使用来自一个或多个远程服务器的计算资源。在这些类型的远程计算系统的开发中,一般考虑到多个因素,例如包括用户体验的丰富性、带宽消耗、以及跨平台适应性。
例如在总体用户体验方面,远程计算平台的用户预期(或要求)如下的高保真显示和交互式体验:其以相同的方式运行使得就好像用户正在访问在本地机器上运行的那些相同的应用。
用户可接受的总体应用性能是不仅是LAN环境下所要求的(其中高带宽通常是可容易获得的),而且是带宽受限的WAN环境中所要求的。遗憾的是,复杂的图形界面和多媒体应用常常在利用低带宽链路实现有效传输方面给开发者提出困难的技术挑战。
最后,随着技术在日常环境中变得更加普遍深入,诸如膝上型计算机、智能电话、媒体播放器、家用器具等之类的越来越多的消费电子设备可以容易地访问因特网。这样的设备可能在访问带宽和操纵系统方面是大不相同的。因此,这些设备和相关联的应用的开发者所面临的另一挑战是尤其是在多媒体应用的情况下使这些设备以远程应用的用户可接受的方式运行,其中在多媒体应用中,用户常常主要关心视频质量。
为了解决这样的问题,在过去已经开发出大量的瘦客户端计算平台。通常而言,这些现有系统可以根据表示显示信息的机制被归为两类。
例如,第一类远程计算系统通常使用高级命令来表示屏幕更新,诸如例如被称为“X系统”的应用和Microsoft远程桌面协议(RDP)。这些方法在表示图形用户界面(GUI)的显示方面是有效的。然而,这样的系统尤其是在表示显示密集型多媒体应用(例如视频回放)时往往遭受性能降级。另外,对高级命令的解释高度依赖于操作系统。因此,难以为服务器和客户端开发出具有不同显示呈现机制的操作系统上的应用。
第二类远程计算系统一般使用低级方法来表示远程服务器的屏幕,包括公知的VNC和THINC型系统。基于VNC的系统一般通过如下方式运行:直接从服务器的帧缓冲器读取像素,并且然后将这些像素压缩以供传输给客户端。在这样的系统的情况下用于像素压缩的公知编码方案包括ZRLE方法和Tight(紧密)编码方法。然而,这样的方法对于压缩具有高光谱内容的显示屏幕不是普遍有效的。例如,THINC系统截取服务器的图形调用并且将其映射到低级简单命令。然而,该系统缺乏用于诸如视频回放之类的显示密集型应用的有效的压缩机制。
发明内容
提供本概述是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
在此所述的“远程显示生成器”提出如下的各种技术:所述技术用于在用于被远程主控的应用的大范围网络带宽的范围内向客户端提供具有高响应性交互式应用体验的高保真显示。一般而言,远程显示发生器将压缩友好的远程显示架构用作核心。在该压缩架构的情况下,来自远程服务器的实际屏幕数据被从显示缓冲器中逐帧读出,并且然后利用统一的屏幕编解码器被压缩。
于是,包括定时器驱动的屏幕更新模型和自适应传输机制的其他技术与远程显示发生器的各种实施例相整合,以通过改善显示质量和与被远程主控的应用之间的用户交互的响应性来改善总体用户体验。
更概括而言,远程显示生成器允许多个客户端连接到一个或多个远程主机以显示一个或多个并发应用以及与这些应用交互。由远程显示生成器所提供的屏幕图像压缩技术的各种实施例使用非重叠的像素块,这些像素块被评估并且被标识为特定类型,其中每种类型的像素块然后通过使用相应的图像压缩过程被压缩。然后,经压缩的像素块被编码并且被传输给所述一个或多个客户端。
在另外的实施例中,通过比较在先和当前图像帧中的像素块来确定哪些像素块还未改变而进一步提高压缩效率。未改变的像素块被标记为未改变的块,并且除了使用最小量的位来向客户端指示这些块相对于在先图像帧未改变以外,这些块不被压缩或编码。该基于块的差异检测过程用于进一步降低带宽需求和服务器或主机上的计算开销,由此允许主机服务于大量的并发客户端。
鉴于上面的发明内容清楚的是,在此所述的远程显示生成器提供如下的各种技术:所述技术用于在用于被远程主控的应用的大范围网络带宽的范围内向客户端提供具有高响应性交互式应用体验的高保真显示。除了刚才所描述的好处之外,根据在结合附图所考虑的以下详细描述,远程显示生成器的其它优点将变得显而易见。
附图说明
参考以下描述、所附权利要求书以及附图,将更好地理解所要求保护的主题的具体特征、方面和优点,附图中:
图1提供示出此处描述的用于实现远程显示生成器的各种实施例的程序模块的示例性架构流程图。
图2提供在此所述的将服务器生成的屏幕图像划分成一组非重叠像素块和对两个不同客户端公共的像素块区域的示例。
图3提供示出此处描述的用于实现远程显示生成器的各种实施例的定时器驱动的屏幕更新模块的示例性架构流程图。
图4提供在此所述的太大以至于不能放入客户端显示窗口内的服务器生成的屏幕图像的示例。
图5提供在此所述的接下来由服务器响应于由客户端发送给服务器的“窗口调整”消息而对图4的服务器生成的屏幕图像进行大小调整以放入客户端显示窗口内的示例。
图6提供在此所述的各种类型的像素块的离散余弦变换(DCT)的示例。
图7提供在此所述的如下直方图的示例:该直方图为各种类型的像素块相对于每种颜色的像素的总计数绘出了像素颜色值。
图8提供示出用于实现在此所述的用于基于远程显示生成器的编码实施例实现各种像素块的程序模块之间的相互关系的总体系统图。
图9提供在此所述的文本类型的像素块的示例,该示例示出了一组提取出的“基色”和相应的索引图。
图10提供在此所述的如下直方图的示例:该直方图为各种类型的像素块相对于每种颜色的像素的总计数绘出了像素颜色值,其中由一组“颜色窗”来确定一小组占优的像素值的界限。
图11示出了在此所述的用于实现远程显示生成器的各种实施例的“多客户端编码”的总体框图。
图12描绘了在此所述的建立在远程显示生成器之上的包括一个客户端和多个主机/服务器的典型远程连接架构。
图13示出了在此所述的使用远程显示生成器来允许通过网络或因特网连接而连接到远程主机的多个客户端共享相同的屏幕内容的例子。
图14示出了在此所述的使用远程显示生成器来提供“网络投影仪”的示例性应用。
图15是描绘具有用于实现此处所描述的远程显示生成器的各实施方式的简化计算和I/O能力的简化通用计算设备的总体系统图。
各实施例的详细描述
在对所要求保护的主题的各实施例的以下描述中,对附图进行了参考,附图构成了实施例的一部分,并且在附图中通过说明的方式示出了里面可以实施所要求保护的主题的各具体实施例。应当理解,在不偏离当前要求保护的主题的范围的情况下,可以使用其他实施例并且可以作出结构上的改变。
1.0介绍:
在此所述的“远程显示生成器”提供如下的各种技术:所述技术用于在用于被远程主控的应用的大范围网络带宽的范围内向客户端提供具有高响应性交互式应用体验的高保真显示。
一般而言,远程显示生成器将压缩友好(compression-friendly)的远程显示架构用作核心。在该压缩架构的情况下,来自远程服务器的实际屏幕数据被从显示缓冲器中逐帧读出,并且然后利用统一屏幕编解码器被压缩。于是,包括定时器驱动的屏幕更新模型和自适应传输机制的其他技术与远程显示生成器的各种实施例相整合,以通过改善显示质量和与被远程主控的应用之间的用户交互的响应性来改善总体用户体验。
1.1系统概览:
如上所述,“远程显示生成器”提供如下的各种技术:所述技术用于在用于被远程主控的应用的大范围网络带宽的范围内向客户端提供具有高响应性交互式应用体验的高保真显示。以上概述的过程由图1的总体系统图来示出。具体而言,图1的系统图示出了用于实现在此所描述的远程显示生成器的各种实施例的程序模块之间的相互关系。此外,尽管图1的系统图示出了远程显示生成器的各种实施例的高级视图,但图1不旨在提供对贯穿本说明书所描述的远程显示生成器的每种可能实施例的穷尽或完全说明。
另外应当注意,在图1中可以由折线或虚线表示的任何框以及框之间的互连表示在此所述的远程显示生成器的可替代实施例。另外,下面所述的这些可替代实施例中的任意或全部可替代实施例可以与贯穿本说明书所述的其他可替代实施例组合使用。
总的来说,如图1所示,由远程显示生成器所实现的过程通过如下方式开始运行:为了允许客户端显示和/或与被服务器远程主控的应用进行交互的目的而在网络或因特网120的范围内将服务器或主机100连接到客户端110。服务器或主机100生成被远程主控的应用的当前显示屏幕130(在此亦称显示帧),并且将当前显示屏幕提供给帧压缩与编码模块145。帧压缩与编码模块145将当前显示屏幕划分成一组相对小的像素块,所述像素块具有约为16×16像素的相同大小。
然后,帧压缩与编码模块145将紧接地上一显示帧135的缓冲副本140的相应像素块与当前显示帧130的像素块相比较。该比较允许远程显示生成器确定:当前显示帧130的哪些像素块还未相对于上一显示帧135发生改变。未改变的像素块被标记为将在第2.1节更详细描述的“跳过(SKIP)”块,并且除了在发送给客户端的已编码屏幕图像中对足够的位进行编码以向该客户端指示特定像素块相对于上一显示帧135保持不变以外,未改变的像素块不被进一步压缩或熵编码。然后,已改变的块通过使用依赖于像素块“类型”的基于像素块的压缩技术被压缩,其中经压缩的像素块被编码以用于传输给客户端。
然后,服务器或主机100使用服务器发送模块150来在网络或因特网120的范围内将当前显示帧130的经编码的像素块传输给客户端110。然后,该客户端使用客户端接收模块155来接收从服务器或主机100传输的当前显示帧130的经编码的像素块。然后,当前显示帧130的经编码的像素块被提供给帧解码与解压缩模块160,该帧解码与解压缩模块160首先反转由服务器或主机100所执行的编码以对当前显示帧的像素块进行解码。然后,解码与解压缩模块160选出由服务器所保留的相同的上一显示帧135的缓冲副文165的未改变的像素块,并且将这些未改变的像素块与当前显示帧130的经解码的像素块相组合以重建当前显示帧的本地副本。然后,当前显示帧130的本地副本被呈现给客户端110显示设备。
为了允许客户端110与被服务器远程主控的应用进行交互,该客户端包括客户端/服务器消息模块170,该客户端/服务器消息模块170监控用户交互(例如按键的按下、定点设备移动以及选中等等)并且在网络或因特网120的范围内通过客户端发送模块175将该用户交互报告给服务器。服务器接收模块180接收用户交互报告或者消息并且将这些消息提供给事件处理器模块185,该事件处理器模块185然后致使服务器或主机100改变或更新当前显示帧,使得就好像用户交互是在服务器上本地发生的。然后,服务器或主机100如上述那样对新的当前帧进行压缩和编码以用于传输给客户端,其中上述过程在远程应用会话期间在客户端110与服务器或主机100之间的连接的整个范围内迭代地重复。
2.0远程显示生成器的运行细节
上述程序模块用于实现远程显示生成器的各种实施例。如上面概述的那样,“远程显示生成器”提供如下的各种技术:所述技术用于在用于被远程主控的应用的大范围网络带宽的范围内向客户端提供具有高响应性交互式应用体验的高保真显示。以下各章节提供了该远程显示生成器的各种实施例的操作的详细讨论以及用于实现在第1节中参考图1描述的程序模块的示例性方法的详细讨论。具体而言,以下各章节提供远程显示生成器的各实施例的示例和操作细节,包括:用于对屏幕图像像素块进行压缩的压缩友好的模型;定时器驱动的屏幕更新;客户端—服务器交互性;自适应传输机制;屏幕压缩;用于多个客户端的并发编码;以及对远程显示生成器的示例性应用。
2.1压缩友好的模型:
诸如VNC和THINC之类的常规瘦客户端系统向远程客户端提供具有任意大小的区域的屏幕更新。这种类型的基于任意区域的机制允许服务器简单地将应用级“更新区域”转送到视频压缩器中并且直接丢弃稳定区域。在客户端侧,然后使用显示指令来通过提供给定区域的像素矩形呈现各个图元。
然而,来自某些应用的更新区域常常是小的并且处于诸如菜单或编辑框之类的任意位置。独立地对这些小区域进行编码往往会使得该系统即使在可以使用各种编码方案的情况下仍然遭受压缩比降级。此外,这些小的和任意大小的区域引入了大量的开销位来指示其在客户端的屏幕上的位置,这进一步使压缩性能降级。
因此,与基于任意区域的架构或常规瘦客户端系统相反,在此所述的远程显示生成器使用基于固定帧的屏幕表示模型。s该模型一次从帧缓冲器中读取屏幕的所有像素,并且将整个屏幕馈送到压缩器和发送机中。然后,在客户端的显示器侧,显示指令运行以用新像素替换整个屏幕。
更具体而言,在远程显示生成器的各种实施例中,被馈送到压缩器(服务器侧)的每个屏幕帧都被分割成规则的非重叠的像素块,这些像素块具有约为16×16像素的相对小的相同尺寸(参见下面参考图2对像素块的示例的讨论)。注意,尽管在此所述的像素块是一般性地结合16×16像素的块大小来讨论的,但是应当理解,只要这些像素块是非重叠的并且覆盖整个显示区域,则块大小和形状就可以是所期望的任何大小和形状。如上面参考图1所讨论的那样,压缩器(服务器侧)和解压缩器(客户端侧)内部地保留整个上一帧的副本。用于减小屏幕之间的冗余性所有工作都基于规则的非重叠的块来执行。远程显示生成器使用下面将更详细描述的“跳过块(SKIP block)”模式和“内块(INTRAblock)”模式来表示不同的块编码机制。
总的来说,跳过块模式在各种实施例中被用于标识出如下的块:所述块与上一帧中的位于同一位置处的块恰好相同并且因此不需要为了在客户端上呈现当前帧而被更新。显然,除了熵编码器将在当前帧的经编码的比特流中包括位来向客户端通知在呈现当前帧时保留来自上一帧的相应块以外,不需要对跳过块进行进一步处理。还应当注意,如2.4节中所述的那样,跳过块还在各种自适应传输实施例的上下文中被用于消除对如下像素块进行编码和传输的需要:这些像素块出于某种原因(例如重叠的窗口、屏幕大小等等)将被隐藏或以其他方式在客户端显示器上不可见。
内块模式被用于利用块间的冗余性,这将在第2.5节更详细描述。尽管屏幕被分成规则的块,但是内块在整个屏幕中的系数被联合熵编码。因此,可以将更多的统计冗余性用于压缩。另外,在此所述的跳过块/内块机制以比基于任意区域的常规方案精细得多的粒度来利用帧间/帧内冗余性。
另外,跳过块/内块机制在多客户端连接的情况下(例如两个或更多客户端连接到运行同一被远程主控的应用的不同实例的同一服务器)避免了冗余压缩操作。由于每个单独的客户端的屏幕更新率可能因不同的访问带宽而与其他客户端的屏幕更新率不同,因此保留在压缩器中的上一屏幕对于每个客户端而言是不同的。结果,同一屏幕的经更新的区域对于每个客户端而言常常是不同的。然而,只要某些块在两个或以上的客户端之间是相同的,则这些特定“冗余”的区域就将作为内块被编码。
例如如图2所示,由服务器生成的屏幕图像200被划分成大小相等的像素块210。在该例中,第一客户端(即“客户端1”)将显示表示屏幕图像200的分段的屏幕图像200(被表示成阴影区域)。类似地,第二客户端(即“客户端2”)将显示表示屏幕图像200的不同分段的屏幕图像230(被表示成阴影区域)。然而,可以通过图2看出,被显示成阴影区域240的一组像素块与客户端1屏幕图像220与客户端2屏幕图像230之间的重叠区域相对应。另外,重叠区域的对于客户端1和客户端2二者为相同的像素块将仅仅被编码一次并且被提供给两个客户端。
注意,随着客户端的数目增加,有更多的块可能对于更多的客户端而言是相同的,从而导致在像素块压缩方面显著降低的计算开销,其中无论客户端的数目如何,最坏情况都是屏幕图像200的每个像素块仅仅被编码一次。
2.2定时器驱动的屏幕更新
由远程显示生成器提供的瘦客户端架构的各种实施例所解决的另一问题是用于将每个屏幕图像发送给客户端的屏幕更新模型。具体而言,在各种实施例中,远程显示生成器使用定时器驱动的模型,该定时器驱动的模型控制要多频繁地更新客户端屏幕。图3示出了定时器驱动的屏幕更新过程的总体工作流。两个所捕获的连续帧之间的最小时间间隔在屏幕更新开始以前被设置300。总的来说,该时间间隔根据可用带宽来指定。
在各种实施例中,在给定可用带宽的情况下,该定时器间隔被设置为尽可能高、直到物理屏幕刷新率的最大值(例如对于许多常规监视器或显示设备而言为60hz),其中其观点是为显示屏提供足够高的刷新率以提供可接受的用户界面体验。注意,在屏幕更新期间(客户端上),总体屏幕更新过程将等待直到用于一帧捕获、编码和发送的时间之和达到预设的时间间隔。换言之,在设置300用于屏幕更新的定时器间隔(以每客户端为基础)以后,服务器捕获310或生成一帧。然后,该帧被编码320。
接着,如果由服务器所维护的发送队列在帧被编码320时不为空330,则经编码的帧被立即从该发送队列传输340给客户端。然而,如果发送队列为空330,则经编码的帧被立即发送350给该发送队列。然后,对该时间间隔是否已经被超过360作出确定(例如从帧捕获310和帧编码320到将经编码的帧发送350给发送队列所流逝的时间的总和)。如果定时器间隔还未被超过360,则该系统简单地等待370直到已经达到该定时器间隔,此时包括如上所述的帧捕获310、编码320、检查330发送队列的当前内容等等的总体过程在客户端连接到服务器的时长内重复。通过这种方式,远程显示生成器使用图3所示的受定时器限制的机制来避免对客户端进行过于频繁的更新,由此尽可能多地节省服务器的可能有限的资源(例如计算能力、带宽、所允许的并发客户端连接的数目等等)。
如上所述,图3所示的屏幕更新过程用于设置用于将新屏幕图像发送给客户端的时间段。清楚的是,这些经更新的屏幕在远程连接的时间段期间被连续发送给客户端(受用于屏幕更新的定时器间隔的限制)。这些屏幕到每个客户端的传输使用任何常规的网络通信协议。然而应当注意,在屏幕更新与到客户端的屏幕传输之间检查330发送队列的内容确保:发送队列在对新帧进行发送和编码以前总是被清空,以避免用与各个客户端的屏幕更新相对应的位充满可用的带宽。
2.3客户端—服务器(C-S)交互性
由远程显示生成器所提供的瘦客户端系统向用户提供高保真交互式体验,其中其意图是在网络或因特网的范围内向用户提供与用户在其本地计算机上而不是在远程服务器上运行远程应用时将会观察到的相似的体验。
一般而言,提供给用户的交互式体验在大范围的客户端设备(例如笔记本计算机、手持式媒体播放器、手机等等)的范围内依赖于响应时间和界面可用性。因此,为了解决客户端计算设备大范围变动和不同客户端的可用带宽的问题,远程显示生成器包括用于使与各种计算设备的交互式用户体验最大化的各种技术。
下面所示的表1提供了供用于实现由在此所述的远程显示生成器所实现的鲁棒的客户端—服务器交互性的客户端服务器消息的示例。
表1:示例性的客户端到服务器的消息
由远程显示生成器所实现的瘦客户端系统的用户输入端基于具有键盘和多按钮定点设备的标准台式计算机(或者具有由这样的计算设备使用的任何常规输入机制的任何其他计算设备)。在这种情况下,当用户按下/释放键盘中的按键时(即“按键”消息)或者当点击/移动定点设备时(即“指针”消息),客户端将输入事件作为客户端到服务器(C-S)消息(其如上面参考图1所述)发送给远程服务器。这些消息的内容简单地让服务器知道:用户已经通过键盘和鼠标(或其他常规输入和定点设备)键入、选中或以其他方式输入了什么。
为了解决在普遍存在的计算环境中对具有各种显示大小和分辨率的异类设备的包含,由远程显示生成器所实现的瘦客户端系统使用表1中列出的“窗口调整”客户端到服务器消息来改善针对各种显示尺寸的用户体验。总的来说,窗口调整消息被客户端用于向服务器请求移动当前活动窗口/调整当前活动窗口的大小以完全显示在客户端显示器的可见矩形上。总的来说,窗口调整消息在用户敲击预先定义的热键或者以其他方式选中或激活菜单项目时被发送给客户端,从而请求窗口调整命令。尽管该机制相对简单,但是在客户端不能以由服务器所呈现的原始分辨率显示整个屏幕时是十分有用的。
图4和图5提供了在由远程显示生成器所实现的瘦客户端系统中使用窗口调整消息的简单示例。具体而言,该服务器生成全分辨率屏幕图像(具有所期望的最大分辨率)。一般而言,所期望的最大分辨率可以与所有附加客户端中具有最高分辨率的附加客户端有关,或者可以简单地是任何所期望的分辨率。然后,全分辨率屏幕图像被传输给每个客户端。然而如图4所示,屏幕图像的仅仅一部分在客户端显示设备上的窗口400中为可见的(其中在各种实施例中,滚动条等等可以用于在屏幕图像周围平移)。然而,在客户端将窗口调整请求发送给服务器以后,该服务器移动活动窗口并调整活动窗口的大小(在该情况下为缩小)以覆盖客户端可见的区域,这如图5的窗口500所示。
最后,由远程显示生成器所使用的另一客户端到服务器消息是“可见矩形”消息。可见矩形消息从客户端被发送给服务器以向服务器通知被客户端用于显示从服务器传输给客户端的屏幕图像的窗口或显示器的大小(即像素分辨率)。然而,与由用户触发的其他消息(即按键、指针和窗口调整)相对比,可见矩形消息由客户端的内部逻辑自动触发。换言之,如果客户端的显示被窗口化,则可见矩形将自动向服务器通知窗口的大小(以像素为单位)。类似地,如果客户端的显示未被窗口化,则可见矩形将简单地向服务器通知客户端显示器的大小(以像素为单位)。
在远程显示生成器的各种实施例中,客户端自动确定:所绘制的矩形(即由客户端传输的屏幕图像所填充的客户端屏幕区域)是否已经相对于上一矩形发生改变(大小或位置)。如果是,则可见矩形消息将被发送给服务器。注意,在服务器端侧,利用可见矩形向每个客户端提供的信息不仅仅被服务器用于如在窗口调整消息的情况下那样进行响应(对客户端的可见矩形的内容进行大小调整和重新定位),而且还被用于远程显示生成器的各个“自适应传输”实施例,这在下面第2.4节中予以描述。
2.4自适应传输
自适应传输机制被远程显示生成器用于受限显示的情况(即由服务器所呈现的全屏幕由于屏幕分辨率、窗口大小、覆盖显示的一部分的重叠窗口、窗口缩放或放大等而将在客户端上不可见的情况)。如上所述,在如图4举例说明的受限显示的情况下,不可见或隐藏内容不必发送给客户端。因此,在客户端侧,仅仅可见区域的像素被处理和传输。
其中未对不可见或隐藏像素块进行编码和传输给客户端的该自适应传输是使用上述跳过块/内块机制实现的。注意,只要块的至少一个像素在客户端上为可见的,则就认为该块是可见的。
具体而言,由于由远程显示生成器的各种实施例所提供的屏幕压缩技术基于固定大小的块(参见第2.1节中对图2的讨论),因此可见矩形的位置被转换成指示块是否可见的块图。然后,该可见块图和像素被馈送到压缩器中。该压缩器将不可见块看成是跳过块(即,在客户端上重新绘制新的当前显示帧时不被更新的块),并且仅仅一位被用于表示一个不可见块。结果,在受限显示的情况下(这对于诸如手机、PDA、便携式音乐播放器之类的移动设备而言是常见情况)减小了计算开销和传输带宽二者。应当注意,自适应传输在不违背在此所述的帧编码架构的情况下充分利用基于块的屏幕编码机制。
2.5屏幕压缩器
在此所述屏幕压缩技术在由远程显示生成器所实现的瘦客户端系统中起核心作用。一般而言,由现代计算机所呈递的屏幕可以包含广阔类别的内容,包括图形、文本、自然图像、视频、用户设计的绘图等等。远程显示生成器为各种屏幕内容提供统一屏幕压缩方案,该屏幕压缩方案甚至对于低带宽网络都是高效和有效的。下面的段落描述对屏幕内容的特性进行分析以用于实现在此所述的屏幕编解码器。基于该分析,随后的段落描述有效的屏幕压缩框架和各种专门设计的压缩技术。
2.5.1针对屏幕压缩的分析
一般而言,高压缩率由远程显示生成器通过利用数据冗余性来实现。如上所述,基于块的屏幕压缩使用跳过块/内块模式来处理帧间和帧内相关性。在各种实施例中,跳过块使用块级差异检测过程(即直接将在先帧中的相同块与当前帧中的相应块相比较)被标识出,并且由比特流中的一位来表示。对于内块压缩的设计而言,对屏幕内容特性的分析被用于设计远程显示生成器所使用的屏幕编解码器。
具体而言,各种应用和用户交互的屏幕内容的多样性给统一屏幕编码方案的设计带来挑战。通常,屏幕内容被归类为三种类型之一,这三种类型包括:1)文本;2)图像;以及3)图像上文本。还应当注意,不是将整个屏幕作为一种类型进行编码,而是各个像素块首先被标识为这三种类型之一,其中每个像素块然后使用特定于类型的编码过程被编码。
这些不同的内容类型不仅在像素域中、而且也在变换域中展现出不同的特性。例如如图6所示,离散余弦变换(DCT)广泛用在常规的图像压缩方案中,对三种内容类型(即文本、图像和图像上文本)中的每种的DCT的AC系数显示出截然不同的贡献。出于比较目的,图7中还示出了三种内容类型中的每种的像素域中的直方图。
鉴于图6,可以观察到:图像类型的内容被紧凑地表示在DCT域中。事实上,对于图像类型的像素块而言,仅仅几个处于低频的DCT系数是显著的,并且高频系数几乎为0。相比之下,对于文本类型的像素块而言,能量被分散到许多DCT系数中。然而,鉴于图7所提供的直方图,在像素域中,文本类型的像素块示出了显著的能量集中,使得整个文本类型的像素块的像素值可以由仅仅小数目的像素颜色来表示。最后,对于图像上文本类型的像素块而言,在变换域中,其能量也被分散到许多低频和高频系数中,而在像素域中,像素值也被分布到小数目的点中。因此,整个图像上文本类型的像素块的像素值也可以由仅仅小数目的像素颜色来表示。
基于这些观察,自适应压缩机制被远程显示生成器用于利用复合内容的块内冗余性。具体而言,对于图像块而言,变换域表示机制如在诸如JPEG之类的常规图像压缩方案中那样被使用。然而,与图像块形成对比的是,像素域编码机制被提供用于文本块和图像上文本块二者。注意,根据需要也可以使用专门适用于图像上文本块的单独的编码过程。然而已经观察到:在远程显示生成器的经过测试的实施例中,将像素域编码机制用于对文本块和图像上文本块进行编码将提供良好的结果。关于用于文本块和图像上文本块的像素域编码机制的讨论,参见第2.5.4节。
另外,在远程显示生成器的各种实施例中,引入“逃逸(escaped)像素”编码机制的概念以用于对文本块和图像上文本块进行鲁棒的压缩,这将在下面第2.5.4节中参考图9予以更详细描述。
2.5.2像素块归类
通常,文本内容/类似于文本的内容常常在块内具有清晰的边缘。梯度通常是边缘清晰度的良好度量。因此在远程显示生成器的各种实施例中,首先为每个单独的像素块计算出像素与周围像素之间的梯度值。高梯度值通过阈值处理被选出。然后,块内的具有高梯度值的像素被计数。如果块内的高梯度像素的数量超过预定的阈值,则该块将被标识为文本块,否则该像素块将被标识为图像块。注意,该归类过程通常将导致图像上文本块被标识为文本块。
在大多数情况下,块归类是足够精确的,以至于总率与使用单块编码方法的方案相比可以被显著降低。即使在该归类不精确的少数情况下,下面将讨论的鲁棒的图像和文本编码过程仍然将确保将经编码的块重建成屏幕图像方面的高视觉质量。另外,基于块归类使用两种不同编码技术将仅仅将在这些块中的使用的位数增加小的比率。总的来说,已经观察到所述供与远程显示生成器一起使用的基于块类型的屏幕编解码器提供压缩率与视觉质量之间的良好折衷。
2.5.3屏幕编解码器框架:
如上所述,基于块的屏幕压缩过程被用于实现由远程显示生成器所实现的实时瘦客户端系统。图8中示出了由远程显示生成器所实现的屏幕压缩过程的图。总的来说,图8提供了示出用于实现在此所描述的远程显示生成器的各种实施例的程序模块之间的相互关系的总体系统图。
具体而言,如图8所示,来自服务器或远程主机的帧缓冲器的当前屏幕图像(即当前显示帧130)被提供给帧分割模块800,该帧分割模块800将当前帧分割成非重叠的16×16个块(或者具有其他所期望大小的固定大小的块)。另外,上一显示帧135也被分割成相同大小的非重叠的块。注意,如果当前显示帧是被发送给客户端的第一屏幕图像,则将不存在上一显示帧135。另外,经分割的当前显示帧130的副本可以被临时缓冲,而不是重复上一显示帧135的分割,以供针对帧编码和到客户端的传输的下一迭代过程用作上一显示帧135。
在两种情况下,一旦当前显示帧130和上一显示帧135已经被分割成像素块,则差异检测模块810直接比较当前显示帧和上一显示帧之间对应的像素块。在当前显示帧130中相对于上一显示帧135还未改变的任何像素块都被标识为跳过块。如上所述,当在客户端上重新绘制新的当前显示帧时,跳过块不在客户端上被更新。因此,所有未改变的块都被标识为跳过块,并且除了在将经编码的当前显示帧130传输给客户端以前的熵编码过程期间将这些块标识成跳过块以外,这些块不被进一步处理。
在用于标识出跳过块的差异检测以后,归类模块820评估每个剩余的像素块(即不是跳过块的所有块)以将每个块的类型标识为图像块或文本块任一。注意,如上所述,图像上文本类型的块出于编码目的而将被标识为文本类型的块,因此文本块包括具有文本或图像上文本内容的那些像素块。出于实时目的,远程显示生成器如上面第2.5.2节中所述那样使用基于像素梯度的简单但有效的块归类算法。
然后,图像块在图像块编码模块840中使用任何所期望的常规压缩技术、例如JPEG压缩而被编码。在此处所述的用于实现远程显示生成器的各种实施例的框架中,远程显示生成器出于解释目的在不包括熵编码部分的图像块编码中直接使用JPEG。然而应当理解,在不偏离在此所述的远程显示生成器的所打算的范围的情况下,可以将任何其他所期望的编码技术用于图像块编码。将在第2.5.4节中更详细描述的像素域编码算法然后被文本块编码模块830用于对被标识为文本块的所有块进行编码。总的来说,该像素域编码过程表示结合索引图使用若干基色的文本块,这将在第2.5.4节中予以更详细描述。
接着,内容自适应算法编码器被熵编码模块850用于对文本和图像类型二者的经压缩的像素块进行熵编码。然后,帧传输模块860将经编码的当前屏幕图像传输给客户端。如果服务器与客户端之间的远程会话在该时刻完成870,则该过程终止。否则,从分割新的当前显示帧开始重复上述过程。
2.5.4文本块压缩
如上所述以及如图9所示,文本块900的像素表示包括从文本块中提取的一组基色910以及将索引颜色之一分配给该像素块中的每个像素的索引图920。具体而言,基色提取与颜色量化相关联,以基于所提取的有限数目的基色使任何潜在的显示失真最小化。然而,例如矢量量化和K-means之类的传统颜色量化方案通常包括诸如聚类过程之类的在计算上昂贵的操作,这些操作不是普遍地适用于诸如由远程显示生成器的瘦客户端过程所实现的实时操作之类的实施操作。因此,考虑到瘦客户端界面的实时性质,远程显示生成器基于文本块的直方图直接提取基色。如上面在第2.5.1节中参考图7所讨论的那样,图7中所示的直方图示出了文本块和图像上文本块二者中的大部分像素都集中于小数目的颜色或者具有与这些小数目的颜色非常接近的颜色值。
因此在远程显示生成器的各种实施例中,具有峰值直方图值的颜色(参见图10)被选出作为基色。然后,该直方图中的等宽的“颜色窗”1010被用于如图10所示排列(range)处于具有峰值直方图值的颜色附近的颜色。然后,处于该颜色窗内的所有像素都被量化为同一窗口中的基色,并且然后由一个索引颜色来表示。其结果是在编码以供传输给客户端以前对文本块的显著压缩(基于小得多的可能的像素颜色组)。然后,所产生的索引图在传输给客户端以前在熵编码器中使用游程编码被进一步压缩。
注意,如图10所示,在任何给定的文本块的情况下可能的是,小数目的像素将落在颜色窗1010之一以外。这样的像素1020在此被称为“逃逸像素”,因为这些像素未被捕获或包含在任何颜色窗1010中。在各种实施例中,远程显示生成器使用PCM码来在比特流中直接表示逃逸像素。其结果是在最终呈现在客户端显示器上时的高质量屏幕图像。
2.6用于多个客户端的并发编码
第2.5节中所描述的过程通常涉及结合单个主机起作用的单个客户端。然而,鉴于在此所提供的讨论,应当清楚,远程显示生成器支持一个主机与一个客户端之间、一个主机与多个客户端之间、多个主机与一个客户端之间以及多个主机与多个客户端之间的连接。
在单个主机与多个客户端之间的连接的情况下有利的是,降低主机上的计算开销以便服务于尽可能多的客户端。在第2.5节中所述的屏幕编码过程尤其是在考虑到多个客户端连接时是相对耗时的。然而,在作出几处修改的情况下,上述供与远程显示生成器一起使用的屏幕编解码器使得为多个客户端连接实现低复杂度的编码成为可能。
例如在到全部都访问远程服务器或主机上的同一进程或应用的客户端的多个连接的情况下,各个客户端可能由于不同的网络带宽或客户端显示能力而具有不同的帧速率。因此,即使每个客户端在理论上正在访问同一应用或进程,远程显示生成器仍然为每个客户端连接运行单独的编码会话。然而,远程显示生成器的屏幕编解码器的架构使得对当前显示帧进行“部分一次编码”以支持多个用户成为可能。
具体而言,如上面参考图8所述,针对当前显示帧的整个编码过程可以被分成三个总体阶段,包括:1)差异检测;块处理;以及3)对经压缩的块进行熵编码。因此,为了针对多个客户端对特定帧进行编码,差异检测可能产生不同的跳过/非跳过图,因为这些客户端可能具有不同的上一帧。另外,对于块处理而言,其主要目的是选择编码模式以及执行文本块编码或图像块编码任一。在操作中已经观察到:该块处理是整个编码过程的三个总体阶段中最耗时和计算上最昂贵的。然而,由于每个块在整个编码过程期间被单独处理,因此可能的是为所有客户端实现一次块处理。
例如如上面参考图1所述,服务器处的编码器和客户端处的解码器二者都维护相同上一帧的副本。考虑到N个客户端连接到一个服务器的情况,远程显示生成器在编码器处分配N个缓冲器,其中每个缓冲器都维护对应于每个单独客户端的上一帧的副本。在给定该框架的情况下,图11提供了由远程显示生成器所实现的多客户端编码的框图。具体而言,对于由服务器生成的当前帧1100而言,针对N个客户端中的每个的上一帧(1105、1110和1115)的单独的副本被服务器缓冲或以其他维护。因此,单独的差异检测过程(1125、1130和1135)在相对于每个客户端的单个当前帧与每个上一帧(1105、1110和1115)之间执行。注意,在该上下文中,如果多个用户的组同时查看正好相同的屏幕,该组将出于下面所述的编码目的而被看成是单个客户端。
在一些情况下,特定客户端可能不具有要编码的当前帧,因为上一帧可能仍然在处理中(例如传输给客户端或者在客户端处解码)。在这种情况下,整个当前帧中的所有块都针对该特定客户端被标记为跳过块。否则,基于当前帧1100的块与上一帧(1105、1110和1115)的直接比较针对每个客户端来标识出跳过块。关于这些客户端的跳过/非跳过图然后被一起合并1140以标识出所有非跳过块的联合以供进一步编码。换言之,一些块可以对所有客户而言都是跳过块。因此,通过合并1140所有客户端的跳过/非跳过图,对所有客户端而言都是跳过块的块将不被编码。注意,该过程借鉴了上面在第2.2节和第2.4节中所述的针对单个客户端的基本跳过块处理。
在针对所有客户端合并1140跳过/非跳过图以后,远程显示生成器任选地对所有非跳过块执行块处理(其如在第2.5节中参考文本和图像块的归类和处理所述)。注意,即使块处理是整个编码过程的最耗时的部分,整个过程仍然可以作为一次编码过程使用参考图11所述的过程来执行。最后,单独的熵编码(1150、1155和1160)被执行以为每个客户端根据其自己的跳转/非跳转图产生表示当前帧的输出比特流。
2.7远程显示生成器的示例性应用
远程显示生成器可以实现许多屏幕共享和实况通信场景。例如,一种这样的使用是在软件即服务(SaaS)场景中的传统远程桌面。在该场景中,典型的问题是如何实现远程软件可视化。远程显示生成器提供了该问题的简单的解决方案。具体而言。图12描述了建立在远程显示生成器之上的包括一个客户端和多个主机/服务器的典型远程连接架构。每个主机/服务器(1210、1220和1230)都运行一个或多个应用,并且通过常规的网络或因特网连接1240将相关的屏幕内容传输给客户端1250。在客户端1250侧,所接收的屏幕内容可以要么包括完整的桌面,要么在单独的窗口中单独显示。注意,这类似于客户端在单独的窗口中本地运行多个并发应用的情况,其中每个应用都可以与其他窗口完全或部分重叠,被最小化使得其当前不被显示在客户端桌面上,或者完全或部分被从桌面移走使得所述一个或多个窗口不完全可见。
一般而言,当客户端连接到多个主机时,该客户端将针对每个单独的连接执行三个基本步骤。具体而言,在步骤1,该客户端将启动本地桌面,在步骤2,该客户端将从远程主机启动应用并且在本地桌面之上显示所接收的屏幕窗口,并且在步骤3,该客户端启动来自另一远程主机的另一应用。应当注意,步骤3可以致使一个窗口或屏幕完全或部分覆盖或遮盖传输给该客户端的在先屏幕图像。原则上,这与客户端在桌面上本地打开一个应用并且然后在不关闭第一应用的情况下打开两个或更多随后的应用的情况没有什么不同。
考虑到该客户端在对各个窗口进行调整大小、移动、最小化和关闭方面的行为是不可预测的,简单的方法仍然是为每个单独的应用从相应主机发送整个屏幕图像。为了使应用之外的区域不可见,直观的方法是发送阿尔法图(alppha map)以在显示中排除不可见区域。然而,鉴于由远程显示生成器所提供的解决方案,不需要这样的阿尔法图。相反,在客户端处,远程显示生成器在大小与主机处的相关应用正好相同的窗口中显示所接收的屏幕。然后,主机处的应用之外的区域自动地在客户端处变为不可见。回想到远程显示生成器具有自适应传输策略,应当清楚:跳过块编码被用于确保位不被浪费来传输这些不可见的屏幕内容。
除了作为本地桌面运行远程计算以外,远程显示生成器还可以在诸如Microsoft的Internet Explorer之类的web浏览器类型的应用内运行远程计算。在这种情况下,远程显示生成器被提供作为web浏览器的“插件”。由于InternetExplorer进程包含用于多个web连接的多个选项卡,因此远程显示生成器可以通过连接到各个远程主机/服务器来模拟多个桌面。于是,每个桌面都将在单独的Internet Explorer选项卡中包括单独的会话。
远程显示生成器的第二个示例性应用涉及用于会议和合作的屏幕共享。例如,如图13所示,多个客户端(1310、1320和1330)通过常规的网络或因特网连接1340连接到主机1350。在该架构的情况下,这些客户端( )共享相同的屏幕内容。应当注意,不同客户端的帧速率可能由于不同的处理器能力和带宽而不总是相同,但是屏幕更新使用上面在第2.6节中所述技术在不同客户端间保持同步。在这种情况下,一个或许多客户端可以拥有控制权并且可以发回命令/消息以使用上面在第2.3节中关于客户端—服务器交互性所描述的技术来与显示交互或改变显示。注意,在这种情况下,主机侧的总计算成本即使在大数目的客户端的情况下仍然是相对小的。因此,诸如常规膝上型计算机之类的单个用户设备通常将具有足够的计算能力(假定足够的带宽)来主控相对大数目的客户端。总而言之,该架构适用于在线会议和多客户端合作的场景。
除了远程桌面和屏幕共享以外,远程显示生成器还可以用在许多其他场景中。例如,图14示出了用于基于远程显示生成器实现“网络投影仪”的场景。在该应用中,诸如膝上型计算机、PDA、手机等之类的一个用户设备1410通过有线/无线LAN 1440和/或因特网1450连接到多个投影仪(1420,1430)之一。然后,投影仪(1420,1430)简单地对用户设备1410的所接收的屏幕内容进行解码并且将该屏幕内容显示在相应投影仪屏幕(1460,1470)等等上。应当注意,这些投影仪(1420,1430)可以具有不同的网络带宽和处理能力。因此,这些投影仪可以在显示由用户设备1410所发送的当前屏幕方面具有不同的视觉质量和帧速率。然而,由于远程显示生成器如上述那样以本机方式支持多个连接,因此主机1480处的用于编码的计算开销将不会大量增加,由此允许诸如一般的笔记本计算机等等之类的典型用户设备充当主机。
3.0示例性操作环境:
在此所描述远程显示生成器可以在多种通用或专用计算系统环境或配置内操作。图15示出上面可以实现自此所述的远程显示生成器的各种实施例和元素的通用计算机系统的简化示例。应当注意,图15中由折线或虚线所表示的任何框表示简化计算设备的替代实施例,并且以下描述的这些替换实施方式中的任一个或全部可以结合贯穿本文所描述的其他替换实施方式来使用。
例如,图15示出了显示出简化计算设备的总体系统图。这样的计算设备通常可以在具有至少一些最小计算能力的设备中找到,这些设备包括但不限于个人计算机、服务器计算机、手持式计算设备、膝上型或移动计算机、诸如蜂窝电话和PDA等通信设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、视频媒体播放器等。
为了允许设备实现远程显示生成器,该设备一起包括足够的计算能力和用于在网络或因特网的范围内与其他设备通信的某种方式。具体而言,如图15所示,计算能力通常由一个或多个处理单元1510示出,并且还可包括一个或多个GPU 1515。注意,通用计算设备的处理单元1510可以是专用微处理器,如DSP、VLIW、或其他微控制器、或可以是具有一个或多个处理核的常规CPU,包括多核CPU中的基于GPU专用核。
另外,图15的简化计算设备还可包括其他组件,诸如例如通信接口1530。图15的简化计算设备还可包括一个或多个常规计算机输入设备1540。图15的简化计算设备还可包括其他可任选组件,诸如例如一个或多个常规计算机输出设备1550。最后,图15的简化计算设备还可以包括可移动的1570和/或不可移动1580的存储1560。注意,通用计算机的典型的通信接口1530、输入设备1540、输出设备1550、以及存储设备1560对本领域技术人员而言是公知的,并且在此不会详细描述。
以上对远程显示生成器的描述是出于说明和描述的目的而提出的。这并不旨在穷举所要求保护的主题或将其限于所公开的精确形式。鉴于上述教导,许多修改和变型都是可能的。此外,应当注意,可以按所期望的任何组合使用上述替代实施例中的任一种或全部以形成远程显示生成器的附加的混合实施例。本发明的范围并不旨在由该“具体实施方式”来限定,而是由所附权利要求书来限定。
Claims (11)
1.一种用于在客户端显示设备上显示被远程主控的应用的屏幕图像的方法,包括步骤:
建立一个或多个客户端(110)与远程主机(100)之间的网络连接(120);
在该远程主机上为每个客户端启动一个或多个应用(100,130);
使用该远程主机为每个客户端生成每个相应应用的当前屏幕图像(130);
使用该远程主机将每个当前屏幕图像划分(145,800)成一组非重叠的像素块;
使用该远程主机为每个客户端将每个当前屏幕图像的像素块与来自紧接地上一屏幕图像(135)的相应像素块相比较(145,810)以标识出每个当前屏幕图像中的未改变的像素块;
在标识出每个当前屏幕图像中的未改变的像素块后,使用该远程主机对每个当前屏幕图像的所有剩余的已改变的像素块进行压缩(145,830,840);
使用该远程主机将每个当前屏幕图像的经压缩的像素块编码成比特流(145,850);
将每个相应应用的当前屏幕图像的比特流传输(150)给每个相应的客户端;
使用每个客户端对每个所接收的当前屏幕图像的经编码的经压缩的块进行解码(160);
使用每个客户端对经解码的像素块进行解压缩(160)并且重建(160)每个所接收的当前屏幕图像;以及
使用每个客户端显示(110)由这些客户端中的每个所接收的所重建的当前屏幕图像;
其中对每个当前屏幕图像的所有已改变的像素块进行压缩进一步包括步骤:
评估每个已改变的像素块并且将这些块中的每个归类为文本类型的块或者图像类型的块;以及
将特定于块的不同压缩应用于每种块类型以对已改变的像素块进行压缩;
其中将特定于块的压缩应用于文本类型的块包括步骤:
评估文本类型的块以为文本类型的块中的像素标识出小数目的主要的像素颜色;
使用等宽的颜色窗来排列处于所述主要的像素颜色附近的颜色;
将文本类型的块中颜色窗内的所有像素量化成该同一颜色窗内的主要的像素颜色;以及
使用PCM码来在所述比特流中直接表示未被包括在任一颜色窗内的像素。
2.如权利要求1所述的方法,进一步包括步骤:与可用客户端带宽有关地为每个客户端设置单独的预定的屏幕更新时间。
3.如权利要求1所述的方法,进一步包括步骤:
本地监控与屏幕图像的客户端交互;
将所监控到的客户端交互报告给该主机;以及
其中从该主机传输给每个客户端的随后的当前屏幕图像被该主机呈现以反映报告给该主机的所监控到的客户端交互。
4.如权利要求1所述的方法,其特征在于,标识出每个当前屏幕图像中的未改变的像素块进一步包括步骤:为每个相应的当前屏幕图像生成指示还未改变的特定像素块的“跳过图”,并且其中每个相应的跳过图被传输给每个相应的客户端。
5.如权利要求4所述的方法,其特征在于,每个客户端使用任何所接收的跳过图来从每个紧接的上一屏幕图像的本地副本中选出相应的未改变的像素块以供用于重建每个所接收的当前屏幕图像。
6.一种用于在本地客户端上显示被远程主控的应用的方法,包括:
执行应用并且呈现该应用的当前屏幕图像(130);
将当前屏幕图像划分(145,800)成一组非重叠的大小相等的像素块;
为该应用将当前屏幕图像的像素块与上一屏幕图像(135)的缓冲副本(140)的相应像素块相比较(145,810);
创建(145,810)从上一屏幕图像到当前屏幕图像未改变的像素块的图;
在标识出从上一屏幕图像到当前屏幕图像未改变的像素块后,对当前屏幕图像的所有剩余的已改变的像素块进行压缩(145,830,840);
将经压缩的像素块和未改变的像素块的图编码(145,850)成复合比特流;以及
将该复合比特流传输(150)给该客户端;
其中对当前屏幕图像的所有已改变的像素块进行压缩进一步包括:
评估每个已改变的像素块并且将这些块中的每个归类为文本类型的块或者图像类型的块;以及
将特定于块的不同压缩应用于每种块类型以对已改变的像素块进行压缩;以及
其中将特定于块的压缩应用于文本类型的块包括步骤:
评估文本类型的块以为文本类型的块中的像素标识出小数目的主要的像素颜色;
使用等宽的颜色窗来排列处于所述主要的像素颜色附近的颜色;
将文本类型的块中颜色窗内的所有像素量化成该同一颜色窗内的主要的像素颜色;以及
使用PCM码来在所述比特流中直接表示未被包括在任一颜色窗内的像素。
7.如权利要求6所述的方法,进一步包括:使用该客户端对当前屏幕图像进行解码、解压缩、将当前屏幕图像呈现和显示在客户端显示设备上。
8.如权利要求7所述的方法,其特征在于,呈现当前屏幕图像进一步包括:使用未改变的像素块的图来从上一屏幕图像的本地副本中选出相应的未改变的像素块并且将这些未改变的像素块与从复合比特流中恢复的经解压缩的像素块相组合以呈现当前屏幕图像。
9.一种用于在本地客户端上显示被远程主控的应用的系统,包括:
用于执行应用并且呈现该应用的当前屏幕图像(130)的装置;
用于将当前屏幕图像划分(145,800)成一组非重叠的大小相等的像素块的装置;
用于为该应用将当前屏幕图像的像素块与上一屏幕图像(135)的缓冲副本(140)的相应像素块相比较(145,810)的装置;
用于创建(145,810)从上一屏幕图像到当前屏幕图像未改变的像素块的图的装置;
用于在标识出从上一屏幕图像到当前屏幕图像未改变的像素块后,对当前屏幕图像的所有剩余的已改变的像素块进行压缩(145,830,840)的装置;
用于将经压缩的像素块和未改变的像素块的图编码(145,850)成复合比特流的装置;以及
用于将该复合比特流传输(150)给该客户端的装置;
其中用于对当前屏幕图像的所有已改变的像素块进行压缩的装置进一步包括:
用于评估每个已改变的像素块并且将这些块中的每个归类为文本类型的块或者图像类型的块的装置;以及
用于将特定于块的不同压缩应用于每种块类型以对已改变的像素块进行压缩的装置;以及
其中用于将特定于块的压缩应用于文本类型的块的装置包括:
用于评估文本类型的块以为文本类型的块中的像素标识出小数目的主要的像素颜色的装置;
用于使用等宽的颜色窗来排列处于所述主要的像素颜色附近的颜色的装置;
用于将文本类型的块中颜色窗内的所有像素量化成该同一颜色窗内的主要的像素颜色的装置;以及
用于使用PCM码来在所述比特流中直接表示未被包括在任一颜色窗内的像素的装置。
10.如权利要求9所述的系统,进一步包括用于使用该客户端对当前屏幕图像进行解码、解压缩、将当前屏幕图像呈现和显示在客户端显示设备上的装置。
11.如权利要求10所述的系统,其特征在于,用于呈现当前屏幕图像的装置进一步包括:用于使用未改变的像素块的图来从上一屏幕图像的本地副本中选出相应的未改变的像素块并且将这些未改变的像素块与从复合比特流中恢复的经解压缩的像素块相组合以呈现当前屏幕图像的装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10957108P | 2008-10-30 | 2008-10-30 | |
US61/109,571 | 2008-10-30 | ||
US12/408,611 | 2009-03-20 | ||
US12/408,611 US8254704B2 (en) | 2008-10-30 | 2009-03-20 | Remote computing platforms providing high-fidelity display and interactivity for clients |
PCT/US2009/062863 WO2010062701A2 (en) | 2008-10-30 | 2009-10-30 | Remote computing platforms providing high-fidelity display and interactivity for clients |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102203760A CN102203760A (zh) | 2011-09-28 |
CN102203760B true CN102203760B (zh) | 2014-08-20 |
Family
ID=42131476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980143747.XA Active CN102203760B (zh) | 2008-10-30 | 2009-10-30 | 为客户端提供高保真显示和交互性的远程计算平台 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8254704B2 (zh) |
EP (1) | EP2344957B1 (zh) |
CN (1) | CN102203760B (zh) |
WO (1) | WO2010062701A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI612465B (zh) * | 2016-03-16 | 2018-01-21 | 知識體科技股份有限公司 | 遠端互動方法與系統 |
Families Citing this family (114)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9192859B2 (en) | 2002-12-10 | 2015-11-24 | Sony Computer Entertainment America Llc | System and method for compressing video based on latency measurements and other feedback |
US20090118019A1 (en) | 2002-12-10 | 2009-05-07 | Onlive, Inc. | System for streaming databases serving real-time applications used through streaming interactive video |
US9061207B2 (en) | 2002-12-10 | 2015-06-23 | Sony Computer Entertainment America Llc | Temporary decoder apparatus and method |
US8964830B2 (en) * | 2002-12-10 | 2015-02-24 | Ol2, Inc. | System and method for multi-stream video compression using multiple encoding formats |
US9108107B2 (en) | 2002-12-10 | 2015-08-18 | Sony Computer Entertainment America Llc | Hosting and broadcasting virtual events using streaming interactive video |
US9314691B2 (en) | 2002-12-10 | 2016-04-19 | Sony Computer Entertainment America Llc | System and method for compressing video frames or portions thereof based on feedback information from a client device |
US8549574B2 (en) | 2002-12-10 | 2013-10-01 | Ol2, Inc. | Method of combining linear content and interactive content compressed together as streaming interactive video |
US10201760B2 (en) | 2002-12-10 | 2019-02-12 | Sony Interactive Entertainment America Llc | System and method for compressing video based on detected intraframe motion |
US8526490B2 (en) | 2002-12-10 | 2013-09-03 | Ol2, Inc. | System and method for video compression using feedback including data related to the successful receipt of video content |
US9138644B2 (en) * | 2002-12-10 | 2015-09-22 | Sony Computer Entertainment America Llc | System and method for accelerated machine switching |
US8711923B2 (en) | 2002-12-10 | 2014-04-29 | Ol2, Inc. | System and method for selecting a video encoding format based on feedback data |
US9077991B2 (en) | 2002-12-10 | 2015-07-07 | Sony Computer Entertainment America Llc | System and method for utilizing forward error correction with video compression |
US8366552B2 (en) | 2002-12-10 | 2013-02-05 | Ol2, Inc. | System and method for multi-stream video compression |
US20100166056A1 (en) * | 2002-12-10 | 2010-07-01 | Steve Perlman | System and method for encoding video using a selected tile and tile rotation pattern |
US9446305B2 (en) | 2002-12-10 | 2016-09-20 | Sony Interactive Entertainment America Llc | System and method for improving the graphics performance of hosted applications |
US9168457B2 (en) | 2010-09-14 | 2015-10-27 | Sony Computer Entertainment America Llc | System and method for retaining system state |
US8594467B2 (en) * | 2008-12-19 | 2013-11-26 | Microsoft Corporation | Interactive virtual display system for ubiquitous devices |
US8732749B2 (en) | 2009-04-16 | 2014-05-20 | Guest Tek Interactive Entertainment Ltd. | Virtual desktop services |
US9510048B2 (en) * | 2009-05-26 | 2016-11-29 | Red Hat Israel, Ltd. | Dynamically changing streaming video quality |
US9049271B1 (en) * | 2009-07-16 | 2015-06-02 | Teradici Corporation | Switch-initiated congestion management method |
US8891939B2 (en) * | 2009-12-22 | 2014-11-18 | Citrix Systems, Inc. | Systems and methods for video-aware screen capture and compression |
US9229734B2 (en) * | 2010-01-15 | 2016-01-05 | Guest Tek Interactive Entertainment Ltd. | Hospitality media system employing virtual user interfaces |
US20110219331A1 (en) * | 2010-03-02 | 2011-09-08 | International Business Machines Corporation | Window resize on remote desktops |
JP5471794B2 (ja) * | 2010-05-10 | 2014-04-16 | 富士通株式会社 | 情報処理装置、画像送信プログラム及び画像表示方法 |
US9003455B2 (en) | 2010-07-30 | 2015-04-07 | Guest Tek Interactive Entertainment Ltd. | Hospitality media system employing virtual set top boxes |
CN101951364A (zh) * | 2010-08-25 | 2011-01-19 | 深圳市傲冠软件股份有限公司 | 远程控制过程中实现安全审计功能的方法及系统 |
US20120082395A1 (en) * | 2010-09-30 | 2012-04-05 | Microsoft Corporation | Entropy Coder for Image Compression |
US8607158B2 (en) * | 2010-12-09 | 2013-12-10 | International Business Machines Corporation | Content presentation in remote monitoring sessions for information technology systems |
US20120154678A1 (en) * | 2010-12-20 | 2012-06-21 | Kuo-Lung Chang | Receiving device, screen frame transmission system and method |
US8806360B2 (en) | 2010-12-22 | 2014-08-12 | International Business Machines Corporation | Computing resource management in information technology systems |
US8700699B2 (en) | 2011-04-15 | 2014-04-15 | Microsoft Corporation | Using a proxy server for a mobile browser |
US9167020B2 (en) * | 2011-06-10 | 2015-10-20 | Microsoft Technology Licensing, Llc | Web-browser based desktop and application remoting solution |
US8887059B2 (en) * | 2011-07-27 | 2014-11-11 | Kaseya Limited | Method and apparatus of locally controlling display content of a remote system |
US8924507B2 (en) | 2011-09-02 | 2014-12-30 | Microsoft Corporation | Cross-frame progressive spoiling support for reduced network bandwidth usage |
US20130067331A1 (en) * | 2011-09-09 | 2013-03-14 | Screenovate Technologies Ltd. | Method and System of Simultaneous Display of Multiple Screens on a Target Display |
JP5874257B2 (ja) * | 2011-09-12 | 2016-03-02 | 富士通株式会社 | 情報処理装置、画像送信方法及び画像送信プログラム |
CN102339592A (zh) * | 2011-09-29 | 2012-02-01 | 中山大学 | 一种基于lcd控制器的显存压缩方法 |
US20130101014A1 (en) * | 2011-10-25 | 2013-04-25 | Microsoft Corporation | Layered Screen Video Encoding |
US8582876B2 (en) | 2011-11-15 | 2013-11-12 | Microsoft Corporation | Hybrid codec for compound image compression |
US20150201199A1 (en) * | 2011-12-07 | 2015-07-16 | Google Inc. | Systems and methods for facilitating video encoding for screen-sharing applications |
US9008177B2 (en) * | 2011-12-12 | 2015-04-14 | Qualcomm Incorporated | Selective mirroring of media output |
US9619496B2 (en) * | 2011-12-16 | 2017-04-11 | Siemens Aktiengesellschaft | Method, computer readable medium and system for using large data sets in virtual applications |
US9210212B2 (en) * | 2011-12-21 | 2015-12-08 | Seiko Epson Corporation | Method for host preview during a remote desktop session |
JP2013131990A (ja) * | 2011-12-22 | 2013-07-04 | Ricoh Co Ltd | 情報処理装置及びプログラム |
US9367931B1 (en) | 2011-12-30 | 2016-06-14 | hopTo Inc. | Motion vectors for cross-platform display |
US9454617B1 (en) * | 2011-12-30 | 2016-09-27 | hopTo Inc. | Client rendering |
US9223534B1 (en) | 2011-12-30 | 2015-12-29 | hopTo Inc. | Client side detection of motion vectors for cross-platform display |
US8856262B1 (en) * | 2011-12-30 | 2014-10-07 | hopTo Inc. | Cloud-based image hosting |
US8775545B1 (en) * | 2011-12-30 | 2014-07-08 | hop To Inc. | Image hosting for cross-platform display over a communication network |
US9218107B1 (en) | 2011-12-30 | 2015-12-22 | hopTo Inc. | Cloud-based text management for cross-platform display |
US9060010B1 (en) * | 2012-04-29 | 2015-06-16 | Rockwell Collins, Inc. | Incorporating virtual network computing into a cockpit display system for controlling a non-aircraft system |
US9679530B2 (en) * | 2012-04-30 | 2017-06-13 | Nvidia Corporation | Compressing graphics data rendered on a primary computer for transmission to a remote computer |
US9106612B1 (en) * | 2012-05-18 | 2015-08-11 | hopTo Inc. | Decomposition and recomposition for cross-platform display |
US8990363B1 (en) * | 2012-05-18 | 2015-03-24 | hopTo, Inc. | Decomposition and recomposition for cross-platform display |
US9124562B1 (en) * | 2012-05-18 | 2015-09-01 | hopTo Inc. | Cloud-based decomposition and recomposition for cross-platform display |
US9426476B2 (en) * | 2012-07-09 | 2016-08-23 | Hewlett-Packard Development Company, L.P. | Video stream |
US9318043B2 (en) * | 2012-07-09 | 2016-04-19 | Mobbers, Inc. | Systems and methods for coordinating portable display devices |
US10353718B2 (en) | 2012-07-23 | 2019-07-16 | Vmware, Inc. | Providing access to a remote application via a web client |
US9424660B2 (en) | 2012-08-07 | 2016-08-23 | Intel Corporation | Media encoding using changed regions |
KR101966921B1 (ko) * | 2012-09-12 | 2019-08-27 | 삼성전자주식회사 | 멀티 세션 관리 방법 및 장치 |
US8776152B1 (en) | 2012-11-02 | 2014-07-08 | hopTo Inc. | Cloud-based cross-platform video display |
US8763054B1 (en) | 2012-11-02 | 2014-06-24 | hopTo Inc. | Cross-platform video display |
US20140129948A1 (en) * | 2012-11-08 | 2014-05-08 | Bank Of America Corporation | Method and apparatus for simultaneous display of information from multiple portable devices on a single screen |
US9225979B1 (en) * | 2013-01-30 | 2015-12-29 | Google Inc. | Remote access encoding |
US9235905B2 (en) | 2013-03-13 | 2016-01-12 | Ologn Technologies Ag | Efficient screen image transfer |
JP6323048B2 (ja) * | 2013-03-15 | 2018-05-16 | 株式会社リコー | 配信システム、配信方法、及びプログラム |
JP2014199648A (ja) | 2013-03-15 | 2014-10-23 | 株式会社リコー | 配信制御システム、配信システム、配信制御方法、及びプログラム |
CN105247875B (zh) | 2013-03-15 | 2019-03-08 | 株式会社理光 | 分发控制系统和分发系统 |
JP6354197B2 (ja) | 2013-03-15 | 2018-07-11 | 株式会社リコー | 配信制御システム、配信制御方法、及びプログラム |
JP6369043B2 (ja) | 2013-03-15 | 2018-08-08 | 株式会社リコー | 配信制御システム、配信システム、配信制御方法、及びプログラム |
JP6337499B2 (ja) | 2013-03-15 | 2018-06-06 | 株式会社リコー | 配信制御システム、配信システム、配信制御方法、及びプログラム |
US9292157B1 (en) | 2013-03-15 | 2016-03-22 | hopTo Inc. | Cloud-based usage of split windows for cross-platform document views |
US9497492B2 (en) | 2013-03-15 | 2016-11-15 | Ricoh Company, Limited | Distribution control system, distribution system, distribution control method, and computer-readable storage medium |
US9430134B1 (en) | 2013-03-15 | 2016-08-30 | hopTo Inc. | Using split windows for cross-platform document views |
JP6398215B2 (ja) | 2013-03-15 | 2018-10-03 | 株式会社リコー | 配信制御システム、配信システム、配信制御方法、及びプログラム |
JP2014200076A (ja) | 2013-03-15 | 2014-10-23 | 株式会社リコー | 配信制御システム、配信制御方法、及びプログラム |
US9210434B2 (en) * | 2013-06-12 | 2015-12-08 | Microsoft Technology Licensing, Llc | Screen map and standards-based progressive codec for screen content coding |
US10154265B2 (en) * | 2013-06-21 | 2018-12-11 | Nvidia Corporation | Graphics server and method for streaming rendered content via a remote graphics processing service |
CN103858095B (zh) | 2013-08-02 | 2015-08-19 | 华为技术有限公司 | 一种图像显示方法和装置 |
WO2015027329A1 (en) * | 2013-08-30 | 2015-03-05 | Zag Holdings Inc. | View sharing and dual permission remote browsing methods and systems |
JP6336058B2 (ja) | 2013-10-14 | 2018-06-06 | マイクロソフト テクノロジー ライセンシング,エルエルシー | ビデオ及び画像符号化及び復号のためのベースカラーインデックスマップモードの機能 |
WO2015054813A1 (en) | 2013-10-14 | 2015-04-23 | Microsoft Technology Licensing, Llc | Encoder-side options for intra block copy prediction mode for video and image coding |
WO2015054811A1 (en) | 2013-10-14 | 2015-04-23 | Microsoft Corporation | Features of intra block copy prediction mode for video and image coding and decoding |
US20150117515A1 (en) * | 2013-10-25 | 2015-04-30 | Microsoft Corporation | Layered Encoding Using Spatial and Temporal Analysis |
CN103577142A (zh) * | 2013-11-14 | 2014-02-12 | 广东威创视讯科技股份有限公司 | Vnc协议下确定传输给客户端的像素数据的方法和装置 |
CN104753976A (zh) * | 2013-12-26 | 2015-07-01 | 中国石油化工股份有限公司 | 本地客户端自动化启动和显示远程服务端地质解释专业软件的方法 |
BR112016015080A2 (pt) | 2014-01-03 | 2017-08-08 | Microsoft Technology Licensing Llc | Predição de vetor de bloco em codificação / decodificação de vídeo e imagem |
US10390034B2 (en) | 2014-01-03 | 2019-08-20 | Microsoft Technology Licensing, Llc | Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area |
US11284103B2 (en) | 2014-01-17 | 2022-03-22 | Microsoft Technology Licensing, Llc | Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning |
US9699468B2 (en) | 2014-02-10 | 2017-07-04 | Microsoft Technology Licensing, Llc | Adaptive screen and video coding scheme |
US10542274B2 (en) | 2014-02-21 | 2020-01-21 | Microsoft Technology Licensing, Llc | Dictionary encoding and decoding of screen content |
US20150264361A1 (en) * | 2014-03-13 | 2015-09-17 | Huawei Technologies Co., Ltd. | Method for screen content coding |
US10270819B2 (en) | 2014-05-14 | 2019-04-23 | Microsoft Technology Licensing, Llc | System and method providing collaborative interaction |
US9552473B2 (en) | 2014-05-14 | 2017-01-24 | Microsoft Technology Licensing, Llc | Claiming data from a virtual whiteboard |
WO2015180139A1 (zh) * | 2014-05-30 | 2015-12-03 | 富士通株式会社 | 图像编码方法、装置以及图像处理设备 |
EP3158734A1 (en) | 2014-06-19 | 2017-04-26 | Microsoft Technology Licensing, LLC | Unified intra block copy and inter prediction modes |
US20150381994A1 (en) * | 2014-06-27 | 2015-12-31 | Futurewei Technologies, Inc. | Advanced screen content coding with improved palette table and index map coding methods |
EP3917146A1 (en) | 2014-09-30 | 2021-12-01 | Microsoft Technology Licensing, LLC | Rules for intra-picture prediction modes when wavefront parallel processing is enabled |
US20160112707A1 (en) * | 2014-10-15 | 2016-04-21 | Intel Corporation | Policy-based image encoding |
CN105760338A (zh) * | 2014-12-18 | 2016-07-13 | 中兴通讯股份有限公司 | 一种瘦客户端的图像显示方法、装置及电子设备 |
US9832521B2 (en) * | 2014-12-23 | 2017-11-28 | Intel Corporation | Latency and efficiency for remote display of non-media content |
US20160320936A1 (en) | 2015-05-01 | 2016-11-03 | Prysm, Inc. | Techniques for displaying shared digital assets consistently across different displays |
US10429437B2 (en) * | 2015-05-28 | 2019-10-01 | Keysight Technologies, Inc. | Automatically generated test diagram |
US10659783B2 (en) | 2015-06-09 | 2020-05-19 | Microsoft Technology Licensing, Llc | Robust encoding/decoding of escape-coded pixels in palette mode |
CN106681583A (zh) * | 2016-12-02 | 2017-05-17 | 广东威创视讯科技股份有限公司 | 重叠窗口中显示内容的处理方法和系统 |
US20180218056A1 (en) * | 2017-01-30 | 2018-08-02 | Netzyn, Inc. | System and method for reducing perceived latency in a display-server computing system |
GB2559550A (en) * | 2017-02-03 | 2018-08-15 | Realvnc Ltd | Method and system for remote controlling and viewing a computing device |
CN109104610B (zh) | 2017-06-20 | 2023-04-11 | 微软技术许可有限责任公司 | 实时屏幕共享 |
US10713745B2 (en) | 2017-11-20 | 2020-07-14 | Citrix Systems, Inc. | Systems and methods for providing a visible watermark in a remote session |
US10986349B2 (en) | 2017-12-29 | 2021-04-20 | Microsoft Technology Licensing, Llc | Constraints on locations of reference blocks for intra block copy prediction |
CN108363598A (zh) * | 2018-01-04 | 2018-08-03 | 上海奕瑞光电子科技股份有限公司 | 虚拟远程桌面访问的管理方法/系统、介质及电子设备 |
US10897577B2 (en) * | 2018-06-26 | 2021-01-19 | Canon Kabushiki Kaisha | Image capturing system, image capturing apparatus, illumination apparatus, and control method |
US11256528B2 (en) | 2018-10-26 | 2022-02-22 | Nvidia Corporation | Individual application window streaming suitable for remote desktop applications |
US11797319B2 (en) * | 2019-05-10 | 2023-10-24 | Dell Products L.P. | Copy and paste in virtual console with keyboard play |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1189049A (zh) * | 1996-12-31 | 1998-07-29 | 大宇电子株式会社 | 数据视频家用系统编译码器系统的编码方法及编码器 |
CN1694058A (zh) * | 2005-04-30 | 2005-11-09 | 广东威创日新电子有限公司 | 一种基于服务器端/客户端结构远程显示处理方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4443863A (en) * | 1981-06-16 | 1984-04-17 | International Business Machines Corporation | Timer driven display updating |
US5255361A (en) * | 1988-12-19 | 1993-10-19 | International Business Machines Corporation | Method of and system for updating a display unit |
US6014133A (en) * | 1996-06-14 | 2000-01-11 | Seiko Epson Corporation | Data transmitter/receiver apparatus, data transmitter, data receiver, and data compression method |
JP3661610B2 (ja) * | 2001-06-26 | 2005-06-15 | 住友重機械工業株式会社 | 通信ネットワークを利用した遠隔監視方法 |
US7171444B2 (en) * | 2001-11-14 | 2007-01-30 | Sharp Laboratories Of America, Inc. | Remote desktop protocol compression system |
US20040010622A1 (en) * | 2002-07-11 | 2004-01-15 | O'neill Thomas G. | Method and system for buffering image updates in a remote application |
US7039247B2 (en) * | 2003-01-31 | 2006-05-02 | Sony Corporation | Graphic codec for network transmission |
US7403566B2 (en) * | 2003-06-03 | 2008-07-22 | Hewlett-Packard Development Company, L.P. | System, computer program product, and method for transmitting compressed screen images from one computer to another or many computers |
US20060010392A1 (en) * | 2004-06-08 | 2006-01-12 | Noel Vicki E | Desktop sharing method and system |
US7430681B1 (en) * | 2005-03-30 | 2008-09-30 | Teradici Corporation | Methods and apparatus for interfacing a drawing memory with a remote display controller |
US7668382B2 (en) | 2006-02-24 | 2010-02-23 | Microsoft Corporation | Block-based fast image compression |
JP4577267B2 (ja) * | 2006-05-17 | 2010-11-10 | 株式会社日立製作所 | シンクライアントシステム |
-
2009
- 2009-03-20 US US12/408,611 patent/US8254704B2/en active Active
- 2009-10-30 EP EP09829652.8A patent/EP2344957B1/en active Active
- 2009-10-30 WO PCT/US2009/062863 patent/WO2010062701A2/en active Application Filing
- 2009-10-30 CN CN200980143747.XA patent/CN102203760B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1189049A (zh) * | 1996-12-31 | 1998-07-29 | 大宇电子株式会社 | 数据视频家用系统编译码器系统的编码方法及编码器 |
CN1694058A (zh) * | 2005-04-30 | 2005-11-09 | 广东威创日新电子有限公司 | 一种基于服务器端/客户端结构远程显示处理方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI612465B (zh) * | 2016-03-16 | 2018-01-21 | 知識體科技股份有限公司 | 遠端互動方法與系統 |
Also Published As
Publication number | Publication date |
---|---|
EP2344957A2 (en) | 2011-07-20 |
CN102203760A (zh) | 2011-09-28 |
US8254704B2 (en) | 2012-08-28 |
US20100111410A1 (en) | 2010-05-06 |
EP2344957B1 (en) | 2016-11-23 |
WO2010062701A2 (en) | 2010-06-03 |
WO2010062701A3 (en) | 2010-08-19 |
EP2344957A4 (en) | 2012-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102203760B (zh) | 为客户端提供高保真显示和交互性的远程计算平台 | |
RU2506715C2 (ru) | Передача изменяющегося визуального контента | |
US20180270496A1 (en) | Composite video streaming using stateless compression | |
Lu et al. | Virtualized screen: A third element for cloud–mobile convergence | |
US9008172B2 (en) | Selection compression | |
US7103099B1 (en) | Selective compression | |
KR101596505B1 (ko) | 멀티미디어 시스템의 사용자 인터페이스 장치 및 방법 | |
US20160112259A1 (en) | Home Cloud with Virtualized Input and Output Roaming over Network | |
CN110198492B (zh) | 一种视频的水印添加方法、装置、设备及存储介质 | |
CN109309842B (zh) | 直播数据处理方法和装置、计算机设备和存储介质 | |
JP6333858B2 (ja) | 複数の視覚コンポーネントを有する画面を共有するためのシステム、装置、および方法 | |
CN102460407A (zh) | 虚拟桌面服务 | |
CN112533059B (zh) | 图像渲染方法、装置、电子设备以及存储介质 | |
KR20100008735A (ko) | 멀티미디어 시스템의 유저 인터페이스 장치 및 방법 | |
CN110636305A (zh) | 图像渲染和编码方法及相关装置 | |
CN115767092A (zh) | 图像传输方法、云桌面及图像传输系统、设备及产品 | |
CN117676241A (zh) | 基于服务器三维渲染的数字化工厂大场景显示方法及系统 | |
KR20160015128A (ko) | 클라우드 스트리밍 서비스 시스템, 이미지 타입에 따른 클라우드 스트리밍 서비스 방법 및 이를 위한 장치 | |
JP2005501355A (ja) | キャッシュ方法 | |
KR20160087226A (ko) | 클라우드 스트리밍 서비스 시스템, 단말 성능을 고려한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치 | |
CN112118213A (zh) | 一种线上的视频数据输出方法、系统及云平台 | |
CN100481945C (zh) | 呈现多媒体信息的方法与装置 | |
CN115738290A (zh) | 支付方法、装置、电子设备及存储介质 | |
AU2015203292A1 (en) | Composite video streaming using stateless compression | |
KR101473463B1 (ko) | 터미널 환경의 서버 기반 컴퓨팅 시스템에서 압축 화면 정보를 제공하는 터미널 서비스 시스템 및 터미널 서비스 방법 |
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 | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150515 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150515 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |