掌桥专利:专业的专利平台
掌桥专利
首页

具有分类的基于历史的候选列表

文献发布时间:2023-06-19 10:22:47


具有分类的基于历史的候选列表

本申请要求2019年8月14日提交的美国申请No.16/540,893的优先权,该申请要求保护2018年8月16日提交的美国临时申请No.62/764,851的权益,二者的全部内容通过引用合并于此。

技术领域

本公开涉及视频编码和视频解码。

背景技术

可以将数字视频功能集成到各种设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(PDA)、便携式或台式计算机、平板计算机、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏机、蜂窝或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流设备等。数字视频设备实施视频编码技术,例如由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4,第10部分,高级视频编码(AVC),高效视频编码(HEVC)标准,ITU-T H.265/高效视频编码(HEVC)以及此类标准的扩展定义的标准中描述的那些。通过实现此类视频编码技术,视频设备可以更有效地发送、接收、编码、解码和/或存储数字视频信息。

视频编码技术包括空间(图片内)预测和/或时间(图片间)预测,以减少或消除视频序列中固有的冗余。对于基于块的视频编码,可以将视频切片(例如,视频图片或视频图片的一部分)划分为视频块,这些视频块也可以称为编码树单元(CTU)、编码单元(CU)和/或编码节点。相对于同一图片中相邻块中的参考样本,使用空间预测对图片的帧内编码(I)切片中的视频块进行编码。图片的帧间编码(P或B)切片中的视频块可使用相对于同一图片中相邻块中的参考样本的空间预测或相对于其他参考图片中的参考样本的时间预测。图片可以被称为帧,参考图片可以被称为参考帧。

发明内容

通常,本公开描述了与在生成候选列表(例如,合并列表或高级运动矢量预测(AMVP)列表)中使用基于历史的候选列表有关的技术。在基于历史的候选列表构建中,视频译码器(例如,视频编码器或视频解码器)存储重构块(例如,视频解码器重构块或重构为视频编码器中的解码循环的一部分的重构块)的运动信息。重构块不必一定是空间或时间上相邻的块。然后,视频译码器使用基于历史的候选列表来生成候选列表。

本公开描述了示例性技术以选择性地将来自基于历史的候选列表的候选的子集包括到最终候选列表(例如,最终合并或AMVP候选列表)中,这减少了候选列表中的冗余候选的机会。以此方式,可用于确定当前块的运动矢量的运动信息中存在多样性,这提高了带宽效率并改善了整个视频译码过程。示例技术可以应用于诸如HEVC(高效视频编码)、VVC(通用视频编码)的任何现有的和正在开发的视频编解码器,或者可以是与任何其他视频译码标准相对应的译码工具。

在一个示例中,本公开描述了一种解码视频数据的方法,该方法包括通过将重构块的运动信息存储到基于历史的候选列表中作为基于历史的候选列表的候选来构建基于历史的候选列表,识别基于历史的候选列表的候选的子集,基于所识别的基于历史的候选列表的候选的子集生成候选列表,并基于所生成的候选列表重构当前块。

在一个示例中,本公开描述了一种用于解码视频数据的设备,该设备包括被配置为存储基于历史的候选列表的存储器和处理器。处理器被配置为通过在存储器中将重构块的运动信息存储在基于历史的候选列表中作为基于历史的候选列表的候选来构建基于历史的候选列表,识别基于历史的候选列表的候选的子集,基于所识别的基于历史的候选列表的候选的子集生成候选列表,并基于所生成的候选列表重构当前块。

在一个示例中,本公开描述了一种编码视频数据的方法,该方法包括通过将重构块的运动信息存储到基于历史的候选列表中作为基于历史的候选列表的候选来构建基于历史的候选列表,识别基于历史的候选列表的候选的子集,基于所识别的基于历史的候选列表的候选的子集生成候选列表,以及用信号通知指示进入(into)所生成的候选列表中的索引的信息以识别用于重构当前块的运动信息。

在一个示例中,本公开描述了一种用于对视频数据进行编码的设备,该设备包括:被配置为在存储器中将重构块的运动信息存储在基于历史的候选列表中作为基于历史的候选列表的候选来构建基于历史的候选列表,识别基于历史的候选列表的候选的子集,基于所识别的基于历史的候选列表的候选的子集生成候选列表,以及用信号通知指示进入所生成的候选列表中的索引的信息以识别用于重构当前块的运动信息。

一个或多个示例的细节在附图和以下描述中阐述。通过描述和附图,其他特征、目的和优点将是显而易见的。

附图说明

图1是示出了可执行本公开的技术的示例视频编码和解码系统的框图。

图2A和2B是分别示出了用于合并和高级运动矢量预测(AMVP)模式的空间相邻运动矢量候选的示例的概念图。

图3A和图3B是分别示出了时间运动矢量预测值(TMVP)候选和针对TMVP的运动矢量缩放的示例的概念图。

图4是示出了提取非相邻空间合并候选的示例的概念图。

图5是示出了在编码树单元(CTU)中划分的编码单元(CU)的示例的概念图,其中,编码顺序是A→B→C→D。

图6是示出了将列表分成独立的先入先出(FIFO)列表的示例的概念图。

图7是示出了可执行本公开的技术的示例视频编码器的框图。

图8是示出了可执行本公开的技术的示例视频解码器的框图。

图9是示出了对视频数据进行编码的示例方法的流程图。

图10是示出了对视频数据进行解码的示例方法的流程图。

具体实施方式

视频编码标准包括ITU-T H.261,ISO/IEC MPEG-1视觉,ITU-T H.262或ISO/IECMPEG-2视觉,ITU-T H.263,ISO/IEC MPEG-4视觉和ITU-T H.264(也称为ISO/IEC MPEG-4AVC),包括其可伸缩视频编码(SVC)和多视图视频编码(MVC)扩展。

此外,一种视频编码标准,即高效视频编码(HEVC)或ITU-th.265,包括其范围扩展、多视图扩展(MV-HEVC)和可伸缩扩展(SHVC),已由视频编码联合协作组(JCT-VC)以及ITU-T视频编码专家组(VCEG)和ISO/IEC运动图像专家组(MPEG)的3D视频编码扩展开发联合协作组(JCT-3V)开发。

可从http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip获得HEVC规范草案,以下简称HEVC WD。HEVC标准的引用为:TU-TH.265,H系列:视听和多媒体系统,视听服务的基础-运动视频编码,通用视听服务的高级视频编码,国际电信联盟,2015年4月,634页。

ITU-T VCEG(Q6/16)和ISO/IEC MPEG(JTC 1/SC 29/WG 11)现在正在研究未来视频编码技术标准化的潜在需求,其压缩能力将大大超过当前HEVC标准(针对屏幕内容编码和高动态范围编码的包括当前扩展和其近期扩展)。这两个小组在一个被称为联合视频专家小组(JVET)的联合协作中共同致力于这一探索活动,以评估在这一领域的专家提出的压缩技术设计。JVET于2015年10月19日至21日首次举行会议,最新版本的参考软件,即联合探索模型7(JEM7)可用,需要访问以下网址:https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0/。JEM7的算法描述可以称为JVET-G1001。

JEM 7也被称为ITU-T H.266或多功能视频编码(VVC)。Bross等人描述了VVC标准的最新草案。“多功能视频编码(草案5),ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频专家小组(JVET),第14次会议”:Geneva,CH,2019年3月19日至27日,JVET-N1001-v5(以下简称“VVC草案5”)。然而,本公开的技术不限于任何特定的译码标准。

如以下更详细描述的,在视频译码(例如,编码或解码)中,基于预测块对当前块进行帧间预测。举例来说,视频编码器确定当前块与预测块之间的残差(例如,差异)并用信号通知该差异。视频解码器接收残差并将残差添加到预测块以重构当前块。

视频编码器(例如,视频编码器或视频解码器)用运动矢量识别预测块。在一些示例中,视频编码器可将运动矢量的信息(例如,x和y值)用信号通知到视频解码器。然而,为了减少用信号通知的信息量,视频解码器有可能基于重构块的运动信息来确定当前块的运动矢量。例如,在合并模式或高级运动矢量预测(AMVP)模式中,视频译码器可基于与当前块在空间上和/或时间上相邻的块的运动信息来构建运动信息的候选列表。视频编码器用信号通知指示进入候选列表中的索引的信息,并且视频解码器根据索引从候选列表中检索运动信息,并根据检索到的运动信息确定当前块的运动矢量。

根据本公开中所描述的一个或多个示例,视频译码器可构建基于历史的候选列表。基于历史的候选列表包括重构块的运动信息,但是不限于当前块的在空间和时间上相邻的块。在一些示例中,为了构建最终候选列表(例如,最终合并或AMVP候选列表),视频译码器将基于历史的候选列表添加到初始合并或AMVP候选列表。

但是,通过不将基于历史的候选列表简单地添加到初始合并或AMVP候选列表中,有可能实现更好的视频译码性能。例如,候选列表(例如,合并或AMVP候选列表)的大小可以是固定的。如果添加这些候选使得候选列表的大小会大于其固定大小,则来自基于历史的候选列表的某些候选可能会被丢弃。

然而,存在一些被丢弃的候选实际上将提供更健壮的候选选择以确定当前块的运动矢量的机会。例如,空间上接近的块的运动信息可以是相似的(例如,作为非限制性示例,空间上接近的第一块和第二块,例如相邻的块,可以具有小于20%的差异的运动矢量或可以识别相同的参考图片)。如果基于历史的列表包括来自两个空间接近的块的运动信息,则两个空间接近的块的运动信息相似的可能性更高。如果来自这些空间接近的块中的两个块的运动信息都包括在最终候选列表中,则运动信息可能没有足够的多样性以确保选择最佳候选,尤其是来自基于历史的候选列表的其他一些候选被丢弃的情况。换句话说,与包括来自这些空间接近的块中的仅一个的运动信息相比,通过将来自这些空间接近的块中的两个块的运动信息包括在最终候选列表中,可能没有太多的视频编码增益(如果有的话),尤其是如果来自基于历史的候选列表的其他候选从最终候选列表中被丢弃。

作为另一示例,极有可能在初始候选列表中(例如,在包括基于历史的候选列表之前,在初始合并或AMVP候选列表中)已经存在最近重构块的运动信息。因此,从一个或多个最近重构块中添加运动信息以生成候选列表(例如,生成最终候选列表)可能不会提供任何其他视频编码增益,并且可能会对视频编码增益生成负面影响,因为其他可能更好的候选从最终候选列表中被丢弃。

本公开描述了通过在基于历史的候选列表中包括候选的子集来生成候选列表(例如,最终合并或AMVP候选列表)的一种或多种示例技术。在一些示例中,基于历史的候选列表中的候选的子集包括一个或多个候选,而不包括与最近重构块相对应的一个或多个候选。最近重构块指的是在对当前块进行编码或解码之前紧接地重构的一个或多个块。在一些示例中,最近重构块是在当前块之前紧接地重构的两个块。最近重构块是在当前块之前紧接地重构块。以这种方式,该技术可以排除可能已经在初始候选列表中的一个或多个候选。

