用于发送数字场景描述数据的方法以及发送器和接收器场景处理设备转让专利

申请号 : CN201180072421.X

文献号 : CN103688240B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : B.斯坦克

申请人 : 梦芯片技术股份有限公司

摘要 :

公开了一种用于将数字场景描述数据从发送器场景处理设备发送至至少一个接收器场景处理设备的方法。所述方法包括步骤:通过为场景描述数据和相关渲染命令设置优先级、和根据各自的优先级动态地将所述场景描述数据和相关渲染命令进行重新排序,以便减少发送所需的带宽和/或适应于不可靠带宽,在所述发送器场景处理设备中编码场景描述数据和渲染命令;以及将经编码的场景描述数据和相关渲染命令发送至所述至少一个接收器场景处理设备,用于由所述至少一个接收器场景处理设备解码并执行与所发送的场景描述数据相关的渲染命令,以实现动画数字图形。

权利要求 :

1.用于将数字场景描述数据和相关渲染命令从发送器场景处理设备发送至至少一个接收器场景处理设备的方法,其中,所述场景包括图片、图片的帧、和图片序列中的至少一个,渲染是利用计算机编程指令从至少一个模型或场景生成图像的处理,所述渲染命令包括指令,其用于当在处理设备上执行所述指令时,从数字场景描述数据获得动画图形,其特征在于通过以下步骤在所述发送器场景处理设备中编码场景描述数据和渲染命令:

通过对产生在动画数字图形中对于用户主要可见的图形的场景描述数据和相关渲染命令设置用于在所述编码的步骤中动态地重新排序的提高的优先级,为场景描述数据和相关渲染命令设置优先级,所述提高的优先级是对于被设置用于产生具有次级可见性或在动画数字图形中不可见的图形的场景描述数据和相关渲染命令的优先级而提高的,和根据各自的优先级动态地将所述场景描述数据和相关渲染命令进行重新排序,以便减少发送所需的带宽和/或适应于不可靠带宽;以及将经编码的场景描述数据和相关渲染命令发送至所述至少一个接收器场景处理设备,用于由所述至少一个接收器场景处理设备解码并执行与所发送的场景描述数据相关的渲染命令,以实现动画数字图形。

2.如权利要求1所述的方法,其特征在于

首先将压缩的数字场景描述数据从所述发送器场景处理设备发送至所述至少一个接收器场景处理设备,以及

然后通过将具有较高质量的之前压缩的数字场景描述数据从所述发送器场景处理设备发送至所述至少一个接收器场景处理设备来更新所述数字场景描述数据。

3.如权利要求1或2所述的方法,其特征在于,编码被提供用于描述场景的场景点的顶点数据,并将经编码的顶点数据从所述发送器场景处理设备发送至所述至少一个接收器场景处理设备,所述顶点数据包括被提供用于渲染与所述顶点数据相关的对象的相应场景点的位置和相应场景点的属性,所述顶点数据是数字场景描述数据的一部分。

4.如权利要求1或2所述的方法,其特征在于,利用差值压缩来编码场景描述数据,其中计算并发送实际场景描述数据与之前一组相关场景描述数据的差。

5.如权利要求1或2所述的方法,其特征在于,将由所述发送器场景处理设备提供且被分配了第一分辨率的数字场景描述数据的渲染分辨率转变至连接至接收器场景处理设备的显示器所需的第二分辨率,所述转变的步骤在所述接收器场景处理设备中执行,并包括:将用于场景的场景描述数据乘以相应的转变因子,用于相关场景描述数据的所述转变因子依赖于所述第一分辨率、所需的第二分辨率、以及对于每个场景描述数据或场景的视点。

6.如权利要求1或2所述的方法,其特征在于,在接收器场景处理设备被阻碍不能继续处理数字数据的时段超过预设时限的情况下,将同步信息从所述至少一个接收器场景处理设备之一发送至所述发送器场景处理设备。

7.如权利要求1或2所述的方法,其特征在于,测量用于发送经编码的场景描述数据和相关渲染命令的信道的特性,并根据实际测量的所述信道的特性而控制对所述场景描述数据和相关渲染命令的动态地重新排序。

8.如权利要求1或2所述的方法,其特征在于,将场景描述数据缓存在接收器场景处理设备的数据存储器中,当在所述发送器场景处理设备中编码所述场景描述数据和相关渲染命令时,省略考虑已经缓存在相关接收器场景处理设备中这种场景描述数据,并且,当解码并执行与缓存的场景描述数据相关的渲染命令时,由所述接收器场景处理设备从所述存储器重新使用这种缓存的场景描述数据。

9.如权利要求8所述的方法,其特征在于,通过设置优先级为零来省略考虑已经缓存在相关接收器场景处理设备中这种场景描述数据。

10.发送器场景处理设备,包括用于存储数字场景描述数据的数据存储器、至少一个处理单元以及用于连接至至少一个接收器场景处理设备以将场景描述数据发送至所述至少一个接收器场景处理设备的至少一个接口,其特征在于,所述发送器场景处理设备包括编码器,用于通过以下操作在所述发送器场景处理设备中编码场景描述数据和相关渲染命令,其中,所述场景包括图片、图片的帧、和图片序列中的至少一个,渲染是利用计算机编程指令从至少一个模型或场景生成图像的处理:通过对产生在动画数字图形中对于用户主要可见的图形的场景描述数据和相关渲染命令设置用于在所述编码的步骤中动态地重新排序的提高的优先级,为所述场景描述数据和相关渲染命令设置优先级,所述提高的优先级是对于被设置用于产生具有次级可见性或在动画数字图形中不可见的图形的场景描述数据和相关渲染命令的优先级而提高的,和根据各自的优先级而动态地将所述场景描述数据和相关渲染命令进行重新排序,以便减少发送所需的带宽和/或适应于不可靠带宽,所述渲染命令包括指令,用于当在处理设备上执行所述指令时,从存储在所述数据存储器中的数字场景描述数据获得动画图形,其中所述发送器场景处理设备被布置为经由所述至少一个接口将场景描述数据和相关的已经编码的渲染命令发送至至少一个接收器场景处理设备。

11.如权利要求10所述的发送器场景处理设备,其特征在于,所述发送器场景处理设备被布置为执行根据权利要求1-8的方法的步骤中的至少一个。

12.接收器场景处理设备,包括用于存储数字场景描述数据的数据存储器、至少一个处理单元以及用于互连至至少一个发送器场景处理设备的至少一个接口,其特征在于,所述接收器场景处理设备包括被布置用于解码根据权利要求1至8之一的方法编码和发送的渲染命令的解码器,其中,所述接收器场景处理设备被布置为执行与所述渲染命令相关的经编码的指令,用于当在所述处理单元上执行所述指令时,从经由所述接口从所述至少一个发送器场景处理设备接收的数字场景描述数据获得动画图形。

13.如权利要求12所述的接收器场景处理设备,其特征在于,所述接收器场景处理设备被布置为执行根据权利要求1-8的方法的步骤中的至少一个。

