用于在远程会话显示中嵌入数据的系统和方法与流程

文档序号:22243217发布日期:2020-09-15 19:58阅读:155来源:国知局
用于在远程会话显示中嵌入数据的系统和方法与流程

本申请总体上涉及在远程会话显示中嵌入数据。特别地,本申请涉及用于在与远程会话显示相关联的动态图像的稳定区域中嵌入不可见数据以防止从动态图像未授权地获取信息的系统和方法。



背景技术:

越来越多的人在个人和商业环境中出于多种目的使用移动设备。这些设备经常被个人用来发送和接收电子邮件、管理约定、共享媒体文件、消费媒体内容、和执行过多的其它活动,有时是从远程或不寻常的位置。随着这些设备继续普及并提供越来越多的商业应用,企业移动应用正在向员工提供从他们的移动设备访问联网的企业应用的手段。随着基于云的应用和设备的出现,用户能够跨多个不同设备访问他们的电子邮件、文档和其它移动应用。

当移动用户花时间在公共场所时,他们通过在其移动设备上频繁查看电子邮件、笔记、打开敏感文档来访问敏感内容。在公共场所创建和阅读文档的移动用户在他们的移动设备上访问各种机密和安全的内容。此外,虚拟技术可以提供跨公共或专用网络对计算机资源和/或企业应用的远程访问。用户可以使用各种客户端来访问虚拟桌面或在虚拟环境中的主机计算机上运行的应用。当前,如果移动设备和/或虚拟环境中的远程设备上的安全内容的这种消费者公开访问安全内容,则由于安全内容可能以普通视图显示和/或可能在用户的移动设备上回放,因此他们有将这种内容暴露给公众的风险。当用户在公共环境中访问这样的安全内容时,任何旁观者都可能看到和/或听到该安全内容。当接近移动设备的人在公众中拍摄在用户的移动设备或远程设备上访问的机密内容的照片、视频和/或音频记录时,这种机密内容甚至可能在移动用户不知道的情况下被窃取。

在其它环境中也会出现类似的安全和隐私问题。例如,自动柜员机(atm)是方便利用的,但是为了便于使用,通常atm被放置在显眼的位置。所选择的公共场所的显眼性质可有助于容易看到,当用户将其atm卡插入atm并随后键入个人标识号(pin)时,这可允许未经授权的观看者获得atm用户的机密信息。

在用户界面上显示的图像中嵌入可识别数据(如数字水印)可能有助于缓解上述问题。可以修改该图像,使得嵌入的数据对于用户来说是不可感知的或几乎不可察觉的,但是可以通过自动检测过程来检测。然后可以作出安排,使得原始图像或数据文件的任何未经授权的访问或复制都存在所提取的数据暴露出文件缺乏法律所有权的风险。

可以通过各种方法将数据嵌入到图像中。一种这样的方法包括将数据嵌入或隐藏到指示图像的每个像素值的位信息的最低有效位中,即,将数据隐藏在数据样本的最低阶位中(例如,对于每像素图像8位,区域i包括7个最高有效位,区域ii包括最低有效位)。虽然这样的过程是简单且快速的,但它易受对图形图像执行的简单修改的影响,例如调整大小、颜色方案调整、图像压缩等。另一种方法是在图像的频域表示中嵌入或隐藏数据,其中频域表示可以通过对图像的空间域表示执行数学变换(例如,2d快速傅立叶变换“fft”)来获得。然而,这种方法在计算上是昂贵的,并且通常仅用于在静态图像中嵌入数据。使用这种方法实时地在动态图像的每个屏幕帧上嵌入数据(特别是在虚拟环境中向远程设备发送图像数据时)是不现实的,原因是所导致的性能损失。



技术实现要素:

实现用于在远程会话显示的动态图像中嵌入数据的系统和方法。该方法可以包括,由处理器:接收与所述动态图像相关联的显示帧;接收在所述显示帧中待嵌入的数据;识别出所述显示帧中的一个或多个稳定区域;在识别出所述一个或多个稳定区域后,更新高速缓存;在所述高速缓存中识别出与所述显示帧相对应的最大稳定区域;以及将所述待嵌入的数据嵌入在所述最大稳定区域中,以创建包括嵌入数据的区域。所述高速缓存包括对应于与所述动态图像相关联的一个或多个显示帧的多个稳定区域。

在一些情况下,所述方法还可以包括通过用所述包括嵌入数据的区域替换所述显示帧中对应于所述最大稳定区域的区来构成合成帧。在一些情况下,所述方法可以进一步包括在执行嵌入之前对所述待嵌入的数据进行加密。

在一些情况下,所述方法还可以包括,在将所述待嵌入的数据嵌入在所述最大稳定区域中之前,确定所述最大稳定区域是否已经包括所述待嵌入的数据,并且只有当所述最大稳定区域不包括所述待嵌入的数据时,才执行所述嵌入。

在一种或多种情况下,所述方法可以包括在将所述待嵌入的数据嵌入在所述最大稳定区域中之前,确定所述最大稳定区域的大小是否小于阈值大小,并且仅当所述最大稳定区域的所述大小不小于阈值大小时,才在所述最大稳定区域中执行所述嵌入。所述阈值大小可以等于所述待嵌入的数据的长度的四倍。在一些情况下,所述方法可以包括,响应于确定所述最大稳定区域的所述大小小于所述阈值大小,使用最低有效位算法将所述待嵌入的数据嵌入在所述显示帧中。可选地,在所述最大稳定区域中执行所述嵌入可以包括:对所述最大稳定区域执行变换函数,以创建所述最大稳定区域的频域表示;创建空位图;将所述待嵌入的数据嵌入在所述空位图中,以创建包括嵌入数据的位图;用所述包括嵌入数据的位图替换所述最大稳定区域的所述频域表示的一部分,以创建修改的频域表示;以及对所述修改的频域表示执行逆变换函数。所述变换函数可以是快速傅立叶变换(fft),并且所述逆变换函数是逆fft。在一些情况下,用所述包括嵌入数据的位图替换所述最大稳定区域的所述频域表示的所述一部分可以包括替换所述最大稳定区域的所述频域表示的右下角部分。创建所述空位图可以包括创建像素高度为所述最大稳定区域的像素高度的一半并且像素长度为所述最大稳定区域的像素长度的一半的所述空位图。

在一种或多种情况下,所述方法可以包括将标识符包括在所述包括嵌入数据的区域中,并且在所述高速缓存中用所述包括嵌入数据的区域替换所述最大稳定区域。

在一些情况下,识别出所述显示帧中的所述一个或多个稳定区域可以包括将所述显示帧和与所述动态图像相关联的至少一个先前显示帧进行比较。

附图说明

将参照附图描述实施例,其中在所有附图中相同的附图标表示相同项。

图1示出可以根据本文描述的一个或多个说明性方面使用的示例性计算机系统架构。

