CN102203760B - 为客户端提供高保真显示和交互性的远程计算平台 - Google Patents

为客户端提供高保真显示和交互性的远程计算平台 Download PDF

Info

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
Application number
CN200980143747.XA
Other languages
English (en)
Other versions
CN102203760A (zh
Inventor
Y·陆
H·沈
F·吴
S·李
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN102203760A publication Critical patent/CN102203760A/zh
Application granted granted Critical
Publication of CN102203760B publication Critical patent/CN102203760B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/1415Digital 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
    • 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
    • G06F3/1462Digital 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
    • 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
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/18Use of a frame buffer in a display terminal, inclusive of the display panel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/182Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/186Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods 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所述的系统,其特征在于,用于呈现当前屏幕图像的装置进一步包括:用于使用未改变的像素块的图来从上一屏幕图像的本地副本中选出相应的未改变的像素块并且将这些未改变的像素块与从复合比特流中恢复的经解压缩的像素块相组合以呈现当前屏幕图像的装置。
CN200980143747.XA 2008-10-30 2009-10-30 为客户端提供高保真显示和交互性的远程计算平台 Active CN102203760B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI612465B (zh) * 2016-03-16 2018-01-21 知識體科技股份有限公司 遠端互動方法與系統

Families Citing this family (114)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 株式会社日立製作所 シンクライアントシステム

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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.