针对拆分XR的跨层流量优化的制作方法

文档序号:24728818发布日期:2021-04-16 22:32阅读:212来源:国知局
针对拆分XR的跨层流量优化的制作方法
针对拆分xr的跨层流量优化
1.本申请要求于2019年9月16日递交的美国非临时专利申请no.16/572,017的优先权,该美国非临时专利申请要求于2018年9月17日递交的印度临时专利申请no.201841034992的优先权,其整体内容以引用方式并入本文。
技术领域
2.本公开涉及图像内容信息的处理,更具体地,涉及拆分(split)渲染的内容的处理以向显示器输出。


背景技术:

3.拆分渲染系统可以包括通过网络(例如,无线网络、有线网络等)进行通信的至少一个主机设备和至少一个客户端设备。主机设备充当无线接入点,并使用一个或多个无线通信标准(例如,ieee 802.11)将图像内容信息(可能包括音频视频(av)数据、音频数据和/或视频数据)发送给参与特定分组的通信会话的一个或多个客户端设备。图像内容信息可以在客户端设备处播放。更具体地,每个参与的客户端设备处理所接收的图像内容信息以在其显示器和音频设备上呈现。另外,主机设备可以对图像内容信息执行至少一些处理以在客户端设备上呈现。
4.主机设备和一个或多个客户端设备可以是无线设备,或者具有无线通信功能的有线设备。在一个示例中,作为有线设备,主机设备和客户端设备中的一个或多个可以包括具有无线通信功能的电视、监视器、投影仪、机顶盒、dvd或蓝光光盘播放器、数字录像机、膝上型或桌面型个人计算机,视频游戏机等视频游戏机等。在另一个示例中,作为无线设备,主机设备和客户端设备中的一个或多个可以包括移动电话、具有无线通信卡的便携式计算机、个人数字助理(pda)、便携式媒体播放器或者具有无线通信功能的其它闪存设备,包括所谓的“智能”电话和“智能”平板或平板电脑,或者其它类型的无线通信设备(wcd)。
5.在一些示例中,客户端设备中的至少一个可以包括可穿戴显示设备。可穿戴显示设备可以包括穿戴在用户身上的任何类型的有线或无线显示设备。作为示例,可穿戴显示设备可以包括佩戴在用户的头部上的无线头戴显示器或无线头盔式显示器(whmd),以便将一个或多个显示屏放置在用户的眼前。主机设备典型地负责对图像内容信息执行至少一些处理,以显示在可穿戴显示设备上。可穿戴式显示设备典型地负责准备图像内容信息以在可穿戴式显示设备上显示。


技术实现要素:

6.在一个示例实施例中,讨论了一种渲染帧以向用户显示的方法。该方法包括发起与服务器的无线连接。该方法包括确定用户的姿势信息。该方法包括,响应于从服务器接收触发器分组,通过无线连接向服务器发送该姿势信息。该方法包括通过无线连接从服务器接收渲染的帧,该渲染的帧基于发送的姿势信息被渲染用于显示。该方法包括将接收到的渲染的帧显示给用户。发送的姿势信息可以是6自由度(6dof)姿势。该方法可以包括在向用
户显示之前基于最近的姿势信息在接收到的渲染的帧上执行异步时间扭曲(asynchronous time warping,atw)。无线连接可以是wifi反向许可模式连接,并且服务器是wifi网络上的接入点(ap)。该方法可以包括如果没有接收到触发器分组,则在预定时间段之后发送姿势信息。渲染的帧可以是用于向用户显示的三维虚拟现实(vr)或增强现实(ar)内容的第一视图。触发器分组是以规则的间隔发送的。触发器分组是响应于确定没有渲染的帧要发送而发送的。触发器分组是响应于需要姿势信息来渲染帧而发送的。触发器分组是由在服务器上运行的应用层模块发起的。
7.在另一个示例实施例中,讨论了一种渲染帧以向用户显示的装置。该装置包括无线通信模块,用于发起与服务器的无线连接并接收触发器分组。该装置包括传感器,用于确定用户的姿势信息。该装置包括处理器,被配置为响应于从服务器接收触发器分组,通过无线连接向服务器发送该姿势信息,通过无线连接从服务器接收渲染的帧,该渲染的帧基于发送的姿势信息被渲染用于显示。该装置包括显示器,用于将接收到的渲染的帧显示给用户。发送的姿势信息可以是6自由度(6dof)姿势。其中,处理器还被配置为在向用户显示之前基于最近的姿势信息在接收到的渲染的帧上执行异步时间扭曲(atw)。无线连接可以是wifi反向许可模式连接,并且服务器是wifi网络上的接入点(ap)。处理器进一步被配置为如果没有接收到触发器分组,则在预定时间段之后发送姿势信息。渲染的帧可以是用于向用户显示的三维虚拟现实(vr)或增强现实(ar)内容的第一视图。触发器分组是以规则的间隔发送的。触发器分组是响应于确定没有渲染的帧要发送而发送的。触发器分组是响应于需要姿势信息来渲染帧而发送的。触发器分组是由在服务器上运行的应用层模块发起的。
8.在另一个示例实施例中,一种用于渲染帧以向用户显示的装置。该装置包括无线通信部件,用于发起与服务器的无线连接。该装置包括传感器部件,用于确定用户的姿势信息。该装置包括用于处理的处理器部件,被配置为响应于从服务器接收触发器分组,通过无线连接向服务器发送该姿势信息,通过无线连接从服务器接收渲染的帧,该渲染的帧基于发送的姿势信息被渲染用于显示;以及显示器部件,用于将接收到的渲染的帧显示给用户。发送的姿势信息可以是6自由度(6dof)姿势。该处理器部件可以进一步被配置为在向用户显示之前基于最近的姿势信息在接收到的渲染的帧上执行异步时间扭曲(atw)。无线连接可以是wifi反向许可模式连接,并且服务器是wifi网络上的接入点(ap)。该处理器部件可以进一步被配置为如果没有接收到触发器分组,则在预定时间段之后发送姿势信息。渲染的帧可以是用于向用户显示的三维虚拟现实(vr)或增强现实(ar)内容的第一视图。触发器分组是以规则的间隔发送的。触发器分组是响应于确定没有渲染的帧要发送而发送的。触发器分组是响应于需要姿势信息来渲染帧而发送的。触发器分组是由在服务器上运行的应用层模块发起的。
9.在另一个示例实施例中,一种存储指令的非暂时性计算机可读存储介质,该指令被执行时使一个或多个处理器执行一种方法。该方法包括,响应于从服务器接收触发器分组,通过无线连接向服务器发送该姿势信息。该方法包括通过无线连接从服务器接收渲染的帧,该渲染的帧基于发送的姿势信息被渲染用于显示。该方法包括将接收到的渲染的帧显示给用户。发送的姿势信息可以是6自由度(6dof)姿势。该方法可以包括在向用户显示之前基于最近的姿势信息在接收到的渲染的帧上执行异步时间扭曲(atw)。无线连接可以是wifi反向许可模式连接,并且服务器是wifi网络上的接入点(ap)。该方法可以包括如果没
有接收到触发器分组,则在预定时间段之后发送姿势信息。渲染的帧可以是用于向用户显示的三维虚拟现实(vr)或增强现实(ar)内容的第一视图。触发器分组是以规则的间隔发送的。触发器分组是响应于确定没有渲染的帧要发送而发送的。触发器分组是响应于需要姿势信息来渲染帧而发送的。触发器分组是由在服务器上运行的应用层模块发起的。
10.在附图和以下描述中阐述了本公开的一个或多个示例的细节。根据说明书、附图和权利要求书,其它特征、目的和优点将是显而易见的。
附图说明
11.图1是图示包括主机设备和可穿戴显示设备的拆分渲染系统的框图。
12.图2是更详细地图示图1的主机设备和可穿戴显示设备的框图。
13.图3是更详细地图示图2的多媒体处理器的示例的框图。
14.图4是更详细地图示图2的多媒体处理器的另一示例的框图。
15.图5是图示具有深度的时间扭曲(warping)的示例的过程图。
16.图6是图示具有深度的空间扭曲的示例的过程图。
17.图7是图示拆分渲染的第一示例过程的流程图。
18.图8是图示拆分渲染的第二示例过程的流程图。
19.图9图示了示例拆分xr系统架构。
20.图10图示了拆分xr系统架构的示例时序图。
21.图11图示了改进的示例拆分xr系统架构。
22.图12图示了第一示例xr服务器系统架构。
23.图13图示了第二示例xr服务器系统架构。
具体实施方式
24.拆分渲染系统可以在服务器和客户端之间划分诸如虚拟现实(vr)或增强现实(ar)内容之类的扩展现实(xr)内容的渲染。例如,服务器可以处理帧渲染而客户端头盔式显示器(hmd)处理用户的6自由度(6dof)姿势跟踪。服务器和hmd可以在wifi反向许可(reverse direction grsnt,rdg)模式链路上进行通信,在该链路上将通信控制给予服务器应用程序层逻辑。这允许服务器仅在需要用于渲染时才将来自hmd的wifi上行链路(ul)流量用于姿势信息,同时保留wifi下行链路(dl)上的带宽用于发送渲染内容的帧。这可以减少竞争并提高信道效率。
25.将了解到,成像系统可以生成用于显示视频的360度图像(例如,画布)。例如,成像系统可以在虚拟现实(vr)头戴式耳机上输出用户视野内的画布的一部分。
26.一些成像系统可以被拆分渲染。示例拆分渲染系统可以包括主机设备或服务器(例如,计算机、云等),该主机设备或服务器生成压缩的渲染视频缓存(和压缩的渲染音频缓存),以及客户端设备(例如,头盔式显示器(hmd)),该客户端设备对压缩的渲染视频缓存(和音频缓存)进行解压以显示在客户端设备上。
27.在虚拟现实应用中,用户佩戴hmd设备,该设备包括用于接收、解码、处理和显示图像内容的处理电路。hmd设备接收的图像内容基于hmd设备的姿势信息(例如,俯仰、横滚和偏航)。例如,hmd设备相对频繁地并且在一些情况下连续地将姿势信息发送到服务器(例
如,主机设备)。服务器基于姿势信息,对从hmd设备的特定姿势可以看到的图像内容进行编码和发送。
28.hmd上的电路(例如,视频解码器或gpu)接收图像内容并重构图像内容以生成帧。该电路可以重复这样的操作以生成多个帧,该多个帧形成所显示的视频。但是,在一些情况下,图像内容信息可能会在传输中丢失,或者可能存在太多错误,无法正确重构帧的各个部分。术语“丢失”一般用于表示未接收到图像内容信息的情况以及接收到图像内容但对于图像重构而言太损坏的情况。短语“缺少图像内容”也类似地用于指传输中丢失或损坏的图像内容。
29.图1是图示包括主机设备10和可穿戴显示设备16的拆分渲染系统2的框图。在图1的示例中,拆分渲染系统2包括主机设备10和仅一个客户端设备,即可穿戴显示设备16。在其它示例中,拆分渲染系统2可以包括附加客户端设备(未示出),其可以包括可穿戴显示设备、无线设备或者具有无线通信功能的有线设备。
30.在一些示例中,拆分渲染系统2可以符合由wi

