CN102447901A - 用于改进的高速缓存和图像分类的自适应网格生成 - Google Patents
用于改进的高速缓存和图像分类的自适应网格生成 Download PDFInfo
- Publication number
- CN102447901A CN102447901A CN2011102664959A CN201110266495A CN102447901A CN 102447901 A CN102447901 A CN 102447901A CN 2011102664959 A CN2011102664959 A CN 2011102664959A CN 201110266495 A CN201110266495 A CN 201110266495A CN 102447901 A CN102447901 A CN 102447901A
- Authority
- CN
- China
- Prior art keywords
- grid
- screen
- computer
- graph data
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/16—Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
-
- 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/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
- H04N19/27—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding involving both synthetic and natural picture components, e.g. synthetic natural hybrid coding [SNHC]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及用于改进的高速缓存和图像分类的自适应网格生成。本发明的各示例性实施例提供了用于在将图形数据发送给客户计算机时,生成在高速缓存和分类中使用的改进的网格的机制。这种网格可具有与诸如用户界面元素以及图像和文本之间的边界等被捕捉的屏幕内容相对齐的属性。在一些实施例中,可使用分析屏幕并生成屏幕的细分网格的算法,该细分网格可能会将屏幕划分成将图像和文本内容基本上分开的区域。也能将细分网格再进一步细分(即,瓦块化)成可更好地适合于高速缓存的区域。在另外的实施例中,算法可使用来自窗口管理器的与窗口分层结构和用户界面元素布置有关的信息来产生网格。
Description
技术领域
本发明涉及处理图形数据的方法和系统。
背景技术
联网的一种日益流行的形式一般被称为远程呈现系统,其能使用诸如远程桌面协议(RDP)以及独立计算体系结构(ICA)等协议来与远程客户机共享桌面和在服务器上执行的其他应用。这样的计算系统通常将键盘按压和鼠标点击或选择从客户机传送到服务器,通过网络连接(例如,因特网)在另一方向上转播回屏幕更新。由此,当实际上仅仅向客户机设备发送如在服务器侧上显现的桌面或应用的屏幕截图时,用户具有好像他的或她的机器正在完全地本地操作的体验。
在这种系统中,可在服务器处为每个用户渲染用户图形和视频。然后将得到的位图发送给客户机以供显示和交互。为了降低网络上的带宽要求,位图可在发送给客户机之前进行压缩和编码。编码系统可包括最初将源图像数据划分成数据瓦块(tile)的瓦块化系统。帧差分模块然后可只将经更改的数据瓦块输出到各处理模块,这些处理模块将经更改的数据瓦块转换成相应的瓦块分量。
发明内容
采用了这种瓦块化方案的远程呈现系统的一个问题是场景,在该场景中当各瓦块具有预定的大小并且使用固定原点来生成时,屏幕的经改变的区域在瓦块上并不完全对齐。例如,瓦块可包括视频和文本部分两者或子区域。将整个瓦块作为缓慢改变的文本部分来对待可导致系统不能提供足够快地提供更新以跟上更快改变的视频部分。将整个瓦块作为快速改变的视频部分来对待可导致使用较低质量的图像来渲染文本部分。在执行可伸缩编码的算法时,较高保真度的图像可能会显得模糊,因为作为视频被重复更新的结果,只发送高频分量。而且,在使用位图来进行高速缓存时,瓦块被存储在高速缓存中,并且当后续帧中的瓦块与先前被高速缓存的瓦块相同时,就可使用该被高速缓存的瓦块(称作高速缓存命中)。然而,如果用户屏幕被滚动或以其他方式关于屏幕原点移动,则有可能即使该屏幕基本上并未改变,也不会标识高速缓存命中。
因此,在此公开了一种用于为高速缓存和分类两者生成更合适的网格的机制。这种网格可具有与诸如用户界面元素以及图像和文本之间的边界等屏幕内容对齐的属性。在一些实施例中,可使用分析屏幕并生成该屏幕的细分网格的算法,该细分网格可能会将该屏幕划分成使图像和文本内容基本上分开的区域。也能将该细分网格进一步细分(即,瓦块化)成可更好地适合于高速缓存的区域。在另外实施例中,算法可使用来自窗口管理器的与窗口分层结构和用户界面元素布置有关的信息来产生网格。
例如,公开了用于处理要传送到远程计算设备的图形数据的方法和系统。示例性方法可包括接收表示要传送到远程计算设备的客户机屏幕的图形数据;确定所述图形数据中的锚点,其中所述锚点指示所述客户机屏幕的各可视元素之间的过渡;基于所述锚点,确定用于细分所述客户机屏幕的网格,其中所述网格与所述客户机屏幕的用户界面元素和图像与文本之间的边界基本上对齐;以及,基于所述网格,将所述图形数据划分成数据瓦块,并处理所述数据瓦块以供传送到所述远程计算设备。
附图说明
参考附图来进一步描述根据本说明书的用于处理要传输到远程计算设备的图形数据的系统、方法和计算机可读介质,在附图中:
图1和2描绘了其中可实现本发明的各方面的示例性计算机系统。
图3描绘了用于实施本发明的各方面的操作环境。
图4描绘了用于实施本发明的各方面的操作环境。
图5示出了包括用于实现远程桌面服务的电路的计算机系统。
图6示出了包括用于实现远程服务的电路的计算机系统。
图7示出了屏幕瓦块化实现的一个示例。
图8示出了屏幕瓦块化实现的一个示例。
图9示出了自适应网格生成方案的示例性方法。
图10示出了图解此处所公开的方法的各方面的示例性屏幕。
图11示出了图解此处所公开的方法的各方面的示例性屏幕。
图12示出了图解此处所公开的方法的各方面的示例性屏幕。
图13示出了用于处理要传送到远程计算设备的图形数据的操作过程的示例。
图14示出了用于处理要传送到远程计算设备的图形数据的示例性系统。
具体实施方式
概括的计算环境
在以下描述和附图中阐明了某些具体细节,以提供对本发明的各个实施例的全面理解。通常与计算和软件技术相关联的某些公知细节将不在以下公开中描述,以避免不必要地使本发明的各实施例晦涩难懂。此外,相关领域的普通技术人员可以理解,他们可以无需以下描述的细节中的一个或多个而实现本发明的其它实施例。最后,尽管在以下公开中参考了步骤和序列来描述各个方法,但是如此的描述是为了提供本发明的实施例的清楚实现,且步骤以及步骤序列不应被认为是实现本发明所必需的。
应该理解,此处所描述的各种技术可以结合硬件或软件或,在适当的情况下,结合两者的组合来实现。因此,本发明的方法和装置或其某些方面或部分,可以采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、可由处理器读取的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备,以及至少一个输出设备。一个或多个程序可以例如,通过使用API、可重用控件等来实现或利用结合本发明描述的过程。这样的程序优选地以高级别过程或面向对象编程语言来实现,以与计算机系统进行通信。然而,若有需要,程序也可以以以汇编或机器语言来实现。在任一情况下,语言都可以是编译的或解释的语言,并与硬件实现相结合。
远程桌面系统是维护可由客户计算机系统远程地执行的应用的计算机系统。输入是在客户计算机系统处被输入的,并通过网络(例如,使用基于国际电信联盟(ITU)T.120系列协议等协议,如远程桌面协议(RDP))传送到终端服务器上的应用。该应用如同该输入是在终端服务器处送入的那样来处理该输入。该应用响应于所接收到的输入生成输出,并且通过网络将该输出传送到客户机。
各实施例可在一个或多个计算机上执行。图1和2以及下面的讨论旨在提供其中可实现本发明的合适的计算环境的简要概括描述。本领域的技术人员可以理解,计算机系统200、300可具有相对于图1和2的计算机100描述的组件中的一部分或全部。
贯穿本发明使用的术语电路可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件/软件。术语电路还可包括被配置成通过固件或通过开关集来以特定方式执行功能的微处理器,或一个或多个逻辑处理器,例如,多核通用处理单元的一个或多个核。此示例中的逻辑处理器可以通过从存储器,例如,RAM、ROM、固件和/或虚拟存储器中加载的体现可操作以执行功能的逻辑的软件指令来配置。在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/软件的组合之间几乎没有差别的地步,因而选择硬件还是软件来实现功能只是一个设计选择。因此,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现是无足轻重的且留给了实现者。
图1描绘了以本发明的各方面来配置的计算系统的示例。计算系统可包括计算机20等等,其中包括处理单元21、系统存储器22,以及将包括系统存储器在内的各种系统组件耦合到处理单元21的系统总线23。系统总线23可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线,以及局部总线。系统存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出系统26(BIOS)被存储在ROM 24中,该基本输入/输出系统26包含了诸如在启动期间帮助在计算机20内的元件之间传输信息的基本例程。计算机20还可以包括用于读写硬盘(未示出)的硬盘驱动器27、用于读写可移动磁盘29的磁盘驱动器28,以及用于读写诸如CD ROM或其他光学介质之类的可移动光盘31的光盘驱动器30。在一些示例实施例中,实施本发明的各方面的计算机可执行指令可存储在ROM 24、硬盘(未示出)、RAM 25、可移动磁盘29、光盘31和/或处理单元21的高速缓存中。硬盘驱动器27、磁盘驱动器28,以及光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33,以及光盘驱动器接口34连接到系统总线23。驱动器以及它们相关联的计算机可读介质为计算机20提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失性存储。虽然此处所描述的环境使用了硬盘、可移动磁盘29、以及可移动光盘31,但是,那些本领域普通技术人员应该理解,在操作环境中也可以使用诸如盒式磁带、闪存卡、数字视频盘、伯努利磁带盒、随机存取存储器(RAM)、只读存储器(ROM)等等之类的可以存储可由计算机进行访问的数据的其他类型的计算机可读介质。
可以有若干个程序模块存储在硬盘、磁盘29、光盘31、ROM 24,和/或RAM 25上,包括操作系统35、一个或多个应用程序36、其他程序模块37、以及程序数据38。用户可以通过诸如键盘40和定点设备42之类的输入设备向计算机20中输入命令和信息。其他输入设备(未示出)可包括话筒、游戏杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些及其他输入设备常常通过耦合到系统总线的串行端口接口46连接到处理单元21,但是,也可以通过诸如并行端口、游戏端口、通用串行总线(USB)端口之类的其他接口来连接。显示器47或其他类型的显示设备也可以通过诸如视频适配器48之类的接口连接到系统总线23。除了显示器47之外,计算机通常还包括其他外围输出设备(未示出),如扬声器和打印机。图1的系统也包括主机适配器55、小型计算机系统接口(SCSI)总线56,以及连接到SCSI总线56的外部存储装置62。
计算机20可使用至诸如远程计算机49之类的一个或多个远程计算机的逻辑连接在网络化环境中操作。远程计算机49可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点、虚拟机,并通常包括上文相对于计算机20所描述的许多或全部元件,但是在图1中只示出了存储器存储设备50。图1中所描绘的逻辑连接可包括局域网(LAN)51和广域网(WAN)52。这样的联网环境在办公室、企业范围的计算机网络、内联网和因特网中是普遍的。
当用于LAN网络环境中时,计算机20可通过网络接口或适配器53连接到LAN 51。当用于WAN网络环境中时,计算机20通常包括调制解调器54,或用于通过诸如因特网之类的广域网52建立通信的其他手段。可以是内置的或外置的调制解调器54可通过串行端口接口46连接到系统总线23。在网络化环境中,相对于计算机20所描述的程序模块或其部分可被存储在远程存储器存储设备中。可以理解,所示出的网络连接只是示例,也可以使用用于在计算机之间建立通信链路的其他装置。此外,虽然可构想本发明的许多实施例尤其适用于计算机系统,然而在本文中不意味着将本发明限于这些实施例的公开。
现在参考图2,描绘了示例性计算系统100的另一实施例。计算机系统100可包括逻辑处理器102,如执行核。尽管示出了一个逻辑处理器102,但在其他实施例中,计算机系统100可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多个执行核的多个处理器基板。如图所示,各种计算机可读存储介质110可由一个或多个系统总线互联,系统总线将各种系统组件耦合到逻辑处理器102。系统总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器(RAM)104、存储设备106(例如电机硬盘驱动器、固态硬盘驱动器等)、固件108(例如闪速RAM或ROM)、以及可移动存储设备118(例如CD-ROM、软盘、DVD、闪速驱动器、外部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、数字视频盘、柏努利盒式磁带。
计算机可读存储介质为计算机100提供了对处理器可执行指令122、数据结构、程序模块和其他数据的非易失性存储。基本输入/输出系统(BIOS)120可被存储在固件108中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间传递信息的基本例程。包括操作系统和/或应用程序的多个程序可被存储在固件108、存储设备106、RAM 104和/或可移动存储设备118上,并且可由逻辑处理器102来执行。
命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和定点设备。其他输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其他输入设备常通过耦合到系统总线的串行端口接口连接到逻辑处理器102,但也可通过其他接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由诸如视频适配器等可以是图形处理器112的一部分或可连接到图形处理器112的接口来连接到系统总线。除了显示器之外,计算机通常包括其他外围输出设备(未示出),如扬声器和打印机。图1的示例性系统还包括主适配器、小型计算机系统接口(SCSI)总线和连接到SCSI总线的外部存储设备。
计算机系统100可使用至一个或多个远程计算机,如远程计算机的逻辑连接在网络化环境中操作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。
当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡114连接至LAN或WAN。NIC 114可以是内置或外置的,其可以连接到系统总线。在联网环境中,相对于计算机系统100所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。虽然可构想本发明的许多实施例尤其适用于计算机化的系统,然而在本说明中不意味着将本发明限于那些实施例。
远程桌面系统是维护可由客户计算机系统远程地执行的应用的计算机系统。输入是在客户计算机系统处被输入的,并通过网络(例如,使用基于国际电信联盟(ITU)T.120系列协议等协议,如远程桌面协议(RDP))传送到终端服务器上的应用。该应用如同该输入是在终端服务器处送入的那样来处理该输入。该应用响应于所接收到的输入生成输出,并且该输出通过网络传送到客户计算机系统。客户计算机系统呈现输出数据。由此,在客户计算机系统处接收输入并呈现输出,而处理实际上是在终端服务器处发生的。会话可包括诸如桌面之类的外壳和用户界面、跟踪该桌面内的鼠标移动的子系统、将图标上的鼠标点击转换成实现程序实例的命令的子系统等等。在另一示例实施例中,会话可包括应用。在该示例中,当呈现应用时,桌面环境仍可被生成并对用户隐藏。应当理解,前述讨论是示例性的,且当前公开的主题可以在各种客户机/服务器环境中实现且不限于特定终端服务产品。
即使不是全部,也是在大多数远程桌面环境中,输入数据(在客户计算机系统处送入的)通常包括表示对应用的命令的鼠标和键盘数据,且输出数据(由终端服务器处的应用生成)通常包括用于在视频输出设备上显示的视频数据。许多远程桌面环境也包括扩展到传输其他类型的数据的功能。
可使用通信信道来通过允许插件经由RDP连接传输数据来扩展RDP协议。存在许多这样的扩展。诸如打印机重定向、剪贴板重定向、端口重定向等特征使用通信信道技术。由此,除了输入和输出数据之外,可以有许多需要来传输数据的通信信道。因此,可能有传输输出数据的偶然请求和传输其他数据的一个或多个信道请求争用可用的网络带宽。
现在参考图3和4,所描绘的是被配置成实现虚拟机的计算机系统的高级框图。如图所示,计算机系统100可包括图1和2中所描述的元件,以及可用于实现虚拟机的组件。一个这样的组件是在本领域中也可被称为虚拟机监控程序的系统管理程序(hypervisor)202。所描绘的实施例中的系统管理程序202可被配置成控制并仲裁对计算机系统100的硬件的访问。广泛而言,系统管理程序202可以生成称为分区的执行环境,如子分区1到子分区N(其中N是大于或等于1的整数)。在各实施例中,子分区可被认为是系统管理程序202所支持的基本隔离单位,即,每一子分区可被映射到在系统管理程序202的控制下的一组硬件资源,例如存储器、设备、逻辑处理器周期等,和/或父分区,并且系统管理程序202可以隔离一个分区使其无法访问另一分区的资源。在各实施例中,系统管理程序202可以是独立软件产品,操作系统的一部分、被嵌入在主板的固件内、专门的集成电路,或其组合。
在以上示例中,计算机系统100包括父分区204,父分区在开源社区中也可被认为是域0。父分区204可被配置成通过使用虚拟化服务提供者228(VSP)来向在子分区1-N中执行的客操作系统提供资源,虚拟化服务提供者在开源社区中也被称为后端驱动程序。在此示例体系结构中,父分区204可以选通对底层硬件的访问。VSP 228可用于通过虚拟化服务客户端(VCS)来复用到硬件资源的接口,虚拟化服务客户端在开源社区中也被称为前端驱动程序。每一子分区可包括一个或多个虚拟处理器,例如客操作系统220到222可管理并调度线程在其上执行的虚拟处理器230到232。一般而言,虚拟处理器230到232是提供带有特定体系结构的物理处理器的表示的可执行指令和相关联状态信息。例如,一个虚拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。本例中的虚拟处理器可被映射到计算机系统的逻辑处理器,使得实现虚拟处理器的指令将受到逻辑处理器的支持。如此,在这些示例实施例中,多个虚拟处理器可以同时执行,而同时例如另一逻辑处理器正执行系统管理程序指令。一般而言,且如图所示,分区中的虚拟处理器、各种VCS以及存储器的组合可被认为是虚拟机,如虚拟机240或242。
一般而言,客操作系统220到222可包括诸如,例如,来自 开放源代码社区等等的操作系统之类的任何操作系统。客操作系统可包括用户/内核操作模式,并且可具有能包括调度器、存储器管理器等的内核。内核模式可包括逻辑处理器中的执行模式,该执行模式授予对至少特权处理器指令的访问。每一客操作系统220到222可具有相关联的文件系统,该文件系统上存储有诸如终端服务器、电子商务服务器、电子邮件服务器等应用以及客操作系统本身。客操作系统220-222可以调度线程来在虚拟处理器230-232上执行,并可以实现这样的应用程序的实例。
现在参考图4,所示是可用于实现虚拟机的替换体系结构。图4描绘了类似于图3的组件,但在该示例实施例中,系统管理程序202可包括虚拟化服务提供者228和设备驱动程序224,并且父分区204可包含配置实用程序236。在该体系结构中,系统管理程序202可执行与图2中的系统管理程序202相同或相似的功能。图4中的系统管理程序202可以是独立的软件产品、操作系统的一部分、被嵌入在主板的固件内,或者系统管理程序202的一部分可以由专用集成电路来实现。在该示例中,父分区204可具有可用于配置系统管理程序202的指令,然而,硬件访问请求可由系统管理程序202来处理而非传递到父分区204。
现在参考图5,计算机100可包括被配置成向连接的客户机提供远程桌面服务的电路。在一示例实施例中,所描绘的操作系统400可直接在硬件上执行,或者客操作系统220或222可以由诸如VM 216或VM 218等虚拟机来实现。底层硬件208、210、234、212和214在所示类型的虚线中指示以标识该硬件可被虚拟化。
远程服务可被提供给诸如客户机401等至少一个客户机(尽管描绘了一个客户机,但远程服务可被提供给更多客户机)。示例客户机401可包括由被配置成将用户输入定向到远程服务器会话并显示该会话生成的用户界面信息的硬件来实现的计算机终端。在另一实施例中,客户机401可以由一计算机来实现,该计算机包括与图1b的计算机100中的元件相似的元件。在该实施例中,客户端401可包括被配置为实现操作系统的电路以及被配置为模拟终端的功能(例如,可由一个或多个逻辑处理器102执行的远程桌面客户端应用)的电路。本领域技术人员能够理解,被配置为实现操作系统的电路也可以包括被配置为模拟终端的电路。
每一连接的客户机可具有允许该客户机访问存储在计算机100上的数据和应用的会话(如会话404)。一般而言,应用和某些操作系统组件可被加载到分配给会话的存储器区域中。由此,在某些情况下,某些OS组件可被派生N次(其中N表示当前会话数)。这些各种OS组件可向操作系统内核418请求服务,操作系统内核例如能够管理存储器;方便盘读/写;以及配置来自每一会话的线程来在逻辑处理器102上执行。可被加载到会话空间的某些示例子系统可包括生成桌面环境的子系统、跟踪桌面内的鼠标移动的子系统、将图标上的鼠标点击转换成实现程序实例的命令的子系统等等。实现这些服务,例如跟踪鼠标移动的进程用与该会话相关联的标识符来标记,并且被加载到分配给该会话的存储器区域中。
会话可以由例如进程等会话管理器416来生成。例如,会话管理器416可以通过如下方式来初始化和管理每一远程会话:为会话空间生成会话标识符;向会话空间分配存储器;以及在分配给会话空间的存储器中生成系统环境变量和子系统进程的实例。会话管理器416可在操作系统400接收到对远程桌面会话的请求时被调用。
连接请求可首先由例如远程桌面协议(RDP)栈等传输栈410来处理。传输栈410指令可配置逻辑处理器102来监听特定端口上的连接消息,并将这些消息转发到会话管理器416。当生成会话时,传输栈410可为每一会话实例化远程桌面协议栈实例。栈实例414是可为会话404生成的示例栈实例。一般而言,每一远程桌面协议栈实例可被配置成将输出路由到相关联的客户机,并将客户机输入路由到用于适当的远程会话的环境子系统444。
如图所示,在一实施例中,应用448(尽管示出了一个,但其他也可执行)可执行并生成位数组。数组可由图形接口446来处理,图形接口进而可渲染可被存储在存储器中的位图,如像素值数组。如图所示,可实例化远程显示子系统420,该子系统可捕捉渲染调用,并通过网络经由用于会话的栈实例414来将该调用发送给客户机401。
除了遥控图形和音频之外,也可实例化即插即用重定向器458以便遥控诸如打印机、mp3播放器、客户机文件系统、CD ROM驱动器等不同设备。即插即用重定向器458可从客户机侧组件接收信息,该信息标识了耦合到客户机401的外围设备。即插即用重定向器458然后可配置操作系统400来加载用于客户机401的外围设备的重定向设备驱动程序。重定向设备驱动程序可接收来自操作系统400的访问外围设备的调用,并通过网络将该调用发送到客户机401。
如上所讨论的,客户机可使用诸如远程桌面协议(RDP)等用于提供远程呈现服务的协议来连接到使用终端服务的资源。当远程桌面客户机经由终端服务器网关连接到终端服务器时,该网关可打开与终端服务器的套接字连接,并将客户机通信重定向到远程呈现端口或专用于远程访问服务的端口。网关还可使用通过HTTPS传送的终端服务器网关协议来执行与客户机的特定的网关专用交换。
转向图6,所描绘的是包括用于实现远程服务并合并本发明的各方面的电路的计算机系统100。如图所示,在一实施例中,计算机系统100可包括类似于图2和图5中所描绘的那些组件,并可实现远程呈现会话。在本发明的一个实施例中,远程呈现会话可包括控制台会话的各方面,例如使用计算机系统为用户派生的会话以及远程会话。类似于上述内容,会话管理器416可通过启用/禁用各组件以实现远程呈现会话来初始化并管理远程呈现会话。
可被加载到远程呈现会话中的一组组件是启用高保真遥控的控制台组件,即利用了3D硬件所渲染的3D图形和2D图形的组件。
3D硬件所渲染的3D/2D图形可使用驱动程序模型来访问,该驱动程序模型包括用户模式驱动程序522、API 520、图形内核524以及内核模式驱动程序530。应用448(或诸如用户界面等生成3D图形的任何其他进程)可生成API构造并将其发送到诸如来自微的Direct3D等应用编程接口520(API)。API 520进而可与用户模式驱动程序522通信,用户模式驱动程序522可生成在被表示为顶点和常量的计算机图形中使用的例如基本几何形状等图元,这些图元被用作用于其他形状的构件块,并将这些图元存储在例如存储器页等缓冲区中。在一个实施例中,应用448可以声明它将如何使用该缓冲区,例如它将在缓冲区中存储什么类型的数据。诸如视频游戏等应用可使用动态缓冲区来存储用于化身的图元,并可使用静态缓冲区来存储诸如表示建筑物或森林等将不常改变的数据。
继续驱动程序模型的描述,应用可用图元填充缓冲区并发出执行命令。当应用发出执行命令时,缓冲区可由内核模式驱动程序530追加到运行列表,并由图形内核调度器528来调度。例如应用或用户界面等每一图形源可具有一上下文及其自己的运行列表。图形内核524可被配置成调度各个上下文来在图形处理单元112上执行。GPU调度器528可由逻辑处理器102执行,并且调度器528可向内核模式驱动器530发出命令来渲染缓冲区的内容。栈实例414可被配置成接收命令并通过网络将缓冲区的内容发送到客户机401,在客户机401处,缓冲区可由客户机的GPU来处理。
现在所示的是结合调用远程呈现服务的应用所使用的虚拟化GPU的操作的示例。参考图6,在一实施例中,虚拟机会话可由计算机100生成。例如,会话管理器416可由逻辑处理器102执行并且可初始化包括特定远程组件的远程会话。在该示例中,所派生的会话可包括内核418、图形内核524、用户模式显示驱动程序522和内核模式显示驱动程序530。用户模式驱动程序522可生成可被存储在存储器中的图元。例如,API 520可包括可被展示给诸如用户界面等用于操作系统400或应用448的进程的接口。进程可向API 420发送高级API命令,如点列表(Point List)、线列表(Line List)、线带(Line Strip)、三角形列表(Triangle List)、三角形带(Triangle Strip)、或三角形扇(TriangleFan)。API 520可接收这些命令,并将其转换成用于用户模式驱动程序522的命令,用户模式驱动程序522然后可生成顶点并将其存储在一个或多个缓冲区中。GPU调度器528可运行并确定渲染缓冲区的内容。在该示例中,可捕捉对服务器的图形处理单元112的命令,并且可将缓冲区的内容(图元)经由网络接口卡114发送到客户机401。在一个实施例中,API可由各组件能与其接口的会话管理器416来展示,以确定虚拟GPU是否可用。
在一实施例中,诸如图3或图4的虚拟机240等虚拟机可被实例化,并且虚拟机可担当用于操作系统400的执行的平台。在本例中,客操作系统220可具体化操作系统400。虚拟机可在通过网络接收到连接请求时被实例化。例如,父分区204可包括传输栈410的实例,并且可被配置成接收连接请求。父分区204可响应于连接请求连同包括实现远程会话的能力的客操作系统一起初始化虚拟机。连接请求然后可被传递给客操作系统220的传输栈410。在本例中,每一远程会话可在由其自己的虚拟机执行的操作系统上实例化。
在一个实施例中,可实例化虚拟机,并且可执行具体化操作系统400的客操作系统220。类似于上述内容,虚拟机可在通过网络接收到连接请求时被实例化。远程会话可由操作系统生成。会话管理器416可被配置成确定该请求是针对支持3D图形渲染的会话的,并且会话管理器416可加载控制台会话。除了加载控制台会话之外,会话管理器416可为该会话加载栈实例414’并将系统配置成捕捉由用户模式显示驱动程序522生成的图元。
用户模式驱动程序522可生成可被捕捉并存储在传输栈410可访问的缓冲区中的图元。内核模式驱动程序530可将缓冲区追加到应用的运行列表,并且GPU调度器528可运行并确定何时对缓冲区发出渲染命令。当调度器528发出渲染命令时,该命令可由例如内核模式驱动程序530捕捉并经由栈实例414’发送到客户机401。
GPU调度器528可执行并确定发出渲染缓冲区的内容的指令。在本例中,与渲染指令相关联的图元可经由网络接口卡114发送到客户机401。
在一实施例中,至少一个内核模式进程可由至少一个逻辑处理器112执行,且至少一个逻辑处理器112可同步渲染存储在不同缓冲区中的顶点。例如,可类似于操作系统调度器来操作的图形处理调度器528可调度GPU操作。GPU调度器528可将单独的顶点缓冲区合并成正确的执行次序,使得客户机401的图形处理单元以允许它们被正确地渲染的次序来执行命令。
诸如视频游戏等进程的一个或多个线程可映射多个缓冲区且每一线程可发出绘制命令。顶点的标识信息、例如为每个缓冲区、每个顶点或缓冲区中的每批顶点生成的信息可以被发送给GPU调度器528。信息可与关联于来自相同的或其他进程并用于同步各个缓冲区的渲染的顶点的标识信息一起存储在表中。
诸如文字处理程序等应用可执行并声明例如两个缓冲区——一个用于存储用于生成3D菜单的顶点,而另一个存储用于生成将填充该菜单的字母的命令。应用可映射缓冲区,并发出绘制命令。GPU调度器528可确定执行两个缓冲区的次序,使得菜单与字母一起以看上去令人满意的方式来渲染。例如,其他进程可以在相同或基本相似的时间发出绘制命令,并且如果顶点不是同步的,则来自不同进程的不同线程的顶点可能在客户机401上异步地渲染,从而使得所显示的最终图像看上去是混乱或混杂的。
可使用批量压缩器450在将数据流发送到客户机401之前压缩图元。在一实施例中,批量压缩器450可以是栈实例414的用户模式(未示出)或内核模式组件,并且可被配置为在被发送到客户端401的数据流中查找相似的模式。在该实施例中,由于批量压缩器450从多个应用接收顶点流而不是接收多个API构造,因此批量压缩器450具有较大的顶点数据集来筛选,以便找到压缩机会。即,由于用于多个进程的顶点而非不同的API调用被遥控,因此存在批量压缩器450能在给定流中找到相似模式的更大机会。
在一实施例中,图形处理单元112可被配置成对存储器使用虚拟寻址而不是物理地址。由此,被用作缓冲区的存储器页可从视频存储器分页到系统RAM或盘。栈实例414’可被配置成获得缓冲区的虚拟地址,并在捕捉到来自图形内核528的渲染命令时发送来自该虚拟地址的内容。
可配置操作系统400,例如可加载各种子系统和驱动程序来捕捉原语并将其发送到诸如客户机401等远程计算机。类似于上述内容,会话管理器416可由逻辑处理器102执行并且包括特定远程组件的会话可被初始化。在该示例中,所派生的会话可包括内核418、图形内核524、用户模式显示驱动程序522和内核模式显示驱动程序530。
图形内核可调度GPU操作。GPU调度器528可将单独的顶点缓冲区合并成正确的执行次序,使得客户机401的图形处理单元以允许它们被正确地渲染的次序来执行命令。
用于实现上文所提及的分区的所有这些方案只是示例性实现,且此处没有任何东西应该解释为将本公开限制为任何特定虚拟化方面。
自适应网格生成
在虚拟桌面或远程呈现会话中,可在服务器处为每一用户渲染用户图形和视频。然后将得到的位图发送给客户机以供显示和交互。为了降低网络上的带宽要求,位图可在被发送给客户机之前进行压缩。期望该压缩技术是高效的而等待时间较短。
远程呈现系统可被配置来编码与解码位图及其他图形数据。编码系统可包括具有瓦块化模块的瓦块化系统,该瓦块化模块最初将源图像数据划分成数据瓦块。然后,帧差分模块可仅将经更改的数据瓦块输出到各个处理模块,这些处理模块将经更改的数据瓦块转换成相应的瓦块分量。量化器可根据可调量化参数来对瓦块分量执行压缩过程以生成压缩数据。然后,自适应熵编码器选择器可选择多个熵编码器中的一个来执行熵编码过程,由此产生已编码数据。熵编码器也可利用反馈回路来根据当前传输带宽特性来调整量化参数。此处所涉及的压缩、编码和解码图形数据的过程大致使用在共同转让的、名称为“SystemAnd Method For Effectively Encoding And Decoding Electronic Information(用于有效地编码和解码电子信息的系统和方法)”的美国专利7,460,725以及在2009年3月6日提交的名称为“Frame Capture,Encoding,And TransmissionManagement(帧捕捉、编码和传输管理)”的美国专利申请12/399302中所描述的一个或多个方法和系统,其通过整体引用合并于此。
在此处所公开的各个方法和系统中,可使用对于前述各个过程的处理和操作的改进来提供更高效的处理,并因此提供更为及时和丰富的用户体验。此处所公开的用于渲染、编码及传送图形数据的实施例可使用硬件和软件进程的各种组合来实现。在各个实施例中,各功能可完全用硬件、完全用软件、或使用硬件和软件进程的组合来执行。这些进程还可使用一个或多个CPU和/或诸如图形处理单元(GPU)或其他专用图形渲染设备等的一个或多个专用处理器来实现。
而且,尽管以下描述是在远程呈现系统的上下文中提供的,但可以理解可在其中图形数据被编码和压缩以供通过网络进行传递的任何类型的系统中实现所公开的实施例。
各个实施例可包括对离散小波变换(DWT)功能的使用,来将各瓦块的各个YUV分量变换成相应的YUV瓦块子带。量化器功能可通过利用适当的量化技术来执行量化过程以压缩瓦块子带。量化器功能可通过根据可由经由反馈回路从熵编码器接收到的自适应量化参数所指定的具体压缩比来降低瓦块的比特率,以产生压缩后的图像数据。
在一个实施例中,可向GPU提供位图,该位图具有需要被压缩的经改变的矩形。可将该位图进一步划分成逻辑瓦块,并且仅编码和压缩在该经改变的矩形内变化的瓦块。在这种方式中,该过程与在其中维护和显示得到的解码后图像的客户机协同作用,而有效地实现了高速缓存方案。
可采用远程呈现压缩算法来将显示流的带宽降低到通过局域网、广域网和低带宽网络进行传送所能接收的水平。这种算法通常在服务器侧的CPU时间与较低的期望带宽之间折衷。
可使用图像压缩器,该图像压缩器可采用称作熵编码器的级(phase)。熵编码器功能可执行熵编码过程来生成编码数据。在某些实施例中,熵编码过程还通过用适当的代码来替换从量化器接收到的压缩图像数据中的相应的位模式,来降低压缩图像数据的比特率。
可能产生的一个问题是在屏幕的各部分在诸如例如回放视频或动画的时候被频繁更新时提供高效的带宽使用。另一个问题是对具有不同更新速度的屏幕的各区域的跟踪。期望在此类情况下支持分级的编码,并因此降低带宽使用。例如,可将视频或动画回放嵌入到包含围绕视频的高分辨率内容(例如,文本)的窗口中。如果在窗口中包含两种内容的部分上执行分级的编码,则对于高质量的图像可能会得到较差的质量,因为即使高质量部分并不会像视频回放子部分一样频繁地更新,算法也会以同样的方式来对待两个区域。
图7示出了描绘了具有不同更新速率的屏幕的示例性图表。瓦块0,0(700)、0,1(705)、1,0(720)和1,1(725)包含不被频繁更新的纯文本。瓦块1,3(735)是被频繁更新的纯视频。瓦块0,2(720)、0,3(715)和1,2(735)是两者的混合。如果将混合瓦块当作“纯文本”来对待,则视频部分可能是高质量和静态的,即该瓦块不会与“纯视频”的瓦块一样频繁地更新。如果将混合瓦块当作“纯视频”来对待,并降低带宽以便发送数据,则该文本的质量将比文本瓦块低。
在执行位映射编码时,有效的位图高速缓存和内容分类能极大地提高远程呈现系统的性能。许多远程呈现协议使用诸如将图像区域分类成文本或图像并将瓦块高速缓存以优化网络性能的技术。一般而言,这些技术被应用到在固定瓦块网格上的屏幕中,这可导致如下缺点:
a)分类——某些瓦块包含图像和文本两者的混合
b)高速缓存——将网格的原点与屏幕对齐,因此各窗口的任何移动都可能在高速缓存中引起失配。
在如前所述的基于瓦块的一些方案中,一般使用起始于屏幕原点的固定网格。在位图高速缓存中,将瓦块存储在高速缓存中,并且当后续帧中的瓦块与先前被高速缓存的瓦块相同时,就可使用该被高速缓存的瓦块,这称作高速缓存命中(cache hit)。然而,如果用户屏幕被滚动或以其他方式关于屏幕原点移动,那么即使屏幕实质上并未改变,也可能不会标识高速缓存命中。
例如,参考图8,字母A被示为渲染在具有64x64个瓦块的屏幕帧上。使用具有固定原点(0,0)的固定网格。在第一帧850中,可为每一瓦块(例如,包含字母A的瓦块810和830)计算散列密钥。可为包括瓦块810和瓦块830的每一瓦块计算散列密钥。如果在下一帧中使用了与瓦块810具有相同散列的瓦块,则具有高速缓存命中的情形,并且可使用瓦块810的高速缓存瓦块,而非使用新编码的瓦块。然而,如果在第二帧860中屏幕仅被向上滚动了一个像素,并利用固定原点(0,0)来使用同样的固定网格方案,那么各瓦块的散列密钥可能会改变,并且即使该帧基本上类似于前一帧,也不会得到高速缓存命中。例如,在帧860中,字母A仍被瓦块810和830所包含,但是在帧860中的瓦块810和830的散列密钥与在帧850中的瓦块810和830的散列密钥不再匹配。
在远程呈现系统中可产生的另一个问题是可使用分类器来分析屏幕帧,以取决于瓦块的内容来确定一合适的编解码器来编码瓦块。当使用固定网格而不考虑帧的实际内容时,结果可能是某些瓦块包含文本和图像两者。作为结果,当瓦块具有混合内容时,分类器可至少为瓦块的部分选择次优的编码器。
在各个实施例中,公开了用于生成要在进行高速缓存和分类两者中使用的更适合的网格的方法和系统。这种网格可具有与诸如用户界面元素以及图像和文本之间的边界等屏幕内容对齐的属性。在一些实施例中,可使用分析屏幕并生成该屏幕的细分网格的算法,该细分网格可能会将该屏幕划分成将图像和文本内容基本上分开的区域。也能将该细分网格再进一步细分(即,瓦块化)成可更好地适合于进行高速缓存的区域。在其他实施例中,算法可使用来自窗口管理器的与窗口分层结构和用户界面元素布置有关的信息来产生网格。因此,可提供更能自适应的网格,该网格与屏幕帧的主要用户界面元素对齐。通过使用这种自适应网格,而非使用一般的固定网格,固定于屏幕窗口的可自适应网格可提供更多的原点,这些原点被对齐以允许与主屏幕区域相对齐的瓦块。
在一个实施例中,可自适应网格算法可以是用于提供与内容基本上匹配的网格的试探算法。在一说明性实施例中,用于实现可自适应网格算法的一种方法可包括接收屏幕帧以及计算边缘图。例如,可接收如图10所示的帧,以供进行编码及传送给客户机。用于确定边缘图的多种技术对于本领域的技术人员而言是已知的,并且可结合本发明来使用。可使用这种技术来确定图像中的诸如窗口图像和用户界面元素的边等锐边的位置。边缘图可包括二进制图像,其中1表示边。例如,图11描绘了基于图10中描绘的屏幕帧的一个可能的边缘图。然后可使用这种边缘图来计算网格。
在一个实施例中,可自适应网格可按如下方法来确定。第一,在边缘图中搜索长边。可使用预定阈值来作为寻找长边的准则。然后算法可搜索在长水平边和长垂直边之间的角或交点。在一实施例中,算法可通过使用预定约束或容差来考虑实际上可能并没有相交的虚拟角。例如,水平边和垂直边可能会创建具有较小间隙的角,诸如圆角或有隙角。然而,在该算法中并不会忽略这种“相交”。
在确定了角以后,结果是现在用水平边和垂直边以及所确定的角来将屏幕划分成多个矩形区域。可使用由各个角所定义的区域来进一步细分屏幕,先水平地划分,然后垂直地划分,使得一个空间变成了四个空间。例如,参考图9,屏幕900可基于边缘图发现过程来确定锚点910和920。可使用水平划分922和垂直划分924来细分屏幕。可使用在所创建的四个细分940中的一个内的另一锚点930来进一步细分该细分。在一实施例中,可使用树结构来细分空间。例如,可使用二分空间划分(BSP)来递归地将屏幕细分成凸集。该细分导致使用称为BSP树的树数据结构的屏幕表示。然而,在本发明的范围以内可使用其他划分方法。继续讨论算法,如果有另一个角,则算法可定义该角所在的空间,并且仅细分某些空间。
通过使用上述过程,可确定网格,该网格与外部的窗口对齐,而图像在这些窗口的内部。图12示出了使用以上算法用图10中描绘的屏幕帧来确定的示例性网格。
对第一个角的选择可影响算法的输出。因此,算法可基于边的长度来对各角区分优先级。例如,如果长边相交而创建了一个角,则该角因此被加权。
除了使用角以外,可使用附加的边来作进一步的细分。例如,可使用比预定值长的N条最长的边。例如,可选择并使用比N长的水平非相交边来作为细分点。在一实施例中,可将两个端点用作垂直划分,并可将边的中心点用作水平划分。通过使用这种方案,可计算对应于在许多远程呈现场景中使用的典型窗口的更为有效的网格。作为一示例,参考图9,在屏幕950中,可将比阈值N长的长水平和非相交边980包括在边缘图中。可基于非相交边980的端点来形成垂直划分990,并且可从非相交边980的中心点来确定垂直划分995。
可将用于使用交点和最长边来细分屏幕的各开始点称作锚。在其他实施例中,可将其他屏幕元素用作锚。例如,作为替换或除该算法方法以外,可使用屏幕的窗口的结构的具体知识。例如,底层操作系统可能能够提供关于屏幕上对象的几何形状的具体信息。这种信息可响应于来自远程呈现系统的查询而提供。可使用该信息来扩充前述的算法,或替代该算法。
以下提供了一个算法的说明性示例,该算法结合了前面所述的各个方面中的一些:
对于被更新的屏幕区域:
a.基于像素的LUMA值来计算基于Sobel的边缘图。Sobel算子是计算图像强度功能的梯度的近似值的离散差分算子。结果指示图像在某点处的变化有多陡峭或平滑。LUMA表示图像中的亮度。
b.寻找长度比阈值KRunLength长的水平边
b.寻找长度比阈值KRunLength长的垂直边
d.计算长度在容差KDelta之内的这些水平和垂直边的交点
e.对交点排序,以更偏爱由更长的边所形成的那些点
f.使用四叉树划分方案来在每个交点处细分屏幕。使用准则来避免创建(面积和/或长度)小于KArea的细分
g.选择KTop最长水平边,并基于这些边点和中心点来进一步增加屏幕的细分
h.走查得到的树以产生屏幕的划分网格
i.将该网格用作以下两者的基础:在哪里施加图像分类和在哪里用作瓦块化屏幕以进行高速缓存的原点。
图13描绘了用于处理要传送到远程计算设备的图形数据的示例性操作过程,该过程包括操作1300、1302、1304、1306和1308。参考图13,操作1300启动该操作过程,并且操作1302示出了接收表示要传送到远程计算设备的客户机屏幕的图形数据。操作1304示出了确定图形数据中的锚点,其中锚点指示客户机屏幕的各可视元素之间的过渡。操作1306示出了基于锚点,确定用于细分客户机屏幕的网格,其中所述网格与所述客户机屏幕的用户界面元素以及图像和文本之间的边界基本上对齐。操作1308示出了基于网格,将图形数据划分成数据瓦块,并处理所述数据瓦块以供传送到远程计算设备。在一些实施例中,该过程包括接收描述窗口分层结构和用户界面元素布置的信息,其中锚点是基于该接收到的信息的。
图14描绘了用于按如上所述来处理要传送到远程计算设备的图形数据的示例性系统。参考图14,系统1400包括处理器1410和存储器1420。存储器1420进一步包括配置来处理要传送到多个客户计算机的图形数据的计算机指令。框1422示出了接收表示要传送到远程计算设备的客户机屏幕的图形数据。框1424示出了计算所述图形数据的边缘图。框1426示出了标识长度比预定阈值长的水平和垂直边。框1428示出了计算长度在预定容差之内的水平和垂直边的交点。框1430示出了基于交点,确定用于细分客户机屏幕的网格,其中所述网格与所述客户机屏幕的用户界面元素以及图像和文本之间的边界基本上对齐。框1432示出了基于网格,将图形数据划分成数据瓦块。
上文所提及的方面中的任何一个方面都可以以方法、系统、计算机可读介质或任何类型的产品来实现。例如,计算机可读介质可在其上存储用于处理要传送到客户计算机的图形数据的计算机可执行指令。这种介质可包括用于接收表示要传送到远程计算设备的客户机屏幕的图形数据的第一指令子集;用于确定所述图形数据中的锚点的第二指令子集,其中所述锚点指示所述客户机屏幕的各可视元素之间的过渡;用于基于所述锚点,确定用于细分所述客户机屏幕的网格的第三指令子集,其中所述网格与所述客户机屏幕的用户界面元素以及图像和文本之间的边界基本上对齐;以及,用于基于所述网格,将所述图形数据划分成数据瓦块,并处理所述数据瓦块以供传送到所述远程计算设备的第四指令子集。本领域技术人员可以理解,可以使用附加指令集来捕捉此处所公开的各其他方面,且根据本发明,四个目前所公开的指令子集可以在细节方面不同。
前述的详细描述通过示例和/或操作图阐述了系统和/或进程的各实施例。在这样的框图和/或示例包含一个或多个功能和/或操作的范围内,本领域技术人员将理解,这样的框图,或示例内的每一功能和/或操作可以分别地和/或共同地通过范围广泛的硬件、软件、固件或几乎其任何组合来实现。
应该理解,此处所描述的各种技术可以结合硬件或软件或,在适当的情况下,结合两者的组合来实现。因此,本发明的方法和装置或其某些方面或部分,可以采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、可由处理器读取的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备,以及至少一个输出设备。一个或多个程序可以例如,通过使用API、可重用控件等来实现或利用结合本发明描述的过程。这样的程序优选地以高级别过程或面向对象编程语言来实现,以与计算机系统进行通信。然而,若有需要,程序也可以以以汇编或机器语言来实现。在任一情况下,语言都可以是编译的或解释的语言,并与硬件实现相结合。
尽管具体地参考其优选实施例来示出并描述了本发明,但本领域的技术人员可以理解,可以作出形式和细节上的各种改变而不脱离所附权利要求书中所述的本发明的范围。此外,尽管本发明的各元素可以用单数来描述或要求保护,但构想了复数,除非明确地规定了限于单数。
Claims (10)
1.一种用于处理要传送到远程计算设备(401)的图形数据的方法,所述方法包括:
接收表示要传送到所述远程计算设备(401)的客户机屏幕的图形数据(1302);
确定所述图形数据中的锚点(1304),其中所述锚点指示所述客户机屏幕的各可视元素之间的过渡;
基于所述锚点,确定用于细分所述客户机屏幕的网格(1306),其中所述网格与所述客户机屏幕的用户界面元素以及图像和文本之间的边界基本上对齐;
基于所述网格,将所述图形数据划分成数据瓦块(1308),并处理所述数据瓦块以供传送到所述远程计算设备。
2.如权利要求1所述的方法,其特征在于,还包括接收描述窗口分层结构和用户界面元素布置的信息,其中所述锚点是基于该接收到的信息的。
3.如权利要求1所述的方法,其特征在于,所述确定进一步包括:
基于所述图形数据中的像素LUMA值来计算基于sobel的边缘图;以及
标识长度比预定阈值长的水平和垂直边。
4.如权利要求3所述的方法,其特征在于,还包括计算长度在预定容差之内的所述水平和垂直边的交点。
5.如权利要求4所述的方法,其特征在于,还包括根据由较长的边所形成的交点来对所述交点排序。
6.如权利要求5所述的方法,其特征在于,所述划分包括使用基于树的划分方案来在所述交点的每一个处划分所述客户机屏幕。
7.如权利要求6所述的方法,其特征在于,使用预定义准则来避免创建小于最小面积或长度的划分。
8.如权利要求7所述的方法,其特征在于,还包括选择预定数量的最长水平边,并基于所述预定数量的最长水平边的边点和中心点来细分所述客户机屏幕。
9.一种用于处理要传送到远程计算设备(401)的图形数据的系统(1400),包括:
包括至少一个处理器的计算设备;
在所述系统运行时通信地耦合到所述处理器的存储器,所述存储器具有存储于其中的计算机指令,所述计算机指令在由所述至少一个处理器执行时,使得:
接收表示要传送到所述远程计算设备(401)的客户机屏幕的图形数据(1422);
计算所述图形数据的边缘图(1424);
标识长度比预定阈值长的水平和垂直边(1426);
计算长度在预定容差之内的所述水平和垂直边的交点(1428);
基于所述交点,确定用于细分所述客户机屏幕的网格(1430),其中所述网格与所述客户机屏幕的用户界面元素以及图像和文本之间的边界基本上对齐;
基于所述网格,将所述图形数据划分成数据瓦块(1432)。
10.一种其上存储有计算机可执行指令的计算机可读存储介质,所述计算机可执行指令用于处理要传送到客户计算机(401)的图形数据,所述指令用于:
接收表示要传送到所述远程计算设备的客户机屏幕的图形数据(1302);
确定所述图形数据中的锚点(1304),其中所述锚点指示所述客户机屏幕的各可视元素之间的过渡;
基于所述锚点,确定用于细分所述客户机屏幕的网格(1306),其中所述网格与所述客户机屏幕的用户界面元素以及图像和文本之间的边界基本上对齐;
基于所述网格,将所述图形数据划分成数据瓦块(1308),并处理所述数据瓦块以供传送到所述远程计算设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/873,769 | 2010-09-01 | ||
US12/873,769 US8760453B2 (en) | 2010-09-01 | 2010-09-01 | Adaptive grid generation for improved caching and image classification |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102447901A true CN102447901A (zh) | 2012-05-09 |
CN102447901B CN102447901B (zh) | 2014-08-20 |
Family
ID=45696572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110266495.9A Active CN102447901B (zh) | 2010-09-01 | 2011-08-31 | 用于处理要传送到远程计算设备的图形数据的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8760453B2 (zh) |
CN (1) | CN102447901B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050704A (zh) * | 2013-03-14 | 2014-09-17 | 辉达公司 | 用于可变分辨率渲染的一致性顶点捕捉 |
CN105303620A (zh) * | 2015-12-07 | 2016-02-03 | 杭州电子科技大学 | 一种基于顶点编码的三角网格细分曲面存取方法 |
CN107680045A (zh) * | 2017-10-13 | 2018-02-09 | 广州酷狗计算机科技有限公司 | 图片伸缩方法和装置 |
CN108074284A (zh) * | 2016-11-10 | 2018-05-25 | 奥多比公司 | 使用多个输入网格生成有效的风格化的网格形变 |
CN109661671A (zh) * | 2016-06-06 | 2019-04-19 | 线性代数技术有限公司 | 使用边界位图对图像分类的改善 |
CN113849312A (zh) * | 2021-09-29 | 2021-12-28 | 北京百度网讯科技有限公司 | 数据处理任务的分配方法、装置、电子设备及存储介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9110626B2 (en) | 2012-02-14 | 2015-08-18 | Microsoft Technology Licensing, Llc | Video detection in remote desktop protocols |
US9654753B1 (en) * | 2015-09-01 | 2017-05-16 | Amazon Technologies, Inc. | Video stream processing |
CA3011993C (en) | 2016-01-21 | 2024-05-14 | Cala Health, Inc. | Systems, methods and devices for peripheral neuromodulation for treating diseases related to overactive bladder |
US10552585B2 (en) * | 2016-12-14 | 2020-02-04 | Microsoft Technology Licensing, Llc | Encoding optimization for obfuscated media |
EP3740274A4 (en) | 2018-01-17 | 2021-10-27 | Cala Health, Inc. | SYSTEMS AND METHODS FOR TREATING INFLAMMATORY INTESTINAL DISEASE USING PERIPHERAL NERVE STIMULATION |
US11890468B1 (en) | 2019-10-03 | 2024-02-06 | Cala Health, Inc. | Neurostimulation systems with event pattern detection and classification |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1439154A (zh) * | 2000-04-10 | 2003-08-27 | 微软公司 | 文本字符的词干位置的自动优化 |
CN1677343A (zh) * | 2004-03-31 | 2005-10-05 | 微软公司 | 网格画布 |
CN101071514A (zh) * | 2006-05-12 | 2007-11-14 | 中国科学院自动化研究所 | 一种直接传递三维模型姿态的方法 |
EP1439485B1 (en) * | 2002-11-22 | 2007-11-14 | Océ-Technologies B.V. | Segmenting a composite image via basic rectangles |
CN101192138A (zh) * | 2006-11-28 | 2008-06-04 | 国际商业机器公司 | 用于产生图像数据的方法和装置 |
CN101650824A (zh) * | 2009-09-23 | 2010-02-17 | 清华大学 | 基于共形能量的内容敏感图像缩放方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6754396B1 (en) * | 1999-02-22 | 2004-06-22 | Autodesk, Inc. | Method of processing of a single raster element of a skeletonized binary image through the use of tiles |
US7093192B2 (en) | 1999-07-30 | 2006-08-15 | Microsoft Corporation | Establishing and displaying dynamic grids |
US6748111B1 (en) * | 1999-12-02 | 2004-06-08 | Adobe Systems Incorporated | Recognizing text in a multicolor image |
US6898323B2 (en) * | 2001-02-15 | 2005-05-24 | Ricoh Company, Ltd. | Memory usage scheme for performing wavelet processing |
US7274380B2 (en) * | 2001-10-04 | 2007-09-25 | Siemens Corporate Research, Inc. | Augmented reality system |
US7024039B2 (en) * | 2002-04-25 | 2006-04-04 | Microsoft Corporation | Block retouching |
JP4390523B2 (ja) * | 2002-11-22 | 2009-12-24 | オセ−テクノロジーズ・ベー・ヴエー | 最小領域による合成画像の分割 |
US20050062988A1 (en) | 2003-02-14 | 2005-03-24 | Schultz Karl R. | Using a removable grid for alignment and trim adjustments for printing jobs |
US7246311B2 (en) | 2003-07-17 | 2007-07-17 | Microsoft Corporation | System and methods for facilitating adaptive grid-based document layout |
US20050022135A1 (en) | 2003-07-23 | 2005-01-27 | De Waal Abraham B. | Systems and methods for window alignment grids |
US20050068290A1 (en) | 2003-09-28 | 2005-03-31 | Denny Jaeger | Method for creating and using user-friendly grids |
US7657830B2 (en) | 2005-05-04 | 2010-02-02 | Microsoft Corporation | Layout size sharing in a grid layout for a user interface |
JP4544028B2 (ja) * | 2005-05-13 | 2010-09-15 | 日産自動車株式会社 | 車載画像処理装置、および画像処理方法 |
WO2007097353A1 (ja) * | 2006-02-22 | 2007-08-30 | Fujitsu Ten Limited | 表示装置及び表示方法 |
JP2007318694A (ja) * | 2006-05-29 | 2007-12-06 | Canon Inc | 画像処理方法、画像処理装置 |
US7925100B2 (en) * | 2007-07-31 | 2011-04-12 | Microsoft Corporation | Tiled packaging of vector image data |
US20090106648A1 (en) | 2007-10-19 | 2009-04-23 | Microsoft Corporation | Positioning content using a grid |
EP2277307A2 (en) * | 2008-04-16 | 2011-01-26 | Emil Stefanov Dotchevski | Interactive display recognition devices and related methods and systems for implementation thereof |
-
2010
- 2010-09-01 US US12/873,769 patent/US8760453B2/en active Active
-
2011
- 2011-08-31 CN CN201110266495.9A patent/CN102447901B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1439154A (zh) * | 2000-04-10 | 2003-08-27 | 微软公司 | 文本字符的词干位置的自动优化 |
EP1439485B1 (en) * | 2002-11-22 | 2007-11-14 | Océ-Technologies B.V. | Segmenting a composite image via basic rectangles |
CN1677343A (zh) * | 2004-03-31 | 2005-10-05 | 微软公司 | 网格画布 |
CN101071514A (zh) * | 2006-05-12 | 2007-11-14 | 中国科学院自动化研究所 | 一种直接传递三维模型姿态的方法 |
CN101192138A (zh) * | 2006-11-28 | 2008-06-04 | 国际商业机器公司 | 用于产生图像数据的方法和装置 |
CN101650824A (zh) * | 2009-09-23 | 2010-02-17 | 清华大学 | 基于共形能量的内容敏感图像缩放方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050704A (zh) * | 2013-03-14 | 2014-09-17 | 辉达公司 | 用于可变分辨率渲染的一致性顶点捕捉 |
CN105303620A (zh) * | 2015-12-07 | 2016-02-03 | 杭州电子科技大学 | 一种基于顶点编码的三角网格细分曲面存取方法 |
CN109661671A (zh) * | 2016-06-06 | 2019-04-19 | 线性代数技术有限公司 | 使用边界位图对图像分类的改善 |
CN109661671B (zh) * | 2016-06-06 | 2023-10-10 | 莫维迪乌斯有限公司 | 使用边界位图对图像分类的改善 |
CN108074284A (zh) * | 2016-11-10 | 2018-05-25 | 奥多比公司 | 使用多个输入网格生成有效的风格化的网格形变 |
CN108074284B (zh) * | 2016-11-10 | 2023-10-13 | 奥多比公司 | 使用多个输入网格生成有效的风格化的网格形变 |
CN107680045A (zh) * | 2017-10-13 | 2018-02-09 | 广州酷狗计算机科技有限公司 | 图片伸缩方法和装置 |
CN113849312A (zh) * | 2021-09-29 | 2021-12-28 | 北京百度网讯科技有限公司 | 数据处理任务的分配方法、装置、电子设备及存储介质 |
CN113849312B (zh) * | 2021-09-29 | 2023-05-16 | 北京百度网讯科技有限公司 | 数据处理任务的分配方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20120050298A1 (en) | 2012-03-01 |
US8760453B2 (en) | 2014-06-24 |
CN102447901B (zh) | 2014-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102447901B (zh) | 用于处理要传送到远程计算设备的图形数据的方法和系统 | |
US7667704B2 (en) | System for efficient remote projection of rich interactive user interfaces | |
EP2344957B1 (en) | Remote computing platforms providing high-fidelity display and interactivity for clients | |
CN1856819B (zh) | 通过分布式应用程序的图形数据的网络传输的系统和方法 | |
CN101918921B (zh) | 用于远程提供三维图形的方法和系统 | |
US9146884B2 (en) | Push pull adaptive capture | |
US8253732B2 (en) | Method and system for remote visualization client acceleration | |
US8351716B2 (en) | Efficient encoding of alternative graphic sets | |
CN102523443A (zh) | 用于图像压缩的熵编码器 | |
US9235452B2 (en) | Graphics remoting using augmentation data | |
EP2464093B1 (en) | Image file generation device, image processing device, image file generation method, and image processing method | |
CN102375687A (zh) | 在无线显示表面上显示计算机桌面 | |
EP3311565B1 (en) | Low latency application streaming using temporal frame transformation | |
CN102239483B (zh) | 命令遥控 | |
CN113244614B (zh) | 图像画面展示方法、装置、设备及存储介质 | |
CN102707986A (zh) | 子分区与父分区之间的共享存储器 | |
Chen et al. | Data distribution strategies for high-resolution displays | |
CN102378976B (zh) | 使用多个处理器的图像压缩加速 | |
JP2012014640A (ja) | 画面出力装置、画面出力システム、および画面出力方法 | |
CN109587546A (zh) | 视频处理方法、装置、电子设备和计算机可读介质 | |
CN102932324A (zh) | 支持降低的网络带宽使用的跨帧渐进损坏 | |
CN102196033A (zh) | 远程内容分类以及使用多个传输信道的传输 | |
CN103716318A (zh) | 云计算环境中通过混合使用rfb和h.264编码提高虚拟桌面显示质量的方法 | |
WO2005122096A1 (en) | Displaying graphical textures | |
Naef et al. | Multimedia integration into the blue-c api |
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: 20150429 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150429 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |