视频编码中的速率控制的利记博彩app
【技术领域】
[0001]本公开涉及数据处理。更具体地,本公开涉及视频编码。
【背景技术】
[0002]已知提供如下所述的专用硬件,所述专用硬件被配置为执行视频编码,涉及接收视频序列和将此视频序列编码为压缩版本,该压缩版本可以作为编码的比特流被输出。通过使用诸如H.264或VP8之类的现代视频压缩格式实现输入视频序列的非常高水平的压缩,并且通过并行视频编码过程以由多个处理器核执行,现代的视频编码器可以是高效的。
[0003]通过多个处理器核的视频编码过程的并行化可以例如被实施为如图1A中所示,图1A代表被细分为宏块的视频序列的帧。在左边所示出的单核示例中,处理器核可以简单地按光栅扫描顺序进行,并且如图1A中所示出的,散列的宏块已经被处理器核编码并且处理器核当前正在编码用点标记的宏块。在多核建立中,并行化可以通过将一帧视频序列分为片来实现,如图1A中右边所示,其中该(部分)帧被细分为的两片被互相独立编码,第一片被分配到第一处理器核并且第二片被分配到第二处理器核。
[0004]视频编码过程本身已知被提供为图1B中所示意性示出的。图1B示出了输入视频序列的宏块首先经受运动估计过程的方式,然后变换(例如,熟知的离散余弦变换)被应用,然后变换的系数的量化被执行以实现所需的一些数据压缩。
[0005]编码过程的最后阶段通过图1B中的熵编码块来表示,在其之后视频的被编码的宏块可以作为编码的比特流输出。图1B还示出了与输出比特流相关的尺寸信息被反馈回到变换与量化阶段的方式并且更具体地该比特率信息被应用到量化步骤以判定应用到变换的系数的量化的水平,以便于使得输出比特流比特率被维持在期望的水平成为可能。
[0006]还已知的是,当寻求在多核系统中实施视频编码器时,优势可以源于将视频编码过程分为两个远的阶段。这被示意性地示出在图2中。在第一阶段中的此配置中,上面参照图1B提到的运动估计和变换与量化过程通过以条纹为基础将宏块分配到处理器核在可用的多个处理器核之间来被划分,其中条纹代表穿过视频序列的帧的水平宏块带(例如,两个宏块高)。相应的条纹的处理的错开的本质与每个条纹的宏块可以依赖于先前条纹的宏块的事实相对应,并且因此每个条纹的处理中的特定时间滞后对使得这些依赖被解决成为可能来说是必要的。在阶段I处由每个处理器核产生的经过变换与量化的宏块被存储在中间缓冲器中,针对尚待执行的视频编码过程的第二阶段它们可以从中间缓冲器中被取回。视频编码过程的第二阶段是上面关于图1B提到的熵编码,并且如图2中所示,为了生成输出编码视频比特流,视频编码过程的第二阶段以片为基础由相应的处理器核来执行。
[0007]图2还示出了来自输出编码视频比特流的信息(更具体地,比特率信息)被反馈回到阶段一视频编码过程,从而可以做出量化变换系数的过程中的量化参数的选择并且维持输出编码视频比特流的目标比特率。然而,在以图2中示出的方式被配置的视频编码器中一些劣势可能会出现。另一方面,被编码的宏块的数量依赖于独立核的时序(timing),结果是比特流输出变成依赖于特定硬件时序。结果,这样的配置的编码性能缺乏不期望的一致性和重复性。第二,在处理的第二阶段(比特流熵编码)之前,用于编码特定宏块的比特的最终数量是未知的,处理的第二阶段在“条纹处理”阶段(阶段I)之后一些时间发生,给予比特信息的反馈潜在重要的延迟。
【发明内容】
[0008]从第一方面看,提供了一种视频编码器,该视频编码器被配置为执行视频编码过程,该视频编码过程包括接收输入视频序列和以片为基础将输入视频序列编码到输出比特流中,视频编码器包括:编码阶段,该编码阶段包括量化电路,该量化电路被配置为将选择的量化程度应用到输入视频序列的宏块的编码中以生成量化的部分编码宏块,其中量化电路被配置为依赖复杂性估计为当前片中的每个宏块选择选择的量化程度,其中复杂性估计表明针对该宏块定义的量化的部分编码宏块的预定集的预期的熵编码复杂性,并且量化电路不依赖预定集外的量化的部分编码宏块;其中针对当前片的至少一个宏块,预定集不包括当前片的所有之前的输出比特流顺序宏块。
[0009]从第二方面看,提供了一种执行视频编码来以片为基础将输入视频序列编码到输出比特流的方法,该方法包括以下步骤:
[0010]接收输入视频序列;以及
[0011]将选择的量化程度应用到输入视频序列的宏块的编码以生成量化的部分编码宏块,
[0012]其中当前片中的每个宏块的选择的量化程度依赖复杂性估计被选择,复杂性估计表明针对该宏块定义的量化的部分编码宏块的预定集的预期的熵编码复杂性,并且选择的量化程度不依赖预定集外的量化的部分编码宏块,
[0013]其中针对当前片的至少一个宏块,预定集不包括当前片的所有之前的输出比特流顺序宏块。
[0014]从第三方面看,提供了一种视频编码器,该视频编码器被配置为执行视频编码过程,视频编码过程包括接收输入视频序列和以片为基础将输入视频序列编码到输出比特流中,视频编码器包括:
[0015]用于接收输入视频序列的装置;以及
[0016]用于将选择的量化程度应用到输入视频序列的宏块的编码以生成量化的部分编码宏块的装置,
[0017]其中当前片中的每个宏块的选择的量化程度依赖复杂性估计被选择,复杂性估计表明针对该宏块定义的量化的部分编码宏块的预定集的预期的熵编码复杂性,并且选择的量化程度不依赖预定集外的量化的部分编码宏块;
[0018]其中针对当前片的至少一个宏块,预定集不包括当前片的所有之前的输出比特流顺序宏块。
【附图说明】
[0019]仅作为示例,将参照如附图中所示出的实施例进一步描述本发明,其中:
[0020]图1A示意性地示出了根据现有技术的针对单个处理器核视频编码器和多核视频编码器以宏块为基础的视频编码;
[0021]图1B示意性地示出了根据现有技术的视频编码过程的主要阶段;
[0022]图2示意性地示出了根据现有技术的视频编码过程到第一阶段和第二阶段的细分,第一阶段生成变换与量化的宏块,第二阶段执行熵编码;
[0023]图3示意性地示出了一个实施例中的视频编码器;
[0024]图4示意性地示出了在一个实施例中包括被配置为执行视频编码的多核视频引擎的数据处理系统;
[0025]图5示意性地示出了图3中所示出的变换与量化电路的更多细节;
[0026]图6A、6B和6C示出了在一个实施例中针对选择的当前宏块被用在复杂性估计的确定中的量化的部分编码宏块的预定集;
[0027]图7示出了在一个实施例中宏块依赖集(dependency set)可以被定义的方式;以及
[0028]图8示意性地示出了一个实施例的方法中被采取的一系列步骤。
【具体实施方式】
[0029]在至少一些示例实施例中,视频编码器被配置为执行视频编码过程,该视频编码过程包括接收输入视频序列和以片为基础将输入视频序列编码到输出比特流中,视频编码器包括:编码阶段,该编码阶段包括量化电路,该量化电路被配置为将选择的量化程度应用到输入视频序列的宏块的编码中以生成量化的部分编码宏块,其中量化电路被配置为依赖复杂性估计来为当前片中的每个宏块选择选择的量化程度,其中复杂性估计表明针对该宏块定义的量化的部分编码宏块的预定集的预期的熵编码复杂性,并且所述量化电路不依赖预定集外的量化的部分编码宏块;其中针对当前片的至少一个宏块,预定集不包括当前片的所有之前的输出比特流顺序宏块。
[0030]本发明的发明人意识到尽管在最终的熵编码被视频编码器执行之前,视频序列的给定部分的产生的编码尺寸(即,被编码的位数),并且因此编码视频比特流的产生的比特率不能是已知的,但是可以基于复杂性估计通过指导编码阶段中的量化电路的操作(尤其就应用到宏块的编码的量化的程度而言)来获得在编码比特率上的有利的控制程度。该复杂性估计给出与当前在编码阶段内被编码的宏块相关的预期的熵编码复杂性的指示。因此