图2示出可以根据本文描述的一个或多个说明性方面使用的示例性远程接入系统架构。

图3示出根据本文描述的一个或多个说明性方面的计算设备的示例性架构的框图。

图4示出根据本文描述的一个或多个说明性方面的用于在远程会话显示中嵌入数据的示例性系统。

图5示出根据本文描述的一个或多个说明性方面的示例性动态图像。

图6是示出根据本文描述的一个或多个说明性方面的用于在远程会话显示中嵌入数据的示例性方法的流程图。

图7示出根据本文描述的一个或多个说明性方面的在一段时间内与远程会话显示中的图像相对应的示例性显示帧。

图8是示出根据本文描述的一个或多个说明性方面的用于在帧的最大稳定区域中嵌入数据的示例性方法的流程图。

图9是示出根据本文描述的一个或多个说明性方面的用于在帧的最大稳定区域中嵌入数据的示例性方法的示意图。

具体实施方式

将容易理解,如本文中一般描述的和在附图中示出的实施例的组件可以以各种不同的配置来布置和设计。因此,如附图中所表示的,以下对各种实施例的更详细描述并非旨在限制本公开的范围,而是仅代表各种实施例。虽然在附图中呈现了实施例的各个方面,但是除非特别指出,否则附图不一定按比例绘制。

在不脱离本发明的精神或本质特征的情况下,本发明可以以其他具体形式实施。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求来指示,而不是由该详细描述来指示。在权利要求的等同物的含义和范围内的所有改变都包括在其范围内。

本说明书通篇对特征、优点或类似语言的引用并不意味着可以通过本发明实现的所有特征和优点应当是或处于本发明的任何单个实施例中。相反,涉及特征和优点的语言被理解为意味着结合实施例描述的特定特征、优点或特性被包括在本发明的至少一个实施例中。因此,贯穿说明书的特征和优点以及类似语言的讨论可以但不一定涉及相同的实施例。

此外,所描述的本发明的特征、优点和特性可以以任何合适的方式组合在一个或多个实施例中。根据本文的描述,相关领域的技术人员将认识到,可以在没有特定实施例的一个或多个特定特征或优点的情况下实践本发明。在其它实例中,某些实施例中可认识到的额外特征和优点可能不存在于本发明的所有实施例中。

本说明书通篇引用“一个实施例”、“实施例”或类似语言意味着结合所示出的实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,贯穿本说明书的短语“在一个实施例中”、“在实施例中”和类似语言可以但不一定都指相同的实施例。

除非上下文另有明确规定,否则本文中使用的单数形式“一”、“一个”和“该”包括复数引用。除非另有定义,否则本文中使用的所有技术和科学术语的含义与本领域普通技术人员通常理解的含义相同。如在本文件中所使用的,术语“包括”是指“包括但不限于”。

如本文中所使用的,“动态图像”是指在图形环境或空间(例如,与用户界面相关联的显示器)上显示的图像,该图像根据参数(例如但不限于用户交互、应用执行等)而随时间变化。可以使用一系列“显示帧”(或“帧”)来生成动态图像,其中每个后续显示帧(an)的某些区域(“瞬态区域”)可以不同于在其之前的显示帧(an-i)的那些区域,而某些区域(“稳定区域”)与显示帧an-i的那些区域相同。

现在参照图1,示出了示例性系统架构的示意性框图,其中本文所述的实施例可以在独立和/或联网环境中实现。计算机软件、硬件和网络可以在各种不同的系统环境中使用,包括单机、联网、远程接入(aka,远程桌面)、虚拟化和/或基于云的环境等。

如图1中所示,各种网络节点(或设备)103、105、107和109可以经由诸如因特网等广域网(wan)101互连。也可以或替代地使用其它网络,包括专用内联网、公司网络、lan、城域网(man)无线网络、个人网络(pan)等。网络101是为了说明的目的,并且可以用更少或附加的计算机网络来替换。局域网(lan)可以具有任何已知的lan拓扑中的一个或多个,并且可以使用诸如以太网等各种不同协议中的一种或多种。设备103、105、107、109和其它设备(未示出)可以经由双绞线导线、同轴电缆、光纤、无线电波或其它通信介质连接到一个或多个网络。

本文中使用的和附图中所示的术语“网络”不仅指远程存储设备通过一个或多个通信路径耦合在一起的系统,还指可以不时地耦合到具有存储能力的这种系统的独立设备。因此,术语“网络”不仅包括“物理网络”而且包括“内容网络”,其由驻留在所有物理网络上的可归属于单个实体的数据组成。

组件可以包括数据服务器103、web服务器105和客户端计算机107、109。数据服务器103提供对数据库和控制软件的全局访问、控制和管理,用于执行本文中描述的一个或多个说明性方面。数据服务器103可以连接到web服务器105,用户通过该web服务器与所请求的数据交互并获得该数据。数据服务器103可以是通过网络101连接到web服务器105以及客户端计算机107和109的移动设备。可替代地,数据服务器103本身可以充当web服务器并且直接连接到因特网。数据服务器103可以通过网络101(例如,因特网)、经由直接或间接连接、或经由某一其它网络连接到web服务器105。用户可以使用远程计算机107、109与数据服务器103交互,例如,使用web浏览器经由web服务器105主存的一个或多个对外暴露的web站点连接到数据服务器103。客户端计算机107、109可以与数据服务器103配合使用以访问存储在其中的数据,或者可以用于其它目的。例如,如本领域中已知的,用户可以使用因特网浏览器从客户端设备107访问web服务器105,或者通过执行在计算机网络(如因特网)上与web服务器105和/或数据服务器103通信的软件应用来访问。

服务器和应用可以组合在同一物理机器上,并且保留单独的虚拟地址或逻辑地址,也可以驻留在分开的物理机器上。图1仅示出了可以使用的网络架构的一个示例,并且本领域技术人员将理解,所使用的特定网络架构和数据处理设备可以变化,并且对于它们提供的功能而言是次要的,如本文进一步描述的。例如,由web服务器105和数据服务器103提供的服务可以组合在单个服务器上。

每个组件103、105、107、109可以是任何类型的已知计算机、服务器或数据处理设备,下面将参照图3进行详细讨论。

