322、一、321〇的源帧 临时存储器存储区域(320)中。帧缓冲区(321、322等)在源帧存储区域(320)中保持一个源 帧。在一个或多个源帧(311)已被存储在帧缓冲器(321,322等)中后,帧选择器(330)周期性 地从源帧存储区域(320)中选择一个体源帧。帧选择器(330)选择帧以供输入到编码器 (340)的次序可不同于视频源(310)产生这些帧的次序,例如帧可在次序上领先,以促成时 间上向后的预测。在编码器(340)之前,编码器系统(300)可包括预处理器(未示出),该预处 理器在编码之前执行对选中的帧(331)的预处理(例如滤波)。预处理还可包括到供编码的 到主要和次要分量的色彩空间转换。通常,在编码之前,视频已被转换成诸如YUV的色彩空 间,其中亮度(Y)分量的样本值表示明亮度或强度值,而色度(U,V)分量的样本值表示色差 值。色度样本值可以被子采样到较低的色度采样率(例如用于YUV 4:2:0格式),或者色度样 本值可以具有与亮度样本值相同的分辨率(例如用于YUV 4:4:4格式)。或者,视频可用另一 格式(例如,RGB 4:4:4格式)来编码。
[0056] 编码器(340)编码选中的帧(331)以产生经编码的帧(341)并且还产生存储器管理 控制操作("MMC0")信号(342)或参考图片集("RPS")信息。如果当前帧不是已被编码的第一 帧,则在执行其编码处理时,编码器(340)可以使用已经被存储在经解码帧的临时存储器存 储区域(360)中的一个或多个先前被编码/解码的帧(369)。这样的存储的经解码帧(369)被 用作用于当前源帧(331)的内容的帧间预测的参考帧。一般来说,编码器(340)包括执行编 码任务的多个编码模块,编码任务为诸如分割成小块、帧内预测估计和预测、运动估计和补 偿、频率变换、量化和熵编码。由编码器(340)执行的确切操作可以取决于压缩格式而变化。 输出的经编码数据的格式可以是HEVC格式、Windows媒体视频格式、VC-1格式、MPEG-x格式 (例如,MPEG-1、MPEG-2或MPEG-4)、Η · 26x格式(例如,Η · 261、Η · 262、Η · 263或Η · 264)或其它格 式的变型或扩展。
[0057]编码器(340)可以将帧分割成相同尺寸或不同尺寸的多个小块。例如,编码器 (340)沿小块行和小块列来拆分帧,这些小块行和小块列利用帧边界定义在该帧内的小块 的水平和垂直边界,其中每个小块是矩形区域。小块通常被用于改善针对并行处理的选项。 帧还可以被组织成一个或多个片,其中一个片可以是整个帧或该帧的区域。片可以独立于 帧中的其它片编码,这改善了错误复原性。出于编码和解码的目的,片或小块的内容被进一 步分割成块或其它样本值集。
[0058]对于根据HEVC标准的句法来说,编码器将帧(或片或小块)的内容拆分成编码树单 元。编码树单元("CTU")包括被组织为亮度编码树块("CTB")的亮度采样值,并且对应的色 度采样值被组织为两个色度CTBXTU(及其CTB)的尺寸由编码器来选择,并且可例如为 64x64、32x32或16x16个样本值。CTU包括一个或多个编码单元。编码单元("CU")具有亮度编 码块("CB")和两个对应的色度CB。例如,具有64x64亮度CTB和两个64x64色度CTB (YUV4:4:4 格式)的CTU可以被拆分成4个⑶,其中每个⑶包括一 32x32亮度CB和两个32x32色度CB,并且 每个CU可能被进一步拆分成更小的CU。或者,作为另一示例,具有64x64亮度CTB和两个 32x32色度CTB(YUV 4:2:0格式)的CTU可以被拆分成4个⑶,其中每个⑶包括一32x32亮度CB 和两个16x16色度CB,并且每个⑶可能被进一步拆分成更小的⑶。⑶的最小允许尺寸(例如8 X 8、16X16)可被信号化在位流中。
[0059] 通常,CU具有诸如帧间或帧内之类的预测模式。出于信号化预测信息(例如预测模 式细节、移位值等)和/或预测处理的目的,CU包括一个或多个预测单元。预测单元("PU")具 有亮度预测块("PB")和两个对应的色度1?。对于帧内预测的CU,PU与CU具有相同的尺寸,除 非CU具有最小尺寸(例如8x8)。在该情况下,CU可被拆分成四个较小的PU(例如,如果最小CU 尺寸为8x8,则PU为4x4),或者PU可具有最小CU尺寸,如CU的句法元素所指示的。出于残留编 码/解码的目的,CU还具有一个或多个变换单元,其中变换单元("TU")具有一变换块("TB") 和两个色度TB。在帧内预测的CU中的PU可以包含单个TU(尺寸与PU相同)或多个TU。如本文 中所使用的,术语"±夬"可以指示CB、PB、TB或某些其它样本值集,这取决于上下文。编码器决 定如何将视频分割成CTU、⑶、PU、TU等。
[0060] 回到图3,编码器根据来自源帧(331)中的其它、先前重构的样本值的预测来表示 该帧(331)内编码的块。对于帧内BC预测,图片内估计器估计块相对于其它、先前重构的采 样值的块的位移。帧内预测参考区域是帧中用于生成块的BC预测值的样本区域。帧内预测 区域可用块向量("BV")值(在BV估计中确定,随后被编码)来指示,或可替换地,用指示块散 列字典中的重构块的散列值来指示。对于块的空间内预测,图片内估计器估计相邻的经重 构的样本值到该块的外插。图片内估计器输出经熵编码的预测信息(例如帧内BC预测的BV 值或散列值、以及空间内预测的预测模式(方向))。帧内预测预测器应用预测信息来确定帧 内预测值。
[0061] 编码器(340)依据来自参考帧的预测来表示源帧(331)的帧间编码的预测的块。运 动估计器估计块相对于一个或多个参考帧(369)的运动。当使用多个参考帧时,这多个参考 帧可来自不同的时间方向或相同的时间方向。经运动补偿的预测参考区域是(诸)参考帧中 用于生成当前帧中的样本块的经运动补偿的预测值的样本区域。运动估计器输出诸如运动 向量信息之类被熵编码的运动信息。运动补偿器将运动向量应用于参考帧(369)以确定经 运动补偿的预测值。
[0062] 编码器确定在块预测值(帧内或帧间)和对应的原始值之间的差值(如果有的话)。 这些预测残留值将进一步使用频率变换、量化和熵编码来编码。例如,编码器(340)为图片、 小块、片和/或视频的其它部分设置量化参数("QP")的值,并相应地量化变换系数。编码器 (340)的熵编码器压缩经量化的变换系数值以及某些辅助信息(例如运动向量信息、BV值、 散列值、QP值、模式决策、参数选择)。典型的熵编码技术包括指数-Golomb编码、算术编码、 差分编码、Huffman编码、行程长度编码、可变长度到可变长度("V2V")编码、可变长度到固 定长度("V2F")编码、LZ编码、词典编码、概率区间划分熵编码("PIPE")和上述编码的组合。 熵编码器可针对不同种类的信息使用不同的编码技术,并可从特定编码技术内的多个代码 表中进行选择。
[0063] 经编码的帧(341)和MM⑶/RPS信息(342)通过解码处理仿真器(350)来处理。解码 处理仿真器(350)实现了解码器的一些功能,例如对任务进行解码以重构参考帧。解码处理 仿真器(350)使用MMC0/RPS信息(342)来确定给定的经编码帧(341)是否需要被重构并被存 储以供在对要编码的后续帧的帧间预测中用作参考帧。如果MMC0/RPS信息(342)指示经编 码的帧(341)需要被存储,则解码处理仿真器(350)对将由解码器进行的解码处理进行建 模,该解码器接收经编码的帧(341)并产生相应的经解码的帧(351)。通过这么做,当编码器 (340)已经使用已被存储在经解码帧存储区域(360)中的经解码的帧(369)时,解码处理仿 真器(350)还使用来自存储区域(360)的经解码的帧(369)作为解码处理的一部分。
[0064]经解码帧临时存储器存储区域(360)包括多个帧缓冲存储区域(361、362、···、 36η)。解码处理仿真器(350)使用MMC0/RPS信息(342)来管理存储区域(360)中的内容,以便 标识出具有编码器(340)不再需要将其用作参考帧的帧的任何帧缓冲器(361、362等)。在对 解码处理进行建模之后,解码处理仿真器(350)在帧缓冲区(36U362等)中存储已经以此方 式标识出的新解码的帧(351)。
[0065]经编码的帧(341)和丽⑶/RPS信息(342)被缓冲在临时的经编码数据区域(370) 中。被聚集在经编码数据区域(370)中的经编码数据包含一个或多个图片的经编码数据作 为基本经编码视频位流的句法的一部分。在经编码数据区域(370)中被聚集的经编码数据 还可包括与经编码的视频数据相关的媒体元数据(例如作为一个或多个补充增强信息 ("SEI")消息或视频可用性信息("VUI")消息中的一个或多个参数)。
[0066]来自临时的经编码数据区域(370)的经聚集的数据(371)由信道编码器(380)处 理。信道编码器(380)可以(例如根据诸如IS0/IEC 13818-1的媒体流复用格式)来分组化经 聚集的数据以供作为媒体流来传输,在这种情况中,信道编码器(380)可以添加句法元素作 为媒体传输流的句法的一部分。或者,信道编码器(380)可以(例如根据诸如IS0/IEC 14496-12的媒体容器格式)组织经聚集的数据以供作为文件来存储,在这种情况中,信道编 码器(380)可以添加句法元素作为媒体存储文件的句法的一部分。或者,更一般地,信道编 码器(380)可以实现一个或多个媒体系统复用协议或传输协议,在这种情况中,信道编码器 (380)可以添加句法元素作为(诸)协议的句法的一部分。信道编码器(380)将输出提供给信 道(390 ),该信道(390)表示存储、通信连接或该输出的另一信道。
[0067] IV.示例解码器系统。
[0068] 图4是示例解码器系统(400)的框图。解码器系统(400)可以是能够在多种解码模 式(例如针对实时通信的低等待时间解码模式以及针对来自文件或流中的媒体回放的常规 解码模式)中的任一者操作的通用解码工具,或它可以是适用于一种这样的解码模式的专 用解码工具。解码器系统(400)可以被实现为操作系统模块、应用库的一部分或独立的应 用。总体上,解码器系统(400)从信道(410)接收经编码数据并产生经重构的帧作为针对输 出目的地(490)的输出。经编码数据可包括使用基于散列的块匹配来编码的内容。
[0069] 解码器系统(400)包括信道(410),该信道(410)可以表示存储、通信连接或针对作 为输入的经编码数据的另一信道。信道(410)产生已经被信道编码的经编码数据。信道解码 器(420)可以处理经编码数据。例如,信道解码器(420)可以(例如根据诸如IS0/IEC 13818- 1的媒体流复用格式)来去分组化已被聚集以供作为媒体流来传输的数据,在这种情况中, 信道解码器(420)可以解析所添加的作为媒体传输流的句法的一部分的句法元素。或者,信 道解码器(420)可以(例如根据诸如ISO/IEC 14496-12的媒体容器格式)来将已被聚集以供 作为文件来存储的经编码的视频数据分开,在这种情况中,信道解码器(420)可以解析所添 加的作为媒体存储文件的句法的一部分的句法元素。或者,更一般地,信道解码器(420)可 以实现一个或多个媒体系统去复用协议或传输协议,在这种情况中,信道解码器(420)可以 解析所添加的作为(诸)协议的句法的一部分的句法元素。
[0070] 从信道解码器(420)输出的经编码数据(421)被存储在临时的经编码数据区域 (430)中,直到已经接收到足够数量的这样的数据。经编码数据(421)包括经编码的帧(431) 和MMC0/RPS信息(432)。在经编码数据区域(430)中的经编码数据(421)包含一个或多个图 片的经编码数据作为基本编码的视频比特流的句法的一部分。在经编码数据区域(430)中 的经编码数据(421)还可包括与经编码的视频数据相关的媒体元数据(例如作为一个或多 个SEI消息或VUI消息中的一个或多个参数)。
[0071] -般来说,经编码数据区域(430)临时存储经编码数据(421),直到这样的经编码 数据(421)被解码器(450)使用。此时,经编码帧(431)和MMC0/RPS信息(432)的经编码数据 被从经编码数据区域(430)传输到解码器(450)。当解码继续时,新的经编码数据被添加到 经编码数据区域(430)并且保留在经编码数据区域(430)中的最旧的经编码数据被传输到 解码器(450)。
[0072] 解码器(450)周期性地解码经编码帧(431)以产生相应的经解码帧(451)。在适当 时,当执行其解码处理时,解码器(450)可以将一个或多个先前解码的帧(469)用作帧间预 测的参考帧。解码器(450)从经解码帧临时存储器存储区域(460)中读取这样的先前解码的 帧(469)。通常,解码器(450)包括执行诸如熵解码、逆量化、逆频率变换、帧内预测、运动补 偿和小块合并之类的解码任务的多个解码模块。由解码器(450)执行的确切操作可以取决 于压缩格式而变化。
[0073]例如,解码器(450)接收经压缩的帧或帧序列的经编码数据,并产生包括经解码的 帧(451)的输出。在解码器(450)中,缓冲器接收针对经压缩的帧的经编码数据,并在适当 时,使得接收到的经编码数据对熵解码器可用。熵解码器对经熵编码的量化数据以及经熵 编码的辅助信息进行熵解码,通常应用编码器中执行的熵编码的逆来进行熵解码。运动补 偿器将运动信息应用于一个或多个参考帧以形成针对正被重构的帧的任何帧间编码块的 经运动补偿的预测值。帧内预测模块可从相邻的、先前重构的样本值中空间地预测当前块 的样本值,或者对于帧内BC预测,使用帧中的帧内预测区域的先前重构的样本值来预测当 前块的样本值。帧内预测区域可用BV值来指示,或可替换地,用指示块散列字典中的重构块 的散列值来指示。解码器(450)还重构预测残留值。逆量化器对经熵解码的数据进行逆量 化。例如,解码器(450)基于比特流中的句法元素来设置图片、小块、片和/或其它视频部分 的QP值,并相应地对变换系数进行逆量化。逆频率变换器将经量化的频域数据转换成空间 域信息。对于帧间预测的块,解码器(450)将经重构的预测残留值与经运动补偿的预测组 合。解码器(450)可以类似地将预测残留值与来自帧内预测的预测组合。视频解码器(450) 中的运动补偿环路包括用于平滑经解码的帧(451)中的块边界行和/或列上的间断的自适 应去块滤波器。
[0074]经解码帧临时存储器存储区域(460)包括多个帧缓冲区存储区域(461、462、…、 46η)。经解码帧存储区域(460)是经解码图片缓冲区的一个示例。解码器(450)使用MMC0/PS 信息(432)来标识该解码器可将经解码帧(451)存储在其中的帧缓冲器(461、462等)。解码 器(450)将经解码的帧(451)存储在那个帧缓冲器中。
[0075]输出序列发生器(480)使用ΜΜ⑶/RPS信息(432)来标识按输出次序将产生的下一 帧何时可在经解码帧存储区域(460)中获得。当按输出次序将产生的下一帧(481)可在经解 码帧存储区域(460)中获得时,输出序列发生器(480)读取该下一帧并将其输出到输出目的 地(490)(例如显示器)。一般来说,输出序列发生器(480)将帧从经解码帧存储区域(460)中 输出的次序可以与解码器(450)解码这些帧的次序不同。
[0076] V.示例视频编