用于丰富交互用户界面的有效远程投影的系统的制作方法

文档序号:6557875阅读:216来源:国知局
专利名称:用于丰富交互用户界面的有效远程投影的系统的制作方法
技术领域
此处揭示的主题一般涉及传递一条或多条消息用于对图形用户界面进行命令。
背景技术
用户界面系统通常面对经由本地程序代码的高交互性与通常对远程呈现设备的投影之间的折衷,在后者中网络带宽阻碍了它们提供高交互性的能力。当使用呈现设备或“呈现器”时,众多系统仅是接受降级的交互性或质量。其它系统显式地提供帮助程序代码的片段以便在呈现设备上执行。另外的系统对用户界面采用显式的主机/呈现器模型,迫使开发器设计彼此通信的两个整段软件。最后,某些方法仅是要求更高性能的呈现设备硬件和连通性来提供在这样的情形中的丰富性。
这些系统具有显著的缺点。质量降级影响了最终用户的结果。对帮助者代码片段的需求使编程和交互模型复杂化。呈现器/主机计算迫使每一应用程序开发器显式地对每一可能的呈现设备开发,从而限制了实现方法,或极高地增长了众多解决方案的成本。对更高性能呈现设备硬件和连通性的要求也带来了极高的成本。
此处所呈现的发明主题例如通过明智地对呈现器和主机运行时组件、通信协议设计和编程模型进行选择来解决这些和其它问题。

发明内容
在主机设备与呈现设备之间通信以便控制该呈现设备的用户界面的示例性方法包括,生成消息、在缓冲器中将消息编码为数据块以及将数据块传递给呈现设备。也揭示了各种其它示例性方法、设备、系统等。


