在360度视频中搜寻视频失真的制作方法

文档序号:19735794发布日期:2020-01-18 04:26阅读:216来源:国知局
在360度视频中搜寻视频失真的制作方法

相关申请的交叉引用

本申请要求于2017年12月17日提交、名称为“distortionofvideoforseekin360degreevideo”的美国非临时专利申请号15/844,599的优先权并作为该申请的继续申请,其全部内容通过引用并入本文。

实施例涉及在搜寻操作期间渲染360度流送视频。



背景技术:

通常,流送服务器编码360度视频的二维(2d)表示并且将经编码的2d表示的一部分通信到能够渲染360度视频的设备。替代地(或附加地),流送服务器编码360度视频的三维(3d)视频表示。在一种情况下,包含两个分开的2d视图(每只眼睛一个)或者编码并通信体积视频(volumetricvideo),或在另一种情况下,编码并通信包括深度信息的2d或立体视频。然后,设备解码2d(或3d)表示,将经解码的2d表示转换成360度视频,并且渲染该360度视频的一部分。



技术实现要素:

示例性实施例描述用于在搜寻操作期间编码、解码和流送视频的技术。在总体方面,一种方法包括:显示360度视频的第一帧的一部分,该第一帧的该部分基于设备的用户的视点;接收触发搜寻操作的指示;基于所述搜寻操作来选择所述360度视频的第二帧;编码所述第二帧的第一部分和所述第二帧的第二部分,所述第二帧的第一部分对应于所述第一帧的一部分;以及将所述第二帧的经编码的部分通信到所述设备。在优选实施例中,诸如从处理功率高于执行显示的设备的服务器或第二设备流送360度视频。基于用户对于第一帧的视点,与第一帧的一部分相对应的第二帧的第一部分可以是第二帧的该部分。在实施例中,执行显示的设备可以是与接收搜寻操作的指示的设备不同的设备或相同的设备。例如,头戴式设备可以执行显示,并且移动设备或控制设备可以接收触发搜寻操作的指示。在其他实施例中,当在诸如头戴式设备的另一设备上显示视频时,计算设备可以流送或以其他方式提供360视频并且接收触发搜寻操作的指示。进一步提供一种方法,包括:从显示流送360度视频的第一帧的一部分的设备,接收触发搜寻操作的指示,所述第一帧的该部分基于设备的用户的视点;基于所述搜寻操作来选择所述流送360度视频的第二帧;编码所述第二帧的第一部分和所述第二帧的第二部分,所述第二帧的第一部分对应于所述第一帧的该部分;以及将所述第二帧的经编码的部分通信到所述设备。

在另一总体方面,服务器包括控制器和编码器。所述控制器被配置成:控制对360度视频的第一帧的第一部分的渲染,所述帧的所述部分基于设备的用户的视点;接收触发搜寻操作的指示;基于所述搜寻操作来选择所述360度视频的第二帧;以及将经编码的第二帧通信到所述设备。所述编码器被配置成:编码所述第二帧的第一部分和所述第二帧的第二部分,所述第二帧的第一部分对应于所述第一帧的所述部分。在优选实施例中,流送360度视频,并且服务器是内容服务器。

在又一总体方面,一种非暂时性计算机可读存储介质,具有存储于其上的计算机可执行程序代码,所述代码当在计算机系统上执行时促使所述计算机系统执行步骤,所述步骤包括:显示360度视频的第一帧的一部分,所述第一帧的一部分基于设备的用户的视点;接收触发搜寻操作的指示;基于所述搜寻操作来选择所述360度视频的第二帧;编码所述第二帧的第一部分和所述第二帧的第二部分,所述第二帧的第一部分对应于所述第一帧的一部分;以及将所述第二帧的经编码的部分通信到所述设备。在优选实施例中,诸如从处理功率高于执行显示的设备的服务器或第二设备流送360度视频。

实施方式能够包括以下特征中的一个或多个。例如,所述第二帧的第二部分能够从所述第二帧的第一部分的中心向外延伸并且开始于所述第二帧的第一部分的边界。词语“向外”可以被理解为意指基于用户的视场在第一帧的一部分的外侧、诸如紧邻外侧的360度视频的部分。所述搜寻操作是快进操作或回顾/倒回操作中的一个操作。基于所述搜寻操作来选择所述第二帧能够包括:确定所述搜寻操作是否为快进操作,以及响应于确定所述搜寻操作是快进操作,选择依序前进的360度视频的后一帧作为所述第二帧。

例如,基于所述搜寻操作来选择所述第二帧能够包括:确定所述搜寻操作是否为回顾/倒回操作,以及响应于确定所述搜寻操作是回顾/倒回操作,选择依序倒退的360度视频的前一帧作为所述第二帧。编码所述第二帧的第一部分和所述第二帧的第二部分包括基于所述搜寻操作的搜寻速度来以帧速率编码所述第二帧。所述步骤能够进一步包括:通过使用投影技术来编码所述流送360度视频的第一帧的一部分,以及将经编码的第一帧通信到所述设备。编码所述第二帧能够包括:基于所述视点来定中心所述第二帧的第一部分,通过使用投影技术来投影所述第二帧,以及围绕经定中心的第一部分添加所述第二部分。

所述步骤能够进一步包括:通过使用第一投影技术来编码所述流送360度视频的第一帧的一部分,以及将经编码的第一帧通信到所述设备,其中,编码所述第二帧包括通过使用第二投影技术来编码所述第二帧。所述步骤能够进一步包括:在所述搜寻操作期间,从所述设备接收所述视点已改变的指示,以及基于已改变的视点来编码所述流送360度视频的第二帧。所述步骤能够进一步包括:在所述搜寻操作期间,从所述设备接收所述视点已改变的指示,基于已改变的视点来编码所述流送360度视频的第二帧,在所述搜寻操作期间,从所述设备接收触发回放操作的指示,基于已改变的视点来编码所述流送360度视频的第三帧的一部分,以及将经编码的第三帧通信到所述设备。

附图说明

通过下文给出的详细描述和附图,将更加充分地理解示例性实施例,其中,由相似的附图标记表示相似的元素,这些附图标记仅以说明性给出,因此并不限制示例性实施例,其中:

图1是根据至少一个示例性实施例的用于显示流送360度视频帧的方法的流程图。

图2a图示出根据至少一个示例性实施例的360度视频的帧。

图2b图示出根据至少一个示例性实施例的360度视频的帧的2d立方体表示的框图。

图2c图示出在2d立方体表示的框图内的帧的一部分。

图2d图示出在2d立方体表示的重排框图内的帧的这部分。

图2e图示出根据至少一个示例性实施例的360度视频的帧的2d表示的框图。

图3图示出与控制设备进行交互的用户。

图4、图5、图6和图7是根据至少一个示例实施例的用于编码/解码视频帧的方法的流程图。

图8是图示出用于与计算机生成的虚拟现实(vr)环境进行交互的示例性系统图。

图9a图示出根据至少一个示例性实施例的视频编码器系统。

图9b图示出根据至少一个示例性实施例的视频解码器系统。

图10图示出根据至少一个示例性实施例的系统。

图11示出根据至少一个示例性实施例的计算机设备和移动计算机设备的示例。

应当注意,这些附图旨在图示某些示例性实施例中利用的方法、结构和/或材料的通用特点,并且旨在补充下文提供的书面描述。但这些附图并未按比例绘制,而可能未精确反映任何给定实施例的精确结构或性能特点,并且不应被解释为定义或限制示例实施例所涵盖的值域或特性。例如,为了清楚,可以缩小或放大结构元素的相对厚度和位置。各图中使用相似或相同的附图标记旨在指示存在相似或相同的元素或特征。

具体实施方式