进一步参照图2,本文描述的一个或多个方面可以在远程访问环境中实现。图2描述了包括通用计算设备(例如,移动计算设备)201的示例性系统架构,其被配置为在安全环境中向其用户提供对被管理的应用的远程访问。计算设备201可以在支持与一个或多个远程计算机(如终端240a、240b和240n(也称为客户端设备或客户端或客户端机器))连接的联网环境中操作。终端240a、240b和240n可以是个人计算机、移动设备、膝上型计算机、平板电脑或服务器,其包括下面图3中描述的元件中的多个或全部。图2中所示的网络连接包括局域网(lan)225和广域网(wan)229,但是也可以包括其它网络。当在lan联网环境中使用时,计算设备201可以通过网络接口或适配器连接到lan225。当在wan联网环境中使用时,计算设备201可以包括调制解调器或其它广域网接口,用于在诸如计算机网络230(例如,因特网)的wan229上建立通信。应当理解,所示的网络连接是说明性的,并且可以使用在计算机之间建立通信链路的其它手段。计算设备201和/或终端240a、240b和240n还可以是包括诸如电池、扬声器和天线(未示出)的各种其它组件的移动终端(例如,移动电话、智能电话、个人数字助理(pda)、笔记本等)。

本文描述的各方面也可以与许多其它通用或专用计算系统环境或配置一起操作。可适合于与本文中所描述的各方面一起使用的其它计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人计算机(pc)、小型计算机、大型计算机、包括任何上述系统或设备的分布式计算环境等。

如图2中所示,一个或多个客户端设备240a、240b和240n可以与一个或多个服务器206a-n通信。在一个实施例中,计算环境200可以包括安装在服务器206a-n与客户端设备240a、240b和240n之间的网络设备(这里未示出)。该网络设备可以管理客户端/服务器连接,并且在一些情况下可以在多个后端服务器206a-n之间对客户端连接进行负载平衡。在一些实施例中,计算设备201可以是与其它客户端设备240a、240b和240n通信的移动客户端设备。

在一些实施例中,客户端设备240a、240b和240n可被称为单个客户端机器或单组客户端机器,而服务器206a-n可被称为单个服务器或单组服务器。在一个实施例中,单个客户端机器与不止一个服务器通信,而在另一个实施例中,单个服务器与不止一个客户端机器通信。在又一实施例中,单个客户端机器与单个服务器通信。

在一些实施例中,客户端机器可被称为以下非穷举术语中的任何一个:客户端机器、客户端;客户端计算机、客户端设备、客户端计算设备、本地机器、远程机器、客户端节点、端点或端点节点。在一些实施例中,服务器可被称为以下非穷举术语中的任何一个:服务器、本地机器、远程机器、服务器场或主机计算设备。

在一个实施例中,客户端机器可以是虚拟机。虚拟机可以是任何虚拟机,而在一些实施例中,虚拟机可以是由类型1或类型2管理程序(hypervisor,例如,由citrixsystems、ibm、vmware开发的管理程序或任何其它管理程序)管理的任何虚拟机。在一些方面中,虚拟机可由管理程序来管理,而在一些方面中可由在服务器上执行的管理程序或在客户端上执行的管理程序来管理虚拟机。

一些实施例包括客户端设备,其显示由在服务器或其它远程机器上远程执行的应用生成的应用输出。在这些实施例中,客户端设备可以执行虚拟机接收器程序或应用,以在应用窗口、浏览器或其它输出窗口中显示输出。在一个示例中,所述应用是桌面,而在其它示例中,所述应用是生成或呈现桌面的应用。如本文所使用的,桌面是指其中可主存和/或执行一个或多个应用的图形环境或空间。桌面可以包括图形外壳,该图形外壳提供例如用于操作系统的动态图像形式的用户界面,其中可以集成本地和/或远程应用。应用可以包括在已经加载操作系统(以及可选地,桌面)的实例之后执行的程序。操作系统的每个实例可以是物理的(例如,每个设备一个操作系统)或虚拟的(例如,在单个设备上运行的os的许多实例)。每个应用可以在本地设备上执行,或者在远程定位的设备(例如,远程的)上执行。

在一些实施例中,服务器使用远程呈现协议或其它程序来向在客户端上执行的瘦客户端或远程显示应用发送数据,以呈现由在服务器上执行的应用生成的显示输出。瘦客户端或远程显示协议可以是以下非穷举协议列表中的任何一个:由佛罗里达州劳德代尔堡的citrixsystems公司开发的独立计算架构(ica)协议;或者由华盛顿州雷蒙德市微软公司制造的远程桌面协议(rdp)。

远程计算环境可以包括不止一个服务器,使得这些服务器在逻辑上被分组在一起成为服务器场,例如,在云计算环境中。服务器场可以包括在地理上分散的同时在逻辑上分组在一起的多个服务器,或者在逻辑上分组在一起的彼此邻近定位的多个服务器。在一些实施例中,服务器场内的地理上分散的多个服务器可以使用wan(广域网)、man(城域网)或lan(局域网)通信,其中不同地理区域可以被表征为:不同大陆、大陆的不同区域、不同国家、不同州、不同城市、不同校园、不同房间、或前述地理位置的任何组合。在一些实施例中,服务器场可以作为单个实体来管理,而在其它实施例中,服务器场可以包括多个服务器场。

在一些实施例中,服务器场可以包括执行基本上类似类型的操作系统平台(例如,windows、unix、linux、ios、android、symbian等)的服务器。在其他实施例中,服务器场可以包括执行第一类型的操作系统平台的第一组一个或多个服务器和执行第二类型操作系统软件平台的第二组一个或多个服务器。

服务器可根据需要配置为任何类型的服务器,例如,文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟服务器、部署服务器、安全套接层(securesocketslayer,ssl)vpn服务器、防火墙、web服务器、应用服务器,或者被配置为主应用服务器、执行活动目录的服务器、或者执行提供防火墙功能、应用功能或负载平衡功能的应用加速程序的服务器。也可以使用其它服务器类型。

一些实施例包括第一服务器,其接收来自客户端机器的请求、将请求转发到第二服务器并利用来自第二服务器的响应来响应客户端机器生成的请求。第一服务器可以获取客户端机器可用的应用的列举以及与托管在应用列举内标识出的应用的应用服务器相关联的地址信息。然后,第一服务器可以使用web接口来呈现对客户端的请求的响应,并且直接与客户端通信以向客户端提供对标识出的应用的访问。一个或多个客户端和/或一个或多个服务器可以通过网络230(例如,网络101)发送数据。

图2中所示的桌面虚拟系统的架构可以是单服务器或多服务器系统或云系统,包括被配置为向一个或多个客户端访问设备提供虚拟桌面和/或虚拟应用的至少一个虚拟服务器。

现在参照图3,提供了计算设备300的示例性架构的详细框图,其中本发明可在计算设备300的任何实施例上实现、部署和/或执行。因此,以下对计算设备300的讨论足以理解图1的架构100和图2的架构200的实施方式。计算设备300仅是合适的操作环境的一个示例,并且不旨在对本发明的使用范围或功能提出任何限制。可适用于本发明的其它众所周知的计算系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子产品、网络pc、小型计算机、大型计算机、虚拟机、包括任何上述系统或设备的分布式计算环境等。

