优先权要求
本申请要求2014年12月11日提交的、名称为“用于并行视频编码的码率控制”、序号为14/567,600的美国专利申请的优先权,并且通过引用将该美国专利申请的全文并入本文中。
背景技术:
在许多媒体应用中,视觉质量是用户体验的重要方面。在媒体压缩/解压缩(编解码器)系统中,视觉质量可主要基于使用的压缩格式。视频编码器压缩视频信息,以便更多信息能够通过给定带宽发送或者存储在给定存储空间等中。随后可经将信号或数据解码或解压缩以向用户显示的解码器,将压缩的信号或数据解码。
诸如h.264/mpeg-4高级视频编码(avc)标准、高效率视频编码(hevc)标准和vp8(rf36386)/vp9的标准化编解码器确保所有符合标准的解码器将能够将符合标准的压缩视频解码。标准化编解码器定义称为假定参考解码器(hrd)的接收器模型。为符合标准,编码器必须创建可由hrd解码的比特流。hrd指定一个或更多个缓冲器,如编码图片缓冲器(cpb)和解码图片缓冲器(dpb)。hrd可采用由传输比特率、缓冲器大小和初始解码器缓冲器充满度参数化的漏桶模型。在以恒定或近恒定比特率传送视频数据时,缓冲在编码器和解码器侧用于适应压缩视频的比特率变化。比特率变化是压缩给定视频帧所需要的比特数量例如随帧类型(例如帧内或帧间编码)的变化而改变的结果。
经编码技术获得的变换系数可量化为量化参数(qp)的函数。较大的qp值以较低质量为代价,产生较大的压缩,而较低的qp值以降低的压缩率为代价,实现较大的视觉质量。作为满足hrd缓冲器约束的码率控制的方式,可为给定帧调制qp,以控制生成的比特的数量(即,帧大小)。一般情况下,负责为给定帧确定qp值的码率控制模块需要以前的编码帧使用的比特数量,以控制当前帧的编码过程,从而达到目标比特率和满足缓冲器约束。
随着视频编解码器的复杂性不断增大,并行处理在视频编码应用中正变得更加重要。然而,通过并行编码体系结构,先前的编码帧使用的比特数量可能不可用于负责为随后编码的帧确定qp值的码率控制模块。因此,能够执行此类技术的并行视频编码器码率控制技术和系统在市场中是有利的。
附图说明
在附图中以示例的方式而非限制的方式示出本文中所述的材料。为示图的简明和清晰起见,图中所示元素不一定按比例画出。例如,为清晰起见,一些元素的尺寸相对其它元素可能被放大。此外,在认为适当之处,已在图中重复附图标记以指示对应的或类似的元素。在图中:
图1a是根据一些实施例的并行视频编码体系结构的示意图;
图1b是根据一些实施例的并行视频编码器体系结构的示意图;
图2a是示出根据一些实施例的、适合用于初始视频帧的并行视频编码码率控制方法的流程图;
图2b是示出根据一些实施例的、适合用于随后视频帧的并行视频编码码率控制方法的流程图;
图3a、3b和3c是示出根据一些实施例的、用于估计前面紧邻帧的大小的技术的框图;
图3d是示出根据一些实施例的、根据帧类型估计前面紧邻帧的大小的方法的流程图;
图3e是示出根据一些实施例的、用于估计前面紧邻帧的大小的技术的框图;
图3f是示出根据一些实施例的、在用于估计前面紧邻帧的大小的多个技术中动态选择的方法的流程图;
图4是示出根据一些实施例的、配置用于并行视频编码码率控制的码率控制模块的框图;
图5是示出根据一些实施例的、包括配置用于并行视频编码码率控制的码率控制模块的视频处理系统的框图;
图6是根据一些实施例的图形处理器的一实施例的框图;
图7是根据一些实施例的图形处理引擎的另一实施例的框图;
图8是根据一些实施例的数据处理系统的框图;以及
图9是根据一些实施例布置的示范移动装置的图形。
具体实施方式
参照附图来描述一个或更多个实施例。虽然详细地示出并且论述了特定的配置和布置,但应理解的是,这样做只是为了说明的目的。相关领域技术人员将认识到,在不脱离本说明书的精神和范围的情况下,其它配置和布置是可能的。相关领域技术人员将明白,本文中描述的技术和/或布置除了可用于本文中详细所述的系统和应用外,还可用于多种其它系统和应用中。
在以下详细描述中参照了附图,这些附图形成本文的一部分并且示出示范实施例。此外,要理解的是,在不脱离要求保护的主题的范围的情况下,可利用其它实施例,并且可进行结构的和/或逻辑的变化。因此,不应从限制的意义上来理解下面的详细描述,并且要求保护的主题的范围只由随附权利要求书及其等效物来限定。
在下面的描述中,陈述了许多细节,然而,本领域技术人员将明白,可在没有这些特定细节的情况下实践实施例。以框图形式示出而不是详细示出公知的方法和装置,以免混淆更重要的方面。此说明书通篇对“一实施例(anembodiment)”或“一个实施例(oneembodiment)”的引用表示结合该实施例描述的特定的特征、结构、功能或特性包括在至少一个实施例中。因此,短语“在一实施例中”或“在一个实施例中”在本说明书通篇各个位置的多次出现不一定指同一实施例。此外,可在一个或更多个实施例中以任何适合的方式组合在一实施例的上下文中描述的特定的特征、结构、功能或特性。例如,第一实施例可在以下的任何情况与第二实施例组合:与这两个实施例关联的特定的特征、结构、功能或特性相互不排斥。
在示范实施例的描述和随附权利要求书中使用时,除非上下文另外明确指示,否则,意在使单数形式“一(a)”、“一(an)”和“该(the)”还包括复数形式。也将理解,术语“和/或”在本文中使用时指的是并且涵盖一个或更多个关联的所列项的任何的和所有的可能组合。
在本说明书通篇和在权利要求书中使用时,加有术语“至少之一”或“一个或更多个”的项目清单能够表示所列项的任何组合。例如,短语“a、b或c至少之一”能够表示:a;b;c;a和b;a和c;b和c;或a、b和c。
术语“耦合”和“连接”连同其衍生词可在本文中用于描述在组件之间的功能或结构关系。应理解,并不打算使这些术语成为彼此的同义词。相反,在特定的实施例中,“连接”可用于指两个或更多个元素相互的直接的物理、光学或电气接触。“耦合”可用于指两个或更多个元素相互的、直接的或间接的(它们之间有其它元素插入)物理、光学或电气接触,和/或指这两个或更多个元素相互合作或交互(例如,如在因果关系中)。
根据计算机存储器内的对数据比特进行的操作的符号表示和算法来呈现本文中提供的详细描述的一些部分。除非另外具体说明,否则,如从下面的论述中显而易见的,要领会在本说明书通篇中,利用诸如“计算(calculating)”、“计算(computing)”、“确定(determing)”、“估计(estimating)”、“存储(storing)”、“收集(collecting)”、“显示(displaying)”、“接收(receiving)”、“巩固(consolidating)”、“生成(generating)”、“更新(updating)”或诸如此类的术语的论述指的是计算机系统或类似电子计算装置的动作和过程,计算机系统或类似电子计算装置将表示为在包括寄存器和存储器的计算机系统的电路内的物理(电子)量的数据操纵和变换成类似地表示为在计算机系统存储器或寄存器或其它此类信息存储、传输或显示装置内的物理量的其它数据。
虽然以下描述陈述了可例如在诸如片上系统(soc)体系结构的体系结构中体现的实施例。但本文中描述的技术和/或布置的实现不限于特定的体系结构和/或计算系统,并且可由用于类似用途的任何体系结构和/或计算系统实现。采用例如多个集成电路(ic)芯片和/或封装的各种体系结构和/或诸如机顶盒、智能电话等各种计算装置和/或消费电子(ce)装置可实现本文中描述的技术和/或布置。此外,虽然以下描述可陈述诸如逻辑实现、系统组件的类型和相互关系、逻辑分割/集成选择等许多特定细节,但可在没有此类特定细节的情况下实践要求保护的主题。此外,例如可能未详细示出诸如控制结构和完全软件指令序列的一些材料,以免混淆本文中公开的材料。
本文中公开的材料的某些部分用硬件实现,例如实现为图形处理器中的逻辑电路。某些其它部分可用硬件、固件、软件或其任何组合实现。本文中公开的至少一些材料也可实现为存储在机器可读媒体上、可由一个或更多个处理器(图形处理器和/或中央处理器)读取和执行的指令。机器可读媒体可包括用于以机器(例如,计算装置)可读形式存储或传送信息的任何媒体和/或机构。例如,机器可读媒体可包括:只读存储器(rom);随机存取存储器(ram);磁盘存储媒体;光学存储媒体;闪速存储器装置;电气、光学、声学或其它类似非暂时性有形媒体。
本文中描述的方法、装置、设备、计算平台及制品涉及视频编码。下面描述一个或更多个系统、设备、方法和计算机可读媒体,所述一个或更多个系统、设备、方法和计算机可读媒体用于确定在正与一个或更多个其它视频帧并行编码的视频帧的qp确定中将采用的目标比特数量(即,目标帧大小或目标比特率)。在另外的实施例中,所述系统、设备、方法或计算机可读媒体还可基于确定的qp生成一个或更多个编码视频数据流。
在本文中详细描述的一些实施例中,提供满足在并行视频编码器中的hrd缓冲器约束的低复杂性的码率控制。由于用于将帧编码的一个视频编码管线使用的实际比特数量可能不可用于根据并行帧编码的同步而将另一帧编码的另一并行视频编码管线,因此,由一种或更多种方法估计由前面紧邻帧使用的比特的数量。在另外的实施例中,为估计前面紧邻视频帧大小所采用的技术随用于前面紧邻视频帧的信息的可用性的变化而在帧之间动态改变,信息的可用性可随帧同步而改变。因此,前面紧邻视频帧大小的估计可为给定帧采用第一技术,并且随后为随后帧采用第二技术。在另外的实施例中,以取决于为前面紧邻帧估计的帧大小的方式,更新缓冲器充满度。在另外的实施例中,根据当前帧类型、为前面紧邻帧估计的比特率和更新的缓冲器充满度,确定当前帧的比特率。
在一些实施例中,如基于根据本文中实施例确定的用于当前帧的目标比特率确定和/或修改的qp用于量化与视频数据块(chunk)关联的变换系数。随后,可将量化的变换系数和量化参数编码到比特流中以在解码器使用。解码器随后可采用任何已知技术将比特流解压缩/解码以再现用于向最终用户呈现/显示的帧。
图1a是根据一些实施例的并行视频编码体系结构100的示意图。在示出的示范实施例中,接收作为并行编码器101的多个视频数据输入102的帧5、10、15。在一些实施例中,帧5、10、15是例如与时间系列关联的连续视频帧n、n+1、n+2等的序列。并行编码器101用于将帧5、10、15并行编码,并且输出对应的编码的流103、104、105,随后可以用任何方式组合和/或复用这些编码的流,这是因为本文中的实施例在此方面不受限制。并行编码体系结构100例如可由配置成将从任何上游源接收的输入视频帧5、10、15编码的视频压缩-解压缩(编解码器)实现。在示范实施例中,体系结构100由与诸如h.264/mpeg-4avc标准、hevc标准、vp8标准、vp9标准的一个或更多个标准兼容的编解码器实现。
图1b是进一步示出根据一些实施例的并行视频编码器101的示意图。并行视频编码器101具有配置成将三个连续视频帧n、n+1和n+2并行编码的多个编码管线107、108和109。编码管线107还包括经耦合以接收输入视频帧n的视频分析模块110、耦合到模块110的输出的码率控制模块120、耦合到模块120的输出的运动估计和模式判定模块130及耦合到模块130的输出的变换/量化和熵编码模块140。编码管线108还包括经耦合以接收输入视频帧n+1的视频分析模块112、耦合到模块112的输出的码率控制模块122、耦合到模块122的输出的运动估计和模式判定模块132及耦合到模块132的输出的变换/量化和熵编码模块142。编码管线109还包括经耦合以接收输入视频帧n+2的视频分析模块114、耦合到模块114的输出的码率控制模块124、耦合到模块124的输出的运动估计和模式判定模块134及耦合到模块134的输出的变换/量化和熵编码模块144。
在一些实施例中,并行码率编码器的编码管线将帧编码,而无需用于将在一系列的连续帧内的、该帧前面紧邻的视频帧编码的比特数量的先验知识。在图1b示出的示范实施例中,每个码率控制模块120、122、124还耦合到用于将第(n-2)个帧编码的目标比特率输入和帧大小(比特数量)。例如,用于帧n-2的比特数量从变换、量化和熵模块140输出并且输入到码率控制模块124中。码率控制模块120、122、124缺乏在其前面紧邻帧中使用的比特数量的输入,这是因为在并行编码体系结构内,在一个或更多个码率控制计算将由码率控制模块针对当前帧n执行时,用于帧n-1的比特数量尚未由变换、量化和熵模块输出。在示范体系结构中,在管线107、108、109之间的同步使得处理当前帧n的每个并行码率控制模块120、122、124将接收在当前帧前面紧邻的帧前面紧邻的帧n-2的比特大小作为输入。因此,在码率控制模块120开始处理帧n时,仅有关帧n-2使用的比特数量的信息可用。类似地,在码率控制模块122开始处理帧n+1时,仅有关帧n-1使用的比特数量的信息可用。最后,在码率控制模块124开始处理帧n+2时,仅有关帧n使用的比特数量的信息可用。
并行视频编码器101例示三个并行视频编码管线,其中比特数量用于将在该帧前面紧邻的视频帧编码。然而,可扩展并行性(例如,到4个管线),在此情况下,可扩展本文中描述的适应用于将视频帧n-1编码的比特数量的先验知识的缺乏的技术和系统(例如,以处理在n-2帧编码中使用的比特的缺乏)。虽然码率控制随着增大的并行性而变得更困难,但采用本文中在并行编码器101的上下文中针对帧n-1描述的技术和体系结构来估计用于n-2帧、n-3帧、并且甚至n-4帧的比特数量可以是可能的。
在一些实施例中,当前视频帧的处理包括至少部分基于从先前的视频帧处理生成的一个或更多个中间参数,估计用于先前的视频帧的比特数量。例如,进一步参照图1b,对于编码管线109,码率控制模块124用于使用用于视频帧n+1的比特数量的估计来为视频帧n+2确定目标比特数量,基于从运动估计和模式判定模块132和/或码率控制模块122和/或视频分析模块112可获得的一个或更多个中间参数或信息确定用于视频帧n+1的比特数量的估计。在另外的实施例中,比较来自编码管线108的中间参数或信息和从编码管线109可获得的信息和/或中间参数,以确定用于视频帧n+2的大小。
图2a是示出根据一些实施例的、适合用于初始视频帧的并行视频编码码率控制方法201的流程图。方法201可由诸如编码器101的并行编码器在并行视频编码码率控制的自举(bootstrapping)阶段期间执行。在方法201中,基于目标比特率、缓冲器约束和编码结构,确定用于前两个帧的目标比特数量。编码结构指定可在图片组(gop)中出现的帧类型,诸如未参考另外的一个帧或多个帧来预测的帧内帧(i帧)和参考另外的一个帧或多个帧来预测的帧间预测帧。预测帧还可包括:参考先前的一个帧或多个帧来预测的、并且在其它帧的预测中可供使用的p帧;参考先前的或随后的一个帧或多个帧来预测的、但在其它帧的预测中不可供使用的双向帧(b帧);和/或参考另外的一个帧或多个帧来预测的、并且可供在分级编码结构中的预测中使用的参考双向帧(b参考帧)。
对于帧1编码,在操作205计算目标大小。由于第一帧始终为i帧,因此,第一帧的目标大小通常为目标平均比特率的若干倍。随后,在操作207由已知的任何一种或更多种技术确定缓冲器充满度。在操作209,通过已知的任何一种或更多种技术确定qp。在操作211,由已知的任何一种或更多种技术确定编码模式和执行运动估计,并且在操作213,由已知的任何一种或更多种技术对帧1进行变换并且进行熵编码。
对于帧2编码,在操作215,基于在操作207确定的缓冲器充满度更新和在操作209确定的qp,计算目标大小。在针对长度为l帧、平均目标比特率为t/帧的图片组(gop)中的仅ip编码结构的一个示例中,用于第一个p帧的目标码率或大小将为:
在操作217,将在第二帧的编码前的缓冲器充满度计算为:
在操作219,基于目标码率、选择的码率失真模型,确定对应的qp:
在一些实施例中,给出以下模型函数:
其中c1和c2是常数。在操作221,由已知的任何一种或更多种技术确定编码模式和执行运动估计,并且在操作223,由已知的任何一种或更多种技术对帧2进行变换并且进行熵编码。
图2b是示出根据一些实施例的、适合用于第三个和随后的视频帧(本文中表示为帧n)的并行视频编码码率控制方法202的流程图。在一些实施例中,码率控制模块(例如,图1b中的码率控制模块120)为接收到给定并行编码管线中的每个帧执行方法202。如图2b中所示,在操作230,执行视频分析,其可用于为接收的帧n估计空间和时间预测失真。对于一些实施例,可在操作230确定空间和时间复杂性,而对于其它实施例,只可确定空间或时间复杂性之一。可使用任何适合的技术确定空间和/或时间复杂性。在一些实施例中,基于帧n的帧间预测失真,估计时间复杂性。帧内预测失真、帧间预测失真或两者的度量可基于诸如绝对差之和(sad)、失真求和或诸如此类的统计度量。
在一些实施例中,在操作233,基于在操作230执行的分析和编码结构,将当前帧n确定为场景变化帧、黄金帧(vp8/vp9)、长期参考帧(avc、hev)、i帧或常规帧间帧(例如,p或b帧)。在操作232,估计用于前面紧邻帧n-1的比特数量。在一些实施例中,操作232与帧类型判定操作233同时执行。在一些实施例中,帧大小估计操作232取决于在执行操作232时作为中间帧编码参数值可用于码率控制模块的n-1帧信息。可基于可用的n-1帧信息来执行用于估计n-1帧大小的多种方法的一种或另一种方法。在操作232,指示从先前的视频帧可获得的中间参数的同步信息可用于在各种估计算法之间选择。因此,由于在帧n与帧n-1的并行编码之间的同步变化,在操作232的帧n-1大小估计可在方法202的第一次迭代中以第一方式进行,而在操作232的帧n-1大小估计可在方法202的第二次迭代中以第二方式进行。
图3a、3b和3c是示出根据一些实施例的、用于估计前面紧邻帧n-1的大小的方法301、302、303的框图。可在操作232执行方法301、302、303中的任一种以估计帧n-1大小。
先参照图3a,在方法301中,基于包括与帧n-1关联的估计的预测失真(pd)的中间参数357,估计帧n-1大小。中间参数357是视频分析操作230(图2b)的结果。如图3a中进一步所示,还基于帧n-1qp(中间参数359),估计n-1大小。方法301因此需要在两个并行编码管线之间的同步/延迟,以使得在n帧编码管线到达帧n-1估计操作232的时侯,在n-1编码管线中已执行视频分析和qp确定。如图3a中进一步所示,还基于包括用于帧n-2的实际比特数量(参数355)的帧n-2信息,估计n-1大小。在一些实施例中,也可基于来自n-2编码的中间参数,估计n-1大小,来自n-2编码的中间参数例如包括与帧n-2关联的估计的pd(中间参数351)和帧n-2qp(中间参数353)。随后,可比较用于n-2帧的实际比特率和用于n-2帧和n-1帧的估计的pd值和qp值,以获得帧n-1大小的良好估计。在一些实施例中,将帧n-1大小估计为:
接着参照图3b,在方法302中,基于是与帧n-1关联的真实或实际预测失真(pd)的中间参数367,估计帧n-1大小。在执行用于当前帧n的码率控制计算前已经完成帧n-1编码模式(例如,跳过(skip)、帧内(intra)、帧间(inter)等)和运动估计的情况下,可利用实际pd而不是估计的pd。因此,如图3b中进一步所示,还可根据或基于帧n-1qp连同帧n-2的实际比特数量、以及包括n-2帧qp的帧n-2中间参数和用于帧n-2的实际pd(中间参数361),确定帧n-1大小。
在一些实施例中,如图3b中通过虚线进一步所示,也可至少部分基于帧n-1的编码模式(中间参数371)和帧n-1运动向量信息(中间参数373),确定帧n-1大小。可比较帧n-1的编码模式和帧n-2的编码模式(例如,中间参数372、374),并且也可在还基于在帧n-2中使用的实际比特数量估计帧n-1大小中利用在帧n-1与n-2之间的运动向量分布变化。作为一个示例,可基于按照跳过来编码的块的数量的比率和/或按照帧内来编码的块的数量的比率和/或带有相同运动向量的块的数量的比率,估计帧n-1大小。因此,如果当前帧简单,带有例如80%的块按照跳过来编码,则可比较为剩余20%(其中可能10%为帧内编码,并且10%为帧间编码)确定的真实预测误差和用于n-2帧的类似参数值,以估计n-1帧大小将如何与n-2大小比较。
接着参照图3c,在方法303中基于为帧n-1确定的目标比特数量和为n-2帧估计的先前大小,估计帧n-1大小。在一些实施例中,基于为帧n-1确定的目标比特数量(中间参数373)、帧n-2估计的比特(中间参数371)和用于帧n-2的实际比特数量,估计n-1帧大小。在一些实施例中,将n-1帧大小计算为:
在一些实施例中,至少部分基于先前的帧类型,估计与先前的帧关联的比特数量。方法301、302、303中的任一种的执行还可基于n-1帧具有适当的类型。随后可以备选方式估计用于非限定帧类型的n-1帧的大小。图3d是示出根据一些实施例的、用于根据n-1帧类型估计前面紧邻帧n-1的大小的方法304的流程图。在方法304中,确定n-1帧类型,并且如果n-1帧是关键帧,如帧内编码帧或场景变化帧,则在操作375估计帧n-1比特。在一些实施例中,在操作375,根据用于上一i帧的实际比特率、在n-1帧中的失真与上一i帧的失真的比率和在上一i帧中的qp与n-1帧的qp的比率,估计帧n-1比特率:
响应n-1帧转而是黄金帧,方法304继续到操作377,其中根据在n-1帧中的失真与上一帧间黄金帧中的失真的比率和上一帧间黄金帧中的qp与n-1帧中的qp的比率,估计帧n-1比特率:
对于等式(7)和等式(8),在一些实施例中,如上所述基于视频分析,估计用于至少帧n-1的失真值。在其它实施例中,也基于为上一i帧执行的视频分析操作,估计用于该帧的失真值。在其它实施例中,在等式(7)中为至少上一i帧利用实际pd,并且在一些此类实施例中,用于n-1帧的实际pd在因并行帧编码级之间的同步所允许而可用时也被使用。
如果帧n-1转而是第一i帧或第一黄金帧,则方法304继续到操作378,其中在一些实施例中,将n-1比特率估计为帧比特率目标:
如果未满足用于帧n-1类型的任一上述条件,则n-1帧比特估计还基于n-2帧类型。在一些实施例中,如果n-2帧是诸如i帧、场景变化帧、黄金帧的关键帧,则方法304继续到操作378,其中采用等式(9)估计用于帧n-1的比特率。
如果未满足关于帧n-1或n-2的任一上述帧类型条件,则在操作380确定n-1帧大小,其中可依赖从n-1帧编码可获得的中间参数,执行方法301、302或303中的任一种。
在一些实施例中,在n-1帧编码管线与n帧编码管线之间的同步可使得在帧n码率控制前已经完成帧n-1的变换和量化。对于此类实施例,可采用图3e中示出的方法,估计用于帧n-1的比特数量。n-1帧大小估计操作232至少部分基于包括非零量化系数和/或零系数的一个或更多个统计的中间参数381。正好在用于帧n-1的实际比特数量在熵编码后为已知之前,量化系数作为中间参数可用。
如上所述,估计在n-1帧编码中使用的比特数量的各种方法依赖有关n-1帧的不同信息。图3f是示出根据一些实施例的、用于在用于估计前面紧邻帧的大小的多个技术中动态选择的方法306的流程图。根据n-1:n帧编码同步,方法306响应帧n-1量化系数为可用,继续通过方法305(图3e)来估计帧n-1的大小。在备选中,方法305响应实际pd为可用,继续通过方法302来估计帧n-1大小。在备选中,方法305基于在方法301中估计的pd,继续估计帧n-1大小。最后,如果在帧n-1与帧n编码之间存在极少延迟,并且极少n-1帧信息在帧n码率控制级可用,则方法305继续通过方法303来估计帧n-1大小。
在图3a-3f的上下文中如上所述估计了n-1帧大小之后,并行视频编码码率控制方法202(图2b)继续到操作235,其中基于n-1的估计的大小,更新缓冲器充满度。在一些实施例中,在操作235,基于在用于n-2帧的实际与估计的比特率之间的差和在用于n-1帧的估计的比特率与平均比特率之间的差的函数,更新缓冲器充满度。在一个此类实施例中,缓冲器充满度更新为:
其中,c4是常数。在一些实施例中,在缓冲器充满度[n-1]小于缓冲器大小的一半时,c4在1到~1.5的范围中,以及在缓冲器充满度[n-1]大于缓冲器大小的一半时,c4对于可变比特率(vbr)编码为1,并且对于恒定比特率(cbr)在0.9到~1的范围中。
在一些实施例中,用于当前视频帧n的目标比特率确定依赖当前帧类型。仍参照图2b,并行视频编码码率控制方法202继续基于帧n的类型和/或帧n-2的类型,为当前帧n确定目标比特数量。在帧n不是常规帧间编码帧的情况下,在操作237确定用于当前帧n的目标比特数量。如果当前帧n是帧内帧或场景变化帧,则被优化用于此类帧的任何目标大小确定方法可在操作237用于基于由以前gop使用的比特数量和更新的缓冲器充满度,确定帧n目标比特率。技术领域中存在用于确定帧内帧或场景变化帧的目标大小的许多专用技术/算法,并且本文中的实施例在此方面不受限制。类似地,如果当前帧n转而是黄金帧或长期参考帧,则在操作237能够利用适合用于此类帧的任何关键帧目标大小确定方法。此处同样地,技术领域中存在用于确定黄金帧或长期参考帧的目标大小的许多专用技术/算法,并且本文中的实施例在此方面不受限制。
在一些实施例中,用于当前视频帧n的目标比特率确定依赖当前帧类型和先前的帧类型。在帧n是常规帧间编码帧(例如,p帧、b参考帧、非参考b帧或广义双向预测p帧)的情况下,根据帧n-2是否为关键帧而在操作239或242确定用于当前帧n的目标比特率。如果n-2帧不是关键帧,则基于估计的帧n-1比特率和帧n缓冲器充满度,确定用于帧n的目标比特率。在一些示范实施例中,在编码结构为仅ip,并且n-1帧是关键帧的情况下,可在操作239将帧n目标码率计算为:
对于n-1帧不是关键帧的ip编码,在一些实施例中在操作239将p帧n目标比特率转而计算为:
其中c5是常数,例如在0.1到~0.5的范围中。
如果n-2帧转而是关键帧,则在操作242基于用于n-2帧的实际比特率、用于帧n-1的估计的比特率和更新的缓冲器充满度,确定目标比特率。例如,在一些实施例中,在仅ip的编码结构中,在操作242可计算p帧n目标码率:
值得注意的是,通过使用类似方案,上述示范实施例可易于扩展到包括b参考帧和/或非参考b帧的编码结构。在方法202的每次迭代完成后,通过任何已知技术,基于确定的目标比特率将当前帧n进行量化、变换、熵编码等。
图4是进一步示出根据一些实施例的、配置用于并行视频编码码率控制的码率控制模块120的框图。码率控制模块120可例如用于执行并行视频编码码率控制方法202。如图4中所示,码率控制模块120包括耦合到视频分析模块110的输出端口以接收有关帧n的视频分析信息的输入端口。码率控制模块120还包括用于确定当前帧n的帧类型的帧类型判定模块425。
码率控制模块120还包括具有经耦合以接收帧n的输入的帧n-1大小估计模块427。在一些实施例中,帧n-1大小估计模块427还包括经耦合以接收用于n-2帧的估计的比特数量的输入。在一些实施例中,帧n-1大小估计模块427还经耦合以接收诸如实际pd的n-1帧信息或在码率控制模块120外部生成的其它中间信息的可用性的指示。例如,在图4中示出的示范实施例中,大小估计模块427经耦合以接收来自应用层控制器490的n-1帧中间参数信息491。在一些实施例中,帧n-1大小估计模块427包括用于执行在图3a-3f的上下文中在本文中别处描述的任何n-1帧大小估计方法的逻辑。
帧n-1大小估计模块427的输出耦合到编码缓冲器充满度更新模块429的输入。在一些实施例中,编码缓冲器充满度更新模块429包括用于至少部分基于从大小估计模块427接收的n-1大小估计,更新缓冲器充满度的逻辑。目标比特率判定模块431和目标比特率判定模块432选择性地用于例如采用上面在图2b的上下文中描述的技术,根据帧n类型和/或n-2帧,确定帧n的目标大小。目标比特率判定模块431包括用于例如采用上面在图2b的上下文中描述的技术,确定i帧、场景变化帧、黄金帧或长期参考帧的目标大小的逻辑。目标比特率判定模块432包括用于例如采用上面在图2b的上下文中描述的技术,基于用于n-1的估计的比特数量和/或n-2帧比特数量,确定帧n目标比特数量的逻辑。码率控制模块120还包括输出端口,该输出端口经耦合以例如基于来自目标比特率判定模块431或目标比特率判定模块432的输出,提供用于帧n的目标比特数量。
图5是根据一些实施例布置的、配置成并行编码视频的示范系统500的框图。如图5中所示,系统500可包括图形处理单元(gpu)501、一个或更多个中央处理单元502和存储器库503。也如图所示,gpu501包括多个并行码率控制模块120和多个并行变换、量化和熵编码模块140。在示范系统500中,电子存储器503可存储视频内容,如视频帧和/或视频比特流。
图形处理单元501可包括可提供如本文中论述的操作的任何数量和类型的图形处理单元。此类操作可经软件或硬件或其组合实现。在一实施例中,可通过逻辑电路来实现图形处理单元501的示出模块。例如,图形处理单元501可包括专用于操纵视频数据以生成压缩的图像数据的电路。一个或更多个中央处理单元502可包括任何数量和类型的处理单元或模块,其可提供用于系统500的控制和其它高级功能。存储器503可以是任何类型的存储器,如易失性存储器(例如,静态随机存取存储器(sdram)、动态随机存取存储器(dram)等)或非易失性存储器(例如,闪速存储器等)等等。在一些实施例中,存储器503配置成存储视频数据,如帧级中间编码参数、量化的变换系数、估计的帧大小或本文中论述的任何其它视频数据。在非限制性示例中,存储器503由gpu501的高速缓冲存储器实现。在一些实施例中,并行码率控制模块120和并行变换、量化和熵编码模块140经图形处理单元501的执行单元(eu)实现。每个eu例如可包括可编程逻辑或电路,其可提供广泛的可编程逻辑功能。在一些实施例中,通过诸如固定功能电路或诸如此类的专用硬件来实现并行码率控制模块120和并行变换、量化和熵编码模块140。固定功能电路可提供可映射到用于固定用途或功能的专用逻辑的固定功能入口点集。
可用软件、固件和/或硬件和/或其任何组合来实现本文中描述的系统的各种组件。例如,系统400或系统500的各种组件可至少部分由诸如在例如智能电话或其它移动计算装置的计算系统中可找到的计算片上系统(soc)的硬件提供。本领域技术人员可认识到,本文中描述的系统可包括尚未在对应图形中示出的另外组件。例如,本文中论述的系统可包括为清晰起见而尚未示出的、诸如比特流复用器或去复用器模块和诸如此类的另外组件。
虽然本文中论述的示范方法的实现可包括以示出顺序执行示出的所有操作,但本公开在此方面不受限制,并且在各种示例中,本文中示例过程的实现可包括示出的操作的仅子集,以与所示顺序不同的顺序执行的操作或另外的操作。
另外,可响应由一个或更多个计算机程序产品提供的指令,执行本文中论述的任何一个或更多个操作。此类程序产品可包括提供指令的信号承载媒体,指令在由例如处理器执行时,可提供本文中描述的功能性。可以一个或更多个机器可读媒体的任何形式提供计算机程序产品。因此,例如,包括一个或更多个图形处理单元或处理器核的处理器可响应由一个或更多个机器可读媒体输送到处理器的程序代码和/或指令或指令集,执行本文中示例过程的一个或更多个框。通常,机器可读媒体可输送程序代码和/或指令或指令集形式的软件,其可促使本文中描述的任何装置和/或系统实现并行编码器101、码率控制模块120、系统500或如本文中论述的任何其它模块或组件的至少部分。
在本文中描述的任何实现中使用时,术语“模块”指的是配置成提供本文中描述的功能性的软件逻辑、固件逻辑、硬件逻辑和/或电路的任何组合。软件可实施为软件包、代码和/或指令集或指令,并且在本文中描述的任何实现中使用时,“硬件”可例如单独或以任何组合方式包括硬连线电路、可编程电路、状态机电路、固定功能电路、执行单元电路和/或存储由可编程电路执行的指令的固件。这些模块可全体或单独实施为形成更大系统的一部分的电路,例如,集成电路(ic)、片上系统(soc)等等。
图6是图形处理器600的框图,图形处理器可以是离散图形处理单元,或者可以是集成有多个处理核的图形处理器。在一些实施例中,图形处理器经到图形处理器上的寄存器的存储器映射的i/o接口并且通过放入处理器存储器中的命令进行通信。在一些实施例中,图形处理器600包括用于对存储器进行存取的存储器接口614。存储器接口614能够是到本地存储器、一个或更多个内部高速缓存、一个或更多个共享的外部高速缓存和/或到系统存储器的接口。
在一些实施例中,图形处理器600也包括用于驱动显示输出数据到显示装置620的显示控制器602。显示控制器602包括用于一个或更多个重叠平面以显示和构成多层视频或用户界面元素的硬件。在一些实施例中,图形处理器600包括视频编解码器引擎606,该视频编解码器引擎606用于将媒体向一个或更多个媒体编码格式、从一个或更多个媒体编码格式或在这些格式之间进行编码、解码或转码,这些格式包括但不限于诸如mpeg-2的运动图像专家组(mpeg)格式、诸如h.264/mpeg-4avc的高级视频编码(avc)格式及运动图像和电视工程师学会(smpte)421m/vc1和诸如jpeg和运动jpeg(mjpeg)格式的联合图像专家组(jpeg)格式。
在一些实施例中,图形处理器600包括块图像传送(blit)引擎604,引擎604用于执行二维(2d)光栅化操作,例如包括比特边界块传送。然而,在一个实施例中,使用图形处理引擎(gpe)610的一个或更多个组件执行2d图形操作。在一些实施例中,图形处理引擎610是用于执行包括三维(3d)图形操作和媒体操作的图形操作的计算引擎。
在一些实施例中,gpe610包括3d管线612,3d管线612用于执行3d操作,如使用对3d基本形状(例如,矩形、三角形等)起作用的处理功能渲染三维图像和场景。3d管线612包括在元素内执行各种任务和/或派生执行线程给3d/媒体子系统615的可编程和固定功能元素。虽然3d管线612能够用于执行媒体操作,但gpe610的一实施例也包括专门用于执行诸如视频后处理和图像增强的媒体操作的媒体管线616。
在一些实施例中,媒体管线616包括固定功能或可编程逻辑单元,固定功能或可编程逻辑单元用于执行一个或更多个专用媒体操作,如替代或代表视频编解码器引擎606的视频解码加速、视频去交织和视频编码加速。在一些实施例中,媒体管线616另外包括用于派生线程以在3d/媒体子系统615上执行的线程派生单元。派生的线程为在3d/媒体子系统615中包括的一个或更多个图形执行单元上的媒体操作执行计算。
在一些实施例中,3d/媒体子系统615包括用于执行由3d管线612和媒体管线616派生的线程的逻辑。在一个实施例中,这些管线将线程执行请求发送到3d/媒体子系统615,子系统615包括用于仲裁和调度各种请求到可用线程执行资源的线程调度逻辑。执行资源包括用于处理3d和媒体线程的图形执行单元的阵列。在一些实施例中,3d/媒体子系统615包括用于线程指令和数据的一个或更多个内部高速缓存。在一些实施例中,该子系统也包括用于在线程之间共享数据和存储输出数据的共享存储器,共享存储器包括寄存器和可寻址存储器。
图7是根据一些实施例的图形处理器的图形处理引擎610的框图。在一个实施例中,gpe610是图6中示出的gpe610的一个版本。图7中与本文中任何其它图形的元素具有相同附图标号(或名称)的元素能够以类似于本文中其它地方描述的方式的任何方式操作或运转,但不限于这样。
在一些实施例中,gpe610与命令流传送器(commandstreamer)703耦合,命令流传送器703提供命令流到gpe3d管线712和媒体管线716。在一些实施例中,命令流传送器703耦合到存储器,存储器能够是系统存储器或是内部高速缓冲存储器和共享高速缓冲存储器中的一个或更多个。在一些实施例中,命令流传送器703接收来自存储器的命令,并且将命令发送到3d管线712和/或媒体管线716。3d管线和媒体管线通过经相应管线内的逻辑执行操作或者通过将一个或更多个执行线程调度到执行单元阵列714来处理命令。在一些实施例中,执行单元阵列714是可缩放的,使得阵列包括基于gpe610的目标功率和性能级别的可变数量的执行单元。
在一些实施例中,采样引擎730与存储器(例如,高速缓冲存储器或系统存储器)和执行单元阵列714耦合。在一些实施例中,采样引擎730提供用于执行单元阵列714的、允许执行阵列714从存储器读取图形和媒体数据的存储器存取机构。在一些实施例中,采样引擎730包括用于为媒体执行专用图像采样操作的逻辑。
在一些实施例中,采样引擎730中的专用媒体采样逻辑包括去噪/去交织模块732、运动估计模块734以及图像缩放和滤波模块736。在一些实施例中,去噪/去交织模块732包括用于对解码的视频数据执行去噪或去交织算法中的一个或更多个的逻辑。去交织逻辑将交织的视频内容的交替场组合成视频的单个帧。去噪逻辑降低或去除来自视频和图像数据的数据噪声。在一些实施例中,去噪逻辑和去交织逻辑是运动自适应的,并且基于在视频数据中检测到的运动量使用空间或时间滤波。在一些实施例中,去噪/去交织模块732包括专用运动检测逻辑(例如,在运动估计引擎734内)。
在一些实施例中,运动估计引擎734通过对视频数据执行诸如运动向量估计和预测的视频加速功能,为视频操作提供硬件加速。运动估计引擎确定描述在连续视频帧之间图像数据的变换的运动向量。在一些实施例中,图形处理器媒体编解码器使用视频运动估计引擎734在宏块级别对视频执行操作,这些操作要不然可能计算太密集而无法使用通用处理器执行。在一些实施例中,运动估计引擎734通常可用于图形处理器组件以辅助对视频数据内运动的方向或大小灵敏或与其相适应的视频解码和处理功能。
在一些实施例中,图像缩放和滤波模块736执行图像处理操作以增强生成的图像和视频的视觉质量。在一些实施例中,缩放和滤波模块736在将图像和视频数据提供到执行单元阵列714前在采样操作期间处理数据。
在一些实施例中,gpe610包括数据端口744,其提供另外的机构以供图形子系统对存储器进行存取。在一些实施例中,数据端口744促进用于包括渲染目标写入、恒定缓冲器读取、暂时存储器空间读取/写入及媒体表面存取的操作的存储器存取。在一些实施例中,数据端口744包括高速缓冲存储器空间以高速缓存对存储器的存取。高速缓冲存储器能够是单个数据高速缓存,或者分成用于经数据端口对存储器进行存取的多个子系统的多个高速缓存(例如,渲染缓冲器高速缓存、恒定缓冲器高速缓存等)。在一些实施例中,在执行单元阵列714中的执行单元上执行的线程通过经将gpe610的每个子系统耦合的数据分布互连交换消息,与数据端口进行通信。
图8是根据一些实施例的数据处理系统800的框图。数据处理系统800包括一个或更多个处理器802和一个或更多个图形处理器501,并且可以是单个处理器台式系统、多处理器工作站系统或具有大量处理器802或处理器核807的服务器系统。在一个实施例中,数据处理系统800是在移动、手持式或嵌入式装置中使用的片上系统(soc)集成电路。
数据处理系统800的一实施例能够包括以下项或者包含在其内:基于服务器的游戏平台、包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,数据处理系统800是移动电话、智能电话、平板计算装置或移动因特网装置。数据处理系统800也能够包括诸如以下项的可穿戴装置、与其耦合或者集成在其内:智能手表可穿戴装置、智能眼镜装置、增强现实装置或虚拟现实装置。在一些实施例中,数据处理系统800是具有一个或更多个处理器802和由一个或更多个图形处理器501生成的图形界面的电视或机顶盒装置。
在一些实施例中,一个或更多个处理器802各自包括用于处理指令的一个或更多个处理器核807,指令在被执行时,执行用于系统和用户软件的操作。在一些实施例中,一个或更多个处理器核807的每个核配置成处理特定指令集809。在一些实施例中,指令集809可促进复杂指令集计算(cisc)、精简指令集计算(risc)或经极长指令字(vliw)的计算。多个处理器核807可各自处理不同指令集809,不同指令集可包括促进其它指令集的仿真的指令。处理器核807也可包括其它处理装置,如数字信号处理器(dsp)。
在一些实施例中,处理器802包括高速缓冲存储器804。视体系结构而定,处理器802能够具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,在处理器802的各种组件之间共享高速缓冲存储器。在一些实施例中,处理器802也使用外部高速缓存(例如,第3级(l3)高速缓存或末级高速缓存(llc))(未示出),通过使用已知高速缓存一致性技术,可在处理器核807之间共享外部高速缓存。寄存器堆806另外包括在处理器802中,寄存器堆806可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其它寄存器对处理器802的设计而言可以是特定的。
在一些实施例中,处理器802耦合到处理器总线810,以在处理器802与系统800中的其它组件之间传送数据信号。系统800使用示范“集线器”系统体系结构,包括存储器控制器集线器816和输入输出(i/o)控制器集线器830。存储器控制器集线器816促进在存储器装置与系统800的其它组件之间的通信,而i/o控制器集线器(ich)830提供经本地i/o总线到i/o装置的连接。
存储器装置820能够是动态随机存取存储器(dram)装置、静态随机存取存储器(sram)装置、闪速存储器装置或具有适合性能以充当过程存储器的某一其它存储器装置。存储器820能够存储数据822和指令821以在处理器802执行过程时使用。存储器控制器集线器816也与可选外部图形处理器812耦合,处理器112可与处理器802中的一个或更多个图形处理器808进行通信以执行图形和媒体操作。
在一些实施例中,ich830允许外设经高速i/o总线连接到存储器820和处理器802。i/o外设包括音频控制器846、固件接口828、无线收发器826(例如,wi-fi、蓝牙)、数据存储装置824(例如,硬盘驱动器、闪速存储器等)及用于耦合遗留装置(例如,个人系统2(ps/2))到系统的遗留i/o控制器。一个或更多个通用串行总线(usb)控制器842连接输入装置,如键盘和鼠标组合844。网络控制器834也可耦合到ich830。在一些实施例中,高性能网络控制器(未示出)耦合到处理器总线810。
如图9中所示,装置900可包括外壳902、显示器904、输入/输出(i/o)装置906、摄像机905、910及天线908。装置900也可包括导航特征912。显示器904可包括用于显示对移动计算装置适当的信息的任何适合的显示单元。i/o装置906可包括用于将信息输入移动计算装置中的任何适合的i/o装置。i/o装置906的示例可包括字母数字键盘、数字小键盘、触摸板、输入键、按钮、开关、摇壁开关、麦克风、扬声器、语音识别装置和软件等等。信息也可通过麦克风(未示出)输入到装置900中,或者可由语音识别装置数字化。实施例在此上下文中不受限制。在一些实施例中,装置900还包括数据处理系统800。
可使用硬件元素、软件元素或两者的组合实现本文中描述的实施例。硬件元素或模块的示例包括:处理器、微处理器、电路、电路元素(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(asic)、可编程逻辑装置(pld)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、逻辑门、寄存器、半导体装置、芯片、微芯片、芯片集等等。软件元素或模块的示例包括:应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、例程、子例程、函数、方法、过程、软件接口、应用编程接口(api)、指令集、计算代码、计算机代码、代码段、计算机代码段、数据字、值、符号或其任何组合。确定是否使用硬件元素和/或软件元素实现一实施例可根据为设计选择考虑的任何数量的因素而改变,这些因素诸如但不限于:期望的计算速率、功率电平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度及其它设计或性能约束。
可由在机器可读存储媒体上存储的代表性指令实现至少一个实施例的一个或更多个方面。此类指令可在其由机器执行期间完全或至少部分驻留在主存储器内和/或处理器内,存储指令的主存储器和处理器部分随后也构成机器可读存储媒体。可编程逻辑电路可具有由实现计算机可读媒体的处理器配置的寄存器、状态机等。经过编程的此类逻辑电路随后可被理解成已在物理上变换成落入在本文中描述的实施例的范围内的系统。表示处理器内的各种逻辑的指令在由机器读取时也可促使机器制成遵循本文中描述的体系结构的逻辑和/或执行本文中描述的技术。称为单元设计(celldesign)的此类表示或ip核可存储在有形机器可读媒体上,并且提供到各种客户或生产设施以加载到实际形成逻辑或处理器的制造机器中。
虽然已参照实施例描述了本文中陈述的某些特征,但并不打算从限制的意义来解释本说明书。因此,本公开有关领域的技术人员明白本文中描述的实现的各种修改及其它实现,这些被认为是在本公开的精神和范围内。
以下示例涉及特定示范实施例。
在一个或更多个第一实施例中,用于并行视频编码的设备包括一个或更多个编码管线,用于处理先前的视频帧或其部分,并且用于生成指示编码过程的一个或更多个中间参数。设备还包括另外的编码管线,用于处理当前视频帧或其部分。另外的编码管线包括码率控制器,码率控制器还包括先前的视频帧大小估计模块,该模块包括用于至少部分基于一个或更多个中间参数,估计用于先前的视频帧的比特率的逻辑。码率控制器还包括耦合到大小估计模块的缓冲器充满度更新模块,缓冲器充满度更新模块包括用于至少部分基于比特率估计,更新缓冲器充满度的逻辑。码率控制器还包括目标比特率判定模块,目标比特率判定模块包括用于至少部分基于比特率估计和缓冲器充满度更新,为当前视频帧确定目标比特率的逻辑。
为促进第一实施例,估计模块用于以取决于指示从先前的视频帧处理可获得的中间参数的同步信息的方式,估计先前的帧的比特率。
为促进第一实施例,一个或更多个编码管线还包括用于处理在当前视频帧前面紧邻的第一视频帧或其部分的第一编码管线、用于处理在第二视频帧前面紧邻的第三视频帧的第二编码管线。大小估计模块包括用于根据至少以下之一,估计第一视频帧比特率的逻辑:第一中间参数集,包括与第一视频帧关联的目标比特率、与第二视频帧关联的实际比特率和与第二视频帧关联的估计的比特率;第二中间参数集,包括与第一视频帧关联的估计的预测失真(pd)和与第一视频帧关联的量化参数(qp)值、与第二视频帧关联的qp值及与第二视频帧关联的实际比特率;第三中间参数集,包括与第一视频帧关联的实际pd、与第二视频帧关联的实际pd和与第二视频帧关联的实际比特率;或者第四中间参数集,包括与第一视频帧关联的量化系数的统计。
为促进上面刚描述的实施例,大小估计模块包括用于基于与第一视频帧关联的估计的预测失真和qp值和与第二视频帧关联的估计的预测失真、qp值和实际比特率,估计第一视频帧比特率的逻辑。
为促进上述的实施例,大小估计模块还包括用于基于第一视频帧的实际预测失真、编码模式和运动向量估计、第二视频帧的实际预测失真和第二视频帧的实际比特率的函数,估计第一视频帧比特率的逻辑。
为促进上述的实施例,大小估计模块还包括用于执行以下操作的逻辑:响应第一视频帧的实际pd为可用,基于第一视频帧的实际pd,估计第一视频帧比特率,以及响应第一视频帧的实际pd为不可用,基于与第一视频帧关联的估计的pd或目标比特率,估计第一视频帧比特率。
为促进第一实施例,一个或更多个编码管线还包括用于处理在当前视频帧前面紧邻的第一视频帧或其部分的第一编码管线、用于处理在第二视频帧前面紧邻的第三视频帧的第二编码管线,以及大小估计模块还包括用于至少部分基于从第二视频帧处理生成的一个或更多个中间参数,估计第一视频帧比特率的逻辑。
为促进第一实施例,码率控制器还包括用于至少部分基于先前的帧类型,确定与先前的帧关联的比特率的逻辑。
为促进上面刚描述的实施例,一个或更多个编码管线还包括用于处理在当前视频帧前面紧邻的第一视频帧或其部分的第一编码管线和用于处理在第二视频帧前面紧邻的第三视频帧的第二编码管线。码率控制器还包括用于响应第一帧为第一帧内帧,或者响应第二视频帧为帧内帧、场景变化帧或黄金帧,将第一视频帧比特率估计为目标比特率的逻辑。
为促进第一实施例,一个或更多个编码管线还包括用于处理在当前视频帧前面紧邻的第一视频帧或其部分的第一编码管线和用于处理在第二视频帧前面紧邻的第三视频帧的第二编码管线。缓冲器充满度更新模块还包括用于基于在用于第二视频帧的实际与估计的比特率之间的差和在用于第一视频帧的估计的比特率与平均比特率之间的差的函数,更新缓冲器充满度的逻辑。
为促进第一实施例,码率控制器还包括用于以取决于当前帧类型和先前的帧类型的方式,为当前视频帧确定目标比特率的逻辑。
在一个或更多个第二实施例中,视频编码器包括一个或更多个编码管线,用于处理先前的视频帧或其部分,并且用于生成指示编码过程的一个或更多个中间参数。视频编码器还包括用于编码当前视频帧或其部分的另外的编码管线,其中另外的编码管线包括带有用于执行以下操作的部件的码率控制器:至少部分基于一个或更多个中间参数,估计用于先前的视频帧的比特率;至少部分基于比特率估计,更新缓冲器充满度;以及至少部分基于比特率估计和缓冲器充满度更新,为当前视频帧确定目标比特率。
在一个或更多个第三实施例中,用于并行视频编码的计算机实现的方法包括:通过一个或更多个编码管线,处理一个或更多个先前的视频帧或其部分,并且生成指示处理的一个或更多个中间参数。方法还包括:通过另一编码管线,处理当前视频帧或其部分,其中处理当前视频帧还包括:至少部分基于一个或更多个中间参数,估计用于先前的视频帧的比特率;至少部分基于比特率估计,更新缓冲器充满度;以及至少部分基于比特率估计和缓冲器充满度更新,为当前视频帧确定目标比特率。
为促进上面刚描述的第三实施例,估计先前的帧的比特率取决于指示从先前的视频帧处理可获得的中间参数的同步信息。
为促进上面刚描述的第三实施例,估计先前的视频帧的比特率还包括:响应第一视频帧的实际pd为可用,基于第一视频帧的实际pd,估计第一视频帧比特率,以及响应第一视频帧的实际pd为不可用,基于与第一视频帧关联的估计的pd或目标比特率,估计第一视频帧比特率。
为促进上述的第三实施例,处理一个或更多个先前的视频帧还包括:处理在当前视频帧前面紧邻的第一视频帧,以及处理在第一视频帧前面紧邻的第二视频帧。根据至少以下之一,估计第一视频帧比特率:第一中间参数集,包括与第一视频帧关联的目标比特率、与第二视频帧关联的实际比特率和与第二视频帧关联的估计的比特率;第二中间参数集,包括与第一视频帧关联的估计的预测失真(pd)和与第一视频帧关联的量化参数(qp)值、与第二视频帧关联的qp值及与第二视频帧关联的实际比特率;第三中间参数集,包括与第一视频帧关联的实际pd、与第二视频帧关联的实际pd和与第二视频帧关联的实际比特率;或者第四中间参数集,包括与第一视频帧关联的量化系数的统计。
为促进上面刚描述的第三实施例,基于与第一视频帧关联的估计的预测失真和qp值和与第二视频帧关联的估计的预测失真、qp值和实际比特率,估计第一视频帧比特率。
为促进上述的第三实施例,基于第一视频帧的实际预测失真、编码模式和运动向量估计、第二视频帧的实际预测失真和第二视频帧的实际比特率的函数,估计第一视频帧比特率。
为促进上述的第三实施例,处理一个或更多个先前的视频帧还包括:处理在当前视频帧前面紧邻的第一视频帧,以及处理在第一视频帧前面紧邻的第二视频帧。估计先前的帧比特率还包括至少部分基于从第二视频帧处理生成的一个或更多个中间参数,估计第一视频帧比特率。
为促进第三实施例,至少部分基于先前的帧类型,估计与先前的帧关联的比特率。
为促进上面刚描述的第三实施例,处理先前的视频帧还包括:处理在当前视频帧前面紧邻的第一视频帧,以及处理在第一视频帧前面紧邻的第二视频帧。响应第一帧为第一帧内帧,或者响应第二视频帧为帧内帧、场景变化帧或黄金帧,将第一视频帧比特率估计为目标比特率。
为促进第三实施例,处理先前的视频帧还包括:处理在当前视频帧前面紧邻的第一视频帧,以及处理在第一视频帧前面紧邻的第二视频帧。基于在用于第二视频帧的实际与估计的比特率之间的差和在用于第一视频帧的估计的比特率与平均比特率之间的差的函数,更新缓冲器充满度。
为促进第三实施例,为当前视频帧确定目标比特率取决于当前帧类型和先前的帧类型。
在一个或更多个第四实施例中,一个或更多个机器可读媒体,在其上面存储有多个指令,多个指令在计算装置上执行时,促使计算装置执行第三实施例的任何一个实施例。
在一个或更多个第四实施例中,一个或更多个机器可读媒体,在其上面存储有多个指令,多个指令在计算装置上执行时,促使计算装置执行并行视频编码的方法,方法包括:通过一个或更多个编码管线,处理一个或更多个先前的视频帧或其部分,并且生成指示处理的一个或更多个中间参数,以及通过另一编码管线,处理当前视频帧或其部分。处理当前视频帧还包括:至少部分基于一个或更多个中间参数,估计用于先前的视频帧的比特率;至少部分基于估计的比特率,更新缓冲器充满度;以及至少部分基于比特率估计和缓冲器充满度更新,为当前视频帧确定目标比特率。
为促进上面刚描述的第五实施例,媒体还包括在其上面存储的指令,指令在由计算装置执行时,促使装置执行还包括以下操作的方法:处理在当前视频帧前面紧邻的第一视频帧,以及处理在第一视频帧前面紧邻的第二视频帧。指令还促使处理器根据至少以下之一,估计第一视频帧比特率:第一中间参数集,包括与第一视频帧关联的目标比特率、与第二视频帧关联的实际比特率和与第二视频帧关联的估计的比特率;第二中间参数集,包括与第一视频帧关联的估计的预测失真(pd)和与第一视频帧关联的量化参数(qp)值、与第二视频帧关联的qp值及与第二视频帧关联的实际比特率;第三中间参数集,包括与第一视频帧关联的实际pd、与第二视频帧关联的实际pd和与第二视频帧关联的实际比特率;或者第四中间参数集,包括与第一视频帧关联的量化系数的统计。
将认识到的是,实施例不限于如此描述的示范实施例,而是能够在不脱离随附权利要求书的范围的情况下通过修改和变化来实践。例如,上述实施例可包括特征的特定组合。然而,上述实施例在此方面不受限制,并且在实施例中,上述实施例可包括:只执行此类特征的子集,执行不同顺序的此类特征,执行此类特征的不同组合,和/或执行与明确列出的那些特征不同的另外特征。因此,应参照随附权利要求书连同此类权利要求享有的等效物的完全范围来确定范围。