图1是根据至少一个示例性实施例的用于显示流送360度视频帧的方法的流程图。如图1所示,在步骤s105中,在显示设备上显示流送360度视频的帧的第一部分。视频能够是虚拟现实(vr)视频、360度视频、全景视频、180度视频等。在下文中,视频可以被称为视频或360度视频。例如,在回放操作期间,能够在虚拟现实(vr)头戴式设备上显示360度视频的帧的一部分。

在步骤s110中,触发对流送360度视频的搜寻操作的显示。例如,vr头戴式设备的用户能够使用控制设备来触发搜寻操作作为对360度视频的快进或回顾操作。搜寻操作能够使360度视频的一系列帧以比回放(例如,正常回放)操作的帧速率更快的帧速率显示。相应地,搜寻操作能够包括快进操作,该快进操作能够使依序前进的360度视频的一系列后续帧以比回放操作的帧速率更快的帧速率显示。此外,搜寻操作能够包括回顾操作,该回顾操作能够使依序倒退的360度视频的一系列先前帧以比回放操作的帧速率更快的帧速率显示。

在步骤s115中,基于搜寻操作,在显示设备上显示360度视频的第二帧的第一部分和第二部分,第二帧的第一部分对应于第一帧的一部分。第二帧能够是以比回放操作更快的帧速率显示的360度视频的一系列帧中的一帧。例如,第二帧能够选自360度视频中与快进操作相关联的后续帧中的一帧或者360度视频中与回顾操作相关联的先前帧中的一帧。在该示例中,与回放操作期间所显示的帧(例如,该帧的第一部分)相比,显示出360度视频的帧的更多部分(例如,第二部分)。

例如,在360度视频的回放期间,vr头戴式设备的用户基于该用户的视点仅看到360度视频的一部分(如下更详细地描述)。因此,360度视频的一些部分(可能是大部分)不显示并且不为用户所见。在一些实施方式中,360度视频的这些部分不被编码或通信到vr头戴式设备(或与vr头戴式设备相关联的计算设备)。如此在搜寻操作期间,vr头戴式设备的用户可能错失一些感兴趣的视频元素,因为感兴趣的视频在用户视点之外(例如,不包括在其范围内)。

因此,除帧的第一部分之外,示例性实施例显示360度视频的第二帧的第二部分。显示360度视频的第二帧的第二部分包括在回放(例如,正常回放)操作期间显示用户视点之外(例如,不包括在其范围内)的360度视频。例如,在搜寻操作期间,能够显示360度视频在vr环境中处于用户后面而在回放操作期间未显示的部分。在示例性实施方式中,能够在外围显示360度视频在vr环境中处于用户后面的部分(例如,以便用户在她的外围视觉中看到该部分)。

在另一实施方式中,能够生成360度视频的搜寻帧的二维(2d)图像投影(例如,作为鱼眼投影)。作为结果,vr头戴式设备的用户不应错失一些感兴趣的视频元素,因为在搜寻操作期间能够显示感兴趣的视频元素。

因此,如果vr头戴式设备的用户看到一些感兴趣的视频元素,则用户能够将她的注意力改变到感兴趣的视频元素,引起视点改变,其触发显示视频的改变。另外,用户能够基于新的视点,用显示360度视频的帧的第一部分和帧的第二部分来继续搜寻操作。用户也可能切换到回放操作,并且基于新的视点来显示帧的一部分。

在通信360度视频的帧(或帧的部分)之前,能够将360度视频的该帧投影成360度视频的该帧的二维(2d)表示。换而言之,在编码过程期间,能够将360度视频的帧投影或映射到二维(2d)表示(因此允许使用2d编码技术)。投影能够是矩形投影、圆柱投影、立方投影等。投影能够是半球鱼眼投影、有角鱼眼投影、等矩柱状投影、墨卡托投影、高斯投影、皮尔斯梅花投影、椭圆投影、超椭圆投影等。能够从360度视频的2d表示中选择帧的第一部分和帧的第二部分(如上所述)。

图2a图示出根据至少一个示例性实施例的360度视频的帧。如图2a所示,球体205表示360度视频的帧和表示360度视频的查看者基于查看者的视点将会看到的360度视频的帧的一部分的360度视频240的帧的一部分。能够基于从查看设备(例如,vr头戴式设备)接收到的用户视点的指示来选择360度视频240的帧的一部分。视点能够被确定为360度视频上的位置、点或焦点。例如,视点可能是360度视频上的经度和纬度位置。因此,如果用户正在观看以部分240为中心的点,则视点的指示能够是球体205上的纬度和经度位置。

从球体205内侧向外观看时,表示360度视频的帧的一部分的360度视频240的帧的部分可以是球体205的一部分。从球体205外侧朝球体205的中心观看时,表示360度视频的帧的一部分的360度视频240的帧的部分也可以是球体205的一部分。

图2b图示出根据至少一个示例性实施例的360度视频的帧的2d立方体表示的框图。这是投影技术的一个示例性实施方式,其他投影技术也在本公开的范围内(上文引用的一部分)。如图2b所示,2d立方体表示具有六(6)个立方体面210-a、210-b、210-c、210-d、210-e、210-f。在图2b的示例中,极点a能够被映射或投影到立方体面210-a的中心,极点b能够被映射或投影到立方体面210-b的中心。另外,沿球体205的中纬线的等距位置能够被映射到其余的立方体面。例如,点c能够被映射或投影到立方体面210-c的中心,点d能够被映射或投影到立方体面210-d的中心,点e能够被映射或投影到立方体面210-e的中心,并且f点(如果球体205以三维(3d)图示出,该点在球体205的背面上与e点正对)能够被映射或投影到立方体面210-f的中心。然后,球体205围绕每个极点a、极点b、点a、点b、点c和点d的一部分能够被映射到相应立方体面的其余部分。

图2c图示出在2d立方体表示的框图内的帧的一部分。通常,流送设备编码360度视频的帧的一部分并且将经编码的部分通信到查看设备(经由任意数目的中介节点)。换而言之,流送设备将360度视频帧映射到2d立方体表示,选择360度视频的帧的一部分(例如,360度视频240的帧的一部分),编码360度视频的帧的一部分,并且将360度视频的帧的经编码的部分通信到查看设备。经编码的部分能够包括缓冲区245。缓冲区能够被配置成允许vr头戴式设备小移动,而无需请求附加视频。

随着帧被流送,针对360度视频的每个帧一遍又一遍地重复该过程。当触发搜寻操作时,基于搜寻速度或帧速率,以更高的帧速率针对每个帧一遍又一遍地重复该过程。例如,搜寻速度或帧速率能够是正常回放速度的2倍、正常回放速度的4倍、正常回放速度的8倍、正常回放速度的16倍,有时又称为x2、x4、x8、x16等。

然而,根据一种示例性实施方式,流送设备能够流送360度视频的整个帧,而不是360度视频的帧的一部分。例如,如果在回放操作期间将360度视频240的帧的一部分流送到查看设备,触发搜寻操作,则后一帧包括(与正常回放相比)球体205的更大部分(例如,大于部分240和缓冲区245)。在示例性实施方式中,能够流送一定百分比(例如,50%、60%等)的立方体面210-e,能够流送立方体面210,能够流送两个以上立方体面,能够流送立方体面中的每一个。例如,包括360度视频240的帧的一部分的立方体面(例如,立方体面210-e)能够处于该帧的中心,其中一个或多个立方体面被定位于其周围。图2d图示出在2d立方体表示的重排框图内的帧的这部分。在该示例中,包括所有立方体面。然而,示例性实施方式不限于此。

图2e图示出根据至少一个示例性实施例的360度视频的帧的2d表示的框图。在另一实施方式中,在搜寻操作期间能够使用不同的投影技术。例如,在搜寻操作期间能够使用鱼眼投影或皮尔斯梅花(peircequincuncial)投影。在一些实施方式中,球体205在编码期间能够被重新定位(例如,旋转、平移等),以便当在查看设备上渲染时,部分240将处于查看设备的用户的视场内。附加地(或替代地),球体205能够被重新定位以最小化由搜寻操作期间使用的投影技术导致部分240的变形量。能够从2d表示中选择一部分(例如,第一部分和/或第二部分)。

