共享场景网格数据同步的制作方法

文档序号:11291405阅读:226来源:国知局
共享场景网格数据同步的制造方法与工艺



背景技术:

基于分组的通信系统允许设备(例如,个人计算机)的用户使用诸如互联网协议(ip)的分组协议跨计算机网络进行通信。基于分组的通信系统能够用于各种类型的通信事件。能够被建立的通信事件包括语音通话、视频通话、即时消息传递、语音邮件、文件传送、以及其它。这些系统对用户有益,因为相比于固定线路或移动网络,这些系统经常是显著地较低成本的。长距离通信可以尤其是这种情况。为了使用基于分组的系统,用户在他们的设备上安装并执行客户端软件。客户端软件提供基于分组的连接以及其它功能,例如,注册和认证。

通信系统允许设备的用户跨诸如互联网的计算机网络进行通信。能够被建立的通信事件包括语音通话、视频通话、即时消息传递、语音邮件、文件传送、以及其它。利用视频通话,呼叫者能够查看视频图像。



技术实现要素:

提供本发明内容以便以简化的形式引入下面在具体实施方式中进一步描述的概念的选择。本发明内容并非旨在识别所要求保护的主题的关键特征或必要特征,也并非旨在用于限制所要求保护的主题的范围。所要求保护的主题也并非限于解决在背景技术部分中指出的缺点中的任何缺点或全部缺点的实现方式。

本公开的实施例与共享场景(例如,在协作混合现实应用中生成的)内的对象的管理和同步有关。在协作混合现实应用中,参与者能够可视化、放置共享场景中的对象,并与共享场景中的对象进行交互。共享场景典型地是参与者中的一个参与者的周围空间的表示,例如,场景可以包括来自参与者中的一个参与者的视点的视频图像。对象或视觉对象能够被“放置”在场景内,并且可以具有能够被参与者“看到”并与其进行交互的视觉表示。此外,对象能够具有相关联的内容。例如,对象可以具有诸如音频/视频或文本的相关联的内容。例如,参与者可以将视频播放器对象放置在共享场景中,并且与其进行交互以开始播放视频以供所有参与者观看。然后,另一参与者可以与视频播放器对象进行交互以控制回放或改变其在场景中的位置。

发明者已经认识到,为了维持方案内的这些对象的同步,表面重建数据(也被称为网格数据)的高效传送可以是有意义的。

根据本公开的第一方面,提供了一种在通信架构内的用户设备,该用户设备包括:图像捕获设备,其被配置为确定图像数据以及内在/外在捕获设备数据以用于创建定义共享场景的视频信道;表面重构实体,其被配置为确定与来自图像捕获设备的图像数据相关联的表面重构数据;视频信道,其被配置为对图像数据以及内在/外在捕获设备数据进行编码和分包;表面重构信道,其被配置为对表面重构数据进行编码和分包;发射机,其被配置为发送视频信道分组和表面重构信道分组;以及带宽控制器,其被配置为对分配给视频信道和表面重构信道的带宽进行控制。

根据本公开的另一方面,提供了一种在通信架构内实现的方法,该方法包括:确定来自图像捕获设备的图像数据以及内在/外在捕获设备数据以用于创建定义共享场景的视频信道;确定与来自图像捕获设备的图像数据相关联的表面重构数据;对视频信道内的图像数据以及内在/外在捕获设备数据进行编码和分包;对表面重构信道内的表面重构数据进行编码和分包;发送视频信道分组和表面重构信道分组;以及对分配给视频信道和表面重构信道的带宽进行控制。

根据本公开的另一方面,提供了一种计算机程序产品,该计算机程序产品被实施在非暂时性计算机可读介质上,并且被配置为当在共享场景架构内的协议端点实体的处理器上被执行时进行以下操作:确定来自图像捕获设备的图像数据以及内在/外在捕获设备数据以用于创建定义共享场景的视频信道;确定与来自图像捕获设备的图像数据相关联的表面重构数据;对视频信道内的图像数据以及内在/外在捕获设备数据进行编码和分包;对表面重构信道内的表面重构数据进行编码和分包;发送视频信道分组和表面重构信道分组;以及对分配给视频信道和表面重构信道的带宽进行控制。

附图说明

为了更好地理解本公开以及示出如何可以使本公开生效,现在将通过示例的方式参考以下附图,在附图中:

图1示出了通信系统的示意图;

图2示出了用户设备的示意图;

图3示出了如可佩戴耳机的用户设备的示意图;

图4a和4b示出了用于组合的视频和表面重构(sr)数据的示例发送方和接收方管线的示意图;

图5a示出了用于共享场景内的对象递交的示例端点架构的示意图;

图5b示出了用于同步对象更新的示例架构处理协议的示意图;

图6示出了在协议端点上执行的会话管理实体应用与消息递送实体/分组递送实体应用之间的示意性的示例通信;

图7示出了用户设备内的发送路径对象消息控制的过程的流程图;

图8示出了用户设备内的接收路径对象消息控制的过程的流程图;以及

图9a和9b示出了用于嵌入和取回图像数据流内的照相机内在和外在数据的示意架构。

具体实施方式

仅通过示例的方式来描述本公开的实施例。

图1示出了通信系统100,其包括与用户终端或设备102相关联的第一用户104(用户a)以及与第二用户终端或设备108相关联的第二用户110(用户b)。用户设备102和用户设备108能够通过通信系统100中的通信网络106进行通信,由此允许用户104和用户110通过通信网络106彼此通信。通信网络106可以是具有提供用户设备102与第二用户设备108之间的通信信道的能力的任何合适的网络。例如,通信网络106可以是互联网或另一类型的网络,例如,高数据速率蜂窝或移动网络(例如,第三代(“3g”)移动网络)。

注意,在替代实施例中,用户设备能够经由附加的中间网络(图1中未示出)连接到通信网络106。例如,如果用户设备102是移动设备,则其能够经由蜂窝或移动网络(图1中未示出)连接到通信网络106,例如,gsm、umts、4g、或类似的网络。

用户设备102和104可以是任何合适的设备,并且可以是例如,移动电话、个人数字助理(“pda”)、个人计算机(“pc”)(例如,包括windowstm、macostm、以及linuxtmpc)、平板计算机、游戏设备、可佩戴设备、或能够连接到通信网络106的其它嵌入式设备。可佩戴设备可以包括可佩戴耳机。

