具有远程设备输入同步的流应用环境制造技术

技术编号:22174797 阅读:53 留言:0更新日期:2019-09-21 15:26
在流应用环境中,可以部分地通过使用在远程设备和流应用环境之间传递的帧刷新事件使在远程设备中生成的输入与由流应用环境中的虚拟流应用生成的渲染内容同步,以使流应用环境能够有效地跟踪远程设备的帧刷新率,使得从远程设备接收到的输入事件可以以适当的帧间隔注入到虚拟流应用中。

Stream application environment with remote device input synchronization

【技术实现步骤摘要】
【国外来华专利技术】具有远程设备输入同步的流应用环境
技术介绍
一些应用服务提供将软件应用(更简单地“应用”或“app”)交互“流传输”到远程设备(例如,诸如智能电话、平板电脑、车辆计算系统、可穿戴设备(例如,智能手表)等等的移动设备)的能力。这样的应用的流传输可以允许用户操作应用而无需在远程设备上本地实际下载和安装应用,这在具有有限处理和/或存储器资源的远程设备中可能是有用的,或者为了试用应用的目的。在一些实例中,可以通过在由一个或多个服务器(例如,共同形成的所谓的“云”)操作的虚拟机上安装应用来完成应用流传输,由此一个或多个输入/输出(“I/O”)流可以在虚拟机和远程设备之间建立以向虚拟机提供在远程设备处接收到的输入数据的各种模态,并且同样地向远程设备提供由来自于虚拟机的应用生成的输出数据的各种模态。在一些实例中,应用服务在能够支持一个或多个虚拟流应用以供一个或多个远程设备使用的流应用环境中实现。此外,在一些实例中,虚拟流应用生成的内容可以以被捕获、编码并流传输到远程设备以进行视频回放的渲染帧缓冲器的形式输出。然后,在远程设备上,诸如手势或触摸事件和其他输入的用户控制信息可以被捕获、编码并被上传到流应用环境并注入虚拟流应用以相应地渲染其内容。然而,即使超出在远程设备上的本地应用所渲染的同步挑战,将用户控制信息和其他输入的注入与远程设备上的应用内容的渲染同步也能够是有问题的。例如,在诸如移动设备的计算设备包括能够被用户的手指操纵的触摸屏的情况下,确保通过渲染的内容跟踪诸如手指滑动或滚动手势的用户输入即使对于本地已安装的应用也能够是挑战性的。作为示例,使用多个事件来处理针对触摸屏的许多手势。在许多实例中,诸如手指滑动的手势通常由当用户第一次将手指放在触摸屏上时发出信号的“触摸开始(touchdown)”事件、当用户抬起手指离开触摸屏时发出信号的“触摸结束(touchup)”事件、以及在触摸触摸屏时跟踪手指移动的多个“触摸移动”事件来表示。在许多计算设备中,可以以与触摸屏计算设备的帧刷新速率匹配的速率(即在触摸屏上更新以帧形式渲染的内容的速率)在该设备上生成事件。此外,在许多计算设备中,帧可以以大约60Hz或更高的频率进行更新,并且因此,简单的手指滑动可以导致产生数十或数百个单独但相关的事件。此外,已经发现,当某些类型的用户输入事件未与在此期间生成输入事件的所渲染的内容帧适当地同步时,可能导致不良的用户体验。但是作为一个示例,通过在触摸屏上拖动用户的手指来缓慢滚动内容能够导致当与移动相关联的事件被映射到错误帧时的不稳定。然而,在计算设备通过诸如因特网的分组交换网络在流应用环境中与虚拟流应用交互的情况下,前述同步挑战要大得多。由于因特网和其他分组交换网络的实际限制,包含用户输入和/或渲染内容的分组可能被完全延迟或丢失,并且可能无序地到达。此外,在许多移动和/或车辆应用中可能出现网络连接受损的情况下,分组丢失或延迟的风险更大。虽然诸如传输控制协议(TCP)的协议允许在丢失分组的情况下进行分组重传,但是等待接收所有分组以便于确保接收和处理所有输入数据和渲染内容可能会引入不可接受的延迟并减损用户体验。
技术实现思路
本文公开的一些实施方式可以包括在包括一个或多个处理器的流应用环境中执行的方法,其可以包括将虚拟流应用与通过分组交换网络耦合到流应用环境的远程设备对接,包括从分组交换网络接收在远程设备处生成的输入并且将响应于接收到的输入由虚拟流应用生成的输出显示表示通过分组交换网络流传输到远程设备,从远程设备接收帧刷新事件,每个帧刷新事件与远程设备上的帧相关联,从远程设备接收输入事件,每个输入事件与在远程设备上的帧期间生成的输入相关联,生成用于与和接收到的帧刷新事件相关联的帧相对应的虚拟流应用的虚拟帧,以及控制将接收到的输入事件注入到虚拟流应用中以将接收到的输入事件排列在与和接收到的输入事件相关联的帧相对应的虚拟帧内。在一些实施方式中,分组交换网络包括因特网,并且远程设备包括移动电话、平板计算机、可穿戴计算机或车辆计算机。此外,在一些实施方式中,来自远程设备的帧刷新事件基于远程设备的帧刷新率来生成,并且生成虚拟帧包括控制虚拟帧刷新率以跟踪远程设备的帧刷新率。此外,在一些实施方式中,生成用于虚拟流应用的虚拟帧包括响应于从远程设备接收到的第一帧刷新事件生成第一虚拟帧刷新事件。另外,在一些实施方式中,生成第一虚拟帧刷新事件包括控制在向虚拟流应用发出第一虚拟帧刷新事件和从远程设备接收第一帧刷新事件之间的延迟。此外,在一些实施方式中,控制延迟包括根据V(t)=A(t’)+(t-t’)+D来调度第一虚拟帧刷新事件的发出,其中t是在从远程设备接收到的第一帧刷新事件内包括的时间戳,t'是相对最小的单向网络延迟,V(t)是发出第一虚拟帧刷新事件的流应用环境中的发出时间,A(t')是从远程设备接收第一帧刷新事件的流应用环境中的接收时间,并且D是最大回放延迟。在一些实施方式中,控制延迟包括基于在分组交换网络中观察到的网络抖动来改变延迟。另外,在一些实施方式中,生成用于虚拟流应用的虚拟帧包括响应于发出第一虚拟帧刷新事件并且基于从远程设备接收到的先前帧刷新事件的外推来调度下一个虚拟帧刷新事件的发出使得不管来自远程设备的下一帧刷新事件的延迟或丢失如何也发出下一个虚拟帧刷新事件。此外,在一些实施方式,生成用于虚拟流应用的虚拟帧包括响应于发出第一虚拟帧刷新事件并且基于第一帧刷新事件和从远程设备接收到的稍后的帧刷新事件之间的内插来调度下一个虚拟帧刷新事件的发出,使得不管来自远程设备的下一个帧刷新事件的延迟或丢失如何也发出下一个虚拟帧刷新事件。在一些实施方式中,流应用环境进一步包括视频流组件,该视频流组件被配置成流传输由虚拟流应用生成的输出显示表示,并且该方法进一步包括以相对于第一虚拟帧刷新事件的受控延迟调度第一流组件帧刷新事件到视频流组件的发出。此外,在一些实施方式中,控制接收到的输入事件到虚拟流应用中的注入包括:对接收到的输入事件进行排队,包括针对每个接收到的输入事件排队相关联的时间戳,以及在与远程设备上的第一帧相对应的第一虚拟帧期间,忽略是重复的任何排队输入事件,注入按时的任何排队输入事件,丢弃迟到的任何排队输入事件,并且继续排队早到的任何排队输入事件。另外,在一些实施方式中,每个输入事件与指向远程设备的触摸屏的用户输入相关联。一些实施方式还可以包括在包括一个或多个处理器和显示器的设备中执行的方法,该方法可以包括从通过分组交换网络耦合到设备的流应用环境接收输出显示表示,输出显示表示由驻留在流应用环境中的虚拟流应用生成;在显示器上渲染接收到的输出显示表示的多个帧;响应于在渲染多个帧期间生成的输入,通过分组交换网络向流应用环境发出输入事件以用于通信,每个输入事件与多个帧中的在其间生成相关联的输入的帧相关联,以及通过分组交换网络向流应用环境发出多个帧中的每个帧的帧刷新事件以用于通信以使流应用环境能够控制输入事件的注入以将输入事件排列在与和输入事件相关联的帧相对应的虚拟流应用的虚拟帧内。一些实施方式也包括系统,该系统包括一个或者多个处理器和可操作地与一个或多个处理器耦合的存储器,其中存储器存储指令,所述指令响应于所述被一个或多个处理器执行而使得一个或多个处理器执行上述任本文档来自技高网
...