图3图示出用户与控制设备进行交互。如图3所示,用户305能够使用头戴式设备310正在查看360度视频,正在与包括360度视频等的vr环境进行交互。能够通过使用控制设备315来控制360度视频,与包括360度视频等的vr环境进行交互。控制设备315包括与控件320、控件325和控件330的接口。控件320能够被配置成触发针对360度视频的回放操作。控件325能够被配置成触发针对360度视频的快进操作。控件330能够被配置成触发针对360度视频的回顾操作。

图1和图4至图7是根据示例性实施例的方法的流程图。关于图1和图4至图7描述的步骤可以(例如,如图9a和图9b所示)因执行与装置相关联的存储器(例如,至少一个存储器710、760)中所存储的硬件模块或软件代码而执行并且由与该装置相关联的至少一个处理器(例如,至少一个处理器905、955)执行。但可以设想替代实施例,诸如体现为专用处理器的系统。虽然下文描述的方法被描述为由处理器执行,但这些方法(或其部分)并非必须由同一处理器执行。换而言之,至少一个处理器可以执行下文关于图1和图4至图7描述的方法。

图4至图6是根据至少一个示例性实施例的用于编码/解码流送视频帧的方法的流程图。图4是根据至少一个示例性实施例的用于编码流送360度视频帧的方法的流程图。如图4所示,在步骤s405中,将360度视频的帧映射到2d立方体表示。例如,图2b将图2a所图示的球体205图示为2d立方体表示。映射能够包括基于球形到正方形投影将360度视频的帧映射到2d表示。在该示例中,2d表示能够是多个正方形,每个正方形表示立方体的一面。能够通过使用球形四边形化的立方体投影算法或曲线投影将球体205投影到2d表示中的每个正方形上。

球体205能够被平移,使得待编码的360度视频的帧的一部分(例如,基于查看设备115-1、115-2、115-3的视点)被有利地定位在立方体的面210、215、220、225、230、235的中心。例如,球体205能够被平移,使得360度视频240的帧的一部分的中心能够被定位在极点a(极点b、点c、点d、点e或点f)。然后,将与面230相关联的360度视频的帧的一部分(以及随后选择部分240时的流送360度视频的每帧)被映射到2d立方体表示。随后,面230被编码。

在步骤s410中,基于视点来选择2d立方体表示的第一部分。例如,2d立方体表示的一部分能够是部分240、234、250、255、260、265中的一个。能够基于从查看设备(例如,vr头戴式设备)接收到的用户视点的指示来选择2d立方体表示的一部分。视点能够被确定为360度视频上的位置、点或焦点。例如,视点可能是360度视频上的经度和纬度位置。相应地,如果用户正在观看以部分240为中心的点,则视点的指示能够是球体205上的纬度和经度位置。

在步骤s415中,通过使用视频压缩技术,生成视频序列帧的2d立方体表示的一部分的未编码像素的残差的集合。例如,可以从与基于视频压缩技术所选择的对应块相关联的对应值中减去与每个像素相关联的至少一个值。

在步骤s420中,将未编码的像素编码。例如,通过使用配置的变换(例如,klt、svd、dct或adst),可以将所生成的残余像素变换(编码或压缩)成变换系数。然后,能够通过任何合理的合适量化技术将经变换的系数量化。此外,通过任何熵编码技术,可以将熵编码应用于例如分配代码给经量化的运动矢量代码和残差代码。

在步骤s425中,对经编码的(经压缩的)视频帧进行通信。例如,控制器920可以将经编码的视频(例如,作为经编码的视频帧)输出到一个或多个输出设备。控制器920可以将经编码的视频作为宏块的单个运动矢量和预测值(例如,残差)的单个集合输出。控制器920可以输出指示在编码器925进行帧内预测和/或帧间预测编码中所使用的视频压缩技术的信息。例如,经编码的(经压缩的)视频帧可以包括用于传输的报头。报头除其他外可以包括指示编码器在编码中所使用的视频压缩技术的信息。视频压缩技术可以与(例如,报头中)经编码的(经压缩的)视频帧通信。所通信的视频压缩技术可以指示用于将每帧转换成2d立方体表示的参数。所通信的编码方案或模式可以基于数字(例如,模式101可以指示球形四边形化的立方体投影算法)。

在步骤s430中,接收已经针对流送360度视频触发搜寻操作的指示。例如,vr头戴式设备310的用户305能够通过使用控件325作为快进触发器或控件325作为回顾触发器而使用控制设备315来触发搜寻操作。然后,控制器970能够将指示通信到控制器920。指示能够包括搜寻操作类型(例如,快进或回顾)、搜寻速度或帧速率(例如,x2、x4、x8、x16等)、视点(例如,是否存在视点变更)和/或有关搜寻操作的任何其他信息。

在步骤s435中,基于搜寻操作来选择2d立方体表示的帧。例如,快进搜寻操作类型能够引起对360度视频的至少一个后续帧的选择,并且回顾搜寻操作类型能够引起对360度视频的至少一个先前帧的选择。例如,如果在回放操作期间将360度视频240的帧的一部分流送到查看设备,触发搜寻操作,选择的帧能够包括整个球体205。在一个实施方式中,立方体面210、215、220、225、230、235中的每个面能够被配置为选择的帧。例如,包括360度视频240的帧的一部分的立方体面(例如,立方体面215)能够处于该帧的中心,而其余立方体面被定位于其周围,该立方体面配置变成选择的帧。立方体面配置可以被填充白色、黑色和/或一些其他颜色像素以完成该帧。换而言之,立方体面配置可以不导致矩形(帧的典型形状),并且能够使用白色、黑色和/或一些其他颜色像素来形成矩形。

在另一实施方式中,在搜寻操作期间能够使用不同的投影技术。例如,在搜寻操作期间能够使用鱼眼投影或皮尔斯梅花投影。该实施方式能够是设计选择和/或能够(例如,作为有关搜寻操作的其他信息)被包括在已经触发搜寻操作的指示中。在该实施方式中,通过使用不同的投影技术,重新投影与2d立方体表示的选择的帧相对应的360度视频的帧。经重新投影的360度视频的帧被选择(或替换)2d立方体表示的选择的帧。

此外,球体205在编码期间能够被重新定位(例如,旋转、平移等),以便当在查看设备上渲染时,部分240将处于查看设备的用户的视场内。附加地(或替代地),球体205能够被重新定位,以最小化由搜寻操作期间使用的投影技术导致部分240的变形量。

在步骤s440中,基于视点来选择2d立方体表示的第二部分。第二部分能够从第一部分的中心向外(或背离第一部分的中心)延伸并且开始于第一部分的边界(或第一部分的缓冲区的边界)。第二部分能够大于或显著大于第一部分。第二部分能够比第一部分大百分比或加百分比。第二部分能够包括第一部分。第二部分能够是2d立方体表示的一面。第二部分能够是2d立方体表示的两个以上面。第二部分能够是2d矩形表示。第二部分能够是2d立方体表示的所有。第二部分能够是所有基于2d立方体表示所选择的矩形表示。

在步骤s445中,通过使用视频压缩技术,生成2d立方体表示的选定帧的未编码像素的残差的集合。残差的集合能够选自2d表示的第一部分和/或第二部分。例如,可以从与基于视频压缩技术所选择的对应块相关联的对应值中减去与每个像素相关联的至少一个值。

在步骤s450中,将未编码的像素编码。例如,通过使用配置的变换(例如,klt、svd、dct或adst),可以将所生成的残余像素变换(编码或压缩)成变换系数。然后,能够通过任何合理的合适量化技术将经变换的系数量化。此外,通过任何熵编码技术,可以应用熵编码,例如分配代码给经量化的运动矢量代码和残差代码。