fi联盟定义的wi

fi direct(wfd)标准。wfd标准支持通过wi

fi网络(例如无线局域网)进行设备到设备的通信,其中设备协商其作为接入点或客户端设备的角色。拆分渲染系统2可以包括一个或多个支持多个无线网络的基站(未示出),通过该无线网络可以在主机设备10、可穿戴显示设备16和其它参与客户端设备之间建立对等(peer

to

peer,p2p)分组通信会话。通信服务提供商或其它实体可以使用基站作为网络集线器来集中操作和管理这些无线网络中的一个或多个。
31.根据wfd标准,主机设备10可以充当无线接入点并且从可穿戴显示设备16接收建立p2p分组通信会话的请求。例如,主机设备10可以使用实时流协议(real

time streaming protocol,rtsp)在主机设备10和可穿戴显示设备16之间建立p2p分组通信会话。可以建立通过无线网络的p2p分组通信会话,该无线网络诸如是使用无线通信标准(例如,对先前802.11标准的改进的ieee 802.11a、802.11g或802.11n)的wi

fi网络。
32.一旦建立了p2p分组通信会话,主机设备10就可以将图像内容信息发送到可穿戴显示设备16和参与该特定p2p分组通信会话中的任何其它客户端设备,该图像内容信息可以包括音频视频(av)数据、音频数据和/或视频数据。例如,主机设备10可以使用实时传输协议(real

time protocol,rtp)将图像内容信息发送到可穿戴显示设备16。图像内容信息可以在可穿戴显示设备16的显示屏,以及可能地也在主机设备10处被播放。应当理解,主机设备10上的内容显示仅是一个示例,并非在所有示例中都是必要的。
33.例如,在游戏应用中,主机设备10可以是从多个用户中的每个用户接收信息的服务器,每个用户都佩戴示例可穿戴显示设备16。主机设备10可以基于主机设备10接收的信息选择性地将不同的图像内容发送到每个设备,例如可穿戴显示设备16。在这样的示例中,可能不需要主机设备10显示任何图像内容。
34.可穿戴显示设备16可以处理从主机设备10接收的图像内容信息,以在其显示屏和音频设备上呈现。可穿戴显示设备16可以用尺寸和重量受限制以适合手持设备的结构的计算机处理单元和图形处理单元执行这些操作。另外,主机设备10可以执行图像内容信息的至少一些处理以呈现在可穿戴显示设备16上。
35.可穿戴显示设备16的用户可以经由包括在可穿戴显示设备16中或连接到可穿戴显示设备16的接口(诸如人机接口设备(hid))提供用户输入。hid可以包括一个或多个触摸
显示器、对输入对象(例如,手指、手写笔等)敏感的输入设备、键盘、轨迹球、鼠标、操纵杆、遥控器、麦克风等。如图所示,可穿戴显示设备16可以经由通用串行总线(usb)连接到一个或多个身体传感器和致动器12,并且身体传感器和致动器12可以经由蓝牙连接到一个或多个配件14。
36.可穿戴显示设备16将所提供的用户输入发送到主机设备10。在一些示例中,可穿戴显示设备16通过被称为用户输入返程信道(user input back channel,uibc)的反向信道架构来发送用户输入。以这种方式,主机设备10可以响应在可穿戴显示设备16处提供的用户输入。例如,主机设备10可以处理接收到的用户输入,并且将用户输入的任何效果应用于发送到可穿戴显示设备16的后续数据。
37.主机设备10可以是无线设备或具有无线通信能力的有线设备。在一个示例中,作为有线设备,主机设备10可以包括具有无线通信能力的电视、监视器、投影仪、机顶盒、dvd或蓝光盘播放器、数字录像机、膝上型或桌面型个人计算机、视频游戏机等等。主机设备10的其它示例是可能的。
38.例如,主机设备10可以是存储图像内容的文件服务器,并基于来自显示设备16的用户输入选择性地输出图像内容。例如,主机设备10可以存储360度视频内容,并基于用户输入可以输出360度视频内容的所选部分。在一些示例中,360度视频内容的所选部分可以是预生成和预存储的视频内容。在一些示例中,主机设备10可以使用图1中图示并在下面所有示例中更详细地描述的高端(high end)图形处理单元(gpu)动态地生成图像内容。在主机设备10发送预存储的视频内容的示例中,主机设备10不必一定包括gpu。主机设备10可以靠近可穿戴显示设备16(例如,在同一房间内),或者主机设备10和可穿戴显示设备16可以在不同位置。
39.如图所示,主机设备10可以连接到路由器8,然后经由局域网(lan)连接到(例如,互联网)。在另一个示例中,作为无线设备,主机设备10可以包括移动电话、具有无线通信卡的便携式计算机、个人数字助理(pda),便携式媒体播放器或具有无线通信能力的其它闪存设备(包括所谓的“智能”电话和“智能”平板或平板电脑)或者另一种类型的无线通信设备(wcd)之一。
40.可穿戴显示设备16可以包括穿戴在用户身上的任何类型的有线或无线显示设备。作为示例,可穿戴显示设备16可以包括戴在用户的头上的头戴式显示器或头盔式显示器(hmd),以便将一个或多个显示屏放置在用户的眼睛前面。通常,可穿戴显示设备16的显示屏可以包括各种不同的显示屏之一,诸如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一种类型的显示屏。
41.在一个示例中,可穿戴显示设备16可以包括形成为眼镜的hmd设备,该hmd设备包括一个或多个目透镜中的显示屏,并且还包括要佩戴在用户脸上的鼻梁和镜腿。作为另一个示例,可穿戴显示设备16可以包括形成为护目镜的hmd设备,该hmd设备包括分开的目透镜中的显示屏或单个显示屏,并且还包括至少一条将护目镜保持在用户头部上的带子。尽管可穿戴显示设备16在本公开中主要被描述为hmd,但是在其它示例中,可穿戴显示设备16可以包括穿戴在用户身体的其它部分,诸如用户的脖子、肩膀、手臂或手腕上的显示设备。在替代实施例中,设备16可以是移动手机或其它设备。
42.在图1的示例中,可穿戴显示设备16将传感器和/或致动器数据输出到主机设备
10。传感器和/或致动器数据可以包括指示可穿戴显示设备16的用户的视野和/或姿势的眼姿势数据。响应于接收到传感器和/或致动器数据,主机设备10生成用于渲染帧的图像内容信息。例如,主机设备10可以使用由传感器和/或致动器数据指示的眼睛和设备姿势数据来生成压缩的视频和音频缓存。
43.在一些示例中,从主机设备10到可穿戴显示设备16的传输可能是有损的。例如,主机设备10发送的图像内容信息可能与可穿戴显示设备16接收的图像内容信息不完全相同。图像内容信息可能会在传输中丢失,或者图像内容信息中可能有足够的错误,导致图像内容信息无法使用。
44.这样的传输错误导致可穿戴显示设备16无法重构整个图像帧。由于错误提交或通常丢失的图像内容信息(例如,引用错误提交或未接收到的图像内容的丢失图像内容信息),在重构的图像帧中可能存在间隙。作为示例,主机设备10可以将帧的图像内容信息打包为用于多个可单独解码的条带的图像内容信息。如果用于条带的图像内容信息丢失(例如,未接收到或错误提交),则主机设备10可能无法重构该条带的图像内容。
45.图2是更详细地图示图1的主机设备10和可穿戴显示设备16的框图。为了本公开的目的,主机设备10和可穿戴显示设备16将主要被描述为无线设备。例如,主机设备10可以包括服务器、智能电话或智能平板或其它手持式wcd,并且可穿戴显示设备16可以包括whmd设备。然而,在其它示例中,主机设备10和可穿戴显示设备16可以包括或者无线设备,或者具有无线通信能力的有线设备。
46.在图2图示的示例中,主机设备10包括诸如应用处理器30、无线控制器36、连接处理器38和多媒体处理器42之类的电路。主机设备10可以包括用于控制和执行本公开中描述的操作的附加电路。
47.应用处理器30可以包括控制主机设备10的操作的通用或专用处理器。作为示例,应用处理器30可以基于来自可穿戴显示设备16的请求来执行软件应用。作为响应,应用处理器30可以生成图像内容信息。应用处理器30执行的软件应用的示例是游戏应用。还存在其它示例,诸如视频播放应用、媒体播放器应用、媒体编辑应用、图形用户界面应用、电话会议应用或者其它程序。在一些示例中,用户可以经由诸如键盘、鼠标、麦克风、触摸板或者耦合到主机设备10的另一个输入设备的一个或多个输入设备(未示出)向主机设备10提供输入,以使主机设备10执行该应用。
48.在应用处理器30上执行的软件应用可以包括一个或多个图形渲染指令,其指示多媒体处理器42,该多媒体处理器42包括图1图示的高端gpu,以引起图形数据的渲染。在一些示例中,软件指令可以符合图形应用程序编程接口(api),诸如,例如开放图形库api、开放图形库嵌入式系统(opengl es)api、direct3d api、x3d api、renderman api、webgl api或任何其它公共或专有标准图形api。为了处理图形渲染指令,应用处理器30可以向多媒体处理器42发出一个或多个图形渲染命令,以使多媒体处理器42执行图形数据的一些或全部渲染。在一些示例中,要渲染的图形数据可以包括图形图元的列表,例如,点、线、三角形、四边形、三角形条等。
49.多媒体处理器42可以针对很多不同的视角(例如,视线角度)生成图像内容。因此,多媒体处理器42可以包括gpu,该gpu能够执行操作以在相对短的时间内生成针对很多不同视角的图像内容。
50.如图2中所示,可穿戴显示设备16包括眼姿势传感电路20、无线控制器46、连接处理器48、控制器50、多媒体处理器52和显示屏54。控制器50包括用于可穿戴显示设备16的主控制器,并且控制可穿戴显示设备16的整体操作。
51.控制器50可以包括固定功能电路或可编程电路,其示例包括控制可穿戴显示设备16的操作的通用或专用处理器。用户可以向可穿戴显示设备16提供输入以使控制器50执行一个或多个软件应用。在控制器50上执行的软件应用可以包括例如游戏应用、操作系统、文字处理器应用、电子邮件应用、电子表格应用、媒体播放器应用、媒体编辑应用、图形用户界面应用、电话会议应用或其它程序。用户可以经由诸如键盘、鼠标、麦克风、触摸板或者耦合到可穿戴显示设备16的另一个输入设备的一个或多个输入设备(未示出)向可穿戴显示设备16提供输入。
52.在控制器50上执行的软件应用可以包括一个或多个图形渲染指令,其指示多媒体处理器52进行图形数据的渲染。在一些示例中,软件指令可以符合图形应用程序编程接口(api),诸如,例如开放图形库api、开放图形库嵌入式系统(opengl es)api、direct3d api、x3d api、renderman api、webgl api或任何其它公共或专有标准图形api。为了处理图形渲染指令,应用处理器50可以向多媒体处理器52发出一个或多个图形渲染命令,以使多媒体处理器52执行图形数据的一些或全部渲染。在一些示例中,要渲染的图形数据可以包括图形图元的列表,例如,点、线、三角形、四边形、三角形条等。
53.显示屏54可以包括监视器、电视、投影设备、液晶显示器(lcd),等离子显示面板、发光二极管(led)阵列、电子纸、表面传导电子发射显示器(sed)、激光电视显示器、纳米晶体显示器或另一类型的显示单元。显示屏54可以集成在可穿戴显示设备16内。例如,显示屏54可以是移动电话手机或平板计算机的屏幕。可替代地,显示屏幕54可以是经由有线或无线通信链路耦合到可穿戴显示设备16的单独设备。
54.眼姿势传感电路20可以包括传感器和/或致动器,用于生成指示用户视野的信息。例如,眼姿势传感电路20可以生成眼姿势数据(例如,经由加速度计、眼跟踪电路等),该眼姿势数据指示可穿戴显示设备16的旋转角度和可穿戴显示设备16的位置。
55.如图所示,眼姿势数据从可穿戴显示设备16向主机设备10的传送被图示为路径60。具体地,控制器50可以从眼姿势传感电路20接收眼姿势数据。多媒体处理器52可以从控制器50接收眼姿势数据。无线控制器46将眼姿势数据打包,并且连接处理器48通过无线网络(诸如wi

fi网络40)向主机设备10发送打包后的用户输入。在主机设备10处,连接处理器38接收发送的眼姿势数据,并且无线控制器36解包所接收的用户输入以供多媒体处理器42处理。以这种方式,主机设备10可以针对用户视野的特定眼姿势生成图像内容。
56.通常,主机设备10生成图像内容信息以在显示屏54上呈现。更具体地,多媒体处理器42可以生成用于用户的视野的图像内容信息,该用户视野是由眼姿势传感电路20生成的眼姿势数据指示的。例如,多媒体处理器42可以生成图像内容信息,该图像内容信息指示在用户视野中布置的一个或多个图元,该用户视野是由眼姿势传感电路20生成的眼姿势数据指示的。在一些示例中,多媒体处理器42可以生成表示指示用户视野的二维帧表示的图像内容信息。
57.然后,多媒体处理器42可以对图像内容的帧进行编码,以生成图像内容信息的比特流,以发送到可穿戴显示设备16。多媒体处理器42可以使用诸如在由mpeg