计算设备300可以包括比图3中所示的组件更多或更少的组件。然而,所示的组件足以公开实现本解决方案的说明性实施例。图3中的硬件架构代表被配置为便于软件应用的测试、支持和远程执行的代表性计算设备的一个实施例。因此,图3中的计算设备300实现用于在动态远程会话显示中嵌入秘密数据的方法的至少一部分,如下所述。

计算设备300的部分或全部组件可以实现为硬件、软件和/或硬件和软件的组合。硬件包括但不限于一个或多个电子电路。电子电路可以包括但不限于无源部件(例如电阻器和电容器)和/或有源部件(例如放大器和/或微处理器)。无源和/或有源部件可适于、布置成和/或编程为执行本文描述的方法、过程或功能中的一个或多个。

如图3中所示,计算设备300包括用户界面302、中央处理单元(“cpu”)306、系统总线310、通过系统总线310连接到计算设备300的其它部分并可由所述其它部分访问的存储器312、以及连接到系统总线310的硬件实体314。用户界面可包括输入设备(例如,小键盘350)和输出设备(例如,扬声器352、显示器354和/或发光二极管356),其便于用于控制计算设备300的操作的用户-软件交互。

硬件实体314中的至少一些执行涉及访问和使用存储器312的动作,存储器312可以是ram、盘驱动器和/或光盘只读存储器(“cd-rom”)。硬件实体314可以包括盘驱动单元316,盘驱动单元216包括计算机可读存储介质318,其上存储有被配置为实现本文描述的方法、过程或功能中的一个或多个的一组或多组指令320(例如,软件代码)。在计算设备300执行指令320期间,指令220还可以完全地或至少部分地驻留在存储器312内和/或cpu306内。存储器312和cpu306还可以构成机器可读介质。本文使用的术语“机器可读介质”是指存储一组或多组指令320的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。如本文所使用的,术语“机器可读介质”还指能够存储、编码或携带用于由计算设备300执行的一组指令并且使计算设备300执行本公开的方法中的任何一个或多个的任何介质。

在一些情况下,硬件实体314包括电子电路(例如处理器),其被编程用于促进在动态远程会话显示中嵌入秘密数据的方法,如下所述。在这点上,应当理解,该电子电路可以访问和运行安装在计算设备300上的软件应用324。随着讨论的进行,软件应用324的功能将变得明显。

在一个实施例中,计算设备300可以是虚拟机。虚拟机可以是任何虚拟机,而在一些实施例中,虚拟机可以是由citrixsystems、ibm、vmware开发的管理程序或任何其它管理程序管理的任何虚拟机。在其它实施例中,虚拟机可以由任何管理程序来管理,而在另一些实施例中,虚拟机可由在服务器上执行的管理程序或在客户端机器上运行的管理程序来管理。

图4所示的是用于在远程会话显示中嵌入数据的系统的一个实施例。图4是示出包括与主机400和远程计算机器401相关联的稳定区域检测器441和数据嵌入模块442的编码器404的图。在该实施例中,远程计算机器401被配置成经由例如远程桌面会话作为主机400的客户端(例如,瘦客户端)来操作。远程计算机器401可用于经由通信链路与在主机400处操作的应用交互。主机400可以被配置为向远程计算机器401发送显示帧的流,该显示帧在用户界面(例如,显示器455)上创建动态图像,该动态图像表示在远程桌面会话期间对与应用的用户交互的响应。

该系统可以包括执行一个或多个应用420的主机400,其中每个应用可以生成显示输出(即,显示帧),该显示输出可以被传递到也在主机400上执行的帧缓冲器402。帧缓冲器402可以将接收到的显示帧传递到在主机400上执行的编码器404,其中编码器404可以进一步与高速缓存414通信以获得附加信息,并且其中编码器404和高速缓存414两者都可以与应用/桌面交付系统422通信。在一个实施例中,编码器404还包括嵌入模块442。应用/桌面交付系统422通过虚拟信道406并经由呈现级协议与远程计算机器401通信,并且具体地与在远程计算机器401上执行的客户端代理424通信。客户端代理424可以将显示帧内容发送到在远程计算机器401上执行的解码器408。解码器408可以与帧缓冲器410和远程计算机器401上的高速缓存416通信,并且可以提供用于在显示器455上输出的显示帧。

参照图4,并且更详细地,在一个实施例中,主机400和远程计算机器401可以是本文描述的计算机器中的任何一种。在另一实施例中,主机400可以是服务器或服务器场,而远程计算机器401可以是客户端;而在其它实施例中,主机400可是客户端,并且远程计算机器401可是服务器、服务器场中的服务器或服务器场。在另一些实施例中,主机400可以是第一计算机,并且远程计算机器401可以是第二计算机器;而在其它实施例中,主机400可以是第二计算机,并且远程计算机器401可以是第一计算机。此外,主机400和远程计算机器401可以经由诸如本文所述的任何呈现级协议的呈现级协议通过虚拟信道406通信。主机400与远程计算机器401之间的通信可通过如本文所述的那些网络中的任何网络进行。

在一个实施例中,主机400可以执行任何数量的应用420。第一应用、第二应用、第三应用、以及任何“n”数目的应用可以在主机400上执行,其中“n”是在1与特定计算机器可以执行的应用的任何最大数目之间的整数。这些应用可以统称为应用420。

在主机400上执行的是与编码器404通信的帧缓冲器402,其以像素的形式存储来自源(例如应用)的内容(例如,显示帧)。在一些实施例中,帧缓冲器402可以是能够包含图形、图形命令、图像或任何其它图形或媒体内容的任何缓冲器。在一些实施例中,帧缓冲器402可以存储特定图像或图像部分中的每个像素的像素颜色数据。可以从图像渲染器获得该像素颜色数据,图像渲染器能够输入图形绘制命令并输出图像,如jpeg、位图、tip、gif、png或任何其它类型的媒体内容。虽然帧缓冲器402被描述为仅与应用420和编码器404通信,但在其它实施例中,帧缓冲器404可以与主机402内的任何数量的系统组件(如高速缓存414和应用/桌面交付系统422)通信。

在一些实施例中,帧缓冲器402从至少一个应用420接收图像/帧数据或显示图形,并且存储所接收的数据或图形,然后将其传递到编码器404。在一实施例中,帧缓冲器402的内容例如周期性地或在检测到变化或某一其它触发事件发生时被馈送到编码器404。在其它实施例中,帧缓冲器402在将图像数据或显示图形传递到编码器404之前,将图像/帧数据或者显示图形存储在诸如高速缓存的存储库中。

