用于视频递送的纹理的序列的生成的制作方法

文档序号:22397956发布日期:2020-09-29 18:08阅读:110来源:国知局
用于视频递送的纹理的序列的生成的制作方法
相关申请的交叉引用本申请要求于2019年03月21日提交的美国临时申请号62/821958的权益以及于2019年9月26日提交的美国正规申请号16/584,591的权益,通过引用把它们整体并且用于所有目的并入本文。本申请涉及纹理图像的处理。例如,本申请的各方面涉及生成并流传输视频中的纹理图像的序列。
背景技术
:数字媒体内容包括大量数据,以满足消费者、视频提供商等的需求。例如,许多用户期望具有高分辨率、高帧速率等的高质量视频。满足这些需求所需的大量数据给通信网络以及处理和存储视频数据的设备带来了负担。三维(3d)媒体内容比二维(2d)媒体包括更大的数据量。例如,一个3d场景可以包括许多3d对象,并且每个对象都可以与限定该对象的几何形状和性质所需的大量数据相关联。由于3d场景中的各种3d对象的大小,在网络(例如因特网)上递送丰富、高质量的3d场景具有挑战性。技术实现要素:在一些示例中,本文中描述了用于生成和处理纹理图像的技术和系统,从而可以有效且自适应地递送纹理图像以供消费。例如,3d场景可以由各种对象(例如,在一些情况下,数千个以上的对象)组成,导致在未压缩时产生大量数据。基于网络和设备约束,将未压缩的数据从一个系统(例如,内容提供商)传送到另一系统(例如,最终用户设备)可能是困难的。大量数据至少部分是由于3d虚拟世界中的每个对象都由3d网格和高分辨率纹理数据限定。对象的3d网格可以限定对象的几何形状一部分或整个几何形状,而纹理数据可以限定对象的不同性质。与对象相关联的纹理数据可以包括一个或多个纹理图像(在本文中也被称为“纹理”)。在一些情况下,单个对象可以具有多个纹理图像,该些纹理图像限定了对象的不同性质。可以将纹理图像应用于对象的3d网格,以便修改对象的表面性质。在一个说明性示例中,第一纹理图像可以包括限定对象的表面的颜色的值,第二纹理图像可以包括限定如何使对象的表面的某些区域光亮或粗糙的值,以及第三纹理图像可以包括限定表面上各个点的表面法线的值(例如,用于修改对象的表面性质)。纹理图像的许多其他示例可用于限定对象的性质。本文描述的技术和系统允许纹理图像被编码并作为视频序列被递送,而不是作为单独的纹理图像或作为单独的编码纹理图像被独立递送。纹理图像可以被处理,以便可以使用现有的内容递送基础设施,从而对所得的视频序列的质量进行精细控制。例如,一个或多个纹理图像可以分为重叠或不重叠的区块。在一些情况下,区块可以具有统一的区块大小。例如,一个纹理图像的区块或具有不同分辨率的多个纹理图像的区块都可以具有相同的统一区块大小。统一的区块大小允许区块由视频编码器进行编码,就好像它们是具有某个视频分辨率的视频帧一样。然后,可以通过将区块排序成特定顺序来生成有序区块的序列。在一个说明性示例中,可以执行基于相似性的排列,其中可以基于一个或多个纹理图像的区块之间的相似性来确定序列中区块的顺序。有序区块的序列可以按照散布不同纹理图像的区块的顺序。基于相似性的排列可以导致序列中的连续图像具有高相似性,允许视频编码器可以利用这种相似性并且更有效地压缩视频。在另一说明性示例中,可以执行基于子序列的排列。基于子序列的排列可以针对具有某些秒数的视频的段对区块进行排序,从而导致有序区块的序列包括多个子序列。例如,可以以最小化需要下载以获得第一纹理图像的视频段的数目的顺序将区块排序成有序区块的序列。在一些情况下,基于子序列的排列可以确保给定纹理图像的大部分或全部区块处于最小数目的段中。在一些示例中,纹理图像的区块可以以光栅扫描顺序排列、可以被随机排列,或者可以基于以相似性为基础的排列而被排列。除了基于相似性的排列和基于子序列的排列之外或作为其备选,可以执行用于对区块进行排列的其他技术。可以将有序区块的序列作为输入帧提供给视频编码器。视频编码器将有序区块的序列中的区块视为单独的图像帧。视频编码器产生编码纹理视频,该编码纹理视频包括来自有序区块的序列和其他信息的编码区块。编码区块在本文中也可以被称为编码图片。各种输入参数也可以被提供给视频编码器,输入参数诸如是每秒帧数(fps)、目标视频比特率、视频中要包括的可独立解码和可下载段的数目、它们的任何组合,和/或其他参数。与包括具有时间关系的帧的标准视频(例如,视频的帧以某种顺序输出或播放)不同,纹理图像与纹理图像的各个区块不具有任何时间上的关系或基于时间的关系(在本文中被称为“时间独立”)。纹理图像和区块之间的这种时间独立性允许选择任何fps值。在一些情况下,fps和比特率参数允许服务提供商生成具有多种质量和多种递送延迟的相同视频的多个版本(具有纹理集)。在一些情况下,可以为数据文件提供编码视频,解码器可以使用该编码视频来重构纹理图像。可以使用现有的视频递送基础设施通过网络将编码视频(包括编码区块)递送给视频解码器。例如,可以使用因特网流协议通过因特网流传输编码视频。视频解码器可以解码视频以获得的有序区块的解码序列,并且可以将解码序列发送到纹理图像重构系统。纹理图像重构系统可以获得提供有编码视频的数据文件,并且可以使用来自数据文件的信息来重构纹理图像。例如,数据文件可以包括针对构成有序区块的序列的区块的上下文数据。对于给定的区块,上下文数据可以包括针对该区块的区块标识符、与区块相关联的纹理图像的标识以及第一区块在该纹理图像内的位置。在一些示例中,还可以在数据文件中包括针对区块的转换信息。如本文中更详细描述的,转换信息可以指示将被应用于区块以修改区块的像素以生成最终纹理图像的转换。根据至少一个示例,提供了一种从一个或多个纹理图像生成视频的方法。方法包括将第一纹理图像划分成第一多个区块。第一纹理图像被配置为应用于至少第一三维网格。方法还包括将第一多个区块排序成有序区块的序列,并提供该有序区块的序列以用于编码视频的生成。编码视频的生成包括基于有序区块的序列对第一多个区块进行编码。在另一示例中,提供了一种用于从一个或多个纹理图像生成视频的装置,该装置包括被配置为存储一个或多个纹理图像的存储器以及耦合到该存储器的处理器。处理器被配置为将第一纹理图像划分成第一多个区块。第一纹理图像被配置为应用于至少第一三维网格。处理器还被配置为将第一多个区块排序成有序区块的序列。处理器还被配置为提供有序区块的序列以用于生成编码视频。编码视频的生成包括基于有序区块的序列对第一多个区块进行编码。在另一示例中,提供了一种非暂态计算机可读介质,其上存储有指令,该指令在由一个或多个处理器执行时,使一个或多个处理器:将第一纹理图像划分成第一多个区块,该第一纹理图像被配置为应用于至少第一三维网格;将第一多个区块排序成有序区块的序列;以及提供有序区块的序列以用于编码视频的生成,其中编码视频的生成包括基于有序区块的序列对第一多个区块进行编码。在另一示例中,提供了一种用于从一个或多个纹理图像生成视频的装置。装置包括用于将第一纹理图像划分成第一多个区块的部件。第一纹理图像被配置为应用于至少第一三维网格。装置还包括:用于将第一多个区块排序成有序区块的序列的部件,以及用于提供该有序区块的序列以用于编码视频的生成的部件。编码视频的生成包括基于有序区块的序列对第一多个区块进行编码。在一些方面,第一多个区块具有统一的区块大小。在一些方面,将第一多个区块排序成有序区块的序列以最大化压缩效率。在一些方面,基于第一多个区块之间的相似性,将第一多个区块排序成有序区块的序列。在一些方面,上述方法、装置和计算机可读介质可以进一步包括:确定来自第一多个区块中的区块的对之间的相似性;以及使用区块的对之间的相似性,基于使有序区块的序列中的连续区块之间的相异性之和最小化的序列,来确定有序区块的序列。在一些方面,以使需要下载以获得第一纹理图像的视频段的数目最小的顺序将第一多个区块排序成有序区块的序列。在一些示例中,有序区块的序列包括第一子序列和第二子序列。例如,第一子序列可以包括来自第一多个区块的第一组区块,并且第二子序列可以包括来自第一多个区块的第二组区块。在一些方面,上述方法、装置和计算机可读介质还可以包括:将第二纹理图像划分成第二多个区块,第二纹理图像被配置为应用于第一三维网格或第二三维网格中的至少一个三维网格;其中排序包括将第一多个区块和第二多个区块排序成有序区块的序列;并且其中编码视频的生成包括:基于有序区块的序列,对第一多个区块和第二多个区块进行编码。在一些方面,第一纹理图像和第二纹理图像在时间上独立。在一些方面,第一纹理图像的第一分辨率和第二纹理图像的第二分辨率是不同的分辨率,并且第一多个区块和第二多个区块具有统一的区块大小(例如,作为像素数目)。在一些方面,将第一多个区块和第二多个区块排序成有序区块的序列以最大化压缩效率。在一些方面,基于第一多个区块和第二多个区块之间的相似性,将第一多个区块和第二多个区块排序成有序区块的序列。在一些示例中,上述方法、装置和计算机可读介质还可以包括:确定来自第一多个区块和第二多个区块中的区块的对之间的相似性;以及使用区块的对之间的相似性,基于使有序区块的序列中的连续区块之间的相异性之和最小化的序列,来确定有序区块的序列。在一些方面,按照使需要下载以获得第一纹理图像和第二纹理图像的视频段的数目最小化的顺序,将第一多个区块和第二多个区块排序成有序区块的序列。在一些示例中,有序区块的序列包括第一子序列和第二子序列。例如,第一子序列可以包括来自第一多个区块的第一组区块,并且第二子序列可以包括来自第一多个区块的第二组区块。在一些情况下,有序区块的序列包括第三子序列和第四子序列。例如,第三子序列可以包括来自第二多个区块的第一组区块,并且第四子序列可以包括来自第二多个区块的第二组区块。在一些方面,通过利用有序区块的序列中的区块之间的相似性来获得编码视频。在一些示例中,使用运动补偿来生成编码视频。例如,可以使用第二区块作为用于预测的基准区块,基于第一区块的区块间预测来生成编码视频。可以通过生成从第一区块到第二区块(或从第二区块到第一区块)的运动矢量来标识基准区块的至少一部分。在一些情况下,可以生成多个运动矢量,每个运动矢量指向不同的基准图片。在一些示例中,第一区块和第二区块来自第一纹理图像。在一些示例中,第一区块来自第一纹理图像,并且第二区块来自第二纹理图像。在一些方面,针对有序区块的序列生成多个编码视频。在一些情况下,多个编码视频中的第一编码视频可以具有与多个编码视频中的第二编码视频不同的比特率、不同的帧速率或不同的段大小(例如,帧的数目)中的至少一项。在一些方面,上述方法、装置和计算机可读介质可以进一步包括传送编码视频以供客户端设备解码。在一些方面,上述方法、装置和计算机可读介质可以进一步包括将转换函数应用于第一多个区块中的一个或多个区块,该转换函数修改一个或多个区块的像素。在一些方面,使用转换函数修改一个或多个区块的像素增加了编码效率。例如,使用转换函数修改一个或多个区块的像素可以增加一个或多个区块的像素与一个或多个区块的其他像素之间的相似性。在一些方面,上述方法、装置和计算机可读介质可以进一步包括生成数据文件,数据文件包括针对第一多个区块的上下文数据。针对第一区块的上下文数据可以包括至少区块标识符、与第一区块相关联的纹理图像的标识以及第一区块在纹理图像内的位置。在一些方面,针对第一区块的上下文数据还包括转换函数的指示。转换函数被配置为修改第一多个区块中的一个或多个区块的像素。根据至少一个其他示例,提供了一种从视频重构一个或多个纹理图像的方法。方法包括获得解码视频的至少一部分,该解码视频包括被排序成有序区块的序列的第一多个区块。第一多个区块与被配置用于应用于第一三维网格的第一纹理图像相关联。方法还包括获得与该解码视频的至少一部分相关联的数据文件。数据文件包括将第一多个区块映射到第一纹理图像的上下文数据。方法还包括基于将第一多个区块映射到第一纹理图像的上下文数据来重构第一纹理图像。在另一示例中,提供了一种用于从视频重构一个或多个纹理图像的装置,装置包括被配置为存储一个或多个纹理图像的存储器以及耦合到该存储器的处理器。处理器被配置为获得解码视频的至少一部分,该解码视频包括被排序成有序区块的序列的第一多个区块。第一多个区块与被配置为用于应用于第一三维网格的第一纹理图像相关联。处理器还被配置为获得与该解码视频的至少一部分相关联的数据文件。数据文件包括将第一多个区块映射到第一纹理图像的上下文数据。处理器还被配置为基于将第一多个区块映射到第一纹理图像的上下文数据来重构第一纹理图像。在另一示例中,提供了一种非暂态计算机可读介质,其上存储有指令,该指令在由一个或多个处理器执行时,使一个或多个处理器:获得解码视频的至少一部分,该解码视频包括被排序成有序区块的序列的第一多个区块,多个第一区块与被配置为用于应用于第一三维网格的第一纹理图像相关联;获得与该解码视频的至少一部分相关联的数据文件,该数据文件包括将第一多个区块映射到第一纹理图像的上下文数据;以及基于将第一多个区块映射到第一纹理图像的上下文数据来重构第一纹理图像。在另一示例中,提供了一种用于从视频重构一个或多个纹理图像的装置。装置包括用于获得解码视频的至少一部分的部件,该解码视频包括被排序成有序区块的序列的第一多个区块。第一多个区块与被配置为用于应用于第一三维网格的第一纹理图像相关联。装置还包括用于获得与该解码视频的至少一部分相关联的数据文件的部件。数据文件包括将第一多个区块映射到第一纹理图像的上下文数据。装置还包括用于基于将第一多个区块映射到第一纹理图像的上下文数据来重构第一纹理图像的部件。在一些方面,针对第一多个区块中的区块的上下文数据包括至少区块标识符、与区块相关联的纹理图像的标识以及区块在纹理图像内的位置。在一些方面,针对区块的上下文数据还包括转换函数的指示。转换函数被配置为修改第一多个区块中的一个或多个区块的像素。在一些方面,上述方法、装置和计算机可读介质可以进一步包括将逆转换函数应用于第一多个区块中的一个或多个区块的像素。逆转换函数是转换函数的逆(inverse)。在一些方面,第一多个区块具有统一的区块大小。在一些方面,基于第一多个区块之间的相似性,将第一多个区块排序成有序区块的序列。在一些方面,按照使需要下载以获得第一纹理图像的视频段的数目最小化的顺序将第一多个区块排序成有序区块的序列。在一些示例中,有序区块的序列包括第一子序列和第二子序列。例如,第一子序列可以包括来自第一多个区块的第一组区块,并且第二子序列可以包括来自第一多个区块的第二组区块。在一些方面,解码视频的至少一部分还包括第二多个区块。第二多个区块与第二纹理图像相关联,该第二纹理图像被配置为应用于第一三维网格或第二三维网格中的至少一个三维网格。在一些方面,第一纹理图像的第一分辨率和第二纹理图像的第二分辨率是不同的分辨率,并且第一多个区块和第二多个区块具有统一的区块大小。在一些方面,基于第一多个区块和第二多个区块之间的相似性,将第一多个区块和第二多个区块排序成有序区块的序列。在一些方面,按照使需要下载以获得第一纹理图像和第二纹理图像的视频段的数目最小化的顺序,将第一多个区块和第二多个区块排序成有序区块的序列。在一些示例中,有序区块的序列包括第一子序列和第二子序列。例如,第一子序列可以包括来自第一多个区块的第一组区块,并且第二子序列可以包括来自第一多个区块的第二组区块。在一些情况下,有序区块的序列包括第三子序列和第四子序列。例如,第三子序列可以包括来自第二多个区块的第一组区块,并且第四子序列可以包括来自第二多个区块的第二组区块。在一些方面,通过利用有序区块的序列中的区块之间的相似性来获得解码视频。在一些情况下,使用运动补偿生成解码视频的至少一部分。例如,可以使用第二区块作为基准区块,基于第一区块的区块间预测来生成解码视频的至少一部分。可以使用从第一区块到第二区块(或从第二区块到第一区块)的运动矢量来标识基准区块的至少一部分。在一些情况下,可以生成多个运动矢量,其中每个运动矢量指向不同的基准图片。在一些情况下,第一区块和第二区块来自第一纹理图像。在一些情况下,第一区块来自第一纹理图像,并且第二区块来自第二纹理图像。在一些方面,针对有序区块的序列生成多个编码视频。例如,多个编码视频中的第一编码视频可以具有与多个编码视频中的第二编码视频不同的比特率、不同的帧速率或不同的段大小(或其任何组合)中的至少一项。在一些方面,上述方法、装置和计算机可读介质可以进一步包括:基于与网络相关联的至少一个或多个网络条件,通过网络接收第一编码视频的一部分或第二编码视频的一部分中的至少一个。在一些方面,进一步基于客户端设备的物理资源或客户端设备的应用中的至少一个来接收第一编码视频的一部分或第二编码视频的一部分中的至少一个。在一些情况下,第一纹理图像和第二纹理图像在时间上独立。在一些方面,第一多个区块中的每个区块在时间上独立于第一多个区块中的其他区块。本
发明内容既不旨在标识所要求保护的主题的关键或必要特征,也不旨在单独用于确定所要求保护的主题的范围。通过参考本专利的整个说明书的适当部分、任何或所有附图以及每个权利要求,应当理解本主题。通过参考以下说明书、权利要求书和附图,前述内容以及其他特征和实施例将变得更加清楚。附图说明下面参考附图详细描述本申请的说明性实施例:图1是根据本文提供的一些示例的纹理图像的一个示例;图2是根据本文提供的一些示例的纹理图像的另一示例;图3是根据本文提供的一些示例的纹理图像的另一示例;图4是根据本文提供的一些示例的图示纹理图像排序系统的示例的框图;图5a和图5b是根据本文提供的一些示例的图示被分成区块的两个不同纹理图像的示例的概念图;图5c是根据本文提供的一些示例的图示由图5a和图5b中所示的区块的基于相似性排列而产生的有序区块的序列的子集的示例的概念图;图5d和图5e是根据本文提供的一些示例的图示由区块的基于子序列排列而产生的两个有序区块的序列的示例的概念图;图6是根据本文提供的一些示例的图示将转换应用于包括对象的一部分的区块的图像;图7是根据本文提供的一些示例的图示纹理图像重构系统的示例的框图;图8是根据本文提供的一些示例的图示多个纹理图像的生成、编码、解码和重构的示例的概念图;图9是根据本文提供的一些示例的图示用于从一个或多个纹理图像生成视频的过程的示例的流程图;图10是根据本文提供的一些示例的图示用于从视频重构一个或多个纹理图像的过程的示例的流程图;图11是根据本文提供的一些示例的图示基于不同的编码技术的速率-失真曲线的示例的图;图12是根据本文提供的一些示例的图示示例视频编码设备的框图;图13是根据本文提供的一些示例的图示示例视频解码设备的框图;以及图14是可以实施本文描述的各种技术的示例计算设备的示例计算设备架构。具体实施方式下面提供本公开的某些方面和实施例。对于本领域技术人员清楚的是,这些方面和实施例中的一些可以被独立地应用,并且它们中的一些可以被组合地应用。在以下描述中,出于解释的目的,阐述了具体细节以便提供对本申请的实施例的透彻理解。然而,将清楚,可以在没有这些具体细节的情况下实践各种实施例。附图和描述不旨在是限制性的。随后的描述仅提供示例性实施例,并且布置在限制本公开的范围、适用性或配置。相反,对示例性实施例的随后描述将向本领域技术人员提供用于实施示例性实施例的使能描述。应当理解,在不脱离所附权利要求书所阐述的本发明的精神和范围的情况下,可以对元件的功能和布置进行各种改变。在下面的描述中给出具体细节以提供对实施例的透彻理解。然而,本领域的普通技术人员将理解,可以在没有这些具体细节的情况下实践实施例。例如,电路、系统、网络、过程和其他组件可以被示为处于框图形式的组件,以便不会在不必要的细节上模糊实施例。在其他情况下,可以在没有不必要的细节的情况下示出公知的电路、过程、算法、结构和技术,以避免模糊实施例。另外,应当注意,各个实施例可以被描述为过程,过程被描绘为流程图、流程图表、数据流程图、结构图或框图。尽管流程图可以将操作描述为顺序过程,但是操作中的许多操作可以并行或同时执行。另外,可以重新布置操作的顺序。当过程的操作完成时,该过程将终止,但可能具有图中未包括的其他步骤。过程可以对应于方法、函数、步骤、子例程、子程序等。当过程对应于函数时,其终止可以对应于该函数返回到调用函数或主函数。术语“计算机可读介质”包括但不限于便携式或非便携式存储设备、光学存储设备以及能够存储、包括或携带指令和/或数据的各种其他介质。计算机可读介质可以包括非暂态介质,可以在其中存储数据,并且不包括无线或通过有线连接传播的载波和/或暂态电子信号。非暂态介质的示例可以包括但不限于磁盘或磁带、诸如光盘(cd)或数字通用磁盘(dvd)的光学存储介质、闪存、存储器或存储器设备。计算机可读介质上可以存储有代码和/或机器可执行指令,它们可以表示步骤、函数、子程序、程序、例程、子例程、模块、软件包、类或指令、数据结构或程序语句的任何组合。通过传递和/或接收信息、数据、参量、参数或存储器内容,代码段可以耦合到另一代码段或硬件电路。可以经由包括存储器共享、消息传递、令牌传递、网络传输等的任何适当方式来传递、转发或传送信息、参量、参数、数据等。另外,可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实施实施例。当以软件、固件、中间件或微代码实施时,用于执行必要任务的程序代码或代码段(例如,计算机程序产品)可以被存储在计算机可读或机器可读介质中。处理器可以执行必要的任务。可以为各种应用提供三维(3d)视频内容,诸如虚拟现实(vr)应用、游戏应用(包括vr或其他游戏系统)、音频视频应用(例如vr电影或秀、3d电影或秀,等等)、其任何组合以及许多其他应用。例如,vr内容可以为用户提供虚拟沉浸在由自然和/或合成图像(和在一些情况下,声音)的呈现所创建的非物理世界中的能力。例如,用户可以与vr环境交互,诸如在整个环境中移动、与vr环境中的对象交互以及其他交互。在一些情况下,体验vr视频、vr游戏和/或其他vr体验的用户可以使用电子装备(诸如头戴式显示器(hmd),以及可选的某些工具或衣服(例如,装有传感器的手套))与虚拟环境互动。当用户在现实世界中移动时,在虚拟环境中呈现的图像也会改变,从而使用户感觉到用户正在虚拟环境中移动。在一些应用中,可以在虚拟现实环境的呈现中使用来自现实世界的图像,而不是使用诸如可以在游戏和虚拟世界中找到的计算机生成的图形。例如,用户可以使用物理上位于旧金山的vr视频系统,在巴黎玩第一人称赛车游戏、体验柏林的徒步旅行、体验纽约的体育赛事,以及其他地点的事件。处理3d场景的应用的日益普及带来了与通过诸如因特网的网络递送3d内容有关的新技术挑战。例如,由于3d对象在几何形状和纹理方面的大小,通过网络递送丰富的高质量的三维(3d)场景具有挑战性。与3d场景相关联的大量数据归因于3d虚拟世界中的每个对象都由一个或多个3d网格和纹理数据限定。对象的3d网格(也被称为“3d模型”)可以限定对象几何形状的至少一部分。例如,3d网格可以由限定对象的几何形状的多个多边形组成。可以通过添加更多的多边形(对应于更多的几何细节)或通过增加所使用的纹理的数目和纹理图像的分辨率来将细节添加到3d对象中。可以将纹理数据应用于3d网格,以便向对象添加详细的性质。与对象相关联的纹理数据可以包括一个或多个纹理图像(在本文中也被称为“纹理”)。纹理图像限定对象的不同性质,并且可以应用于一个或多个3d网格以将性质添加到对象。在一些情况下,单个对象可以具有多个纹理图像,这些纹理图像限定了对象的不同性质。存在可以应用于单个对象或多个对象的纹理图像的各种示例。例如,漫反射纹理图像是具有颜色信息的纹理。反射率纹理图像与漫反射纹理的相似之处在于它具有颜色信息,但它也去除了所有阴影和高光。图1是针对对象的反射率纹理图像100的示例。法线纹理图像为对象的表面限定了各种法线(例如方向轴)。图2是针对对象的法线纹理图像200的示例。法线纹理图像可以使计算机轻松地理解对象的形状,诸如对象的表面上的凸起或其他改变。位移纹理图像限定要对其应用位移纹理的3d网格的变形。在一些情况下,可以将位移纹理与法线纹理结合使用。例如,法线纹理图像可以用于限定中小大小的凸起,而位移纹理图像可以用于限定较大的凸起。在一些情况下,可能期望将位移纹理与反射率纹理一起使用,以向对象添加维度。环境遮挡纹理图像指示场景中的每个点如何暴露于环境照明。例如,环境遮挡纹理在对象上显示为阴影,就像该对象被从各个侧面均匀照射一样。遮罩纹理图像(或透明度纹理图像)限定了在呈现时必须考虑纹理图像的哪些像素。图3是针对对象的遮罩纹理图像300的示例。遮罩纹理图像可以用于限定对象的形状。例如,草叶的形状可以由遮罩纹理图像限定,该遮罩纹理图像可以指示3d网格多边形要变得透明的区域(通过将像素遮罩)和要呈现像素的区域,从而有效地从多边形形状切割出草叶。粗糙度纹理图像限定了图像的表面上的反射的锐度。光泽度纹理图像还可以用于限定图像的表面上的反射的锐度。光泽度纹理图像可以是粗糙度纹理图像的倒置。其他类型的纹理图像也是可用的。纹理图像是限定纹理图像的性质的值的二维阵列。例如,反射率纹理图像在图像的每个像素处可以包括多个值,其中每个像素包括红色值、绿色值和蓝色值(对于红绿蓝(rgb)图像)或其他合适的颜色组分值,该值在对象的表面上的该位置处限定颜色。在另一个示例中,法线纹理图在每个像素位置处可以包括rgb值(或其他颜色组分值),其中每种rgb颜色表示不同的方向轴(在该像素位置处限定法线)。在一些情况下,纹理图像可以是三维的。由纹理图像提供的各种映射(例如颜色映射、凸起映射、位移映射、法线映射、高度映射、反射映射、镜面映射、遮挡映射等)已经使系统能够通过减少多边形的数目并且减少构建现实和实用的3d场景所需的照明计算来实时地模拟现实的3d场景。但是,纹理图像可以具有高分辨率,以便提供创建高质量的现实的3d场景所需的细节。高质量的光现实的3d场景在一些情况下可以包括数百个、数千个甚至更多的对象,在不压缩时,可以相当于千兆字节的信息。大量数据可能会给设备和网络基础设施带来负担,并且可能导致不良的用户体验。例如,在开始与3d内容相关联的沉浸式体验之前,客户端设备需要下载构成场景的3d对象。尽管最近在网络带宽和递送方面取得了进展,但生成3d对象所需的大量数据仍可能导致不可接受的加载时间。在3d网格的压缩和递送方面已经取得了进展。然而,较少的注意力集中在通过网络的纹理图像的递送上。在一些示例中,本文描述的一种或多种系统、装置、方法和计算机可读介质旨在提供对纹理图像的有效且自适应的递送和处理。如本文更详细描述的,本文描述的系统和技术提供了关于纹理图像的通用性、自适应性和可选性。由于系统不需要在递送链中实施新的软件或物理基础设施,因此提供了通用性。例如,可以以允许使用现有的内容递送基础设施(例如,内容递送网络(cdn))以及最终用户设备和应用的方式来处理纹理图像。使用已开发的递送和处理系统允许使用对所得视频序列的质量的细粒度控制。自适应性是可伸缩递送解决方案的一个理想特征,如已经被针对视频递送大量采用http自适应流(has)所证明的那样。该系统和技术使得能够相对于网络和设备资源自适应地递送纹理图像。通过以允许客户在所显示内容的质量和通过网络获取该显示内容的延迟之间选择的多种选项的方式来处理纹理图像,来获得可选性。鉴于要递送的纹理图像数据的大小与物理网络资源之间的不匹配,可选性很重要。本文所述的系统和技术允许纹理图像被编码并作为视频序列被递送,而不是作为单独的纹理图像或作为单独的编码纹理图像被独立地递送。例如,不是一个接一个地压缩纹理图像并独立地递送纹理图像,而是使用视频编码技术来生成并压缩纹理的序列。然后可以使用任何适当的视频流技术来递送所得的压缩视频序列。在基础设施和软件(通用性)和算法(自适应性)方面,将纹理表示为视频序列而不是单个图像允许提供商重新使用已经可用于流传输视频的优化递送链。如前所述,在不牺牲质量的情况下,还可以提供对纹理递送链的更细粒度的控制(可选)。图4是图示纹理图像排序系统400的示例的框图。纹理图像排序系统400可以被包括在计算设备中。例如,计算设备可以包括服务器、个人计算机、平板计算机和/或具有执行本文所述技术的资源能力的任何其他计算设备。纹理图像排序系统400具有各种组件,包括区块化(tiling)引擎404、转换引擎406(其是可选的,如由图4中所示的虚线轮廓所示)以及序列生成引擎408。图像排序系统400可以包括和/或可以使用电子电路或其他电子硬件(可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(gpu)、数字信号处理器(dsp)、中央处理单元(cpu)和/或其他合适的电子电路))来实施,和/或可以包括和/或使用计算机软件、固件或其任何组合来实施,以执行本文描述的各种操作。虽然纹理图像排序系统400被示为包括某些组件,但是本领域的普通技术人员将理解,纹理图像排序系统400可以包括比图4所示的那些更多或更少的组件。例如,纹理图像排序系统400在一些情况下还可以包括一个或多个存储器设备(例如,一个或多个随机存取存储器(ram)组件、只读存储器(rom)组件、高速缓存存储器组件、缓冲器组件、数据库组件和/或其他存储器设备)、一个或多个处理设备(例如,一个或多个cpu、gpu和/或其他处理设备)、用于执行无线通信的一个或多个无线接口(例如,针对每个无线接口,包括一个或多个收发器和基带处理器)、用于执行通过一个或多个硬接线连接的通信的一个或多个有线接口(例如,诸如通用串行总线(usb)输入的串行接口、闪电(lightening)连接器和/或其他有线接口)和/或图4中未示出的其他组件。纹理图像排序系统400可以获取一个或多个纹理图像402。一个或多个纹理图像402可以从另一设备接收、从存储设备获得、由包括纹理图像排序系统400的计算设备生成,或可以以任何其他方式获得。在一些情况下,一个或多个纹理图像402可以包括生成3d场景(例如,用于游戏、电影或其他类型的媒体的vr世界)所需的多个纹理图像。一个或多个纹理图像402可以包括被配置为用于应用于一个或多个3d网格的任何合适类型的纹理图像。例如,一个或多个纹理图像402可以包括漫反射纹理图像、反射率纹理图像、法线纹理图像、位移纹理图像、ao纹理图像、遮罩纹理图像、粗糙度纹理图像、光泽度纹理图像、任何其他类型的纹理图像或其任何组合。一个或多个纹理图像402可以被区块化引擎404接收以用于处理。区块化引擎404可以将一个或多个纹理图像402中的每个纹理图像划分成多个区块。由区块化引擎404生成的区块可以是重叠的或不重叠的。虽然本文出于说明性目的使用非重叠区块来描述示例,但本领域的普通技术人员将理解,该技术可以应用于重叠区块。提供给视频编码器的输入视频帧应当具有统一的分辨率(被称为视频分辨率)。区块化引擎404可以划分一个或多个纹理图像402,使得区块具有统一的区块大小。例如,一个纹理图像的区块可以全部具有相同的统一区块大小,并且所有其他纹理图像的区块可以具有相同的统一区块大小。注意,不同的纹理图像可以具有不同的分辨率。区块化引擎404可以将具有不同分辨率的纹理图像划分成具有相同统一大小的区块。在一些示例中,统一的区块大小被限定为像素的数目,以允许将纹理图像的不同分辨率组合到视频中。在纹理图像的分辨率不是区块大小的倍数的情况下,可能存在不能被划分成具有统一区块大小的区块纹理图像的一个或多个部分。在这种情况下,可以执行不同的技术来创建具有统一区块大小的区块。在一个示例中,可以执行填充(padding)以创建具有统一区块大小的区块。在另一示例中,某些像素可以不被压缩以创建具有统一区块大小的区块。统一的区块大小允许区块由视频编码器进行编码,就好像它们是具有某个视频分辨率的视频帧一样。例如,区块的统一区块大小实质上成为提供给编码器的有序区块的序列的视频分辨率。图5a和图5b是图示被划分成区块的两个不同纹理图像500a和500b的示例的概念图。如所示的,纹理图像500a的分辨率与纹理图像500b的分辨率不同。纹理图像500a和500b的分辨率(在像素方面)可以被表示为宽度(w)×高度(h)。使用这种表示法,纹理图像500a具有w1像素×h1像素的分辨率,并且纹理图像500b具有w2像素×h2像素的分辨率。纹理图像500a和500b的分辨率可以是任何合适的量,并且可以基于由纹理提供的性质的期望质量来选择。在一个说明性的示例中,纹理图像500a的分辨率是2048×640,并且纹理图像500b的分辨率是1792×512。一些纹理图像可以具有8k(例如7680×4320)或甚至更高的分辨率。区块化引擎404可以将纹理图像500a划分成m个区块×n个区块,包括区块502a、504a、505a、506a、508a和509a等。区块化引擎404还可以将纹理图像500b划分成x个区块×y个区块,包括区块510b、512b、514b、515b、516b和518b等。如前所述,纹理图像500a和500b可以被划分成具有统一区块大小的区块。继续上面的说明性示例,可以将统一区块大小设置为256×128像素。使用256×128的统一区块大小,区块化引擎404可以将2048×640的纹理图像500a划分成8个区块(m)×5个区块(n),其中每个区块具有256×128的大小。区块化引擎404也可以将1792×512的纹理图像500b划分成7个区块(m)×4个区块(n),其中每个区块具有256×128的大小。结果,区块化引擎404可以从纹理图像500a和纹理图像500b生成总共68个256×128的区块。在这种示例中,区块的视频分辨率(从视频编码器的角度来看)将是256×128。在一些实施方式中,纹理图像排序系统400可以包括转换引擎406,其可以用于在区块被提供到序列生成引擎408之前转换一个或多个区块的像素。转换引擎406是纹理图像排序系统400的可选组件,如图4中的由虚线轮廓所指示的。处于各种原因,转换引擎406可以将一个或多个转换应用于图像的某些部分。参考图6描述由转换引擎406应用的转换的示例。图6是具有蝴蝶对象的纹理图像600的示例。纹理图像600具有300×100(宽度×高度)的分辨率。区块化引擎404可以将纹理图像600分成两个区块602和604。区块602和604中的每个区块占据图像的一半,并且因此每个区块具有150×100的分辨率。如可以从纹理图像600看出,区块602和区块604具有一些相似性。如果使用镜像转换(例如,水平函数)对区块602或604中的一个区块进行镜像,则将存在相同的区块。例如,转换引擎406可以对区块604应用镜像转换,以生成区块604的镜像版本,在这种情况下,区块604的镜像版本将与区块602相同。通过对区块604进行镜像并且使其与区块602相同,当区块602和镜像区块604由视频编码器编码时,可以提高编码效率。例如,视频编码器可以利用该相似性来有效地压缩视频。可以被包括在数据文件(在下面进行更详细的描述)中以指示镜像函数的配置文件的示例如下(使用水平函数作为镜像函数的一个示例而给出该示例):名称区块图像纹理x_posy_pos函数left_image蝴蝶00plainright_image蝴蝶1500horizontal_mirror在配置文件中纹理图像600被表示为“蝴蝶”,在配置文件中区块602被表示为“left_image”,并且区块604被表示为“right_image”。表示“x_pos”指示对应的区块602或604的左上像素的x坐标,并且表示“y_pos”指示对应的区块602或604的左上像素的y坐标。例如,区块602的左上像素具有(0,0)的(x,y)坐标位置,并且区块604的左上像素具有(150,0)的(x,y)坐标位置(基于纹理图像600的分辨率是300×100,并且每个区块具有150×100的分辨率)。配置文件可以向客户端设备指示客户端设备在使用区块604重构纹理图像600之前,必须在区块604(“right_image”)的像素上应用水平镜像函数(被表示为“horizontal_mirror”)。配置文件中的“plain”函数指示没有转换要被应用于区块602(“right_image”)的像素。其他类型的转换(例如,扭曲(warping)、解扭曲(unwarping)等)也可以被应用于区块,以例如增加编码效率。由区块化引擎404生成的区块(以及在一些情况下由转换引擎406转换的一个或多个区块)可以被输出到序列生成引擎408。序列生成引擎408可以通过将区块排序成特定顺序而生成有序区块的序列410。如以下详细描述的,有序区块的序列410是被编码的视频。在生成有序区块的序列410时,可以由序列生成引擎408使用不同的排列技术来对区块进行排序。排列技术的示例可以包括基于相似性的排列、基于子序列的排列、其组合或其他类型的排列或排序。使用基于相似性的排列,序列生成引擎408可以基于一个或多个纹理图像402的区块之间的相似性来确定区块的顺序。可以基于区块的像素值来确定区块之间的相似性。如上所述,纹理图像中的像素值可以用于限定各种性质,诸如颜色、深度、遮挡以及其他性质。可以比较不同区块的像素值以便找到区块之间的相似性。在一个说明性示例中,可以使用任何适当的相似性测量来确定每一对纹理区块之间的相异性(在下面被表示为di,j)。在一个示例中,平均绝对误差(mae)可以用于确定相异性。可以使用的基于差异的计算的其他示例包括均方误差(mse)、均方根误差(rmse)、绝对差之和(sad)、平方差之和(ssd)或其他合适的计算。区块之间的相异性可以被聚合到距离矩阵中(如下所述)。在一些示例中,可以通过将区块排列建模为分配问题、旅行推销员问题或其他基于相似性的问题,来确定区块(来自一个或多个纹理图像402)在有序区块的序列410中的排列。在一个说明性示例中,可以通过求解(例如,使用动态编程或其他合适的技术)在给定距离矩阵的情况下的最少旅行推销员问题来获得序列排列的最优解,其中t是要被包括在有序区块的序列410中的区块的集合,di,j是两个独立区块i和j之间的差异(i=1、2...n,其中n是集合t中的区块的数目)。如上所述,可以使用mae、mse、rmse、sad、ssd或其他合适的基于差异的计算来确定相异性。符号是通用量词,指示声明的断言(这里,)包含给定变量i(主题区块)的“对于所有实例”。符号∈用于指示j是t的元素(并且因此,每个区块j都属于区块t的集合)。距离矩阵的示例如下:该解决方案使连续图像之间的相似性之和最大化(或使相异性之和最小化),并且包括区块的集合t中的所有区块。解决旅行推销员问题(例如,使用动态编程或其他合适的技术)的结果是有序区块的序列410(可以被表示为s)。也可以使用其他基于相似性的解决方案,诸如匈牙利方法、分配问题或其他基于相似性的问题。返回图5a和图5b,可以由序列生成引擎408将纹理图像500a的区块502a和504a以及纹理图像500b的区块510b和515b确定为相似。序列生成引擎408还可以确定纹理图像500a的区块505a和区块506a与纹理图像500b的区块512b和514b相似。序列生成引擎408可以进一步确定纹理图像500a的区块508a和509a以及纹理图像500b的区块516b和518b相似。基于相似性确定,纹理图像500a和500b的各个区块可以按照有序区块的序列进行排序。图5c是图示有序区块的序列500c的子集和示例的图,有序区块的序列500c从来自纹理图像500a和500b的区块的、基于相似性的排列产生。如图5c中所示,区块502a、504a、510b、515b以有序区块的序列500c连续地放置。类似地,区块505a、506a、512b、514b以有序区块的序列500c连续地放置,跟随有区块508a、509a、516b、518b。基于相似性的排列可以确保有序区块的序列中的连续图像具有高相似性。如图5c中所图示的,基于相似性的排列还可以导致包括不同纹理图像(例如,纹理图像500a和纹理图像500b)的区块的有序区块的序列散布在整个序列(例如,有序区块的序列500c)中。通过最大化连续区块之间的相似性,由于视频编码器具有利用相似性来有效压缩视频的能力,因此可以获得高编码效率。可以由序列生成引擎408执行的排列技术的另一示例是基于子序列的排列。基于子序列的排列可以针对具有某个秒数的视频的段对区块进行排序,以产生包括多个子序列的有序区块的序列。在一些情况下,基于子序列的排列可以确保给定纹理图像的大部分区块或全部区块在最小数目的子序列中。例如,视频被分成具有相同持续时间的段,诸如一秒的持续时间(对于30fps的视频,对应于30帧)、两秒的持续时间(对于30fps的视频,对应于60帧)或其他合适的持续时间。可以根据帧的数目(例如,四帧、六帧、30帧或其他合适的大小的段)或根据时间的量(例如,一秒(对应于30fps视频中的30帧)或其他合适的时间量)来限定段大小(也被称为段持续时间或段长度)。在一些实施方式中,段大小可以用作输入参数,以形成可由视频编码器独立解码的编码视频序列。例如,在一些情况下,可以将段大小作为输入参数提供给视频编码器。在一些情况下,段大小不是要求的输入参数。如上所述,纹理图像可以被划分成多个区块,这可以产生k个区块(其中k取决于纹理图像分辨率和统一的区块大小)。该参数k可以大于或小于段大小。例如,如果区块的数目k大于段大小,则给定纹理图像的所有区块将不适合放入单个段。另一方面,如果区块的数目k小于段大小,则给定纹理图像的所有区块将适合放入单个段。基于子序列的排列可以用于使递送纹理图像的所有区块所需的段的数目最小化,这可以通过将给定纹理图像的区块排序成子序列来实施。子序列包括来自纹理图像的连续区块。在一个说明性示例中,可以提供两个均两秒(30fps视频中的60帧)的视频段。第一纹理图像可以被划分成96个区块。当生成有序区块的序列时,可以将区块排序成适合放在两个段中的子序列-整个第一段(具有60帧的大小)填充有第一纹理图像的60个区块。36个剩余区块被放置在第二个段(也具有60帧的大小)中,留下可以被添加到第二个段中的24个帧。第二段的24个其他帧可以来自第二个纹理图像的区块,第二个纹理图像可以被划分成84个区块。第二纹理图像的84个区块可以被排序成部分地在第二段中的子序列(例如24个帧),并且剩余的60个区块可以被放置在第三段中。在一些情况下,可以将上述基于相似性的排列应用于纹理图像的区块,以便确定区块的顺序。在这种情况下,基于相似性的排列将单独地应用于每个纹理图像。通过将基于相似性的排列应用于纹理图像的区块,可以使该纹理图像的连续区块之间的相似性最大化。除了基于相似性的排列和基于子序列的排列之外或作为其备选,可以执行用于对区块进行排列的其他技术。图5d是图示使用基于子序列的排列而排列的有序区块的序列520的不同子序列(包括子序列522、子序列524、子序列526和子序列528)的示例的图。有序区块的序列520中的区块来自三个不同的纹理图像,分别被标记为纹理a、纹理b和纹理c。纹理a被划分成十个区块,纹理b被划分成六个区块,并且纹理c被划分成八个区块,如图5d中所示的。可以被输入到编码器中的参数包括将在视频中生成的视频段的长度。在图5d所示的示例中,生成了具有等于四个帧的段大小的视频。结果,有序区块的序列520包括六个段(出于说明性目的,被示为由虚线划分),其中处于每秒四帧的帧速率的每个段具有一秒的持续时间。在自适应流传输中,在自适应性(例如,段越短,对带宽改变的反应越快)与压缩性能(例如,段越长,压缩越好)之间存在折衷。段的大小很重要,因为在一些情况下,流传输系统在每个段的开始包括随机存取点(rap)图片(例如,即时解码基准(idr)图片、断开链接访问(bla)图片或其他适当的随机存取点图片)。以rap开头的段在本文中被称为rap段。rap图片在大小上大于该段的其他区块(由于rap是帧内图片)。段越长,编码器的约束越少,并且因此可以获得更好的压缩。另一方面,段越短,客户端设备(具有视频解码器)就可以越快地适应网络条件的改变。例如,一秒的段可以允许快速改变,因为客户端设备可以在每一秒从一个段切换到另一个段;然而,一秒的段还要求在视频比特流中包括更多的rap。在尽可能少的段中包括给定纹理图像的尽可能多的区块,允许客户端设备更有效地获得纹理图像的区块。一些自适应流传输系统(例如,hls)允许非rap段。非rap段是不包括rap图片的段。在一些实施方式中,即使在这种系统中,也可以将所有段强制成为rap段(例如,在每个段的开始处具有rap图片的段),从而实质上使这些段成为整数个编码视频序列(cvs)。例如,cvs可以包括一系列图片(例如,存取单元),其从rap图片开始直到下一个rap图片并且不包括下一个rap图片。基于子序列的排列考虑了段大小以对区块图像进行排列,从而使需要下载以获得纹理图像的视频段的数目最小化。由于各种子序列522、524、526和528(针对段进行很好的调整)的使用,这些有序区块的序列520是最佳的(在每个纹理图像的段的数目方面)。如图5d中所示,纹理a的十个区块被分成两个子序列522和526。纹理a的第一子序列522包括十个区块中的六个区块,并且第二子序列526包括来自纹理a的其他四个区块。结果,客户端设备将需要下载和解码三个段(第一段、第二段和第四段),以便获得重构纹理图像a必需的区块。来自纹理b的六个区块被包括在单个子序列524中,跨两个段划分子序列524。客户端设备将需要下载和解码两个段(第二段和第三段),以便获得重构纹理图像b必需的区块。来自纹理c的八个区块也被包括在单个子序列528中,跨两个段划分子序列528。客户端设备将需要下载和解码最后两个段,以便获得重构纹理图像c必需的区块。图5e是图示有序区块的序列530的不同子序列(包括子序列532、子序列534、子序列536和子序列538)的另一示例的图,其使用基于子序列的排列来排列。有序区块的序列530中的区块来自与图5d相同的三个不同纹理图像-纹理a(包括10个区块)、纹理b(包括6个区块)和纹理c(包括8个区块)。如图5e中所示,生成了具有等于六个帧的段大小的视频。结果,有序区块的序列530包括四个段(出于说明性目的,被示为由虚线划分),其中处于每秒六帧的帧速率的每个段具有一秒的持续时间。由于四个子序列532、534、536和538的使用,有序区块的序列530是最佳的(在每个纹理图像的段的数目方面)。如所示的,纹理a的十个区块被包括在单个子序列532中。跨视频的前两个段划分子序列532。结果,客户端设备将需要下载和解码两个段(第一段和第二段)以获得重构纹理图像a必需的区块。第二段还包括来自纹理c的两个区块。来自纹理b的六个区块子序列536也被包括在单个子序列536中。子序列536被包括在单个段中。客户端设备将仅需要下载和解码一个段(第三段),以便获得重构纹理图像b必需的区块。来自纹理c的八个区块被分为两个子序列534和538。纹理c的第一子序列534包括八个区块中的两个区块,该两个区块也被包括在第二段中,第二段还包括来自纹理a的区块。纹理c的第二子序列538包括来自纹理c的其他六个区块,并且被包括在第四段中。客户端设备将需要下载和解码两个段(第二段和第四段),以便获得重构纹理图像c必需的区块。还可以将基于相似性的排列单独地应用于纹理a、纹理b和纹理c中的区块,以便可以使子序列内的连续区块之间的相似性最大化。在一些情况下,当执行基于子序列的排列时,可以将基于相似性的排列单独地应用于同时需要的纹理图像的组(例如,当接收到对需要多个纹理图像的特定3d对象的请求时)。例如,参考图5d,来自纹理a的前六个区块可以基于它们彼此的相似性而被包括在子序列522中。除了执行基于子序列的排列外,执行基于相似性的排列还可以提高关于下载时间的效率,同时还可以提供较高的编码效率(由于视频编码器能够利用相似性来有效地压缩视频)。在确定顺序之后,就可以将有序区块的序列410作为输入帧提供给编码设备412(也被称为视频编码器),编码设备412可以使用有序区块的序列410来生成一个或多个纹理视频(被称为编码纹理视频比特流)。编码设备412将有序区块的序列410中的区块视为单独的图像帧,并产生构成纹理视频的编码区块。编码区块在本文中也可以被称为编码图片。例如,编码设备412可以对有序区块的序列410进行编码以产生包括编码区块、数据文件和其他信息的编码纹理视频比特流。数据文件可以包括使得能够重构纹理图像的一组元数据(也被称为“上下文数据”)。可以由编码设备412执行任何类型的视频编码。可以由编码设备412使用的视频编码工具的示例包括:itu-th.261(iso/iecmpeg-1visual)、itu-th.262(iso/iecmpeg-2visual)、itu-th.263(iso/iecmpeg-4visual)、itu-th.264(iso/iecmpeg-4avc)、包括可伸缩视频编码(svc)和avc的多视图视频编码(mvc)扩展、itu-th.265(高效视频编码(hevc),hevc的范围和屏幕内容编码扩展包括3d视频编码(3d-hevc)、多视图扩展(mv-hevc)和可伸缩扩展(shvc)、通用视频编码(vvc)和/或其他正在开发或将要开发的视频编码标准。参考图12描述了视频编码设备1200的说明性示例。还可以将其他输入参数提供给视频编码器,其他输入参数诸如是每秒帧数(fps)、目标视频比特率、要包括在视频中的可独立解码和可下载的段的数目、其任何组合和/或其他参数。与包括具有时间关系的帧的标准视频不同(例如,视频的帧以特定顺序输出或播放),纹理图像与纹理图像的各个区块在时间上是独立的,因为它们没有任何时间关系或基于时间的关系。纹理图像和区块之间的这种时间独立性允许选择任何fps值。fps和比特率参数允许服务提供商生成具有多种质量和多种递送延迟的相同视频(具有该组纹理)的多个版本。如上所述,区块没有时间关系,因此可以为fps选择(例如,由用户、由内容提供商等)任何值。fps越高,每个时间单位将发送的区块越多,并且递送一个或多个纹理图像402的整个区块所需的时间越短。在一个示例中,对于包含300个图像的序列s,设置fps=30产生10秒长的视频。对于给定的参数fps,视频比特率使能对质量的设置。比特率越高,压缩越低,并且因此图像的质量越高。fps和比特率参数都允许服务提供商准备具有多种质量和多种递送延迟的同一组纹理t的多个版本。大量的质量适应变化的带宽条件,而多种递送延迟使得能够基于客户端何时需要纹理和/或服务提供商何时需要纹理来调度纹理的递送。具有不同质量的相同内容的每个编码视频被称为表示(representation)。在一些情况下,可以为单个纹理视频(对应于单个有序区块的序列)生成多组表示。基于段大小输入参数,每个不同的表示集可以具有不同的段大小。给定表示集内的不同表示具有相同的段大小,但可以具有不同的比特率和/或帧率。例如,两个表示的集合可以具有一秒的段大小,其中一个表示具有1兆比特/秒(mb/s)的比特率,另一个表示具有2mb/s的比特率。对于相同的纹理视频,两个表示的第二集合可以具有十秒的段大小,其中一个表示具有1mb/s的比特率,第二表示具有2mb/s的比特率。客户端设备可以基于网络条件,并且在一些情况下基于客户端设备的约束(例如,处理能力、存储器容量、3d图形呈现应用的能力等)来接收表示中的一个表示。例如,如果网络带宽在某一时刻足够,则客户端设备可以接收高比特率的纹理视频(例如,以2mb/s的比特率)。在另一时刻,带宽条件可能恶化,在这种情况下,由客户端设备接收的表示可以切换到较低比特率的纹理视频(例如,以1mb/s的比特率)。如上所述,可以向数据文件提供编码视频。如下面更详细描述的,数据文件可以被解码器使用来重构纹理图像。数据文件可以包括一个或多个纹理图像402的区块的上下文数据。纹理图像的区块的上下文数据(也被称为配置文件)可以包括区块标识符、与区块相关联的纹理图像的标识、区块在纹理图像内的位置、转换函数的指示、其任何组合和/或其他上下文信息。如上所述,可以将转换函数应用于区块以修改区块的像素。可以使用现有的视频递送基础设施通过网络将具有编码区块的编码纹理视频递送到客户端设备。例如,可以使用因特网流协议在因特网上流传输编码视频。存在用于自适应比特率流传输的各种协议,并且可以使用任何合适的视频递送协议来递送本文描述的纹理视频。一个示例是在超文本传输协议(http)或dash(在iso/iec23009-1:2014中限定)上的动态自适应流传输。在dash下,媒体呈现描述(mpd)(例如,以可扩展标记语言(xml)文件表示)可以包括限定自适应集的一组元素。自适应集可以包括一组备选的表示。如上所述,区块视频的每个备选表示可以与特定的比特率、帧速率和/或段大小相关联,并且可以包括一组媒体段。表示的每个媒体段在mpd中可以与可以被下载和解码的媒体段文件的位置(例如,使用统一资源位置(url)或其他位置标识符)相关联。自适应比特率流传输的另一示例是http实时流传输(hls),其提供与传输流(ts)格式相关联的文件段的流传输。传输流指定对打包基本流(pes)进行封装的容器格式。每个pes包括将来自视频或音频解码器的顺序数据字节封装为pes分组。使用hls,服务器可以向客户端设备提供一组播放列表文件(也被称为描述文件或清单文件)。播放列表文件中的每个播放列表文件都可以包括指向ts格式的并且与特定比特率相关联的文件段序列的链接。在一些情况下,播放列表文件可以为a.m3u8格式。变型播放列表文件可以是指一组播放列表文件。每个播放列表文件可以与相同纹理视频的一组媒体段文件相关联,并且可以与不同的比特率相关联。可以向客户端设备提供变型播放列表文件,并且可以基于本地条件(例如,网络带宽)来选择与特定带宽、比特率、帧速率等相关联的播放列表文件。客户端设备然后可以使用所选择的播放列表文件的信息来获得用于流传输的媒体段文件。视频解码器可以接收编码纹理视频,并且可以对该视频进行解码以获得有序区块的解码序列。有序区块的解码序列对应于由序列生成引擎408生成的有序区块的序列410。有序区块的解码序列与有序区块的序列410匹配的程度取决于编码效率。参考图13描述了视频解码设备1300的说明性示例。视频解码器可以将解码序列发送到纹理图像重构系统。图7是图示纹理图像重构系统700的示例的框图。纹理图像重构系统700可以被包括在客户端设备(例如,计算设备)中。例如,客户端设备可以包括个人计算机、平板计算机、移动设备(例如,蜂窝电话、智能电话、可穿戴设备等)、游戏系统或控制台、电视(例如,网络连接的电视)和/或具有执行本文描述技术的资源能力的任何其他计算设备。纹理图像重构系统700具有各种组件,包括转换引擎726(其是可选的,如由图7中所示的虚线轮廓所指示)和区块映射引擎730。纹理图像重构系统700的组件可以包括和/或可以使用电子电路或其他电子硬件(其可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(gpu)、数字信号处理器(dsp)、中央处理器(cpu)和/或其他合适的电子电路)来实施,和/或可以包括和/或使用计算机软件、固件或其任何组合来实施,以执行本文描述的各种操作。虽然纹理图像重构系统700被示为包括某些组件,但是本领域技术人员将理解,纹理图像重构系统700可以包括比图7种所示的那些更多或更少的组件。例如,在一些情况下,纹理图像排序系统400还可以包括一个或多个存储器设备(例如,一个或多个随机存取存储器(ram)组件、只读存储器(rom)组件、高速缓存存储器组件、缓冲器组件、数据库组件和/或其他存储器设备)、一个或多个处理设备(例如,一个或多个cpu、gpu和/或其他处理设备)、用于执行无线通信的一个或多个无线接口(例如,针对每个无线接口,包括一个或多个收发器和基带处理器)、用于执行通过一个或多个硬接线连接的通信的一个或多个有线接口(例如,诸如通用串行总线(usb)输入的串行接口、闪电(lightening)连接器和/或其他有线接口)和/或图7中未示出的其他组件。如图7中所示,来自编码设备412的编码纹理视频720被提供给解码设备722,解码设备722对纹理视频比特流进行解码以获得经解码的有序区块的序列724,经解码的有序区块的序列724与由序列生成引擎408生成的有序区块的序列410相对应。纹理图像重构系统700可以获得提供有编码纹理视频的数据文件728。数据文件728可以包括针对一个或多个纹理图像402的区块的上下文数据。例如,可以在经解码的有序区块的序列724中包括针对每个区块的配置文件。如上所述,针对纹理图像的区块的上下文数据(例如,配置文件)可以包括区块标识符、与区块相关联的纹理图像的标识、区块在纹理图像内的位置、转换函数的指示、其任何组合和/或其他上下文信息。上面关于图6讨论的表是针对区块的上下文数据(包括转换函数)的示例:名称区块图像纹理x_posy_pos函数left_image蝴蝶00plainright_image蝴蝶1500horizontal_mirror纹理图像重构系统700可以使用来自数据文件728的信息来重构一个或多个纹理图像402。例如,在包括转换引擎726的实施方式中,转换引擎726可以确定数据文件728中是否存在针对给定区块的转换函数。如果存在针对该区块的传递函数,则转换引擎726可以将转换应用于该区块以修改区块的像素。使用图6的示例和上表,与区块604相关联的上下文数据向转换引擎726指示:在使用区块604重构纹理图像600之前,将水平镜像函数(表示为“horizontal_mirror”)应用于区块604的像素(“right_image”)。基于数据文件中的转换的指示,转换引擎726可以将转换应用于对应的区块。区块映射引擎730可以使用数据文件728中的信息来重构纹理图像732。对于给定区块,区块映射引擎730可以使用区块标识符、与区块相关联的纹理图像的标识以及区块在纹理图像内的位置,以便将区块布置在相对于与区块相关联的纹理图像的正确位置。区块映射引擎730可以通过适当地将经解码的区块缝合在一起来重构纹理。例如,可以基于指示区块属于第一纹理图像,以及第一、第二等区块在第一纹理图像中的特定位置的数据文件,将第一区块映射到第一纹理图像中最左上的位置,将第二区块放置在第一区块旁边,等等。在一些情况下,所得的纹理图像732可以是原始组的一个或多个纹理图像402的失真(lossy)版本,其中该失真(loss)可以取决于提供给编码设备412的fps和比特率两者的设置。图8是图示使用本文描述的技术生成、编码、解码和重构多个纹理图像的示例的图。如前所述,3d场景中的许多纹理可以具有相似性,诸如森林场景中的多个基于木材的纹理。视频编码器可以利用n个独立纹理之间的相似性,以良好的速率-失真折衷将它们压缩成一定数目的帧(其中的帧是上面描述的区块)的视频。例如,如图8中所示,可以从一组纹理图像802、804和806生成编码纹理视频811。在一个说明性示例中,可以通过将纹理图像802、804和806应用到3d场景的一个或多个3d网格,使用3d多媒体应用来呈现纹理图像802、804和806。注意,将由区块化引擎404生成的区块被称为“帧”,该“帧”将被提供给编码设备。如上所述,区块化引擎404可以生成区块以获得帧分辨率均匀化。为了生成3d场景而必须被递送的纹理的集合(包括纹理图像802、804、806)可以被表示为t。如所示的,集合t中的纹理图像802、804和806具有不同的分辨率,尽管用于该编码设备的输入帧应当具有相同的分辨率。区块化引擎404可以通过将t中的每个纹理图像切割成单位大小的区块来使输入帧均匀化。从纹理图像802、804和806生成的区块的集合可以被表示为t。如图8中所示,纹理图像802被划分成四个区块a、b、c和d,纹理图像804被划分成四个区块a、b、c和d,并且纹理图像806被划分成两个区块a和b。所得的区块的集合808可以被提供给序列生成引擎408。如上所述,序列生成引擎408可以执行图像序列排列。例如,t中的所有区块都可以基于其相似性(使用基于相似性的排列)、相对于子序列(使用基于子序列的排列)、基于随机排列、其任何合适的组合和/或其他排列技术进行排序。关于基于相似性的排列,di,j可以表示t中两个独立的纹理区块图像i和j之间的相异性。di,j越低,i和j越相似。基于相似性的排列可以确保序列中的连续图像或要编码的有序区块具有高相似性,使得视频编码器可以利用这种相似性并有效地压缩视频。在一个说明性示例中,在给定距离矩阵的情况下,通过计算最少旅行推销员问题来获得基于相似性的排列的理论最优解。该解使连续图像之间的相似性之和最大化,并且包括所有纹理区块图像。该操作产生有序区块的序列810(表示为s)。如图8中所示,来自不同纹理图像802、804和806的区块在有序区块的序列内被混合。例如,由于区块具有高程度的相似性,因此来自纹理图像802的区块a紧挨着纹理图像804的区块a。如前所述,除了基于相似性的排列之外或作为其备选,可以执行其他类型的排列技术。视频编码器将有序区块的序列410(s)作为输入(好像s是一组输入视频帧或图片一样),并且将有序区块的序列410压缩成编码纹理视频811(以及数据文件812,其包括使得能够重构纹理图像的一组元数据或上下文数据)。如前所述,视频编码器可能需要的参数包括每秒的帧的数目(以f表示)和目标视频比特率(以v表示)。区块没有时间关系,因此服务提供商可以自由选择f的任何值(f越高,每时间单位发送的纹理区块图像越多,并且递送整组纹理所需的时间越短)。对于给定的参数f,视频比特率v使得能够设置质量(v越高,压缩越低,并且因此图像的质量就越高)。参数f和v都允许服务提供商准备具有多种质量和多种递送延迟的相同纹理集t的多个版本。大量的质量适应不断变化的客户端带宽条件,而多个延迟使得能够基于客户端何时需要纹理来调度纹理的递送。客户端设备可以获得纹理视频811和数据文件812。客户端设备可以对纹理视频811的视频进行解码,并且可以提取视频帧的序列σ(其是经解码的有序区块的序列820)。在一些实施方式中,解码操作可以由客户端设备的图形处理单元(gpu)执行。由于在针对3d应用的许多设备中实施了有效的视频解码器,因此本文描述的解决方案考虑了纹理递送系统的通用特征。在一些情况下,如上所述,可以将一个或多个转换函数(例如,逆转换函数)应用于一个或多个解码区块。可以在数据文件812中标识针对给定区块的转换函数。区块映射引擎730可以执行纹理重构。例如,基于与视频帧(区块)以及原始纹理图像802、804和806相关的数据文件,客户端通过适当地缝合σ中的解码帧来重构纹理图像822、824和826。如上所述,所得的纹理的集合r可以是原始集合t的有损版本,在这种情况下,该损失可以取决于f和v两者的设置。纹理图像822是纹理图像802的重构版本,纹理图像824是纹理图像804的重构版本,并且纹理图像826是纹理图像806的重构版本。使用本文描述的系统和技术可提供各种益处。例如,纹理图像内容可以以可预测的或保证的递送时间来递送。这种可预测的递送时间可能很重要,诸如当内容提供设置用于递送给定场景的所有纹理的时间限制(例如,30秒的时间限制)时。本文描述的系统和技术的另一示例益处是,可以在自适应网络变化的同时,递送纹理图像数据,从而根据带宽和设备限制来提供适应性。益处的另一个示例是,无需沿着端到端的递送链(例如,http服务器、内容递送网络(cdn)基础设施、最终用户客户端设备等)安装新的软件和装备。另外,本文描述的系统和技术提供对纹理图像的子集的快速访问(例如,通过仅下载和解码期望纹理的某些段)。而且,与作为单独的纹理图像或作为单独的编码纹理图像独立地递送相反,本文描述的系统和技术允许纹理图像被编码并作为视频序列递送。例如,如前所述,不是一个接一个地压缩纹理图像并独立地递送纹理图像,而是使用视频编码技术来生成并压缩纹理的序列。相对于单独压缩每个纹理图像并提供对要独立下载的每个纹理(例如,在图像压缩库中)的访问的系统,这种解决方案是有利的。单独对纹理图像进行编码的系统不允许利用视频的自适应流传输。这些系统不能保证压缩图像的及时递送,并且迫使客户端设备决定每一个图像的压缩质量,而不考虑质量选择对整个下载时间的影响。现在描述使用本文描述的技术的性能评估的示例。使用以高质量纹理和多种类型的纹理为特征的场景执行性能评估。提取了表示1.13千兆字节的145个纹理图像的集合。由于所有原始纹理的分辨率均是1024的倍数,因此使用1024×1024的单位区块大小。使用基于相似性的排列,其中使用平均绝对误差(mae)确定每一对纹理区块图像之间的相异性。使用来自libx265库中的高效视频编码(hevc)软件执行纹理序列的视频压缩。在视频解码之后,计算原始未压缩的纹理图像和重构图像之间的峰值信噪比(psnr)。每秒的帧f被固定为10fps,这产生56秒的长视频。目标视频比特率v的范围为从2.5mbps至50mbps。为了相对于最新技术比较本文描述的技术的性能,使用来自opencv图像库的jpeg和webp来压缩纹理。对两组压缩图像测量psnr和速率。传统的速率-失真曲线在图11图示的图形1100中示出,其中y轴是跨r(重构纹理)中所有纹理的平均psnr。即使没有任何其他优化,本文描述的技术也比最新的webp库产生了更好的压缩性能,并且明显优于jpeg。对于低比特率(webp的主要目标),视频方法要比webp更好,而对于更高的比特率,压缩增益增加(针对0.4bpp达到5db以上)。在质量(例如,从32db到49db)和大小(例如,从17兆字节到328兆字节)方面,本文描述的技术还提供了范围更广的媒体设置,使得能够实施自适应流传输解决方案以及所有纹理的及时递送。现在将描述使用本文描述的技术执行的过程的示例。图9是图示使用本文描述的技术中的一种或多种技术,从一个或多个纹理图像生成视频的过程900的示例的流程图。过程900可以获得第一纹理图像并且处理第一纹理图像。例如,在框902处,过程900包括将第一纹理图像划分成第一多个区块。第一纹理图像被配置为用于应用于至少第一三维网格。例如,第一纹理图像可以包括漫反射纹理图像、反射率纹理图像、法线纹理图像、位移纹理图像、ao纹理图像、遮罩纹理图像、粗糙度纹理图像、光泽度纹理图像或可以应用于三维网格以向网格添加详细性质的任何其他类型的纹理图像。在框904处,过程900包括将第一多个区块排序成有序区块的序列。在一些情况下,第一多个区块具有统一的区块大小。在一些情况下,将第一多个区块排序成有序区块的序列以最大化压缩效率。例如,可以基于第一多个区块之间的相似性(或相异性)将第一多个区块排序成有序区块的序列。在一个说明性示例中,过程900可以包括:从第一多个区块确定区块的对之间的相似性;以及使用区块的对之间的相似性,基于序列使有序区块的序列中的连续区块之间的相异性之和最小化,来确定有序区块的序列。在一个说明性示例中,将区块排列成有序区块的序列可以被建模为旅行推销员问题。可以使用诸如动态编程的解决方案来解决旅行推销员问题,该解决方案考虑到区块的对之间的相似性(或相异性),以便确定有序区块的序列。也可以使用其他排列技术,诸如匈牙利方法、分配问题等。在一些情况下,以使需要下载以获得第一纹理图像的视频段的数目最小化的顺序,将第一多个区块排序成有序区块的序列。例如,如上面关于图5d和图5e所描述的,有序区块的序列可以包括第一子序列和第二子序列。第一子序列可以包括来自第一多个区块的第一组区块,并且第二子序列可以包括来自第一多个区块的第二组区块。在框906,过程900包括提供有序区块的序列以用于编码视频的生成。编码视频的生成包括基于有序区块的序列对第一多个区块进行编码。在一些示例中,可以使用过程900来处理多个纹理图像。例如,可以获得第二纹理图像。第二纹理图像可以被配置为用于应用于第一三维网格或第二三维网格中的至少一个三维网格。例如,第二纹理图像可以包括漫反射纹理图像、反射率纹理图像、法线纹理图像、位移纹理图像、ao纹理图像、遮罩纹理图像、粗糙度纹理图像、光泽度纹理图像或可以应用于三维网格以向网格添加详细性质的任何其他类型的纹理图像。过程900可以包括将第二纹理图像划分成第二多个区块。在框904处执行的排序可以包括将第一多个区块和第二多个区块排序成有序区块的序列。编码视频的生成可以包括基于有序区块的序列对第一多个区块和第二多个区块进行编码。与由视频编码器编码的通常视频帧不同,第一纹理图像和第二纹理图像在时间上是独立的,第一多个区块中的每个区块在时间上与第一多个区块中的其他区块独立,并且第二多个区块中的每个区块在时间上与第二多个区块中的其他区块独立。在一些情况下,第一纹理图像的第一分辨率和第二纹理图像的第二分辨率是不同的分辨率(例如,类似于纹理图像500a和500b),并且第一多个区块和第二多个区块具有统一的区块大小。统一的区块大小可以是任何合适的大小,诸如256×128、612×256或其他合适的大小。在一些示例中,将第一多个区块排序成有序区块的序列以最大化压缩效率。例如,可以基于第一多个区块和第二多个区块之间的相似性(或相异性),将第一多个区块和第二多个区块排序成有序区块的序列。在一个说明性示例中,过程900可以包括:从第一多个区块和第二多个区块确定区块的对之间的相似性;以及使用区块的对之间的相似性,基于序列使有序区块的序列中的连续区块之间的相异性之和最小化,来确定有序区块的序列。如上所述,基于相似性的区块的排列可以被建模为旅行推销员问题或分配问题,可以使用匈牙利方法来执行,和/或可以基于任何其他合适的方法来执行。在一些实施方式中,以使需要下载以获得第一纹理图像和第二纹理图像的视频段的数目最小化的顺序,将第一多个区块和第二多个区块排序成有序区块的序列。在一些示例中,有序区块的序列包括第一子序列和第二子序列。例如,第一子序列可以包括来自第一多个区块的第一组区块,并且第二子序列可以包括来自第一多个区块的第二组区块。在一些情况下,有序区块的序列包括第三子序列和第四子序列。例如,第三子序列可以包括来自第二多个区块的第一组区块,并且第四子序列可以包括来自第二多个区块的第二组区块。如关于图5d和图5e所描述的,还可以确定用于其他纹理图像区块的子序列。如下面关于编码设备1200(图12)和解码设备1300(图13)更详细地描述的,可以通过利用有序区块的序列中的区块之间的相似性来获得编码视频。在一些示例中,可以执行运动补偿(例如,使用区块间预测),并且在一些情况下,可以执行区块内预测来对区块进行编码。例如,可以使用第二区块作为用于预测的基准区块,基于第一区块的区块间预测来生成编码视频。可以通过生成从第一区块到第二区块的运动矢量来标识基准区块的至少一部分。例如,使用基于块的编码,运动矢量可以从第一区块的块到第二区块的基准块。块可以是帧或图片的宏块(mb)、编码树单元(ctu)、编码单元(cu)、预测单元(pu)或其他基于块的分区。在一些情况下,运动矢量可以是从第二区块到第一区块。例如,使用基于块的编码,运动矢量可以是从第二区块的基准块到第一区块的块。在一些情况下,可以生成多个运动矢量,其中每个运动矢量指向不同的基准区块(或基准区块的块)。在一些示例中,第一区块和第二区块来自第一纹理图像。在一些示例中,第一区块来自第一纹理图像,并且第二区块来自第二纹理图像。在一些情况下,可以使用区块内预测来编码子序列的第一区块,而可以使用区块间预测来编码子序列的其他区块。在一些实施方式中,针对有序区块的序列生成多个编码视频。在一个示例中,多个编码视频中的第一编码视频具有与多个编码视频中的第二编码视频不同的比特率、不同的帧速率或不同的段大小(或其任何组合)。可以根据客户端设备的网络条件和限制(例如,计算和/或存储器限制),将这两个视频作为选项提供给客户端设备。过程900还可以包括传送编码视频以供客户端设备解码。在一些情况下,过程900可以将转换函数应用于第一多个区块中的一个或多个区块。如上所述,可以应用转换函数来修改一个或多个区块的像素(例如,通过镜像区块、扭曲(warping)或解扭曲(unwarping)区块等)。在一些示例中,当对一个或多个区块进行编码时,使用转换函数修改一个或多个区块的像素增加了编码效率。例如,使用转换函数修改一个或多个区块的像素可以增加一个或多个区块的像素与一个或多个区块的其他像素之间的相似性。在一些示例中,过程900可以包括生成包括针对第一多个区块的上下文数据的数据文件。第一区块的上下文数据可以包括区块标识符、与第一区块相关联的纹理图像的标识、第一区块在纹理图像内的位置和/或转换函数的指示或其任何组合。图10是图示使用本文中描述的技术中的一种或多种技术从视频重构一个或多个纹理图像的过程1000的示例的流程图。在框1002处,过程1000包括获得解码视频的至少一部分,该解码视频包括被排序成有序区块的序列的第一多个区块。例如,解码器可以获得编码纹理视频,并且可以对编码纹理视频进行解码以生成解码视频的至少一部分。解码视频的至少一部分可以包括编码纹理视频的一个或多个子序列。第一多个区块与被配置为用于应用于第一三维网格的第一纹理图像相关联。例如,第一纹理图像可以包括漫反射纹理图像、反射率纹理图像、法线纹理图像、位移纹理图像、ao纹理图像、遮罩纹理图像、粗糙度纹理图像、光泽度纹理图像或可以应用于三维网格以向网格添加详细性质的任何其他类型的纹理图像。在一些示例中,第一多个区块具有统一的区块大小。在一些情况下,将第一多个区块排序成有序区块的序列以最大化压缩效率。例如,可以基于第一多个区块之间的相似性将第一多个区块排序成有序区块的序列。在一些方面,以使需要下载以获得第一纹理图像的视频段的数目最小化的顺序将第一多个区块排序成有序区块的序列。例如,如上面关于图5d和图5e所描述的,有序区块的序列可以包括第一子序列和第二子序列。第一子序列可以包括来自第一多个区块的第一组区块,并且第二子序列可以包括来自第一多个区块的第二组区块。在一些示例中,解码视频的至少一部分可以包括与多个纹理图像相关联的区块。例如,解码视频的至少一部分还可以包括第二多个区块。第二多个区块与第二纹理图像相关联,该第二纹理图像被配置为用于应用于第一三维网格或第二三维网格中的至少一个三维网格。例如,第二纹理图像可以包括漫反射纹理图像、反射率纹理图像、法线纹理图像、位移纹理图像、ao纹理图像、遮罩纹理图像、粗糙度纹理图像、光泽度纹理图像或可以应用于三维网格以向网格添加详细性质的任何其他类型的纹理图像。在一些情况下,第一纹理图像的第一分辨率和第二纹理图像的第二分辨率是不同的分辨率,并且第一多个区块和第二多个区块具有统一的区块大小。与通常的视频不同,第一纹理图像和第二纹理图像在时间上是独立的,第一多个区块中的每个区块在时间上与第一多个区块中的其他区块独立,并且第二多个区块的每个区块在时间上与第二多个区块中的其他区块独立。在一些实施方式中,以使需要下载以获得第一纹理图像和第二纹理图像的视频段的数目最小化的顺序,将第一多个区块和第二多个区块排序成有序区块的序列。在一些示例中,有序区块的序列包括第一子序列和第二子序列。例如,第一子序列可以包括来自第一多个区块的第一组区块,并且第二子序列可以包括来自第一多个区块的第二组区块。在一些情况下,有序区块的序列包括第三子序列和第四子序列。例如,第三子序列可以包括来自第二多个区块的第一组区块,并且第四子序列可以包括来自第二多个区块的第二组区块。如关于图5d和图5e所描述的,还可以确定用于其他纹理图像区块的子序列。如下面关于编码设备1200(图12)和解码设备1300(图13)更详细地描述的,可以通过利用有序区块的序列中的区块之间的相似性来获得解码视频。在一些示例中,可以执行运动补偿(例如,使用区块间预测),并且在一些情况下,可以执行区块内预测来对区块进行编码。例如,可以使用第二区块作为基准区块,基于第一区块的区块间预测来生成解码视频的至少一部分。可以使用从第一区块到第二区块的运动矢量来标识基准区块的至少一部分。例如,使用基于块的编码,运动矢量可以是从第一区块的块到第二区块的基准块。在一些情况下,运动矢量可以是从第二区块到第一区块。例如,使用基于块的编码,运动矢量可以是从第二区块的基准块到第一区块的块。在一些情况下,可以生成多个运动矢量,其中每个运动矢量指向不同的基准区块(或基准区块的块)。在一些情况下,第一区块和第二区块来自第一纹理图像。在一些情况下,第一区块来自第一纹理图像,并且第二区块来自第二纹理图像。在一些方面,针对有序区块的序列生成多个编码视频(例如,如上所述的表示(representation))。在一个示例中,多个编码视频中的第一编码视频具有与多个编码视频中的第二编码视频不同的比特率、不同的帧速率或不同的段大小(或其任何组合)。过程1000可以基于网络条件和客户端设备的限制(例如,计算和/或存储器限制)来选择视频中的一个视频作为下载和解码的选项。例如,过程1000可以包括:基于与网络相关联的至少一个或多个网络条件,通过网络接收第一编码视频的一部分或第二编码视频的一部分中的至少一个。可以基于与网络相关联的至少一个或多个网络条件来选择第一编码视频。在一些情况下,进一步基于客户端设备的物理资源、基于客户端设备的应用、其组合或基于其他因素,来接收第一编码视频的一部分或第二编码视频的一部分中的至少一个。例如,可以进一步基于客户端设备的物理资源和客户端设备的应用(例如,游戏应用、电影应用等)来选择第一编码视频。在框1004处,过程1000包括获得与解码视频的至少一部分相关联的数据文件。数据文件包括将第一多个区块映射到第一纹理图像的上下文数据。例如,针对第一多个区块中的区块的上下文数据可以包括区块标识符、与区块相关联的纹理图像的标识、区块在纹理图像内的位置和/或转换函数的指示或其任何组合。转换函数被配置为修改第一多个区块中的一个或多个区块的像素。例如,过程1000可以包括将逆转换函数应用于第一多个区块中的区块的像素。逆转换函数可以包括在数据文件中针对区块指示的转换函数的逆。在框1006处,过程1000包括基于将第一多个区块映射到第一纹理图像的上下文数据来重构第一纹理图像。例如,可以根据由数据文件提供的映射,通过将解码区块缝合在一起来重构第一纹理图像。在一些示例中,过程900和1000可以由计算设备或装置(诸如具有图14中所示的计算设备架构1400的计算设备)执行。在一个示例中,过程900可以由具有实施纹理图像排序系统400的计算设备架构1400的计算设备执行。在另一示例中,过程1000可以由具有实施纹理图像重构系统700的计算设备架构1400的计算设备执行。用于执行过程900和/或过程1000的计算设备可以包括任何合适的设备,诸如个人计算机、平板计算机、移动设备(例如,蜂窝电话、智能手机、可穿戴设备等)、游戏系统或控制台、电视(例如,网络连接的电视)、服务器和/或具有执行过程1500的资源能力的其他计算设备。在一些情况下,计算设备或装置可以包括各种组件,诸如一个或多个输入设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机、一个或多个输出设备和/或被配置为执行过程900和1000的步骤的其他组件。计算设备可以进一步包括被配置为通信和/或接收数据的网络接口。网络接口可以被配置为通信和/或接收基于因特网协议(ip)的数据或其他类型的数据。在一些示例中,计算设备或装置可以包括用于显示3d内容或其他合适内容的显示器。可以在电路中实施计算设备的组件。例如,组件可以包括和/或可以使用电子电路或其他电子硬件(可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(gpu)、数字信号处理器(dsp)、中央处理单元(cpu)和/或其他合适的电子电路))来实施,和/或可以包括和/或使用计算机软件、固件或其任何组合来实施,以执行本文描述的各种操作。计算设备还可以包括显示器(作为输出设备的示例或添加于输出设备)、被配置为通信和/或接收数据的网络接口、其任何组合和/或其他组件。网络接口可以被配置为通信和/或接收基于因特网协议(ip)的数据或其他类型的数据。过程900和1000被图示为逻辑流程图,其操作表示可以以硬件、计算机指令或其组合来实施的操作的序列。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时执行所叙述的操作。通常,计算机可执行指令包括执行特定功能或实施特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被理解成限制,并且任何数目的所描述的操作可以以任何顺序组合和/或并行以实施过程。另外,过程900和1000可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实施成代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用),代码通过硬件或其组合在一个或多个处理器上共同执行。如上所述,代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读或机器可读存储介质上。计算机可读或机器可读存储介质可以是非暂态的。图12是图示可以用于将有序区块的序列1250编码成编码纹理视频1273的示例编码设备1200的框图。编码设备1200可以如同任何其他视频帧一样对有序区块的序列进行编码。例如,编码设备1200可以执行视频切片内的视频块1253的区块内预测和运动补偿(例如,使用区块间预测)编码。由提供给编码设备1200的有序区块的序列生成视频块1253和视频切片。在一些情况下,对子序列的第一区块执行区块内预测并且可以对子序列的所有其他区块执行运动补偿(例如,使用区块间预测)。区块内预测至少部分依赖于空间预测以减少或去除给定视频帧或图片内的空间冗余。区块间预测至少部分地依赖于时间预测以减少或去除视频序列的相邻或周围帧内的时间冗余。帧内模式(i模式)可以指代几种基于空间的压缩模式中的任何一种。诸如单向预测(p模式)或双向预测(b模式)的区块间模式可以指代几种基于时间的压缩模式中的任何一种。仅出于说明性目的,由编码设备1200和解码设备1300执行的示例编码和解码过程是基于高效视频编码(hevc)。本领域技术人员将理解,应用于有序区块的序列的编码和解码技术可以是基于任何类型的视频编码。视频编码技术的其他说明性示例可以是基于itu-th.261(iso/iecmpeg-1visual)、itu-th.262(iso/iecmpeg-2visual)、itu-th.263(isoiso/iecmpeg-4visual)、itu-th.264(iso/iecmpeg-4avc)、包括avc的可伸缩视频编码(svc)和多视图视频编码(mvc)扩展、通用视频编码(vvc)和/或正在开发或将要开发的其他视频编码标准。编码设备1200包括分区引擎1252、预测处理引擎1254、滤波引擎1270、图片存储器1272、残差生成引擎1256、转换处理引擎1258、量化引擎1260和熵编码引擎1262。预测处理引擎1254可以包括运动估计引擎、运动补偿引擎和区块内预测处理引擎。对于视频块重构,编码设备1200还包括逆量化引擎1264、逆转换处理引擎1266和块重构引擎1268。滤波引擎1270可以表示一个或多个环路滤波器。如图12中所示,编码设备1200接收有序区块的序列(作为视频数据),并且分区引擎1252将数据划分成视频块1253。分区还可以包括划分成切片、切片段、区块或其他更大的引擎,以及视频块分区(例如,根据lcu和cu的四叉树结构)。编码设备1200一般地图示了对将被编码的视频切片内的视频块1253进行编码的组件。切片可以被划分成多个视频块1253。预测处理引擎1254可以基于误差结果(例如,编码率和失真的水平等),为当前视频块选择多个可能的编码模式中的一个编码模式,诸如多个区块内预测编码模式中的一个或多个区块间预测编码模式中的一个。预测处理引擎1254可以将所得的区块内或区块间编码块提供给残差生成引擎1256,以生成残差块1257(包括残差块数据),并且将其提供给块重构引擎1268以重构编码块以用作基准图片。预测处理引擎1254内的区块内预测处理引擎可以相对于与要编码的当前块相同的帧或切片中的一个或多个相邻块,执行对当前视频块的区块内预测编码,以提供空间压缩。预测处理引擎1254内的运动估计引擎和运动补偿引擎相对于一个或多个基准图片中的一个或多个预测块,执行当前视频块的区块间预测编码,以提供时间压缩。在一些情况下,对子序列的第一区块执行区块内预测,并且可以对子序列的所有其他区块执行区块间预测。例如,编码视频比特流可以是一连串的一个或多个编码视频序列,其中编码视频序列(cvs)包括一连串的存取单元(au),该一连串的存取单元(au)从在基础层中具有随机存取点(rap)图片并且具有某些性质的au开始,直到并且不包括在基础层中具有随机存取点(rap)图片并且具有某些性质的下一个au。存取单元(au)包括一个或多个编码图片和控制信息,该控制信息与共享相同输出时间的编码图片相对应。图片的编码切片在比特流级别中被封装成被称为网络抽象层(nal)单元的数据单元。在本文中可以类似地使用cvs和子比特流,两者都指代视频比特流的可独立下载和可解码的部分。运动估计引擎可以被配置为根据视频序列的预先确定的模式来确定视频切片的区块间预测模式。预定模式可以将序列中的视频切片指定为p切片、b切片或gpb切片。运动估计引擎和运动补偿引擎可以是高度集成的,但出于概念目的被分离地图示。由运动估计引擎执行的运动估计是生成运动矢量的过程,该运动矢量估计视频块的运动。运动矢量例如可以指示当前视频帧或图片内的视频块的预测单元(pu)相对于基准图片内的预测块的位移。预测块是在像素差方面被发现与待编码的视频块的pu紧密匹配的块,像素差可以由绝对差之和(sad)、平方差之和(ssd)或其他差异度量确定。在一些示例中,编码设备1200可以计算用于存储在图片存储器1272中的基准图片的子整数像素位置的值。例如,编码设备1200可以对四分之一像素位置的值、八分之一像素位置的值或基准图片的其他分数像素位置的值进行内插。因此,运动估计引擎可以相对于全部像素位置和分数像素位置执行运动搜索,并以分数像素精度输出运动矢量。运动估计引擎可以通过将pu的位置与基准图片的预测块的位置进行比较,来计算用于区块间编码切片中的视频块的pu的运动矢量。可以从第一基准图片列表(list0)或第二基准图片列表(list1)选择基准图片,它们均标识存储在图片存储器1272中的一个或多个基准图片。运动估计引擎将所计算的运动矢量发送给熵编码引擎1262和运动补偿引擎。由运动补偿引擎执行的运动补偿可以涉及基于由运动估计确定的运动矢量来获取或生成预测块,可能对子像素精度执行内插。在接收到用于当前视频块的pu的运动矢量时,运动补偿引擎就可以在基准图片列表中定位运动矢量指向的预测块。编码设备1200通过从正被编码的当前视频块的像素值减去预测块的像素值来形成残差块1257,从而形成像素差值。像素差值形成用于该块的残差数据,并且可以包括亮度差分量和色度差分量。残差生成引擎1256表示执行该减法运算以生成残差块1257的一个或多个组件。运动补偿引擎还可以生成语法1255中包括的语法元素。语法元素与视频块和视频切片相关联,并且可以由解码设备1300使用来解码视频切片的视频块。如上所述,区块内预测处理引擎可以对当前块进行区块内预测,以作为由运动估计引擎和运动补偿引擎执行的区块间预测的备选。特别地,区块内预测处理引擎可以确定用于编码当前块的区块内预测模式。在一些示例中,区块内预测处理引擎可以使用各种区块内预测模式(例如,在单独的编码遍历(pass)期间)对当前块进行编码,并且区块内预测引擎处理可以从测试模式选择合适的区块内预测模式来使用。例如,区块内预测处理引擎可以使用针对各种测试的区块内预测模式的速率-失真分析来计算速率-失真值,并且可以在测试模式中选择具有最佳速率-失真特性的区块内预测模式。速率-失真分析通常确定编码块与原始的未编码的块(其被编码以生成该编码块)之间的失真(或误差)的量,以及确定用于产生编码块的比特率(即比特的数目)。区块内预测处理引擎可以根据各种编码块的失真和速率来计算比率,以确定哪个区块内预测模式表现出该块的最佳速率-失真值。在任何情况下,在为块选择区块内预测模式之后,区块内预测处理引擎可以将指示针对该块的所选择的区块内预测模式的信息提供给熵编码引擎1262。熵编码引擎1262可以对指示所选择的区块内预测模式的信息进行编码。编码设备1200可以在所传送的比特流配置数据中包括:用于各种块的编码上下文的限定,以及最可能的区块内预测模式的指示、针对上下文中的每个上下文使用的区块内预测模式索引表和经修改的区块内预测模式索引表。比特流配置数据可以包括多个区块内预测模式索引表和多个经修改的区块内预测模式索引表。在预测处理引擎1254经由区块间预测或区块内预测生成针对当前视频块的预测块之后,编码设备1200通过从当前视频块减去预测块来形成残差视频块。残差块中的残差视频数据可以被包括在一个或多个转换单元(tu)中,并且可以被应用于转换处理引擎1258。转换处理引擎1258使用转换(诸如离散余弦转换(dct)或概念上类似的转换)将残差视频数据转换成残差转换系数。转换处理引擎1258可以将残差视频数据从像素域转换到诸如频域的转换域。转换处理引擎1258可以将所得的转换系数发送到量化引擎1260。量化引擎1260对转换系数进行量化以进一步降低比特率。量化引擎1260的输出包括量化转换系数1261。量化过程可以减少与一些或所有系数相关联的比特深度。可以通过调整量化参数来修改量化的程度。在一些示例中,量化引擎1260(或者在一些情况下,熵编码引擎1262)然后可以执行对包括量化转换系数1261的矩阵的扫描。在量化之后,熵编码引擎1262对量化转换系数1261进行熵编码。例如,熵编码引擎1262可以执行上下文自适应可变长度编码(cavlc)、上下文自适应二进制算术编码(cabac)、基于语法的上下文自适应二进制算术编码(sbac)、概率区间分区熵(pipe)编码或另一种熵编码技术。熵编码引擎1262还可以对用于正被编码的当前视频切片的运动矢量和其他语法元素进行熵编码。在由熵编码引擎1262进行熵编码之后,经编码的比特流可以被传送到解码设备1300,或者可以被存储以供以后由解码设备1300传输或取回。逆量化引擎1264和逆转换处理引擎1266可以分别应用逆量化和逆转换,以重构像素域中的残差块(被称为重构残差块1267),以供以后用作基准图片的基准块。运动补偿引擎可以通过将残差块添加到基准图片列表内的基准图片中的一个基准图片的预测块来计算基准块。运动补偿引擎还可以将一个或多个内插滤波器应用于重构残差块,以计算用于运动估计中的子整数像素值。块重构引擎1268将重构残差块添加到由运动补偿引擎产生的经运动补偿的预测块,以产生重构视频块。由块重构引擎1268生成多个重构视频块1269。重构视频块可以被用作基准块,以存储在图片存储器1272中。基准块可以被运动估计引擎和运动补偿引擎用作基准块以对随后的视频帧或图片中的块进行区块间预测。以这种方式,图12的编码设备1200表示被配置为执行本文描述的一个或多个过程的至少一部分的视频编码器的示例。例如,编码设备1200可以执行本文描述的任何技术,包括上面关于图9和图10描述的过程的一部分。图13是图示解码设备1300的示例的框图。解码设备1300包括熵解码引擎1372、预测处理引擎1378、逆量化引擎1374、逆转换处理引擎1376、块重构引擎1380、滤波引擎1382和图片存储器1384。预测处理引擎1378可以包括运动补偿引擎和区块内预测处理引擎。在一些示例中,解码设备1300可以执行通常与关于根据图12的编码设备1200描述的编码遍历互逆的解码遍历。在解码过程期间,解码设备1300接收包括经编码的有序区块的序列的编码纹理视频1371。编码纹理视频1371包括由编码设备1200发送的编码视频切片的视频块和相关联的语法元素(在语法1255中)。在一些示例中,解码设备1300可以从编码设备1200接收编码纹理视频1371。在一些示例中,解码设备1300可以从诸如服务器或其他这种设备的网络实体接收编码纹理视频1371。解码设备1300的熵解码引擎1372对比特流进行熵解码以生成量化系数1373、运动矢量和其他语法元素(被包括在语法1375中)。熵解码引擎1372将运动矢量和其他语法元素转发到预测处理引擎1378。解码设备1300可以在视频切片级别和/或视频块级别接收语法元素。熵解码引擎1372可以处理或解析一个或多个参数集中的固定长度语法元素和可变长度语法元素。当视频切片被编码为区块内编码(i)切片时,预测处理引擎1378的区块内预测处理引擎可以基于信号通知的区块内预测模式和来自当前帧或图片的之前解码块的数据,来生成当前视频切片的视频块的预测数据。当视频帧被编码为区块间编码(例如,b、p或gpb)切片时,预测处理引擎1378的运动补偿引擎基于运动矢量和从熵解码引擎1372接收的其他语法元素,产生当前视频切片的视频块的预测块。预测块可以从基准图片列表中的基准图片中的一个基准图片生成。解码设备1300可以基于存储在图片存储器1384中的基准图片,使用默认构造技术来构造基准帧列表(list0和list1)。运动补偿引擎通过解析运动矢量和其他语法元素来确定当前视频切片的视频块的预测信息,并且使用该预测信息来产生针对正被解码的当前视频块的预测块。例如,运动补偿引擎可以使用参数集中的一个或多个语法元素来确定:用于对视频切片的视频块进行编码的预测模式(例如,区块内或区块间预测)、区块间预测切片类型(例如,b切片、p切片或gpb切片)、切片的一个或多个基准图片列表的构造信息、切片的每个区块间编码视频块的运动矢量、切片的每个区块间编码视频块的区块间预测状态和其他信息,以解码当前视频切片中的视频块。运动补偿引擎还可以基于一个或多个内插滤波器来执行内插。运动补偿引擎可以使用在视频块的编码期间由编码设备1200使用的内插滤波器来计算基准块的子整数像素的插值。在一些情况下,运动补偿引擎可以从所接收的语法元素确定由编码设备1200使用的内插滤波器,并且可以使用内插滤波器来产生预测块。逆量化引擎1374对在比特流中提供并且由熵解码引擎1372解码的量化转换系数进行逆量化(也被称为去量化)。逆量化过程可以包括使用由编码设备1200为视频切片中的每个视频块计算的量化参数,来确定量化的程度并且同样地确定应当应用的逆量化的程度。逆转换处理引擎1376将逆转换(例如,逆dct或其他合适的逆转换)、逆整数转换或概念上类似的逆转换过程应用于转换系数,以便在像素域中产生残差块1377。在运动补偿引擎基于运动矢量和其他语法元素生成针对当前视频块的预测块之后,解码设备1300通过将来自逆转换处理引擎1376的残差块与由运动补偿引擎生成的对应预测块相加,来形成解码视频块。块重构引擎1380表示执行该相加操作的一个或多个组件。如果需要,还可以使用环路滤波器(在编码循环中或在编码循环之后)来平滑像素过渡,或以其他方式改善视频质量。滤波引擎1382旨在表示一个或多个环路滤波器。尽管滤波引擎1382在图13中被示为在环路滤波器中,但是在其他配置中,滤波引擎1382可以被实施成后环路滤波器。经解码的视频块构成解码区块,解码区块表示有序区块的解码序列1383。然后,给定帧或图片中的解码视频块被存储在图片存储器1384中,图片存储器1384存储用于后续运动补偿的基准图片。图片存储器1384还存储解码视频以供稍后在显示设备上呈现。以这种方式,图13的解码设备1300表示被配置为执行上述一个或多个过程的视频解码器的示例。例如,解码设备1300可以执行本文描述的任何技术,包括上面关于图9和图10描述的过程的一部分。图14示出了可以实施本文描述的各种技术的示例计算设备的示例计算设备架构1400。例如,计算设备架构1400可以实施图4中所示的纹理图像排序系统400。在另一示例中,计算设备架构1400可以实施图7中所示的纹理图像重构系统700。计算设备架构1400的组件被示为使用诸如总线的连接1405与彼此电通信。示例计算设备架构1400包括处理单元(cpu或处理器)1410和计算设备连接1405,计算设备连接1405将各种计算设备组件(包括计算设备存储器1415,诸如只读存储器(rom)1420和随机存取存储器(ram)1425))耦合到处理器1410。计算设备架构1400可以包括与处理器1410直接连接、紧密相邻或作为处理器1410的一部分的高速存储器的高速缓存。计算设备架构1400可以将数据从存储器1415和/或存储设备1430复制到高速缓存1412以供处理器1410快速访问。以这种方式,高速缓存可以提供性能提升,其避免了处理器1410在等待数据时的延迟。这些模块和其他模块可以被控制或配置为控制处理器1410执行各种动作。其他计算设备存储器1415也可以可用。存储器1415可以包括具有不同性能特性的多种不同类型的存储器。处理器1410可以包括任何通用处理器和硬件或软件服务(诸如存储在存储设备1430中的服务11432、服务21434和服务31436),该软件服务被配置为控制处理器1410以及专用处理器,其中软件指令被合并到处理器设计中。处理器1410可以是包含多个核或处理器、总线、存储器控制器、高速缓存等的独立系统。多核处理器可以是对称的或非对称的。为了使用户能够与计算设备架构1400进行交互,输入设备1445可以表示任何数目的输入机构,诸如用于语音的麦克风、用于手势或图形输入的触敏屏幕、键盘、鼠标、运动输入、语音等。输出设备1435还可以是本领域技术人员已知的许多输出机构中的一个或多个,诸如显示器、投影仪、电视、扬声器设备等。在一些情况下,多模式计算设备可以使用户能够提供多种类型的输入以与计算设备架构1400通信。通信接口1440通常可以支配和管理用户输入和计算设备输出。对于在任何特定硬件装置上的操作没有限制,并且因此在开发它们时,这里的基本特征可以被轻松地替换为改进的硬件或固件装置。存储设备1430是非易失性存储器,并且可以是硬盘或其他类型的计算机可读介质,其可以存储可由计算机访问的数据,诸如磁带、闪存卡、固态存储器设备、数字通用磁盘、盒式磁带、随机存取存储器(ram)1425、只读存储器(rom)1420及其混合。存储设备1430可以包括用于控制处理器1410的服务1432、1434、1436。可以预期其他硬件或软件模块。存储设备1430可以连接到计算设备连接1405。一方面,执行特定功能的硬件模块可以包括存储在计算机可读介质中的软件组件,该软件组件与诸如处理器1410、连接1405、输出设备1435等的必要硬件组件连接以执行功能。为了解释清楚,在一些情况下,本技术可以被呈现为包括各个功能块,该各个功能块包括多个功能块,多个功能块包括设备、设备组件、以软件体现的方法中的步骤或例程,或硬件和软件的组合。在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的电缆或无线信号。然而,当提及时,非暂态计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身的介质。可以使用存储在计算机可读介质中或以其他方式从计算机可读介质中可用的计算机可执行指令,来实施根据上述示例的方法和过程。这种指令可以包括例如导致或以其他方式配置通用计算机、专用计算机或处理设备以执行某个功能或功能组的指令和数据。所使用的计算机资源的一部分可通过网络访问。计算机可执行指令可以是例如二进制、中间格式指令(诸如汇编语言)、固件、源代码等。可以用于存储指令、所使用的信息和/或在根据所描述的示例的方法期间创建的信息的计算机可读介质的示例包括:磁盘或光盘、闪存、提供有非易失性存储器的usb设备、网络存储设备等。实施根据这些公开的方法的设备可以包括硬件、固件和/或软件,并且可以采用各种形状因数(formfactor)中的任何一种。这种形状因数的通常示例包括膝上型计算机、智能电话、小型形状因数的个人计算机、个人数字助理、机架安装设备、独立设备等。本文描述的功能也可以被实施在外围设备或附加卡中。作为另外的示例,这种功能还可以被实施在不同芯片中的电路板上或被实施在单个设备中执行的不同过程上。指令、用于传达这种指令的介质、用于执行它们的计算资源以及用于支持这种计算资源的其他结构是用于提供本公开中描述的功能的示例部件。在前面的描述中,参考本申请的特定实施例描述了本申请的各方面,但是本领域技术人员将认识到,本申请不限于此。因此,尽管本文详细描述了本申请的说明性实施例,但是应当理解,本发明概念可以以其他方式被不同地实施和采用,并且所附权利要求旨在被解释为包括这种变型,除了受现有技术限制之外。可以单独或联合使用上述申请的各种特征和方面。此外,在不脱离本说明书的更广泛的精神和范围的情况下,可以在除了本文描述的环境和应用之外的任何数目的环境和应用中利用实施例。因此,说明书和附图被认为是说明性的而不是限制性的。出于说明的目的,以特定顺序描述了方法。应当理解,在备选实施例中,可以以与所描述的顺序不同的顺序来执行方法。本领域技术人员将理解,本文中使用的小于(“<”)和大于(“>”)符号或术语可以分别被替换为小于或等于(“≤”)和大于或等于(“≥”),而不脱离本描述的范围。在组件被描述为“被配置为”执行某些操作的情况下,可以例如通过设计用于执行该操作的电子电路或其他硬件、通过将可编程电子电路(例如,微处理器或其他合适的电子电路)编程成执行该操作或其任何组合,来实现这种配置。短语“耦合到”指代任何组件直接或间接物理连接到另一个组件,和/或任何组件直接或间接与另一个组件通信(例如,通过有线或无线连接和/或其他适当的通信接口连接到另一个组件)。叙述集合“中的至少一个”和/或集合“中的一个或多个”的声明语言或其他语言指示该集合中的一个成员或该集合中的多个成员(任何组合)满足该权利要求。例如,叙述“a和b中的至少一个”的声明语言表示a、b或a和b。在另一示例中,叙述“a、b和c中的至少一个”的声明语言表示a、b、c,或a和b,或a和c,或b和c,或a和b和c。语言集合“中的至少一个”和/或集合“中的一个或多个”不将该集合限制为集合中列出的项目。例如,叙述“a和b中的至少一个”的声明语言可以表示a、b,或a和b,并且可以附加地包括未在a和b的集合中列出的项目。结合本文公开的实施例描述的各种说明性的逻辑块、模块、电路和算法步骤可以被实施成电子硬件、计算机软件、固件或其组合。为了清楚地说明硬件和软件的这种可互换性,上面已经大体上根据其功能描述了各种说明性的组件、块、模块、电路和步骤。这种功能性被实施成硬件还是软件取决于特定的应用和施加在整个系统上的设计约束。本领域技术人员可以针对每个特定应用以各种方式来实施所描述的功能,但是这种实施决定不应当被解释为导致脱离本申请的范围。本文描述的技术还可以以电子硬件、计算机软件、固件或其任何组合来实施。这种技术可以在各种设备中的任何一种中实施,各种设备诸如是通用计算机、无线通信设备手持机或具有多种用途(包括在无线通信设备手持机和其他设备中的应用)的集成电路设备。被描述为模块或组件的任何特征都可以在集成逻辑设备中一起实施,或者分离地作为分立但可互操作的逻辑设备实施。如果以软件实施,则技术可至少部分地由包括程序代码的计算机可读数据存储介质来实现,该程序代码包括指令,指令在被执行时执行上述一种或多种方法。计算机可读数据存储介质可以形成计算机程序产品的一部分,计算机程序产品可以包括封装材料。计算机可读介质可以包括存储器或数据存储介质,诸如随机存取存储器(ram)(诸如同步动态随机存取存储器(sdram))、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)、闪存、磁或光数据存储介质等。附加地或备选地,技术可以至少部分地由计算机可读通信介质来实施,计算机可读通信介质携带或通信处于指令或数据结构的形式的程序代码,并且可以由计算机访问、读取和/或执行,计算机可读通信介质诸如是传播的信号或波。程序代码可以由处理器执行,处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其他等效的集成或离散逻辑电路。这种处理器可以被配置为执行本公开中描述的任何技术。通用处理器可以是微处理器;但是在备选方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以被实施成计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、与dsp核心结合的一个或多个微处理器,或任何其他这种配置。因此,本文所使用的术语“处理器”可以指代任何前述结构、前述结构的任何组合,或适合于实施本文描述的技术的任何其他结构或装置。另外,在一些方面,本文所描述的功能可以被提供在被配置用于编码和解码的专用软件模块或硬件模块内,或被合并在组合的视频编码器-解码器(称为编解码器(codec))中。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1