应当意识到,用户设备中的一个或多个用户设备可以由单个设备提供。用户设备中的一个或多个用户设备可以由合作以提供用户设备或终端的两个或更多个设备提供。

用户设备102被布置为接收来自用户a104的信息并向用户a104输出信息。

用户设备102执行通信客户端应用112,通信客户端应用112由与通信系统100相关联的软件提供方提供。通信客户端应用112是在用户设备102中的本地处理器上执行的软件程序。通信客户端应用112执行在用户设备102处所需要的处理,以便于用户设备102通过通信系统100发送和接收数据。在用户设备102处执行的通信客户端应用112可以通过呈现数字证书(例如,以证明用户104是通信系统的真正订户——在wo2005/009019中更详细地进行了描述)被认证为通过通信系统进行通信。

第二用户设备108可以与用户设备102相同或不同。第二用户设备108在本地处理器上执行通信客户端应用114,通信客户端应用114对应于在用户终端102处执行的通信客户端应用112。第二用户设备108处的通信客户端应用114执行所需要的处理以允许用户b110通过网络106进行通信,以与用户设备102处的通信客户端应用112执行所需要的处理以允许用户a104通过网络106进行通信相同的方式。用户设备102和用户设备108是通信系统中的端点。为了清楚起见,图1仅示出了两个用户(104和110)以及两个用户设备(102和108),但是许多更多的用户和用户设备可以包括在通信系统100中,并且可以使用在相应的用户设备上执行的相应的通信客户端来通过通信系统100进行通信,如本领域中已知的。

图2示出了用户设备102的示意图,通信客户端应用在用户设备102上执行以用于通过通信系统100进行通信。用户设备102包括中央处理单元(“cpu”)202,诸如屏幕或触摸屏的显示器204、诸如用户接口206的输入设备(例如,键板)、照相机208、以及触摸屏204连接到中央处理单元。

在一些实施例中,用户接口206可以是键板、键盘、鼠标、定点设备、触摸板、或类似物。然而,用户接口206可以是任何合适的用户接口输入设备,例如,手势或运动控制用户输入、头部跟踪或眼睛跟踪用户输入。此外,在一些实施例中,用户接口206可以是被配置为确定用户与显示器204的接近度的“触摸”或“接近度”检测输入。

在下面描述的实施例中,照相机208可以是常规的网络照相机(webcam),其集成到用户设备102中,或者经由有线或无线连接耦合到用户设备。可替代地,照相机208可以是深度感知照相机,例如,飞行时间或结构光照相机。此外,照相机208可以包括多个图像捕获元件。图像捕获元件可以位于不同的位置处或者指向不同的点或视线,以使得来自图像捕获元件中的每个图像捕获元件的图像可以被处理或组合。例如,可以对图像捕获元件图像进行比较,以便基于视差误差来确定深度或离图像的对象距离。此外,在一些示例中,可以对图像进行组合以产生与可能来自单个图像捕获元件的图像相比具有更高的分辨率或更大的视角的图像。

输出音频设备210(例如,扬声器、多个扬声器、头戴式耳机、听筒)和输入音频设备212(例如,麦克风、或多个麦克风)连接到cpu202。显示器204、用户接口206、照相机208、输出音频设备210、以及输入音频设备212可以集成到用户设备102中,如图2中所示出的。在替代用户设备中,显示器204、用户接口206、照相机208、输出音频设备210、以及输入音频设备212中的一个或多个可以不集成到用户设备102中,并且可以经由相应的接口连接到cpu202。这种接口的一个示例是usb接口。

cpu202连接到诸如调制解调器的网络接口224,以用于与通信网络106进行通信。网络接口224可以集成到用户设备102中,如图2中所示出的。在替代用户设备中,网络接口224不集成到用户设备102中。用户设备102还包括用于存储数据的存储器226,如本领域中所已知的。存储器226可以是永久存储器,例如,rom。存储器226可以替代地是临时存储器,例如,ram。

用户设备102安装有通信客户端应用112,因为通信客户端应用112存储在存储器226中并且被布置用于在cpu202上执行。图2还示出了在cpu202上执行的操作系统(“os”)214。在os214的顶部上运行的是用于上面提到的通信客户端应用112的软件堆栈216。软件堆栈示出了i/o层218、客户端引擎层220、以及客户端用户接口层(“ui”)222。每层都负责特定的功能。由于每层通常与其它两层进行通信,因此它们被视为布置在堆栈中,如图2中所示出的。操作系统214管理计算机的硬件资源,并且处理经由网络接口224发送到通信网络106和从通信网络106发送的数据。i/o层218包括音频和/或视频编解码器,其接收传入的已编码流并对它们进行解码以用于在适当时输出到扬声器210和/或显示器204,并且接收来自麦克风212和/或照相机208的未编码音频和/或视频数据并对它们进行编码以用于作为流传输到通信系统100的其它终端用户设备。客户端引擎层220如上面所讨论地处理voip系统的连接管理功能,例如,通过基于服务器的或端对端(p2p)的地址查找和认证来建立通话或其它连接。客户端引擎还可以负责本文中未讨论的其它次要功能。客户端引擎220还与客户端用户接口层222进行通信。客户端引擎220可以被布置为对客户端用户接口层222进行控制,以经由在显示器204上显示的通信客户端应用112的用户接口向用户设备102的用户呈现信息,以及经由用户接口接收来自用户设备102的用户的信息。

也在os214的顶部上运行的是另外的应用230。下面参考另外的应用230来描述实施例,并且通信客户端应用112是分离的应用,然而,下面更详细地描述的另外的应用230的功能能够并入到通信客户端应用112中。

在图3所示出的一个实施例中,用户设备102是以耳机或安装在头部的用户设备形式的。安装在头部的用户设备包括框架302,其具有旨在拟合在佩戴者的鼻梁上的中心部分304,以及旨在拟合在用户的耳朵上的左侧支撑延伸部和右侧支撑延伸部306、308。尽管支撑延伸部306、308被示为基本上笔直的,但是它们可以终端具有弯曲的部分来以常规眼镜的方式更舒服地拟合在耳朵上。

框架302支撑左侧光学部件和右侧光学部件(标记为310l和310r),它们可以是例如由玻璃或聚合物形成的波导。