参考以下附图描述了非限制性且非详尽的示例,其中除非指出其它情况,否则在各个视图中相同的参考标号指的是相同的部分。
图1是包括开发器、服务器、主机和一个或多个呈现器的示例性系统的示意图。
图2是从主机设备为图形用户界面接收指令的呈现设备的同步通信协议的时间线。
图3是从主机设备为图形用户界面接收指令的呈现设备的异步通信协议的时间线。
图4是从主机设备为图形用户界面接收指令的呈现设备的示例性异步通信协议的时间线。
图5是包含主机计算机和呈现设备的各种组件的示例性系统的示意图,其中根据示例性协议可进行通信。
图6是示出示例性计算环境的示意图,它可用于实现此处所述的各种示例性技术。
具体实施例方式
在以下的描述中,呈现了各种示例性方法、设备、系统等。
图1示出了包括开发器环境110、服务器120和客户机环境130的示例性系统100。当然,众多这样的客户机环境可与服务器120通信。开发器环境110中由工作站112、112′表示的开发器为由服务器120分发或使用而开发应用程序。而服务器120又允许客户机环境130中的主机132下载这样的应用程序、与这样的应用程序合作等。
客户机环境130中的主机132主管一个或多个呈现设备134、136。此处所述的各种示例性分发、设备、系统等,允许在与主机通信的呈现设备上有效地呈现用户界面。这样的用户界面可以由主机的原有的应用程序或非原有的应用程序指导。可在某种程度上由远程控制器控制这样的非原有应用程序。主机与一个或多个呈现设备134、136之间的通信可以是单向的、双向的或多向的。此处所讨论的特定示例参考单向和多向的通信,但也可按照多向的方式实现,在该方式中存在多于一个的主机。在某些实例中,可进行呈现设备对呈现设备的通信。
在示例性客户机环境130中,呈现设备134表示了诸如手持设备或“智能”装置、安全系统、环境系统等的控制器的较小的呈现设备。呈现设备136表示诸如TV、投影仪、监视器等较大的呈现设备,这些可用于观看TV演出、电影、新闻广播、体育等。其它示例性的呈现设备可以是图像帧设备、机顶盒、手机、游戏机等。虽然呈现设备一般不旨在用作个人计算机的替代品;可实现此处呈现的各种示例性方法、协议等以供主机与个人计算机之间的通信使用。在这样的示例中,主机可以是个人计算机或其它计算机。
尽管某些呈现设备可具有超过典型个人计算机的存储器或存储容量,但处理资源一般专用于特殊用途的任务。例如,机顶盒可含有捕捉HDTV帧的RAM以及存储大片的高容量硬盘驱动器,但它运行在大多数个人计算机上运行的商业应用程序的能力有限。为构造运行这样的商业应用程序的机顶盒将增加机顶盒的成本,且可能使专用音频-视觉任务的编程复杂化。
如上所述,呈现设备可使用所有类型的形状和大小具有不同的能力来执行众多不同类型的任务。在增加的成本可以是实现中的显著因素的家庭市场中,要求制品补充资源以便于主机的作业是尤其不现实的。相反,在这样的环境中(例如,不论是家庭还是其它),当需要在呈现设备上呈现用户界面或与之交互时,主机设备一般应能够承受大多数负担。
再次参考呈现设备136,这样的设备可呈现在大约10英尺距离内工作良好的用户界面,且可通过遥控器来控制。与常规的键盘和鼠标相比,典型的遥控器较小且较易于使用;然而,它一般提供更有限的形式的用户输入(例如,由于较少的按键或按钮)。且尽管更远的观看距离提供更舒适的体验,但它可能需要提供确保明确性、相干性和可读性的视觉设计风格的特征。另外,用户可期望用户界面具有与常规TV或HDTV的显示质量等同的显示质量,在常规TV或HDTV中,平滑地显式帧,即以特定的帧速率显示连续的帧,向用户或观众提供不间断的、无低频干扰的媒体呈现。
用户也可期望如设备136等的呈现设备以提供动态、动画的体验。用户也可期望易于输入且使得她的体验更简单而非更复杂。用户也可期望相比由键盘或鼠标控制的应用,应用更方便、学习起来更简单、且更易于使用。
此处所述的各种示例性方法、设备、系统等依赖于异步通信,异步通信例如通过呈现设备可减少中断、低频干扰、掉帧、帧延迟等的风险。如下更详细说明,当与同步通信协议比较时,示例性的异步通信协议减少了网络时间,且可提供更好的用户观看体验。参考图2呈现了典型的同步通信协议,随后是图3的典型异步通信协议,以及各种示例性的异步通信协议(例如,图4)。
图2示出了用于在主机与呈现设备之间通信的典型同步通信协议时间线200。因为也存在从呈现设备到主机的通信,时间线200展示了双向通信。一般而言,主机可依赖于为呈现设备的“呈现器”发送消息的“框架”。该框架一般用作在应用和与通信界面相关联的通信层之间的中介。该框架可专用于用户界面任务,或者它也可提供其它功能。呈现器一般是可接收指令(例如,从用户界面框架)且转而可指导硬件来引起用户界面、用户界面组件等(例如图形、动画等)的显示的软件。常见的呈现器一般支持一个或多个标准,诸如但不限于,DirectX图形(例如,DirectDraw、Direct3D)、OpenGL图形(开放图形库)或GDI图形(图形设备接口)。
再次参考图2的时间线200,时间线200指出何时在主机方和呈现设备方发生各种事件,其中主机和呈现设备通过网络、无线电线路、电缆等通信。
这些事件对应于通过呈现设备显示用户界面的呈现任务。由主机引发的任务包括(1)创建呈现构建器(RB);(2)绘制纯色填充(solid fill);(3)绘制圆;(4)设置可视内容;以及(5)毁坏呈现构建器(RB)。
呈现构建器创建任务(1)与毁坏任务(5)基本上被分别用作一个或多个绘制或相关消息(例如,任务(2)-(4))的起始点与结束点,这些消息在同步通信协议时间线200中在从主机到呈现设备一连串通信中传递。
呈现设备接收对任务(1)-(5)的指令或元数据,并在通过网络接收之后处理那些指令(例如,使用呈现器)。在主机发送各指令或元数据之间存在延迟(贯穿本说明,“或”一般指的是“和/或”),该延迟由ΔtiNetworkHR表示。主机ΔtiHost具有延迟,呈现设备具有延迟ΔtiRD。此外,当呈现设备向主机发送信息时,发生另一延迟ΔtiNetworkRH。因此,对图2的实例,每一任务具有四个相关联的延迟ΔtiNetworkHR、ΔtiNetworkRH、ΔtiHost以及ΔtiRD。
可增加或优化主机资源来减少Δti Host,可减少或优化网络通信量来减少Δti NetworkHR和Δti NetworkRH;然而,如此处所述,呈现设备的能力不是对用户界面增加的性能的解决方案的一部分。因此,ΔtiRD被认为是依赖于呈现设备的,且是一限制。
再次参考时间线200,呈现设备可实际在接收“设置可视内容”任务和通过呈现设备处理该任务之后显示圆。在显示时,已经发生7个网络延迟、4个主机延迟和4个呈现设备延迟。此外,当有大网络通信量或有众多其它主机任务时,存在发生另外的延迟的可能。因此,存在减少主机与呈现设备之间的网络通信次数的急迫需求。
图3示出了涉及如图2中所呈现的相同任务的典型异步通信协议时间线300。然而,时间线300也示出由呈现设备显示的帧(例如,帧n、帧n+1和帧n+2)。这些帧呈现可由于主机传递的任务的执行而被中断、移位或不显示的由呈现设备执行的额外任务。如所述,这样的冲突可损害用户体验。
呈现构建器创建任务(1)和毁坏任务(5)基本上被分别用作一个或多个绘制或相关消息(例如,任务(2)-(4))的起始点与结束点,在异步通信协议时间线300中这些任务在从主机到呈现设备一连串通信中传递。
由时间线300表示的异步通信协议相比由时间线200表示的同步协议使用较少的呈现设备到主机的通信。具体地,由于在执行所有主机请求的任务之后,呈现设备仅向主机发送一个通信的事实,该数量大为减少。然而,主机仍旧向呈现设备发送5个单独的通信。因此,与同步时间线200的通信总次数10相比,通信的总次数为6。
在说明了典型的同步通信协议和典型的异步通信之后,考虑参考时间线400呈现的示例性异步通信协议,如图所示,它提供双向通信。在其它的示例中,适当时候,可使用示例性通信协议进行单向或多项的通信。在图4的示例中,该示例性的异步通信协议仅需要从主机到呈现设备的一次通信以及从呈现设备到主机的一次通信,这可以是任选的。因此呈现构建器创建任务(1)和毁坏任务(5)基本上用作两者之间持有一个或多个绘制或相关消息(例如任务(2)-(4))的消息。与时间线200和时间线300的协议不同,在异步通信协议时间线400中,创建任务(1)和毁坏任务(5)以及任务(2)-(4)在从主机到呈现设备的单个通信中传递。当然,其它安排也是可能的。
如此处所述,示例性的异步通信协议系统可允许以“粗短(chunky)”的方式发送相对“饶舌(chatty)”或“丰富”的消息(例如,多条消息)。该示例性异步通信协议甚至禁止所有或某些同步调用,从而在大批消息中分摊延迟成本(即,在粗短的有线事务中携带饶舌的通信)。因此,示例性通信模型基本上可以是100%异步的。
在图4的示例中,通过准备批来减少从主机到呈现设备的通信次数,代替前述同步和异步示例中的分开和个别单独的延迟,它具有延迟ΔtBatchHost。此外,呈现设备可将所传递的批指令或元数据作为Batch批来处理,具有延迟ΔtBatchRD。一般而言,无论由主机还是呈现设备进行的批处理都要比串行的任务处理更有效率,在后者中,处理由任务的串行通信延迟和管理。
在时间线400的示例中,主机以基本上不中断的方式处理5个任务,当与其中处理每一单独任务之后发生与呈现设备的通信的对5个任务的连续处理相比时,前者节省了大量时间。如图所示,主机需要从t0到tf的一段时间,这通常比如图3的时间线300中所示的单独任务处理时间总和要少。
在时间线400的示例中,主机可以在网络缓冲器中对该5个任务编码。在网络缓冲器或通信缓冲器中对批信息编码的处理一般比在网络缓冲器或通信缓冲器中编码一连串单独任务所需的时间总和更有效率。因此,通过该示例性异步通信协议减少了主机方的时间。
因为该示例性异步通信协议减少了通信的次数和呈现设备所需的处理时间的数量,因此视频较不可能被批任务中断或损害。总而言之,这允许呈现设备向用户提供更好的观看体验。
图形用户界面通常由多种小型部分构造而成。在面向消息模型中,每一消息可以是对一个部分的一个方面的更新。对单个逻辑改变,一个或多个应用程序可能要求最好一次(例如,基本上瞬时、以活动的序列等)进行对用户界面的各个部分的若干改变。如果不是原子地执行这些改变,那么用户可看到非预期的部分状态。例如,考虑图3的时间线300和图4的时间线400。在图3的时间线300中,消息在多个帧的过程中到达。按照用户视觉体验而言,例如,除非使用了另一技术或方法来确保呈现器方的原子性,插入的帧将实际上在用户界面上呈现部分更新的状态,而这可能不是视觉上期望的。为避免此类有害行为,对图3的时间线300及相关联协议,可以实现原子性的呈现器方的管理,这转而又将增加实现的复杂性和成本(例如,对呈现设备)。与此对比,图4的示例性时间线400及相关联示例性协议,以及各种示例性方法,可将负担置于主机方,这也可允许使用较轻量的呈现设备。
示例性方法可将消息(例如,命令或任务)安排成一个或多个原子单元。每一单元可以是一条消息或一批消息。这样的示例性方法可提供原子性。例如,当在呈现设备上执行时,一组特定的绘制命令可提供某种用户体验,而如果它们没有被安排或组成原子单元,则可能存在降级用户体验质量的风险。因此,示例性方法可基于用户所期望的结果逻辑地对消息进行分组。此外,这样的示例性方法可解决其它信息或诸如视频的媒体的显示,其中应维护帧速率或帧对帧的完整性以提供最佳用户体验。
示例性方法可对图形或动画连同音频(例如,蜂鸣声、声音、音乐等)一起安排消息(例如,命令或任务)。例如,可作为批消息传输与“飞速移动”声音组合的动画的消息。因此,如此处所述,可使用各种示例性的方法、协议来传递关于音频的消息、呈现设备的其它控制等。例如,当呈现设备控制装置(例如,冰箱)时,可将图形、声音和温度控制信号作为批消息发送。
该示例性异步通信协议可被称为使用阶段。例如,时间线400包括主机批处理阶段、从主机到呈现设备通信阶段以及呈现设备批处理阶段。
参考时间线400所述的该示例性异步通信协议可用于任何合适的发送器与接收器之间的通信。例如,框架和呈现器可包括示例性通信协议层,其中该协议层是为在框架和呈现器之间传送信息提供服务或操作的抽象,并可以是任选地一个或多个中介。示例性通信协议任选地允许扩展,例如,定义消息段且可定义相关联处理规则的一个或多个模块。
示例性通信协议使用消息作为基本单元,其中通信可以是一条或一批消息。示例性通信协议可根据消息通信模型操作,后者可认为是与协议层协作的消息通信层。示例性协议层任选地按照所发送消息的数量、所发送消息的类型、批大小等来控制消息。
示例性通信协议指定在呈现设备上呈现用户界面或其一个或多个组件中使用的消息通信模型和图形模型,其中消息源自主机设备或是主机设备的中介。这样的消息通信模型或图形模型可包括用于执行任务或表示与用户界面相关特征的对象。示例性的主机设备可包括允许应用程序成功地在呈现设备上呈现用户界面、用户界面组件等的框架,从而根据示例性通信协议(例如,关于图4的时间线400所述的异步通信协议)进行主机设备与呈现设备之间的通信。
尽管此处关于时间线400所述的示例性异步通信协议可使用诸如图1中所述的装置实现,但图5示出了可实现图4的示例性异步通信协议的更详细的示例性系统。
示例性系统500包括主机计算机504、呈现设备506和通信链路520,其中虚线540表示主机计算机504与呈现设备506之间的通信。主机计算机504包括应用程序508以及与应用程序508一起操作的框架510。框架510包括各种框架组件诸如,但不限于,图形用户界面(GUI)抽象层512、调度层514、对象层515、其它服务516以及通信层518。呈现设备506包括呈现器530,后者可以是软件、硬件、软件和硬件的组合等。呈现设备506可以是远程设备,例如定位在主机504的远程。如图5中所示,呈现器530包括对象层532、通信层534、动画层536、图形层538。
示例性系统500可使用描述对与呈现设备506相关联的远程用户界面的逻辑呈现和交互的高性能的异步消息通信模型。主机计算机504与呈现设备506之间的通信中使用的示例性协议元素可包括维护活动连接且便于各种通信模式的对象。示例性协议对象可包括作为协议中的根对象的代理对象;表示逻辑计算站点的上下文对象;用于在运行时从呈现端口回调的呈现端口回调对象(呈现端口可被称为消息端口,一般供呈现器相关消息使用);用于就大批数据传送的状况报告的数据缓冲器回调对象;以及表示远程节点上大批数据的数据缓冲器对象。示例性系统500可根据关于图4的时间线400所述的示例性通信协议操作,其中该协议使用这样的示例性对象或其它对象中的一个或多个。
在示例性系统500中,该示例性通信协议可用于将高性能消息通信模型连接至运行在呈现设备506上的呈现器530的实例。一般,呈现器530是用于呈现设备506的图形/动画硬件的软件接口。呈现器530包括诸如管理对象的对象层532的各个层。对象的管理可包括创建对象、对对象命名、对对象访问等。
在“图形”语言、规范或接口中提供的特征一般形成动画层536和图形层538的基础。例如,考虑开放图形库(OpenGL),它是用于编写产生2D或3D计算机图形的应用程序的定义跨语言、跨平台应用程序编程接口(API)的规范。OpenGL接口包括大约250个可用来绘制各种图形(例如,从简单图元到由简单图元构成的复杂三维场景)的不同的函数调用。OpenGL一般也可在视频游戏行业中如同例如DirectX(DirectDraw、Direct3D等)的其它规范中使用。HTML或其它基于标记语言的指令可用于图形等。
如此处所述,示例性的呈现器一般包括用于定义2D和3D图形图像(例如供图形层538中使用)的应用程序编程接口(API),它可提供跨硬件和操作系统的某种程度的兼容性,且指定一组消息(例如,适于为消息使用)。通过这样的API展示的特定图形/动画能力可包括隐藏面移除、阿尔法混合、图形保真、纹理映射、像素操作、取景和造型变换、环境效应或其它能力。这样的图形呈现能力一般可用于创建高质量的静止和活动的三维彩色图像(例如,考虑动画层536)。一般而言,呈现设备将包括具有至少某些基本动画能力的呈现器。
如上所述,呈现器530的通信层534与框架510的通信层518通信。通信层534可允许与除主机计算机504以外的设备通信,且能可任选地允许与其它框架通信。呈现设备506可包括未示出的其它层,诸如但不限于,描述对在呈现中所用的硬件使用的一个或多个专用软件接口的驱动器层以及描述产生显示的硬件的硬件层。
参考图5中所示的主机计算机504的示例性框架510,框架510包括一般为各个GUI元素提供一组API的GUI抽象层512。GUI抽象层512可当创建、命名对象时与对象层515交互,或与其它层交互。其它服务516可包括绘制服务、标记语言(例如,XML)解析服务、定向导航服务、数据绑定服务、命令解释程序服务、动画控制系统服务、UI描述模板建模服务、UI布局系统服务等。
一般而言,框架510允许应用程序508请求呈现设备506例如向呈现设备506的用户呈现各种信息或图形。框架510可允许在多于一个呈现设备上进行这样的请求。一般而言,示例性系统500可通过使用可对消息批化且以异步的方式传递这样的批(例如,作为通信)的示例性协议提供用户界面或用户界面组件的高保真的远程投影。
示例性系统500或其组件可实现各种示例性方法。当然,可使用其它系统或组件来实现各种示例性方法(例如,见图1和6的设备)。示例性方法可包括从主机上执行的应用程序传递一条或多条消息给呈现设备,其中传递使用示例性的异步通信协议。例如,应用程序可发送消息,而框架可形成一批消息,并作为通信将该批消息传递给呈现设备,后者在接收该批之后根据消息执行呈现。示例性的框架可响应于对该批消息(或任何消息)的接收、该消息中一条或多条的执行、根据该消息中一条或多条来呈现、用户与呈现设备涉及该批中信息的交互等从远程设备中接收一条或多条消息。
呈现设备的呈现能力的先验知识可允许示例性框架与应用程序协作或将应用程序限于某组消息并控制批中消息的数量或类型。例如呈现设备当前状态的先验知识可允许示例性框架调度消息或一批消息(例如,考虑调度层514)例如来避免中断或干扰呈现设备的用户的用户体验。对通信链路特征(例如,带宽、用途等)先验知识可允许示例性框架调度或以其它方式控制批的消息。尽管为示例性框架个别提及各种特征,但是可任选地组合多个这样的特征以供调度、控制、提供合适的用户体验等。
如上所述,示例性协议可包括各种对象代理对象、上下文对象、呈现端口回调对象(或消息端口回调对象)、数据缓冲器回调对象、数据缓冲器对象等。这些对象可形成消息模型的一部分。示例性协议也可包括位于这样的消息通信定义或对象上层以形成图形模型的附加的定义。例如,示例性协议可包括包含持有绘制命令(例如,图形、动画等命令)包的呈现构建器对象、表示呈现容器的窗口对象、表示离散坐标空间的视觉对象、用于报告设备的状况的设备回调对象、表示呈现技术驱动器的呈现设备对象、表示图像位逻辑容器的表面对象、表示图像位物理容器的表面池对象、用于修改容器范围中其它图元的色彩空间的渐变对象、为动画控制服务的动画管理器对象、对动画进行报告的动画回调对象以及描述逻辑动画序列的动画对象。如此处所述,消息可以是命令、信息等。
因此,示例性协议可使用消息通信模型和图形模型。消息通信模型可用于简化核心协议的实现、允许扩展、允许主机设备的合适的退出以及呈现设备通信定时等。消息通信模型可包括诸如缓冲层(例如,用于协议交互的基本组帧)和对象消息通信模型层(例如,用于生存周期管理和通信,其中在缓冲器中携带消息,且消息总是被称为对象实例)的各种层。对于缓冲器,消息缓冲器(例如,消息或批消息)可以被传递给对象层直接用于处理,且当处理返回时被丢弃,数据缓冲器可保存各种内容,且在到达对象层之后在那里登记,缓冲器可以是对称和双向的,其中主机设备到呈现设备或反之使用同一模型。消息通信模型可包括在主机设备或呈现设备上的对象实现实例。所有的对象可任选地存在于每一会话表中,具有唯一的句柄,且与一实现“类”相关联。对象的实例可由线上的标号引用,也可支持不对称所有模型。一般而言,消息通信模型可允许,主机设备不必等待单独的回复(即,有效异步)。
一般而言,不对称所有指的是设备资源的主/从所有模型。在可使用此处呈现的各种示例性技术实现的示例性所有模型中,可出现协议可见的主机方管理对象。例如,主机方管理器可管理所有协议可见对象的生存周期,而不论它们存在于哪一端(呈现设备/呈现器端或主机设备/框架端)。这样的示例性所有模型可提供诸如允许异步地创建和毁坏对象(而不仅是对于对象的消息)的好处,这可提供更高的性能;允许在连接丢失或设备复位之后容易地“重建”呈现器状态(例如,不必复位主机);以及使呈现器的实现免除对这些资源的复杂分配和管理代码的需求,这又转而可减少成本。
对于消息,消息通信模型可允许消息作为可与唯一消息编号相关联的定大小的数据块,其中任选地对每一类进行编号。消息通信模型可允许非零目标对象标号,其中实例消息被发送给对象的句柄,而静态消息被发送给类对象的句柄,并提供消息编号。消息通信模型可提供任选的有效负载,例如在端点处打包的。上述代理对象可以是用于对具有公知句柄的示例性协议引导。这样的代理对象可仅包括基本服务的静态方法,例如类的发现(例如,如果指定的名称可用,则为其创建类实例)、实例创建(例如,为指定的类句柄创建对象实例,支持传递任选的“构造器”消息)以及实例毁坏(例如,通过句柄毁坏对象)。一般而言,这样的消息通信模型对象不由请求在呈现设备上呈现用户界面(UI)或UI组件的应用程序直接使用。
示例性方法使用示例性协议以供从应用程序向呈现设备的呈现器传递消息或信息。对说明这样的示例性方法起见,在呈现示例性协议通信中使用前述消息通信模型和图形模型的各种对象。具体地,以下示例轨迹(示例轨迹1)对应于创建新RenderBuider(呈现构建器)对象的单线消息。所发送的实际消息是对Broker(代理对象)的静态CreateObject(创建对象)调用,其中发出新的轨迹以展示诸如对构造器(由Broker在创建实例之后调用)的参数等进程。这样的轨迹(示例轨迹1)例如可在图1的呈现设备134、136之一之间的示例性系统100中发生,该轨迹由主机设备132上执行的应用程序驱动。
示例轨迹1(新建RenderBuilder[class 1000003],构造器Msg1_Create为MessagePtr)cat=InScene16 bytes totalsend Broker[class 1000000]static Msg1_CreateObject
idObjectClass=RH:1000003idObjectNew=RH:5000146msgConstruction=[blob MessagePtr]215548588+16 bytes blob data40 bytes total在该示例轨迹中,对CreateObject调用的msgConstruction(消息构造)参数,构造器的大小匹配BLOB(块)数据大小。在该序列中,发送的消息通信字节的总量是40而非56。尽管BLOB可用于二进制的大型对象,但这样的数据的大小可取决于各种因素且可以具有该示例的大小或具有其它大小;因此,项BLOB可以不总是用于“大型”对象。尽管在各个示例中,数据在传递中一般是二进制数据,但数据任选地可以是二进制数据以外的其它数据。
当向(例如,在远程呈现设备上的)呈现器传递一批消息时,可添加回调以便应用程序方消息通信代码可以了解缓冲器在何时被实际处理。因此,在任何批缓冲器中的最后一条消息可以是命令呈现器将所封入的消息发送回应用程序方的ForwardMessage(转发消息)调用。在该示例中,所封入的消息有效负载是对消息通信运行时自身的OnBatchProcessed(批上已处理)回调(见示例轨迹2)。
示例轨迹2(将RenderPortCallback Msg0_OnBatchProcessed编码为MessagePtr)target=RH:0uBatchCompleted=6420 bytes totalsend Context[class 1000002]static Msg2_ForwardMessageidContextDest=ctx:1msgReturn=[blob MessagePtr]215548920+20 bytes blob data40 bytes total
由于消息运行时汇编和发送当前的批,它可跟踪关于该批整个的信息以及用于携带该批的单独的一个或多个缓冲器的信息(例如,“MESSAGE BATCH 64”和“SENDING BATCH BUFFER:id=RH:0,912 bytes”)。
当发送包含一批消息的缓冲器时,标识(例如,实例id)可允许多个缓冲器链接在一起以供大批使用。缓冲器可包括大量二进制数据(表面的图像像素、声音的波形数据等)。批或缓冲器的实例id可允许消息在后继的呈现命令中引用该批或该缓冲器的数据。在各个示例中,缓冲器可包括消息和数据,它可由涉及消息或后继消息的一个或多个任务任选地使用。
示例“发送”轨迹1和2表示了置于缓冲器中的实际协议消息。当“发送缓冲器”轨迹表示被提交以供对呈现器传送的协议数据的缓冲器时,该轨迹能够可用。
以下的另一示例轨迹(示例轨迹3)是由示例性框架发送给呈现器的消息的轨迹,其中进行请求以改变两个GUI按钮之间的焦点。更具体地,以下的批描述了从一个按钮到另一按钮焦点移位(例如,聚焦于图1的呈现设备的GUI按钮上)所需的状态和动画改变,例如其中按钮包含多个层和持续脉动的覆盖动画。示例轨迹3涉及用户在远程控制上按下方向键,所以开始的几条消息涉及输入状态(例如,隐藏光标和确保正确地聚焦),其余的消息涉及视觉呈现状态和动画示例轨迹3send Form Window:100001F Msg16_ForceMouseIdlefIdle=True16 bytes totalsend Form Window:100001F Msg15_TakeFocus12 bytes totalsend Animation:7000062 Msg4_Stop12 bytes totalsend Visual:1000177 Msg23_SetVisiblefVisible=False16 bytes total
send Visual:1000177 Msg0_ChangeDataBitsnValue=0nMask=734003920 bytes totalsend Visual:1000177 Msg22_SetContentrbContent=RenderBuilder:016 bytes totalsend Visual:1000185 Msg23_SetVisiblefVisible=True16 bytes totalsend Visual:1000185 Msg0_ChangeDataBitsnValue=1nMask=734003920 bytes totalsend AnimationBuilder[class 100000F]static Msg27_BuildAlphaAnimationviSubject=Visual:1000185idAnimation=RH:700014220 bytes totalsend Animation:7000142 Msg1_AddCallbackcb=AnimationCallback:520 bytes totalsend Animation:7000142 Msg10_SetRepeatCountcRepeats=-116 bytes total
send Animation:7000142 Msg6_SetStopCommandcmd=MoveToEnd16 bytes totalsend Animation:7000142 Msg2_AddKeyframeidxKeyframe=0flTimeSec=020 bytes totalsend AnimationBuilder[class 100000F]static Msg3_SetSCurveani=Animation:7000142idxKeyframe=0flScale=124 bytes totalsend AnimationBuilder[class 100000F]static Msg16_SetFloatani=Animation:7000142idxKeyframe=0flValue=024 bytes totalsend Animation:7000142 Msg2_AddKeyframeidxKeyframe=1flTimeSec=1.520 bytes totalsend AnimationBuilder[class 100000F]static Msg3_SetSCurveani=Animation:7000142idxKeyframe=1
flScale=124 bytes totalsend AnimationBuilder[class 100000F]static Msg16_SetFloatani=Animation:7000142idxKeyframe=1flValue=0.62745124 bytes totalsend Animation:7000142 Msg2_AddKeyframeidxKeyframe=2flTimeSec=320 bytes totalsend AnimationBuilder[class 100000F]static Msg3_SetSCurveani=Animation:7000142idxKeyframe=2flScale=124 bytes totalsend AnimationBuilder[class 100000F]staticMsg16_SetFloatani=Animation:7000142idxKeyframe=2flValue=024 bytes totalsend Animation:7000142 Msg5_Play12 bytes total(新建RenderBuilder[class 1000003],构造器Msg1_Create为MessagePtr)
cat=InScene16 bytes totalsend Broker[class 1000000]static Msg1_CreateObjectidObjectClass=RH:1000003idObjectNew=RH:5000146msgConstruction=[blob MessagePtr]215548588+16 bytes blob data40 bytes totalsend Surface:30000EE Msg0_DrawGridrb=RenderBuilder:5000146flX1Pxl=20flX2Pxl=231flY1Pxl=12flY2Pxl=41rcfDestPxl={X=0,Y=0,Width=-1,Height=-1}48 bytes totalsend Visual:1000176 Msg22_SetContentrbContent=RenderBuilder:500014616 bytes totalsend RenderBuilder:5000146 Msg0_Clear12 bytes totalsend Surface:10000C6 Msg0_DrawGridrb=RenderBuilder:5000146flX1Pxl=20
flX2Pxl=231flY1Pxl=12flY2Pxl=41rcfDestPxl={X=0,Y=0,Width=-1,Height=-1}48 bytes totalsend Visual:1000184 Msg22_SetContentrbContent=RenderBuilder:500014616 bytes totalsend RenderBuilder:5000146 Msg0_Clear12 bytes totalsend Surface:10000C8 Msg0_DrawGridrb=RenderBuilder:5000146flX1Pxl=20flX2Pxl=231flY1Pxl=12flY2Pxl=41rcfDestPxl={X=0,Y=0,Width=-1,Height=-1}48 bytes totalsend Visual:1000185 Msg22_SetContentrbContent=RenderBuilder:500014616 bytes total(部署RenderBuilder:5000146)send Broker[class 1000000]static Msg0_DestroyObjectidObject=RH:5000146
16 bytes total(将RenderPortCallback Msg0_OnBatchProcessed编码为MessagePtr)target=RH:0uBatchCompleted=6420 bytes totalsend Context[class 1000002]static Msg2_ForwardMessageidContextDest=ctx:1msgReturn=[blob MessagePtr]215548920+20 bytes blob data40 bytes totalMESSAGE BATCH 64[SENDING BATCH BUFFER:id=RH:0,912 bytes]在示例轨迹3中,仅从之前发送给呈现器的表面中提取消息。如果为需要新图形资源的转换跟踪消息,那么将投入更多的通信量用于表面分配、从大量数据缓冲器中加载像素数据和在极端情况中,用于表面池压缩。
示例轨迹3的批停止在老的聚焦的按钮上脉动聚焦动画。当此发生时,呈现器向框架发回动画停止的通知,触发决定该特定动画对象已完毕的应用程序方的某些通用处理。这又创建另一小批消息,如示例轨迹4中所示,它们指示毁坏老的动画。
示例轨迹4(部署动画:7000062)send Broker[class 1000000]static Msg0_DestroyObjectidObject=RH:700006216 bytes total(将RenderPortCallback Msg0_OnBatchProcessed编码为MessagePtr)target=RH:0uBatchCompleted=65
20 bytes totalsend Context[class 1000002]static Msg2_ForwardMessageidContextDest=ctx:1msgReturn=[blob MessagePtr]215515328+20 bytes blob data40 bytes totalMESSAGE BATCH 65[SENDING BATCH BUFFER:id=RH:0,96 bytes]如此处所述,示例性协议建立消息通信模型来描述与呈现设备相关联的高保真用户界面的逻辑呈现和交互模型,该呈现设备可远离主机计算机。
示例性协议可包括诸如实现服务、将编程接口展示为对象/消息以及使用涉及图形模型的对象基本集的功能专用模块。
示例性协议的示例性图形模型可包括设备对象、呈现容器对象、表面池对象(例如,表示位图数据的相干存储)、表面对象(例如,表面池的单独可绘制块)、视觉对象(在屏幕上、自身坐标空间上绘制图元,组织成根植于呈现容器的树的逻辑容器)以及呈现构建器对象(例如,汇编的绘制图元的列表的容器)。示例性图形模型可包括动画管理器(例如,用于动画处理的坐标)和动画的单独功能实例。可包含扩展器图形对象,诸如光栅化器对象(例如用于准备表面数据的帮助程序对象)和渐变对象(例如,可修改其范围内的其它图元的彩色通道修改器对象,其中通过在内部绘制纯色填充来实现传统“渐变”功能)。其它对象可包括台式机管理器对象(例如,用于与台式机集成)、形式(form)对象(用于面向台式机的呈现容器行为)和各种回调接口。
如上所述,消息可与除图形或动画以外的任务有关。此外,如果适当或期望,一批消息可包括各种任务的混合,诸如但不限于,图形任务、音频任务、装置控制任务等。例如,一批消息可以与装置(例如,冰箱、恒温箱、安全摄像头、游戏元件等)、图形、声音的控制或其它任务相关。
示例性协议任选地支持扩展。例如,对示例性的协议的扩展可提供与遥控即命令远程用户界面相关联的特征。这样的扩展取决于呈现设备的状态,可提供全屏或部分屏幕的操作。例如,在全屏模式中命令呈现设备的图形用户界面传递一条或多条消息与在命令台式计算机的图形用户界面传递该一条或多条消息是不同的。如果向台式计算机传递指令,那么可在主机上加载扩展以提供消息的不同的功能或通信。
示例性协议任选地允许从主机设备到呈现设备的消息通信,这考虑了用户对于该呈现设备的媒体体验。例如,如果这样的用户以大致60fps的帧速率享受TV媒体时,那么通信可避免可能冒中断一个或多个帧的显示的风险的一批消息的传输。此外,众多动画(例如,淡入、淡出、放大等)需要某一帧速率来确保,用户按照预期的方式,一般平滑地察觉到这样的动画。如果通信可能冒中断帧或延迟帧的显示的风险时,那么示例性框架(例如,框架510)可考虑这样的风险,以较小的批或使用其它调整来通信。当然,在TV示例和动画示例中,发送消息或一批消息的主机设备也可提供动画或TV媒体。在这样的基础上,示例性框架从而可用来向用户提供平滑、预期的观看体验。因此,示例性框架可用于在呈现设备用户界面上确保显示信息的最佳帧速率。
示例性框架任选地在批中发送一条或多条消息,其中对向呈现设备的批传递的定时确保,对呈现设备的用户界面的改变将不会中断动画或其它视频显示的帧。例如,可在这样的动画或其它视频显示的多个帧之间进行批的接收、批消息的执行(例如,命令的执行、信息的传送等)或显示。考虑在主机设备上执行的应用程序,它请求在呈现设备的用户界面上显示对话框,其中该用户界面当前以60fps的帧速率显示视频。主机设备上的示例性框架可按照批方式、定时方式或其它方式来控制消息,以确保由呈现设备进行的对对话框的显示不会中断该视频的显示。
一般而言,对某些呈现设备,用户可期望与这样的呈现设备相关联的用户界面来呈现未受损害的电视视频,它具有60Hz的帧速率。尽管用户一般可大致同等地辨别按照24fps和60fps的低频干扰,甚至在24fps视频的单个帧上延迟1/60秒都将产生可见的“打嗝”,用户可察觉为质量损失。因此,示例性的协议可允许甚至以低于60fps的帧速率来提高质量。随着帧速率的增加,示例性框架一般具有越来越少的出错余地,从而增加了对消息控制的需求。再一次,主机方的控制能减少呈现设备方的负担,这可从根本上允许呈现设备来改进显示质量。
可使用示例性协议用于传递更新、改变、新用户界面、新用户界面组件、视频的呈现等。
示例性计算环境可在不同的计算机环境中实现各种示例。图6中所示的计算机环境仅是合适的计算机环境的一个示例,并不旨在对适于使用的计算机和网络体系结构的使用范围或功能提出任何限制。也不应该把该计算机环境解释为对在示例计算机环境中示出的任一组件或其组合有任何依赖性或要求。
图6示出了可在其上实现各种示例性方法的合适的计算系统环境600的示例。各种示例性设备或系统可包括示例性环境600的特征中的任何一个。计算系统环境600只是合适的计算环境的一个示例,并不旨在对本发明的使用范围或功能提出任何限制。也不应该把计算环境600解释为对示例性操作环境600中示出的任一组件或其组合有任何依赖性或要求。
各种示例性方法可用众多其它通用或专用计算系统环境或配置来操作。可能适于实现或使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络PC、小型机、大型机、包含上述系统或设备中的任一个的分布式计算机环境等。例如,图1的示例性系统100可使用远程计算机来生成信息以供显示UI,其中所显示的UI与远程控制或其它输入设备一起操作。
各种示例性方法、应用程序等可在由计算机执行的诸如程序模块等的计算机可执行指令的通用语境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。各种示例性方法也可以在分布式计算环境中实现,其中任务由通过通信网络或其它通信(例如,红外)连接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
参考图6,用于实现各种示例性方法的一个示例性系统包括计算机610形式的通用计算设备。计算机610的组件可以包括,但不限于,处理单元620、系统存储器630和将包括系统存储器630在内的各种系统组件耦合至处理单元620的系统总线621。系统总线621可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、扩展的ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称为Mezzanine总线)。
计算机610通常包括各种计算机可读介质。计算机可读介质可以是能够被计算机610访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机610访问的任何其它介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。
系统存储器630包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)631和随机存取存储器(RAM)632。基本输入/输出系统633(BIOS)包含有助于诸如启动时在计算机610中元件之间传递信息的基本例程,它通常存储在ROM 631中。RAM 632通常包含处理单元620可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例,而非限制,图6示出了操作系统634、应用程序635、其它程序模块636和程序数据637。
计算机610也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图6示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器641,从可移动、非易失性磁盘652中读取或向其写入的磁盘驱动器651,以及从诸如CD ROM或其它光学介质(例如,DVD等)的可移动、非易失性光盘656中读取或向其写入的光盘驱动器655。可以在示例性操作环境下使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器641通常由诸如接口640的数据媒体接口连接至系统总线621,磁盘驱动器651和光盘驱动器655通常由任选地可移动存储器接口的数据媒体接口连接至系统总线621。为说明特定示例起见,磁盘驱动器651和光盘驱动器使用数据媒体接口640。
以上描述和在图6中示出的驱动器及其相关联的计算机存储介质为计算机610提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图6中,硬盘驱动器644被示为存储操作系统644、应用程序645、其它程序模块646和程序数据647。注意,这些组件可以与操作系统634、应用程序635、其它程序模块636和程序数据637相同或不同。操作系统644、应用程序645、其它程序模块646和程序数据647在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如键盘662和定点设备661(通常指鼠标、跟踪球或触摸垫)向计算机610输入命令和信息。其它输入设备(未示出)可以包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线621的用户输入接口660连接至处理单元620,但也可以由其它接口或总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。监视器691或其它类型的显示设备也经由接口,诸如视频接口690连接至系统总线621。除监视器691以外,计算机也可以包括其它外围输出设备,诸如扬声器和打印机,它们可以通过输出外围接口695连接。
计算机610可使用至一个或多个远程计算机,诸如远程计算机680的逻辑连接在网络化环境中操作。远程计算机680可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机610描述的许多或所有元件。图6中所示逻辑连接包括局域网(LAN)671和广域网(WAN)673,但也可以包括其它网络。这样的网络环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN网络环境中使用时,计算机610通过网络接口或适配器670连接至LAN 671。当在WAN网络环境中使用时,计算机610通常包括调制解调器672或用于通过诸如因特网等WAN 673建立通信的其它装置。调制解调器672可以是内置或外置的,它可以通过用户输入接口660或其它合适的机制连接至系统总线621。在网络化环境中,相对于计算机610所描述的程序模块或其部分可以存储在远程存储器存储设备中。作为示例,而非限制,图6示出了远程应用程序685驻留在远程计算机680上(例如,在远程计算机680的存储器中)。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
尽管在结构化特征和/或方法性动作专用的语言中描述了各种示例性方法、设备、系统等,但可理解,所附权利要求书中定义的主题不必限于所述的特定特征或动作。相反,特定特征和动作被揭示为实现所要求保护的主题的示例性形式。
权利要求
1.一种其上存储数据结构的计算机可读介质,包括数据块,其中所述数据包括命令呈现器呈现图形用户界面的一个或多个组件的批消息。
2.如权利要求1所述的计算机可读介质,其特征在于,包括网络缓冲器。
3.如权利要求1所述的计算机可读介质,其特征在于,所述批消息中的至少某些消息是源自在与执行所述呈现器的远程设备通信的主机计算机上执行的应用程序。
4.一种在主机设备与呈现设备之间通信以便控制所述呈现设备的用户界面的方法,所述方法包括生成消息;在缓冲器中将所述消息编码为数据块;以及将所述数据块传递给所述呈现设备。
5.如权利要求4所述的方法,其特征在于,所述生成包括,接收从遥控器对所述远程设备发出的一个或多个命令,且响应于所述一个或多个命令,由所述主机设备上执行的应用程序生成所述消息。
6.如权利要求5所述的方法,其特征在于,所述应用程序依赖于所述主机设备上执行的用户界面框架来生成所述消息以及在所述缓冲器中编码所述消息。
7.如权利要求4所述的方法,其特征在于,所述主机设备与呈现设备之间的通信异步地进行。
8.如权利要求4所述的方法,其特征在于,所述通信根据包括用于呈现图形和动画的图形模型的通信协议来进行。
9.如权利要求4所述的方法,其特征在于,所述呈现设备以一种帧速率显示图像的帧,且其中,所述呈现设备在不中断以所述帧速率显示帧的情况下根据所述数据块来呈现。
10.如权利要求4所述的方法,其特征在于,所述缓冲器包括网络缓冲器。
11.如权利要求4所述的方法,其特征在于,还包括从所述呈现设备到所述主机设备传递数据。
12.如权利要求4所述的方法,其特征在于,还包括在所述缓冲器中编码与所述消息无关或可任选地与一条或多条后继消息相关的附加信息。
13.如权利要求4所述的方法,其特征在于,还包括在所述传递之后,在所述主机设备接收从所述呈现设备发送的消息之前,生成附加消息、在缓冲器中将所述附加消息编码成数据块以及将所述数据块传递给所述呈现设备。
14.如权利要求4所述的方法,其特征在于,所述通信根据通信协议进行,所述通信协议包括从由以下各种对象构成的组中所选的至少一个成员作为所述协议中的根对象的代理对象、表示逻辑计算站点的上下文对象、用于在运行时从呈现端口回调的呈现端口回调对象、用于报告大量数据传送状态的数据缓冲器回调对象以及表示远程节点上的大量数据的数据缓冲器对象。
15.如权利要求4所述的方法,其特征在于,最后一条消息包括命令所述呈现设备向所述主机设备发送消息的调用。
16.如权利要求4所述的方法,其特征在于,所述消息包括一个或多个图形或动画命令。
17.如权利要求4所述的方法,其特征在于,所述消息包括与图形或动画的软件接口相关联的一个或多个命令。
18.如权利要求4所述的方法,其特征在于,所述消息中的一条或多条依赖于从由以下各种对象构成的组中所选的至少一个成员持有绘制命令包的呈现构建器对象、表示呈现容器的窗口对象、表示离散坐标空间的视觉对象、用于报告所述呈现设备的状况的设备回调对象、表示呈现技术驱动器的呈现设备对象、表示图像位的逻辑容器的表面对象、表示图像位的物理容器的表面池对象、用于修改容器范围中的色彩空间的渐变对象、为动画控制服务的动画管理器对象、对动画进行报告的动画回调对象、以及描述逻辑动画序列的动画对象。
19.如权利要求4所述的方法,其特征在于,包含多个缓冲器。
20.一种含有用于在主机设备上执行一种方法的计算机可执行指令的计算机可读介质,所述方法包括生成消息;在缓冲器中将所述消息编码成数据块;以及将所述数据块传递给呈现设备。
全文摘要
在主机设备与呈现设备之间通信以便控制该呈现设备的用户界面的示例性方法包括,生成消息、在缓冲器中将消息编码成数据块以及将数据块传递给呈现设备。也揭示了各种其它示例性方法、设备、系统等。
文档编号G06F9/44GK1842088SQ20061007142
公开日2006年10月4日 申请日期2006年3月17日 优先权日2005年3月30日
发明者F·M·霍格尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1