在步骤s455中,对经编码的(经压缩的)视频帧进行通信。例如,控制器920可以将经编码的视频(例如,作为经编码的视频帧)输出到一个或多个输出设备。控制器920可以将经编码的视频作为宏块的单个运动矢量和预测值(例如,残差)的单个集合输出。控制器920可以输出指示在编码器925进行帧内预测和/或帧间预测编码中所使用的视频压缩技术的信息。例如,经编码的(经压缩的)视频帧可以包括用于传输的报头。报头除其他外可以包括指示编码器在编码中所使用的视频压缩技术的信息。视频压缩技术可以与(例如,报头中)经编码的(经压缩的)视频帧通信。所通信的视频压缩技术可以指示用于将每帧转换成2d立方体表示的参数。所通信的编码方案或模式可以是于数字(例如,模式101可以指示球形四边形化的立方体投影算法)。

图5是根据至少一个示例性实施例的用于解码流送360度视频帧的方法的流程图。如图5所示,在步骤s505中,接收经编码的(经压缩的)视频数据。例如,经编码的(经压缩的)视频数据可以是经由通信网络(例如,因特网或内联网)接收到的(例如,通过视频编码器925)先前编码的360度视频流。经编码的(经压缩的)视频帧可以包括报头。报头除其他外可以包括指示编码器在编码中所使用的视频压缩技术的信息。例如,视频压缩技术可以指示用于将每帧转换成2d立方体表示的参数。

在步骤s510中,将经编码的视频数据解码。例如,能够通过熵解码来解码经压缩的视频数据,以产生经量化的变换系数的集合。然后,通过将相对较小范围内的值映射到相对较大范围内的值,能够反量化经熵解码的视频数据(例如,与上述量化映射相反)。视频解码器也能够通过使用(例如,报头中)所指示的变换(例如,klt、svd、dct或adst)来逆变换视频比特,以生成残差的集合。

在步骤s515中,生成重构像素作为视频帧。例如,视频解码器可以将残差(例如,经变换或经解压缩的视频数据)添加到基于视频压缩技术所选择的视频数据块中的对应位置,从而得出重构像素。然后,能够组织重构像素的集合作为视频帧的重构块。然后,能够组织多个重构块作为视频帧。此外,能够将环路滤波器应用于重构块,以减少块效应。例如,可以将去块滤波器应用于重构块,以减少块失真。

在步骤s520中,将2d帧转换成360度视频帧。例如,能够通过使用上述关于将360度视频帧映射到2d表示的技术的反技术来转换2d帧。在步骤s525中,基于多个360度视频帧来生成360度视频流。例如,可以按序列组织经转换的重构帧的至少两个视频帧,以形成360度视频流。能够通过使用头戴式设备310来渲染360度视频流。

图6是根据至少一个示例性实施例的用于编码流送360度视频帧的方法的流程图。如图6所示,在步骤s605中,接收视点的指示。例如,能够从执行360度视频的回放的设备(例如,与头戴式设备310相关联或耦合的设备)接收视点的指示。换而言之,能够从实现解码器的设备(例如,与头戴式设备310相关联或耦合的设备实现时的解码器975)接收视点的指示,以使查看者通过使用与头戴式设备310相关联或耦合的设备来查看360度视频。例如,视点的指示能够基于查看者当前正在观看的360度视频的一部分(例如,部分240或部分240的中心)。指示能够例如是球体205上的点(例如,部分240的中心)或位置(例如,经度和纬度)、球体上的多个点或者表示球体205的立方体侧面。

在示例性实施方式中,在将360度视频帧映射到2d立方体表示之前,接收视点的指示。在该实施方式中,能够旋转360度视频帧,使得视点例如沿着极点(例如,极点a)或球体205的中心处的线(例如,沿着中纬线)来定中心。作为结果,像素、块和/或宏块(例如,构成360度视频的一部分)能够处于位置,以便例如通过旋转360度视频以与2d投影表面(诸如立方图)对齐,能够在将像素、块和/或宏块投影到立方体表面上期间最小化像素、块和/或宏块的任何失真。

在步骤s610中,基于视点来确定360度视频内的帧和位置。例如,如果指示是球体(作为360度视频帧)上的点或位置(例如,部分240的中心),则能够基于视点来确定像素、块和/或宏块的数目。在示例性实施方式中,位置能够以该点(例如,部分240的中心)或位置为中心。帧能够是回放操作期间流中的下一帧、搜寻(快进)操作期间的后一帧或搜寻(回顾)操作期间的前一帧。然而,在一些实施方式中,帧能够在查看设备(例如,头戴式设备310)上排队。因此,当查看者改变视点时,可能需要替换队列中的数个帧。因此,所确定的帧能够是队列中的帧(例如,待替换的第一帧)。

在步骤s615中,基于帧和位置来确定360度视频的一部分的位置。例如,在选择的帧内,360度视频的一部分能够包括多个像素或像素块。在一个实施方式中,能够基于视点来生成360度视频的一部分,以包括以视点或所确定的位置为中心的正方形或矩形中所包括的多个像素或块。360度视频的一部分能够具有基于查看设备的长度和宽度。例如,360度视频的一部分的长度和宽度能够只是在头戴式设备310上进行渲染所需的长度和宽度。然而,360度视频的一部分的长度和宽度能够只是在查看设备上进行渲染所需的长度和宽度加上360度视频的一部分周围的边界区域。360度视频的一部分周围的边界区域能够被配置成允许视点的小偏差。

如上所讨论的,在搜寻操作期间,360度视频的整个选择的帧被通信到查看设备。因此,360度视频的整个选择的帧被选择为(或替换)360度视频的一部分。在该实施方式中,在编码360度视频的帧之前,能够基于视点或所确定的位置来旋转和/或平移360度视频的帧。能够基于编码器所使用的投影技术来旋转和/或平移360度视频的帧。

在步骤s620中,将360度视频的一部分编码。例如,通过使用配置的变换(例如,klt、svd、dct或adst),可以将360度视频的一部分投影、变换(编码或压缩)成变换系数。然后,能够通过任何合理的合适量化技术将经变换的系数量化。此外,通过任何熵编码技术,可以将熵编码应用于例如分配代码给经量化的运动矢量代码和残差代码,以使代码长度与经量化的运动矢量代码和残差代码的概率相匹配。

在步骤s625中,通信包括360度视频的经编码的部分的经编码的(经压缩的)视频数据分组。例如,控制器920可以将经编码的视频(例如,作为经编码的视频帧)作为一个或多个数据分组输出到一个或多个输出设备。分组可以包括经压缩的视频比特10。分组可以包括360度视频的经编码的部分。控制器920可以将经编码的视频作为宏块的单个运动矢量和预测值(例如,残差)的单个集合输出。控制器920可以输出指示在编码器925进行帧内预测和/或帧间预测编码中所使用的模式或方案的信息。例如,经编码的(经压缩的)视频帧和/或数据分组可以包括用于传输的报头。报头除其他外可以包括指示编码器在编码中所使用的模式或方案的信息。编码方案或模式可以与(例如,报头中)经编码的(经压缩的)视频帧通信。所通信的编码方案或模式可以指示用于将每帧转换成2d立方体表示的参数。所通信的编码方案或模式可以基于数字(例如,模式101可以指示球形四边形化的立方体投影算法)。

图7是根据至少一个示例性实施例的用于解码流送360度视频帧的方法的流程图。如图7所示,在步骤s705中,掉视点的指示进行通信。例如,能够由执行360度视频的回放的设备(例如,头戴式设备310或者与头戴式设备310相关联或耦合的设备)对视点的指示进行通信。换而言之,视点的指示能够由实现解码器的设备(例如,以头戴式设备310或者与头戴式设备310相关联或耦合的设备实现时的解码器975)来通信,以便查看者查看360度视频。例如,视点的指示能够基于查看者当前正在观看的360度视频的一部分(例如,部分240或部分240的中心)。指示能够例如是球体205上的点(例如,部分240的中心)或位置(例如,经度和纬度)、球体上的多个点或者表示球体205的立方体侧面或者能够确定视点的其他一些位置。