中心部分304可以存放cpu303、存储器328、以及网络接口324,例如,图2中所描述的。此外,框架302可以存放以微显示器形式的光引擎以及以凸透镜和准直透镜形式的成像光学器件。在一些实施例中,光引擎可以包括另外的处理器,或者采用cpu303来生成用于微显示器的图像。微显示器能够是任何类型的图像源的光,例如,液晶显示器(lcd)、背光式lcd、led矩阵阵列(不管是有机的还是无机的)、以及任何其它合适的显示器。显示器可以由激活显示器的单独的像素以生成图像的电路来驱动。来自每个显示器的基本上准直的光通过在每个部件上提供的相应的内耦合(in-coupling)区域312l、312r输出或耦合到每个光学部件310l、310r中。然后,内耦合的光可以通过涉及衍射和tir的机制被指引,横向地经过相应的中间(折叠)区域314l、314r中的光学部件,并且还向下进入到相应的退出区域316l、316r中,在退出区域316l、316r中内耦合的光朝向用户的眼睛退出。

光学部件310可以是基本上透明的,以使得用户不仅能够查看来自光引擎的图像,而且还能够通过光学部件查看真实世界视图。

光学部件可具有折射率n,其使得总的内部反射发生以指引来自光引擎的光束沿着中间扩展区域314,并朝着退出区域316向下。

以耳机或安装在头部的设备形式的用户设备102还可以包括被配置为捕获佩戴耳机的用户的视野的至少一个照相机。例如,图3中所示出的耳机包括被配置为分别从用户的左眼和右眼捕获适当的视线(或视野)的立体照相机318l和318r。在一些实施例中,一个照相机可以被配置为捕获合适的视频图像,并且另一个照相机或范围感测传感器被配置为捕获或确定从用户到用户的环境中的对象的距离。

类似地,以耳机形式的用户设备102可以包括安装在耳机的框架306上的多个麦克风。图3中所示出的示例示出了分别位于支撑延伸部或臂部306和308的“前”端处的左侧麦克风322l和右侧麦克风322r。此外,支撑延伸部或臂部306和308可以包括“左侧”和“右侧”通道扬声器、听筒、或其它音频输出转换器。例如,图3中所示出的耳机包括起到左侧音频通道输出扬声器和右侧音频通道输出扬声器作用的一对骨传导音频转换器320l和320r。

本文中描述了关于混合现实(mr)应用的概念,然而,在其它实施例中,相同的概念可以应用于任何多方通信应用。例如,混合现实应用可以涉及场景的共享,其中,包括照相机的设备被配置为捕获图像或视频并将该图像或多个图像发送到其它设备。此外,图像或视频可以通过对对象进行添加、删除、以及交互来加强或注释。这些对象或虚拟对象能够被“放置”在图像场景内并且可以具有能够被参与者(包括场景所有者)“看到”并与其进行交互的视觉表示。对象可以不仅通过位置来定义,而是包括其它属性,例如,对象类型和状态。例如,对象可以具有诸如音频/视频/文本内容的相关联的内容。例如,参与者可以将视频播放器对象放置在共享场景中。然后,相同的参与者可以与对象进行交互以开始播放视频以供所有参与者观看。然后,另一参与者可以与视频播放器对象进行交互以控制回放或改变其在场景中的位置。

对象的放置可以关于场景以及此外场景的三维表示来进行。为了使得对象的准确放置能够在远程设备上被表示或渲染,可以将与场景相关联的表面重制(sr)或网格数据传递到共享场景的参与者中的全部。

关于图4a是用于用户设备的合适的发送(媒体堆栈)管线架构的示例。在这样的实施例中,如本文中所描述的用户设备被配置为生成图像(视频数据)和表面重制(sr)或网格数据。

在所示出的示例中,用于生成共享场景的图像由(红-绿-蓝)rgb传感器/照相机403捕获。rgb传感器/照相机403可以被配置为传递所捕获的rgb原始数据,以及此外将任何照相机位姿(pose)/投影矩阵信息传递到合适的设备视频源405。

此外,图4a中所示出的示例架构包括被配置为捕获深度信息的深度传感器/照相机401,深度信息能够被传递到表面重制(sr)引擎和数据库402。sr引擎和数据库402可以被配置为接收深度信息并根据已知的网格/sr方法来生成sr原始数据。然后,sr原始数据能够被传递到设备视频源405。

视频源405可以被配置为接收sr原始数据和rgb原始数据以及任何照相机位姿/投影矩阵信息。此外,视频源405可以被配置为将以sr原始数据形式的视频原始数据输出到合适的sr信道编码器407,并且将依照原始帧的视频图像数据以及照相机位姿/投射矩阵数据输出到合适的h.264信道编码器409。在本文中所描述的示例中,h.264信道编码器409是合适的视频编码器的示例。可以理解,在一些其它实施例中,所采用的视频编解码器是任何合适的编解码器。例如,编码器和解码器可以采用高效率视频编码hevc实现方式。

sr信道编码器407可以被配置为接收sr原始数据并对sr原始数据进行编码以生成合适的已编码sr数据。然后,sr信道编码器407可以被配置为将已编码sr数据传递到分组生成器411。具体地,已编码数据可以被传递给sr分组创建器413。

h.264信道编码器409可以类似地被配置为接收原始图像/视频帧和照相机位姿/投影矩阵数据并对它们进行处理以生成已编码的帧和sei(补充增强信息)消息数据。可以将已编码的帧和sei消息数据传递到分组生成器411,并且具体地,传递到h.264分组创建器415。

关于图9a示出了用于对帧(原始图像/视频帧)和照相机位姿/投影矩阵信息进行组合并对它们进行处理以生成已编码的帧和sei(补充增强信息)消息数据的示例管线架构。照相机内在(集成到照相机本身的)和外在(照相机位于3d环境中的部分)数据或信息(例如,照相机位姿(外在的)和投影矩阵(内在的)数据)描述了照相机捕获性质。诸如帧时间戳和帧取向的该信息应当与视频帧同步,因为它可能从帧到帧改变。实施例中所采用的管线架构(例如,图9a中所示出的)应当支持到其它平台的容易可扩展性以及编解码器可交换性。

如这里描述的概念用于对视频信道中的照相机内在和外在数据进行编码并将其作为sei消息在带内运输。管线架构应当以平台不可知的方式将数据运输到解码器。例如,针对发送方管线描述了应用程序接口(api)调用顺序。