2、mpeg

4、
itu

t h.263、itu

t h.264/mpeg

4,第10部分定义的标准、高级视频编译码(avc)、高效视频编译码(hevc)标准以及此类标准的扩展中所描述的那些各种视频编译码技术的任何一个来对帧进行编码。
58.在图2的示例中,可穿戴显示设备16可以经由路径62从主机设备10接收图像内容信息。为了将图像内容信息从主机设备10传送到可穿戴显示设备16,路径62可以在应用处理器30处开始。
59.应用处理器30提供了一种环境,在其中可以在主机设备10上运行各种应用。应用处理器30可以从内部或外部存储位置和/或与主机设备10相关联的内部或外部传感器或摄像机接收数据,以供这些应用使用。进而,运行在应用程序处理器30上的应用生成图像内容信息,以呈现给主机设备10和/或可穿戴显示设备16的用户。在其它示例中,路径62可以从多媒体处理器42或一些其它功能设备处开始,该其它功能设备或者生成图像内容信息,或者直接从存储位置和/或传感器或摄像机接收图像内容信息。
60.多媒体处理器42可以处理接收到的图像内容信息,以呈现在可穿戴显示设备16的显示屏54上。无线控制器36打包处理后的数据以用于发送。打包处理后的数据可以包括将数据分组为分组、帧或小区,这可以取决于在wi