在一些示例中,基于历史的候选列表中的候选的子集包括通过对基于历史的候选列表进行子采样所得的一个或多个候选。例如,从基于历史的候选列表中选择每第四个候选。通过对基于历史的候选列表进行子采样,空间上接近的重构块(例如,在每第四候选被选择的示例中彼此相邻的三个块内的重构块)的运动信息可以不被包括在最终候选列表中。作为示例,存在以该顺序重构的五个重构块(例如,第一、第二、第三、第四和第五重构块)。由于以光栅扫描顺序执行块编码,因此第一和第二重构块可以比第一和第五重构块彼此更接近。因为第一和第二重构块接近,所以第一和第二重构块的运动信息比不接近的第一和第五重构块的运动信息相似的可能性更高。

在一个或多个示例中,视频译码器可选择用于第一和第五重构块的运动信息以包含在候选列表中(例如,从基于历史的候选列表中选择每第四个候选),而不是第一和第二重构块。这可能是因为,与由于运动信息可能不相似而确保存在第一和第五重构块的运动信息相比,由于运动信息相似,因此通过具有第一和第二重构块的运动信息几乎没有视频编码增益。这样,存在可用于识别预测块的运动信息的多样性。

图1是示出了可执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常针对视频数据进行译码(编码和/或解码)。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未译码的视频、编码的视频、解码的(例如,重构的)视频和视频元数据,例如信令数据。

如图1所示,在该示例中,系统100包括源设备102,源设备102提供要由目标设备116解码和显示的编码视频数据。特别地,源设备102经由计算机可读介质110将视频数据提供给目标设备116。源设备102和目标设备116可以是多种设备中的任何一种,包括台式计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、诸如智能手机的电话听筒、电视、照相机、显示设备、数字媒体播放器、视频游戏机、视频流设备、头戴式显示器(HMD)设备、XR设备(例如,虚拟现实设备、增强现实设备和混合现实设备)等。在一些情况下,源设备102和目标设备116可以被配备用于无线通信,因此可以被称为无线通信设备。

在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目标设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目标设备116的视频解码器300可以被配置为应用用于构建基于历史的合并或高级运动矢量预测(AMVP)列表的技术。因此,源设备102表示视频编码设备的示例,而目标设备116表示视频解码设备的示例。在其他示例中,源设备和目标设备可以包括其他组件或布置。例如,源设备102可以从诸如外部摄像机的外部视频源接收视频数据。同样,目标设备116可以与外部显示设备接口,而不是包括集成显示设备。

如图1所示的系统100仅是一个示例。通常,任何数字视频编码和/或解码设备都可以执行用于构建基于历史的合并列表或AMVP列表的技术。源设备102和目标设备116仅仅是此类译码设备的示例,其中源设备102生成译码视频数据以发送到目标设备116。本公开将“译码”设备称为执行数据的译码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300分别表示译码设备的示例,特别是视频编码器和视频解码器。在一些示例中,设备102、116可以以基本上对称的方式操作,使得设备102、116中的每个包括视频编码和解码组件。因此,系统100可以支持设备102、116之间的单向或双向视频传输,例如用于视频流、视频回放、视频广播或视频电话。

通常,视频源104表示视频数据(即,原始的、未译码的视频数据)源,并将视频数据的一系列顺序的图片(也称为“帧”)提供给视频编码器200,视频编码器200对数据进行编码以用于图片。源设备102的视频源104可以包括视频捕获设备,例如摄像机,包含先前捕获的原始视频的视频档案和/或视频馈送接口,以从视频内容提供商接收视频。作为另一备选,视频源104可以生成基于计算机图形的数据作为源视频,或者是实时视频、存档视频和计算机生成的视频的组合。在每种情况下,视频编码器200对捕获的,预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图像从接收到的顺序(有时称为“显示顺序”)重新排列为用于译码的译码顺序。视频编码器200可以生成包括编码的视频数据的比特流。然后,源设备102可以经由输出接口108将编码的视频数据输出到计算机可读介质110上,以通过例如目标设备116的输入接口122进行接收和/或检索。

源设备102的存储器106和目标设备116的存储器120表示通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频和来自视频解码器300的原始、解码的视频数据。附加地或可替代地,存储器106、120可以存储分别可由例如视频编码器200和视频解码器300执行的软件指令。尽管在此示例中与视频编码器200和视频解码器300分开显示,但应理解,视频编码器200和视频解码器300还可包括内部存储器用于功能上相似或等效的目的。此外,存储器106、120可以存储例如从视频编码器200输出并输入到视频解码器300的编码的视频数据。在一些示例中,存储器106、120的部分可被分配为一个或多个视频缓冲器,例如,以存储原始的、解码的和/或编码的视频数据。

计算机可读介质110可以表示能够将编码的视频数据从源设备102传输到目标设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示一种通信介质,该通信介质使源设备102能够例如经由射频网络或基于计算机的网络将编码的视频数据直接实时地发送到目标设备116。根据诸如无线通信协议的通信标准,输出接口108可以调制包括编码的视频数据的发送信号,输入接口122可以调制接收的发送信号。通信介质可以包括无线或有线通信介质中的一种或两种,例如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成诸如局域网、广域网或诸如因特网的全球网络的基于分组的网络的一部分。通信介质可以包括路由器、交换机、基站或有助于从源设备102到目标设备116的通信的任何其他设备。

在一些示例中,源设备102可以将编码的数据从输出接口108输出到存储设备112。类似地,目标设备116可以经由输入接口122访问来自存储设备112的编码的数据。存储设备112可以包括各种分布式或本地访问的数据存储介质中的任何一种,例如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器或用于存储编码的视频数据的任何其他合适的数字存储媒体。

在一些示例中,源设备102可以将编码的视频数据输出到文件服务器114或可以存储由源设备102生成的编码的视频的另一中间存储设备。目标设备116可以经由流或下载来访问来自文件服务器114的存储的视频数据。文件服务器114可以是能够存储编码的视频数据并将该编码的视频数据发送到目标设备116的任何类型的服务器设备。文件服务器114可以表示网络服务器(例如,用于网站)、文件传输协议(FTP)服务器、内容传递网络设备或网络附加存储(NAS)设备。目标设备116可以通过包括互联网连接的任何标准数据连接来访问来自文件服务器114的编码的视频数据。这可以包括适合于访问存储在文件服务器114上的编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或两者的组合。文件服务器114和输入接口122可以被配置为根据流传输协议、下载传输协议或其组合来操作。