【技术保护点】
1.一种方法,包括,在包括一个或多个处理器的流应用环境中:将虚拟流应用与通过分组交换网络耦合到流应用环境的远程设备对接,包括从所述分组交换网络接收在所述远程设备处生成的输入并且将响应于接收到的输入由所述虚拟流应用生成的输出显示表示通过所述分组交换网络流传输到所述远程设备;从所述远程设备接收帧刷新事件,每个帧刷新事件与所述远程设备上的帧相关联;从所述远程设备接收输入事件,每个输入事件与在所述远程设备上的帧期间生成的输入相关联;生成用于与和接收到的帧刷新事件相关联的所述帧相对应的所述虚拟流应用的虚拟帧;以及控制将接收到的输入事件注入到所述虚拟流应用中以将接收到的输入事件排列在与和接收到的输入事件相关联的所述帧相对应的所述虚拟帧内。

【技术特征摘要】
【国外来华专利技术】2016.11.18 US 62/424,167;2016.12.02 US 15/368,5351.一种方法,包括,在包括一个或多个处理器的流应用环境中:将虚拟流应用与通过分组交换网络耦合到流应用环境的远程设备对接,包括从所述分组交换网络接收在所述远程设备处生成的输入并且将响应于接收到的输入由所述虚拟流应用生成的输出显示表示通过所述分组交换网络流传输到所述远程设备;从所述远程设备接收帧刷新事件,每个帧刷新事件与所述远程设备上的帧相关联;从所述远程设备接收输入事件,每个输入事件与在所述远程设备上的帧期间生成的输入相关联;生成用于与和接收到的帧刷新事件相关联的所述帧相对应的所述虚拟流应用的虚拟帧;以及控制将接收到的输入事件注入到所述虚拟流应用中以将接收到的输入事件排列在与和接收到的输入事件相关联的所述帧相对应的所述虚拟帧内。2.根据权利要求1所述的方法,其中,所述分组交换网络包括因特网,并且其中所述远程设备包括移动电话、平板计算机、可穿戴计算机或车辆计算机。3.根据权利要求1或者权利要求2所述的方法,其中,来自所述远程设备的所述帧刷新事件基于所述远程设备的帧刷新率来生成,并且其中生成所述虚拟帧包括:控制虚拟帧刷新率以跟踪所述远程设备的所述帧刷新率。4.根据前述权利要求中的任意一项所述的方法,其中,生成用于所述虚拟流应用的虚拟帧包括:响应于从所述远程设备接收到的第一帧刷新事件生成第一虚拟帧刷新事件。5.根据权利要求4所述的方法,其中,生成所述第一虚拟帧刷新事件包括:控制在向所述虚拟流应用发出所述第一虚拟帧刷新事件和从所述远程设备接收所述第一帧刷新事件之间的延迟。6.根据权利要求5所述的方法,其中,控制所述延迟包括根据以下来调度所述第一虚拟帧刷新事件的发出:V(t)=A(t’)+(t-t’)+D其中,t是在从所述远程设备接收到的所述第一帧刷新事件内包括的时间戳,t'是相对最小的单向网络延迟,V(t)是发出所述第一虚拟帧刷新事件的所述流应用环境中的发出时间,A(t')是从所述远程设备接收所述第一帧刷新事件的所述流应用环境中的接收时间,并且D是最大回放延迟。7.根据权利要求5所述的方法,其中,控制所述延迟包括基于在所述分组交换网络中的观察到的网络抖动来改变所述延迟。8.根据权利要求4至7中的任意一项所述的方法,其中,生成用于所述虚拟流应用的虚拟帧包括:响应于发出所述第一虚拟帧刷新事件并且基于从接收自所述远程设备的先前帧刷新事件的外推来调度下一个虚拟帧刷新事件的发出,使得不管来自所述远程设备的下一个帧刷新事件的延迟或丢失如何也发出所述下一个虚拟帧刷新事件。9.根据权利要求4至7中的任意一项所述的方法,其中,生成用于所述虚拟流应用的虚拟帧包括:响应于发出所述第一虚拟帧刷新事件并且基于所述第一帧刷新事件和从所述远程设备接收到的稍后的帧刷新事件之间的内插来调度下一个虚拟帧刷新事件的发出,使得不管来自所述远程设备的下一个帧刷新事件的延迟或丢失如何也发出所述下一个虚拟帧刷新事件。10.根据前述权利要求中的任意一项所述的方法,其中,所述流应用环境进一步包括视频流组件,所述视频流组件被配置成流传输由所述虚拟流应用生成的所述输出显示表示,并且所述方法进一步包括:以相对于所述第一虚拟帧刷新事件的受控延迟调度第一流组件帧刷新事件到所述视频流组件的发出。11.根据前述权利要求中的任意一项所述的方法,其中,控制将接收到的输入事件注入到所述虚拟流应用中包括:对接收到的输入事件进行排队,包括针对每个接收到的输入事件排队相关联的时间戳;和在与所述远程设备上的第一帧相对应的第一虚拟帧期间:忽略是重复的任何排队输入事件;注入按时的任何排队输入事件;丢弃迟到的任何排队输入事件;并且继续排队早到的任何排队输入事件。12.根据前述权利要求中的任意一项所述的方法,其中,每个输入事件与指向所述远程设备的...

【专利技术属性】
技术研发人员:张倬领吴平浩
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1