fi网络40上使用的无线通信标准。然后,连接处理器38使用wi

fi网络40将处理后的数据发送到可穿戴显示设备16。连接处理器38管理主机设备10的连接,包括通过wi

fi网络40与可穿戴显示设备16的p2p分组通信会话,以及通过连接的数据的发送和接收。
61.当连接处理器48从主机设备10接收发送的数据时,图像内容信息的传送在可穿戴显示设备16处沿着路径62继续。类似于主机设备10的连接处理器38,可穿戴显示设备16的连接处理器48管理可穿戴显示设备16的连接,包括通过wi

fi网络40与主机设备10的p2p分组通信会话,以及通过连接的数据的发送和接收。无线控制器46将接收到的数据解包以供多媒体处理器52处理。
62.多媒体处理器52接收的图像内容信息包括指示与帧相关联的姿势的信息。多媒体处理器52还可以接收诸如预测模式、运动矢量、残差数据等的信息,以对经编码图像内容进行解码(例如,用于对图像内容帧的块进行解码)。作为示例,帧可以包括多个可单独解码的条带。多媒体处理器52可以接收诸如针对每个条带内的块的预测模式、运动矢量和残差数据之类的图像内容信息。
63.多媒体处理器52可以以多种方式接收指示与帧相关联的姿势的信息。作为一个示例,每个分组/条带在诸如实时传输协议(rtp)报头的字段中包括渲染姿势。作为另一示例,rtp报头可以包括姿势的时间戳,而不是实际的姿势信息。在这样的示例中,多媒体处理器52可以将由眼姿势传感电路20确定的不同姿势的时间戳存储在缓冲器中。然后,多媒体处理器52可以基于接收到的时间戳和存储在缓冲器中的时间戳(例如,接收到的时间戳是姿势信息的缓冲器中用于确定与帧相关联的姿势信息的条目)来确定与帧相关联的姿势信息。指示与帧相关联的姿势的其它方式也是可能的。
64.在本公开中描述的示例技术中,多媒体处理器52可以使用帧的姿势信息来扭曲图像内容以填充帧中不能重构的部分。这种帧的部分填充可以用于错误隐藏或作为构造帧的一部分。
65.例如,沿着路径62,诸如在连接处理器38的输出、wi

fi网络40的输出、连接处理器
48的输出和/或无线控制器46的输出处,可能会有分组的丢失或者分组中可能存在错误,以致多媒体处理器52无法重构包括在那些分组中的图像内容。多媒体处理器52可以用先前帧的扭曲的图像内容中的图像内容来替换当前帧的丢失图像内容(例如,多媒体处理器52无法重构的当前帧的一部分)。
66.例如,多媒体处理器52可以确定当前帧的哪些部分不能被重构(例如,由于丢失的信息或比特流中的错误)。多媒体处理器52还可以基于当前帧和先前帧的姿势信息来生成扭曲的图像内容。然后,多媒体处理器52可以将扭曲的图像内容复制到当前帧中。
67.作为示例,多媒体处理器52可以包括如图3和4图示的比特流解析器电路,其经由主机设备10生成的路径62接收比特流。比特流解析器电路可以确定当前帧的没有图像内容信息的部分。例如,比特流解析器电路可以确定针对当前帧的哪些条带存在分组丢失。基于对哪些条带有分组丢失的确定,控制器50可以为当前帧生成掩码。在这一掩码中,用于一部分(例如,条带)的逻辑零指示接收到图像内容信息,而用于一部分(例如,条带)的逻辑1指示未接收到图像内容信息。以此方式,掩码指示帧中的孔/缺失宏块。
68.另外,控制器50可以被配置为基于当前帧和先前帧的姿势的差异来执行单应性(homography)。先前帧可以是当前帧之前显示或即将显示的帧。在一些示例中,先前帧可以是紧接当前帧之前被解码的帧。然而,技术不限于此,并且先前帧可以是任何先前解码的帧,并且不一定是按显示或解码顺序的紧接着的前一帧。
69.单应性是这样的过程,在给定与先前帧相关联的姿势和与当前帧相关联的姿势的情况下,控制器50确定先前帧中的点将在当前帧中位于何处。作为一个示例,单应性是一种变换,其中将先前帧中某个点的坐标乘以3x3矩阵以生成当前帧中该点的坐标。换句话说,单应性将图像的图像内容从其视角转换为另一图像的视角。
70.在本公开中描述的示例中,与先前帧相关联的视角是与先前帧相关联的姿势信息,而与当前帧相关联的视角是与当前帧相关联的姿势信息。控制器50可以基于先前帧的俯仰、横滚和偏航(例如,姿势信息)以及当前帧的俯仰、横滚和偏航(例如,姿势信息)来确定3x3变换矩阵(也称为投影矩阵)。可以将先前帧的姿势信息存储在姿势缓冲器中,并且可以从接收到的比特流中解析当前帧的姿势信息。尽管控制器50被描述为确定单应性,但是技术不限于此,并且多媒体处理器52可以被配置为执行单应性。
71.以下是控制器50可以执行单应性的一种示例方式。假设四元数(quaternion)q1表示可穿戴显示设备16在先前帧中的朝向。例如,q1可以是opengl格式glm::quat。类似地,q2表示对于当前帧的可穿戴显示设备16的朝向的四元数。控制器50可以首先将朝向之间的差异确定为第三四元数q3=glm::inverse(q2)*q1。控制器50可以根据opengl api使用方法glm::mat4_cast(q3)来计算与该差异相对应的单应性。
72.多媒体处理器52可以包括解码器电路,该解码器电路被配置为使用比特流中的图像内容信息来重构当前帧。例如,解码器电路可以根据上述示例视频编译码技术来配置。解码过程的结果是当前帧。但是,在此当前帧中,可能会有丢失的部分,因为当前帧这些部分的图像内容信息不可用或者有太多错误。
73.如上所述,在执行单应性中,控制器50可以确定先前帧中的点将位于当前帧中的位置的坐标。基于所确定的坐标和先前帧中的像素的颜色值,控制器50可以使多媒体处理器52的图形处理单元(gpu)扭曲先前帧的图像内容。例如,控制器50可以输出使gpu执行扭
曲的图形命令。
74.执行扭曲的一种示例方式是经由纹理映射。在纹理映射中,gpu将图像内容从纹理(例如,先前帧)映射到帧网格。在此示例中,gpu基于控制器50确定的单应性来接收先前帧中的顶点的坐标以及针对扭曲要将该顶点映射到的位置的坐标。进而,gpu将顶点的图像内容映射到从单应性确定的帧网格上的点。所得的是扭曲的图像内容。
75.例如,为了执行单应性,控制器50基于先前帧的姿势信息和当前帧的姿势信息来确定投影矩阵。如上所述,控制器50可以利用诸如glm的opengl命令来计算先前帧与当前帧之间的单应性。当前信息的姿势信息可以是当前帧的四元数定义的一部分,其中四元数是定义三维空间的方式。所得的单应性可以是3x3投影矩阵,也称为旋转矩阵,gpu使用该矩阵进行扭曲。
76.gpu执行顶点着色器,其基于投影矩阵(例如,旋转矩阵)将先前帧中的图元的顶点坐标转换为投影的顶点坐标。gpu的纹理电路接收先前帧中的图元的顶点上的像素的像素值,先前帧中的图元的顶点坐标以及投影的顶点坐标。然后,纹理电路基于像素值、先前帧中图元的顶点坐标以及投影的顶点坐标将先前帧的图像内容映射到帧网格上。gpu执行片段着色器以生成帧网格内像素的颜色值,以生成扭曲帧。
77.生成扭曲帧的此示例技术被称为应用异步时间扭曲(atw)。在一些示例中,控制器50和gpu可以应用具有深度的atw。例如,在atw中,控制器50可以确定先前帧中的每个顶点的坐标是(x,y,1),其中每个顶点被分配深度为1。在具有深度的atw中,控制器50可以接收先前帧的深度信息,深度信息指示先前帧中顶点的深度。然后,控制器50可以为每个顶点分配坐标(x,y,z),其中z值基于由深度图指示的深度。纹理电路的其它操作可以相同。
78.在一些示例中,控制器50可以另外或替代地应用异步空间扭曲(asw)。在atw或具有深度的atw中,控制器50基于所经过的时间量的差异来考虑从先前帧到当前帧的图像内容的差异。在asw中,控制器50可以考虑图像内容在帧内的移动。例如,控制器50可以使用先前帧中的块的运动矢量来生成投影矩阵。类似于具有深度的atw,在一些示例中,控制器50可以将深度信息与asw一起使用。在atw、具有深度的atw、asw和具有深度的asw中,控制器50生成投影矩阵的方式可以不同。但是,一旦生成投影矩阵,则用于生成扭曲帧的纹理映射技术通常可以相同。
79.可以存在与上面描述的示例技术不同的其它方式来执行先前帧的图像内容的扭曲。例如,上述扭曲技术包括异步时间扭曲(atw)、具有深度的atw、异步空间扭曲(asw)、具有深度的asw和其它技术。
80.在一些示例中,gpu可以对先前帧的整体执行扭曲以生成扭曲帧。在一些示例中,gpu可以仅对与当前帧的图像内容信息丢失(例如,未接收到或者损坏)的部分位于相同位置的先前帧的部分执行扭曲。例如,如上所述,控制器50可以生成掩码,该掩码指示针对哪些部分接收到图像内容信息以及针对哪些部分没有接收到图像内容信息。基于掩码,gpu可以扭曲先前帧的一部分。如以下进一步描述的,在一些示例中,掩码可以是运行掩码,其指示在当前帧中未接收到的图像内容信息的部分以及在一个或多个先前帧中未接收到的图像内容信息的部分。
81.gpu可以将扭曲的图像内容与当前帧中的图像内容混合。混合的一种示例方式是gpu将当前帧的某些部分中被识别为未接收到图像内容信息(例如,从掩码)的图像内容替
换为来自扭曲图像内容的图像内容。
82.混合的另一种示例方式是gpu使用控制器50生成的掩码执行“or(或)”操作。在一个示例中,在掩码中,一部分(例如,条带)的逻辑零指示接收到图像内容信息,一部分(例如,条带)的逻辑1指示未接收到图像内容信息。
83.图3是更详细地图示图2的多媒体处理器52的示例的框图。如图所示,多媒体处理器52包括比特流解析器电路64、解码器电路66、经解码帧缓冲器(dfb)68、gpu 70和姿势缓冲器72。在一些示例中,姿势缓冲器72和/或dfb 68可以在多媒体处理器52的外部。
84.多媒体处理器52可以包括比图3图示的更多或更少的电路。图示的多媒体处理器内的电路可以一起形成为片上系统(soc),或者可以是单独的分开的集成电路。在一些示例中,控制器50可以与多媒体处理器52形成在同一集成电路中。多媒体处理器52可以包括固定功能电路、可编程电路或固定功能电路与可编程电路的组合。多媒体处理器52可以包括一个或多个处理器,诸如一个或多个微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)或其它等效集成电路或分立逻辑电路。
85.关于控制器50和/或多媒体处理器52描述了本公开中描述的示例技术。控制器50和/或多媒体处理器52是被配置为执行本公开中描述的示例技术的处理电路的示例。
86.姿势缓冲器72可以是多媒体处理器52的本地存储器(例如,高速缓存)的一部分。在一些示例中,姿势缓冲器72可以是可穿戴显示设备16的系统存储器的一部分,诸如在姿势缓冲器72在多媒体缓冲器52的外部的示例中。姿势缓冲器72可以包括一个或多个易失性或非易失性存储器或存储设备,诸如随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存、磁数据介质或光存储介质。
87.如图所示,比特流解析器电路64接收包括用于帧n的图像内容信息的比特流。在此示例中,帧n包括三个条带1