在步骤s710中,响应于通信,接收包括经编码的(经压缩的)视频数据的分组,其中该分组包括基于视点所选择的360度视频的编码部分。例如,分组可以包括经压缩的视频比特10。分组可以包括用于传输的报头。报头除其他外可以包括指示编码器在帧内和/或帧间编码中所使用的模式或方案的信息。报头可以包括指示使用于将360度视频的帧转换成2d立方体表示的参数的信息。报头可以包括指示用于达成360度视频的编码部分的带宽或质量的参数的信息。

在步骤s715中,将360度视频的编码部分解码。例如,视频解码器(例如,解码器775)熵解码360度视频的编码部分(或经编码的2d表示),例如,上下文自适应二进制算术解码,以产生经量化的变换系数的集合。视频解码器反量化由经熵解码的比特给出的变换系数。例如,通过将相对较小范围内的值映射到相对较大范围内的值,能够反量化经熵解码的视频比特(例如,与上述量化映射相反)。另外,视频解码器通过使用(例如,报头中)所指示的变换(例如,klt、svd、dct或adst)来逆变换视频比特。

视频解码器能够对视频帧中的重构像素滤波。例如,能够将环路滤波器应用于重构块,以减少块效应。例如,可以将去块滤波器应用于重构块,以减少块失真。解码360度视频(或2d表示)的经编码的部分能够包括使用带宽或质量变量作为解码方案、编解码器或视频压缩技术的输入参数。

在步骤s720中,渲染360度视频的经解码的部分。例如,能够将360度视频的解码部分作为序列帧集合(或帧部分)(例如,视频流15)发送到控制器,以便在与查看设备(例如,头戴式设备310或与头戴式设备310相关联或耦合的设备)相关联的计算机屏幕上显示。

在如上所述的回放操作或搜寻操作期间,能够实施上文关于图6和图7描述的步骤。相应地,用户305能够在回放操作或搜寻操作期间改变视点(例如,从部分240到部分265)。在回放操作期间,可以响应于视点的改变而编码、通信并解码360度视频的帧的一部分。但根据示例性实施例,在搜寻操作期间,可以响应于视点的改变而编码、通信并解码360度视频的整个帧。相应地,用户305能够在搜寻操作期间环顾视频的不同元素,并且随着用户305注意到视频的元素,系统能够通过将360度视频在用户305的视场中定中心(例如,代替查看外围)而做出响应。另外,如果用户305找到感兴趣的元素,则用户能够切换到回放操作并且在与该感兴趣的元素相关联的时间和空间位置重新开始观看360度视频。

图8是图示出用于创建计算机生成的虚拟现实(vr)环境并与其进行交互的示例性系统800的图。在示例性系统800中,vr应用能够在第一计算设备804和/或第二计算设备806上执行。vr头戴式设备808能够被连接到第一计算设备804。第一计算设备804能够被连接到第二计算设备806。第二计算设备806可以被用作vr环境(vr空间)中的控制器(例如,控制器315)和/或接口设备。第一计算设备804能够为vr环境的vr头戴式设备提供内容。

在一些实施方式中,第一计算设备804能够通过使用有线连接830而与第二计算设备806连接/接口与。在一些实施方式中,第一计算设备804能够通过使用无线连接832而与第二计算设备806连接/接口。在一些实施方式中,第一计算设备804能够通过使用有线连接834而与vr头戴式设备808连接/接口。在一些实施方式中,第一计算设备804能够通过使用无线连接836而与vr头戴式设备808连接/接口。

有线连接830能够包括电缆,其任一端具有用于插入第二计算设备806和第一计算设备804的适当的连接器。例如,电缆能够在两端都包括通用串行总线(usb)连接器。usb连接器能够是相同类型的usb连接器,或者usb连接器能够各是不同类型的usb连接器。各种类型的usb连接器能够包括但不限于a型usb连接器、b型usb连接器、a型微型usb连接器、b型微型usb连接器、ab型微型usb连接器、五针mini-b型usb连接器、四针mini-b型usb连接器、a型usb3.0连接器、b型usb3.0连接器、microb型usb3.0连接器和c型usb连接器。类似地,有线连接834能够包括电缆,其任一端具有用于插入vr头戴式设备308和第一计算设备804的适当的连接器。例如,电缆能够在两端都包括通用串行总线(usb)连接器。usb连接器能够是相同类型的usb连接器,或者usb连接器能够各是不同类型的usb连接器。

第二计算设备806和/或vr头戴式设备808能够通过使用本文描述的其中一个或多个高速无线通信协议来与第一计算设备804无线地连接/接口。

在示例性系统800中,第一计算设备804能够是膝上型计算机、桌面型计算机、移动计算设备或游戏控制台。在一些实施方式中,第一计算设备804能够是能够放置/安置在vr头戴式设备808内的移动计算设备。移动计算设备能够包括能够用作vr头戴式设备808的屏幕的显示设备。移动计算设备能够包括用于执行vr应用的硬件和/或软件。此外,移动计算设备能够包括当第二计算设备806被放置在相对于vr头戴式设备808的位置前面或保持在其一定范围内时能够辨识、监视和跟踪第二计算设备806的三维(3d)移动的硬件和/或软件。这允许第二计算设备806被渲染为由vr头戴式设备808提供的vr空间中的接口和/或控制器。

在一些实施方式中,第一计算设备804能够执行vr应用并且为vr环境提供内容。在一些实施方式中,第二计算设备806能够执行vr应用并且能够提供来自一个或多个内容或流送服务器(例如,内容服务器810)的内容。一个或多个内容或流送服务器(例如,内容服务器810)和一个或多个计算机可读存储设备(例如,内容存储库812)能够通过使用网络814与第一计算设备804通信,以向第一计算设备804提供(或流送)内容。附加地或替代地,一个或多个内容或流送服务器(例如,内容服务器810)和一个或多个计算机可读存储设备(例如,内容存储库812)能够通过使用网络814与第二计算设备806通信。网络814能够是公共通信网络或私用通信网络,本文描述了其示例。

图9a图示出根据至少一个示例性实施例的视频编码器系统。在图9a的示例中,视频编码器系统900可以是或包括至少一个计算设备并且能够虚拟地表示被配置成执行本文描述的方法的任何计算设备。这样,视频编码器系统900能够包括可以用来实现本文描述的技术或者它们的不同或未来版本的各种组件。以示例的方式,视频编码器系统900被图示为包括至少一个处理器905以及至少一个存储器910。

如图9a所示,视频编码器系统900包括至少一个处理器905、至少一个存储器910、控制器920和视频编码器925。至少一个处理器905、至少一个存储器910、控制器920和视频编码器925经由总线915通信地耦合。

至少一个处理器905可以被用来执行存储在至少一个存储器910上的指令,由此实现本文描述的各种特征和功能或者附加或替代的特征和功能。至少一个处理器905和至少一个存储器910可以被用于各种其他目的。特别地,至少一个存储器910能够表示各种类型的存储器(例如,非暂时性计算机可读存储介质)以及可能用于实现本文描述的其中任何一个模块的相关硬件和软件的示例。

至少一个存储器910能够被配置成存储与视频编码器系统900相关联的数据和/或信息。例如,至少一个存储器910能够被配置成存储与帧内预测、滤波和/或映射360度视频到360度视频的2d表示相关联的编解码器。至少一个存储器910可以是共享资源。例如,视频编码器系统900可以是更大型系统(例如,服务器、个人计算机、移动设备等)的元素。因此,至少一个存储器910可以被配置成存储与更大型系统内的其他元素(例如,图像/视频服务、web浏览或有线/无线通信)相关联的数据和/或信息。

