科技魔方

苹果专利为AR/VR流式传输提出分布式编码系统

即时新闻

2022年03月31日

  有时候,用户希望将正式录制的内容流式传输到另一台或多个其他设备。例如,用户可能正在通过头显录制视频,并希望将其流式传输到朋友的设备。但头显存在电源有限、计算有限和/或网络有限等各种限制。另外,用户有时希望在创建内容时自由走动。例如,在办公室环境中,用户可能希望在办公室中开始创建内容,并在沿着大厅走向会议室时继续创建内容。

  在名为“Distributed encoding”的专利申请中,苹果介绍了一种分布式编码系统。简单来说,录制设备可以寻找其他可用的计算设备,并将处理和/或编码的至少一部分转移到所述计算设备,以扩展可用于编码记录内容的计算资源量。例如,录制设备可以确定用户附近有当前未使用的智能手机,笔记本电脑和/或PC时,并判断存在空闲的计算资源可用于以不同格式编码记录的内容。基于所述发现,录制设备可评估与所录制内容相关联的一组编码操作,并可将所记录的内容卸载到所发现的设备并执行一个或多个编码操作。

  在各种实施例中,随着操作条件随时间变化,记录设备可以继续从可用计算设备收集信息。例如,如果记录设备正在与笔记本电脑进行无线通信,并且穿戴记录设备的用户走出房间,则记录设备可能会检测到与笔记本电脑的连接丢失,并重新分配对记录内容的编码处理方式。但在进入另一个房间时,记录设备可能会发现另一个可以帮助编码内容的可用设备,例如另一台平板电脑。然后,录制设备可以确定将编码内容卸载到新发现的设备。在评估什么编码操作可以卸载到所述新发现的可用设备。

  在一个实施例中,记录设备可以考虑与计算资源、服务质量、安全性等有关的众多因素来将一定的编码操作卸载到存在空闲资源的可用设备,以满足例如精度、准确度、保真度、处理时间、功耗、隐私考虑等各种目标。

  苹果指出,通过动态发现计算资源并基于上述考量因素来实时重新分配记录内容的编码操作,与仅限于记录设备的有限资源相比,系统可以实现更好的流式体验。另外,动态发现计算资源可以在创建内容时允许更大的移动性,因为记录设备在从一个空间转换到另一个空间时可以发现额外的计算资源。

  图1描绘了分布式编码系统10的框图。在所示实施例中,系统10包括记录设备110、多个计算节点120、存储器130和呈现设备140。如图所示,记录设备110可以包括分发引擎112。每个计算节点120同时可以包括相应的编码器助手122。

  在各种实施例中,记录设备110是配置为创建记录内容114的计算设备。因此,记录设备110可以包括一个或多个摄像头以记录视频内容和/或一个或多个麦克风以记录音频内容。在一个实施例中,记录设备110可以是头戴式显示器。在一个实施例中,记录设备110从一个或多个传感器(例如,陀螺传感器、位置传感器等)收集传感器数据,所述传感器配置为在创建记录内容114期间确定记录设备110的方向。然后,可以将传感器数据与记录的内容114一起提供,以便确定记录的内容114的后续呈现方向。因此,如果记录设备110的用户可以上下左右移动记录设备110以创建全景图。记录设备110的陀螺传感器可以检测所述移动并记录相应的传感器数据,以便允许在记录内容114的后续呈现中进行类似的移动。

  如上所示,为了帮助用户将录制内容共享给另一台设备,可以对记录的内容114进行编码以促进相关的流式传输。记录的内容114可以分解成以与不同质量水平相关联的各种格式编码的视频片段。呈现设备140随后可以基于其显示器的属性及其当前网络连接在格式之间进行选择。

  但继续如上所述,记录设备110可能没有足够的计算资源来及时处理并以多种格式编码记录内容114。针对这个问题,记录设备110可以使用计算节点120的计算资源。

  在各种实施例中,计算节点120是可用于协助记录设备110对记录的内容114进行编码的节点。计算节点120可以是任何类型的计算系统或计算设备,例如智能手机120E、平板电脑120F和笔记本电脑120G等等。

  在一个实施例中,计算节点120通常可分类为主要、第二和第三计算网格/组。主计算网格包括属于记录设备110用户的计算节点120。所述计算节点120可以提供比其他网格中的计算节点120更少的计算能力,但可以容易地供记录设备110的用户使用。图1中描绘的众多计算节点120可对应于这个网格。

  第二计算网格包括附近的计算节点120,其可以以更高的成本提供更大的计算能力。例如,用户操作记录设备110可以进入具有工作站120B的音乐会场地,并且可以从这样的节点120接收帮助,以便对记录的内容进行编码。第三计算网格包括通过云服务供用户使用的高性能计算节点120。例如,服务器集群可以基于远离记录设备110的服务器场,并且可以实现对编码记录内容114的支持。在这样的实施例中,计算节点120同时可以包括逻辑计算节点,例如虚拟机。

  如图1所示,用户操作记录设备110可以在初始位置开始记录内容114,并沿着路径102移动到用户停止记录内容114的结束位置。当记录设备110沿着路径102移动时,记录设备110可经由其网络接口检测可用于以一种或多种格式编码记录内容114的一个或多个计算节点120,并经由网络接口将记录内容114卸载到一个或多个计算节点120以以以一种或多种格式编码。例如,记录设备110最初可以检测具有足够能力以1080p分辨率对记录内容进行编码的无线扬声器120A。

  在所示的实施例中,区域104旨在表示空间中的球形区域,其可以(或可以不)彼此相邻,甚至可以重叠。例如,一个区域104可以在客厅,另一个在厨房,一个在办公室,另一个在会议室等。当记录设备110离开区域104A时,记录设备110可能会遇到与无线扬声器120A的无线连接质量下降,并失去对内容114进行编码的能力。但如图所示,记录设备110可以在进入4K编码区104B时检测工作站120B,并获得以4K分辨率编码记录内容的能力。随着记录设备110沿着路径继续,路径102可以检测其他计算节点120并获得或失去额外的计算资源。例如,当通过编码区104A传回编码区104E时,记录设备110可能无法检测到另一计算节点120,因此可能需要仅依赖其自身的计算资源来编码内容114。如上所述,计算节点120的可用性在本质上可以是动态的,因为它们的计算资源可用于其他目的。例如,记录设备110可以继续保持与平板电脑120F的无线连接,但如果有人拿起平板电脑120F并开始将其用于某些其他计算密集型目的,则记录设备110会失去其协助。

  在各种实施例中,分发引擎112可由记录设备110执行,以发现计算节点120并确定是否将编码记录内容114卸载到发现的计算节点120。分发引擎112可以基于从计算节点120接收的各种编码能力信息来执行确定。其中,所述编码能力信息通常可指引擎112用于评估记录内容114是否应(或不应)卸载到特定计算节点120以进行编码的任何适当信息。在一个实施例中,所述信息包括计算节点120支持的一种或多种格式的指示。例如,智能手表120C可指示其支持30fps的H.264/AVC 720p编码。

  在一个实施例中,所述编码能力信息包括识别包括在计算节点120的当前计算信息。例如,平板电脑120F可能表明,它目前仅使用其多核处理器的5%,并且能够分配1 GB的RAM用于编码记录的内容114。

  在一个实施例中,所述编码能力信息包括可用于确定特定计算节点是否属于如上所述的主网格的信息,并因此可以授权协助记录设备110。例如,分发引擎112可以从计算节点120接收与计算节点120相关联的用户指示,并确定所述用户是否对应于记录设备110的用户。

  在一个实施例中,所述编码能力信息包括计算节点120的安全能力的信息,并用以指示节点120维护和处理记录的内容114的安全程度。分发引擎112可以从计算节点120接收识别计算节点120内存在安全硬件的签名证明。由于计算节点120的能力可以随时间而改变,因此在一些实施例中,分发引擎112可以连续实时地从计算节点120接收编码能力信息,同时记录设备110记录内容114,节点120编码内容114。

  基于接收到的编码能力信息,分发引擎112可以确定是否将记录内容114卸载到计算节点120以对记录内容114进行编码。在一个实施例中,分发引擎112通过使用成本函数,并根据一组编码约束来评估编码能力信息,从而最小化功耗和延迟,同时确保提供最佳用户体验。这个评估可以在录制过程中继续进行。例如,当计算节点120以第一格式对卸载的记录内容114进行编码时,引擎112可以从计算节点120接收识别一个或多个计算资源的当前利用率的更新计算信息,并基于更新计算信息选择第二个计算节点。

  作为另一个示例,在将记录内容114卸载到一个或多个计算节点120的同时,引擎112可以检测到另一个计算节点120,并将记录内容114卸载到另一个计算节点120以对记录内容114进行编码。在一个实施例中,分发引擎112在评估是否卸载记录内容114时可以尝试主动(而不是被动)。换句话说,在创建记录的内容114之前,引擎112可以确定记录设备110的用户可能开始创建记录的内容(例如基于用户过去的行为),并且基于所述确定,尝试检测一个或多个计算节点120以促进记录的内容的后续编码。

  在各种实施例中,编码器助手122可由计算节点120执行以与分发引擎112接口,并便于对卸载的记录内容114进行编码。因此,编码器助手122可以经由其计算节点120的网络接口宣传经由一个或多个支持的编解码器对内容进行编码的能力,从响应于记录设备110接收对记录的内容114进行编码的请求。响应于请求,使用支持的编解码器之一并以呈现设备140支持的格式对记录的内容进行编码。

  作为与分发引擎112接口的一部分,助手122可以收集并提供各种编码能力信息。例如,助手122可以向记录设备110提供指示经由网络接口与记录设备110建立的网络连接质量信息。作为另一示例,助手122可以向记录设备110提供注册到计算节点的用户帐户指示。作为又一示例,助手122可以向记录设备110提供识别计算节点120的制造商的签名证明,并可用于确定计算节点120中存在的硬件。基于提供的信息,编码器助手122可以接收卸载的记录内容114以进行编码。

  图2是分发引擎112的框图。在所示的实施例中,分发引擎112包括发现引擎210、约束分析器220和任务颁发器230。

  在各种实施例中,发现引擎210处理可用计算节点120的发现和编码能力信息202的收集。在一个实施例中,发现引擎210通过发送广播来发现计算节点120,请求来自任何可用计算节点120的帮助,并基于计算节点120的响应来了解计算节点120。

  在各种实施例中,发现引擎210将从计算节点120接收的能力信息202聚合成动态约束向量212,并将其传送给约束分析器220。在一个实施例中,约束向量212可以包括关于单个节点120的信息202。在其他实施例中,向量212可以是多维的,并且包括来自多个节点120的信息202。给定向量212同时可以包括当前信息以及与记录内容114的过去编码相关联的先前收集信息。在这样的实施例中,引擎210可以分析当前和过去的信息,以预测计算节点120的未来能力,以便于辅助记录设备110。例如,引擎210可采用随时间评估过去和现在信息202的学习算法。

  在一个实施例中,发现引擎210收集关于可用计算节点120的附加信息,例如用户信息204。在这样的实施例中,计算节点120可以提供关于计算节点120的用户(或用户帐户)的信息204。然后,分发引擎112可以将由信息204标识的用户与记录设备110的当前用户进行比较。如果引擎112确定计算节点120和设备110共享同一用户(或者计算节点120属于同意共享计算资源的朋友或家庭成员),分发引擎112可确定计算节点120可用于协助编码记录内容114,并评估是否将记录内容114卸载以用于编码到所述节点120。

  在各种实施例中,约束分析器220基于与特定编码操作相关联的动态约束向量212和编码约束214,确定记录内容114的编码操作应如何分布在记录设备110和计算节点120之间。因此,分析器220可以分析向量212中标识的节点120的特定能力202,并将所述能力与编码约束214相匹配。编码约束214可以为特定编码操作定义期望的计算能力、延迟、网络带宽、安全要求、精度、保真度、处理时间和/或隐私考虑等。在一个实施例中,所述匹配可包括确定用于在记录设备110和计算节点120之间分发编码操作的多个不同分发计划224,以及计算每个不同分发计划224的成本函数222。在各种实施例中,成本函数222是确定给定分发计划224的特定成本的函数(或函数集合)。给定计划224的成本可以基于各种因素中的任何一个,例如用于实现计划224的总功耗、用于实现计划224的延迟、服务质量等。基于不同计划224的计算成本函数,分析器220可以确定为成本最低的特定分布224。

  在各种实施例中,任务颁发器230有助于实施约束分析器220选择的分发计划224。所以,任务颁发器230可以检查分发计划224,以确定编码操作已分配给特定节点120,并向所述节点120发送编码请求232以执行编码操作。在一个实施例中,颁发器230处理收集用于执行分配的编码操作的任何适当数据,并将数据传送到节点120。例如,颁发器230可以读取存储在记录设备110的存储器中的记录内容,并通过网络连接将所述信息传送到计算节点120。

  图4描述了能力交换400的框图。如上所述,计算节点120可以向分发引擎112提供各种编码能力202,以便于确定应如何卸载记录的内容114。

  在各种实施例中,可信证书颁发机构(CA)410是配置为颁发签名证书412的可信计算系统。在一个实施例中,CA 410可由记录设备110、计算节点120和/或呈现设备140的制造商操作;在其他实施例中,CA 410可由其他受信任实体操作。在各种实施例中,计算节点120可以通过生成具有公钥414A和相应私钥414B的公钥对并向CA 410发出证书签名请求(CSR)来获得证书412。在一个实施例中,CSR进一步由计算节点120维护的可信密钥签名,以便与CA 410建立信任。例如,这种可信密钥可以在其制造期间存储在计算节点120中。在一个实施例中,可信密钥对于给定计算节点120是唯一的。一旦可以成功地验证CSR,CA 410可以颁发相应的证书412。

  一旦收到证书412,分发引擎112可以验证证书412以确保其真实性。这可以包括验证CA 410的签名以确保证书412的内容的完整性。

  图5A描述了方法500的流程图。在步骤505,第一计算设备创建记录的内容以传输到配置为呈现记录的内容的第二计算设备。在各种实施例中,第一计算设备是头戴式显示器。在一个实施例中,第一计算设备从一个或多个传感器收集传感器数据。其中,传感器数据指示在创建记录的内容期间头显的方向。在这样的实施例中,第一计算设备将传感器数据提供给一个或多个计算节点以包含在编码内容中,所包含的传感器数据可由第二计算设备用于确定记录内容的呈现方向。

  在步骤510,第一计算设备通过第一计算设备的网络接口检测一个或多个计算节点,所述计算节点可用于以第二计算设备支持的一种或多种格式对记录的内容进行编码。在各种实施例中,检测包括第一计算设备从计算节点接收计算节点支持的一种或多种格式的指示,并基于一种或多种支持的格式,确定是否将记录的内容卸载到计算节点进行编码。

  在一个实施例中,检测包括第一计算设备从计算节点接收识别计算节点中的当前计算信息,所述计算信息可用于促进计算节点对记录内容进行编码。基于计算信息,确定是否将记录的内容卸载到计算节点进行编码。

  在步骤515,第一计算设备经由网络接口将记录的内容卸载到一个或多个计算节点,以便以一种或多种格式进行编码。在一个实施例中,当计算节点以第一格式对卸载的记录内容进行编码时,第一计算设备从计算节点接收识别一个或多个计算资源的当前利用率的更新计算信息,并基于更新的计算信息选择第二个计算节点以编码记录内容的不同格式。在各种实施例中,当将记录的内容卸载到一个或多个计算节点时,第一计算设备检测可用于编码记录的内容的另一计算节点,并将记录的内容卸载到另一计算节点以编码记录的内容。

相关专利

  :Apple Patent | Distributed encoding

  名为“Distributed encoding”的苹果专利申请最初在2021年5月提交,并在日前由美国专利商标局公布。

+1

来源:映维网

推荐文章