输出接口108和输入接口122可以表示无线发送器/接收器、调制解调器、有线网络组件(例如,以太网卡)、根据各种IEEE 802.11标准中的任何一种进行操作的无线通信组件,或者其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据诸如4G,4G-LTE(长期演进)、高级LTE、5G等的蜂窝通信标准来传输诸如编码的视频数据的数据。在输出接口108包括无线发送器的一些示例中,输出接口108和输入接口122可以配置为根据其他无线标准,例如IEEE802.11规范、IEEE802.15规范(例如ZigBee

本公开的技术可以应用于支持各种多媒体应用中的任何一种的视频译码,诸如空中电视广播、有线电视传输、卫星电视传输、互联网流视频传输、诸如HTTP上的动态自适应流传输(DASH)、将数字视频编码到数据存储介质上、对存储在数据存储介质上的数字视频进行解码,或其他应用程序。

目标设备116的输入接口122从计算机可读介质110(例如,存储设备112、文件服务器114等)接收编码的视频比特流。编码的视频比特流计算机可读介质110可以包括由视频编码器200定义的,也由视频解码器300使用的信令信息,诸如具有描述视频块或其他译码单元的特性和/或处理的值的语法元素(例如,切片、图片、图片组、序列等)。显示装置118向用户显示解码的视频数据的解码的图片。显示设备118可以表示各种显示设备中的任何一种,例如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一种类型的显示设备。

尽管未在图1中示出,但在某些示例中,视频编码器200和视频解码器300可以分别与音频编码器和/或音频解码器集成,并且可以包括适当的MUX-DEMUX单元或其他硬件和/或软件,以处理公共数据流中包括音频和视频的多路复用流。如果适用,MUX-DEMUX单元可以符合ITU H.223多路复用器协议或其他协议,例如用户数据报协议(UDP)。

视频编码器200和视频解码器300可各自实现为各种合适的编码器和/或解码器电路中的任何一种,例如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当技术部分地以软件实施时,设备可将用于软件的指令存储在合适的非暂时性计算机可读介质中,并使用一个或多个处理器以硬件方式执行指令以执行本公开的技术。视频编码器200和视频解码器300中的每一个可以被包括在一个或多个编码器或解码器中,编码器或解码器中的任一个可以被集成为相应设备中的组合编码器/解码器(CODEC)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备,例如蜂窝电话。

视频编码器200和视频解码器300可以根据视频译码标准(例如ITU-T H.265,也称为高效视频编码(HEVC))或其扩展(例如多视图和/或可缩放视频编码扩展)进行操作。可替代地,视频编码器200和视频解码器300可以根据诸如联合探索测试模型(JEM)的其他专有或工业标准来操作。然而,本公开的技术不限于任何特定的译码标准。

通常,视频编码器200和视频解码器300可以执行图片的基于块的译码。术语“块”通常是指包括要处理(例如,编码、解码或在编码和/或解码过程中以其他方式使用)的数据的结构。例如,块可以包括亮度和/或色度数据的样本的二维矩阵。通常,视频编码器200和视频解码器300可以对以YUV(例如,Y,Cb,Cr)格式表示的视频数据进行译码。也就是说,视频编码器200和视频解码器300不是对样本图片样本的红色、绿色和蓝色(RGB)数据进行译码,而是可以对亮度和色度分量进行译码,其中色度分量可以包括红色色调和蓝色色调色度分量两者。在一些示例中,视频编码器200在编码之前将接收到的RGB格式的数据转换成YUV表示,并且视频解码器300将YUV表示转换成RGB格式。可替代地,预处理和后处理单元(未示出)可以执行这些转换。

本公开通常可涉及图片的译码(例如,编码和解码)以包括对图片的数据进行编码或解码的过程。类似地,本发明可涉及图片的块的译码以包括对块的数据进行编码或解码的过程,例如,预测和/或残差译码。编码视频比特流通常包括用于语法元素的一系列值,这些值表示译码决策(例如,译码模式)以及将图片划分为块。因此,对译码图片或块的引用通常应理解为用于形成图片或块的语法元素的译码值。

作为示例,视频编码器200和视频解码器300可以被配置为根据HEVC进行操作。HEVC定义了各种块,包括编码单元(CU)、预测单元(PU)和变换单元(TU)。根据HEVC,视频译码器(例如,视频编码器200)根据四叉树结构将编码树单元(CTU)划分为CU。也就是说,视频译码器将CTU和CU划分为四个相等的非重叠正方形,并且四叉树的每个节点具有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,这种叶节点的CU可以包括一个或多个PU和/或一个或多个TU。视频译码器可进一步划分PU和TU。例如,在HEVC中,残余四叉树(RQT)表示TU的划分。在HEVC中,PU表示帧间预测数据,而TU表示残差数据。帧内预测的CU包括帧内预测信息,例如帧内模式指示。

作为另一示例,视频编码器200和视频解码器300可以被配置为根据JEM进行操作。根据JEM,视频编码器(例如,视频编码器200)将图片划分为多个CTU。视频编码器200可根据树结构(例如四叉树-二叉树(QTBT)结构)划分CTU。JEM的QTBT结构消除了多个分区类型的概念,例如HEVC的CU、PU和TU之间的分割。JEM的QTBT结构包括两个级别:根据四叉树分区划分的第一级,以及根据二叉树分区划分的第二级。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于编码单元(CU)。在另外的示例中,视频编码器200和视频解码器300可以被配置为根据任何其他译码标准来操作,与本文描述的示例一致。

在一些示例中,视频编码器200和视频解码器300可以使用单个QTBT结构来表示亮度和色度分量中的每一个,而在其他示例中,视频编码器200和视频解码器300可以使用两个或更多个QTBT结构,例如一个QTBT结构用于亮度分量以及另一个QTBT结构用于两个色度分量(或两个QTBT结构用于各个色度分量)。

视频编码器200和视频解码器300可以被配置为使用每个HEVC的四叉树分区,根据JEM的QTBT分区或其他分区结构。为了说明的目的,相对于QTBT划分给出了本公开的技术的描述。然而,应理解,本发明的技术还可应用于经配置以使用四叉树分区或其它类型的分区的视频译码器。

本发明可互换地使用“N×N”和“N乘N”在垂直和水平维度方面来指代块(例如CU或其他视频块)的样本尺寸,例如16×16样本或16乘16样本。通常,16x16 CU在垂直方向上将有16个样本(y=16),在水平方向上将有16个样本(x=16)。同样地,N×N CU通常在垂直方向上具有N个样本,在水平方向上具有N个样本,其中N表示非负整数值。CU中的样本可以按行和列排列。此外,CU在水平方向上不必具有与在垂直方向上相同数量的样本。举例来说,CU可包括N×M个样本,其中M不必等于N。

视频编码器200对表示预测和/或残差信息以及其他信息的CU的视频数据进行编码。预测信息指示将如何预测CU以便形成用于CU的预测块。残余信息通常代表编码之前的CU样本与预测块之间的逐样本差异。

为了预测CU,视频编码器200通常可通过帧间预测或帧内预测来形成用于CU的预测块。帧间预测通常是指根据先前译码的图片的数据来预测CU,而帧内预测通常是指根据同一图像的先前译码的数据来预测CU。为了执行帧间预测,视频编码器200可使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索以识别与CU紧密匹配的参考块,例如在CU与参考块之间的差值方面。视频编码器200可使用绝对差之和(SAD),平方差之和(SSD),平均绝对差(MAD),均方差(MSD)或其他此类差值计算来计算差值度量,以确定参考块是否紧密匹配当前CU。在一些示例中,视频编码器200可使用单向预测或双向预测来预测当前CU。

JEM还提供了仿射运动补偿模式,可以将其视为帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动的两个或多个运动矢量,例如放大或缩小、旋转、透视运动或其他不规则运动类型。

为了执行帧内预测,视频编码器200可以选择帧内预测模式以生成预测块。JEM提供了67种帧内预测模式,包括各种方向模式以及平面模式和DC模式。通常,视频编码器200选择帧内预测模式,该帧内预测模式描述当前块(例如,CU块)的相邻样本,从中预测当前块的样本。假设视频编码器200以光栅扫描顺序(从左到右,从上到下)对CTU和CU进行译码,则此类样本通常可以在与当前块相同的图片中的当前块的上方、上方到左侧或左侧。

视频编码器200对表示当前块的预测模式的数据进行编码。举例来说,对于帧间预测模式,视频编码器200可以对表示使用各种可用帧间预测模式中的哪个的数据以及对应模式的运动信息进行编码。对于单向或双向帧间预测,例如,视频编码器200可使用高级运动矢量预测(AMVP)或合并模式来对运动矢量进行编码。视频编码器200可使用类似模式来对仿射运动补偿模式的运动矢量进行编码。

在诸如块的帧内预测或帧间预测的预测之后,视频编码器200可计算该块的残差数据。残差数据(例如残差块)表示该块与使用相应预测模式形成的该块的预测块之间的逐样本差异。视频编码器200可将一个或多个变换应用于残差块,以在变换域而非样本域中产生变换的数据。举例来说,视频编码器200可将离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可在第一变换之后应用次级变换,例如,与模式有关的不可分离的次级变换(MDNSST)、与信号有关的变换、Karhunen-Loeve变换(KLT)等。视频编码器200在应用一个或多个变换之后产生变换系数。

如上所述,在进行任何变换以产生变换系数之后,视频编码器200可执行变换系数的量化。量化通常是指对变换系数进行量化以可能减少用于表示系数的数据量,从而提供进一步压缩的过程。通过执行量化过程,视频编码器200可减小与一些或所有系数相关联的位深度。举例来说,视频编码器200可在量化期间将n位值舍入为m位值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可执行待量化的值的按位右移。

在量化之后,视频编码器200可扫描变换系数,从而从包括量化的变换系数的二维矩阵产生一维矢量。可以将扫描设计为将较高能量(因此频率较低)的系数放在矢量的前面,并将较低能量(因此频率较高)的变换系数放在矢量的后面。在一些示例中,视频编码器200可以利用预定义的扫描顺序来扫描量化的变换系数以产生序列化的矢量,然后对矢量的量化的变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在扫描量化的变换系数以形成一维矢量之后,视频编码器200可以例如根据上下文自适应二进制算术编码(CABAC)对一维矢量进行熵编码。视频编码器200还可对语法元素的值进行熵编码,该语法元素描述与编码的视频数据相关联的元数据,以供视频解码器300在解码视频数据时使用。

为了执行CABAC,视频编码器200可将上下文模型内的上下文指派给要发送的符号。上下文可以涉及例如符号的相邻值是否为零值。概率确定可以基于分配给符号的上下文。

视频编码器200还可以例如在图片报头、块报头、切片报头,或其他语法数据,例如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS)中,向视频解码器300生成语法数据,例如基于块的语法数据、基于图片的语法数据和基于序列的语法数据。视频解码器300可类似地解码此类语法数据以确定如何解码对应的视频数据。

以此方式,视频编码器200可生成包括编码的视频数据的比特流,例如,描述将图片划分成块(例如,CU)的语法元素以及用于块的预测和/或残差信息。视频解码器300可以接收比特流并解码编码的视频数据。

通常,视频解码器300执行由视频编码器200执行的倒数处理以解码比特流的编码的视频数据。例如,视频解码器300可以使用CABAC以与视频编码器200的CABAC编码过程基本相似的方式(尽管与之相反)来解码比特流的语法元素的值。语法元素可将图片的分区信息定义为CTU,并根据诸如QTBT结构的对应分区结构对每个CTU进行划分,以定义CTU的CU。语法元素可进一步定义用于视频数据的块(例如,CU)的预测和残差信息。