在许多实施例中,编码器404输入图像/帧数据或显示图形,并且根据编码或压缩算法对数据或图形进行编码或者压缩。在一个实施例中,编码器404根据本文描述的编码方法和过程对输入的数据或图形进行编码。在其它实施例中,编码器404可以根据以下类型的压缩中的任何一种来编码数据并压缩数据:无损、有损、lempel-ziv、霍夫曼、自适应霍夫曼、golomb或与本文所描述的编码方法相符并且可利用其进行操作的任何其它类型的压缩。在一些实施例中,编码器404将经编码和/或经压缩的显示帧发送到应用/桌面交付系统422,用于发送到远程计算机器401;然而,在其它实施例中,编码器404将经编码和/或经压缩的显示帧发送到远程计算机器401,而不是将经编码/经压缩的数据发送到交付系统422进行传输。图4将编码器404描述为与帧缓冲器402、高速缓存414、嵌入模块450和应用/桌面交付系统422通信;编码器404可以与主机400上的包括应用420的任意数量的组件通信。在一些实施例中,编码器404可以被包括在帧缓冲器402内。

编码器404是一个或多个模块,其可以是设计成与其它组件或执行相关功能的特定功能(对应于特定步骤)的程序的一部分一起使用的封装的功能硬件单元。编码器404的一个或多个模块可以包括稳定区域检测器441和嵌入模块442。在一些实施例中,这些组件是通信地耦合到编码器404而不是包含在编码器404内的分立模块。稳定区域检测器441可以是用于将显示帧与存储在存储器(例如,系统存储器、高速缓存414或cpu寄存器)中的先前显示帧和数据进行比较以确定动态图像中的稳定区域的一个或多个模块。各种特征可以表明区域是稳定的(下面讨论)。在一个实施例中,先前显示帧的像素被存储在高速缓存414中,并且稳定区域检测器441确定当前帧是否包括一个或多个稳定区域。下面将参照图5和图6更详细地讨论稳定区域检测。在一些实施例中,稳定区域检测器441检测先前识别出的稳定区域何时不再稳定,并通知给其嵌入模块。在稳定区域检测器441识别出图像的稳定区域之后,稳定区检测器可以将这些区域提供给嵌入模块442。嵌入模块442可以如下文所述在稳定区域中嵌入数据。

嵌入模块442可以是用于在图像的一个或多个稳定区域中嵌入数据的一个或多个模块。该数据可以包括可用于标识显示在桌面上的图像的底层内容的来源和/或所有权的信息,例如但不限于图像的来源、图像的作者、显示图像的显示屏等。这样的信息的示例可以包括但不限于用户识别信息、企业信息、图像源信息、客户端设备信息等。该数据还可以包括允许(或拒绝)终端用户和/或终端用户设备访问和/或控制相关联的图像的任何合适的信息,如数字版权管理(drm)信息和/或有条件的访问(ca)信息(cai)。在一些实施例中,嵌入模块442可以包括加密模块,用于对将要嵌入在图像的稳定区域中的信息进行加密。加密可以指用于通过处理来从被解释的形式转换数据并保护该数据的任何手段,该处理呈现除了通过该手段来解密被加密的数据之外的任何人都不可解释的数据。加密可以指各种加密标准和技术,包括私钥和公钥加密。加密和解密可以经由实现口令、密钥或两者的组合的系统来完成。加密方案可以包括对称密钥加密方案,其中在试图加密数据的一方和试图解密数据的一方之间交换秘密密钥。这样的方案也可称为“共享秘密”或“预共享”加密方案。这种加密方案的示例可以包括advancedencryptionstandard、blowfish、twofish、serpent、cast5(也称为cast-128)或其他cast变体(例如cast256)、rivestcipher4(rc4)或其它rc变体(如arc4)、tripledataencryptionstandard(三重des或3des)、以及internationaldataencryptionalgorithm(idea)。对称算法的示例可以包括aes-128、aes-192和aes-256。应当理解,在本公开全文中,在使用或公开对称密钥加密的情况下,也可以替代地使用任何其它形式的加密来成功地实现本文公开的系统和方法,包括非对称加密或任何其它形式的加密。

在数据已经被嵌入在显示帧的一个或多个区域中之后,编码器404可以对该显示帧进行编码并将该帧转发给远程设备和/或将该编码帧提供给计算系统400的另一组件。

应当理解,计算环境内的其它系统和组件可以实现与本公开相符的实施例。因此,本公开的专用编码器组件是示例性的。接下来的附图和描述将参考例如编码器404及其组件,作为用于实现与本公开相符的实施例的实例,但不旨在将本公开限制于编码器404的该结构。

高速缓存414、416可以包括本文所述的任何存储库或存储器类型。在一个实施例中,高速缓存414、416可以存储显示帧。在一个实施例中,一组预定义图像被存储在高速缓存414、416中。这些预定义或预存储的图像可包括较大图像的多个图像部分,并且在一些实施例中可包含索引。可以通过计算所存储图像的crc或计算散列或校验和来创建索引。在其它实施例中,索引可以是能够将特定存储图像内的像素数据与另一存储图像内像素数据区分开的任何识别元素。

应用/桌面交付系统422可以是本文所述的任何应用/桌面交付系统442,并且在一些实施例中可以是citrixxenapp或xendesktop。应用/桌面交付系统422可以经由呈现级协议(如本文中所描述的那些呈现级协议中的任何一种)通过通信信道406将信息发送到在远程计算机器401上执行的客户端代理424。在一些实施例中,呈现级协议可以是:由citrixsystems开发的ica协议;由microsoft开发的rdp协议;或可以利用本文所述的方法和系统进行操作的任何其它呈现层协议。应用/桌面交付系统422可以接收数据,即,帧、图像或图形数据,并通过通信信道406将数据发送到远程计算机器401上的客户端代理424。然后,客户端代理424可以处理该数据并将其发送到远程计算机器401内的任意数量的组件。

在一个实施例中,客户端代理424将接收到的数据发送到在远程计算机器401上执行的解码器408。解码器408可以对先前由编码器404编码和/或压缩的数据进行解码和解压缩。图4将解码器408描述为与客户端代理424、高速缓存416和帧缓冲器410通信,然而在一些实施例中,解码器408可以与远程计算机器401的任何组件通信。

图5示出与本公开的实施例相符的用户界面(例如,桌面)上的示例性动态图像501。动态图像501可以提供在计算系统上运行的应用的状态的可视表示。动态图像501可以呈现在显示设备(例如,附接到远程客户端设备402的显示设备455)上。然后,用户可以通过输入设备与系统交互,并且将经由动态图像501的交互结果通过显示设备呈现给用户。

动态图像501可以包含与在计算系统上运行的应用或进程相对应的应用窗口(例如,窗口510、520和530)。这些应用窗口能够以动态会话显示的形式向用户提供应用的可视表示,该可视表示包括具有一个或多个稳定区域和一个或多个瞬态区域的图像流。应用窗口510、520和530可以表示各种应用。例如,应用可以是web浏览器、字处理器、电子表格应用、图像编辑器、即时消息客户端、视频播放器、音乐播放器或在计算系统上执行的指令组。在一些实施例中,应用提供多个应用窗口。