如图9a中所示出的,为了实现编解码器独立的实现方式,sei可以由视频编码器嵌入到比特流中并由视频解码器读出。

例如,硬件部件rgb照相机901可以被配置为生成rgb帧数据。然后,rgb帧数据能够被传递到os/平台层以及传递到媒体捕获(和源读取器)903。媒体捕获实体903此外可以被配置为接收照相机位姿和投影矩阵并将这些照相机内在和外在值附接为自定义属性。然后,媒体样本和自定义属性可以被传递到媒体管线层,并且经由捕获实体905传递到视频编码器907。例如,视频编码器907可以是图4a中示出的h.264信道编码器。然后,视频编码器907可以将照相机位姿和投影矩阵作为用户数据未注册sei消息在带内运送。例如,sei消息可以与从h.264编码器909输出的视频帧数据在sei附加实体911中进行组合。示例sei消息定义如下:

其中

f(1位)是forbidden_zero_bit,例如,在[frc6184]、章节1.3中指定的,

nri(2位)是nal_ref_idc,例如,在[rfc6184]、章节1.3中指定的,

类型(5位)是nal_unit_type,例如,在[rfc6184]、章节1.3中指定的,在一些实施例中,其被设置为6,

payloadtype(1字节)是sei有效载荷类型,并且在一些实施例中被设置为5,以指示用户数据未注册sei消息。由该协议使用的语法是如在[iso/iec14496-10:2010]、章节7.3.2.3.1中所定义的,

payloadsize(1字节)是sei有效载荷大小。由该协议使用的针对该字段的语法与在[iso/iec14496-10:2010]、章节7.3.2.3.1中所定义的相同。payloadsize值是排除f、nri、类型、payloadtype、以及payloadsize字段的流布局sei消息的大小,

uuid_iso_iec_11578(16字节)是通用唯一标识符(uuid),用于指示sei消息是流布局,并且在一些实施例中被设置为{0f5dd509-cf7e-4ac4-9e9a-406b68973c42},

t(1字节)是类型字节,并且在一些实施例中,值1用于标识照相机位姿信息,并且值2用于标识照相机投影矩阵信息,

l(1字节)是以随后的值字段的字节减1的长度,并且具有指示1-255字节的0-254的有效值范围。

v(n字节)是值,并且值的长度被指定为l字段的值。

与分组生成器411相关联的概念用于控制视频和sr数据的打包,以便数据的接收方能够产生可靠且高效的混合现实体验。

例如,分组生成器411可以包括sr分组创建器413。sr分组创建器413可以被配置为生成能够被传递到分组类型敏感成形器419的sr片段分组。此外,可以对sr分组创建器413进行控制以用于重新发送反馈目的。在一些实施例中,使用nack方法来进行重新发送反馈可能是不合适的,并且因此可以实现ack方法。

因此,在一些实施例中,sr分组创建器413可以被配置为将任何sr数据分组的引用保留在未决缓冲器中,直到它们被发送为止。一旦分组被发送,则可以将引用移动到未确认缓冲器。

在这样的实施例中,未确认缓冲器可以具有限制发送方与接收方之间的流量的窗口大小。

然后,可以维护sr数据分组的引用,直到接收方确认分组被接收为止。

在一些实施例中,未确认缓冲器窗口大小可以根据接收方缓冲器深度来动态地调整。在一些实施例中,未确认缓冲器窗口大小可以是静态值,例如,32。

在一些实施例中,sr分组创建器413可以被配置为当sr帧到达时,保持发送来自未决缓冲器的sr数据分组,即使当没有任何反馈消息(例如,包括acknowledgmentbitmap的消息)被接收时。实现保持发送方法表示在接收方处的互斥等待(starvation)不应当发生。

反馈消息可以包括值(例如,acknowledgmentbitmap消息中的值basesequence)。增加的值暗示一直到值-1(basesequence-1)并且包括值-1的所有分组已经由接收方确认。

在一些实施例中,sr分组创建器413可以被配置为仅当存在足够的带宽时发送超出所学习的接收方缓冲器深度的数据分组。

在一些实施例中,发送速度可以由双向信道的rtt(往返时间)来进行限制。例如,当未确认缓冲器窗口大小是128个分组、并且rtt是200ms、并且mpu(应用于sr数据分段的最大分组单元)是1000时,则最大发送速度将被限于128*1000*(1000/200)=5000kb/s.

因此,在一些实施例中,可以对未确认缓冲器窗口大小、连同(acknowledgmentbitmap)反馈消息的长度进行调整以改变最大速率。

类似地,分组生成器411可以包括h.264分组创建器415。h.264分组创建器415可以被配置为生成合适的h.264分组片段,并将这些分组片段传递到分组类型敏感成形器419。

此外,分组生成器411可以包括带宽(bw)控制器417,其被配置为控制分组片段的生成和输出。bw控制器417可以负责分割sr分组创建器413与h.264分组创建器415之间的带宽分配。在一些实施例中,bw控制器417维护用于视频的最小带宽。

在一些实施例中,bw控制器417可以被配置为最初在并发运行的每个并行信道之间均匀地分配数据。例如,对于h.264信道和单个sr信道而言,数据分割可以以50/50开始。然而,bw控制器417可以被配置为在确定的时间段之后确定或估计针对h.264和sr带宽需求的短期和长期平均。例如,针对h.264和sr带宽需求的短期和长期平均可以在2.5秒之后确定。

应当注意,在h.264/视频与sr带宽之间的这些值之间存在行为上的差异。对于视频而言,带宽值是被传递到h.264(视频)编码器409并应当被h.264(视频)编码器409遵守的分配。而sr带宽值可以是这样的带宽的观测:由sr信道使用,并且媒体平台可以对其进行监测以确定如何调整sr编码器407内的细节级别的参数。

然后,分组敏感成形器419可以被配置为接收sr分组片段和h.264分组片段,并且生成传递到输送处(transport)421的合适的数据分组。分组敏感成形器419可以是知道h.264和sr数据分组的不同的实时需求的(网络流量)成形器。例如,成形器可以被实现为h.264与sr分组之间的循环(round-robin)。

输送处421接收数据分组并经由合适的输出流输出这些数据分组。

关于图4b示出了用于被配置为接收图像(视频数据)和表面重制(sr)或网格数据的用户设备的合适的接收管线(媒体堆栈)架构。