3。同样,假定条带2的图像内容信息已丢失或损坏。
88.比特流可以被打包并且包括每个条带的图像内容信息,其中图像内容信息指示条带将被重构的方式。打包信息可以包括报头信息,其可以是一些辅助数据,其指示图像内容信息属于哪个条带。比特流解析器电路64可以对信息进行解包、读取报头,并且形成解码器电路66能够处理的图像内容信息的输出比特流。作为报头的读取或解包的一部分,比特流解析器电路64可以向控制器50输出信息,该信息指示帧n的、多媒体处理器52没有接收到针对其的图像内容信息的部分。
89.例如,在图3中,比特流解析器电路64可以基于报头信息确定条带1的图像内容信息被包括在比特流中。然后,比特流解析器电路64可以基于报头信息确定条带3的图像内容信息被包括在比特流中。因为不存在条带2的报头信息,所以比特流解析器电路64可以确定条带2的信息不在比特流中,因为它没有解析任何指示图像内容信息用于条带2的报头信息。
90.作为另一示例,比特流解析器电路64可以向控制器50输出信息,该信息指示比特流解析器电路64针对其接收到图像内容信息的条带。然后,控制器50可以跟踪多媒体处理器52针对帧n的哪些部分接收到图像内容信息。可能存在其它方式来确定多媒体处理器52针对帧n的哪些部分接收到图像内容信息。
91.基于从比特流解析器电路64接收的信息,控制器50可以基于确定的丢失了图像内
容信息的当前帧的部分(例如,没有接收到图像内容信息的、未被包括在比特流中或者已损坏的当前帧的部分)生成用于当前帧的掩码。掩码指示当前帧的已接收到图像内容信息的部分(例如,条带)(例如,掩码中的逻辑零与已接收到图像内容信息的部分相关联),以及当前帧的图像内容信息已丢失的部分(例如,掩码中的逻辑1与未接收到图像内容信息的部分相关联)。
92.解码器电路66可以从比特流解析器电路64接收图像内容信息,并重构当前帧(例如,帧n)。在一些示例中,图像内容信息包括诸如帧n和参考图片的部分内的块的运动矢量之类的信息,其中运动矢量是指参考图片中的预测性块。参考图片是存储在dfb 68中的先前解码的图片。例如,如图所示,dfb 68包括帧n

1,其是先前解码的帧。
93.帧n

1不必是紧接在帧n之前显示的帧,但可以是紧接在帧n之前显示的帧。帧n

1不必是紧接在帧n之前解码的帧,但可以是紧接在帧n之前解码的帧。虽然本公开将先前帧称为帧n

1,但是先前帧不必是解码或显示顺序中的紧接的前一帧,并且可以是存储在dfb 68中的任何帧。
94.解码器电路66的输出是部分帧n 74。帧n 74可以是部分帧,因为帧n 74包括错误的部分。例如,因为没有条带2的图像内容信息,所以在帧n 74中可能不存在条带2的图像内容。在一些示例中,解码器电路66可以执行某种程度的错误隐藏,诸如通过从对应于帧n中未接收到图像内容信息的部分的帧n

1复制图像内容以生成部分帧n 74。但是,这样的错误隐藏技术可能不足够,因为它们无法考虑姿势信息。
95.在本公开中描述的技术中,比特流解析器电路64还可以确定帧n的姿势信息,该姿势信息可以是帧n的报头信息的一部分。姿势信息可以是主机设备10从其生成帧n的视角的俯仰、横滚、偏航。控制器50可以从比特流解析器电路64接收帧n的姿势信息,并将姿势信息存储在姿势缓冲器72中。替代地或另外地,比特流解析器电路64可以将姿势信息存储在姿势缓冲器72中,并且控制器50从姿势缓冲器72取得姿势信息。
96.姿势缓冲器72存储由多媒体处理器52处理的帧的姿势信息。例如,对于每个帧,姿势缓冲器72可以存储与该帧相关联的姿势信息。作为另一个示例,在一些示例中,比特流解析器电路64可以接收帧的时间戳,并且姿势缓冲器72可以存储与时间戳相关联的姿势信息。在这样的示例中,时间戳指向姿势缓冲器72中的条目。姿势缓冲器72可以以其它方式存储与帧相关联的姿势信息。
97.控制器50接收帧n

1的姿势信息(例如,图3的姿势n

1)和帧n的姿势信息,并基于姿势信息生成单应性。在单应性中,控制器50确定在从其生成帧n的视场中何处出现来自帧n

1的图像内容的变换。例如,控制器50可以确定帧n和帧n

1之间的姿势信息中的差异(例如,姿势n和姿势n

1中的差异),并且如上关于单应性描述的,生成gpu 70用来将帧n

1重新投影到适合于时间n的视图的投影矩阵。
98.gpu 70执行顶点着色器,其基于投影矩阵(例如,将坐标与投影矩阵相乘)来变换帧n

1中的图元的顶点坐标,以生成投影的顶点坐标。gpu 70包括纹理电路,该纹理电路基于帧n

1中的坐标和投影坐标将来自帧n