用户与动态影像501交互时,系统对动态图像501进行更新。当动态图像501中的应用窗口(例如,应用窗口510、520或530)改变时,与应用窗口相对应的应用指示操作系统更新应用窗口的显示。操作系统可以将来自所有应用窗口的更新进行组合,以将它们合成一个统一的图像。在一些实施例中,系统可以使用用于合成的图形处理单元和创建表示对动态图像501的所有更新的最终显示帧所必需的其它图形操作。在合成之后,可以将最终帧或图像存储在帧缓冲器(例如,帧缓冲器402)中,直到在显示设备(例如显示设备455)上输出,或者将其转发到远程客户端(例如,远程客户端设备402)用于显示。在一个实施例中,帧或图像可被存储为准备显示的位图图像。其它文件格式(如向量图像)在本发明的范围内。这些类型的显示机制可以被称为合成窗口管理器。合成窗口管理器的示例包括macosx中的quartzcompositor、microsoftwindows7及其更高版本中的desktopwindowmanager、kwin、compiz和5dwm等。通过在合成窗口管理器内合成图像而不是允许应用直接更新帧缓冲器,操作系统可以对如何在最终合成图像中表示应用更新施加更多的控制。应当理解,与本公开相符的实施例可与输出包括图像的任何显示系统兼容,并且不限于被分类为合成窗口管理器的显示系统。

在远程计算环境中,包括用于远程客户端的虚拟化计算环境,可以将帧缓冲器的内容转发给远程客户端,并且远程客户端可以将显示帧呈现给用户。

现在参照图6,示出了用于在计算环境中在远程会话显示的动态图像中嵌入数据的示例性方法600。图4中示出了示例性计算环境400。在一个或多个实施例中,图6中示出的过程600和/或其一个或多个步骤可由计算设备(例如,图1至图3中的任何设备)执行。在其它实施例中,图6示出的过程和/或其一个或多个步骤可体现在存储在计算机可读介质(例如非暂时性计算机可读取存储器)中的计算机可执行指令中。尽管方法600是为了方便起见而被描述的并且并不意图将本公开限制为包括一系列步骤和/或多个步骤,但应理解,该过程不需要作为一系列的步骤来执行,并且/或者这些步骤不需要按照关于图6所示和描述的顺序来执行,但是该过程可以被集成并且/或者一个或多个步骤可以一起执行,或者这些步骤可以按照公开的顺序或以其他顺序执行。

方法600可以在602处开始,此时编码器接收显示帧,该显示帧与表示桌面的一部分的动态图像相关联并且对应于动态会话显示(例如,来自应用或帧缓冲器)以在传输到远程计算设备之前进行处理。在一个实施例中,显示帧可以是位图图像和/或任何其它格式。如上所讨论的,动态图像的一个或多个区域可通过生成动态图像的新的显示帧而被连续地更新。因此,动态图像可在一段时间内与一系列显示帧相关联,其中每个显示帧的一个或多个区域可以不同于先前显示帧的对应区域。在一个实施例中,编码器可以周期性地或在检测到变化时或者某一其它触发事件发生时接收对应于动态图像的新显示帧。

编码器还可以在604处接收数据,该数据将在显示帧被显示之前嵌入到显示帧中,其中该数据指示动态图像的底层内容的来源和/或所有权。

在606处,嵌入模块可以使用例如对称密钥加密算法对接收到的数据进行加密,以生成秘密数据。嵌入模块可以保存用于加密数据的密钥以供稍后使用。例如,所保存的密钥可用于从图像和/或图像的副本恢复嵌入数据。在608处,嵌入模块还可以确定秘密数据的长度(l)(例如,位的数目)。本领域技术人员将理解,可以在不执行加密的情况下将数据嵌入在显示帧中。

在610处,编码器的稳定区域检测器可以通过在一段时间内比较显示帧内与动态图像相关联的各个区域来识别显示帧中的稳定区域。稳定区域可由许多不同的特性来限定。在一些实施例中,确定区域稳定包括但不限于考虑区域的大小、区域的稳定性、阈值数目的先前显示帧中没有改变的区域、在阈值时间段内没有变化的区域、区域是否包含先前已经被高速缓存的区域等。例如,在一些实施例中,仅超过与秘密数据的长度l相关的阈值大小的区域可被认为是稳定的。在其它实施例中,仅超过阈值数目的像素的区域可被认为是稳定的。在一些实施例中,仅在大小和/或位置上稳定的区域可被认为是稳定的。在一些实施例中,可以忽略区域的大小和/或位置的微小变化。可基于系统的要求来调整这些实施例中的变化的容许量。此外,先前已经出现在高速缓存中的区域可以指示区域是稳定的。相反,包含视频内容的区域可导致较低的高速缓存命中率,因为视频帧通常不会自身重复。在一些实施例中,如果已经在多个先前显示帧的高速缓存中找到超过阈值百分比的区域,则可以认为该区域是稳定的。这些实施例使用的特性仅是示例性的。可以指示区域是稳定的任何特性都可以用作确定稳定区域的基础。

在一个示例性实施例中,稳定区域检测器441可以通过将每个显示帧的多个区域与和该图像相关联的多个先前帧中的对应区域进行比较来检测帧中的稳定区域。图7示出与该图像相对应的并且是在初始时间“t”秒和“t+30”秒之间以5秒间隔从主机400发送到远程客户端设备402的示例性显示帧a0、a5、a10、a15、a20、a25和a30。在一个实施例中,帧a1至an(图7中的帧a0、a5、a10、a15、a20、a25和a30)可以与诸如字处理应用、操作系统、web浏览应用等的应用相关联。例如,帧a1至an可以是或可以包括与应用相关联的用户界面(例如,桌面、图形用户界面、交互式界面)的至少一部分。在一些实施例中,帧a1至an可以与在主机处操作的多个应用(未示出)相关联。

如本公开中所使用的,帧a1至an-1是在与该图像相对应的帧an之前产生的帧。因此,帧a1至an-1可被称为之前或先前帧(相对于帧an),并且帧an可被称为后续帧(相对于帧a1至an)或当前帧。在该实施例中,帧an-1紧接在动态图像流内的帧an之前(例如,在时间上与帧an相邻、连续)。

可以基于当前帧an与先前帧an-1(和/或任意数量的帧a0至an-1)的各部分的比较来检测每个帧(以及因此该图像)中的稳定区域。在有些实施例中,可逐块地执行当前帧an与先前帧an-1的比较以确定哪些部分是不稳定的或稳定的。例如,可以将当前帧中的块(或诸如其颜色、亮度等的特性)与先前帧中的块进行比较,以确定当前帧的块是否应被指定为不稳定的或稳定的。当前帧中的块可以在当前帧内的与先前帧中的块的块位置相对应的位置(也可被称为块位置)。在一些实施例中,块可由一组像素(例如,位图像素)来限定。例如,块可以是2×2的像素组、2×4的像素组、2×8的像素组、4×4的像素组、8×8的像素组、8×16的像素组、16×16的像素组等。在一些实施例中,块可以具有与正方形或矩形不同的形状。例如,块可以是5边块。在一些实施例中,块的大小可以是帧(例如,帧a1)的大小的分数(例如0.3倍、0.1倍、0.01倍)。尽管在图7中未示出,但是在一些实施例中,网格的一个或多个块可以具有重叠的像素,而不是相互排斥的像素块(或像素组)。