用户设备可以包括被配置为接收视频流数据并将该信息传递到接收方/分组汇编器的输送处451。

分组汇编器可以包括sr分组汇编器453和h.264分组汇编器455。可以将sr分组片段传递到sr分组汇编器453以用于生成已编码sr数据分组。h.264分组汇编器455可以被配置为接收h.264分组片段并生成已编码帧数据。

sr分组汇编器453可以被配置为生成合适的反馈消息(例如,acknowledgmentbitmap反馈消息),其可以被发送到sr分组创建器,以便于控制sr数据的重新发送。当检测到内容开始事件时(例如,当检测到sr1_content_start_flag时),或者当检测到内容停止事件时(例如,当检测到sr1_content_stop_flag时),或者当检测到文件事件的结束时(例如,当检测到sr1_content_eof_flag时),可以生成反馈消息。此外,在一些实施例中,当新的sr分组到达sr分组汇编器453并且自从先前的分组经过了预先确定的时间段(例如,250ms)时,生成反馈消息。在一些实施例中,针对每第7个(或者其它确定的数量)接收到的分组来生成反馈消息。在一些实施例中,分组的经确定的数量的可以包括重新发送的分组。此外,在一些实施例中,反馈消息可以在反馈值指示最后接收的分组(basesequence)已经提前了经确定的数量(例如,7)个分组之后生成。在一些实施例中,当由sr信道解码器457报告了错误时,生成反馈消息。

如本文中所描述的,sr分组创建器被配置为接收反馈消息(acknowledgmentbitmap)并控制经缓冲的分组的重新发送。

然后,可以将已编码sr数据分组传递到sr信道解码器457以生成sr原始数据。

h.264信道解码器459可以被配置为接收来自h.264分组汇编器455的已编码帧,并输出合适的原始帧和照相机位姿/投影矩阵数据。然后,能够将sr原始数据和原始帧以及照相机位姿/投影信息传递到视频池(videosink)461。

然后,视频池461可以被配置为将所接收的sr原始数据和原始帧以及照相机位姿/投影数据输出到任何合适的远程视频应用463或库以用于合适的3d场景渲染(在3d场景渲染器465处)和视频服务渲染(在视频表面渲染器467处)。

关于图9b示出了用于从已编码的帧和sei(补充增强信息)消息数据中提取原始图像/视频帧和照相机内在和外在数据(例如,位姿/投影矩阵数据)的示例管线架构。该管线架构是由图9a中所示出的示例管线架构执行的过程的反向。

例如,媒体管线层可以包括视频解码器960。这在一些实施例中由h.264信道解码器459(例如,图4b中所示出的)来实现。视频解码器960可以包括sei提取器951,其被配置为从h.264帧数据中检测并提取与照相机内在和外在数据值(照相机位姿和/或投影矩阵数据)相关联的任何已接收sei数据。这可以通过解码器扫描传入的网络抽象层单元(nalu)并从每个帧所附加的sei消息中提取照相机内在和外在数据(如果存在)而在视频(sliq)解码器内实现。然后,可以经由解码器选项使得照相机内在和外在数据可用于解码器扩展和解码器回调。

然后,视频解码器(例如,h.264解码器953)可以对不包含sei消息的h.264比特流进行解码。

媒体管线层可以进一步包括渲染器955,其被配置为对内在和外在数据以及帧数据进行同步并将其传递到os/平台层。

此外,如图9b中所示出的,os/平台层可以包括3d渲染引擎957,其被配置为变换视频帧图像,并利用内在和外在数据以及sr数据来生成适于传递到显示器或屏幕959的合适的3d渲染。可以理解,在一些实施例中,可以将3d渲染引擎实现为应用。

在诸如本文中所描述的实现架构中,可以将以视频或者图像数据形式的mr场景和要生成场景的3d渲染所需要的数据可靠地并且使用可用的带宽高效地从一个设备传送到另一设备。

如本文中所描述的,mr的方面中的一个方面是共享并注释所捕获的场景的能力。例如,由场景中的一个参与者捕获的视频可以通过添加对象来进行注释。对象可以位于场景中,具有经定义的位置和/或取向。此外,如本文中所描述的对象可以与媒体类型相关联——例如,视频、图像、音频、或文本。在一些情况下,对象可以是交互式对象,这是因为对象可以是可移动的、或改变的。例如,交互式对象可以与视频文件相关联,并且当对象被参与者“触摸”或者选择时,视频播放给共享场景的参与者中的全部。

添加、移除、以及修改场景内的对象可能是有问题的。然而,这些问题可以根据用于本文中进一步详细描述的对象信息的示例架构和协议来进行处理。

关于图5a示出了这样的示例架构:该示例架构示出了适于处理交互式对象以及与其它参与者共享混合现实(mr)场景的协议端点。在图5a所示出的示例(以及本文中所描述的示例)中,场景所有者491是与其它参与者共享其混合现实场景的协议端点。例如,场景所有者491可以包括操作诸如图3中所示的用户设备并捕获用户a的环境的用户。还可以允许场景所有者添加、移除、以及操纵(虚拟)对象(也被称为注释)到场景视图。在一些实施例中,添加、移除、或操纵对象可以使用用户接口来实现。

场景参与者495可以是被配置为接收由场景所有者491生成的混合现实场景的协议端点。场景参与者495可以进一步被配置为能够添加、移除、以及操纵场景中的对象。

对共享场景中这些对象进行可视化、定位、以及与其交互(如先前所描述的)可能呈现问题。对象可以具有视觉表示并且具有相关联的内容(例如,音频/视频/文本)。例如,参与者可以将视频播放器对象放置在共享场景中,并与其进行交互以开始播放视频以供所有参与者观看。另一参与者可以尝试与相同的对象进行交互以控制回放或改变对象在场景中的位置。如此,对象应当相对于视频或图像内的现实世界对象以及针对参与者中的全部的其它(虚拟)对象出现在相同位置处。

此外,受制于可接受的延迟,对象的状态对于参与者中的全部而言还应当是一致的。因此,例如当为所有参与者播放视频时,视频对象在大致相同的位置处应当显示相同的视频。

共享场景或混合现实应用也应当被实现为使得在任何时候加入协作会话的参与者都能够对他们的场景的试图与其它参与者的试图进行同步。换言之,场景对于参与者中的全部而言是相同的,独立于参与者何时加入会话。