1的像素映射到帧网格。gpu 70还可以执行片段着色器(也称为像素着色器)以对帧网格中的图像内容进行着色(例如,填充)。像素到网格的映射以及使用片段着色器填充图像内容的过程被称为纹理渲染。
99.作为说明性示例,假定帧n

1中的图元具有以下顶点坐标:(x1,y1,1)、(x2,y2,1)
和(x3,y3,1)。在顶点着色器将坐标与投影矩阵(也称为旋转矩阵)相乘之后,投影坐标可以是(x1',y1',1)、(x2',y2',1)和(x3',y3',1)。在此示例中,纹理电路可以使用由顶点(x1,y1、1)、(x2,y2、1)和(x3,y3、1)定义的图元来拉伸、收缩、旋转或以其它方式修改图像内容,以使图像内容适合由顶点(x1',y1',1)、(x2',y2',1)和(x3',y3',1)定义的帧网格上的图元。在拉伸、缩小、旋转或修改中,gpu 70可以执行片段着色器的一个或多个实例化,以确定由顶点(x1',y1',1)、(x2',y2',1)和(x3',y3',1)定义的图元内的像素的颜色值。
100.在一些示例中,gpu 70可以对帧n

1中的每个图元执行这样的操作以生成扭曲帧。在一些示例中,gpu 70可以仅针对帧n

1中的图元执行这样的操作,该图元与帧n的未接收到图像内容信息(例如,如所生成的掩码所指示的)的部分相对应。以此方式,gpu 70可以基于当前帧(例如,帧n)和先前帧(例如,帧n

1)的姿势信息来产生扭曲图像内容。
101.由上述gpu 70执行的示例扭曲是atw。在一些示例中,多媒体处理器52可以包括深度缓冲器,该深度缓冲器存储用于每个帧中的像素或部分的深度信息(例如,深度图)。深度信息指示图像内容在观看者看来向后或向前多远。控制器50可以使用深度信息以及姿势信息中的差异来生成投影矩阵,gpu 70使用该投影矩阵来生成投影的顶点坐标。对于具有深度的atw,纹理渲染操作可以类似于以上针对atw所描述的那些。
102.在一些示例中,诸如如果帧n和帧n

1被相对大量的时间分开,则可能在扭曲图像内容中存在纹理电路未映射任何图像内容的部分。这可能是因为在帧n

1中没有顶点在与投影矩阵相乘时能导致扭曲图像内容的特定部分中存在顶点。因为在扭曲图像内容的该部分中没有顶点,所以gpu 70可以不向该部分渲染任何图像内容,从而导致扭曲图像内容中的空白。
103.为了解决这个问题,在一些示例中,多媒体处理器52可以从主机设备10接收比帧n

1的视野(field of view,fov)更大的fov的图像内容。例如,假设帧n

1包围图像内容的矩形区域。主机设备10可以发送比帧n

1所包围的矩形区域更大的矩形区域的图像内容信息。显示帧n

1时,此附加图像内容可能不可见。但是,当纹理电路执行纹理渲染时,可以使用此附加图像内容。例如,纹理电路不仅可以扭曲帧n

1中的图像内容,而且可以扭曲较大fov中的图像内容以生成扭曲的图像内容。
104.附加的fov的发送可以基于主机设备10和可穿戴显示设备16之间的等待时间。例如,如果存在高延迟,则主机设备10可以增加帧的fov以确保有来自先前帧的图像内容可用于扭曲,由于观看者可能相对大量地改变姿势因此所需要的扭曲量可能更大。如果存在低延迟,则主机设备10可以减小或保持帧的fov不变,由于观看者可能不会大量改变姿势因此所需的扭曲量可能不大。
105.gpu 70可以将部分帧n 74的图像内容与扭曲的图像内容混合,以生成错误隐藏的帧n 76。作为一个示例,对于帧n的多媒体处理器52没有接收到任何图像内容信息的部分,gpu 70可以从扭曲的图像内容中复制图像内容信息,并用复制的图像内容替换可能在该部分中的任何图像内容。
106.作为另一个示例,控制器50或gpu 70可以平滑所生成的掩码。例如,掩码可以包括零和一,其中零与帧n的针对其接收到图像内容信息的部分相关联,而一与帧n的针对其未接收到图像内容信息的部分相关联。在一些示例中,控制器50和/或gpu 70可以执行加权平均,以使该值从零缓慢渐变到一并且反之亦然从一到零,而不是从掩码中的零跳跃到掩码
中的一或者反之亦然从一到零。例如,沿着掩码值从零变为一的边界,可以对值进行平滑处理,以使从零到一的过渡是渐进的(例如,将值更改为0.1、0.2、0.3,以此类推直到1)。
107.然后。这些值可以表示混合因子。例如,gpu 70可以读取平滑的掩码值并基于掩码值执行混合。例如,如果掩码值为0.4,则gpu 70可以使用部分帧n 74中像素的颜色值的40%和扭曲的图像内容中对应像素的颜色值的60%来生成混合颜色值。
108.图4是更详细地图示图2的多媒体处理器的另一示例的框图。图4与图3基本相似,并且具有相同附图标记的电路以相同或基本相同的方式操作。
109.图3图示了在生成扭曲的图像内容时关于atw或具有深度的atw的多媒体处理器52的示例操作。图4图示了在生成扭曲的图像内容时关于asw或具有深度的asw的多媒体处理器52的示例操作。
110.如图所示,多媒体处理器52包括运动矢量缓冲器78,其可以类似于姿势缓冲器72和dfb 68。然而,运动矢量缓冲器78存储针对多媒体处理器52处理的帧的运动矢量信息。
111.在图4中,比特流解析器电路64从比特流解包运动矢量,并将其转发给控制器50。运动矢量可以是比特流解析器电路64发送至控制器50的辅助数据的一部分。在一些情况下,运动矢量应该指示两个渲染的帧之间的对应关系,并且可以由主机设备10上的高端gpu生成。在一些示例中,解码器电路66可以输出运动矢量,而不是比特流解析器电路64。
112.控制器50可以被配置为基于帧n和帧n

1的姿势信息以及帧n的可用运动矢量来扭曲矢量。例如,帧n的运动矢量指向帧n

1中的参考块。控制器50可以基于帧n、姿势n

1和姿势n

2中发送的运动矢量确定帧n中的块的推测的3d位置。关于图6更详细地描述了运动矢量的使用。
113.图5是图示具有深度的时间扭曲的示例的过程图。例如,图5图示了与以上描述类似的atw和具有深度的atw。控制器50从传感电路20接收帧n

1的眼姿势信息(80),并从主机设备10接收帧n

1的深度图(82)。另外,控制器50可以在帧n

1上生成网格(84)。在帧n

1上的网格可以是被划分为矩形的帧n

1。
114.控制器50为网格上的每个点分配(x,y,z)坐标(86),并且得到具有(x,y,z)坐标的网格。在一些示例中,诸如具有深度的atw,控制器50可以基于帧n

1的深度图将z坐标分配给网格上的点。x和y坐标可以是从具有x坐标为0且y坐标为0的帧n

1的左上角开始的x和y坐标。在一些示例中,控制器50和/或多媒体处理器52可以如下更详细描述的,使用深度图和焦距生成帧n

1的x,y,z世界坐标。
115.控制器50接收帧n的姿势信息(90),并基于来自帧n

1的网格的(x,y,z)坐标生成投影矩阵,用于其中网格中的像素在帧n的视角中可见的地方(92)。该操作的结果可能是当前帧(例如,帧n)上的网格。例如,在一些示例中,控制器50可以在投影矩阵与网格上的坐标之间执行乘法。在其它示例中,gpu 70可以执行乘法。
116.然后,gpu 70可以使用适当的深度映射来对片段进行光栅化和着色(98)。例如,gpu 70可以接收帧n

1(96),并且可以将帧n