残差信息可以由例如量化的变换系数表示。视频解码器300可对块的量化的变换系数进行逆量化和逆变换以复制针对该块的残差块。视频解码器300使用信号通知的预测模式(帧内或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成用于该块的预测块。视频解码器300然后可以组合预测块和残差块(在逐样本的基础上)以复制原始块。视频解码器300可执行附加处理,例如执行去块处理以减少沿块的边界的视觉伪像。

本公开通常可以指代“信令化”某些信息,例如语法元素。术语“信令”通常可以指代值语法元素和/或用于解码编码的视频数据的其他数据的通信。即,视频编码器200可发信号通知比特流中的语法元素的值。通常,信令是指在比特流中生成值。如上所述,源设备102可以基本上实时地或不实时地将比特流传输到目标设备116,诸如在将语法元素存储到存储设备112用于稍后由目标设备116检索时可能发生。

如上所述,视频编码器200和视频解码器300可以分别编码或解码的一种示例方式是使用合并模式或AMVP模式。在合并和AMVP模式下,视频编码器200和视频解码器300执行构建候选列表的操作(例如,合并列表或AMVP列表是候选列表的两个示例)。候选列表包括空间或时间上相邻块的运动信息。例如,合并列表包括用于相邻块的运动矢量和参考图片列表信息(例如,是否使用RefPicList0或RefPicList1)。AMVP列表包括运动矢量和参考图片列表信息,并且用信号发送运动矢量差(MVD)。

由于视频编码器200和视频解码器300执行相同的操作,因此候选列表对于视频编码器200和视频解码器300相同。视频编码器200可从候选列表中识别候选,并用信号通知指示进入候选列表中的索引的信息。视频解码器300确定进入候选列表中的索引,并基于由索引识别的候选来确定当前块的运动信息。运动信息包括运动矢量预测值。对于合并模式,当前块的运动矢量设置为等于运动矢量预测值。对于AMVP模式,视频编码器200可以在当前块的运动矢量和运动矢量预测值之间用信号通知MVD。视频解码器300将MVD添加到运动矢量预测值以确定当前块的运动矢量。

如下面更详细的描述,基于历史的运动矢量预测(HMVP)现在是VVC的一部分。在HMVP中,视频编码器200和视频解码器300维护基于历史的候选列表,该候选列表包括重构块的运动信息。重构块的一个示例是由视频解码器300重构块。视频编码器200包括重构循环,其中视频编码器200重构编码的块。重构块的另一示例是由视频编码器200重构块,作为重构(也称为解码)循环的一部分。最近重构块不必限于当前块在空间或时间上相邻的块。

作为HMVP的一部分,视频编码器200和视频解码器300可以添加基于历史的候选列表以生成候选列表。例如,视频编码器200和视频解码器300可生成初始候选列表(例如,合并或AMVP列表)。然后,作为两个示例,视频编码器200和视频解码器300可以将基于历史的候选列表添加到初始候选列表以生成用于合并模式或AMVP模式的最终候选列表。

但是,如果仅将基于历史的候选列表添加到初始候选列表中,则可能会出现技术问题。可以设置候选列表的最大大小。因此,在某些情况下,将基于历史的候选列表添加到初始候选列表将导致最终候选列表大于最大大小。在这样的情况下,视频编码器200和视频解码器300可以从基于历史的候选列表中丢弃导致最终候选列表大于最大大小的候选。

从基于历史的候选列表中丢弃候选可能是不希望的。例如,由于空间上相邻的块具有相似的运动信息,所以如果基于历史的候选列表中的两个块在空间上相邻,则将两个块的运动信息包括在最终候选列表中将不会提供运动信息的多样性。然而,将两个块的运动信息包括在最终候选列表中可能导致基于历史的候选列表的确实提供运动信息的多样性的一些候选被丢弃。

同样,在一些示例中,基于历史的候选列表中的一些最新候选可能已经存在于初始候选列表中。因此,将这些最新的候选添加到基于历史的候选列表中可能不会提供任何其他好处。

根据本公开所描述的一个或多个示例,视频编码器200及视频解码器300可经配置以通过将重构块的运动信息存储到基于历史的候选列表中作为基于历史的候选列表的候选来构建基于历史的候选列表,识别基于历史的候选列表的候选的子集,并基于所识别的基于历史的候选列表的候选的子集来生成候选列表。视频编码器200可进一步经配置以用信号通知指示进入所生成的候选列表中的索引的信息以识别用于重构当前块的运动信息。视频解码器300可经配置以基于所生成的候选列表来重构当前块。

以这种方式,视频编码器200和视频解码器300可以包括基于历史的候选列表的子集,而不是包括整个基于历史的候选列表。在一些示例中,子集可以是对基于历史的候选列表进行子采样的结果,使得基于历史的候选列表中的空间上相邻的块的运动信息不包括在所生成的候选列表中。在一些示例中,子集可以是排除N个最近重构块的运动信息的结果。视频编码器200和视频解码器300可经配置以使用子采样中的一个或多个且排除N个最近重构块的运动信息来识别候选的子集。

在以上示例中,视频编码器200和视频解码器300生成的候选列表可以是最终合并列表或AMVP列表(例如,视频编码器200和视频解码器300将基于历史的候选列表的识别出的候选的子集添加到初始合并列表或AMVP列表)。在一些示例中,视频编码器200和视频解码器300生成的候选列表可以是识别出的候选的子集(例如,识别出的候选的子集没有被添加到初始合并列表或AMVP列表中,而是其自身的独立列表)。在一些示例中,本公开中描述的技术被扩展到其他类型的候选列表,并且不限于合并列表和AMVP列表。

下面回顾HEVC中的CU结构和运动矢量预测。在HEVC中,切片中最大的编码单元称为编码树块(CTB)或编码树单元(CTU)。CTB包含一个四叉树,其节点是编码单元。

在HEVC主配置文件中,CTB的大小可以在16x16到64x64的范围内(尽管在技术上可以支持8x8的CTB大小)。编码单元(CU)的大小可能与CTB相同,小至8x8。每个编码单元以一种模式即帧间或帧内编码。当CU被帧间编码时,其可被进一步划分为2或4个预测单元(PU),或者当不应用进一步划分时仅变为一个PU。当一个CU中存在两个PU时,它们可以是一半大小的矩形,也可以是两个矩形大小,具有CU的1/4或3/4大小。当CU被帧间编码时,每个PU具有一组运动信息,其以唯一的帧间预测模式导出。

以下回顾运动矢量预测。在HEVC标准中,对于预测单位(PU),有两种帧间预测模式,分别称为合并(跳过被视为合并的特殊情况)和高级运动矢量预测(AMVP)模式。在AMVP或合并模式下,将为多个运动矢量预测值保留一个运动矢量(MV)候选列表。当前PU的运动矢量以及合并模式下的参考索引是通过从MV候选列表中选取一个候选生成的。MV候选列表最多包含5个用于合并模式的候选,而只有两个候选用于AMVP模式。合并候选可以包含一组运动信息,例如,与参考图片列表(列表0和列表1)和参考索引两者相对应的运动矢量。如果通过合并索引识别了合并候选,则确定用于当前块的预测的参考图片以及相关联的运动矢量。另一方面,在AMVP模式下,对于来自列表0或列表1的每个潜在预测方向,由于AMVP候选仅包含MV运动矢量,因此需要将参考索引以及MV预测值(MVP)索引显式发送给MV候选列表。在AMVP模式下,可以进一步完善预测的运动矢量。两种模式的候选都类似地从相同的空间和时间相邻块中得出。

以下回顾空间相邻候选。在一些示例中,从用于特定PU(PU

在AMVP模式中,在一些示例中,相邻块被分为两组:左组包括分别位于PU0 138的左下方和左侧的块0和1,以及上组包括位于PU01 138的右上方、上方和左上方的块2、3和4,如图2B所示。块2位于PU1 140的上方。对于每个组,参考与用信号发送的参考索引指示的参考图片相同的参考图片的相邻块中的潜在候选具有最高优先级,以被选择以形成该组的最终候选。所有相邻块可能不包含指向同一参考图片的运动矢量。因此,如果找不到这样的候选,则第一可用候选将被缩放以形成最终候选,从而可以补偿时间距离差。

以下回顾时间运动矢量预测。在一些示例中,将时间运动矢量预测值(TMVP)候选(如果启用且可用)添加到空间运动矢量候选之后的MV候选列表中。对于合并和AMVP模式,TMVP候选的运动矢量导出过程相同,但是在合并模式下,TMVP候选的目标参考索引始终设置为0。

在一些示例中,用于TMVP候选导出的主要块位置是在并置PU外部的右下块,如图3A示出为块T 140,以补偿对用于生成空间相邻候选的上方和左侧的块的偏差。但是,如果该块位于当前CTB行的外部,或者运动信息不可用,则将该块替换为PU的中心块。

从并置图片146的并置PU中导出当前图片150中的TMVP候选的运动矢量148,以切片级别指示。用于并置PU的运动矢量被称为并置MV 142。类似于AVC中的时间直接模式,为了导出TMVP候选运动矢量,并置MV142可以被缩放以补偿时间距离差,如图3B所示。例如,并置图片146和并置参考图片144之间的时间差以及当前图片150和当前参考图片152之间的时间差用于缩放并置MV 142以生成运动矢量148。

以下内容回顾了HEVC中运动预测的一些其他方面。合并和AMVP模式的几个方面值得一提。

运动矢量缩放:假设运动矢量的值与呈现时间中图片的距离成比例。运动矢量将两张图片,参考图片和包含运动矢量的图片(即包含图片)相关联。当运动矢量被用于预测另一运动矢量时,基于图片顺序计数(POC)值来计算包含图片和参考图片的距离。

对于要预测的运动矢量,其相关的包含图片和参考图片可能不同。因此,将计算新距离(基于POC)。并且,基于这两个POC距离对运动矢量进行缩放。对于空间相邻候选,两个运动矢量的包含图片相同,而参考图片不同。在HEVC中,针对空间和时间相邻候选运动矢量缩放适用于TMVP和AMVP。

人工运动矢量候选生成:如果运动矢量候选列表不完整(例如,候选少于预定数目),则生成人工运动矢量候选,并将其插入列表的末尾,直到列表将具有所有候选为止。在合并模式中,有两种类型的人工MV候选:仅针对B切片导出的组合候选和仅用于AMVP的零候选(如果仅针对B切片导出的组合候选不能提供足够的人工候选)。

对于已经在候选列表中并且具有必要的运动信息的每对候选,通过参考列表0中的图片的第一候选的运动矢量和参考列表1中的图片的第二候选运动矢量的组合来导出双向组合运动矢量候选。

候选插入的修剪过程:来自不同块的候选可能恰好是相同的,这降低了合并/AMVP候选列表的效率。修剪过程适用于解决此问题。它将一个候选与当前候选列表中的其他候选进行比较,以避免插入相同的候选。为了降低复杂性,将修剪过程应用有限的次数,而不是将每个潜在候选与列表中的所有其他现有候选进行比较。

下面描述基于历史的运动矢量预测。基于历史的运动矢量预测(HMVP),在ITU-TSG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的“CE-4related:History-based motionvector prediction”JVET中描述,第11次会议:Ljubljana,SI,2018年7月10日至18日,称为JVET-K0104,是一种基于历史的方法,除了直接相邻的因果相邻的运动字段中的那些块,允许每个块从过去解码的MV列表中找到其MV预测值。在编码/解码过程中将维护具有多个HMVP候选的表。遇到新切片时,将清空该表。每当存在帧间编码的块时,相关联的运动信息就以先入先出(FIFO)的方式作为新的HMVP候选插入到表中。然后,可以应用约束FIFO规则。当将HMVP插入表中时,应用冗余检查以查找表中是否存在相同的HMVP。如果找到,从表中删除该特定HMVP,然后移动所有HMVP候选。如更详细描述的,在一些示例中,可以不执行冗余检查。

HMVP候选可以在合并列表构建过程中使用。从表中最后一个条目到第一个条目的所有HMVP候选都可以插入到TMVP候选之后。修剪应用于HMVP候选。一旦可用合并候选的总数达到信号通知的最大允许合并候选,则合并列表构建过程终止。

类似地,HMVP候选也可以在AMVP候选列表构建过程中使用。将表中最后K个HMVP候选的运动矢量插入到TMVP候选之后。在一些示例中,仅将具有与AMVP目标参考图片相同的参考图片的HMVP候选用于构建AMVP候选列表。修剪应用于HMVP候选。

以下描述了非相邻的空间合并候选。非相邻空间合并候选的构建,在ITU-T SG16WP 3和ISO/IEC JTC 1/SC 29/WG 11的“CE-4related:History-based motion vectorprediction”JVET中描述,第十一次会议:Ljubljana,SI,2018年7月10日至18日,称为JVET-K0228,涉及从两个非相邻的相邻分区导出新的空间候选(即,从最接近的非相邻块到左侧/上方,如图4所示)。例如,图4示出了具有相邻块A0、A1、B2、B1和B0的当前块154。在一些示例中,非相邻的空间合并候选包括不与当前块154在空间上相邻的图4的块HN和块VN的运动信息。

可以将这些块限制在与当前块的1CTU的最大距离内。非相邻候选(例如,块HN和VN)的提取过程开始于在垂直方向上跟踪先前的解码的块。当遇到一个中间块或跟踪返回距离达到1CTU大小时,垂直逆跟踪停止。然后,提取过程在水平方向上跟踪先前的解码的块。停止水平提取过程的标准取决于是否成功提取了垂直非相邻的候选。如果没有提取到垂直非相邻候选,则当遇到帧间编码的块或跟踪返回距离超过一个CTU大小阈值时,停止水平提取过程。如果有垂直非相邻候选被提取,则当遇到包含与垂直非相邻候选不同的MV的帧间编码的块或跟踪返回距离超过CTU大小阈值时,水平提取过程停止。在合并候选中,将提取的非相邻的相邻候选添加到TMVP候选之前。

某些技术可能具有以下问题,一个或多个示例技术可以解决并克服这些问题。但是,不要求每个示例技术都必须始终提供本公开所描述的所有优点。

为了访问非相邻的合并候选,解码器(例如,视频解码器300)可以增加行缓冲器大小,以存储除了相邻候选之外的这些额外运动候选。其他方法通过使用基于历史的查找表来缓解缓冲区问题,该查找表存储过去的解码的MV。与先前的合并候选方法(为最有可能的候选分配较短的语法)不同,这些基于历史的方法只是将所有内容混合到查找表中而没有适当的分类。因此,本公开描述了用于基于历史的合并列表或AMVP列表的示例构建方法,其可以克服上述问题。编码器/解码器(例如,视频编码器200或视频解码器300)具有选择是否使用(基于分类方法构建的)特定候选列表的自由。

下面描述本公开的示例技术,诸如基于历史的列表的构建过程、修剪过程以及合成候选的构建。示例技术可以一起使用或分开使用。

为了构建基于历史的候选列表,以具有短期(和长期)存储器的基于历史的候选列表为例。使用短期和长期存储器仅仅是一个示例。示例技术不需要使用短期或长期存储器并且可以利用一种类型的存储器。

当对CTU行、切片、图块、图片等进行编码/解码时,一开始初始列表被构建并以零运动(例如,默认值)填充。选择CTU行、切片、图块或图片中的哪一个可以取决于视频编码器200和视频解码器300的配置。块在编码/解码过程中完成重构之后,将重构块运动信息(如果有)以先入先出(FIFO)的方式插入到短期候选列表(即称为短期列表)中。一旦短期列表已满并有新候选出现,最老的候选被撤出且最新的候选被推入短期列表。然后,将从短期列表中撤出的候选插入到基于FIFO的长期候选列表(即,称为长期列表)中。

在以上示例中,描述了短期和长期列表。但是,在一些示例中,可能存在单个候选列表(例如,单个基于历史的候选列表),并且以FIFO方式将重构块的运动信息添加到基于历史的候选列表中。

这两个列表的大小都是可配置的,短期和长期列表分别为N

以下是四个插入顺序的示例:

·仅将短期候选插入最终合并列表中(例如,短期候选是基于历史的候选列表);

·仅将长期候选插入最终合并列表中(例如,短期候选是基于历史的候选列表);

·先将短期候选插入最终合并列表中,然后再将长期候选插入最终合并列表中;

·短期和长期候选以交错方式插入最终合并列表,其中插入顺序为第一短期候选、第一长期候选、第二短期候选、第二长期候选,以此类推。

下面描述了时延的短期列表技术。示例技术通常可应用于存在基于历史的候选列表(例如,短期列表、长期列表或未被分为短期和长期的单个列表,例如仅存在短期或长期列表中的一个)的地方。提出了具有时延特征的基于可变历史的候选列表(例如,短期列表)。在以上示例中,每次当帧间块完成编码/解码时,都会更新基于历史的候选列表。在一个示例中,本公开描述了示例技术,该示例技术引入了时延因子T

举例来说,视频编码器200和视频解码器300可经配置以识别对应于最近重构块的运动信息的基于历史的候选列表的一个或一个以上候选的第一子集。作为示例,基于历史的候选列表可以包括块A 156、B 158和C 160的运动信息。在图5的示例中,块C 160是最近重构块(例如,紧接在块D 162之前重构块),块B 158是在块C 160之前重构块,块A 156是在块B 158之前重构块。在该示例中,视频编码器200和视频解码器300可以识别第一子集,该第一子集包括块A 156、B 158和C 160中的一个或多个。块D 162可以是被译码的块。

作为一个示例,视频编码器200和视频解码器300可以识别与两个最近重构块的运动信息相对应的基于历史的候选列表的两个候选。例如,基于历史的候选列表包括块A156、B 158和C 160的运动信息,其中,块B 158和C 160是两个最近重构块。在此示例中,视频编码器200和视频解码器300可将块B 158和C 160识别为基于历史的候选列表的一个或多个候选的第一子集。

视频编码器200和视频解码器300可识别排除第一子集的基于历史的候选列表的一个或多个候选的第二子集。作为一个示例,基于历史的候选列表的一个或多个候选的第二子集包括块A 156,因为排除了包括块B 158和C160的第一子集。

如上所述,视频编码器200和视频解码器300可以识别基于历史的候选列表的候选的子集。在以上示例中,视频编码器200和视频解码器300可以识别基于历史的候选列表的一个或多个候选的第二子集。例如,视频编码器200和视频解码器300可以识别块A 156的运动信息。视频编码器200和视频解码器300可基于块A 156的运动信息来生成候选列表(例如,将块A 156的运动信息添加到初始合并或AMVP列表)。

识别与最近重构块的运动信息相对应的基于历史的候选列表的一个或多个候选的第一子集的潜在好处的一个示例是,最近重构块的运动信息可能已经是初始合并或AMVP列表的一部分。因此,通过从第二子集中排除基于历史的候选列表的一个或多个候选的第一子集,第二子集中的候选和已经在合并或AMVP列表中的候选不重复的可能性更高。

以下描述了子采样的候选列表。基于历史的候选列表可以在因果运动字段上以较低的采样率形成。描述了三种示例技术:列表子采样方法、块子采样方法和区域子采样方法。两者或全部可以共享共同点,以防止编码器/解码器从比特流中采样每个编码/解码的运动信息以形成最终候选列表(例如,最终合并或AMVP列表),因为在空间上彼此接近的MV可能相似(甚至相同)。可以为一个或多个示例指定子采样率R。

与以上相似,视频编码器200和视频解码器300可通过将重构块的运动信息存储到基于历史的候选列表中作为基于历史的候选列表的候选来构建基于历史的候选列表,并识别该基于历史的候选列表的候选的子集。在一个或多个示例中,为了识别基于历史的候选列表的候选的子集,视频编码器200和视频解码器300可对基于历史的候选列表进行子采样以识别候选的子集。

作为一个示例,视频编码器200和视频解码器300可以执行列表子采样方法。视频编码器200和视频解码器300可以通过将每个新解码/编码的运动信息插入到基于历史的候选列表来更新基于历史的候选列表(例如,短期列表、长期列表或单个基于历史的候选列表)。然而,在一些示例中,视频编码器200和视频解码器300可周期性地仅对基于历史的候选列表中的每R个候选中的第一个或最后一个进行子采样,并将子采样的候选标记为可用于插入到候选列表(例如,最终合并或AMVP列表)中。

这些可用的候选可以从基于历史的候选列表中的这些索引位置{0,R,2R,…}({1,R+1,2R+1,…}{2,R+2,2R+3,…}或{R-1,2R-1,3R-1…})中识别。例如,当NS=16且R=4时,这些索引位置可以是{0,4,8,12}(或{3,7,11,15})。

例如,基于历史的候选列表可以包括16个候选。16个候选中的每一个表示16个最近重构块,并包括16个最近重构块的相应运动信息(如果有)。可以通过索引值来识别基于历史的候选列表中的候选(例如,索引0用于基于历史的候选列表中的第一条目,索引15用于基于历史的候选列表中的最后条目)。在一些示例中,索引0用于最近重构块,索引15用于最早重构块(例如,次最近重构块)。换句话说,索引0用于基于历史的候选列表中最新添加的候选,索引15用于基于历史的候选列表中最早添加的候选。

在一些示例中,视频编码器200和视频解码器300可将基于历史的候选列表中的每第N个候选识别为对基于历史的候选列表进行子采样以识别候选的子集的方式。作为一个示例,视频编码器200和视频解码器300可以识别基于历史的候选列表中的每第四个候选。

而且,视频编码器200和视频解码器300可以从基于历史的候选列表的开头或从基于历史的候选列表的结尾开始识别每第N个候选。例如,假设N等于4,如果从基于历史的候选列表的开头开始,则视频编码器200和视频解码器300可以识别基于历史的候选列表中由索引值0、4、8、12索引的候选。例如,当N等于4时,如果从基于历史的候选列表的结尾开始,则视频编码器200和视频解码器300可以识别基于历史的候选列表中由索引值15、11、7、3索引的候选。

在视频编码器200和视频解码器300从基于历史的候选列表的结尾开始的示例中,索引值15是指基于历史的候选列表中的最早添加的候选。因此,在一些示例中,视频编码器200和视频解码器300可从基于历史的候选列表中的最早添加的候选开始对基于历史的候选列表进行子采样。然而,示例技术不限于此。在一些示例中,视频编码器200和视频解码器300可从基于历史的候选列表中的最新添加的候选开始对基于历史的候选列表进行子采样。

如上所述,列表子采样方法是对基于历史的候选列表进行子采样的一种示例方式。作为另一示例,视频编码器200和视频解码器300可以利用块子采样方法。在块子采样方法中,基于历史的候选列表(例如,短期列表)通过从每R条新解码/编码的运动信息中将第一个(或最后一个)运动信息插入基于历史的候选列表中来更新一次。作为另一示例,视频编码器200和视频解码器300可以利用区域子采样方法。在区域子采样方法中,基于历史的候选列表(例如,短期列表)仅在先前基于历史的候选列表的更新之后编码/解码像素的累积数量超过R之后才更新一次。当调用更新过程时,累积的像素数然后被R减去。

如上所述,视频编码器200和视频解码器300可采用至少两种技术来识别基于历史的候选列表的候选的子集。在第一种技术中,视频编码器200和视频解码器300可排除对应于最近重构块的运动信息的候选。在第二种技术中,视频编码器200和视频解码器300可对基于历史的候选列表进行子采样(例如,使用基于列表的方法、基于块的方法或基于区域的方法)。

在一些示例中,视频编码器200和视频解码器300可以结合第一种技术和第二种技术。例如,视频编码器200和视频解码器300可以识别与最近重构块的运动信息相对应的基于历史的候选列表的一个或多个候选的第一子集。作为一个示例,为了识别第一子集,视频编码器200和视频解码器300可以识别与两个最近重构块的运动信息相对应的基于历史的候选列表的两个候选(例如,由索引值0和1识别的候选)。

视频编码器200和视频解码器300然后可以识别不包括第一子集的基于历史的候选列表(例如,由索引值2-15识别的候选)的一个或多个候选的第二子集。视频编码器200和视频解码器300可通过对第二子集进行子采样来从基于历史的候选列表中识别候选的子集。作为一个示例,视频编码器200和视频解码器300可以对基于历史的候选列表进行子采样(例如,识别基于历史的候选列表中的每第四个候选),但是不包括来自第一子集的候选(例如,由索引值0和1识别的候选)。

使用上面的示例技术(例如,排除与最近重构块的运动信息相对应的候选的第一技术、子采样的第二技术或其组合),视频编码器200和视频解码器300可以识别基于历史的候选列表的候选的子集。视频编码器200和视频解码器300可基于所识别的基于历史的候选列表的候选的子集来生成候选列表(例如,最终合并列表或AMVP列表)。举例来说,视频编码器200和视频解码器300可将来自所识别的候选的子集的一个或多个候选添加到初始合并或AMVP列表中以生成最终合并或AMVP列表。

以此方式,候选列表(例如,最终合并或AMVP列表)包括提供运动信息(例如,与候选列表中的其他运动信息不相似的运动信息)的多样性选择的候选。再次,如上所述,空间相邻的块倾向于具有相似的运动信息。通过子采样并排除某些块的运动信息,基于历史的候选列表的候选的子集可以包括来自非空间相邻块的运动信息,这增加了运动信息的多样性(例如,一个块的运动信息与另一个块的运动信息不同)。

在运动信息中具有多样性允许视频编码器200在候选列表中选择索引,该索引相对于候选列表中的运动信息没有太多多样性的情况可能减小信令带宽。例如,对于合并模式,视频编码器200可能能够为当前块选择运动信息,该运动信息确保由该运动信息识别的预测块最小化了预测块和当前块之间的残差。在运动信息中没有这种多样性的情况下,候选列表可能不包括将使残差最小化的运动信息。

以下描述受约束的候选列表。可以通过使用来自由约束集中预定义的预测模式进行译码的块的运动信息来更新基于历史的候选列表。由于视频序列中的运动特征,有时某些帧间预测模式将比其他帧间预测模式更有效地表示运动字段。例如,当物体被遮挡时,空间MV候选将不如时间候选可靠。因此,本公开描述了可以为编码器/解码器提供灵活度的技术,当插入的运动信息来自通过使用预定义的预测模式之一进行译码的块时,更新基于历史的候选列表(例如,短期列表或长期列表)。。例如,如果约束集是用时空运动矢量预测(STMVP)和TMVP模式指定的,则仅从STMVP和TMVP导出的运动信息可用于更新基于历史的候选列表(例如,短期列表或长期列表)。

以下描述交错的候选存储。每个即将到来的新候选可以以交错方式被推入基于历史的候选列表。以下描述了三种示例技术。编码器(例如,视频编码器200)具有选择将应用以下哪种方法的自由,并且解码器(例如,视频解码器300)可以仅遵循与编码器相同的方式。

A.)基于合并模式的方法:根据编解码器中受支持的合并模式类型的最大数量,上述基于历史的候选列表可以分为多个子列表。例如,JEM软件支持空间AMVP、时间AMVP、替代时间运动矢量预测(ATMVP)和STMVP。因此,如图6所示,短期列表和长期列表都可以分为4组。例如,先入先出(FIFO)1包括索引范围[0,N

当撤出短期列表的子列表中的候选时,然后将其推入长期列表的相应子列表中。例如,如果将候选从短期列表中的FIFO 1中撤出,则将其推入FIFO1中的长期列表中。

B.)基于块大小的方法:代替方法A或除方法A之外:基于合并模式的方法,此示例允许基于块中的像素数量NP将基于历史的候选列表分为几个FIFO子列表。此示例以升序预定义了一系列NP,以确定每个块如何与FIFO子列表关联。例如,此示例可以将基于历史的候选列表分为4个FIFO子列表(图6),因此可以预定义NP系列的值,例如{64,128,256},{N

C.)基于MV的方法:与方法B相似:基于块大小的方法,子列表映射可以基于块MV而不是块像素数。例如,该示例可以采用编码/解码的块MV的x和y分量的符号位作为参考,以将块运动信息映射到FIFO子列表中。像图6一样,此示例可以将基于历史的候选列表分为4个子列表,其映射函数为(MVx<0?1:2)*(MVy<0?1:2)用于单预测或(MVx

该映射功能可以通过可以产生与子列表数量相同数量的输出的任何内容进行预定义。例如,基于历史的候选列表(例如,短期和长期列表或单个基于历史的候选列表)可以分为2个子列表(例如,FIFO 1的范围从0到N

以下从响应修剪过程开始,描述候选修剪过程。在将新的运动信息插入到短期列表中之前,修剪过程开始检查存储在短期列表中的任何运动信息是否与新的运动信息相同。如果否,则以与上述相同的先入先出方式将该新的运动信息插入到短期列表中。否则,首先删除短期列表中重复的运动信息,然后可以将新的运动信息添加到短期列表中。注意,示例技术还可以将相同的修剪过程应用于长期列表。

以下介绍了时延修剪过程。利用时延特征描述对基于历史的候选列表(例如,短期列表、长期列表或单个基于历史的候选列表)的低复杂度修剪过程。使用时延功能,每次将新的运动信息添加到基于历史的候选列表时,都不会调用修剪过程。取代的是,对于插入到基于历史的候选列表中的每R条新解码/编码的运动信息,均会调用一次修剪过程,其中R是一个正整数。因此,该方法可以在某种程度上有效地减少修剪过程的复杂性,但以失去基于历史的候选列表的紧凑性为代价。一个极端的情况是,当R接近无穷大时,从不会在编码和解码过程中调用修剪过程。注意,编码器/解码器具有选择是否可以将这种时延方法应用于基于历史的候选列表的灵活性。

例如,当视频编码器200和视频解码器300正在构建基于历史的候选列表时,视频编码器200和视频解码器300可能不确定基于历史的候选列表中的任何候选的运动信息是否重复并且可能不删除重复的候选。换句话说,视频编码器200和视频解码器300可以构建基于历史的候选列表而不修剪基于历史的候选列表。

视频编码器200和视频解码器300可能不修剪基于历史的候选列表的一个示例原因是由于子采样和某些候选(例如,两个最近重构块)的排除。如上所述,对某些候选进行子采样和排除提供了从基于历史的候选列表中删除重复或相似的运动信息相对高的可能性。因此,对基于历史的候选列表执行修剪操作可能不会带来太多好处,尤其是对某些候选进行子采样和排除,但可能会花费处理时间。

尽管在一些示例中,视频编码器200和视频解码器300可能不会对基于历史的候选列表执行修剪,但是视频编码器200和视频解码器300可能会对最终的候选列表执行修剪操作。例如,视频编码器200和视频解码器300可基于所识别的基于历史的候选列表的候选的子集来生成候选列表。然后,视频编码器200和视频解码器300可以修剪候选列表。

下面描述合成候选的构建。当对CTU行、切片、图块或图片进行编码/解码时,基于历史的候选列表在初始循环中不总是填充有从实际运动字段中采样的运动。如上所述,通过使用默认值(即零运动)来填充每个空的候选位置。取代的是,为B切片引入了一组合成的双向预测运动对。每个运动对通过参考基于历史的候选列表中的两个可用候选来形成,其中运动对中的L0和L1运动矢量来自第一个可用候选的L0运动矢量,L1运动矢量来自第二个可用候选的L1运动矢量。假设基于历史的候选列表中的可用候选的数量为M,则如下定义来自基于历史的候选列表的候选索引的有序序列,以形成运动对。

例如,当M=4时,有序索引序列为{(0,1),(1,0)}∪{(0,2),(2,0),(1,2),(2,1)}∪{(0,3),(3,0),(1,3),(3,1),(2,3),(3,2)}。将这些运动对顺序插入到最终合并列表中,从而替换基于历史的候选列表中填充的零运动,直到最终合并列表被填满。然后,通过使用零运动和每个参考列表中的第一参考图片来填充最终合并列表中的剩余空闲候选位置。

图7是示出了可执行本发明的技术的示例视频编码器200的框图。提供图7是为了解释的目的,并且不应被认为是对本公开中广泛例示和描述的技术的限制。为了说明的目的,本公开在诸如开发中的HEVC视频编码标准和H.266视频编码标准(例如,VVC)的视频编码标准的上下文中描述了视频编码器200。然而,本公开的技术不限于这些视频编码标准,并且通常可应用于视频编码和解码。

在图7的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波器单元216、解码图片缓冲器(DPB)218和熵编码单元220。

视频数据存储器230可以存储要由视频编码器200的组件进行编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。DPB 218可以用作参考图片存储器,该参考图片存储器存储参考视频数据,以供视频编码器200预测后续视频数据时使用。视频数据存储器230和DPB 218可以由多种存储设备中的任何一种形成,例如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻性RAM(RRAM)或其他存储设备的类型。视频数据存储器230和DPB 218可以由相同的存储设备或分离的存储设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件一起在芯片上,如图所示,或者相对于那些组件在芯片外。

在本公开中,对视频数据存储器230的引用不应解释为限于视频编码器200内部的存储器,除非如此具体地描述,或者除非如此具体地描述,否则对视频编码器200外部的存储器。而是,对视频数据存储器230的引用应该被理解为存储视频编码器200所接收的用于编码的视频数据(例如,要编码的当前块的视频数据)的参考存储器。图1的存储器106还可提供来自视频编码器200的各个单元的输出的临时存储。

示出了图7的各个单元以帮助理解由视频编码器200执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能并在可以执行的操作上预先设置的电路。可编程电路是指可以编程以执行各种任务并在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行使可编程电路以软件或固件的指令所定义的方式操作的软件或固件。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。

视频编码器200可包括由可编程电路形成的算术逻辑单元(ALU)、基本功能单元(EFU)、数字电路、模拟电路和/或可编程核。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收并执行的软件的目标代码,或者视频编码器200内的另一存储器(未示出)可能会存储此类指令。

视频数据存储器230被配置为存储接收到的视频数据。视频编码器200可以从视频数据存储器230检索视频数据的图片,并将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是将被编码的原始视频数据。

模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括附加功能单元,以根据其他预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(LM)单元等。

模式选择单元202通常协调多个编码遍,以测试编码参数的组合以及针对这种组合的所得速率失真值。编码参数可以包括将CTU划分为CU、用于CU的预测模式、用于CU的残差数据的变换类型、用于CU的残差数据的量化参数等等。模式选择单元202可以最终选择具有比其他测试的组合更好的率失真值的编码参数的组合。

视频编码器200可将从视频数据存储器230检索到的图片划分为一系列CTU,并将一个或多个CTU封装在切片内。模式选择单元202可以根据树结构,例如上述HEVC的QTBT结构或四叉树结构,来划分图片的CTU。如上所述,视频编码器200可根据树结构通过划分CTU来形成一个或多个CU。这样的CU也通常可以被称为“视频块”或“块”。

通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224、帧内预测单元226)以生成针对当前块(例如,当前CU或在HEVC中,PU和TU的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元222可执行运动搜索以识别一个或多个参考图片(例如,存储在DPB 218中的一个或多个先前编码的图片)中的一个或多个紧密匹配的参考块。特别地,运动估计单元222可以例如根据绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)等来计算表示潜在参考块与当前块有多相似的值。运动估计单元222通常可使用当前块与所考虑的参考块之间的逐样本差异来执行这些计算。运动估计单元222可识别具有由这些计算生成的最低值的参考块,其指示与当前块最紧密匹配的参考块。

运动估计单元222可形成一个或多个运动矢量(MV),其界定参考图片中的参考块相对于当前图片中的当前块的位置。运动估计单元222然后可以将运动矢量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。运动补偿单元224然后可使用运动矢量来生成预测块。例如,运动补偿单元224可以使用运动矢量来检索参考块的数据。作为另一示例,如果运动矢量具有分数采样精度,则运动补偿单元224可以根据一个或多个插值滤波器来插值预测块的值。此外,对于双向帧间预测,运动补偿单元224可例如通过逐样本平均或加权平均来取回由相应运动矢量识别的两个参考块的数据,并组合所取回的数据。

作为另一示例,对于帧内预测或帧内预测编码,帧内预测单元226可以根据与当前块相邻的采样来生成预测块。例如,对于定向模式,帧内预测单元226通常可以在数学上组合相邻样本的值,并在当前块上沿定义的方向填充这些计算出的值以产生预测块。作为另一示例,对于DC模式,帧内预测单元226可以计算到当前块的相邻采样的平均值,并且生成预测块以包括针对预测块的每个采样的该所得平均值。

模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始、未编码版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐样本差。所得的逐样本差异定义了当前块的残差块。在一些示例中,残差生成单元204还可确定残差块中的样本值之间的差以使用残差差分脉冲代码调制(RDPCM)来生成残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。

在模式选择单元202将CU划分为PU的示例中,每个PU可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种大小的PU。如上所述,CU的大小可以指的是CU的亮度编码块的大小,并且PU的大小可以指的是PU的亮度预测单元的大小。假设特定CU的大小为2Nx2N,则视频编码器200可支持用于帧内预测的2Nx2N或NxN的PU大小,以及用于帧间预测的2Nx2N、2NxN、Nx2N、NxN或类似的对称PU大小。视频编码器200和视频解码器300还可针对用于帧间预测的2NxnU,2NxnD,nLx2N和nRx2N的PU大小支持非对称分区。

在模式选择单元202不再将CU划分为PU的示例中,每个CU可与亮度编码块和对应的色度编码块相关联。如上所述,CU的大小可以指CU的亮度编码块的大小。视频编码器200和视频解码器300可以支持2N×2N、2N×N或N×2N的CU大小。

对于其他视频编码技术,例如块内复制模式编码、仿射模式编码和线性模型(LM)模式编码,作为少数示例,模式选择单元202会通过与编码技术相关联的各个单元来生成用于当前编码块的预测块。在一些示例中,例如调色板模式编码,模式选择单元202可以不生成预测块,而是生成语法元素,该语法元素指示基于所选调色板重构块的方式。在这样的模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。

如上所述,残差生成单元204接收当前块和相应的预测块的视频数据。残差生成单元204然后为当前块生成残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐样本差。

变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(在本文中称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(DCT)、方向变换,Karhunen-Loeve变换(KLT)或概念上类似的变换应用于残差块。在一些示例中,变换处理单元206可以对残差块执行多个变换,例如主变换和副变换,例如旋转变换。在一些示例中,变换处理单元206不将变换应用于残差块。

量化单元208可以量化变换系数块中的变换系数,以产生量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(QP)值来量化变换系数块的变换系数。视频编码器200(例如,经由模式选择单元202)可通过调整与CU相关联的QP值来调整应用于与当前块相关联的系数块的量化程度。量化可能会导致信息丢失,因此,量化的变换系数的精度可能会比变换处理单元206生成的原始变换系数的精度低。

逆量化单元210和逆变换处理单元212可以分别对量化的变换系数块应用逆量化和逆变换,以从变换系数块重构残差块。重构单元214可以基于重构的残差块和由模式选择单元202生成的预测块来产生与当前块相对应的重构块(尽管可能具有某种程度的失真)。例如,重构单元214可以将重构的残差块的样本添加到模式选择单元202所生成的来自预测块的对应样本,以产生重构块。

滤波器单元216可对重构块执行一个或多个滤波器操作。例如,滤波器单元216可以执行解块操作以减少沿着CU的边缘的块状伪影。在一些示例中,可以跳过过滤器单元216的操作。

视频编码器200将重构块存储在DPB 218中。例如,在不需要滤波器单元216的操作的示例中,重构单元214可以将重构块存储到DPB 218。在需要滤波器单元216的操作的示例中,滤波器单元216可以将滤波后的重构块存储到DPB 218。运动估计单元222和运动补偿单元224可从DPB 218检索参考图像,该参考图像是由重构的(并且可能被滤波的)块形成的,以帧间预测随后编码的图像的块。另外,帧内预测单元226可使用当前图片的DPB 218中的重构块来对当前图片中的其他块进行帧内预测。

通常,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一示例的语法元素执行一个或多个熵编码操作,以生成熵编码的数据。例如,熵编码单元220可以执行上下文自适应可变长度编码(CAVLC)操作、CABAC操作、可变到可变(V2V)长度编码操作、基于语法的上下文自适应二进制算术编码(SBAC)操作、概率区间分割熵(PIPE)编码操作、指数哥伦布编码操作或对数据的另一种类型的熵编码操作。在一些示例中,熵编码单元220可以在语法元素未被熵编码的旁通模式下操作。

视频编码器200可输出包括重构切片或图片的块所需的熵编码语法元素的比特流。特别地,熵编码单元220可以输出比特流

关于块描述了上述操作。这样的描述应该被理解为用于亮度编码块和/或色度编码块的操作。如上所述,在一些示例中,亮度编码块和色度编码块是CU的亮度和色度分量。在一些示例中,亮度编码块和色度编码块是PU的亮度和色度分量。

在一些示例中,不必针对色度编码块重复针对亮度编码块执行的操作。作为一个示例,不必重复用于识别用于亮度编码块的运动矢量(MV)和参考图片的操作来识别用于色度块的MV和参考图片。相反,可以缩放用于亮度编码块的MV以确定用于色度块的MV,并且参考图片可以是相同的。作为另一示例,对于亮度编码块和色度编码块,帧内预测处理可以是相同的。

视频编码器200表示配置为对视频数据进行编码的设备的示例,该设备包括配置为存储视频数据的存储器以及在固定功能和/或可编程电路中实现并配置为执行本公开中描述的示例技术的一个或多个处理单元。例如,模式选择单元202可以通过将重构块的运动信息(例如,用于AMVP的运动矢量信息和用于合并模式的运动矢量信息以及运动矢量所指向的参考图片)存储到基于历史的候选列表作为基于历史的候选列表的候选来重构基于历史的候选列表。视频数据存储器230可以存储基于历史的候选列表,并且模式选择单元202可以将存储在DPB 218中的重构块的运动信息添加到基于历史的候选列表中。在一些示例中,模式选择单元202可以构建基于历史的候选列表而不修剪基于历史的候选列表。

模式选择单元202可以被配置为识别基于历史的候选列表的候选的子集。模式选择单元202可以以多种方式来识别基于历史的候选列表的候选的子集。作为用于识别基于历史的候选列表的候选的子集的第一示例技术,模式选择单元202识别与最近重构块(例如,两个最近重构的区块)的运动信息相对应的基于历史的候选列表的一个或多个候选的第一子集。。模式选择单元202识别排除第一子集的基于历史的候选列表的一个或多个候选的第二子集。例如,第二子集包括除了两个最近重构块的运动信息之外的基于历史的候选列表中的其余重构块的运动信息。在该示例中,模式选择单元202将基于历史的候选列表的一个或多个候选的第二子集识别为基于历史的候选列表的子集。

作为用于识别基于历史的候选列表的候选的子集的第二示例技术,模式选择单元202对基于历史的候选列表进行子采样以识别候选的子集。作为一个示例,模式选择单元202识别基于历史的候选列表中的每第四个候选。作为一个示例,模式选择单元202从基于历史的候选列表中的最早添加的候选开始子采样。

作为用于识别基于历史的候选列表的候选的子集的第三示例技术,模式选择单元202可以执行第一示例技术和第二示例技术的组合。例如,模式选择单元202识别与最近重构块的运动信息相对应的基于历史的候选列表的一个或多个候选的第一子集,并识别排除第一子集的基于历史的候选列表的一个或多个候选的第二子集。为了识别基于历史的候选列表的候选的子集,模式选择单元202对第二子集进行子采样。作为一个示例,模式选择单元202对基于历史的候选列表进行子采样,但是排除第一子集。作为另一示例,模式选择单元202仅对第二子集进行子采样。

模式选择单元202可以基于所识别的基于历史的候选列表的候选的子集来生成候选列表。例如,模式选择单元202可以将所识别的候选的子集添加到初始合并列表或AMVP列表以生成最终合并或AMVP列表。作为另一示例,所识别的候选的子集可以形成为其自身的独立可索引列表(例如,不需要添加到合并或AMVP列表)。

模式选择单元202可以用信号发送指示进入所生成的候选列表中的索引的信息,以识别运动信息单元以重构当前块。例如,视频解码器300可执行类似的操作以生成候选列表。视频解码器300可根据用信号发送的信息确定索引,并确定由索引识别的运动信息。视频解码器300可利用运动信息来确定当前块的运动矢量,并使用所确定的运动矢量来重构当前块。例如,视频解码器300可基于所确定的运动矢量来确定预测块。

视频编码器200还可发信号指示表示基于用于重构当前块的运动信息而识别的预测块之间的残差的信息。视频解码器300可将残差添加到预测块以重构当前块。

图8是示出了可执行本公开的技术的示例视频解码器300的框图。提供图8是为了解释的目的,并且不限制本公开中广泛例示和描述的技术。为了说明的目的,本公开描述了根据包括VVC和HEVC的JEM的技术描述的视频解码器300。然而,本公开的技术可以由被配置为其他视频编码标准的视频编码设备来执行。

在图8的示例中,视频解码器300包括编码图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲区(DPB)314。预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括加法单元,以根据其他预测模式来执行预测。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(LM)单元等。在其他示例中,视频解码器300可以包括更多,更少或不同的功能组件。

CPB存储器320可以存储将由视频解码器300的组件解码的视频数据,例如编码的视频比特流。可以例如从计算机可读介质110(图1)获得存储在CPB存储器320中的视频数据。CPB存储器320可以包括存储自编码的视频比特流的编码视频数据(例如,语法元素)的CPB。而且,CPB存储器320可以存储除编码图片的语法元素之外的视频数据,例如表示来自视频解码器300的各个单元的输出的临时数据。DPB 314通常存储解码的图片,当解码编码的视频比特流的后续数据或图片时,视频解码器300可以输出和/或将其用作参考视频数据。CPB存储器320和DPB 314可以由多种存储设备中的任何一种形成,例如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻性RAM(RRAM)或其他存储设备的类型。CPB存储器320和DPB 314可以由相同的存储设备或分离的存储设备提供。在各种示例中,CPB存储器320可以与视频解码器300的其他组件在芯片上,或者相对于那些组件在芯片外。

另外或替代地,在一些示例中,视频解码器300可从存储器120(图1)检索编码的视频数据。即,存储器120可以如上面与CPB存储器320讨论的那样存储数据。同样,当视频解码器300的某些或全部功能通过软件实现以由视频解码器300的处理电路执行时,存储器120可以存储要由视频解码器300执行的指令。

示出了图8中所示的各种单元以帮助理解由视频解码器300执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。类似于图7,固定功能电路是指提供特定功能并在可以执行的操作上预设的电路。可编程电路是指可以编程以执行各种任务并在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行使可编程电路以软件或固件的指令所定义的方式操作的软件或固件。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。

视频解码器300可包括ALU、EFU、数字电路、模拟电路和/或由可编程电路形成的可编程核。在视频解码器300的操作由在可编程电路上执行的软件执行的示例中,片上或片外存储器可以存储视频解码器300接收并执行的软件的指令(例如,目标代码)。

熵解码单元302可从CPB接收编码的视频数据,并对视频数据进行熵解码以复制语法元素。预测处理单元304,逆量化单元306,逆变换处理单元308,重构单元310和滤波器单元312可以基于从比特流中提取的语法元素来生成解码的视频数据。

通常,视频解码器300在逐块的基础上重构图片。视频解码器300可单独地对每个块执行重构操作(其中当前正在重构(即,被解码的块)可被称为“当前块”)。

熵解码单元302可对定义量化的变换系数块的量化的变换系数的语法元素以及诸如量化参数(QP)和/或变换模式指示的变换信息进行熵解码。逆量化单元306可以使用与量化的变换系数块相关联的QP来确定量化度,并且同样地,确定逆量化度以供逆量化单元306应用。逆量化单元306可以例如执行按位(bitwise)左移操作以对量化的变换系数进行逆量化。逆量化单元306从而可以形成包括变换系数的变换系数块。

在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块以生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆DCT、逆整数变换、逆Karhunen-Loeve变换(KLT)、逆旋转变换,逆方向变换或另一逆变换应用于系数块。

此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示DPB 314中的从其检索参考块的参考图片,以及识别相对于当前图片中的当前块的位置的参考图片中的参考块的位置的运动矢量。运动补偿单元316通常可以以与关于运动补偿单元224(图7)所描述的方式基本上相似的方式来执行帧间预测处理。

作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以以与关于帧内预测单元226(图7)描述的方式基本上相似的方式来执行帧内预测处理。帧内预测单元318可以从DPB 314检索到当前块的相邻样本的数据。

重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样本添加到预测块的对应样本以重构当前块。

滤波器单元312可对重构块执行一个或多个滤波器操作。例如,滤波器单元312可执行解块操作以减少沿着重构块的边缘的块状伪影。不一定在所有示例中都执行过滤器单元312的操作。

视频解码器300可将重构块存储在DPB 314中。如上所述,DPB 314可以向预测处理单元304提供参考信息,例如用于帧内预测的当前图片的样本以及用于后续运动补偿的先前解码的图片。此外,视频解码器300可以从DPB输出解码的图片,以便随后在诸如图1的显示设备118的显示设备上呈现。

以此方式,视频解码器300表示视频解码设备的示例,该视频解码设备包括配置为存储视频数据的存储器以及以固定功能和/或可编程电路实现的并配置为执行本公开描述的示例技术的一个或多个处理单元。例如,预测单元304可以通过将重构块的运动信息(例如,用于AMVP的运动矢量信息和用于合并模式的运动矢量信息以及运动矢量所指向的参考图片)存储到基于历史的候选列表作为基于历史的候选列表的候选来重构基于历史的候选列表。DPB 314(或可能的某些其他存储器)可以存储基于历史的候选列表,并且预测处理单元304可以在基于历史的候选列表中添加存储在DPB 314中的重构块的运动信息。在一些示例中,预测处理单元304可以构建基于历史的候选列表而不修剪基于历史的候选列表。

预测处理单元304可以被配置为识别基于历史的候选列表的候选的子集。预测处理单元304可以以多种方式来识别基于历史的候选列表的候选的子集。作为用于识别基于历史的候选列表的候选的子集的第一示例技术,预测处理单元304识别与最近重构块(例如,两个最近重构的区块)的运动信息相对应的基于历史的候选列表的一个或多个候选的第一子集。。预测处理单元304识别排除第一子集的基于历史的候选列表的一个或多个候选的第二子集。例如,第二子集包括除了两个最近重构块的运动信息之外的基于历史的候选列表中的其余重构块的运动信息。在该示例中,预测处理单元304将基于历史的候选列表的一个或多个候选的第二子集识别为基于历史的候选列表的子集。

作为用于识别基于历史的候选列表的候选的子集的第二示例技术,预测处理单元304对基于历史的候选列表进行子采样以识别候选的子集。作为一个示例,预测处理单元304识别基于历史的候选列表中的每第四个候选。作为一个示例,预测处理单元304从基于历史的候选列表中的最早添加的候选开始子采样。

作为用于识别基于历史的候选列表的候选的子集的第三示例技术,预测处理单元304可以执行第一示例技术和第二示例技术的组合。例如,预测处理单元304识别与最近重构块的运动信息相对应的基于历史的候选列表的一个或多个候选的第一子集,并识别排除第一子集的基于历史的候选列表的一个或多个候选的第二子集。为了识别基于历史的候选列表的候选的子集,预测处理单元304对第二子集进行子采样。作为一个示例,预测处理单元304对基于历史的候选列表进行子采样,但是排除第一子集。作为另一示例,预测处理单元304仅对第二子集进行子采样。

预测单元304可以基于所识别的基于历史的候选列表的候选的子集来生成候选列表。例如,预测处理单元304可以将所识别的候选的子集添加到初始合并列表或AMVP列表以生成最终合并或AMVP列表。作为另一示例,所识别的候选的子集可以形成为其自身的独立可索引列表(例如,不需要添加到合并或AMVP列表)。

预测处理单元304可以基于所生成的候选列表来重构当前块。例如,预测处理单元304可以接收指示进入所生成的候选列表中的索引的信息,并且基于由索引识别进入所生成的候选列表中的存储在所生成的候选列表中的运动信息来确定当前块的运动信息。例如,在合并模式下,预测处理单元304可以将存储在所生成的候选列表中的运动信息的运动矢量设置为当前块的运动矢量。在AMVP模式下,预测处理单元304可以接收运动矢量差(MVD),并将MVD添加到存储在所生成的候选列表中的运动信息的运动矢量中,以确定当前块的运动矢量。预测处理单元304可以基于所确定的运动信息来确定预测块。

另外,预测处理单元304可以接收指示预测块和当前块之间的残差的信息。重构单元310可以基于残差和预测块来重构当前块(例如,将残差添加到预测块)。

图9是示出了对视频数据进行编码的示例方法的流程图。关于诸如视频编码器200的处理器描述了示例技术。例如,存储器(例如,视频数据存储器230或DPB 218)可以存储基于历史的候选列表。

处理器(例如,视频编码器200)可以被配置为通过将重构块的运动信息存储到基于历史的候选列表中作为基于历史的候选列表的候选来构建基于历史的候选列表(400)。在一些示例中,处理器可以构建基于历史的候选列表而不修剪基于历史的候选列表。

处理器可以识别基于历史的候选列表的候选的子集(402)。作为一个示例,处理器可以识别与最近重构块的运动信息相对应的基于历史的候选列表的一个或多个候选的第一子集,并且识别排除第一子集的基于历史的候选列表的一个或多个候选的第二子集。在该示例中,为了识别基于历史的候选列表的候选的子集,处理器可以被配置为识别基于历史的候选列表的一个或多个候选的第二子集。在一些示例中,为了识别一个或多个候选的第一子集,处理器可以被配置为识别与两个最近重构块的运动信息相对应的基于历史的候选列表的两个候选。

作为另一示例,为了识别候选的子集,处理器可以被配置为对基于历史的候选列表进行子采样以识别候选的子集。例如,为了对基于历史的候选列表进行子采样,处理器可以被配置为识别基于历史的候选列表中的每第四个候选。而且,为了对基于历史的候选列表进行子采样,处理器可以被配置为从基于历史的候选列表中最早添加的候选开始进行子采样。

作为另一示例,处理器可以识别与最近重构块的运动信息相对应的基于历史的候选列表的一个或多个候选的第一子集,并识别排除第一子集的基于历史的候选列表的一个或多个候选的第二子集。在该示例中,为了识别基于历史的候选列表的候选的子集,处理器可以对第二子集进行子采样。

处理器可以基于所识别的基于历史的候选列表的候选的子集来生成候选列表(404)。候选列表可以是合并列表或高级运动矢量预测(AMVP)列表之一。例如,处理器可以将候选的子集添加到初始合并或AMVP列表中以生成最终合并或AMVP列表。

处理器可以用信号通知指示进入所生成的候选列表中的索引的信息以识别用于重构当前块的运动信息(406)。例如,利用进入所生成的候选列表中的索引,视频解码器300可确定当前块的运动信息。基于当前块的运动信息,视频解码器300可以确定预测块。处理器还可以发信号指示表示基于用于重构当前块的运动信息识别的预测块之间的残差之间的残差的信息。视频解码器300可将残差添加到预测块以重构当前块。

图10是示出了对视频数据进行解码的示例方法的流程图。关于处理器(例如,视频解码器300)描述了示例技术。例如,存储器(例如,DPB 314或一些其他存储器)可以存储基于历史的候选列表。

处理器(例如,视频解码器300)可以被配置为通过将重构块的运动信息存储到基于历史的候选列表中作为基于历史的候选列表的候选来构建基于历史的候选列表(500)。在一些示例中,处理器可以构建基于历史的候选列表而不修剪基于历史的候选列表。

处理器可以识别基于历史的候选列表的候选的子集(502)。作为一个示例,处理器可以识别与最近重构块的运动信息相对应的基于历史的候选列表的一个或多个候选的第一子集,并且识别排除第一子集的基于历史的候选列表的一个或多个候选的第二子集。在该示例中,为了识别基于历史的候选列表的候选的子集,处理器可以被配置为识别基于历史的候选列表的一个或多个候选的第二子集。在一些示例中,为了识别一个或多个候选的第一子集,处理器可以被配置为识别与两个最近重构块的运动信息相对应的基于历史的候选列表的两个候选。

作为另一示例,为了识别候选的子集,处理器可以被配置为对基于历史的候选列表进行子采样以识别候选的子集。例如,为了对基于历史的候选列表进行子采样,处理器可以被配置为识别基于历史的候选列表中的每四个候选。而且,为了对基于历史的候选列表进行子采样,处理器可以被配置为从基于历史的候选列表中最早添加的候选开始进行子采样。

作为另一示例,处理器可以识别与最近重构块的运动信息相对应的基于历史的候选列表的一个或多个候选的第一子集,并识别排除第一子集的基于历史的候选列表的一个或多个候选的第二子集。在该示例中,为了识别基于历史的候选列表的候选的子集,处理器可以对第二子集进行子采样。

处理器可以基于所识别的基于历史的候选列表的候选的子集来生成候选列表(504)。候选列表可以是合并列表或高级运动矢量预测(AMVP)列表之一。例如,处理器可以将候选的子集添加到初始合并或AMVP列表中以生成最终合并或AMVP列表。

处理器可以基于所生成的候选列表来重构当前块(506)。例如,处理器可以接收指示进入所生成的候选列表中的索引的信息,并且基于由索引识别进入所生成的候选列表中的存储在所生成的候选列表中的运动信息来确定当前块的运动信息。处理器可以基于所确定的运动信息来确定预测块,接收指示预测块与当前块之间的残差的信息,并且基于残差和预测块来重构当前块。

应当认识到,根据示例,本文描述的任何技术的某些动作或事件可以以不同的顺序执行,可以被添加,合并或完全省略(例如,并非所有描述的动作或事件都是技术实践所必需的)。此外,在某些示例中,动作或事件可以例如通过多线程处理、中断处理或多个处理器并发地而不是顺序地执行。

在一个或多个示例中,可以以硬件,软件,固件或其任何组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质的有形介质,或者通信介质,包括例如根据通信协议来促进将计算机程序从一个地方转移到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是可以由一台或多台计算机或一个或多个处理器访问以检索指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。

作为示例而非限制,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁性存储设备、闪存或可用于以指令或数据结构形式存储所需程序代码且可由计算机访问的任何其他介质中的一个或多个。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或无线技术(例如红外,无线电和微波)从网站,服务器或其他远程源发送指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或无线技术(例如红外,无线电和微波)。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬时介质,而是针对非瞬时的有形存储介质。本文使用的磁盘和光盘包括光盘(CD)、激光光盘、光盘、字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘则通过激光光学方式复制数据。上述的组合也应包括在计算机可读介质的范围内。

指令可以由一个或多个处理器(例如一个或多个DSP、通用微处理器、ASIC、FPGA或其他等效的集成或离散逻辑电路)执行。因此,如本文所使用的,术语“处理器”可以指任何前述结构或适合于实现本文描述的技术的任何其他结构。另外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或结合在组合编解码器中。同样,该技术可以在一个或多个电路或逻辑元件中完全实现。

本公开的技术可以在包括无线手持机、集成电路(IC)或一组IC(例如,芯片组)的多种设备或装置中实现。在本公开中描述各种组件、模块或单元以强调经配置以执行所公开技术的设备的功能方面,但不一定需要由不同硬件单元来实现。而是,如上所述,各种单元可以组合在编解码器硬件单元中,或者由互操作硬件单元的集合来提供,该硬件单元包括与合适的软件和/或固件结合的如上所述的一个或多个处理器。

已经描述了各种示例。这些和其他示例在所附权利要求的范围内。

相关技术
  • 具有分类的基于历史的候选列表
  • 用于帧内块复制的基于历史的运动候选列表构建
技术分类

06120112525077