类似地,混合现实应用应当能够使得场景能够被暂停或拍快照,以使得会话可以被中止并且然后可以通过恢复快照来在以后的时间继续。换言之,即使当没有用户使用场景时,场景也应当具有持续性。

本文中所描述的架构可以用于实现被设计为高效地满足上面所描述的需求的消息协议和通信机制的集合。概念因此能够涉及诸如“仅最新的可靠消息递送”和“基于对象的”流控制的通信机制。“仅最新的消息递送”的实现方式可以减少所发送的和/或所接收的对象信息流量的量,并且因此高效地利用处理器和网络带宽。这对于其中使处理器利用和网络带宽最小化是共同的设计目的的移动且可佩戴的设备而言是重要且可期望的成就。类似地,基于对象的流控制允许发射机和接收机选择性地限制流量需求以用于对给定对象的状态进行同步。

如图5a中所示出的,在一些实施例中,可以采用场景服务器493协议端点。场景服务器493可以被配置为在场景所有者419与参与者495之间中继消息。

场景所有者491、参与者495、或服务器493可以采用作为协议客户端实体操作的应用(或app)。协议客户端实体可以被配置为控制协议端点以用于传达并控制协议端点之间的数据流。

在以下示例中,对象消息交换使用诸如图5a中所示出的场景服务器中介架构来执行。换言之,消息经由场景服务器493传递,场景服务器493将每条消息转发至其目的地。如图5a中所示出的,能够将场景服务器看作与场景所有者491或参与者495分离的协议端点。然而,场景服务器493可以在场景所有者用户设备、参与者用户设备、或专用服务器设备中的一个内实现。

可以理解,在一些实施例中,消息交换在端对端的基础上执行。由于端对端消息交换情况在概念上是服务器中介情况的特殊情况,其中,场景所有者端点和服务器端点共同位于相同的设备上,然后以下示例也可以应用于端对端实施例。

本文中的数据模型可以用于促进对用于同步本文中所描述的对象(或注释)的协议的描述。在每个协议端点(例如,场景服务器、场景所有者、以及参与者)处,会话管理实体或会话管理实体应用可以维护共享场景的视图。场景的视图可以是场景内的对象(或注释)的表示。对象表示可以包括数据对象,其包括诸如对象类型、坐标、以及在空间或场景中的取向的属性。然后,协议端点可以使用会话管理实体应用来维护使用对象表示的一致的场景视图。以这种方式,对场景对象的表示的任何更新都能够被版本化并使用协议消息传达到其它端点。场景服务器可以中继这些消息中的全部并基于其中可应用的陈旧版本来丢弃更新。

能够将用于交换消息的协议划分成数据平面和控制平面。在每个协议端点处,数据平面可以实现消息递送实体应用和分组递送实体应用,它们负责维护消息队列/分组队列并对经排队的发送和/或接收消息和分组的递送状态保持跟踪。在以下实施例中,突出的出站消息是已经被发送但是尚未被接收方确认的消息。突出的入站消息是已经被接收但是尚未被递送到本地端点(例如,会话管理实体)的消息。

控制平面要求能够在场景服务器端点内实现并且可以被配置为在场景所有者与其它参与者之间维护场景的状态。例如,场景服务器493可以被配置为针对每个连接的端点维护协议版本和端点能力。

关于图5a示出了在包括对象信息的共享场景混合现实应用的初始化中所涉及的消息协议的示例。

在以下示例中,场景所有者491可以被配置为使用协议客户端实体来创建端点以及获得服务器端点493的地址。地址确定可以通过静态配置地址或通过域名系统(dns)查询来进行。

然后,协议客户端实体应用可以通过发出连接请求消息并向服务器493发送连接请求消息以注册场景用于共享来宣称其本身为场景所有者。

在图5a中通过步骤471示出了将来自场景所有者491的连接请求消息发送到服务器493的操作。

然后,服务器493可以利用合适的确认消息对场景所有者491进行响应。

图5a中通过步骤473示出了向场景所有者491发送确认消息的服务器的操作。

然后,场景所有者491可以被配置为生成场景通告消息并将其发送到服务器493。

在图5a中通过步骤475示出了发送场景通告消息的操作。

然后,服务器493可以向受邀者中继场景通告消息。换言之,场景通告消息可以包括由服务器使用以向正确的位置发送场景通告消息的地址或合适的用户标识符。

在图5a中通过步骤477示出了将来自服务器493的场景通告消息发送到参与者495的操作。

然后,参与者端点可以使用其协议客户端应用来生成连接请求消息并向服务器493发送该消息以注册有兴趣加入场景。

在图5a中通过步骤479示出了发送连接请求消息的操作。

然后,服务器493能够转发连接请求或生成参与请求消息并向场景所有者491发送该消息。

在图5a中通过步骤481示出了将来自服务器493的参与请求消息发送到场景所有者491的操作。

然后,场景所有者491可以确定参与者是否被授权参与并生成参与响应消息。然后可以将参与响应消息发送到服务器493。

在图5a中通过步骤483示出了将来自场景所有者491的参与响应消息发送到服务器493的操作。

然后,服务器493可以被配置为根据参与响应消息生成连接响应消息,并向参与者495发送连接响应消息。

在图5a中通过步骤485示出了发送连接响应消息485的操作。

服务器和其它端点可以维护合适的定时器。例如,连接/加入状态机定时器可以在交换连接/加入消息的两个端点处使用。此外,在一些实施例中,可以采用保活(keepalive)定时器来触发保活消息的发送。类似地,重新发送定时器可以被实现为仅针对可靠消息触发重新发送。

关于图5b进一步详细示出了用户设备内的控制架构。逻辑层501能够包括处理对象信息的任何合适的应用,例如,会话管理实体应用、消息递送实体应用、分组递送实体应用、以及连接状态实体应用。

逻辑层501可以被配置为经由(出站)发送路径502和(入站)接收路径504来与i/o或客户端层503进行通信。

i/o或客户端层503可以包括资源管理器511。资源管理器可以控制对象数据的处理。此外,资源管理器可以被配置为控制(出站消息)发送队列513和(入站消息)接收队列515。

此外,资源管理器511可以被配置为向os层505和nic驱动器507发送控制信号。例如,这些控制信号可以是取消发送(cancelsend)和/或设置接收速率限制(setreceiveratelimit)信号517,其可以经由控制路径516、526发送到os层505和nic驱动器507。