1纹理映射到帧n上的网格,并执行光栅化和着色(98)以生成扭曲的图像内容(100)和扭曲图像内容的深度图(102)。扭曲图像内容的深度图是确定为扭曲的一部分的z坐标。然后,根据上述示例,gpu 70可以将扭曲的图像内容用于错误隐藏。然后,可以使用扭曲的图像内容的深度图来代替当前帧的未接收到针对其的图像内容信息的深度信息。
117.以下提供了一个示例,说明如何使用深度进行扭曲,诸如查找网格点的世界坐标的方式。假设从有利位置p
n
可见多个物体。但是,并非对象的所有都是可见的(例如,对象的后面被对象的前面遮挡了),或者一个对象可能遮挡了另一个对象。因此,在具有图像宽度w的图像平面上,可以看到对象的子集。
118.图像平面是距离捕捉图像内容的假设相机的焦距。例如,各种图形应用程序都不需要实际的相机;但是,焦距可能仍然是有效的度量。焦距可以指示捕捉图像内容的假设的相机位于何处,即使没有实际的相机。假设的相机可以被视为观看者的有利位置。焦距由主机设备10设置,以设置图像内容应显示多远或多近。另外,控制器50和/或主机设备10可以生成指示每个对象的深度的深度图。
119.主机设备10可以发送焦距和/或深度图。基于焦距和深度图,控制器50可以确定要渲染的对象相对于相机的x和y坐标。例如,令f
n
为在时间n处的渲染图像。该图像中的像素是通过将从有利点(例如,相机位置)p
n
可见的对象表面投影到图像平面上而获得的。图像中的每个像素对应于可见表面上的一个点,并且在图像平面上具有二维的(x,y)坐标。
120.针对从主机设备10接收的深度图f
n
的d
n
,然后针对图像平面上的像素(x,y),存在从深度图接收的深度值z’。深度图存储图像平面上的(x,y)像素的z’值。
121.相对于相机的相应3d坐标为x’=x*z’/f,y’=y*z’/f,其中焦距f等于w/(2*tan(fov)/2)),其中w是图像的宽度(以像素为单位),视场(fov)是水平fov,并且是在360度空间中捕获多少图像内容的角度度量。
122.对于照相机姿势p
n
=(x
n
,y
n
,z
n
,q
n
),像素的世界坐标为),像素的世界坐标为r(qn)是将相机坐标系与世界坐标对齐的旋转矩阵。一旦确定了像素的世界坐标,gpu 70就可以将它们(例如,纹理图)投影到对应于新的相机姿势p
n+1
的不同图像平面,以确定它们应位于该图像平面中的何处。
123.例如,控制器50或多媒体处理器52可以基于帧n

1的深度图使用以上示例技术来确定帧n

1(例如,先前帧)中的像素的世界坐标。一旦控制器50和/或多媒体处理器52确定帧n

1中的像素的世界坐标,gpu 70就可以使用帧n

1中的像素的世界坐标和可穿戴显示设备16的当前姿势来执行纹理映射以生成扭曲帧中像素的世界坐标。以此方式,多媒体处理器52可以使用深度图来生成扭曲帧。
124.图6是图示具有深度的空间扭曲的示例的过程图。图6中图示的过程可以类似于图5中所示。但是,来自帧的运动矢量也可以用于扭曲帧n

1的图像内容。
125.空间扭曲除了可穿戴显示设备16的姿势变化之外,还考虑了对象的移动。例如,在atw和具有深度的atw中,基于可穿戴显示设备16的位置变化但不考虑对象的移动来执行扭曲。空间扭曲考虑对象移动的速度,该速度基于运动矢量。例如,如果当前帧中的块具有大的运动矢量(例如,对于运动矢量的相对较大的x和y值),则该对象的移动可以是相对快的。如果当前帧中的块具有较小的运动矢量(例如,对于运动矢量的相对较小的x和y值),则对象的运动可能相对较慢。
126.在图6中,类似于图5,控制器50从传感电路20接收帧n

1的眼姿势信息(104),并从主机设备10接收帧n

1的深度图(106)。另外,控制器50可以生成帧n

1上的网格(110)。帧n

1上的网格可以是被划分为矩形的帧n

1。控制器50和/或多媒体处理器52可以基于焦距和深度图使用上述技术来确定网格点上的世界坐标(112)。
127.针对空间扭曲,控制器50可以确定帧n

1的运动图(108)。运动图指示帧n

1中的块的运动矢量。根据运动矢量,控制器50和/或多媒体处理器52可以确定3d速度(114)。
128.3d速度v
x
、v
y
、v
z
可以不直接指定,但帧n

1的运动矢量是可用的,其中,帧n

1中的运动矢量指向前面的帧(例如,帧n

2)中的块。作为确定速度的示例,基于运动矢量,假设帧n

1中的像素(x,y)对应于帧n

2中的(a,b)。基于帧n

1和帧n

2的深度图和姿势信息,控制器50和/或多媒体处理器52可以使用上述技术将世界坐标确定为针对帧n

1是(x”,y”,z”),针对帧n

2是(a”,b”,c”)。3d速度可以如下计算:其中,t是连续帧(例如,帧n

1到帧n

2)之间的时间差。
129.利用速度,控制器50和/或多媒体处理器52可以推测世界空间中的x,y,z坐标。当相机假设姿势p
n
时像素的世界坐标为
130.一旦确定了像素的世界坐标,gpu 70就可以将它们(例如,纹理图)投影到对应于相机姿势p
n
的不同图像平面,以确定它们应该位于该图像平面(即帧n的图像平面)中的何处。投影操作可以涉及旋转矩阵r(q
n
),其将世界坐标系旋转到相机坐标系(例如,推测出的x、y、z(124))。
131.控制器50接收帧n的姿势信息(128),并基于来自帧n

1的网格的(x,y,z)坐标生成投影矩阵,用于其中网格中的像素将会在帧n的视角(例如,相机平面)中可见的地方(130)。该操作的结果可以是当前帧(例如,帧n)上的网格(132)。例如,在一些示例中,控制器50可以在投影矩阵与网格上的坐标之间执行乘法。在其它示例中,gpu 70可以执行乘法。
132.然后,gpu 70可以使用适当的深度映射来对片段进行光栅化和着色(134)。例如,gpu 70可以接收帧n

1(118),并且可以将帧n

1纹理映射到帧n上的网格,并且执行光栅化和着色以生成扭曲的图像内容(136)、扭曲图像内容的深度图(138)和扭曲图像内容运动图(139)。扭曲图像内容的深度图是作为扭曲的一部分而确定的z坐标,并且扭曲图像内容运动图是扭曲图像内容的运动图。然后,根据上述示例,gpu 70可以将扭曲的图像内容用于错误隐藏。然后,可以使用扭曲图像内容的深度图和运动图来代替针对其没有接收到图像内容信息的当前帧的深度信息和运动图。
133.图7是图示拆分渲染的第一示例过程的流程图。例如,该过程可以在充当wifi接入点的设备上执行。该设备可以被配置为在渲染帧的拆分渲染系统中用作服务器,以供hmd向用户显示。
134.在框700中,服务器发起与客户端的无线连接。例如,客户端可以是充当wifi站的设备。客户端可以是用于向用户显示内容的hmd。如下所讨论的,无线连接可以是wifi反向许可模式连接。例如,客户端hmd可以被配置为将用户姿势信息检测为6dof姿势。
135.在框702中,服务器可以通过无线连接将触发器分组发送到客户端,以查询姿势信息。在第一示例实施例中,服务器可以周期性地生成并发送触发器分组。在第二示例实施例中,服务器可以仅在没有渲染的帧要发送时才生成并发送触发器分组。在第三示例实施例中,仅当需要来自客户端的姿势信息以便渲染帧时,服务器才可以生成并发送触发器分组。应当了解,触发器分组的生成和发送可以由在服务器上执行的应用层模块来发起。在一些示例中,触发器分组可以是任何应用层分组,例如,渲染的帧的分组也可以充当触发器分组。可替代地,可以使用802.11qos空分组。
136.在框704中,服务器可以从客户端接收姿势信息。应该了解的是,客户端可以仅在其接收到触发器分组或者由服务器以其它方式请求时发送姿势信息。这可以防止网络拥塞和竞争,同时保留带宽用于将渲染的帧发送到客户端。
137.在框706中,服务器可以基于所接收的姿势信息来渲染一个或多个帧以供显示。例如,渲染的帧可以是用于向用户显示的三维vr、ar或其它xr内容的第一视图。
138.在框708中,服务器可以通过无线连接将渲染的帧发送到客户端,以向用户显示。应当了解,客户端hmd可以在向用户显示之前基于最新的姿势信息对接收到的渲染的帧执行异步时间扭曲(atw)。
139.图8是图示拆分渲染的第二示例过程的流程图。例如,该过程可以在充当wifi站的客户端设备上执行。客户端可以是用于向用户显示内容的hmd,并且被配置为将用户姿势信息检测为6dof姿势。
140.在框800中,客户端可以与服务器建立无线连接。如上讨论的,无线连接可以是wifi反向许可模式连接。例如,服务器可以是充当wifi接入点的设备,并且被配置为充当拆分渲染系统中的服务器,该渲染系统渲染帧以供hmd向用户显示。
141.在框802中,客户端可以确定是否已经从服务器接收到触发器分组。如果没有,则客户端可能会继续等待。应该了解的是,将客户端限制为仅在其端接收到触发器分组时或者由服务器以其它方式请求时才发送姿势信息,这有助于防止网络拥塞和竞争,同时保留带宽用于发送渲染的帧。
142.如果已经接收到触发器分组,则客户端可以继续进行到804。
143.在框804中,客户端可以准备并发送姿势信息。如所讨论的,姿势信息可以是由hmd传感器确定的用户的观看朝向的6dof姿势信息。例如,hmd传感器可以包括陀螺仪和加速度计。
144.在框806中,客户端可以基于在804中发送的姿势信息来接收由服务器渲染的一个或多个帧。例如,渲染的帧可以是用于向用户显示的三维vr、ar或其它xr内容的第一视图。
145.在框808中,客户端可以向用户显示渲染的帧。应当了解的是,客户端hmd可以在向用户显示之前进一步基于最新的姿势信息对接收到的渲染的帧执行异步时间扭曲(atw)。
146.图9图示了示例拆分xr系统架构。扩展现实(xr)可以是指由计算机图形和可穿戴设备生成的真实和虚拟环境。xr中的