现在参照图7,在初始时间“t”,向帧700中的每个块分配值0,其中初始时间“t”可具有任何整数值(帧a0)。在t+5秒,将帧a5的块与帧a0的块进行比较,并且基于该比较来更新每个帧中的值。在一个实施例中,与先前帧a0的块相同的当前帧a5的对应块(例如,对应块位置中的块)的值递增5(即,帧之间的时间段并且指示块是稳定的时间)。另一方面,与先前帧a0的块不同的当前帧a5的对应块的值保持为0。在一个实施例中,一旦块中的任何像素相对于先前帧发生改变,则当前帧中的值保持相同。在t+10秒,将帧a10的块与帧a5的块进行比较,并且基于该比较来更新每个帧中的值。在一个实施例中,与先前帧a5的块相同的当前帧a10的对应块的值递增5,并且与先前帧a0的块不同的当前帧a5的对应块的值保持相同(0或5)。

在一个实施例中,可以在每次接收到图像的新帧时执行上述比较,以识别接收到的帧中的稳定区域。在一个实施例中,帧中的稳定区域可以是包括在至少阈值时间段(例如但不限于5秒、10秒、15秒、20秒、25秒等)内没有改变的块的区域。在优选实施例中,阈值时间是10秒。在一个实施例中,如果阈值时间段是10秒并且稳定区域的形状被预定义为矩形,则帧a0和a5不包括任何稳定区域,帧a10包括示例性稳定区域701和702,帧a15包括示例性稳定区域711、712和713,帧a20包括示例性稳定区域721和722,帧a25包括示例性稳定区域731、732、733和734,帧a30包括示例性稳定区域741和742。如果块在稳定至少上述阈值时间段之后发生变化,则块可以被重新分配值“0”。例如,如图7所示,在稳定至少10秒(即,用于检测稳定区域的阈值时间段)之后改变的块被分配0值。因此,对于由编码器接收的帧an,可通过将该帧与先前接收到的帧an-1进行比较来识别该帧中的稳定区域。

在一些实施例中,可以例如基于与和每个块相关联的逐像素比较来识别当前帧和先前帧的块之间的差异。在一些实施例中,每一个像素可以由可彼此比较的位值(例如,红色、绿色、蓝色(rgb)位值)来表示。例如,可以将包括在当前帧an的块中的每个像素与包括在先前帧an-1的对应块中的每个像素(在对应的位位置处)进行比较,以确定块之间是否存在差异。在一些实施例中,可以计算当前帧an的各块的散列值,并且将散列值与先前帧an-1中的(在对应或相同块位置处的)对应块的散列值进行比较,以确定是否存在差异。换句话说,可以基于针对相应帧的每个块计算出的散列值来识别当前帧与先前帧的块之间的差异。在一些实施例中,可以使用本领域技术人员现在或以后已知的方法来计算一个或多个散列值。在又一实施例中,可以基于匹配点分数和比较来识别当前帧和先前帧的块之间的差异,如本领域的技术人员所知的。

返回参照图6,在612处,稳定区域检测器可以更新与动态图像相关联并且与编码器通信的高速缓存。在一个实施例中,稳定区域检测器可将动态图像的每一帧的识别出的稳定区域保存在高速缓存中,如果尚未保存的话。稳定区域检测器还可以更新高速缓存以移除不再被识别为稳定的任何先前保存的稳定区域。例如,每当稳定区域的一个或多个块值改变为“0”(即,该区域已改变)时,可以将其从高速缓存中移除,并且可刷新高速缓存。在一个实施例中,稳定区域检测器可周期性地、在接收到新显示帧时、在呈现新显示帧时、在从新应用接收到显示帧时等,更新或刷新高速缓存。

在614处,编码器可以针对接收到的显示帧,从更新后的高速缓存中识别并提取最大稳定区域(就大小/像素计数而言)。例如,在图7中,帧a10中的最大稳定区域为702,帧a15中的最大稳定区域为712,帧a20中的最大稳定区域是721,帧a25中的最大稳定区域是733和/或734,并且帧a30中的最大稳定区域则是742。编码器可在每次更新高速缓存时、在接收到新的显示帧时、周期性地、或在发生其它触发事件时,识别并提取最大稳定区域。

然后,编码器可以确定(616)帧中最大稳定区域的总像素计数(即,稳定区域高度×宽度)是否大于或等于阈值。在一个实施例中,阈值为2l、3l、4l、5l、6l等。在优选实施例中,阈值为4l。如果最大稳定区域的总像素计数小于阈值,则嵌入模块可以使用现在或以后已知的方法对整个帧执行最低有效位(lsb)嵌入算法,以将秘密数据嵌入到帧中(630)。在一个实施例中,编码器可对整个帧执行lsb算法,以针对不包括稳定区域和/或不能检测到稳定区域的帧(例如,针对在时间t=0到t=阈值时间段之间显示的前些帧),将秘密数据嵌入到该帧中。

然而,如果识别出的最大稳定区域的总像素计数大于或等于阈值,则在618处,编码器可以确定所提取的最大稳定区域是否已经在其中嵌入了秘密数据。例如,在处理也包括相同的最大稳定区域的前一帧期间,秘密数据可能已经被嵌入到该最大稳定区域中,因此不需要再次执行将数据嵌入到稳定区域中的步骤。在一个实施例中,具有嵌入在其中的秘密数据的稳定区域可以包括指示秘密数据已经被嵌入在该区域中的标识符(例如,旗标)。如果确定最大稳定区域中已经嵌入了秘密数据,则在所识别出的该最大稳定区域中不嵌入新的秘密数据,并且该过程继续到步骤624。这样,通过识别帧中的稳定区域,不需要将秘密数据嵌入正被发送到远程计算设备的每个新帧中以节省处理功率和时间。

然而,如果确定最大稳定区域中没有嵌入秘密数据,则在620处,编码器的嵌入模块可以将秘密数据嵌入到提取的最大稳定区域中。

图8和图9例示用于在最大稳定区域中嵌入秘密数据的方法。在一个实施例中,为了在最大稳定区域中嵌入秘密数据,嵌入模块可以首先对最大稳定区域执行变换函数(802),以将最大稳定区域从空间域(902)变换到频域(906)。例如,嵌入模块可以对最大稳定区域(例如,位图格式)执行2维快速傅立叶变换(fft),以获得其在频域上的能量分布的向量。变换识别出的最大稳定区域的其它现在或以后已知的方法在本公开的范围内。