说明书 :

用于发送数字场景描述数据的方法以及发送器和接收器场景

处理设备

技术领域

[0001] 本发明涉及一种用于将数字场景描述数据从发送器场景处理设备发送至至少一个接收器场景处理设备的方法。
[0002] 本发明还涉及一种发送器场景处理设备和接收器场景处理设备。

背景技术

[0003] 存在将数字场景描述数据从发送器场景处理设备发送至至少一个接收器场景处理设备、且进一步使用所发送的具有高质量的数字场景描述数据的需要。然而,发送待使用的高质量数字场景描述数据需要在合理的时间内发送大量数据且在合理的时间内处理数字场景描述数据。
[0004] 在本领域中,用于减少待发送的数据量的渲染过程是公知的。渲染是利用例如在处理单元上执行的计算机编程指令从至少一个模型或场景生成图像的处理。场景包含定义的语言或数据结构中的对象。场景包括属性,例如用于定义几何形状、视点、纹理(texture)、光照和阴影,用以描述场景。对包括属性的数字场景描述数据执行渲染命令产生动画数字图像或图形图像文件。
[0005] 本申请中所述的术语“场景”包括至少一个图片、图片的帧、或图片序列(即视频)。
[0006] 多个图形处理工具对于公众可用,包括OpenGL(开放图形库),其提供程序指令和相关可执行文件用于渲染处理。
[0007] 作为开放资源,包括渲染库的OpenGL规范编码资源可以无需许可证而在因特网中从OpenGL机构(http://www.opengl.org)获得。在OpenGL参考手册中进一步描述了OpenGL:OpenGL的官方参考文档,1.4版本(第4版),2004年3月26日,编辑Dave Schreiner,专业人员Addison-Wesley;以及Dave Schreiner的OpenGL编程指南:学习OpenGL的官方指南,3.0和
3.1版本(第7版),2009年7月31日,专业人员Addison-Wesley。
[0008] US2007/0153004A1公开了为利用嵌入式系统图形应用编程接口显示动画文件而提供的动画文件播放器。为了在图形功能的移动设备上显示动画文件信息,将动画文件存储并转换为图形渲染信息。将图形渲染信息传递至移动设备图形子系统,在所述移动设备图形子系统中,处理图形渲染信息以获得像素数据。在移动设备显示器上显示像素数据的动画。
[0009] WO2009/040313A1公开了用于使用OpenGL库将图形应用远程可视化的方法和系统。本地计算机系统包括OpenGL库和编码器,所述编码器用于将操作系统专用的OpenGL接口操作转变为独立于操作系统的用于在本地计算机系统与一个或多个远程计算机系统之间发送的操作。至少一个远程计算机系统包括解码器,其用于将独立于操作系统的操作解码为用于第二种操作系统的第二OpenGL接口的操作。所述操作可以转至(relay to)视窗系统专用的渲染方法。

发明内容

[0010] 现有技术的问题是在设备上处理数字场景描述数据需要大量有限的处理资源和有限的电池电力、以及用于发送为了更高分辨率显示而所需的数字场景描述数据量的带宽是有限的。
[0011] 本发明的目的通过如权利要求1所述的方法、以及如独立权利要求所述的发送器和接收器场景处理设备实现。
[0012] 根据本发明,所述方法包括步骤:
[0013] -通过以下步骤在发送器场景处理设备中编码场景描述数据和渲染命令:
[0014] -为场景描述数据和相关渲染命令设置优先级,及
[0015] -根据各自的优先级动态地将场景描述数据和相关渲染命令进行重新排序,以便减少发送所需的带宽和/或适应于不可靠带宽;以及
[0016] -将经编码的场景描述数据和相关渲染命令发送至至少一个接收器场景处理设备,用于由所述至少一个接收器场景处理设备解码并执行与所发送的场景描述数据相关的渲染命令,以实现动画数字图形。
[0017] 根据本发明,将场景描述数据和相关的经编码的渲染命令从发送器场景处理设备发送至至少一个接收器场景处理设备,用于解码并执行与所发送的场景描述数据相关的经编码的渲染命令。
[0018] 因此,发送器场景处理设备可以是具有有限电池容量的移动设备,因为执行渲染命令是在接收器场景处理设备上执行的。
[0019] 此外,发送数字场景描述数据所需的带宽在发送数字场景描述数据时显著减少,且独立于这些经编码的渲染命令。
[0020] 根据本发明,动态地将场景描述数据和相关渲染命令进行重新排序,从而具有显著减少用于待发送至至少一个接收器场景处理设备的数据的带宽的效果。
[0021] 通过重新排序场景描述数据和相关渲染命令而进行编码并且在接收器场景处理设备中执行渲染命令、而非发送经编码的已经渲染的动画数字图形,由此,压缩方式具有在没有质量损失的情况下维持数字场景描述数据的完整信息的优点。
[0022] 所述方法、以及相关的发送器场景处理设备和接收器场景处理设备的效果是在发送器场景处理设备与至少一个接收器场景处理设备之间的不可靠且尤其是窄带的链路上提供快速的反应速度和流畅的动画。带链路也可以是宽带链路。除了有线链路(例如,TCP/IP链路和USB链路)之外,该方法对包括分布式无线链路的无线链路(例如,WiFi和Bluetooth(蓝牙))也起到很好的作用。实现本发明的大部分的无线链路具体地是高负载且难处理的无关的干扰连接,例如许多并发的、无关的且可变的活动链路作为干扰方的多WiFi接入点环境。
[0023] 优选的是,首先将压缩的数字场景描述数据(特别是纹理数据)从发送器场景处理设备发送至至少一个接收器场景处理设备。这将导致所得到的渲染的动画数字图形的质量下降。为了实现改善的图形质量,通过将具有较高质量的之前压缩的数字场景描述数据从发送器场景处理设备发送至至少一个接收器场景处理设备而稍后更新数字场景描述数据。因此,可用带宽可以用于例如以未压缩形式更新具有较高质量的数字场景描述数据。因此,可以首先使用具有下降的质量的动画数字图形,其中稍后通过更新数字场景描述数据来改善动画数字图形的图片质量,而无需干扰或中断动画数字图形的流。
[0024] 在优选实施例中,从发送器场景处理设备发送至至少一个接收器场景处理设备的数字场景描述数据包括被提供用于描述场景的场景点的顶点数据。所述顶点数据包括被提供用于渲染与顶点数据相关的对象的相应场景点的位置和相应场景点的属性。
[0025] 本申请中所述的顶点是描述二维(2D)、两个半(2.5D)或三维(3D)空间中的场景点的数据结构。2.5D是使得一系列图像或场景当它们实际上不是三维时伪造成或看似为三维(3D)的图形投影。
[0026] 当利用平坦表面(例如三角形)的阵列来描述对象时,由顶点来定义表面的角落的位置和其它属性。因此,三角形的角点(corner points)的顶点与角点的位置关联,并且与包括顶点处的颜色、近似曲面在角点的位置处的法线以及相关三角形的表面的纹理和反射的附加图形属性关联。因此,顶点数据包括数据组,其可以优选地被编码并被以经编码和压缩的形式从发送器场景处理设备发送至至少一个接收器场景处理设备,以便减少数据量。
[0027] 因为可以独立于顶点数据(例如在无需编码且因此没有质量损失的情况下)而发送例如对于定义纹理有益的图像数据,所以,即使通过编码减少数据量,也仍然可以以高分辨率和高质量显示动画图形。
[0028] 优选的是,利用差值(delta)压缩来编码或压缩数字场景描述数据、并且特别是顶点数据。在差值压缩的方法中,计算并发送实际数字场景描述数据与前一组对应的数字场景描述数据的差。在无损数据编码的现有技术中,差值压缩是公知的。差值压缩的方法具有与发送一个图片或帧本身的场景描述数据相比数据量显著减少的优点。
[0029] 此外,优选的是,与具有次级(较低)可见性或在动画数字图形中不可见的(非优先的)场景描述数据和相关渲染命令相比,以更高的优先级发送在动画数字图形中对于用户主要可见的场景描述数据以及与这种优先的(prior)场景描述数据相关的渲染命令。
[0030] 因此,可用带宽和包括电池电力的资源主要用于编码和发送动画数字图形的主要可见的内容。以较低优先级处理在背景中或不可见的具有次要(minor)优先级的数据内容。场景描述数据和相关渲染命令的优先级可以根据从利用相关渲染命令渲染这些场景描述数据而得到的图形内容的可见性而设置。此对处理划分优先级(priorisation)的方法可以仅应用于编码和发送渲染命令、或者应用于编码和发送渲染命令以及发送(可选地,利用预先压缩/编码)相关数字场景描述数据两者。
[0031] 通过忽略与动画数字图形的不可见部分相关的渲染命令、以及可选地忽略相关数字场景描述数据本身,减少了发送所需的处理资源和带宽。当以减低的优先级处理具有次级可见性的场景描述数据和相关渲染命令时,处理资源和带宽可以在可用时被使用,而不减少用于处理动画图形的主要可见内容的数据的可用资源。
[0032] 此外,优选的是,通过在接收器场景处理设备中处理数字场景描述数据,将由发送器场景处理设备提供的数字场景描述数据的渲染分辨率转变为连接至接收器场景处理设备的显示器所需的分辨率。因此,由接收器场景处理设备来使动画数字图形适应于接收器场景处理设备所需的分辨率。因此,节省了发送器场景处理设备上的包括可用电池电力的处理资源。通过利用根据如权利要求1中所主张的本发明的方法来发送数字场景描述数据,在不显著损失质量的情况下实际适应于接收器场景处理设备上的分辨率变为可能。
[0033] 所述发送仅需要发送器场景处理设备和至少一个接收器场景处理设备两者的松散的或依赖于优先级的同步。原因是独立于渲染命令而发送数字场景描述数据,其中在接收器场景处理设备中对数字场景描述数据执行以减少的数据量发送的渲染命令。
[0034] 在接收器场景处理设备被阻碍而不能继续处理数字数据的时段超过预设时限的情况下,优选的是,至少一个接收器场景处理设备向发送器场景处理设备发送同步信息。
[0035] 在优选实施例中,测量用于传输经编码的场景描述数据和相关渲染命令的信道的特征。关于信道的实际测量特征而控制动态地进行重新排序的步骤。信道的这些特征是例如数据传输统计、反应时间(例如ping(侦测)时间)等。这种关于信道的特性的信息通常用作接口设备的输出、或者可以利用标准固件资源来实施。
[0036] 根据信道特性控制编码处理(即动态重新排序的步骤)的优点具有使要以最优方式发送至接收器场景处理设备的数据量适应于信道的可用带宽的优点。
[0037] 此外,优选的是,将场景描述数据缓存在接收器场景处理设备的数据存储器中。当在发送器场景处理设备中编码场景描述数据时,例如通过设置优先级为零而不考虑这种已经缓存在相关接收器场景处理设备中的场景描述数据。因此不再次发送所缓存的场景描述数据。当解码并执行与所缓存的场景描述数据相关的渲染命令时,接收器场景处理设备可以从存储器中重新使用这种缓存的场景描述数据。这具有显著减少要从发送器场景处理设备发送至至少一个接收器场景处理设备的数据量的效果。
[0038] 所述目的还通过发送器场景处理设备实现,所述发送器场景处理设备包括用于存储数字场景数据的数据存储器、至少一个处理单元和用于连接至至少一个接收器场景处理设备以将场景描述数据发送至所述至少一个接收器场景处理设备的至少一个接口。
[0039] 根据本发明的发送器场景处理设备包括编码器,其用于通过以下步骤在发送器场景处理设备中编码场景描述数据和相关渲染命令:
[0040] -为场景描述数据和相关渲染命令设置优先级,及
[0041] -根据各自的优先级而动态地将场景描述数据和相关渲染命令进行重新排序,以便减少发送所需的带宽和/或适应于不可靠带宽。
[0042] 所述渲染命令包括指令,其用于当在处理设备上执行所述指令时,从存储在数据存储器中的数字场景描述数据获得动画图形。所述发送器场景处理设备被布置为经由至少一个接口将场景描述数据和相关的被编码的渲染命令发送至至少一个接收器场景处理设备。
[0043] 优选地,所述发送器场景处理设备例如通过利用处理单元上执行的可执行文件的软件编程而被布置为执行意图在发送器场景处理设备上执行的前述步骤中的至少一个。
[0044] 所述目的还通过接收器场景处理设备实现,所述接收器场景处理设备包括用于存储数字场景描述数据的数据存储器、至少一个处理单元和用于互连至至少一个发送器场景处理设备的至少一个接口。所述接收器场景处理设备包括被布置用于解码经编码的渲染命令的解码器,其中,所述接收器场景处理设备被布置为执行与渲染命令相关的经编码的指令,其用于当在处理单元上执行所述指令时,从经由接口从至少一个发送器场景处理设备接收的数字场景描述数据获得动画图形。
[0045] 根据所述发送器场景处理设备,优选地,所述接收器场景处理设备被布置为执行意图在接收器场景处理设备上执行的步骤中的至少一个(例如,通过要在处理单元上执行的软件程序可执行文件)。

附图说明

[0046] 下面,利用附图通过实施例来例示地描述本发明。其示出:
[0047] 图1示出通过数据链路相互互连的发送器场景处理设备和接收器场景处理设备的框图;
[0048] 图2示出用于将数字场景描述数据从发送器场景处理设备发送至至少一个接收器场景处理设备的方法的流程图。

具体实施方式

[0049] 图1示出通过数据链路3而链接在一起的发送器场景处理设备1和接收器场景处理设备2的集合的框图。此数据链路可以是例如利用如TCP/IP或USB协议等的数据传输协议的有线链路。更优选地,数据链路3是利用如WiFi或Bluetooth等的数据协议的无线链路。窄带数据链路(例如,WiFi和Bluetooth)在许多目标设备中已经可用,使得可以通过固件更新来实施本发明。
[0050] 至少一个接收器场景处理设备2连接至显示单元4,显示单元4被提供用于显示通过在接收器场景处理设备2上渲染数字场景描述数据而处理的动画图形。
[0051] 发送器场景处理设备1包括例如以可编程图形处理器为形式的处理单元5、以及连接至处理单元5且被提供用于存储数字场景描述数据的数据存储器6。可选地,可以将软件程序可执行文件存储在数据存储器6中。
[0052] 此外,发送器场景处理设备1包括渲染命令库7,其包括用于渲染数字场景描述数据以实现动画图形的可执行文件和/或命令。这种渲染命令库可以包括例如根据OpenGL开放源标准的OpenGL库。然而,根据用户的需要且根据当设计发送器场景处理设备1时所选择的具体实施方式,发送器场景处理设备1也可以支持任何其它渲染命令语言,如VirtualGL、WebGL等。
[0053] 发送器场景处理设备1还包括接口8,用于连接至至少一个接收器场景处理设备2。接口8可以是支持例如有线数据传输协议TCP/IP、USB等或无线数据传输协议WiFi、Bluetooth等的有线或无线接口8。这些接口8通常以硬件块(集成电路)、固件或它们的组合的形式可用。
[0054] 此外,发送器场景处理设备1包括编码器9,其用于编码场景描述数据和渲染命令库7中存储的相关渲染命令。编码器9例如通过软件编程或以逻辑硬件块的形式被布置为:利用对场景描述数据和相关渲染命令设置优先级并关于之前设置的优先级而重新排序场景描述数据和渲染命令的步骤来编码场景描述数据和相关渲染命令,使得减少了发送场景描述数据和相关渲染命令所需的带宽和/或使场景描述数据和相关渲染命令的序列适应于不可靠带宽。
[0055] 为了重新排序场景描述数据和相关渲染命令,与高优先级的场景描述数据和相关渲染命令相比,编码器9缓存(中间存储)具有较低优先级的场景描述数据和相关渲染命令。当重新排序场景描述数据和相关渲染命令时,编码器9可有权访问高速缓存存储器,用于改变且优化场景描述数据和相关渲染命令的序列顺序,以实现前述目的。
[0056] 优选地,接口8包括测量单元,其用于测量信道(即数据链路3)的特性。这些特性是例如数据传输速率、反应时间(例如ping时间)等。如虚线箭头所示,接口8控制编码器9、以及特别是设置优先级、缓存和重新排序的步骤,以使编码器9的数据流适应于所测量的信道特性。
[0057] 选择之一是首先以压缩的形式将数字场景描述数据从发送器场景处理设备1发送至至少一个接收器场景处理设备2。结果是高度减少了用于发送此种数据所需的带宽。然而,当基于压缩数据显示动画图形时存在质量损失的缺点,因为当压缩数据时存在信息损失。为了克服此缺点,稍后将通过例如以非压缩形式将具有较高质量的之前压缩的数字场景描述数据从发送器场景处理设备1发送至至少一个接收器场景处理设备2来更新数字场景描述数据。可以使用未用于发送具有较高优先级的数据的任何可用带宽,在数据分组中发送场景描述数据。结果是动画图形的质量稍后改善了。
[0058] 在实践中,当稍后改善图形质量时,动画图像在开始时的较低质量对于用户没有显著影响。
[0059] 另一选择是编码顶点数据以压缩顶点数据。数字场景描述数据包括顶点数据等,其中顶点数据被提供用于描述场景的场景点。顶点数据包括相应场景点的位置和相应场景点的属性。所述属性可以包括关于纹理、照度、视点、线宽、缩放因子、颜色、相关表面的反射率、和近似曲面在顶点的位置处的法线的信息。
[0060] 当编码数字场景描述数据、特别是顶点数据时,可以应用差值压缩的方法。在现有技术中,差值压缩被公知用于无损数据编码。原则上,当执行差值压缩的方法时,计算并发送实际场景描述数据与前一组相关的场景描述数据的差。因此,不是实际场景描述数据的绝对值被编码和发送,而是实际场景描述数据与前一组相关的场景描述数据的差被编码和发送。与绝对数据相比,差值数据量显著降低。
[0061] 另一选择是对产生动画数字图形中对于用户主要可见的图形的场景描述数据和相关渲染命令设置提高的优先级。因此,这些产生处于观察者的焦点的动画图形的场景描述数据和相关渲染命令优先于涉及动画数字图形的背景图形或甚至不可见部分的场景描述数据和相关渲染命令。
[0062] 接收器场景处理设备2还包括连接至数据链路3和发送器场景处理设备1的接口10。接口10对应于发送器场景处理设备的接口8。
[0063] 接收器场景处理设备2还包括图形处理单元11和数据存储器12,数据存储器12被提供用于存储包括数字场景描述数据的数字场景描述数据。
[0064] 接收器场景处理设备2还包括解码器13,其用于解码从发送器场景处理设备1接收的数据流。所述数据流包括数字场景描述数据和相关渲染命令的序列。
[0065] 接收器场景处理设备2的图形处理单元11被布置为:执行与从发送器场景处理设备1接收的数字场景描述数据相关接收的渲染命令。优选地,图形处理单元11由相应的固件控制以执行渲染命令并执行用于图形处理的渲染。
[0066] 可选地,图形处理单元11可以有权访问包括可执行文件的渲染命令库14,可执行文件例如为控制图形处理单元11执行具体渲染步骤的固件或软件代码的形式。于是,由接收器场景处理设备2从发送器场景处理设备1接收的渲染命令可以被限于涉及接收器场景处理设备2的渲染命令库14中存储的可执行文件的码字。
[0067] 于是,渲染命令库7可以被限制于这样的码字的库,而无需将可执行文件存储在发送器场景处理设备1中。
[0068] 在图1中所示的实施例中,接收器场景处理设备2(可选地)连接至被提供用于显示动画数字图形15的显示器4。所述动画数字图形15包括被提供用于描述场景的场景点16的顶点数据。
[0069] 图2示出根据本发明的用于发送数字场景描述数据和相关渲染命令的方法的流程图。
[0070] 在步骤a)中,基于数字场景描述数据的流,编码场景描述数据(即SDD)和相关渲染命令。
[0071] 编码的步骤a)包括:用于为场景描述数据SDD和相关渲染命令设置优先级的步骤a1)、以及根据在步骤a1)中设置的各自的优先级动态地将场景描述数据SDD和相关渲染命令进行重新排序的步骤a2),以便减少发送所需的带宽和/或适应于不可靠带宽。
[0072] 编码的步骤a)包括缓存场景描述数据和相关渲染命令的步骤,以在将降低的优先级分配给此数据的情况下存储这种数据。当缓存这种数据时,编码器9稍后可以访问此数据,以将此数据包括在场景描述数据和相关渲染命令的流中。因此,例如由于相关动画图形场景处于观察者的焦点的可见性而具有高优先级的场景描述数据和相关渲染命令优先于具有较低优先级的场景描述数据和相关渲染命令。
[0073] 然后在步骤b)中,通过数据链路3将重新排序的数字场景描述数据和相关渲染命令的序列从发送器场景处理设备1发送至至少一个接收器场景处理设备2。应注意,在优选实施例中,场景描述数据SDD将与渲染命令通过同一信道(即数据链路3)分开发送。因此,步骤b)被划分为用于发送数字场景描述数据SDD的步骤b1)和用于发送渲染命令的步骤b2)。数字场景描述数据SDD和相关渲染命令也可以通过不同信道彼此分开地发送、或者可以经由同一信道而合并在共同的数据分组中发送。
[0074] 在接收器场景处理设备2中,在步骤c)中接收所发送的数字场景描述数据SDD和相关渲染命令。
[0075] 然后,在步骤d)中,解码所接收的数字场景描述数据SDD,并可选地解码相关渲染命令。
[0076] 在步骤e)中,例如利用接收器场景处理设备2的渲染命令库14中存储的相关可执行文件,执行与已经从发送器场景处理设备1接收的数字场景描述数据相关的渲染命令。这些相关的数字场景描述数据也可以是已经缓存在接收器场景处理设备2中以用于后续对同一数据内容的重用的数据。因此,仅允许从发送器场景处理设备1或任何其它源(例如数据存储介质)发送一次重复的数据内容至接收器场景处理设备2。
[0077] 执行渲染命令以处理数字场景描述数据的结果是可以在步骤f)中立即在显示器上显示、或者被存储用于稍后使用的动画图形。
[0078] 下面,给出本发明的优选实施例:
[0079] 具体化(crystallization):在用于RemoteGPU(远程图形处理单元)设置的多部件装置中实施根据本发明的方法。这实施了用于在低且不可靠带宽链路上的场景合成元素的协议编码器、动态信道估计器和解码器方法。
[0080] 实施本发明的系统采用用于在数据链路上有效预处理、编码、发送、并解码2D、2.5D和3D场景合成元素、以及在给定时间帧和带宽内在连续的(subsequent)或者非连续但足够的相关场景之间的变换的方法和装置。该方法是将窄链路内的位置优化为对于具体显示对象最优的最小数据传输的熵。
[0081] 本发明的关键方法描述了在此最优点上如何处理源-宿交互以仍然实现出色的反应速度。下面将对此进行详细描述。
[0082] 在后续章节中描述的关键创新是:
[0083] ●引入优化方法,其取代传统的帧同步的或等步的、且因此为显著冗余的、并因此为非常低效的对潜在用户的显示通信、以及本质上异步的以应用为目的的场景变换特征。
[0084] ●特定于每个内容相关的技术的最大冗余降低使用
[0085] ●有关反应速度与较不显著的视觉内容的辨识、去耦、优先级划分和再处理[0086] ●用于动态信道估计、编码和解码的处理高效装置。
[0087] ●基于被辨识的用户交互和预估计的处理需要的节电。
[0088] ●先验和按需信道特性估计器
[0089] ●先验和按需应用通信特性估计器
[0090] 为实施根据本发明的方法而推荐的装置可以至少出现在以下组合实施例中:
[0091]
[0092] 主要的、但并非所有可能的宿-解码器实施例是:
[0093] ●插头:微型解码器装置。线缆插头尺寸。通过如HDMI或DVI-I的标准电气接口连接。外部安装在显示设备的插头处。
[0094] ●STB:中等尺寸的解码器装置。通过如DVI、HDMI、DisplayPort(显示器端口)线缆的标准电气接口连接。可以包括附加的TV-STB功能。
[0095] ●集线器:中等尺寸的解码器装置。通过如DVI、HDMI、DisplayPort的标准线缆连接至显示器。包括用于例如标准键盘和鼠标的附加USB集线器。
[0096] ●嵌入:解码器装置被直接实施为显示器本身内部的芯片或ASIC(的一部分)。
[0097] ●全部:任何以上选择(插头、STB、集线器或嵌入)解决方案同样适合。用户基于进一步的功能或价格来选择。
[0098] 可能的宿-解码器实施例的设置的各种细节为:
[0099] ●TV:用户远离显示器。外部接口:HDMI。
[0100] ●监视器:用户直接坐在显示器旁边。因此,对于例如标准鼠标和键盘设备的线缆连接是共同的地方。这些是物理地连接至解码器盒且通过相同介质而传输至实现编码器的处理单元的输入设备。典型的实施例是例如对接站(Docking-station)。
[0101] ●投影仪:此设备常常安装在房间的天花板上。用于连接膝上型计算机的显示器线缆在会议室的桌子处可获得。接收器场景处理设备(解码器)连接至此线缆。这是HDMI、或DVI-I,包含Sub-D VGA。
[0102] ●汽车:没有标准接口,因此通常直接嵌入。人机接口设备(HID)的非常具体的设置:方向盘上的键和控制。
[0103] 一个典型的使用情况是使用方向盘键选择电话中的联系人的字母。然后,选择导航。电话中的3D地图应用以流畅的动画和瞬时反应速度在汽车的主显示器上显示。
[0104] ●眼镜:这些是近眼(Near-to-Eye)显示器(NED)。整个装置必须非常轻且节能,以用于通过一个微型电池对整个解码器系统进行无线的供电。
[0105] ●PoS:销售点(Point of Sale)。此显示设备在公共场所显示广告。此实施例受益于精细的或抢眼的动画广告。通常是许多这些显示器以菊花链链接,并且受益于与固有的多解码器渲染能力高效通信。
[0106] 其它实施例是可能无缝的且显著受益于整合了根据本发明的方法:
[0107] ●超静音工作站:连接至具有流畅的GUI的多用户服务器PC
[0108] ●基于云的服务:演示内容流编解码器(CoDec)
[0109] ●WebGL(基于OpenGL|ES2.0)流加速器。
[0110] 在所推荐的实施例中的与装置相关的用户交互选择主要为:
[0111] ●单视图
[0112] О仅本地显示:这是旧标准使用
[0113] О仅远程:本地LCD关闭(节电),如在膝上型计算机上的触摸屏
[0114] ●双视图
[0115] О镜像同一场景
[0116] ■相同分辨率:标准方法。不推荐。低显示器利用率
[0117] ■重新渲染的全屏视图:像素精确的场景放大,不缩放(not scaling)[0118] О扩展的桌面:从桌面OS公知
[0119] ●多解码器视图
[0120] О镜像:所有显示器显示相同内容、但以原始(不同的)分辨率
[0121] О扩展的桌面:可能,但不推荐
[0122] ●同一3D场景的视图锥截体(viewport frustum)
[0123] ОMUD(多用户地下城)游戏的几个用户具有它们自己的3D视角
[0124] О自动立体3D显示器对于为从他们自己的视角观看同一场景的许多用户获得(许多)多于传统的2个视图。这允许用户移动。不再存在窄最佳点。
[0125] 本发明的有效实施例至少可以实施上述选择的全部或子集的任意组合。
[0126] OpenGL(具体地为OpenGL|ES2.0API示例)的利用不构成对于实施本发明至任何具体渲染API的方法的适用性的任何限制。
[0127] 在不可靠接口上的预渲染对象的环境中所主张权利的是:
[0128] 顶层视图:在以下一般显示对象之间进行区分:
[0129] 1.媒体内容:优质的或自己创建的内容,如压缩视频、图像、音频
[0130] 2.2D和2.5D GUI:这考虑到对传统桌面图形传统(legacy)的支持
[0131] 3.3D和基于向量的GUI:这可以是华丽的动画(2D、2.5D或3D)GUI、以及游戏[0132] 因为第1点已经在现有技术中被很好地覆盖了、但是也是所建议的装置的一部分,所以以下的权利主张围绕第2点、尤其是第3点。2D和2.5D GUI被认为是与3D视点垂直的一个(2D)或几个平行(2.5D)表面。
[0133] 物理接口
[0134] 用于实施本发明的物理接口依赖于期望的应用复杂度和开始时间需求。所述装置使得可以使用标准有线和无线链路。对于大部分基于向量和对象的渲染的GUI应用,Bluetooth足够了。为了加速应用开始时间,推荐Bluetooth3.0。对于开始时间,为了高吞吐量而使用WiFi-Phy,而在运行期间,通常Bluetooth2.1足够了。这与WiFi或任何有线或无线帧同步接口相比显著降低了耗电。
[0135] 相关图形元素
[0136] 如X11(Linux)或GDI(Windows)的典型PC图形子系统处置分别构成所显示的程序的资源。这也应用于智能电话图形子系统。这是:
[0137] ●位图资源,例如,如图标和背景
[0138] ●具有具体字形和大小的再次出现的字母的文本
[0139] ●场景构成描述,例如,在xy位置上且具有xy大小、颜色的矩形框(即程序窗口),包含即到其它资源(例如图标)的链接或引用
[0140] ●静态显示:α阴影波特-达夫(Porter Duff)合成
[0141] ●动态显示:欧几里得、相似、仿射或其它投影变换
[0142] ●OpenGL|ES元素,诸如顶点、顶点属性、顶点阵列、矩阵、顶点着色器、片段着色器、或具有不同特性的纹理
[0143] 场景传送协议—一般概览
[0144] STP协议由两个独立的上行链路和一个下行链路连接组成。由编码器初始化连接。流在不同端口上运转。因此,在服务质量(QoS)控制的环境中,可以进一步提升性能。优选方法由三个连接—每个服务器将QoS评估结果发送回客户端的第三信道—组成。这些信息提供关于例如当前渲染速度(最小、最大和平均FPS)、负载条件的信息,其可以被客户端用于优化网络流量。
[0145] ●命令流:用于推送实际GL命令。这些很小,但是对于流畅的用户体验来说是关键的,因为它们引导例如GUI变化和渲染。
[0146] ●资源流:用于推送二进制资源,诸如纹理。这些在网络通信方面较大。
[0147] ●统计环:用于异步地实施控制环以基于所测量的信道统计、服务器统计和渲染-HW统计动态地优化客户端行为。最小主题组是:粗糙的IP网络带宽、ping延时、最大帧尺寸、最小帧尺寸、渲染fps
[0148] 这两个上行链路通信信道之间的分离确保大的纹理上传不阻碍渲染管线。此外,其允许服务器做出关于渲染还未到达的资源的决定。例如,可以将缺少的纹理渲染为纯色(例如灰色)、背景色、或方格图案(iOS风格),或者使用低分辨率占位符纹理。替代地,可以引导服务器等待(阻碍)此具体资源到达。
[0149] 基于向量和对象的方法被如下组织:
[0150] 设置:未修改的GL、GL扩展、更好地展现、打破环、新命令、群组(group)控制命令,例如WM.、解码器统计。
[0151] ●编码器和解码器的松散同步
[0152] ●依赖于对象和视觉重要性的逐步传输和多步骤缓存
[0153] О标准的、未修改的GL资源(例如纹理)的传输
[0154] ●标准的、未修改的EGL和GL命令的传输
[0155] ●优化的展现的GL命令的传输
[0156] ●易于可用性方法的装置(apparatus ease of usability methods)[0157] ●较低带宽解决方案:场景-图形编码优先级划分
[0158] ●可用性改进方法
[0159] 编码器和解码器的同步
[0160] 装置实施松散同步。大部分编码器方法不需要与解码器紧密同步、或者完全不需要同步。这尤其适用于那些没有任何用户交互的动画。其它应用根据设备能力和利用率而增加每秒渲染的帧的数目。这允许此应用在更快的HW上显得更流畅。为了使得能在此现在更长的环上也采用这种动态应用而不经受同步环内延迟,编码器在本地提供动态渲染指导信息。这基于环上信道估计和宿GPU能力。因为信道可能改变此测量的吞吐量和延迟扩散信息,所以基于上一次的渲染的帧的吞吐量更新对该应用的相应渲染指导。根据环境条件和装置能力,此精细时间窗是可变的。
[0161] 通过对本地或远程渲染硬件的不可预见的阻碍而引入了进一步的同步方法。该应用没有完整的先验知识,其命令将实际上在有关的时间段内阻碍渲染硬件。通常,包括渲染命令的大部分命令耗费可忽略的时间,而一些很少发生的事件将使得通常毫无来由地快的命令被延迟几毫秒。这是由渲染硬件的实际实施所导致的。GPU阻碍是因为其用完了内存、需要在执行一些在前工作的不同核心上同步、等待缓冲器读取到达等。
[0162] 根据本发明的编码器的主要优点是与导致编码器HW的阻碍几乎完全脱钩。对于GL命令的应用可见的执行时间接近零,因为它们正被缓冲且未被执行。因此,客户端应用会假设不真实的帧速率,并且实际上是无限帧速率。对于与渲染HW可以导致延迟且能够缓冲此相比差得多的信道定时行为,将编码器队列实施方式参数化。如果阻碍时间超过预设限制,则解码器方法是将此伪阻碍和下降(drop)警告报告回编码器。所有短期和部分中期延迟的总和的倒数是所报告的每秒帧速率。此均衡的可能帧速率随后通过阻碍而被施行。
[0163] 以下条件将使得GL功能调用阻碍客户端应用:
[0164] ●存储器阈值:如果累积的命令的数量超过特定装载量(fill-level),例如,200个未发送的命令在发送缓冲器中、或者分配给未发送资源的内存量达到上限阈值。
[0165] ●初始块Fps:由客户端引入以覆盖(cap)处于给定水平的帧速率,例如60Fps。如果现场信道估计和实际渲染HW重放(replay)统计指示余量(headroom),则此初始值可以增加。
[0166] ●eglSwapBuffers调用:如果已经有在命令队列中调度的两个或更多个类似的调用仍未发送至服务器,则此被阻碍。在eglSwapBuffers调用之间的命令展现出全帧更新。这忽略局部更新,局部更新被独立地处置。如果编码器装置调度了多于2两个全帧,则通知客户端。
[0167] 阻碍并重新分组网络流量
[0168] ●默认地,从EGL API调用提取的命令被插入队列中,并且依赖于信道估计和计算的分组优先级,其被编码器写入到套接字(socket)。当帧完成时,套接字被刷新。这通过接收到eglSwapBuffers命令而被触发。
[0169] ●然而,为了确保在拥塞的或带宽非常有限的传输介质(例如WiFi或Bluetooth)上的完美性能,附加的分组(grouping)和优先级划分方法影响网络调度(dispatch)。这些规则另外对命令项进行分组或阻碍命令项,并以对人的观点重要性特定的布置发送它们。根据信道估计和实际应用需求,这包括无损和有损方法。所述装置基于当前条件下的人的感知模型而确保最大流畅渲染结果。
[0170] ●物理链路优化对于TCP/IP分组尺寸例如考虑具体的最大片段尺寸(MSS)作为匹配的块尺寸,以确保不发生IP分段。因为MSS的尺寸改变,所以当在公知环境中运行时,这通过配置而被初始化为理智、默认和可控的。自动优化的自动调节在运行时间期间被调用,并且基于作为信道估计反馈的解码器反馈。
[0171] ●在解码器装置中实现类似的方法以限制所需吞吐量的相应预测,并且用此先验已知的性能来引导DVFS和更深睡眠模式的需求,用于依赖于例如显示定时以及得出的场景复杂度需求的增强型节电需要。
[0172] 缩放:分辨率优化方法
[0173] 解码器自动转变解码器渲染分辨率以适合全屏。在实践中,应用假设其以本地分辨率(例如,其写入的800×480像素)进行渲染,而解码器实际上以例如1920×1080进行像素准确渲染。
[0174] 如果经编码的场景视点的长宽比与解码显示设备不同,则解码器装置对于较多宽屏的原始内容使用上下加框模式(letter boxing)并且对于较少宽屏原始内容使用左右加框模式(Pillar boxing),以保留原始长宽比。
[0175] 如果在经编码的和经解码的分辨率之间,分辨率在任一或两个方向上不同,则以下方法适用:
[0176] 解码器对于仿射变换矩阵计算在场景设置所需的矩阵,以将顶点坐标从由运行在编码器侧的应用定义的视点线性地转置到解码器侧的最优坐标系统。所得到的视锥然后如应用所预期地被渲染,但是以不同的(通常为高得多的)分辨率被栅格化。例如:所得到的非正交线在高得多的分辨率上也呈现画得完美的像素,其中所得到的非正交线根据传统位图缩放会具有丑陋的阶梯(step)。
[0177] 诸如纹理的位图内容必然经受被绘制在高得多的分辨率的表面上,因为如果纹理的原始分辨率太低,则那会需要位图缩放。为了减少在更高分辨率显示器上变得更差的此公知影响,解码器用最高质量缩放(例如,解码器平台的双线性纹理渲染)来替换应用可能已经调用以期望低分辨率显示的低质量缩放命令。替代地,因为编码器可以报告真正的最大分辨率显示,所以应用可以选择更高分辨率纹理。此方法也用于应对带宽拥塞。这里,经二次采样的非常低分辨率的纹理首先通过窄带接口被发送、渲染并显示。在背景中,更好质量、更高分辨率、且因此更大量的批量数据被传输,并在到达时被解码器替换。应用来自短期和更长期或永久缓存方法的其它方法。
[0178] 管理的多缓存
[0179] 当编码场景描述数据和相关渲染命令时,用于重新排序的三种不同缓存数据是初步感兴趣的。在持久缓存策略中,使得数据在持久数据存储器中可用,从而可以在处理动画图形的完整时间期间访问数据。这需要相比于短或长的动态缓存策略而增加存储器容量,同时具有极大灵活性和重新排序过程的效果的优点。在短或长的动态缓存策略中,数据仅被缓存长或短时间,使得重新排序仅考虑动画图形的序列的时间限制的时间帧。优点是需要减少的存储器容量。
[0180] 对于窄带宽条件的资源流优化
[0181] 本方法的优选实施方式允许逐步地更新纹理资源。客户端开始可以发送资源的大力压缩的JPEG版本,并稍后用全质量图像更新它。此方法消除了从解码器到编码器的全部往返时间,因为编码器不需要等待解码器应答。当程序在客户端侧生成纹理资源时,编码器从其池中将唯一本地id分配给纹理资源。例如,编码器向纹理提供为5的id。编码器利用作为5的此id号将请求推送至解码器,其中资源将被此特定客户端引用至此id号。客户端执行实际的芯片上资源创建命令,并获得例如为11的id。现在,解码器知道客户端纹理id5是实际id11。此映射永不需要被传递回至编码器。客户端当识别资源时将继续使用5,并且服务器将此映射为11。
[0182] 对于连接至同一解码器的多个编码器设置,解码器为每个连接的编码器分别维持此映射。
[0183] 较低带宽解决方案:
[0184] 基于场景图形的编码优先级划分方法
[0185] 在对于与此发明的此目的相比不同的目的的不同上下文中已知以下方法。它们已经被用于改善在本地图形加速系统中对具有非常高性能的目标点的更高复杂度场景的处理。完成此以在详细处理图元(primitives)并对最后反正没有显示的分段进行渲染之前,剔除掉图元来减少图元,以获得更多可用计算能力以渲染可见像素。
[0186] 所述装置将在新应用场景中使用这些已知方法作为优先编码方法,其区分在显著带宽限制的情形到远程顶点缓冲器下的传输相关性和优先级。这些方法所得到的效果是快得多的应用开始和较快的非先验已知的场景在低带宽条件下随着高复杂度场景而改变。称为“视锥剔除(view-frustum culling)”、“遮挡(occlusion)剔除”、“小特征剔除”和“细节级(LOD)节点”的传统的高性能方法现在变成:
[0187] ●视锥重新排序
[0188] 可以如金字塔型树桩(=视锥)那样将实际的和瞬间的2D视图视角描绘成3D场景。已经定义了一些3D场景内容,但是它们在此视锥外部,因此(最初)不可见。
[0189] 所述装置利用“视锥剔除”确定或测试方法将位于视锥内部的顶点划分优先级为优先级1因子。根据外部多远的距离,其它顶点的优先级降低。因此,如在前实施例中,外部元素不被剔除,但是被划分优先级并重新排序,用于也通过甚至更小频带的接口而传输或初始可见部分的更快可见性。
[0190] ●遮挡(occlusion)重新排序
[0191] 基于实际视图视角,一些元素隐藏在从当前视角可见的其它元素后面。在在前实施例中剔除(去除)了隐藏的元素。编码器将可见顶点划分优先级为优先级1因子。在当前视图视角中,根据之前确定的带宽拥塞情形,将隐藏的顶点划分更低优先级。
[0192] ●细节级(LOD)节点减少
[0193] 这是不相关减少方法,如果所描述的图在3D场景中更远,则该方法将多边形、顶点的数目减少至低于特定阈值。这考虑到准确地与前景相比,人类视觉系统通常不注意背景中的细节。
[0194] 编码器在非常低的带宽条件下将具有较小z坐标的顶点划分优先级为较高优先级因子。这立即传输前景中的图元,而背景细节可能最初不完整,但被加载在背景中,并在之后被渲染。
[0195] 如果用许多顶点描述具有非常高的复杂度的场景、但其仍未到达前景,则此方法尤其也被推荐用于不那么窄的带宽情形。
[0196] ●小特征减少
[0197] 这是不相关减少方法。通常不需要小特征来提供3D场景的主要印象。这被认为是有损编码选择。这仅被推荐作为最后的方法,并且因此利用较低优先级表达式因子来计算。
[0198] 该方法是将具有在至少两个相反方向上距其它顶点较近的坐标的顶点划分为较低优先级。而且,较小的三角形被划分为较低优先级。那意味着边具有较高优先级,而以较低优先级编码通过要在边之间的表面上显示的几个顶点描绘的细节。
[0199] 这些方法仅作为最后的手段用于非常低带宽情形中、或者用于加速太高复杂度的场景。此方法仍然允许对用户交互的相当快的反应、但是减少了用于在3D场景内移动视角的直接能力。在背景中仅最大努力传输较低优先级的元素。在稍后传输一些细节的情况下,当此细节到达解码器时包括了此细节。因此,如果用户不快速移动,则用户将更有可能不被此硬挤压的情形打扰。
[0200] 以下用于数据压缩的编码方法可以优选地用于该方法中:
[0201] 顶点/索引数据的压缩
[0202] 利用传统的基于LZ的方法,浮点或16/32比特整数数据压缩得不好。因为大部分相邻的顶点坐标被编码,所以从差值编码实现显著的尺寸减小。这编码基值,并通过短得多的表示方式来表示一个值与下一个值之间的差“差值”。因此,相邻顶点称作仅使用偏移的共同基编码。
[0203] 差值压缩也用于增量传输。编码器维持基本数据的完整拷贝。当传输其它数据块时,从旧数据中减去新数据并发送差。通常可以用比完整数据少得多的数据来表示差信息,从而承诺对于动态纹理数据的高增益。
[0204] 熵压缩
[0205] 较不高效但更常规的用于命令协议流编码器的方法是通过使用例如zlib的已知无损熵压缩方法对于基本编码流的应用。每个帧被封装并作为压缩包被传递。解码器将此分解回为各个命令并分别处理它们。
[0206] 熵压缩的具体实施例为:
[0207] 命令和对象特定的编码主张(claims)
[0208] 网络格式通过尽可能地对较低数据、但可见的反应命令进行优先级划分,以确保快速反应,如以下对用户立即可见。利用16比特命令ID+16比特大小来编码报头。
[0209] 功能参数以最紧凑的可能方式被编码。例如,GLenum:通常在CPU上为32比特,但是仅16比特被使用。这被编码为16比特并被封装。
[0210] 模板掩码在CPU上被处理为32比特,但是模板缓冲器只有8比特,因此这里对于本发明使用分段封装。
[0211] 颜色值是CPU上的浮点,但是显示器仅具有8比特。
[0212] 以下方法可以用于改进实施例中:
[0213] 渐进式纹理上传
[0214] 通过独立流与解码器完全异步地发送纹理。存在对于渐进式上传的支持。解码器在发送需要较高吞吐量的高细节纹理之前,首先发送纹理的快速低分辨率经二次采样的版本。编码器缩小比服务器侧GLES驱动器所支持的大的纹理。
[0215] 动态帧成形支持
[0216] 基于来自服务器的反馈,客户端自动调节其FPS渲染速率以适合服务器/网络性能。
[0217] 冗余命令跳过:编码器维持本地栈拷贝/状态。这通过跳过已经设置了设置值的命令来去除冗余的高优先级命令流量。例如,终端用户应用经常“仅仅为了确定”而在每帧上将状态开关重置为开启。这种行为被检测和跳过。
[0218] 纹理状态跟踪优化
[0219] 对于全球GL状态,编码器高速缓存每个纹理的状态并跳过冗余操作。此优化对于像Qt的工具包尤其有效。
[0220] 如状态改变、顶点属性等的简单功能仅传送几个字节的数据(大部分为0-16、一些为64)。这是:glUseProgram、glTexParameteri、glUniform3f、glFlush、……大约所有OpenGLES2.0功能的一半属于此类别。
[0221] 与在前实施方式是传送如纹理数据、顶点缓冲器、……的批量数据的功能相比,这可以是从几字节到多兆字节的任何大小。每帧更新此数据中的一些。示例为:glTexImage2D、glBufferData、glDrawElements、……这些功能是主要的带宽瓶颈![0222] 特殊改进:glVertexAttribPointer。在本地渲染的OpenGL|ES中,此功能实际不上传数据至图形芯片。而是,该功能仅更新到图形数据的指针。直到下个glDrawArrays或glDrawElements调用之前都不读取实际数据。优选实施方式状态跟踪由顶点属性指针引用的此数据,因为那在引起调用(draw call)之间每次都改变。
[0223] 相反,传送小数量的功能是例如识别着色器变量的字符串、缓冲器列表、……这通常少于100字节,并且不被频繁使用,即,不太可能在每帧中出现。属于此类别的是:glUniformLocation、glDeleteTextures、……传送字符串的功能是着色器源、或二进制代码通信,其典型的范围是100字节至10k字节。不被频繁使用、即不太可能在每帧中出现的是glShaderSource、glShaderBinary。这两者均通常通过常见的基于LZ的无损压缩方法而压缩良好。本发明的改进实施方式利用延缓的索引和标准压缩传送。
[0224] 说明书中使用的缩写具有以下含义:
[0225] API   应用编程接口
[0226] DVI-I   数字视频接口-集成的
[0227] DHCP   动态主机配置协议
[0228] DTV   数字电视
[0229] DVFS  动态电压和频率缩放
[0230] EGL   嵌入式系统图形库
[0231] FPS   每秒帧
[0232] GL   图形库
[0233] HDMI   高分辨率多媒体接口
[0234] HW   硬件
[0235] LCD   液晶显示器
[0236] LRU   最近最少使用的
[0237] MSS   最大分段大小
[0238] MUD   多用户地下城
[0239] OpenGL   开放图形库
[0240] OpenGL|ES  图形库嵌入式解决方案
[0241] OS   操作系统
[0242] PoS   销售点
[0243] QoS   服务质量
[0244] QR   快速响应
[0245] RemoteGPU  远程图形处理单元
[0246] SSID   服务组标识符
[0247] STP   场景传输协议
[0248] Sub-D VGA  子-D视频图形阵列
[0249] TCP/IP   传输控制协议/因特网协议
[0250] TV   电视
[0251] USB   通用串行总线
[0252] VNC   虚拟网络计算
[0253] WebGL   网络图形库
[0254] WM   视窗管理器