x’可以是能够代表任何字母的变量。xr是涵盖所有形式的计算机更改的现实的总括类别,包括:增强现实(ar)、混合现实(mr)和虚拟现实(vr)。xr服务器900可以是,例如,服务器vr。vr服务器可以与头盔式显示器(hmd)910通信以提供如本文所讨论的拆分渲染系统架构。xr服务器900可以包括向视频编码器904提供渲染的帧的游戏引擎902,视频编码器904向低延迟传输模块或层906提供压缩后的渲染的帧。
147.hmd 910还可以包括低延迟传输模块或层918,其将压缩后的渲染的帧传送到视频解码器916。视频解码器916可以处理接收到的帧并将渲染的帧提供给gpu 910。gpu 910可以利用本文所讨论的诸如atw和asw之类的特征来准备最终帧以在hmd 910处显示给用户。hmd 910可以包括6dof处理912,其包括传感器和处理。
148.从xr服务器900向hmd 910提供压缩后的渲染的帧的视频流。从hmd 910向xr服务器900提供用于渲染帧的姿势信息,包括例如头部位置、朝向和6

dof信息。从xr服务器的下行链路流量包括两个视频帧,例如,如果保持每秒60帧的速率则高达每16.7毫秒,每只眼每帧300kb。
149.上行链路流量包括每1.25毫秒6dof姿势信息(100字节)。上行链路流量独立于下行链路流量。应该了解,xr服务器900可以使用最新的可用姿势信息来每16.7毫秒渲染一帧。更加频繁地生成和发送任何姿势信息都不会提高xr服务器900的渲染性能。
150.常规wifi上的拆分vr流量面临的某些挑战应该受到重视。例如,使用无线信道发送每1.25毫秒的小的上行链路姿势分组(pkts)是效率很低的。应当了解的是,每16.7毫秒可以使用最多四个姿势(每个眼睛两个,具有后锁存
‑‑‑
在眼睛缓冲器被渲染的同时用最新姿势替换先前的姿势)。接入点(ap)和站(sta)上同一应用的双向流量自己争夺无线带宽或无线介质,并增加了应用的延迟和变化。来自不同sta的流量可能在没有协调的情况下争夺介质。没有针对每个sta的下行链路/上行链路延迟保证,尤其是在多用户场景中。这使得难以提供有保证的实时体验。
151.图10图示了拆分xr系统架构的示例时序图。在802.11n中,提供了反方向(rd)协议。rd协议通过消除任一设备发起新的数据传送的需要而允许txop期间两个802.11设备之间更高效的数据传送。在现有方法中,每个单向数据传送都需要发起站来捕获(并且可能地在其上保留时间)基于竞争的无线介质。
152.利用rd,一旦发送站已经获得了txop,它就可以实质上是允许另一个站在其txop期间发送信息。这需要定义两个角色:rd发起器和rd响应器。rd发起器使用mac帧中ht控制字段的rdg/more ppdu字段中的反向许可(rdg)将其许可发送给rd响应器。该位由rd发起器用于向响应器授予许可(rdg),并且该位由rd响应器用于发信号通知其是否正在紧接着刚接收到的一个帧立即发送更多帧(more ppdu)。
153.在wifi rdg模式下,ap或服务器是可以是传输发起器1000并且sta或客户端hmd可以是传输响应器1002。响应器1002可以保持上行链路传输,直到有来自发起器1000的下行链路数据。这可以控制ap侧上的xr服务器的应用层逻辑,从而提供本文所讨论的效率。
154.在bo 1004中,可以建立无线连接。
155.在rts/cts 1006中,交换rts/cts(请求发送/清除发送)wifi消息。
156.在txop 1010中,应该了解,数据1008a和1008c可以是从服务器发送到客户端的渲的染帧。如果客户端从服务器接收到触发器分组,则客户端只在数据1008b中发送姿势信息。否则,它将保持在接收模式下以避免介质竞争和拥塞。
157.在1012中,一旦不再需要无线连接,则可以终止rdg模式。例如,hmd xr会话可以由用户结束。
158.图11图示了改进的示例拆分xr系统架构。这可以类似于先前图示的图9的拆分xr系统架构。新的触发器引擎模块1108被添加到xr服务器900。因此,xr服务器900可以使用下
行链路(dl)流量来轮询在hmd 910处的姿势信息。这避免竞争并提高信道效率。例如,当没有竞争的下行链路视频流量时,xr服务器900可以发送下行链路触发器分组以取得姿势。在xr服务器900处的应用层可以控制触发器分组生成。
159.图12图示了第一示例xr服务器系统架构。xr服务器900可以类似于先前在图11中图示的服务器。在此示例中,触发器分组被周期性地生成。例如,触发器引擎1108可以基于最大可容忍的上行链路姿势信息延迟生成触发器分组。这可以独立于下行链路流量和渲染器定时。这种方法具有简单的好处,因为触发器分组生成是从xr流水线的剩余部分解耦出来的。不幸的是,在触发器分组的频率和姿势信息延迟之间存在折衷。一种替代变型是在没有下行链路视频流量时生成触发器分组。
160.图13图示了第二示例xr服务器系统架构。在此示例中,触发器引擎1108可以从游戏引擎902接收输入。例如,可以考虑并利用下面的信息:未来帧的渲染时间线、来自先前ul姿势分组的垂直同步信息、先前ul姿势分组的到达时间等。此信息由触发器引擎1108用于计算最佳时间,以发送请求姿势信息的触发器分组。
161.在另一各示例中,触发器引擎1108可以在渲染新的视频帧之前根据需要生成触发器分组。在此示例中,xr服务器900只在需要之前才轮询上行链路姿势信息,并且可以进一步生成多个具有针对可靠性的提前时间的触发器分组。另一种替代变型是在没有下行链路视频流量时生成触发器分组。
162.在一个或多个示例中,可以以硬件、软件、固件或其任意组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输。计算机可读介质可以包括计算机数据存储介质或通信介质,该通信介质包括有助于将计算机程序从一个地方传送到另一地方的任何媒介。在一些示例中,计算机可读介质可以包括非暂时性计算机可读介质。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以取得指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。
163.作为示例而非限制,此类计算机可读介质可以包括非暂时性介质,诸如ram、rom、eeprom、cd

rom或其它光盘存储、磁盘存储或其它磁性存储设备、闪存或任何其它可用于以指令或数据结构形式携带或存储所需程序代码且可由计算机访问的介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或无线技术(诸如红外、无线电和微波)从网站、服务器或其它远程源传输软件,则介质的定义包括同轴电缆、光纤电缆、双绞线、dsl或诸如红外、无线电和微波等的无线技术。本文中使用的磁盘和光盘包括压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)、软盘和蓝光光盘,其中磁盘通常以磁性方式重现数据,而光盘则通过激光光学方式重现数据。上述的组合也应该包括在计算机可读介质的范围内。
164.代码可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其它等效集成或分立逻辑电路。因此,如本文所使用的,术语“处理器”可以是指任何前述结构或适合于实现本文描述的技术的任何其它结构。另外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块中提供,或合并在组合的编解码器中。同样,该技术可以在一个或多个电路或逻辑元件中完全实现。
165.本公开的技术可以在包括无线手机、集成电路(ic)或ic组(例如,芯片组)的多种设备或装置中实现。在本公开中描述各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同硬件单元来实现。而是,如上所述,各种单元可以组合在编解码器硬件单元中,或者由互操作硬件单元的集合来提供,包括与适用的软件和/或固件结合的如上所述的一个或多个处理器。
166.已经描述了方面的各种示例。这些和其它方面在所附权利要求的范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1