发送队列513可以被配置为接收来自资源管理器的分组并通过发送路径512向os层发送分组。接收队列515可以被配置为经由接收路径514接收来自os层505的消息。

os层505可以接收来自发送队列513的出站消息并经由发送路径522将这些出站消息传递到nic驱动器507。此外,os层505能够通过接收路径524接收来自nic驱动器507的消息,并且进一步经由接收路径514将这些消息传递到接收队列515。

关于图6进一步详细示出了会话管理实体应用600与消息递送实体和分组递送实体601以及连接状态实体603的交互的示例。

会话管理实体600可以被配置为维护或接收对象表示属性并且此外对何时接收到任何对象交互指令进行检测。例如,用户可以移动对象或与对象进行交互,使得对象的属性中的一个属性改变。会话管理实体600可以被配置为处理对象交互指令/输入并生成或输出要传递到消息递送实体/分组递送实体601的经修改的对象属性。此外,连接状态实体应用600可以被配置为对消息递送实体/分组递送实体进行控制。

因此,例如,图7示出了示例流程图700,其示出了针对发送路径的消息递送实体/分组递送实体601的操作。在该示例中,会话管理实体600可以生成新的或经修改的对象属性消息。

在图7中通过步骤s702示出了生成对象属性消息的操作。

对象属性消息可以传递到消息递送实体/分组递送实体,并且消息被戳记(stamp)或者与序列号和对象标识值相关联。对象标识值可以标识对象,并且序列号标识修改的序列内的位置。

在图7中通过步骤s704示出了戳记消息/关联消息与序列号和对象id值的操作。

然后,消息递送实体/分组递送实体601可以被配置为确定视频帧周期或其它视频帧相关的周期是否已经结束。

在图7中通过步骤s706示出了确定帧或周期结束的操作。

当周期尚未结束时,方法能够传递回生成下一条经修改的对象属性消息的操作。

然而,当帧或周期已经被确定时,则消息递送实体/分组递送实体可以被配置为针对当前视频帧或周期检查具有经确定的对象标识符值的消息中的全部。

在步骤s708中示出了针对帧或周期检查具有经确定的对象标识符的所有消息的操作。

然后,消息递送实体/分组递送实体601可以被配置为基于序列号从帧周期或其它周期内的消息中确定消息的最新数量(或最新消息)。

在图7中通过步骤s710示出了基于序列号来确定最新消息的操作。

然后,消息递送实体/分组递送实体601可以被配置为在发送路径中删除在该特定帧周期或其它周期内的具有对象标识值的其它消息中的全部。

在图7中通过步骤s712示出了在帧周期或其它周期中的具有对象id的所有其它对象属性消息的删除。

然后,方法能够传递回检查另外的对象交互指令或输入。

在实现这样的实施例时,能够对在给定的视频帧周期或其它周期内的针对特定对象的对象属性消息的消息流进行控制,以使得存在更新状态或给定对象的位置的至少一条消息的传输,但是网络并不充满消息。此外,可以使得发送路径api在所有层对于应用可用,以用于丢弃利用针对给定对象id的发送路径排队的多余消息。

此外,在一些实施例中,发送方可以被配置为提供关于所尝试的或所取消的发送的反馈。

实现如本文中所描述的这样的实施例的服务器可以被配置为在不超过接收方的消息速率限制的情况下提供或执行应用层多播。

关于图8示出了示例流程图800,其示出了针对接收路径的消息递送实体/分组递送实体601的操作。接收路径指代在端点处具有应用的输送层实体、底层操作系统、以及网络驱动器的所有传入队列阶段。

在一些实施例中,诸如关于发送路径所描述的对象属性消息被接收。

在图8中通过步骤s802示出了接收对象属性消息的操作。

消息递送实体/分组递送实体601此外可以被配置为确定视频帧周期(或其它经确定的周期)是否已经结束。

在图8中通过步骤804示出了确定经确定的帧(或其它周期)的结束的操作。

当周期尚未结束时,则方法可以循环回接收另外的对象属性消息。

当周期已经结束时,则连接状态实体应用603然后可以被配置为确定在其上可以做出接收消息的控制的一些参数估计和判决变量。

例如,在一些实施例中,连接状态实体应用603可以被配置为确定每个更新过程所需要或消耗的cpu周期的数量。

在图8中通过步骤s806示出了估计每次更新所消耗的cpu周期的操作。

在一些实施例中,连接状态实体应用603可以被配置为确定或估计当前cpu负载和/或网络带宽。

在图8中通过步骤s808示出了确定当前cpu负载/网络带宽的操作。

此外,在一些实施例中,连接状态实体应用603可以被配置为确定特定对象的对象优先级。例如,对象优先级能够基于对象是否在视图内、对象最近是否被查看、或者对象最近是否被交互。

在图8中通过步骤s810示出了确定至少一个判决变量的操作。

然后,在一些实施例中,连接状态实体应用603可以被配置为基于所确定的变量和容量确定中的至少一个来设置对象更新的“速率限制”。

在图8中通过步骤s812示出了设置速率限制的操作。

然后,消息递送实体/分组递送实体601可以被配置为确定在周期内的针对对象的最后“n”条消息,其中“n”是速率限制。例如,这可以通过确定关于在周期内的针对对象id所接收的消息的最后“n”个序列号来执行。

在图8中通过步骤814示出了确定最后“n”条消息的操作。

然后,应用能够在所接收的路径中删除在该周期内的针对该对象id的消息中的全部,而不是最后“n”条消息。

在图8中通过步骤s816示出了删除周期中的具有对象id的其它消息中的全部的操作。

然后,方法可以传递回接收另外的对象消息的操作。

以这样的方式,接收方不过载对象属性消息。

尽管已经参考由用户做出的与关于传入的实时视频的帧所定位的对象的交互描述了实施例,但是本公开的实施例延伸到在由计算机生成的图像上的交互。

一般地,本文中所描述的功能中的任何功能能够使用软件、固件、硬件(例如,固定逻辑电路)、或者这些实现方式的组合来实现。如本文中所使用的术语“控制器”、“功能”、“部件”、以及“应用”一般表示软件、固件、硬件、或者其组合。在软件实现方式的情况下,控制器、功能、部件、或应用表示当在处理器(例如,cpu或多个cpu)上被执行时执行特定任务的程序代码。程序代码能够存储在一个或多个计算机可读存储器设备中。下面所描述的技术的特征是独立于平台的,表示技术可以在具有各种处理器的各种商业计算平台上实现。