在804处,嵌入模块可以创建新的空位图(908),其大小小于最大稳定区域的大小。例如,空位图908的大小可以是最大稳定区域的大小的1/2、1/3、1/4、1/5等倍。在优选实施例中,908的大小可以是最大稳定区域的大小的1/4倍(例如,h/2×w/2像素大小,其中h×w是最大稳定区域的像素大小)。在806处,嵌入模块可通过将秘密数据904嵌入908中以创建910来编码908。在一个实施例中,嵌入模块可以将秘密数据904嵌入908中,以相对于秘密数据的位创建冗余。例如,嵌入模块可以将908划分为多个子部分,并且可以用秘密数据902的位的值填充各子部分,使得在至少一个子部分中填充秘密数据902的每个位。在一个实施例中,子部分的数量至少等于秘密数据902的长度(l)。

在808处,嵌入模块可以用步骤806中创建的位图910替换906的一部分,以生成912。在一个实施例中,嵌入模块可以选择906的一部分用于替换,以便产生显示帧的最小视觉失真或混淆。例如,所选择的部分可以是906的角部。优选地,所选择的部分可以是906的右下角部分。

在810处,嵌入模块可以对912执行逆变换(例如,逆fft),以生成包括嵌入的秘密数据的最大稳定区域的位图914。

返回参照图6,在622处,编码器可以在包括嵌入数据的最大稳定区域中添加标识符,以指示该稳定区域中嵌入有秘密数据,并且可以用包括嵌入数据的最大稳定区域来替换高速缓存中的最大稳定区域。在624处,编码器可以合成包括具有所嵌入的秘密数据的最大稳定区域和所接收的显示帧的其它区域的合成显示帧,以创建整个动态图像。编码器还可以对合成帧进行编码,以用于发送到远程设备。在一个实施例中,编码器可以通过用来自步骤620的包括所嵌入的秘密数据的最大稳定区域替换所接收的显示帧中对应于该最大稳定区域的区域来构成合成帧。

在一个实施例中,在未经授权复制屏幕图像时,可以通过首先从复制的屏幕图像中提取lsb信息以确定是否在该屏幕图像的lsb中嵌入了秘密数据来确定复制的视频图像的来源。如果lsb信息不包括秘密数据,则可以首先对整个复制的屏幕图像执行数学变换(例如,fft)以获得其频率分布。然后,可以从例如变换后的图像的右下角获得秘密数据,并且可以使用所存储的密钥来对秘密数据进行解密。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或介质)。

计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述设备的任何适当组合。计算机可读存储介质的更具体示例的非穷举列表包括以下各项:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式只读光盘存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、在其上记录有指令的机械编码设备,如穿孔卡或凹槽中的凸起结构,以及前述设备的任何合适的组合。本文所使用的计算机可读存储介质不应被解释为瞬态信号本身,如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光缆传播的光脉冲)、或通过导线传输的电信号。

本文中所描述的计算机可读程序指令可从计算机可读存储介质下载到相应计算/处理设备或经由网络(例如,因特网、局域网、广域网及/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器依赖指令、微码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的软件应用或目标代码,包括面向对象编程语言,如smalltalk、c++等,以及常规程序语言编程,如“c”编程语言或类似的编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分地在用户的计算机上执行,作为独立软件包,部分地在用户的计算机上执行,并且部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者可以(例如,通过使用因特网服务提供商的因特网)进行与外部计算机的连接。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)在内的电子电路可通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令,以使电子电路个性化,以便执行本发明的各方面。

可以参考根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。应当理解,流程图和/或框图的每个块以及流程图和/或框图中的块的组合可以由计算机可读程序指令来实现。

这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器,使得经由计算机的处理器或其他可编程数据处理设备执行的指令创建用于实现流程图和/或框图块中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以指导计算机、可编程数据处理设备和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制造品,该制造品包括实现流程图和/或框图块中指定的功能/动作的各方面的指令。

计算机可读程序指令还可加载到计算机、其他可编程数据处理设备或其他设备上以致使在计算机、其他可编程设备或其他设备上执行一系列操作步骤以产生计算机实施的过程,使得在计算机、其他可编程设备或其他设备上执行的指令实施流程图及/或框图块中所指定的功能/动作。

附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这点上,流程图或框图中的每个块可以表示包括用于实现指定逻辑功能的一个或多个可执行指令的指令模块、指令片段或部分指令。在一些替代实施例中,块中所指出的功能可不按图中所指出的次序发生。例如,连续示出的两个块可以基本上同时执行,或者根据所涉及的功能,有时可以以相反的顺序执行这些块。还将注意到,框图和/或流程图的每个快以及框图和/或流程图中的块的组合可以由执行指定功能或动作的基于专用硬件的系统或者执行专用硬件和计算机指令的组合来实现。

此外,根据各种实施例的系统可包括处理器和与处理器集成在一起和/或可由处理器执行的逻辑,该逻辑被配置成执行本文所述的一个或多个过程步骤。所谓集成,指的是处理器中嵌入有逻辑,作为硬件逻辑,例如专用集成电路(asic)、现场可编程门阵列(fpga)等。所谓可由处理器执行,指的是逻辑是硬件逻辑;软件逻辑,如固件、操作系统的一部分、应用程序的一部分;等等,或者硬件逻辑和软件逻辑的某种组合,其可由处理器访问并且被配置成在由处理器执行时使得处理器执行某种功能。软件逻辑可以存储在本领域已知的任何存储器类型的本地和/或远程存储器上。可以使用本领域公知的任何处理器,如软件处理器模块和/或硬件处理器,如asic、fpga、中央处理单元(cpu)、集成电路(ic)、图形处理单元(gpu)等。

很明显,根据上述描述,上述系统和/或方法的各种特征可以以任何方式组合在一起,创建多种组合。

还应当理解的是,本发明的实施例可以以代表客户部署的服务的形式提供,以便在需要时提供服务。

本发明的各个实施例的描述是为了说明的目的而提出的,但并不意在穷举或限制于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。这里使用的术语被选择为最好地解释实施例的原理、实际应用或对市场中发现的技术的技术改进,或者使本领域的其它普通技术人员能够理解这里公开的实施例。

尽管已经关于一个或多个实现方式示出和描述了本发明,但是在阅读和理解本说明书和附图之后,本领域的其他技术人员将想到等同的改变和修改。另外,虽然已相对于多个实施例中的仅一个公开了本发明的特定特征,但该特征可与其它实施例的一个或多个其它特征进行组合,这对于任何给定或特定应用都是可取的和有利的。因此,本发明的广度和范围不应受到任何上述实施例的限制。相反,本发明的范围应当根据所附权利要求及其等同物来限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1