控制器920可以被配置成生成各种控制信号并且将这些控制信号通信到视频编码器系统900中的各种块。控制器920可以被配置成生成控制信号以实现本文描述的技术。根据示例性实施例,控制器920可以被配置成控制视频编码器925以编码视频数据、视频帧、视频序列、流送视频等。例如,控制器920可以生成对应于360度视频到360度视频的2d表示的映射、帧间预测和/或帧内预测的控制信号。视频编码器925可以被配置成接收视频流输入5并且输出经压缩(例如,经编码的)视频比特10。视频编码器925可以将视频流输入5转换成离散的视频帧。

经压缩的视频数据10可以表示视频编码器系统900的输出。例如,经压缩的视频数据10可以表示经编码的视频帧。例如,经压缩的视频数据10可以准备就绪传输到接收设备(未示出)。例如,经压缩的视频数据10可以被传输到系统收发器(未示出),以便传输到接收设备。

至少一个处理器905可以被配置成执行与控制器920和/或视频编码器925相关联的计算机指令。至少一个处理器905可以是共享资源。例如,视频编码器系统900可以是更大型系统(例如,服务器、移动设备等)的元素。因此,至少一个处理器905可以被配置成执行与更大型系统内的其他元素(例如,图像/视频服务、web浏览或有线/无线通信)相关联的计算机指令。

图9b图示出根据至少一个示例性实施例的视频解码器系统。在图9b的示例中,视频解码器系统950可以是至少一个计算设备并且能够虚拟地表示被配置成执行本文描述的方法的任何计算设备。这样,视频解码器系统950能够包括可以用来实现本文描述的技术或者它们的不同或未来版本的各种组件。以示例的方式,视频解码器系统950被图示为包括至少一个处理器955以及至少一个存储器960。

因此,至少一个处理器955可以被用来执行存储在至少一个存储器960上的指令,由此实现本文描述的各种特征和功能或者附加或替代的特征和功能。至少一个处理器955和至少一个存储器960可以被用于各种其他目的。特别地,至少一个存储器960可以表示各种类型的存储器(例如,非暂时性计算机可读存储介质)以及可能用于实现本文描述的其中任何一个模块的相关硬件和软件的示例。根据示例性实施例,视频编码器系统900和视频解码器系统950可以被包括在同一更大型系统(例如,个人计算机、移动设备等)中。视频解码器系统950能够被配置成执行编码器900的相反或反向操作。

至少一个存储器960能够被配置成存储与视频解码器系统950相关联的数据和/或信息。例如,至少一个存储器960可以被配置成存储帧间预测、帧内预测和/或将360度视频映射到360度视频的2d表示。至少一个存储器960可以是共享资源。例如,视频解码器系统950可以是更大型系统(例如,个人计算机、移动设备等)的元素。因此,至少一个存储器960可以被配置成存储与更大型系统内的其他元素(例如,web浏览或无线通信)相关联的数据和/或信息。

控制器970可以被配置成生成各种控制信号并且将这些控制信号通信到视频解码器系统950中的各种块。控制器970可以被配置成生成控制信号,以便实现下文描述的视频解码技术。根据示例性实施例,控制器970可以被配置成控制视频解码器975来解码视频帧。控制器970可以被配置成生成对应于360度视频与360度视频的2d表示之间的预测、滤波和/或映射的控制信号。视频解码器975可以被配置成接收输入的经压缩的(例如,经编码的)视频数据10并且输出视频流15。视频解码器975可以将经压缩的视频数据10的离散视频帧转换成视频流15。

至少一个处理器955可以被配置成执行与控制器970和/或视频解码器975相关联的计算机指令。至少一个处理器955可以是共享资源。例如,视频解码器系统950可以是更大型系统(例如,个人计算机、移动设备等)的元素。因此,至少一个处理器955可以被配置成执行与更大型系统内的其他元素(例如,web浏览或无线通信)相关联的计算机指令。

图10图示出根据至少一个示例性实施例的系统1000。如图10所示,系统1000包括控制器920、控制器970、编码器925和位置传感器1035。控制器920进一步包括位置控制模块1005、部分选择模块1010和操作控制模块1015。控制器970进一步包括视点确定模块1020、视点请求模块1025和操作控制模块1030。

根据示例性实施方式,操作控制模块1030能够被配置成确定与360度视频相关联的操作类型中的改变。操作类型中的改变能够是自动的。例如,360度视频能够(例如,响应于打开360度视频)自动播放、(例如,响应于360度视频结束)自动停止等。操作类型中的改变能够是手动的。例如,能够由控制器(例如,控制器315)控制360度视频。响应于确定操作类型中的改变,操作控制模块1030能够被配置成通过使用例如超文本传输协议(http)将指示符通信到操作控制模块1015。操作控制模块1015能够被配置成基于指示符(例如,经由控制器920)来使编码器执行一个或多个操作。例如,操作控制模块1015能够被配置成响应于确定指示符指示搜寻操作而使选择待由视频编码器925编码的360度视频的整个帧。

根据示例性实施方式,位置传感器1035检测查看者的眼睛(或头部)的位置(或位置改变),视点确定模块1020基于检测到的位置来确定视点,并且视点请求模块1025将视点作为对360度视频的帧的一部分的请求部分进行通信。根据另一示例性实施方式,位置传感器1035基于如显示器上渲染的图像平移位置来检测位置(或位置改变)。例如,用户可以使用鼠标、跟踪板或(例如,在触敏显示器上的)手势来选择、移动、拖动、扩展和/或类似地处理如显示器上渲染的360度视频的一部分。视点可以与对360度视频的帧的一部分的请求一起通信。视点可以与对360度视频的帧的请求分开通信。例如,对360度视频的帧的请求可以响应于已改变的视点,从而导致需要替换先前请求和/或排队的帧。

位置控制模块1005接收并处理对360度视频的帧的一部分的请求。例如,位置控制模块1005能够基于视点来确定360度视频的帧和帧的一部分的位置。然后,位置控制模块1005能够指令部分选择模块1010选择360度视频的帧的一部分。选择360度视频的帧的一部分能够包括将参数传递到编码器925。该参数能够供编码器925在360度视频的编码期间使用。相应地,位置传感器1035可以被配置成检测查看者的眼睛(或头部)的位置(取向、位置改变和/或取向改变)。例如,位置传感器1035能够包括其他机构,诸如用来检测运动的加速计和用来检测位置的陀螺仪。替代地或附加地,位置传感器1035能够包括相机或红外传感器,其聚焦于查看者的眼睛或头部上,以便确定查看者的眼睛或头部的位置。位置传感器1035能够被配置成将位置和位置改变信息通信到视点确定模块1020。

查看位置确定模块1020可以被配置成确定关于360度视频的视点(例如,查看者当前正在观看的360度视频的一部分)。视点能够被确定为360度视频上的位置、点或焦点。例如,视点可能是360度视频上的经度和纬度位置。通过使用例如超文本传输协议(http),能够经由视点请求模块1025将视点(例如,纬度和经度的位置或侧面)通信到位置控制模块1005。

位置控制模块1005可以被配置成基于360度视频的帧的一部分的视点(例如,帧和帧内位置)来确定位置。例如,位置控制模块1005能够选择以视点(例如,纬度和经度的位置或侧面)为中心的正方形或矩形。部分选择模块1010能够被配置成选择正方形或矩形作为一个块或多个块。部分选择模块1010能够被配置成(例如,经由参数或配置设定)指令编码器925以编码360度视频的帧的选择的部分。

图11示出可以与本文所述的技术配合使用的计算机设备1100和移动计算机设备1150的示例。计算设备1100意图表示各种形式的数字计算机,诸如膝上型计算机、桌面型计算机、工作站、个人数字助理、服务器、刀片服务器、主机以及其他适当的计算机。计算设备1150意图表示各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能电话以及其他类似的计算设备。本图所示的组件、它们的连接和关系以及它们的功能意在仅为示例性,而非意在限制本文所述和/或所要求保护的本发明的实施方式。