例如,用户终端还可以包括使得用户终端的硬件执行操作(例如,处理器功能块等)的实体(例如,软件)。例如,用户终端可以包括计算机可读介质,其可以被配置为维护指令,该指令使得用户终端以及更具体地用户终端的操作系统和相关联的硬件执行操作。因此,指令起作用以将操作系统和相关联的硬件配置为执行操作,并且以这种方式产生操作系统和相关联的硬件的转换以执行功能。指令可以通过各种不同的配置由计算机可读介质提供给用户终端。

计算机可读介质的一种这样的配置是信号承载介质,并且因此被配置为将指令(例如,作为载波)传输到计算设备,例如,经由网络。计算机可读介质还可以被配置为计算机可读存储介质并且因此不是信号承载介质。计算机可读存储介质的示例包括随机存取存储器(ram)、只读存储器(rom)、光盘、闪速存储器、硬盘存储器、以及可以使用磁的、光的、以及其它技术来存储指令和其它数据的其它存储器设备。

提供了一种在通信架构内的用户设备,该用户设备包括:图像捕获设备,其被配置为确定用于创建定义共享场景的视频信道的图像数据以及内在/外在捕获设备数据;表面重构实体,其被配置为确定与来自图像捕获设备的图像数据相关联的表面重构数据;视频信道,其被配置为对图像数据以及内在/外在捕获设备数据进行编码和分包;表面重构信道,其被配置为对表面重构数据进行编码和分包;发射机,其被配置为发送视频信道分组和表面重构信道分组;以及带宽控制器,其被配置为对分配给视频信道和表面重构信道的带宽进行控制。

带宽控制器可以被配置为:确定初始带宽容量;以及在表面重构信道与视频信道之间均等地划分初始带宽。

带宽控制器可以被配置为:在预先确定的时间段之后确定针对表面重构信道和视频信道的短期带宽容量估计和长期带宽容量估计;以及基于针对表面重构信道和视频信道的短期带宽容量估计和长期带宽容量估计来控制在对表面重构数据进行编码和分包之内的细节级别的参数。

带宽控制器可以被配置为基于针对表面重构信道和视频信道的短期带宽容量估计和长期带宽容量估计来分配带宽以用于对视频信道内的图像数据以及内在/外在捕获设备数据进行编码和分包。

带宽控制器还可以被配置为基于ack控制系统来控制表面重构分组片段的重新发送。

用户设备还可以包括:未决缓冲器,其用于保留任何表面重构数据分组的引用直到它们被发送为止;以及未确认缓冲器,其用于一旦任何表面重构数据分组被发送则保留分组的引用,其中,带宽控制器被配置为基于未确认缓冲器的窗口大小来限制被发送的表面重构分组。

发射机可以被配置为独立于接收反馈消息而发送在未决缓冲器中引用的表面重构分组。

一种通信架构,包括:本文中所描述的用户设备;以及另外的用户设备,该另外的用户设备包括:接收机,其被配置为接收针对定义共享场景的视频信道以及与视频信道内的来自图像捕获设备的图像数据相关联的表面重构信道的分组;视频分组提取器,其被配置为从视频信道内提取图像数据以及内在/外在捕获设备数据;表面重构分组提取器,其被配置为从表面重构信道内提取表面重构数据分组;反馈消息生成器,其被配置为至少生成反馈消息以用于对分配给视频信道和表面重构信道的带宽进行控制。

根据另外的方面,提供了一种在通信架构内实现的方法,该方法包括:确定用于创建定义共享场景的视频信道的来自图像捕获设备的图像数据以及内在/外在捕获设备数据;确定与来自图像捕获设备的图像数据相关联的表面重构数据;对视频信道内的图像数据以及内在/外在捕获设备数据进行编码和分包;对表面重构信道内的表面重构数据进行编码和分包;发送视频信道分组和表面重构信道分组;以及对分配给视频信道和表面重构信道的带宽进行控制。

对分配给视频信道和表面重构信道的带宽进行控制可以包括:确定初始带宽容量;以及在表面重构信道与视频信道之间均等地划分初始带宽。

对分配给视频信道和表面重构信道的带宽进行控制可以包括:在预先确定的时间段之后确定针对表面重构信道和视频信道的短期带宽容量估计和长期带宽容量估计;基于针对表面重构的长期带宽容量估计来对分配给表面重构信道的带宽进行控制包括:基于针对表面重构信道和视频信道的短期带宽容量估计和长期带宽容量估计来控制在对表面重构数据进行编码和分包之内的细节级别的参数。

对分配给视频信道的带宽进行控制可以包括:基于针对表面重构信道和视频信道的短期带宽容量估计和长期带宽容量估计来分配带宽以用于对视频信道内的图像数据以及内在/外在捕获设备数据进行编码和分包。

对分配给视频信道和表面重构信道的带宽进行控制还可以包括基于ack控制系统来控制表面重构分组片段的重新发送。

该方法还可以包括:维护未决缓冲器,其用于保留任何表面重构数据分组的引用直到它们被发送为止;以及维护未确认缓冲器,其用于一旦任何表面重构数据分组被发送则保留分组的引用,其中,对分配给视频信道和表面重构信道的带宽进行控制包括基于未确认缓冲器的窗口大小来限制被发送的表面重构分组。

根据第三方面,可以提供一种计算机程序产品,该计算机程序产品被实施在非暂时性计算机可读介质上,并且被配置为使得当在共享场景架构内的协议端点实体的处理器上被执行时进行以下操作:确定用于创建定义共享场景的视频信道的来自图像捕获设备的图像数据以及内在/外在捕获设备数据;确定与来自图像捕获设备的图像数据相关联的表面重构数据;对视频信道内的图像数据以及内在/外在捕获设备数据进行编码和分包;对表面重构信道内的表面重构数据进行编码和分包;发送视频信道分组和表面重构信道分组;以及对分配给视频信道和表面重构信道的带宽进行控制。

尽管已经以特定于结构特征和/或方法行为的语言描述了主题,但是应当理解,在所附权利要求中限定的主题并非必须限于上面所描述的特定特征或行为。相反,上面所描述的特定特征和行为作为实现权利要求的示例形式公开。

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