缓冲器优化 背景技术 [0001] 计算设备的用户可用的功能性在不断增加。这种增加的一个示例是由设备消费和输出视频的能力。为了支持视频的传输和存储,视频经常被压缩,这可以使用各种各样不同的压缩标准(例如,编解码器)来执行,所述压缩标准诸如是SMPTE VC-1、H.264/AVC和HEVC/H.265。编码数据流的安全解码可以由解码器来完成,解码器代表消费应用来执行解码。通常,视频处理和回放消耗了大量的存储器和处理能力。例如,操纵流行和新兴的高分辨率格式(例如1080p和4K)所需的存储器和处理能力可能是相当大的。因此,由于存储器限制和其他方面,具有有限能力的一些低端设备可能不能支持采用这些格式的内容。另外,传统的处理方案可能无法计及在设备和内容类型之间的差异,这会导致在一些情景下的低效处理。 发明内容 [0002] 本文描述了缓冲器优化技术,其中计算设备的图形处理系统被配置成依赖于用来解码和渲染的格式(例如,视频格式、位深度、分辨率、内容类型等)和诸如可用存储器和/或处理能力这样的设备能力,实现用于编码数据流的处理的多个缓冲器方案,并在所述多个缓冲器方案之间进行选择。然后,通过使用缓冲器方案中被选择的那个方案来定义被运用于解码和渲染的缓冲器,发生经由图形处理系统的编码数据流的处理以用于解码和显示。 这可以包括按照所选择的方案针对解码图片缓冲(DPB)和输出图片缓冲(OPB)两者来配置缓冲器的大小。多个方案可以包括:用于当输入格式和输出格式相同时处理编码内容的至少一个缓冲器方案,以及用于当输入格式和输出格式不同时处理编码内容的不同缓冲器方案。 [0003] 本概要被提供来以简化的形式介绍概念的选择,这些概念在以下的详细说明中被进一步描述。本概要既不打算标识所要求保护的主题的关键特征或必要特征,也不打算被用于限制所要求保护的主题的范围。 附图说明 [0004] 图1图示了按照一个或多个实现的示例操作环境。 [0005] 图2是描绘按照一个或多个实现的、可以与计算设备一起提供的图形处理系统的示例细节的图。 [0006] 图3是描述按照一个或多个实现的、用于配置GPU来实现缓冲器方案的示例过程的细节的流程图。 [0007] 图4是描述按照一个或多个实现的、使用所选择的缓冲器方案来分配缓冲器的示例过程的细节的流程图。 [0008] 图5是描述按照一个或多个实现的、将缓冲器方案用于解码和渲染过程的组合管理的示例过程的细节的流程图。 [0009] 图6是按照一个或多个实现的、可被运用于缓冲器优化的系统的框图。 具体实施方式 [0010] 概述 通常,视频处理和回放消耗大量的存储器和处理能力,特别是对于诸如1080p和4K这样的流行和新兴的高分辨率格式,消耗可能是相当大的。因此,具有有限能力的一些低端设备可能不能支持采用这些格式的内容,和/或使用这样的设备而没有缓冲器/表面(surface)优化,处理可能是慢的和/或低效的。 [0011] 本文描述了缓冲器优化技术,其中计算设备的图形处理系统被配置成依赖于用来解码和渲染的格式(例如,视频格式、位深度、分辨率、内容类型等)和诸如可用存储器和/或处理能力这样的设备能力,实现用于编码数据流的处理的多个缓冲器方案,并在所述多个缓冲器方案之间进行选择。然后,使用缓冲器方案中被选择的那个方案来定义被运用于解码和渲染的缓冲器,发生经由图形处理系统的编码数据流的处理以用于显示。这可以包括按照所选择的方案针对解码图片缓冲(DPB)和输出图片缓冲(OPB)两者来配置缓冲器的大小。多个方案可以包括:用于当输入格式和输出格式相同时处理编码内容的至少一个缓冲器方案,以及用于当输入格式和输出格式不同时处理编码内容的不同缓冲器方案。 [0012] 运用本文描述的缓冲器优化技术使得能够进行解码图片缓冲(DPB)和输出图片缓冲(OPB)的组合管理。另外,各种各样不同的缓冲选项或许可用来进行选择,以便为具有不同能力和/或用于在不同上下文中渲染的设备定制体验。在一些情景下,可以通过选择适当的缓冲器方案来减少存储器使用,而对终端用户来说没有视觉视频质量的任何降级。当设备能力支持这样做时,可以选择被设计成有利于涉及资源利用的性能的缓冲器方案。因此,使用不同缓冲方案选项的常见方法可以被使用来跨越具有不同能力、内容格式、位深度和/或处理情景的一系列设备地优化图形处理。 [0013] 在下面的讨论中,提供了标题为“操作环境”的章节,并且该章节描述了在其中可以运用一个或多个实现的一个环境。接下来,标题为“缓冲器优化细节”的章节描述了按照一个或多个实现的示例细节和过程。最后,标题为“示例系统”的章节描述了可以被用来实现一个或多个实现的示例计算系统、组件和设备。 [0014] 操作环境 图1总地在100处图示了根据一个或多个实施例的操作环境。环境100包括计算设备 102,其具有:带有一个或多个处理器和设备(例如,CPU、GPU、微控制器、硬件元件、固定逻辑器件等)的处理系统104、一个或多个计算机可读介质106、操作系统108和驻留在计算机可读介质上并且可由处理系统执行的一个或多个应用110。处理系统104可以从应用110取回并执行计算机程序指令,以向计算设备102提供广泛的功能性,包括但不限于游戏、办公生产力、电子邮件、媒体管理、打印、联网、web浏览等等。还可以包括与应用110相关的各种各样的数据和程序文件,其示例包括游戏文件、办公文档、多媒体文件、电子邮件、数据文件、网页、用户简档和/或偏好数据等等。 [0015] 计算设备102可以被具体化为任何适当的计算系统和/或设备,作为示例而非限制,诸如游戏系统、台式计算机、便携式计算机、平板或板式计算机、比如个人数字助理(PDA)这样的手持计算机、蜂窝电话、机顶盒、可穿戴设备(例如,手表、带子、眼镜等)等。例如,如图1所示,计算设备102可以被实现为连接到显示设备118以显示媒体内容的电视客户端设备112、计算机114和/或游戏系统116。可替换地,计算设备可以是包括集成显示器122的任何类型的便携式计算机、移动电话或便携式设备120。任何的计算设备可以用各种组件以及用不同组件的任何组合来实现,所述组件诸如是一个或多个处理器和存储器设备。在下面相关于图6示出并描述了可以表示各种系统和/或设备(包括计算设备102)的计算系统的一个示例。 [0016] 作为示例而非限制,计算机可读介质可以包括通常与计算设备相关联的所有形式的易失性和非易失性存储器和/或存储介质。这样的介质可以包括ROM、RAM、闪存、硬盘、可拆卸介质等。计算机可读介质可以包括“计算机可读存储介质”和“通信介质”两者,其示例可以在对于图6的示例计算系统的讨论中找到。 [0017] 计算设备102还可以包括与处理系统分离的图形处理单元(GPU)124,其操作来执行与由计算设备输出以供在显示设备118或集成显示器122上显示的图形相关的各种处理。 可替换地,GPU可以与其它硬件(比如CPU)一起被实现为处理系统的组件。GPU124是计算设备的专用于图形处理的硬件组件。由GPU124提供的功能性可以包括控制以下方面:分辨率、像素着色操作、颜色深度、纹理映射、3D渲染以及其他与渲染用于应用的用户界面和图像相关联的任务。这可以包括诸如多边形绘制、位图传送和描绘、窗口尺寸调整和重新定位、线条绘制、字体缩放等处理任务。GPU124或许能够以比经由处理系统104的CPU或其它处理设备执行的软件更高的速度以硬件操纵这些处理任务。因此,GPU124的专用图形处理能力可以加速图形处理,减少处理系统104的工作负荷,并释放系统资源以用于其他任务。GPU124和其它处理硬件(例如,CPU)可以在不同的各自时间线上执行对命令的分开的顺序处理,以用于渲染帧、图形和/或其它处理任务。 [0018] 为了操纵与编码内容相关的处理任务,GPU124可包括或以其它方式利用解码器模块126和渲染模块127。解码器模块126可以表示被配置成提供以下功能性的硬件、软件、固件、固定设备逻辑及其组合,所述功能性即:代表操作系统108和消费编码内容的其他应用 110(例如,“消费应用”)来处理、解码、供应和以其他方式管理编码内容。渲染模块127可以表示被配置成提供以下功能性的硬件、软件、固件、固定设备逻辑及其组合,所述功能性即: 处理由解码器模块126产生的解码内容和/或对其定序(sequencing)以用于比如经由计算设备的显示设备118或集成显示器122来显示。在所描绘的示例中,解码器模块126和渲染模块127被图示为独立的软件模块或硬件组件,然而,这些模块可以替换地被组合在一起,和/或被提供作为GPU的集成硬件组件、OS或其他应用的软件组件、经由任务特定的微处理器提供等等。 [0019] 解码器模块126和渲染模块127可以被进一步配置成实现本文档中描述的用于缓冲器优化的各种操作和技术。为了这样做,如图1所描绘的,解码器模块126可以包括或利用解码缓冲器128,并且渲染模块127可以包括或利用输出缓冲器130。图1中所描绘的缓冲器表示在计算设备102的存储器中可以被分配来帮助处理内容的存储器空间。具体地,缓冲器可以保存用于数据流的视频内容的分组或帧数据,诸如从在线服务访问的电影、DVD、本地存储的视频文件等等。解码缓冲器128被配置成保存与由解码器模块126执行的解码相关联的分组或帧数据,其可以包括用于帧间解码的参考帧数据。输出缓冲器130被配置成保存与渲染模块126执行的渲染相关联的分组或帧数据。 [0020] 缓冲器可以被分配在计算设备102的任何合适的存储器中,包括系统存储器、安全存储器、GPU124的专用存储器等等。虽然被描绘为单独的缓冲器,但是在一些情景下,缓冲器可以被组合在一起和/或可以部分地或完全地重叠。在一个或多个实现中,按照可以从系统支持的多个不同缓冲器方案中动态选择的缓冲器方案来配置和分配缓冲器。缓冲器的配置可以至少包括按照所选择的缓冲器方案来设置缓冲器的大小。关于缓冲器配置和缓冲器优化的其它方面的进一步细节将相关于以下附图进行讨论。 [0021] 环境100还描绘了计算设备102可以经由网络132通信地耦合到服务提供商134,这使得计算设备102能够访问由服务提供商134使之可用的各种资源136并与之交互。资源136可以包括通常由一个或多个服务提供商在网络上使之可用的内容和/或服务的任何适当的组合。例如,内容可以包括文本、视频、广告、音频、多媒体流、动画、图像、网页等的各种组合。服务的一些示例包括但不限于在线计算服务(例如,“云”计算)、认证服务、基于web的应用、文件存储和协作服务、搜索服务、诸如电子邮件和/或即时消息传送的消息传送服务以及社交联网服务。 [0022] 作为示例,计算设备102可以被导航来从服务提供商134处访问和下载编码内容 138。编码内容138可以包括使用某种形式的数字版权管理(DRM)予以保护的视频内容、音乐或其他内容。通常,编码内容138由服务提供商侧的编码器(例如,在分发给客户端之前)使用合适的压缩标准和/或加密格式来编码。然后,可以经由消费侧的解码器进行解码,解码器被配置成识别、支持和操纵对于以一个或多个不同的压缩标准和/或加密格式编码的内容的解码。 [0023] 用于内容的数字版权管理的各种各样合适的压缩标准和/或加密格式可以由编码器和解码器来支持,包括但不限于MPEG-1、MPEG-2、MPEG-4、VP8、SMPTE VC-1、H.264/AVC、H.264/MVC、H.264/SVC、H.2645/HEVC、HEVC/H.265等。因此,根据上文和下文描述的技术,解码器模块126可以被配置成解码使用多个压缩标准(包括本文列举的示例标准中的一个或多个)编码的编码内容138。 [0024] 已经描述了示例操作环境,现在考虑与缓冲器优化的一个或多个实现相关联的示例细节和技术。 [0025] 缓冲器优化细节 图形处理系统 图2总地以200描绘了可按照一个或多个实现与计算设备102一起提供的示例图形处理系统的细节。在本例中,解码器模块126和渲染模块127被图示成实施为GPU124的组件。在实现中,解码器模块126和/或渲染模块127可由与GPU124集成在一起的专用的且安全的硬件组件提供。如先前所提到的,也设想有其它的实现,诸如独立的硬件模块或者在软件、固件或固定逻辑器件中的实现,以及软件、固件、固定逻辑器件和硬件的组合。 [0026] 在本例中,编码内容138的数据流201被表示为由计算设备102接收并且使用图形处理单元124来处理。数据流201可以包括多个个体的分组202,每个分组202可以包含头标(例如元数据)和数据部分。头标被配置成传送关于分组的信息,诸如分组类型、定序数据、设置参数、格式信息、用于编码的压缩标准的指示、关于分组中包含的数据的量和类型的指示以及可与用于解码器、渲染器、GPU和/或消费应用的操作设置相关的其他元数据、字段和参数。分组的数据部分表示内容有效载荷,诸如与视频数据流相关联的视频数据的帧或“片(slice)”,或者与音频流相关联的音频片段(snippet)数据。 [0027] 在操作中,解码器模块126被配置成操纵与数据流201的分组202的解码相关的任务。这可以包括获得并响应来自消费应用的对于访问和利用该内容的一些部分的请求。为了这样做,解码器模块126可以利用解码缓冲器128来执行与解码相关的操作。解码的数据然后可以被提供给渲染模块127,渲染模块127被配置成操纵与渲染内容以用于经由计算设备的显示器输出有关的任务。渲染模块127可以利用输出缓冲器128来准备用于输出的内容、对解码的内容定序并且产生渲染的内容204以用于输出到显示设备。 [0028] 如在图2中表示的,解码器模块126和渲染模块127都可以在缓冲器方案206的影响下操作,缓冲器方案206可以基于各种因素来动态选择。这些因素可以包括但不限于数据流的输入和输出格式(例如,分辨率、编码标准、帧速率、内容类型等)和设备能力,所述设备能力包括但不限于可用于图形处理操作的存储器的量。作为处理编码内容138的一部分,可以从系统所支持的多个缓冲器方案206中做出对缓冲器方案206的选择以便用于所述处理。例如,解码器模块126可以被配置成解析头标和/或具有用于编码内容的位流语法的其他元数据,位流语法指示内容的类型、内容格式、分辨率以及可被用来设立对数据流201的处理和用于所述处理的缓冲器的其他信息。 [0029] 在一个或多个实现中,数据流的位流语法还可以包括对用于处理内容的指定方案的指示。在这种情况下,对指定方案的指示可以被用于标识、选择和设立该指定方案。附加地或替换地,位流语法可以被配置成包含指示解码缓冲器大小和/或输出/渲染缓冲器大小的数据。因此,缓冲器方案206的选择和/或缓冲器的配置可以至少部分地基于对头标和/或其他元数据的解析,以分析位流语法并且提取规定如何为相应的数据流设立缓冲的信息。 [0030] 所选择的缓冲器方案206可被用于组合地管理解码过程和渲染过程。缓冲器方案 206表示可与不同水平的质量、存储器利用和/或处理工作负载相关联的一系列可用选项。 通过如本文所讨论的那样在不同的情景中选择性地应用不同的缓冲器方案,可以针对不同类型的内容和针对具有不同能力的设备来定制质量、存储器利用和/或处理工作负载。例如,在具有足够的存储器和处理能力的高端设备上可以针对质量来优化视频回放。同样,在可能具有有限的存储器和/或处理能力的设备上可以针对存储器使用来优化视频回放。一般来说,缓冲器方案通过针对不同情景来动态地改变缓冲器的配置而使得能进行优化。设想了各种各样不同的缓冲器方案206,其示例在下面讨论。 [0031] 缓冲器方案 如先前所指出的,缓冲器优化技术可以提供各种各样不同的缓冲选项,其或许是可选择来针对具有不同能力的设备和/或针对不同处理上下文而定制缓冲器配置。可以经由设备和/或设备的图形处理系统所支持的一组缓冲器方案206来实现不同的缓冲选项。通过按照所选择的方案来选择性地配置相应的解码缓冲器128和输出缓冲器130,缓冲器方案206可以被选择并被应用于对解码图片缓冲(DPB)和输出图片缓冲(OPB)的组合管理。 [0032] 一般来说,缓冲器方案206可以针对以下两种情景被定义,即其中用于解码的输入格式(例如,DPB)和用于渲染的输出格式(例如,OPB)相同的情景(例如,相同的分辨率、位深度、视频格式、内容的类型)和其中输入格式和输出格式不同的情景。因此,当输入格式和输出格式相同时,或许一种缓冲器方案可用于处理编码内容,而当输入格式和输出格式不同时,或者不同的缓冲器方案可用于处理编码内容。 [0033] 附加地或替换地,在输入格式和输出格式不同的情况下,格式转换可以或者作为解码的一部分或者作为渲染的一部分发生。照这样,可以建立对应于和/或规定在该过程中何时发生格式转换的缓冲器方案206。在该示例中,可以使用三个或更多个缓冲器方案206来覆盖不同的情景。例如,系统支持的缓冲器方案206可以至少包括:第一缓冲器方案,用于当被用于解码和渲染的格式相同时处理编码内容;第二缓冲器方案,用于当被用于解码和渲染的格式不同且格式转换被作为解码的一部分执行时处理编码内容;以及第三缓冲器方案,用于当被用于解码和渲染的格式不同且格式转换被作为渲染的一部分执行时处理编码内容。自然地,所定义的不同缓冲器方案206的数量和类型可以变化,并且不打算受到本文列举的示例的限制。此外,图形处理系统可以被配置成在不同的被支持的缓冲器方案206之间动态切换以便优化不同情景中的处理。如所指出的,对缓冲器方案的选择可以取决于输入格式、输出格式和/或设备能力中的一项或其组合。 [0034] 在所述上下文中,现在考虑关于可以根据本文所描述的技术而运用的不同缓冲器方案的一些附加细节和示例。 [0035] 采用相同格式的DPB和OPB 在具有足够能力的设备(例如,“高端设备”)上,大量的存储器和处理能力或许可用于视频处理。附加地或替换地,输入内容可以具有相对低的分辨率,通过设备的可用存储器和计算能力可足以操纵该输入内容。在这些情况下,可以发生处理以维持最佳可能的质量并避免转换为较低质量格式。换句话说,被用于DPB和OPB的格式被尽可能保持相同。因此,可以建立至少一个缓冲器方案206,其被设计成利用采用相同格式的DPB和OPB来优化缓冲器。 由于格式/分辨率对于输入和输出是相同的,所以可以在存储器中分配公共缓冲器表面,并且将其既用于解码/参考又用于输出/显示。换句话说,在这种情景下,解码缓冲器128和渲染缓冲器130可以部分地或完全地重叠。当然也可以使用分开的缓冲器/表面,但是相对于使用被用于双重目的的公共缓冲器,这样做会使得消耗更多的存储器。 [0036] 对既用于解码和又用于输出的统一缓冲器的管理可以至少部分地经由位流语法来规定,位流语法可以定义解码处理、参考关系、图片重新排序和重新使用以及渲染处理。 位流语法还可以规定可被用于进行如先前所指出的对缓冲器方案的选择的参数。这可以包括但不限于规定要为所述处理分配的缓冲器的大小。可以取决于输入帧/片大小、格式、应用、内容类型等来规定各种不同的缓冲器大小。内容提供者和/或应用开发者可以配置位流语法以控制在解码侧和渲染侧的缓冲的量。仅作为一个说明性示例,针对其中DPB和OPB采用相同格式的情况的缓冲器的分配可以如下地计算: DPB大小+1+(由渲染器/应用持有的帧),其中DPB大小是从位流语法导出的和/或由位流语法规定的,+1是计及当前帧的解码,以及(由渲染器持有的帧)是按照被缓冲用于渲染过程的帧的数量而设置的。 [0037] 采用不同格式的DPB和OPB 在诸如移动设备这样的一些设备上,可用的存储器和硬件能力是有限的。在这种情况下,可以发生处理以优化存储器使用,并且在必要时,比如对于具有高分辨率和/或高位深度的输入内容,可以牵涉到向较低质量格式的转换。换句话说,由于设备能力、当前工作负载和/或用于规定输出分辨率/质量的设置值,用于DPB和OPB的格式可以不同。例如,具有高分辨率和位深度(诸如4K分辨率和10或12位深度)的内容可以被转换成较低分辨率和较低位深度以便在一些设备上显示,诸如被转换成8位深度的720p,或另一种降低的分辨率格式。 [0038] 在一种方法中,使用原始格式(即,原始分辨率和原始位深度)来执行解码处理,以便具有正确且一致的解码。然而,可以使用能显著减少存储器使用和计算的不同格式(诸如降低的分辨率和/或降低的位深度)来执行对用于输出/显示的帧的渲染。再次地,可以取决于输入帧/片大小、格式、应用、内容类型等来规定各种不同的缓冲器大小。被用于设立缓冲器的至少一些参数可以经由位流语法来指示。如所指出的,当用于DPB和OPB的格式不同时的缓冲器的配置可以取决于在处理期间何时进行格式转换。 [0039] 仅作为一个说明性示例,在DPB和OPB采用不同格式的情况下,缓冲器的分配可以如下地计算: 用于DPB的解码缓冲器128的分配被计算为DPB大小+1,其中DPB大小是从位流语法导出的或是由位流语法规定的,而+1是要计及当前帧的解码 当在解码期间进行格式转换时,用于OPB的渲染缓冲器130的分配被计算为DPB大小+1+(由渲染器持有的帧),其中DPB大小是从位流语法导出的或是由位流语法规定的,+1是要计及处理该当前帧,以及(由渲染器持有的帧)是按照被缓冲用于渲染过程的帧的数量而设置的; 当在渲染期间进行格式转换时,用于OPB的渲染缓冲器130的分配被计算为(由渲染器持有的帧),其是按照被缓冲用于渲染过程的帧的数量而设置的。 [0040] 按照前面所述,可以按照对用来选择和设立缓冲的位流语法的分析来确定用于DPB的缓冲器的配置。用于OPB的缓冲器的配置依赖于何时发生格式转换。当在解码期间进行格式转换时,可以按照针对DPB操作的对位流语法的分析以及用于渲染和显示过程的设立信息来确定用于OPB的缓冲器的配置。当在渲染期间进行格式转换时,按照用于渲染过程的设立信息来确定用于OPB的缓冲器的配置。 [0041] 使用本文所描述的缓冲器方案可以达到存储器使用和处理负载的显著减少。例如,相对于在具有高质量视频回放的高端设备上的存储器使用(例如,对于输入和输出使用相同的格式),当在解码期间执行向较低分辨率的格式转换时,对于典型的4K视频回放,存储器使用可以减少大约40%至50%,而当在渲染期间执行格式转换时,存储器使用可以减少大约50%或更多。因此,在渲染和显示时的存储器传送带宽显著地减小。 [0042] 考虑其中通过位流语法将DPB大小设置为4并且为渲染目的分配8个额外缓冲器表面的示例。给定原始分辨率或10位深度的4K,以及1080p和8位深度的降低的分辨率格式,缓冲器分配和大小计算可以如下: 当DPB和OPB采用相同格式时,帧缓冲器被如上指出地计算以分配采用相同格式的(4+1+8)=13个帧缓冲器。这给出了~312MB(例如,13×12×2)的帧缓冲器的总的大小当在解码处进行格式转换时,帧缓冲器被如上指出地计算以分配(4+1)=5个高分辨率缓冲器和(4+1+8)=13个低分辨率缓冲器。这给出189MB(例如,5×12×2+13×3)的帧缓冲器的总的大小。这里,相对于使用相同的格式,存储器使用减少大约40%。 [0043] 当在渲染处进行格式转换时,帧缓冲器被如上指出地计算以分配(4+1)=5个高分辨率缓冲器和8个低分辨率缓冲器。这给出144MB(5×12×2+8×3)的帧缓冲器的总的大小。 这里,相对于使用相同的格式,存储器使用减少约53%。 [0044] 示例过程 为了进一步举例说明,考虑对描绘按照缓冲器优化技术的一个或多个实现的示例过程的流程图的以下讨论。所描绘的(一个或多个)示例过程可以结合任何合适的硬件、软件、固件或其组合来实现。在至少一些实施例中,所述方法可以借助于适当配置的计算设备来实现,所述适当配置的计算设备诸如是图1的示例计算设备102,其包括或以其它方式利用GPU124、解码器模块126和/或渲染模块127。 [0045] 本文档中描述的过程可以利用先前描述的环境、系统、设备和组件并结合任何适当的硬件、软件、固件或其组合来实现。这些过程可以被表示为一组方框,其规定了由一个或多个实体执行的操作,并且不一定限于所示的用于由相应的方框执行操作的顺序。 [0046] 一般而言,相关于本文的示例所描述的功能性、特征和概念可以在本章节中描述的示例过程的上下文中运用。此外,相关于本文档中不同附图和示例所描述的功能性、特征和概念可以在彼此间互换,并且不限于在特定的附图或过程的上下文中实现。此外,与本文中的不同代表性过程和对应附图相关联的方框可以以不同的方式一起被应用和/或组合。 因此,相关于本文中不同示例环境、设备、组件和过程所描述的各个功能性、特征和概念可以以任何适当的组合来使用,并且不限于由本说明书中列举的示例来表示的特定组合。 [0047] 图3是描述按照一个或多个实现的、用于配置GPU以实现缓冲器方案的示例过程 300的细节的流程图。设备的图形处理系统被配置成依赖于被用于解码和渲染的格式以及设备的存储器能力来选择多个缓冲器方案中的一个以用于编码数据流的处理(方框302)。 例如,图形处理系统可以支持如前所述的多个不同的缓冲器方案206。缓冲器方案206可以经由分别对应于解码器模块126和渲染模块127的解码和/或渲染过程来实现。在一个或多个实现中,可经由位流语法或者以其它方式通过被包含于内容流内的数据来指定缓冲器方案的一些方面。不同的缓冲器方案可以取决于被用于解码和渲染的格式、以及设备的存储器能力和/或其它能力。 [0048] 通过使用缓冲器方案中被选择的那个方案来定义用于解码和渲染的缓冲器,经由图形处理系统来处理编码数据流以用于显示(方框304)。作为示例而非限制,解码器模块 126或图形处理系统的其他组件可以操作来基于指示用于解码和渲染的格式的数据和可被收集的关于设备能力的数据来选择缓冲器方案中的一个。解码器模块126然后可以实施所选择的方案,以促成由该方案所规定的用于解码和/或渲染的缓冲器的配置。设想了各种不同的方案,其示例在本文档的各处被讨论。使用按照所选择的方案设立的缓冲器,可以发生用于编码数据流的处理的处理操作,以将数据解码为解码部分、准备并对用于显示的数据定序、以及传送该内容以用于经由显示设备显示。 [0049] 图4是描述按照一个或多个实现的、使用所选择的缓冲器方案来分配缓冲器的示例过程400的细节的流程图。获得编码内容的数据流以用于经由设备显示(方框402)。例如,可以通过网络132从服务提供商134、从与计算设备相关联的存储器、从某种形式的计算机可读介质上的记录等等获得内容。建立用于编码内容的处理的输入格式和输出格式,以使得能够经由设备进行显示(方框404),并且设备的能力被查明(方框406)。如先前所指出的,用于解码和/或渲染的格式可以通过数据流的解析来确定。在一种方法中,这牵涉到头标和/或位流语法的分析,以提取指示要使用的格式、内容类型、缓冲器大小和/或可被运用来设立或选择适当缓冲方案的其它信息的参数。附加地,缓冲器方案的设立或选择可以取决于设备能力,诸如与设备相关联的显示器或显示适配器的类型、可用存储器的量、处理能力等等。在一种方法中,可以通过与设备的操作系统或其他应用的交互来确定设备的能力。在一个实现中,解码器模块126可以维持设备能力的记录,所述记录可以结合通过数据流解析所获得的参数而被使用来选择缓冲器方案并相应地设立缓冲器。 [0050] 具体地,依赖于所建立的输入格式和输出格式以及所查明的设备的能力,从多个可用缓冲器方案中选择要用于编码内容的处理的缓冲器方案(方框408),并且按照所选择的缓冲器方案来分配用于编码内容的处理的缓冲器(方块410)。先前相关于图1到图3讨论了关于基于被支持的方案来在各种方案之间进行选择并且配置缓冲器的细节。一旦分配了缓冲器,则使用所分配的缓冲器来处理编码内容以用于经由设备显示(方框412)。所述处理可以包括由解码器模块126使用解码器缓冲器128对内容进行解码。所述处理还可以包括由渲染模块127使用输出缓冲器对解码的内容进行定序和渲染。如先前所指出的,可以经由显示设备118或集成显示器122呈现所渲染的内容。 [0051] 图5是描述按照一个或多个实现的、使用缓冲器方案来组合地管理解码和渲染过程的示例过程500的细节的流程图。从解码器所支持的多个可用缓冲器方案中选择要用于编码内容的数据流的处理的缓冲器方案,该缓冲器方案规定用于解码和渲染过程的组合管理的参数(方框502)。如先前相关于图1到图4所讨论的,设想了各种缓冲器方案。通常,缓冲器方案206可以被选择并应用于对解码图片缓冲(DPB)和输出图片缓冲(OPB)的组合管理,这比如通过按照所选择的方案来选择性地配置对应的解码缓冲器128和输出缓冲器130来进行。可以针对以下两种情景定义缓冲器方案206,即其中用于解码的输入格式(例如,DPB)和用于渲染的输出格式(例如,OPB)相同的情景(例如,相同的分辨率、视频格式、内容类型),和其中输入格式和输出格式不同的情景。每个缓冲器方案可以规定用于解码和渲染的组合管理的参数。与不同缓冲器方案相关联的参数可以包括对于缓冲器大小和/或在不同输入和输出分辨率之间进行格式转换的不同约束,以及包括使得能够配置缓冲器的其他信息。 [0052] 因此,按照所选择的缓冲器方案为解码图片缓冲器和输出图片缓冲器配置大小(方框504)。可以使用由所选择的缓冲器方案规定的参数以先前描述的方式来配置缓冲器的大小和其它特性。通过利用解码图片缓冲器和输出图片缓冲器进行的处理而对编码内容进行解码和渲染(方框506)。用于解码和渲染的操作可以经由计算设备的处理系统来执行。 在一个或多个实现中,处理系统包括中央处理单元(CPU)和与中央处理单元分离的图形处理单元(GPU)。内容的处理的至少一部分可以经由GPU发生。在一种方法中,GPU可包括或利用解码器模块来执行解码以及可包括或利用渲染模块来执行渲染。解码器模块可以被配置成对使用多种压缩标准来编码的编码内容进行解码,所述压缩标准至少包括H.264/AVC和HEVC/H.265标准。解码器模块和渲染模块中的任一个或两者可以被实现为图形处理单元(GPU)的组件。 [0053] 已经考虑了用于缓冲器优化的示例过程后,考虑对于按照一个或多个实现的示例系统的讨论。 [0054] 示例系统 图6图示了包括示例计算设备602的示例系统600,该示例计算设备602代表可以实现本文描述的各种技术的一个或多个计算系统和/或设备。计算设备602可以是例如服务提供商的服务器、与客户端(例如,客户端设备)相关联的设备、片上系统和/或任何其他适当的计算设备或计算系统。 [0055] 所图示的示例计算设备602包括处理系统604、一个或多个计算机可读介质606和一个或多个彼此通信耦合的I/O接口608。虽然未示出,但是计算设备602还可以包括将各种组件彼此耦合的系统总线或其他数据和命令传送系统。系统总线可以包括不同总线结构中的任何一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种各样总线体系结构中的任一种的处理器或局部总线。还设想了各种各样的其他示例,诸如控制和数据线。 [0056] 处理系统604代表使用硬件来执行一个或多个操作的功能性。因此,处理系统604被图示为包括硬件元件610,其可以被配置为处理器、功能块等。这可以包括以硬件实现为使用一个或多个半导体形成的专用集成电路或其它逻辑器件。硬件元件610不受形成它们的材料或其中运用的处理机制的限制。例如,处理器可以包括(一个或多个)半导体和/或晶体管(例如,电子集成电路(IC))。在这样的上下文中,处理器可执行指令可以是电子地可执行的指令。 [0057] 计算机可读介质606被图示为包括存储器/存储装置612。存储器/存储装置612表示与一个或多个计算机可读介质相关联的存储器/存储装置容量。存储器/存储装置612可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置612可以包括固定介质(例如,RAM、ROM、固定硬驱动器等)以及可拆卸介质(例如,闪存、可拆卸硬驱动器、光盘等)。计算机可读介质606可以以各种各样其他方式来配置,正如下面进一步描述的。 [0058] (一个或多个)输入/输出接口608代表允许用户向计算设备602输入命令和信息、并且还允许使用各种输入/输出设备向用户和/或其他组件或设备呈现信息的功能性。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、用于话音操作的麦克风、扫描仪、触摸功能性(例如,被配置成检测物理触摸的电容或其它传感器)、相机(例如,其可以运用可见的或比如红外频率这样的不可见波长来将不牵涉到触摸的移动检测为手势)等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备602可以以下面进一步描述的各种各样的方式被配置来支持用户交互。 [0059] 在本文中,可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。通常,这样的模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、组件、数据结构等。当在本文中使用时,术语“模块”、“功能性”和“组件”通常表示软件、固件、硬件或其组合。本文所描述的技术的特征是与平台无关的,这意味着这些技术可以在具有各种各样处理器的各种各样商品化计算平台上实现。 [0060] 所描述的模块和技术的实现可以被存储在某种形式的计算机可读介质上,或跨越其被传送。计算机可读介质可以包括可由计算设备602访问的各种各样的介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“通信介质”。 [0061] 与仅仅信号传输、载波或信号本身相反,“计算机可读存储介质”是指使得能够存储信息的介质和/或设备。因此,计算机可读存储介质不包括信号承载介质、瞬态信号或信号本身。计算机可读存储介质包括以适合于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据这样的信息的方法或技术实现的硬件,诸如易失性和非易失性的、可拆卸和不可拆卸的介质和/或存储设备。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、磁带盒、磁带、磁盘存储装置或其他磁性存储设备、或适合于存储所期望的信息并可由计算机访问的其他存储设备、有形介质或制品。 [0062] “通信介质”可以指被配置成比如经由网络向计算设备602的硬件传送指令的信号承载介质。通信介质通常可以将计算机可读指令、数据结构、程序模块或其他数据具体化在诸如载波、数据信号或其他传输机制这样的调制的数据信号中。通信介质还包括任何信息递送介质。术语“调制的数据信号”意指使其一个或多个特性以在信号中编码信息这样的方式来设置或改变的信号。作为示例而非限制,通信介质包括有线介质和无线介质,有线介质诸如是有线网络或直接连线的连接,无线介质诸如是声学、RF、红外和其他无线介质。 [0063] 如前所述,硬件元件610和计算机可读介质606代表以硬件形式实现的指令、模块、可编程设备逻辑和/或固定设备逻辑,其可以在一些实施例中被运用来实现本文描述的技术的至少一些方面。硬件元件可以包括以下组件:集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及用硅或其他硬件设备的其他实现。在这种上下文中,硬件元件可以作为处理设备操作,其执行通过由该硬件元件以及作为被用来存储指令以供执行的硬件设备(例如,先前描述的计算机可读存储介质)具体化的指令、模块和/或逻辑而定义的程序任务。 [0064] 还可以运用前述项的组合来实现本文所描述的各种技术和模块。因此,包括操作系统108、应用110、解码器模块126、渲染模块127和其他程序模块的软件、硬件或程序模块可以被实现为在某种形式的计算机可读存储介质上包含的和/或由一个或多个硬件元件 610具体化的一个或多个指令和/或逻辑。计算设备602可以被配置成实现与该软件和/或硬件模块相对应的特定指令和/或功能。因此,如可由计算设备602作为软件来执行的模块的一些模块的实现可以至少部分地以硬件来完成,例如通过使用计算机可读存储介质和/或处理系统的硬件元件610来进行。指令和/或功能或许是可由一个或多个制品(例如,一个或多个计算设备602和/或处理系统604)执行/操作来实现本文所描述的技术、模块和示例的。 [0065] 如图6中进一步图示的,示例系统600使得能够当在个人计算机(PC)、电视设备和/或移动设备上运行应用时实现用于无缝用户体验的普适环境。为了当在使用应用、播放视频游戏、观看视频等等的时候从一个设备转移到下一个设备时的共同的用户体验,服务和应用在所有三个环境中基本上类似地运行。 [0066] 在示例系统600中,多个设备通过中央计算设备互连。对于该多个设备来说中央计算设备可以是本地的,或者可以位于该多个设备的远程。在一个实施例中,中央计算设备可以是通过网络、因特网或其他数据通信链路连接到该多个设备的一个或多个服务器计算机的云。 [0067] 在一个实施例中,这种互连体系结构使得能够跨多个设备传递功能性,以向该多个设备的用户提供共同的且无缝的体验。多个设备中的每一个设备可以具有不同的物理要求和能力,并且中央计算设备使用平台来使得能向设备递送既是针对该设备定制的、然而又是为所有设备共有的体验。在一个实施例中,创建目标设备的类别,并且为设备的通用类别定制体验。设备的类别可以依据设备的物理特征、使用类型或其他共同特性来定义。 [0068] 在各种实现中,计算设备602可以诸如针对计算机614、移动装置616和电视机618用途而采取各种各样不同的配置。这些配置中的每一个包括可具有大体上不同的构造和能力的设备,并且因此可以按照不同设备类别中的一个或多个来配置计算设备602。例如,计算设备602可以被实现为计算机614类别的设备,包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等。 [0069] 计算设备602还可以被实现为移动装置616类别的设备,包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等的移动设备。计算设备602还可以被实现为电视机618类别的设备,包括在休闲观看环境中具有或连接到通常较大屏幕的设备。这些设备包括电视机、机顶盒、游戏控制台等。 [0070] 本文所描述的技术可以由计算设备602的这各种配置来支持,并且不限于本文所描述的技术的特定示例。这通过在计算设备602上包括解码器模块126和渲染模块127来图示。由解码器模块126、渲染模块127和其他模块/应用所表示的功能性还可以通过使用分布式系统来全部或部分地实现,诸如经由如下所描述的平台622通过“云”620来实现。 [0071] 云620包括和/或代表用于资源624的平台622。平台622对云620的硬件(例如,服务器)和软件资源的底层功能性进行抽象。资源624可以包括当在距计算设备602远程的服务器上执行计算机处理时可被利用的应用和/或数据。资源624还可以包括通过因特网和/或通过订户网络(诸如蜂窝网或Wi-Fi网)提供的服务。 [0072] 平台622可以对用于将计算设备602与其他计算设备连接的资源和功能进行抽象。 平台622还可以用来对资源的约略估计(scaling)进行抽象,以便向遇到的对于经由平台 622实现的资源624的需求提供对应的规模水平。因此,在互连设备实施例中,本文所描述的功能性的实现可以分布在系统600的各处。例如,该功能性可以部分地在计算设备602上、以及经由对云620的功能性进行抽象的平台622来实现。 [0073] 示例实现 本文所描述的缓冲器优化的示例实现包括但不限于以下示例中一个或多个示例的一个或任何组合: 一种计算机实现的方法,包括:获得编码内容的数据流以用于经由设备显示;建立用于所述编码内容的处理的输入格式和输出格式以使得能够经由所述设备显示;查明所述设备的能力;依赖于所建立的输入格式和输出格式以及所查明的设备能力而从多个可用缓冲器方案中选择要用于所述编码内容的处理的缓冲器方案;按照所选择的缓冲器方案来分配用于所述编码内容的处理的缓冲器;以及使用所分配的缓冲器来处理所述编码内容以用于经由所述设备显示。 [0074] 如上所述的计算机实现的方法还包括:作为分配的一部分,为解码图片缓冲器和输出图片缓冲器配置大小,所述大小由被选择的缓冲器方案来规定。 [0075] 如上所述的计算机实现的方法,还包括:作为处理的一部分,经由设备的图形处理单元使用所分配的缓冲器来对编码内容进行解码以产生解码内容,并且渲染该解码内容。 [0076] 如上所述的计算机实现的方法,还包括:当输入格式和输出格式不同时,执行从输入格式到输出格式的格式转换,被选择的缓冲器方案被配置为控制所述格式转换是作为解码的一部分还是作为渲染的一部分来发生。 [0077] 如上所述的计算机实现的方法,还包括:作为所述查明的一部分,确定设备的可用于编码内容的处理的存储器的量。 [0078] 如上所述的计算机实现的方法,还包括:作为选择缓冲器方案的一部分,解析编码内容的位流语法以识别指定的方案,并且选择所指定的方案。 [0079] 如上所述的计算机实现的方法,还包括:响应于确定经由所述设备可用的存储器不足以针对输出格式使用与输入格式相关联的分辨率或位深度,把输出格式设置成使得分辨率或位深度中的至少一个低于输入格式的对应的分辨率或位深度。 [0080] 如上所述的计算机实现的方法,其中所述多个可用缓冲器方案至少包括:用于当输入格式和输出格式相同时处理编码内容的一个缓冲器方案;以及用于当输入格式和输出格式不同时处理编码内容的不同缓冲器方案。 [0081] 一种或多种存储指令的计算机可读存储介质,所述指令在由计算设备执行时促使所述计算设备执行操作,所述操作包括:把所述计算设备的图形处理系统配置成依赖于用来解码和渲染的格式以及所述设备的存储器能力来选择多个缓冲器方案中的一个以用于编码数据流的处理;以及通过使用缓冲器方案中被选择的那个方案来定义被运用来解码和渲染的缓冲器,经由图形处理系统来处理编码数据流以用于显示。 [0082] 如上所述的一个或多个计算机可读存储装置,其中多个缓冲器方案至少包括:第一缓冲器方案,用于当被用于解码和渲染的格式相同时处理编码内容;第二缓冲器方案,用于当被用于解码和渲染的格式不同且格式转换被作为解码的一部分执行时处理编码内容; 以及第三缓冲器方案,用于当被用于解码和渲染的格式不同且格式转换被作为渲染的一部分执行时处理编码内容。 [0083] 如上所述的一个或多个计算机可读存储装置,其中所述编码数据流包括视频内容,并且被用于解码和渲染的格式包括用于所述视频内容的分辨率。 [0084] 如上所述的一个或多个计算机可读存储介质,其中所述多个可用缓冲器方案中的一个或多个被配置成:针对计算设备的存储器的分配,定义用于解码和渲染的单独缓冲器。 [0085] 如上所述的一个或多个计算机可读存储介质,其中所述多个可用缓冲器方案中的至少一个被配置成:针对计算设备的存储器的分配,定义既运用于解码和又运用于渲染的公共缓冲器。 [0086] 如上所述的一个或多个计算机可读存储介质,其中多个可用缓冲器方案中的每一个被配置成基于以下项中的一个或其组合来定义被运用于解码和渲染的缓冲器的大小:由编码内容的位流语法规定的解码缓冲器大小、为了当前图像的解码而保留的大小,或者为了渲染而缓冲的图像的数量。 [0087] 一种系统,包括:处理系统;一个或多个模块,其经由所述处理系统可操作来执行用于编码内容的数据流的处理以便经由与所述系统相关联的显示设备显示的操作,所述操作包括以下操作:从由系统支持的多个可用缓冲器方案中选择要用于编码内容的数据流的处理的缓冲器方案,所述缓冲器方案规定用于解码和渲染的组合管理的参数;按照所选择的缓冲器方案来为解码图片缓冲器和输出图片缓冲器配置大小;以及通过利用解码图片缓冲器和输出图片缓冲器进行的处理来解码所述编码内容并且渲染解码内容。 [0088] 如上所述的系统,其中由系统支持的多个可用缓冲器方案包括以下方案中的一个或多个:用于当输入格式和输出格式相同时处理编码内容的缓冲器方案;用于当输入格式和输出格式不同且格式转换被作为解码的一部分执行时处理编码内容的缓冲器方案;以及用于当输入格式和输出格式不同且格式转换被作为渲染的一部分执行时处理编码内容的缓冲器方案。 [0089] 如上所述的系统,其中与不同缓冲器方案相关联的、用于解码和渲染的组合管理的参数包括:对于缓冲器大小以及在不同输入和输出分辨率之间的格式转换的不同约束。 [0090] 如上所述的系统,其中所述处理系统包括中央处理单元(CPU)和与所述中央处理单元分离的图形处理单元(GPU)。 [0091] 如上所述的系统,其中所述一个或多个模块包括被实现为图形处理单元(GPU)的组件的、用于执行解码的解码器模块以及用于执行渲染的渲染模块。 [0092] 如上所述的系统,其中解码器模块被配置成对编码内容进行解码,该编码内容使用至少包括H.264/AVC和HEVC/H.265标准的多种压缩标准来编码。 [0093] 结论 虽然已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,在所附权利要求中限定的主题不是必然地限于上面描述的特定特征或动作。相反,上面描述的特定特征和动作是作为实现权利要求的示例形式被公开的。