计算设备1100包括处理器1102、存储器1104、存储设备1106、连接至存储器1104和高速扩展端口1110的高速接口1108以及连接至低速总线1114和存储设备1106的低速接口1112。组件1102、1104、1106、1108、1110和1112中的每个使用各种总线互联,并且可以被安装在公共母板上或者适当地以其他方式安装。处理器1102能够处理用于在计算设备1100内执行的指令,包括存储在存储器1104中或者存储设备1106上的指令,以对诸如耦合至高速接口1108的显示器1116的外部输入/输出设备上的gui显示图形信息。在其他实施方式中,可以适当地使用多个处理器和/或多个总线与多个存储器和存储器类型。此外,可以连接多个计算设备1100,每个设备提供所需操作的部分(例如,服务器阵列(serverbank)、刀片服务器组或者多处理器系统)。

存储器1104存储计算设备1100内的信息。在一个实施方式中,存储器1104是一个或多个易失性存储器单元。在另一个实施方式中,存储器1104是一个或多个非易失性存储器单元。存储器1104也可以是另一形式的计算机可读介质,诸如磁盘或光盘。

存储设备1106能够为计算设备1100提供大容量存储。在一个实施方式中,存储设备1106可以是或包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或者磁带设备、快闪存储器或者其他类似的固态存储器设备、或者包括存储区域网络或者其他配置中的设备的设备的阵列。计算机程序产品能够有形地体现为信息载体。计算机程序产品也可以包含指令,所述指令当被执行时执行诸如上述那些方法的一个或多个方法。信息载体是计算机或机器可读介质,诸如存储器1104、存储设备1106或者处理器1102上的存储器。

高速控制器1108管理用于计算设备1100的带宽密集操作,而低速控制器1112管理较低的带宽密集操作。这样的功能分配仅为示例性。在一个实施方式中,高速控制器1108耦合至存储器1104、显示器1116(例如,通过图形处理器或者加速器)以及可以接受各种扩展卡(未示出)的高速扩展端口1110。在这种实施方式中,低速控制器1112耦合至存储设备1106和低速扩展端口1114。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口可以耦合至一个或多个输入/输出设备,诸如键盘、指向设备、扫描仪或者例如通过网络适配器的诸如交换机或者路由器的网络设备。

如图所示,计算设备1100可以通过数种不同的形式来实现。例如,它可以被实现为标准服务器1120或者多倍这样的服务器组。它还可以被实现为架式(rack)服务器系统1124的一部分。此外,它可以被实现在诸如膝上型计算机1122的个人计算机中。替选地,来自计算设备1100中的组件可以与诸如设备1150的移动设备(未示出)中的其他组件组合。这样的设备中的每一个可以包含计算设备1100、1150中的一个或多个,并且整个系统可以由彼此通信的多个计算设备1100、1150组成。

计算设备1150除其他组件外还包括处理器1152、存储器1164、诸如显示器1154的输入/输出设备、通信接口1166以及收发器1168。设备1150也可以被提供有用于提供附加存储的存储设备,诸如微驱动器或者其他设备。组件1150、1152、1164、1154、1166和1168中的每个使用各种总线互联,并且组件中的几个可以被安装在公共母板上或者适当地以其他方式安装。

处理器1152能够执行计算设备1150内的指令,包括存储在存储器1164中的指令。处理器可以被实现为包括分立的多个模拟和数字处理器的芯片的芯片组。例如,处理器可以提供与设备1150的其他组件的协作,诸如用户界面的控制、设备1150运行的应用以及设备1150的无线通信。

处理器1152可以通过耦合至显示器1154的显示器接口1156以及控制接口1158与用户通信。例如,显示器1154可以是tftlcd(薄膜晶体管液晶显示器)或oled(有机发光二极管)显示器或者其他适当的显示技术。显示器接口1156可以包括用于驱动显示器1154以将图形信息和其他信息呈现给用户的适当电路。控制接口1158可以从用户接收命令并且将它们进行转换以便提交给处理器1152。此外,可以在与处理器1152通信中提供外部接口1162,以启用设备1150与其他设备的邻近区域通信。例如,外部接口1162可以在一些实施方式中提供有线通信或者在其他实施方式中提供无线通信,并且也可以使用多个接口。

存储器1164存储计算设备1150内的信息。存储器1164能够被实现为一个或多个计算机可读介质或媒介、一个或多个易失性存储单元或者一个或多个非易失性存储单元中的一个或多个。也可以提供扩展存储器1174,并且通过扩展接口1172将其连接至设备1150,例如,该扩展接口可以包括simm(单列直插存储器模块)卡接口。这样的扩展存储器1174可以提供用于设备1150的额外存储空间,或者也可以存储用于设备1150的应用或其他信息。具体地,扩展存储器1174可以包括用于实行或者补充上述过程的指令,并且也可以包括安全信息。因此,例如,扩展存储器1174可以被提供为用于计算设备1150的安全模块,并且可以用允许安全使用计算设备1150的指令来进行编程。此外,可以经由simm卡提供安全应用连同附加信息,诸如,以不可破解(non-hackable)的方式将识别信息置于simm卡上。

例如,存储器可以包括快闪存储器和/或nvram存储器,如下文所讨论。在一个实施方式中,计算机程序产品有形地体现为信息载体。计算机程序产品包含指令,所述指令当被执行时执行诸如上述那些的一个或多个方法。信息载体是例如可以通过收发器1168或外部接口1162接受的计算机或机器可读介质,诸如存储器1164、扩展存储器1174或者处理器1152上的存储器。

设备1150可以通过通信接口1166进行无线通信,该通信接口必要时可以包括数字信号处理电路。通信接口1166可以提供诸如gsm语音呼叫、sms、ems或mms消息传送、cdma、tdma、pdc、wcdma、cdma2000或gprs等等的各种模式或协议下的通信。例如,这样的通信可以通过射频收发器1168来发生。此外,诸如使用蓝牙、wi-fi或者其他这样的收发器(未示出),可以发生近程通信。此外,gps(全球定位系统)接收器模块1170可以将附加的导航与位置相关的无线数据提供给设备1150,其可以适当地供设备1150上运行的应用使用。

设备1150还可以使用音频编解码器1160来进行可听通信,该音频编解码器可以从用户接收口语信息并且将其转换为可用的数字信息。音频编解码器1160同样可以诸如通过例如,在设备1150的手持机中的扬声器为用户生成可听声音,。这样的声音可以包括来自语音电话呼叫的声音,可以包括录制的声音(例如,语音消息、音乐文件等),并且也可以包括通过在设备1150上操作的应用所生成的声音。

如图所示,计算设备1150可以通过数种不同的形式来实现。例如,它可以被实现为蜂窝电话1180。它也可以被实现为智能电话1182、个人数字助理或者其他类似移动设备的一部分。

示例性实施例描述用于在搜寻操作期间编码、解码和流送视频的技术。在总体方面,一种方法包括:从显示流送360度视频的第一帧的一部分的设备,接收触发搜寻操作的指示,第一帧的一部分是基于设备的用户的视点;基于搜寻操作来选择流送360度视频的第二帧;编码第二帧的第一部分和第二帧的第二部分,第二帧的第一部分对应于第一帧的一部分;以及将第二帧的经编码的部分通信到设备。

在另一总体方面,内容服务器包括控制器和编码器。控制器被配置成:从渲染360度流送视频的第一帧的第一部分的设备,接收触发搜寻操作的指示,该帧的该部分基于设备的用户的视点;基于搜寻操作来选择流送360度视频的第二帧,以及将经编码的第二帧通信到设备。编码器被配置成:编码第二帧的第一部分和第二帧的第二部分,第二帧的第一部分对应于第一帧的一部分。

在又一总体方面,一种非暂时性计算机可读存储介质,具有存储于其上的计算机可执行程序代码,该代码当在计算机系统上执行时使计算机系统执行步骤,所述步骤包括:从显示流式360度视频的第一帧的一部分的设备,接收触发搜寻操作的指示,第一帧的一部分基于设备的用户的视点;基于搜寻操作来选择流送360度视频的第二帧;编码第二帧的第一部分和第二帧的第二部分,第二帧的第一部分对应于第一帧的一部分;以及将第二帧的经编码的部分通信到设备。

实施方式能够包括以下特征中的一个或多个。例如,第二帧的第二部分能够从第二帧的第一部分的中心向外延伸并且开始于第二帧的第一部分的边界。搜寻操作是快进操作或回顾操作中的一个操作。基于搜寻操作来选择第二帧能够包括:确定搜寻操作是否为快进操作,以及响应于确定搜寻操作是快进操作,选择依序前进的360度视频的后一帧作为第二帧。

例如,基于搜寻操作来选择第二帧能够包括:确定搜寻操作是否为回顾操作,以及响应于确定搜寻操作是回顾操作,选择依序前进的360度视频的前一帧作为第二帧。编码第二帧的第一部分和第二帧的第二部分包括基于搜寻操作的搜寻速度来以帧速率编码第二帧。所述步骤能够进一步包括:使用投影技术来编码流送360度视频的第一帧的一部分,以及将经编码的第一帧通信到设备。编码第二帧能够包括:基于视点来定中心第二帧的第一部分,使用投影技术来投影第二帧,以及围绕经定中心的第一部分添加第二部分。

所述步骤能够进一步包括:使用第一投影技术来编码流送360度视频的第一帧的一部分,以及将经编码的第一帧通信到设备,其中,编码第二帧包括使用第二投影技术来编码第二帧。所述步骤能够进一步包括:在搜寻操作期间,从设备接收视点已改变的指示,以及基于已改变的视点来编码流送360度视频的第二帧。所述步骤能够进一步包括:在搜寻操作期间,从设备接收视点已改变的指示,基于已改变的视点来编码流送360度视频的第二帧,在搜寻操作期间,从设备接收触发回放操作的指示,基于已变更的视点来编码流送360度视频的第三帧的一部分,以及将经编码的第三帧通信到设备。

本文所述的系统和技术的各种实施方式可以在数字电子线路、集成电路、专门设计的asic(专用集成电路)、计算机硬件、固件、软件和/或其组合中来实现。这些各种实施方式可以包括可编程系统上的可执行和/或可解释的一个或多个计算机程序中的实施方式,所述可编程系统包括耦合以从存储系统接收数据和指令并且向存储系统发送数据和指令的,可以是专用或通用的至少一个可编程处理器、至少一个输入设备以及至少一个输出设备。本文描述的系统和技术的各种实施方式能够被实现为和/或在本文统称为能够组合软件和硬件方面的电路、模块、块或系统。例如,模块可以包括在处理器(例如,形成在硅基底、gaas基底等上的处理器)或某些其他可编程数据处理装置上执行的功能/动作/计算机程序指令。

上述示例性实施例中的一些被描述为描绘为流程图的过程或方法。虽然流程图将操作描述为顺序过程,但这些操作中的许多操作可以被并行、并发或同时执行。此外,操作的顺序可以被重排。这些过程可以在它们的操作完成时终止,但也可以具有图中未包括的附加步骤。这些过程可以对应于方法、功能、程序、子例程、子程序等。

其中一些由流程图说明的上文讨论的方法可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或它们的任意组合来实现。当以软件、固件、中间件或微码来实现时,用于执行必要任务的编程代码或者代码段可以被存储在诸如存储介质的机器或计算机可读介质中。处理器可以执行必要的任务。

本文公开的具体结构和功能细节仅是出于描述示例性实施例目的代表性的。但示例性实施例以许多替代形式来体现并且不应解释为仅限于本文阐述的实施例。

应当理解,虽然本文可以使用用语第一、第二等来描述各种元素,但这些元素不应受限于这些用语。这些用语仅用于区分一个元素与另一元素。例如,在不脱离示例性实施例范围的情况下,第一元素可以被称为第二元素,并且类似地,第二元素可以被称为第一元素。如本文所用,该用语和/或包括一个或多个相关列项的任何和全部组合。

应当理解,当一个元件被称为连接或耦接至另一个元件时,这个元素能够被直接连接或耦接至另一元件,或者可以存在中介元件。相反,当一个元件被称为直接连接或直接耦接至另一元件时,则不存在中介元素。应该以类似的方式解释用于描述元件之间关系的其他词语(例如,在二者之间或直接之间,相邻与紧邻等)。

本文使用的用语仅出于描述特定实施例的目的而不旨在限制示例性实施例。如本文所用,单数形式一(a)、一(an)和该(the)旨在也包括复数形式,除非上下文另外清楚指明。还应理解,用语包括(comprise)、包括(comprising)、包含(include)和/或包含(including)在本说明书中使用时指定所述特征、整体、步骤、操作、元素和/或组件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元素、组件和/或它们的群组的存在或附加。

也应指出,在一些替代实施方式中,所指出的功能/动作可以不按图中所示的顺序发生。例如,以连续方式示出的两图实际上可以被同时执行或者有时可以按倒序执行,这取决于所涉及的功能/动作。

除非另作定义,本文所用的所有用语(包括科技用语)具有与本发明的示例性实施例所属领域的普通技术人员的通常理解相同的含义。还应理解,除非本文另作明确定义,例如在常用词典中定义的那些用语应被解释为具有与其在相关技术的上下文中的含义一致的含义,并且不应采用理想化或过度形式化的解释。

鉴于软件或对计算机存储器内的数据比特的运算的算法和符号表示来呈现部分上文示例性实施例和相应的详细描述。这些描述或表示是本领域那些普通技术人员用于将他们工作的实质内容高效地传达给本领域其他普通技术人员的描述和表示。如本文所使用的用语以及通常使用的算法被设想为导致期望结果的自相一致的步骤序列。这些步骤是要求对物理量进行物理操控的那些步骤。通常,但并非必要,这些量采取能够被存储、传递、组合、比较并以其他方式操控的光信号、电信号或电磁信号的形式。有时为方便起见,主要是出于公用的原因,提及诸如比特、值、元素、符号、字符、项、数字等这些信号。

在上文说明性实施例中,引用可以实现为程序模块或功能过程的操作的动作和符号表示(例如,以流程图的形式)包括执行特定任务或实现特定抽象数据类型并且可以使用现有硬件以现有结构元素来描述和/或实现的例程、程序、对象、组件、数据结构等。这样的现有硬件可以包括一个或多个中央处理单元(cpu)、数字信号处理器(dsp)、专用集成电路、现场可编程门阵列(fpga)计算机等。

但应当谨记,所有这些用语和类似用语将与适当的物理量相关联并且仅为应用于这些量的方便标签。除非另作特别说明,或者从讨论中显而易见,诸如显示的处理或计算或运算或确定等用语指对表示为计算机系统寄存器或存储器内的电子物理量的数据的计算机系统或类似电子计算设备的动作和过程操纵并变换成其他类似表示为计算机系统存储器或寄存器或者其他这类信息存储、传输或显示设备内的物理量的数据。

还应指出,示例性实施例的软件实现方面通常在某种形式的非暂时性程序存储介质上编码或在某种类型的传输介质上实现。程序存储介质可以是磁性的(例如,软盘或硬盘驱动器)或光学的(例如,致密盘、只读存储器或cdrom),并且可以是只读的或随机访问的。类似地,传输介质可以是双绞线、同轴电缆、光纤或本领域公知的其他一些合适的传输介质。本发明的示例性实施例不受限于任何给定实施方式的这些方面。

最后,还应指出,虽然所附权利要求列出本文所述特征的特定组合,但本公开的范围不限于今后要求保护的特定组合,而是扩展为涵盖本文公开的特征或实施例的任何组合,无论目前是否已在所附权利要求中具体列举了这个特定组合。

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