基于历史的运动矢量预测的简化的制作方法

文档序号:26013265发布日期:2021-07-23 21:34阅读:201来源:国知局
基于历史的运动矢量预测的简化的制作方法

相关申请的交叉引用

本申请要求递交于2019年11月26日的美国申请no.16/696,008的优先权,该申请要求递交于2018年11月27日的美国临时申请no.62/771,981的权益,上述申请的全部内容通过引用并入本文。

本公开涉及视频编码(encoding)和视频解码(decoding)。



背景技术:

数字视频能力可以结合到广泛的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(pda)、膝上型或桌上型计算机、平板计算机、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、数字游戏设备、视频游戏设备、视频游戏控制台、蜂窝或卫星无线电话、所谓的“智能电话”、视频电话会议设备、视频流设备等。数字视频设备实施视频编解码(coding)技术,诸如由mpeg-2、mpeg-4、itu-th.263、itu-th.264/mpeg-4第10部分、高级视频编解码(avc)、高效视频编解码(hevc)标准、itu-th.265/高效视频编解码(hevc)所定义的标准以及此类标准的扩展中所描述的那些技术。通过实施这样的视频编解码技术,视频设备可以更有效地发送、接收、编码、解码和/或存储数字视频信息。

视频编解码技术包括空间(图片内)预测和/或时间(图片间)预测,以减少或去除视频序列中固有的冗余。对于基于块的视频编解码,视频切片(slice)(例如,视频图片或视频图片的一部分)可以被划分为视频块,这些视频块也可以称为编解码树单元(codingtreeunit,ctu)、编解码单元(codingunit,cu)和/或编解码节点。图片的帧内编解码(i)切片中的视频块通过使用相对于相同图片中相邻块中的参考样点的空间预测来进行编码。图片的帧间编解码(p或b)切片中的视频块可以使用相对于同一图片中相邻块中的参考样点的空间预测,或者相对于其它参考图片中的参考样点的时间预测。图片可以被称为帧,并且参考图片可以被称为参考帧。



技术实现要素:

一般而言,本公开描述了用于视频编解码中帧间预测和运动矢量重构的技术。更具体而言,本公开描述了用于根据基于历史的运动矢量预测(history-basedmotionvectorprediction,hmvp)进行帧间预测运动矢量候选列表(也称为运动矢量预测器列表)构建的技术。如更详细地描述的,视频编解码器(例如,视频编码器或视频解码器)可以被配置为执行简化的剪枝操作(pruningoperation)。在本公开中,剪枝操作通常指的是用于确定是否向运动矢量预测器列表添加来自hmvp候选历史表中的hmvp候选的操作。在一些情况中,剪枝操作可以指的是从运动矢量预测列表中移除hmvp候选。作为简化剪枝操作的一个示例,视频编解码器可以将hmvp候选历史表中的hmvp候选的子集仅与运动矢量预测器列表中的条目的子集进行比较,以确定该hmvp候选的子集与该运动矢量预测器列表中的条目的子集相同还是不同。

只有在hmvp候选的子集中的一个或多个hmvp候选不同于运动矢量预测器列表中的条目的子集的情况下,视频编解码器才可以将该hmvp候选的子集中的一个或多个hmvp候选添加至运动矢量预测器列表中。以这种方式,视频编解码器可以限制确定哪些hmvp候选要添加至运动矢量预测器列表所需要的比较操作的数目。对比较操作的数目限制可以降低构建运动矢量预测器列表所需要的时间量,从而降低编码或解码视频数据所需要的时间量,以及改进视频编解码器的整体操作。

在一个示例中,本公开描述了一种用于对视频数据进行编解码的方法,该方法包括:构建基于历史的运动矢量预测(hmvp)候选历史表,其包括扩展到视频数据的当前块的邻近相邻块之外的先前编解码块的运动矢量信息;构建运动矢量预测器列表;向运动矢量预测器列表添加来自hmvp候选历史表中的一个或多个hmvp候选,其中添加来自hmvp候选历史表中的一个或多个hmvp候选包括:将hvmp候选历史表中的第一hmvp候选与运动矢量预测器列表中的两个条目进行比较,而不与运动矢量预测器列表中的其它条目进行比较;以及当第一hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第一hmvp候选添加至运动矢量预测器列表;以及使用运动矢量预测器列表对视频数据的当前块进行编解码。

在一个示例中,本公开描述了一种用于对视频数据进行编解码的设备,该设备包括存储器,该存储器被配置为存储基于历史的运动矢量预测(hmvp)候选历史表以及运动矢量预测器列表,该hmvp候选历史表包括扩展到视频数据的当前块的邻近相邻块之外的先前编解码块的运动矢量信息。该设备包括处理电路,该处理电路被配置为:构建用于存储在存储器中的hmvp候选历史表,构建用于存储在存储器中的运动矢量预测器列表,向运动矢量预测器列表中添加来自hmvp候选历史表中的一个或多个hmvp候选,其中为了添加来自hmvp候选历史表中的一个或多个hmvp候选,该处理电路被配置为:将hvmp候选历史表中的第一hmvp候选与运动矢量预测器列表中的两个条目进行比较,而不与运动矢量预测器列表中的其它条目进行比较;以及当第一hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第一hmvp候选添加至运动矢量预测器列表;以及使用存储在存储器中的运动矢量预测器列表对视频数据的当前块进行编解码。

在一个示例中,本公开描述了一种其上存储有指令的非暂时性计算机可读存储介质,当所述指令被执行时致使一个或多个处理器:构建基于历史的运动矢量预测(hmvp)候选历史表,其包括扩展到视频数据的当前块的邻近相邻块之外的先前编解码块的运动矢量信息;构建运动矢量预测器列表;向运动矢量预测器列表添加来自hmvp候选历史表中的一个或多个hmvp候选,其中致使一个或多个处理器添加来自hmvp候选历史表中的一个或多个hmvp候选的指令包括致使一个或多个处理器执行以下操作的指令:将hvmp候选历史表中的第一hmvp候选与运动矢量预测器列表中的两个条目进行比较,而不与运动矢量预测器列表中的其它条目进行比较;以及当第一hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第一hmvp候选添加至运动矢量预测器列表;以及使用运动矢量预测器列表对视频数据的当前块进行编解码。

在附图和以下描述中阐述了一个或多个示例的细节。根据说明书、附图和权利要求书,其它特征、目的和优点将是显而易见的。

附图说明

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

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

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

图4a是示出用于合并(merge)模式的空间相邻候选的概念图。

图4b是示出用于高级运动矢量预测(amvp)模式的空间相邻候选的概念图。

图5是示出时间运动矢量预测器(tmvp)候选和运动矢量缩放的概念图。

图6是示出得到非邻近空间合并候选的概念图。

图7是图示示例编码方法的流程图。

图8是图示示例解码方法的流程图。

图9是图示示例编解码方法的流程图。

具体实施方式

视频编解码(例如,视频编码或视频解码)包括帧间预测或帧内块复制(intrablockcopy,ibc)。在帧间预测或ibc二者中,视频编码器针对当前块基于运动矢量(对于ibc,运动矢量可以是块矢量)确定预测块,确定预测块与当前块之间的残差信息(例如,差异),并且信令通知该残差信息。视频解码器接收残差信息。另外,视频解码器对于当前块确定运动矢量,以及基于运动矢量确定预测块。视频解码器将残差信息添加至预测块以重构当前块。

视频解码器对于当前块确定运动矢量的一种方式是基于运动矢量预测器列表。视频编码器和视频解码器二者利用类似的过程来构建相应的运动矢量预测器列表,使得由视频编码器构建的运动矢量预测器列表和由视频解码器构建的运动矢量预测器列表是相同的。运动矢量预测器列表包括先前编解码块的运动矢量信息,诸如空间相邻的块(例如,在当前块的相同图片中与当前块相邻的块)和并置(collocated)的块(例如,在其它图片中位于特定位置的块)。

视频编码器确定运动矢量预测器列表的条目并且信令通知指示该条目的信息。视频解码器基于该条目确定来自运动矢量预测器列表中的运动矢量信息,并且基于所确定的运动矢量信息确定当前块的运动矢量。作为一个示例,视频解码器可以设置当前块的运动矢量等于所确定的运动矢量信息(例如,诸如在合并模式中)。作为另一示例,视频解码器可以向所确定的运动矢量信息添加由视频编码器信令通知的运动矢量差(motionvectordifference,mvd),以确定当前块的运动矢量(例如,诸如在高级运动矢量预测(advancedmotionvectorprediction,amvp)模式中)。

除了空间相邻的块或并置的块以外,视频编码器和视频解码器可以使用基于历史的运动矢量预测(hmvp)候选来构建运动矢量预测器列表。hmvp候选可以被用作hmvp预测的部分,其中视频编码器和视频解码器构建包括hmvp候选的hmvp候选历史表。hmvp候选可以包括比空间上相邻的块更扩展(例如,比空间上相邻的块更远离当前块)的先前编解码块的运动矢量信息。

在一些技术中,视频编码器和视频解码器将来自hmvp候选历史表的hmvp候选添加至运动矢量预测器列表中。然而,将hmvp候选添加至运动矢量预测器列表可能导致运动矢量预测器列表中产生重复条目。作为示例,对于空间相邻的块,hmvp候选的运动矢量信息可能与已经在运动矢量预测器列表中的运动矢量信息相同。因此,在一些示例中,视频编码器和视频解码器执行剪枝操作,其中hmvp候选只有在该hmvp候选不同于已经在运动矢量预测器列表中的条目时才被添加。例如,视频编码器和视频解码器将hmvp候选与运动矢量预测器列表中的条目进行比较,并且仅添加与运动矢量预测器列表中的条目不同的hmvp候选。

在这种剪枝操作中可能存在一些技术问题。例如,将每一个hmvp候选与运动矢量预测器列表中的每一个条目进行比较可能需要许多比较操作,这可能降低编解码处理的速度。然而,在运动矢量预测器列表中具有重复候选也可以影响编解码效率。运动矢量预测器列表的最大大小可以是固定的。因此,如果运动矢量预测器列表包括重复的条目并且运动矢量预测器列表是满的(例如,条目数量等于最大大小),则存在遗漏可以提供更好编解码效率的潜在条目而呈现相同条目的重复项的可能性,这可能对编解码增益产生负面影响。

本公开描述了以平衡减少比较操作的增益与运动矢量预测器列表中具有重复条目的成本的方式使用hmvp候选构建运动矢量预测器列表的示例技术。可能存在hmvp候选的子集和运动矢量预测器列表中条目的子集,与剩余hmvp候选和运动矢量预测器列表中的剩余条目相比,其存在重复的可能性更高。

在本公开描述的一个或多个示例中,视频编码器和视频解码器可以对hmvp候选的子集与运动矢量预测器列表中的条目子集进行比较,以确定是否添加hmvp候选的子集中的hmvp候选。对于剩余的hmvp候选,视频编码器和视频解码器可以不对hmvp候选与运动矢量预测器列表中的任何条目进行比较。

作为示例,运动矢量预测器列表中的条目可以包括当前块的左相邻块的运动矢量信息。第一hmvp候选可以包括与左侧的左相邻块相邻的第一块的运动矢量信息,并且第二hmvp候选可以包括与左侧的第一块相邻的第二块的运动矢量信息。

在这个示例中,第一块的运动信息(例如,第一hmvp候选)与左相邻块的运动信息相同的可能性高于第二块的运动信息(例如,第二hmvp候选)与左相邻块的运动信息相同的可能性。另外,第一hmvp候选与运动矢量预测器列表中的一些其它条目相同的可能性可能相对较小,因为运动矢量预测器列表中的其它条目可能与第一hmvp不相邻或相对接近。

第一hmvp候选具有更高的可能性拥有与左相邻块相同的运动矢量信息,这可能是由于第一块与左相邻块的接近。一般而言,较近的块的运动矢量信息相同的可能性高于较远的块的运动矢量信息相同的可能性。

在一些示例中,视频编码器和视频解码器可以将第一hmvp候选与运动矢量预测器列表中的条目进行比较,以获得左相邻块的运动矢量信息,并且可能与运动矢量预测器列表中的有限更多个条目(例如,一个更多条目)进行比较,但是不能将第一hmvp候选与运动矢量预测器列表中的任何剩余条目进行比较。如果第一hmvp候选不同于运动矢量预测器列表的子集中的条目,则视频编码器和视频解码器可以将第一hmvp候选添加在运动矢量预测器列表中。如果第一hmvp候选与运动矢量预测器列表的子集中的任意条目相同,则视频编码器和视频解码器可以不将第一hmvp候选添加在运动矢量预测器列表中。

以这种方式,减少了比较操作的数目(例如,视频编码器和视频解码器可以将第一hmvp候选仅与运动矢量预测器列表中的条目的子集进行比较)。在一些示例中,在运动矢量预测器列表中可能存在重复的条目。作为示例,存在运动矢量预测器列表中未与第一hmvp候选进行比较的条目之一具有与第一hmvp候选相同的运动矢量信息的可能性。在这种情况下,在运动矢量预测器列表中可能存在重复的运动矢量信息。然而,在一些示例中,在运动矢量预测器列表中未与第一hmvp候选进行比较的条目可以是针对相对远离第一hmvp候选的块。因此,第一hmvp候选与运动矢量预测器列表中(未与第一hmvp候选进行比较)的任何剩余条目相同的可能性可能相对较低。

因此,在保持重复运动矢量信息的低可能性的同时,可以减少为剪枝而执行的操作的数目。例如,作为运动矢量预测器列表的剪枝操作的一部分,视频编码器和视频解码器可以将hmvp候选历史表中的第一hmvp候选与运动矢量预测器列表中的两个条目进行比较,而不与运动矢量预测器列表中的其它条目进行比较,并且当第一hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第一hmvp候选添加到运动矢量预测器列表中。在这个示例中,尽管第一hmvp候选没有与运动矢量预测器列表中的剩余条目进行比较,但是运动矢量预测器列表中的剩余条目之一是第一hmvp候选的副本的可能性低,这是因为第一hmvp候选所针对的块不接近其运动矢量信息用于构建运动矢量预测器列表中的剩余条目的块。

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

如图1所示,在此示例中,系统100包括源设备102,其提供将由目的地设备116进行解码和显示的编码视频数据。特别地,源设备102经由计算机可读介质110向目的地设备116提供视频数据。源设备102和目的地设备116可以包含广泛的设备中的任何一种,包括桌上型计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、诸如智能电话的电话手持设备、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。在一些情况下,源设备102和目的地设备116可以被配备用于无线通信,并且因此可以被称为无线通信设备。

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

如图1中所示的系统100仅仅是一个示例。一般而言,任何数字视频编码和/或解码设备可以执行用于基于历史的运动矢量预测的技术。源设备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可以调制所接收的传输信号。通信介质可以包括任何无线或有线通信介质,诸如射频(radiofrequency,rf)频谱或一条或多条物理传输线。通信介质可以形成诸如以下各项的基于分组的网络的部分:局域网、广域网、或诸如因特网之类的全球网络。通信介质可以包括路由器、交换机、基站或者对促进从源设备102到目的地设备116的通信可能有用的任何其它装备。

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

在一些示例中,源设备102可以将编码视频数据输出至文件服务器114或者可以存储由源设备102生成的编码视频的另一中间存储设备。目的地设备116可以经由流式传输或下载来从文件服务器114访问所存储视频数据。文件服务器114可以是能够存储编码视频数据并将此编码视频数据传输至目的地设备116的任何类型的服务器设备。文件服务器114可以代表(例如,用于网站的)web服务器、文件传输协议(filetransferprotocol,ftp)服务器、内容递送网络设备或网络附接存储(networkattachedstorage,nas)设备。目的地设备116可以通过包括因特网连接的任何标准数据连接从文件服务器114访问编码视频数据。这可以包括适合用于访问存储在文件服务器114上的编码视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,dsl、电缆调制解调器等)或两者的组合。文件服务器114和输入接口122可以被配置为根据流式传输协议、下载传输协议或其组合来操作。

输出接口108和输入接口122可代表无线传输器/接收器、调制解调器、有线连网组件(例如,以太网卡)、根据各种ieee802.11标准中的任一种操作的无线通信组件、或其它物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据诸如4g、4g-lte(长期演进)、高级lte、5g等的蜂窝通信标准来传递诸如编码视频数据的数据。在输出接口108包括无线传输器的一些示例中,输出接口108和输入接口122可以被配置为根据诸如ieee802.11规范、ieee802.15规范(例如,zigbeetm)、蓝牙tm标准等的其它无线标准来传递诸如编码视频数据的数据。在一些示例中,源设备102和/或目的地设备116可以包括相应的片上系统(system-on-a-chip,soc)设备。例如,源设备102可以包括用于执行归因于视频编码器200和/或输出接口108的功能性的soc设备,而目的地设备116可以包括用于执行归因于视频解码器300和/或输入接口122的功能性的soc设备。

本公开的技术可以被应用于支持诸如以下各项的各种多媒体应用中的任一者的视频编解码:空中电视广播、电缆电视传输、卫星电视传输、诸如通过http的动态自适应流式传输(dynamicadaptivestreamingoverhttp,dash)的因特网流式传输视频传输、编码到数据存储介质上的数字视频、对存储在数据存储介质上的数字视频的解码、或其它应用。

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

尽管图1中未示出,但在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的mux-demux单元或者其它硬件和/或软件,以处理公共数据流中包括音频和视频两者的多路复用流。如果适用的话,mux-demux单元可以符合ituh.223多路复用器协议或其它协议,诸如用户数据报协议(userdatagramprotocol,udp)。

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

视频编解码标准包括itu-th.261、iso/iecmpeg-1visual(视觉)、itu-th.262或iso/iecmpeg-2visual、itu-th.263、iso/iecmpeg-4visual和itu-th.264(也称为iso/iecmpeg-4avc),包括其可缩放视频编编解码(svc)和多视图视频编编解码(mvc)扩展。

高效视频编解码(hevc)或itu-th.265(g.j.sullivan,j.-r.ohm,w.-j.han,t.wiegand“overviewofthehighefficiencyvideocoding(hevc)standard(高效视频编解码(hevc)标准概述),”关于视频技术的电路和系统的ieee学报,第22卷,第12期,第1649-1668页,2012年12月),包括其范围扩展、多视图扩展(mv-hevc)和可伸缩扩展(shvc),已由itu-t视频编解码专家组(vceg)和iso/iec运动图像专家组(mpeg)的视频编解码联合协作组(jct-vc)以及3d视频编解码扩展开发联合协作组(jct-3v)开发。hevc规范草案,下文称为hevcwd,可从http://phenix.int-evry.fr/jct/doc_end_user/documents/14_vienna/wg11/jctvc-n1003-v1.zip获得。hevc国际标准(fdis)最终草案的最新版本见http://phenix.it-sudparis.eu/jct/doc_end_user/documents/12_geneva/wg11/jctvc-l1003-v34.zip.

itu-tvceg(q6/16)和iso/iecmpeg(jtc1/sc29/wg11)正在研究对未来视频编解码技术的标准化的潜在需求,所述未来视频编解码技术具有显著超过当前hevc标准(包括其用于屏幕内容编解码和高动态范围编解码的当前扩展和近期扩展)的压缩能力。各组在称为联合视频探索团队(jvet)的联合协作活动中一起研究这个探索活动,以评估其在此领域的专家提出的压缩技术设计。jvet于2015年10月19-21日期间首次会面。参考软件的版本,即联合探索模型7(jem7)可以从https://jvet.hhi.fraunhofer.de/svn/svn_hmjemsoftware/tags/hm-16.6-jem-7.2/下载。联合探索测试模型7(jem-7)的算法描述在这里描述:j.chen,e.alshina,g.j.sullivan,j.-r.ohm,j.boyce,“algorithmdescriptionofjointexplorationtestmodel7(联合探索测试模型7的算法描述)”,jvet-g1001,2017年7月。

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

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

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

hevc定义各种块,包括编解码单元(cu)、预测单元(predictionunit,pu)和变换单元(transformunit,tu)。根据hevc,视频编解码器(诸如视频编码器200)根据四叉树结构将编解码树单元(ctu)划分为cu。也就是说,视频编解码器将ctu和cu划分为四个相等的非重叠正方形,并且四叉树的每一个节点具有零个或四个子代节点。没有子代节点的节点可以称为“叶节点”,并且这种叶节点的cu可以包括一个或多个pu和/或一个或多个tu。视频编解码器可以进一步划分pu和tu。例如,在hevc中,残差四叉树(residualquadtree,rqt)代表tu的划分。在hevc中,pu代表帧间预测数据,而tu代表残差数据。帧内预测的cu包括帧内预测信息,诸如帧内模式指示。

作为另一示例,视频编码器200和视频解码器300可以被配置为根据jem和/或vcc的示例进行操作。根据jem/vcc,视频编解码器(诸如视频编码器200)将图片划分为多个编解码树单元(ctu)。视频编码器200可以根据诸如四叉树-二叉树(qtbt)结构的树结构来划分ctu。qtbt结构的jem/vcc的示例移除了多个划分类型的概念,诸如hevc的cu、pu和tu之间的区分。qtbt结构的jem/vcc的示例包括两个级别:根据四叉树划分而划分出来的第一级,以及根据二叉树划分而划分出来的第二级。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于编解码单元(cu)。

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

视频编码器200和视频解码器300可以被配置为按照hevc使用四叉树划分,根据jem/vvc的示例使用qtbt划分,或者使用其它划分结构。出于解释的目的,针对qtbt划分来呈现对本公开的技术的描述。然而,应理解,本公开的技术还可以应用于被配置为使用四叉树划分或其它类型划分的视频编解码器。

本公开可以互换地使用“n×n”和“n乘n”来指代块(诸如cu或其它视频块)在垂直和水平维度方面的采样点维度,例如,16×16采样点或16乘16采样点。一般而言,16×16cu在垂直方向上将有16个采样点(y=16),在水平方向上将有16个采样点(x=16)。同样地,n×n的cu通常在垂直方向上具有n个采样点,在水平方向上具有n个采样点,其中n代表非负整数值。cu中的采样点可以按行和列来排列。此外,cu在水平方向上不必具有与垂直方向上相同数量的采样点。例如,cu可以包括nxm采样点,其中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或vcc还提供了仿射运动补偿模式,其可以被视为帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定代表诸如放大或缩小、旋转、透视运动或其它不规则运动类型的非平移运动的两个或更多个运动矢量。

为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。jem或vcc提供了六十七种帧内预测模式,包括各种方向的模式以及平面模式和dc模式。一般而言,视频编码器200选择帧内预测模式,其描述当前块(例如cu的块)的邻近采样点,以从其预测当前块的预测采样点。假设视频编码器200以光栅扫描顺序(从左到右、从上到下)对ctu和cu进行编解码,则此类采样点通常可以在与当前块相同的图片中在当前块的上方、上左侧或左侧。

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

在预测(诸如块的帧内预测或帧间预测)之后,视频编码器200可以计算块的残差数据。残差数据(诸如残差块)代表块与该块的预测块之间的逐样点差异,预测块是使用对应预测模式形成。视频编码器200可以将一个或多个变换应用于残差块以在变换域而非采样点域中产生变换数据。例如,视频编码器200可以将离散余弦变换(discretecosinetransform,dct)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可以在一次变换之后应用二次变换,诸如取决于模式的不可分二次变换(mode-dependentnon-separablesecondarytransform,mdnsst)、取决于信号的变换、karhunen-loeve变换(klt)等。视频编码器200在应用一个或多个变换之后产生变换系数。

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

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

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

视频编码器200可以进一步地在例如在图片标头、块标头、切片标头中生成到视频解码器300的语法数据,诸如基于块的语法数据、基于图片的语法数据以及基于序列的语法数据,或者生成其它语法数据,诸如序列参数集(sps)、图片参数集(pps)或视频参数集(vps)。视频解码器300可以类似地对此类语法数据进行解码以确定如何解码对应视频数据。

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

一般而言,视频解码器300执行与视频编码器200所执行的过程相反的过程以解码比特流的编码视频数据。例如,视频解码器300可以以虽然与视频编码器200的cabac编码过程相反但基本上类似的方式使用cabac来解码比特流中针对语法元素的值。语法元素可定义图片到ctu的划分信息,以及根据诸如qtbt结构之类的对应划分结构进行的对每个ctu的划分,以定义ctu的cu。语法元素可进一步定义针对视频数据的块(例如,cu)的预测和残差信息。

残差信息可以由例如量化变换系数来表示。视频解码器300可以对块的量化变换系数进行逆量化和逆变换以重现该块的残差块。视频解码器300使用信令通知的预测模式(帧内或帧间预测)和相关预测信息(例如,用于帧间预测的运动信息)来形成块的预测块。视频解码器300随后可以(在逐采样点的基础上)组合预测块和残差块以再现原始块。视频解码器300可以执行附加处理(诸如执行去方块过程)来减少沿块边界的视觉伪影(artifact)。

如上所述,在一些示例中,视频编码器200和视频解码器300可以被配置为使用帧间预测对当前块进行编码或解码。在帧间预测中,视频编码器200和视频解码器300基于当前块的运动矢量来确定预测块。例如,对于帧内块复制(ibc)模式,当前块的运动矢量指向另一图片或可能在同一图片中的预测块。

在一些示例中,与视频编码器200信令通知当前块的运动矢量的值不同,视频编码器200可以信令通知运动矢量预测器的信息,视频解码器300使用该预测器来确定当前块的运动矢量。例如,视频编码器200和视频解码器300可以被配置为构建包括先前编码或解码块的运动矢量信息的运动矢量预测器列表。先前编码或解码的块的运动矢量信息可以被视为运动矢量预测器。视频编码器200和视频解码器300可以执行类似的操作来构建运动矢量预测器列表。

视频编码器200可以信令通知指示进入标识特定的运动矢量预测器的运动矢量预测器列表的条目的信息。视频解码器300可以基于进入运动矢量预测器列表的条目来确定运动矢量预测器。对于合并模式,视频解码器300可以将运动矢量预测器设置为等于当前块的运动矢量。对于amvp模式,视频解码器300还可以从视频编码器200接收运动矢量预测器和当前块的运动矢量之间的运动矢量差(motionvectordifference,mvd)。视频解码器300可以将mvd添加到运动矢量预测器以确定当前块的运动矢量。

运动矢量预测器列表可以包括空间上相邻块(例如,与当前块相邻并且与当前块在同一图片中的块)的运动矢量信息和并置块的运动矢量信息(例如,位于另一张图片中特定位置的块)作为运动矢量预测器。并置块可以被称为时间相邻块。

视频编码器200和视频解码器300可以在运动矢量候选列表中添加空间相邻块和并置块的运动矢量信息,以构建运动矢量候选列表。在一个或多个示例中,视频编码器200和视频解码器300可以被配置为进一步将基于历史的运动矢量预测(hmvp)候选从hmvp候选历史表添加到运动矢量候选列表中。

hmvp候选指的是扩展到当前块的相邻块之外的块的运动矢量信息。例如,与当前块邻近且在当前块左侧的块可以是作为空间相邻块的左相邻块的示例。左相邻块的运动信息可以包括在运动矢量候选列表中。与左相邻块邻近的块不是空间上相邻的块,并且这样的块的运动信息是作为hmvp候选历史表的一部分的hmvp候选的示例。

本公开描述了视频编码器200和视频解码器300可以执行的以将hmvp候选从hmvp候选历史表中添加到运动矢量预测器列表中的示例技术。作为一个示例,hmvp候选历史表可以被认为包括hmvp候选的第一子集和hmvp候选的第二子集。在一个示例中,hmvp候选的第一子集包括来自hmvp候选历史表的两个(例如,前两个)hmvp候选,并且hmvp候选的第二子集包括hmvp候选历史表中剩余的hmvp候选。

视频编码器200和视频解码器300可以被配置为对hmvp候选的第一子集中的每个hmvp候选与运动矢量候选列表中的条目的子集(例如,小于所有条目)进行比较。作为示例,视频编码器200和视频解码器300可以基于空间相邻块和并置块的运动矢量信息来构建运动矢量候选列表。视频编码器200和视频解码器300可以对hmvp候选的第一子集中的每个hmvp候选与运动矢量候选列表中的两个条目进行比较,并且如果hmvp候选不同于运动矢量候选列表中的条目,则将hmvp候选添加到hmvp候选的第一子集中。

例如,hmvp候选的第一子集可以包括第一hmvp候选和第二hmvp候选。在该示例中,视频编码器200和视频解码器300可以将第一hmvp候选与运动矢量候选列表中的第一条目和运动矢量候选列表中的第二条目进行比较,而不与运动矢量候选列表中的其它条目进行比较。如果第一hmvp候选不同于第一条目和第二条目,则视频编码器200和视频解码器300可以将第一hmvp候选添加到运动矢量候选列表中。

视频编码器200和视频解码器300可以将第二hmvp候选与运动矢量候选列表中的第一条目和运动矢量候选列表中的第二条目进行比较,并且不与运动矢量候选列表中的其它条目进行比较。如果第二hmvp候选不同于第一条目和第二条目,则视频编码器200和视频解码器300可以将第二hmvp候选添加到运动矢量候选列表中。

第一hmvp候选和第二hmvp候选用于指示从hmvp候选中选择的两个hmvp候选。第一hmvp候选和第二hmvp候选可以是hmvp候选历史表中的前两个候选,但是示例技术不限于此。类似地,运动矢量预测器列表中的第一条目和第二条目可以是运动矢量预测器列表中的前两个条目,但是示例性技术不限于此。

如果在添加hmvp候选的第一子集中的一个或多个(例如,一个或两个)hmvp候选之后,运动矢量预测器列表中的条目总数小于运动矢量预测器列表中的最大条目数,则视频编码器200和视频解码器300可以添加来自hmvp候选的第二子集的hmvp候选,直到运动矢量预测器列表的大小达到最大大小或者在hmvp候选的第二子集中没有更多的hmvp候选。在一个或多个示例中,视频编码器200和视频解码器300可以添加来自hmvp候选的第二子集的hmvp候选,而不用将来自hmvp候选的第二子集的hmvp候选与运动矢量预测器列表中的条目进行比较。

视频编码器200和视频解码器300可以构建运动矢量预测器列表以包括hmvp候选,同时平衡执行比较操作的成本与最小化运动矢量预测器列表中的条目重复的益处。例如,视频编码器200和视频解码器300可以将hmvp候选添加到运动矢量预测器列表中,而不执行任何比较操作来确定hmvp候选是否与运动矢量预测器列表中已经存在的条目重复。在这种情况下,存在运动矢量预测器列表变满但潜在良好的运动矢量预测器候选(例如,接近实际运动矢量的运动矢量)被排除的可能性,因为运动矢量预测器列表中存在重复的运动矢量并且运动矢量预测器列表已满。然而,将每个hmvp候选与运动矢量预测器列表中的每个条目进行比较以排除任何重复项可能增加构建运动矢量预测器列表所需的处理时间,这反过来又增加编码或解码处理的时间。

根据本公开中描述的一个或多个示例,通过限制hmvp候选和运动矢量预测器列表中的条目之间的比较的数目以确定是否存在重复,限制了需要执行的比较操作的数目。例如,如上所述,视频编码器200和视频解码器300可以将hmvp候选的第一子集(例如,两个hmvp候选)与运动矢量预测器列表中的条目的子集(例如,运动矢量预测器列表中的两个条目)进行比较。视频编码器200和视频解码器300可以添加来自第一子集中的与运动矢量预测器列表的条目的子集不同的一个或多个hmvp候选,并且从第一子集排除与运动矢量预测器的条目的子集中的条目之一相同的一个或多个hmvp候选。这样,与将所有hmvp候选与运动矢量预测器列表中的所有条目进行比较的情况相比,减少了比较的数目,从而减少了构建运动矢量预测器列表所需的时间量。

此外,特定hmvp候选是运动矢量预测器列表中的条目的重复的可能性可以基于hmvp候选的块和其运动矢量信息被包括在运动矢量预测器列表中的块的位置。例如,运动矢量预测器列表中的第一条目可以包括左相邻块的运动矢量信息,运动矢量预测器中的第二条目可以包括上相邻块的运动矢量信息。在一些示例中,第一hmvp候选可以是与左相邻块的左侧相邻的块的运动矢量信息,而第二hmvp候选可以是在上相邻块上方的块的运动矢量信息。

由于第一hmvp候选的块相对于左相邻块和上相邻块的相对位置,第一hmvp候选与运动矢量预测器列表中的第一条目或第二条目相似的可能性高于运动矢量预测器列表中的任何其它条目。类似地,由于第二hmvp候选的块相对于左相邻块和上相邻块的相对位置,第二hmvp候选与运动矢量预测器列表中的第一条目或第二条目相似的可能性高于运动矢量预测器列表中的任何其它条目。

由于第一hmvp候选的块相对于第二hmvp候选的块的相对位置,第一hmvp候选和第二hmvp候选与运动矢量预测器列表中的任何其它条目(例如,排除第一和第二条目)相同的可能性可能相对较低。另外,由于其各自块的相对位置,剩余hmvp候选(例如,排除第一和第二hmvp候选)与运动矢量预测器列表中的任何条目相同的可能性相对较低。因此,在一个或多个示例中,视频编码器200和视频解码器300可以将hmvp候选的第二子集添加到运动矢量预测器列表中,而不用将hmvp候选与运动矢量预测器列表中的任何条目进行比较,直到运动矢量预测器列表已满或不再有可用的hmvp候选为止。

同样,在以上示例中,包括第一和第二hmvp候选的hmvp候选的第一子集可以是hmvp候选历史表中的前两个hmvp候选,但是示例技术不限于此。此外,hmvp候选的第二子集可以包括排除第一和第二hmvp候选的剩余hmvp候选。此外,运动矢量预测器列表中的条目子集可以是运动矢量预测器列表中的前两个条目,但是示例技术不限于此。

本公开一般可以涉及“信令通知”某些信息,诸如语法元素。术语“信令通知”一般可以涉及用于对编码视频数据进行解码的语法元素的值和/或其它数据的通信。也就是说,视频编码器200可以在比特流中信令通知针对语法元素的值。一般来说,信令通知指的是在比特流中生成值。如上所述,源设备102可以基本上实时地或者非实时地将比特流传输到目的地设备116,诸如该传输可以在将语法元素存储到存储设备112以供目的地设备116稍后检索时发生。

参照图2和图3更详细地示出和描述视频编码器200和视频解码器300的示例。在描述图2和图3之前,下面参照图4a、图4b、图5和图6描述视频编解码处理的一些附加细节,诸如运动矢量预测。

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

在hevc主配置文件中,ctb的大小可以从16x16到64x64(尽管技术上可以支持8x8ctb大小)。编解码单元(cu)可以和ctb大小相同,小至8x8。每个编解码单元用一种模式编解码,诸如帧间编解码或帧内编解码。帧间编解码也可以被称为帧间预测编解码或帧间预测。帧内编解码也可以被称为帧内预测编解码或帧内预测。

当cu被帧间编解码时,cu可以被进一步被划分为2个或4个预测单元(pu),或者当不应用进一步的划分时,cu可以是一个pu。当一个cu中存在两个pu时,pu可以是一半大小的矩形,也可以是cu大小的1/4或者3/4的两个矩形。当cu被帧间编解码时,每个pu具有一组用帧间预测模式推导出的运动信息。

下面回顾运动矢量预测。在hevc标准中,存在两种帧间预测模式,分别称为预测单元(pu)的合并(跳过被认为是合并的特例)和高级运动矢量预测(amvp)模式。在amvp或合并模式中,为多个运动矢量预测器维护运动矢量(mv)候选列表。mv候选列表可以被称为运动矢量预测器列表。当前pu的运动矢量以及合并模式下的参考索引是通过从mv候选列表中选取一个候选来生成的。mv候选列表可以包含用于合并模式的多达5个候选和用于amvp的仅两个候选。合并候选可以包含一组运动信息,例如,与参考图片列表(列表0和列表1)和参考索引两者相对应的运动矢量。如果合并候选是通过合并索引识别的,则确定了用于当前块的预测的参考图片以及相关联的运动矢量。换句话说,通过合并索引识别的运动矢量预测器列表中的运动矢量和参考图片被设置为等于当前块的运动矢量和参考图片。

另一方面,在amvp模式下,对于来自列表0或列表1的每个潜在预测方向,由于amvp候选仅包含运动矢量,因此参考索引与到mv候选列表的mv预测器(mvp)索引一起需要被明确地信令通知。在amvp模式中,可以进一步细化预测的运动矢量(例如,基于上述运动矢量差异(mvd))。两种模式的候选都类似地从相同的空域和时域邻近块中推导出。

下面回顾其运动矢量信息形成为运动矢量预测器的空间相邻块。在一些示例中,空间mv候选(例如,空间运动矢量预测器)是从图4a和图4b(分别用于特定pu(pu0)434和438)所示的相邻块推导出的,尽管用于从块生成候选的方法对于合并和amvp模式是不同的。图4a是示出用于合并模式的空间相邻候选的概念图。图4b是示出amvp模式的空间相邻候选的概念图。

在合并模式中,在一些示例中,最多可以推导出五个空间mv候选,其具有图4a中所示的次序,并且次序如下:左(0,a1)、上(1,b1)、右上(2,b0)、左下(3,a0)和左上(4,b2),如图4a中所示。例如,对于pu0434,块a1被标识为0并且在pu0434的左侧,块b1被标识为1并且在pu0434的上方,块b0被标识为2并且在pu0434的右上方和pu1436的上方,块a0被标识为3并且在pu0434的左下方,以及块b2被标识为4并且在pu0434的左上方。

在amvp模式中,在一些示例中,相邻块被分为两组:左组,其包括分别位于pu0438的左下方和左侧的块0和1;以及上组,其包括位于pu01438的右上方、上方和左上方的块2、3和4,如图4b所示。块2在pu1440的上方。对于每个组,参考与由信令通知的参考索引所指示的参考图片相同的参考图片的相邻块中的潜在候选具有最高优先级,以被选择以形成该组的最终候选。所有相邻块可能不包含指向同一参考图片的运动矢量。因此,如果不能找到这样的候选,则可以缩放第一可用候选以形成最终候选,并且因此可以补偿时间距离差。

下面用图5回顾时间运动矢量预测。图5是示出时间运动矢量预测器(tmvp)候选和用于tmvp的运动矢量缩放的概念图。

在一些示例中,如果tmvp候选被启用并且可用,则被添加到mv候选列表(例如,运动矢量预测器列表)中在空间运动矢量候选(例如,空间相邻块的运动矢量信息)之后。tmvp候选的运动矢量推导过程对于合并模式和amvp模式两者是相同的,但是在合并模式中tmvp候选的目标参考索引设置为0。

在一些示例中,用于tmvp候选推导的主要块位置是并置pu之外的底部右侧块,如图5中所示为块t540。块t540的位置可以补偿对用于生成空间相邻候选的上方和左侧块的偏移。然而,如果块t540位于当前ctb行之外或者运动信息对于块t540不可用,则用pu的中心块541替换块t540。

在图5中,当前图片550中的tmvp候选的运动矢量548是从以切片级别指示的并置图片546的并置pu推导的。并置pu的运动矢量(mv)称为并置mv542。为了推导tmvp候选运动矢量,并置mv542可以被缩放以补偿时间距离差,如图5所示。例如,并置图片546与并置参考图片544之间的时间差和当前图片550与当前参考图片552之间的时间差用于对并置mv542进行缩放以生成运动矢量548。

下面回顾了hevc中运动预测的一些其它方面。下面描述合并模式和amvp模式的几个方面。

运动矢量缩放:运动矢量的值可以与呈现时间内图片的距离成比例。运动矢量将两个图片(参考图片和包含运动矢量的图片(即包含图片))相关联。当利用运动矢量来预测另一运动矢量时,基于图片顺序计数(pictureordercount,poc)值来计算包含图片和参考图片的距离。

对于要预测的运动矢量,其相关联的包含图片和参考图片两者可以不同。因此,(基于poc)计算新的距离,并基于这两个poc距离缩放运动矢量。对于空间相邻候选,两个运动矢量的包含图片相同,而参考图片不同。在hevc中,运动矢量缩放同时适用于针对空间和时间相邻候选的tmvp和amvp。

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

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

候选插入的剪枝过程:来自不同块的候选可能碰巧是相同的,这降低了合并/amvp候选列表的效率。应用剪枝过程来解决这个问题。剪枝过程对一个候选与当前候选列表中的其它候选进行比较,以避免插入完全相同的候选。为了降低复杂度,只应用有限数量的剪枝过程,以避免将每个潜在候选与列表中所有其它现有候选进行比较。

vvc的发展包括增强运动矢量预测。例如,已经提出了几种帧间编解码工具,它们推导出或细化当前块的运动矢量预测或合并预测的候选列表。下面描述几个示例。

下面描述基于历史的运动预测(hmvp),如l.zhang,k.zhang,h.liu,y.wang,p.zhao,andd.hong,“ce4-related:history-basedmotionvectorprediction(ce4相关:基于历史的运动矢量预测)”,jvet-k0104(2018年7月)中所描述的。hmvp是基于历史的方法,其中视频编码器200和视频解码器300根据从过去解码的mv的列表中确定每个块的mv预测器,除了在直接邻近的因果相邻运动场(例如,直接空间相邻块的mv是直接邻近因果相邻运动场中的mv的示例)中的那些mv之外。hmvp包括视频编码器200和视频解码器300,构建用于先前解码的运动矢量作为hmvp候选的表。

在一些实施例中,视频编码器200和视频解码器300可以在编码/解码过程期间构建具有多个hmvp候选的表。构建表可以包括向表中添加hmvp候选以及从表中移除hmvp候选。视频编码器200和视频解码器300可以被配置为在遇到用于编码或解码的新切片时清空表(例如,移除hmvp候选)。每当存在帧间编解码块时,视频编码器200和视频解码器300可以被配置为以先进先出(first-in-first-out,fifo)方式将相关联的运动信息作为新hmvp候选插入表中。然后,视频编码器200和视频解码器300可以被配置为应用约束fifo规则。在一些技术中,当向表中插入hmvp候选时,视频编码器200和视频解码器300可以被配置为首先应用冗余校验(例如,剪枝)来确定表中是否存在完全相同的hmvp候选。如果找到,则视频编码器200和视频解码器300可以被配置为从表中移除该特定hmvp候选以及该候选之后的所有hmvp候选都被移动。

视频编码器200和视频解码器300可以配置为在合并候选列表构建过程中使用hmvp候选。例如,视频编码器200和视频解码器300可以被配置为在表中tmvp候选之后插入从最后一个条目到第一个条目的所有hmvp候选。视频编码器200和视频解码器300可以被配置为对hmvp候选应用剪枝。一旦可用合并候选的总数达到信令通知的或预定的允许合并候选的最大数目,则视频编码器200和视频解码器300可以被配置为终止合并候选列表构建过程。合并候选列表构建是构建运动矢量预测器列表的一个示例。

类似地,视频编码器200和视频解码器300可以被配置为在amvp候选列表构建过程中使用hmvp候选来构建amvp候选列表。视频编码器200和视频解码器300可以被配置为在表中tmvp候选之后插入最后k个hmvp候选的运动矢量。视频编码器200和视频解码器300可以被配置为仅使用具有与amvp目标参考图片相同的参考图片的hmvp候选来构建amvp候选列表。视频编码器200和视频解码器300可以被配置为对hmvp候选应用剪枝。amvp候选列表构建是构建运动矢量预测器列表的另一示例。

下面描述非邻近空间合并候选。非邻近空间合并候选的构建,如r.yu,et.al.,“ce4-2.1:addingnon-adjacentspatialmergecandidates(添加非邻近空间合并候选),”itu-tsg16wp3和iso/iecjtc1/sc29/wg11的联合视频专家组(jvet),第11次会议:2018年7月10日至18日,si卢布尔雅那(以下简称“jvet-k0228”)涉及从两个非邻近相邻位置推导新的空间候选。例如,如图6中所示,视频编码器200和视频解码器300可以从当前块648上方最近的非邻近块650和/或从当前块648左侧最近的非邻近块652推导新的空间候选。例如,图6示出了具有相邻块a0、a1、b2、b1和b0的当前块648。在一些示例中,非邻近空间合并候选包括在空间上与当前块648不相邻的图6的块hn652和块vn650的运动信息。也就是说,图6示出了其运动矢量信息可以被用于构建hmvp候选历史表的块的示例。

块650和652被限制在1ctu到当前块648的最大距离内。非邻近候选的获取过程从在垂直方向上跟踪先前解码的块开始。当遇到块间或回溯距离达到1ctu大小时,垂直反向追踪停止。

然后,获取过程在水平方向上跟踪先前解码的块。停止水平获取过程的标准取决于是否存在成功获取的垂直非邻近候选。如果未获取到垂直的非相邻候选,则当遇到帧间编解码块或回溯距离超过一个ctu大小阈值时,水平获取过程停止。如果获取了垂直非邻近候选,则当遇到包含与垂直非邻近候选不同mv的帧间编解码块或回溯距离超过一个ctu大小阈值时,水平获取过程停止。在合并候选列表中,将获取的非邻近相邻候选添加到tmvp候选之前。

下面描述成对平均候选。在vtm3.0(vvc测试模型3.0)中使用成对平均候选。视频编码器200和视频解码器300可以被配置为通过平均当前合并候选列表(包括空间候选、tmvp和hmvp)中的预定义候选对来生成成对平均候选。在一个示例中,预定义对被定义为{(0,1)、(0,2)、(1,2)、(0,3)、(1,3)、(2,3)},其中数字表示合并索引到合并候选列表。视频编码器200和视频解码器300可以被配置为分别计算每个参考列表的平均运动矢量。如果两个运动矢量在一个列表中都可用,则视频编码器200和视频解码器300可以被配置为对这两个运动矢量进行平均,即使这两个运动矢量指向不同的参考图片。如果只有一个运动矢量可用,则视频编码器200和视频解码器300可以被配置为直接使用该一个运动矢量。如果没有可用的运动矢量,则视频编码器200和视频解码器300可以被配置为保持参考图片列表(例如,列表0和列表1中的一个或两个)无效。在hevc标准中,成对平均候选代替组合候选。

例如,在双向预测中,运动矢量候选可以包括指向列表0和列表1中的两个参考的两个运动矢量,或者运动矢量候选可以仅包括指向列表0(或列表1)的一个运动矢量。因此,对于单向候选,一个列表无效(例如,如果运动矢量指向列表0,则列表1无效,反之亦然)。

下面描述确定候选0和候选1的成对平均候选的示例,其中候选0是双向预测候选,并且包括两个运动矢量:(mv0_list0(x_list0,y_list0))和(mv0_list1(x_list1,y_list1)),并且候选1是仅包括一个运动矢量(mv1_list0(x_list0,y_list0))的单向预测。在这个示例中,列表1对于候选1无效,并且生成的成对候选是双向mv((mv0_list0+mv1_list0/2),mv0_list1)。

如上所述,hmvp预测模式使用基于历史的查找表,该查找表存储从过去解码的mv。hmvp查找表(也称为hmvp候选历史表)可以应用于诸如合并模式和amvp模式的帧间预测模式。当将历史表中的hmvp候选添加到合并列表或amvp列表时,视频编码器200和视频解码器300可以被配置为应用冗余校验以查找列表中是否存在完全相同(例如,重复)的候选。在一些示例中,如上所述,应用完全冗余校验可能太复杂(例如,需要许多计算资源或时钟周期),特别是对于硬件实施方式。在一些示例中,hmvp候选历史表应在对帧间cu进行编码/解码之后更新。此外,当向hmvp候选历史表添加新的hmvp候选时,也应用冗余校验。

鉴于这些缺点,本公开描述了几种技术,其中视频编码器200和视频解码器300可以被配置为使用修改的构建过程来构建hmvp候选历史表。此外,本公开描述了附加技术,其中视频编码器200和视频解码器300可以被配置为从hmvp候选历史表中确定要在运动矢量预测器列表中使用的候选(例如,用于合并运动矢量预测器列表,用于仿射运动矢量预测器列表,和/或用于amvp运动矢量预测器列表)。

在本发明的一个示例中,视频编码器200和视频解码器300可以被配置为在不执行冗余校验的情况下向hmvp候选历史表添加新的hmvp候选。如果hmvp候选的数目达到hmvp候选历史表的最大允许大小,则视频编码器200和视频解码器300可以被配置为移除表中最早的hmvp候选,然后添加新的hmvp候选。

在本公开的另一示例中,视频编码器200和视频解码器300可以被配置为在将hmvp候选历史表中的一个或多个hmvp候选添加到运动矢量预测器列表(诸如合并候选列表、amvp候选列表或仿射候选列表)时对hmvp候选历史表进行子采样。例如,hmvp候选历史表的大小可以是n,子采样率可以是r,并且hmvp候选历史表中的初始位置可以是s。在一个示例中,n=10,r=3,s=1。因此,hmvp候选历史表是{c1,c2,c3,c4,c5,c6,c7,c8,c9,c10}。按向前次序,所选择的hmvp候选是{c1,c4,c7,c10}。如果使用相反次序来选择候选,则选择的hmvp候选是{c10,c7,c4,c1}。

也就是说,在一个示例中,hmvp候选包括{c1,c2,c3,c4,c5,c6,c7,c8,c9,c10}。如果子采样率为3,则视频编码器200和视频解码器300可以每三个采样点进行选择。如果子采样的位置是1,则视频编码器200和视频解码器300选择第一hmvp候选,然后每三个采样点进行选择。例如,在向前方向上,第一个采样点是c1,然后是c4(c1之后的第三个采样点),然后是c7(c4之后的第三个采样点)和c10。在向后方向上,从c10开始,子采样的结果是{c10,c7,c4,c1}。

子采样是作为一个示例而提供,并且所述技术不限于此。在一些示例中,可能不存在对hmvp候选历史表的子采样。

在本公开的另一示例中,视频编码器200和视频解码器300可以被配置为使用简化的剪枝算法,用于将hmvp候选历史表中的hmvp候选添加到运动矢量预测器列表(诸如合并候选列表、amvp候选列表或仿射候选列表)。在一个示例中,当将hmvp候选历史表中的hmvp候选添加到运动矢量预测器列表(例如,合并列表)时,视频编码器200和视频解码器300可以被配置为通过预定义候选来对hmvp候选进行剪枝。视频编码器200和视频解码器300可以被配置为通过相同的预定义候选或不同的预定义候选来对每个hmvp候选进行剪枝。预定义的候选可以通过候选对象的位置或类型来指定。

例如,预定义候选的数目是y。当向运动矢量预测列表添加hmvp候选时,视频编码器200和视频解码器300可以被配置为使用y的候选的子集对hmvp候选进行剪枝。例如,在vtm和基准集(benchmarkset,bms)软件中,如图4a、图4b和图5中所示,空间和时间候选的集合是{a1,b1,b0,a0,b2,tmvp}。如上所述,a1在图4a中由数字0标识,b1在图4a中被标识为数字1,b0在图4a中被标识为数字2,a0在图4a中被标识为数字3,并且b2在图4a中被标识为数字4。tmvp块在图5中被标识为块t540。

候选hmvpi可以通过与y个候选的子集i的比较而被剪枝。y还可以包括hmvp候选。作为示例,视频编码器200和视频解码器300可以将第一hmvp候选(例如,hmvp1)与运动矢量预测器列表中的y个候选的第一子集(例如,subet1)进行比较,并将第二hmvp候选(例如,hmvp2)与运动矢量预测器列表中的y个候选的第一子集进行比较。在这个示例中,subset1可以包括运动矢量预测器列表中的两个条目(例如,运动矢量预测器列表中的y个候选等于运动矢量预测器列表中的两个条目)。

作为示例,y是{a1,b1,b0,a0,b2,tmvp,hmvpi}。作为另一示例,y是{a1,b1,b0,a0,b2,tmvp}(例如,运动矢量预测器列表是基于空间和时间相邻块的运动矢量信息来构建的)。

y的子集subset1是{a1和b1},以指示运动矢量预测器列表中的两个条目。例如,块a1(例如,图4a中的块0)的运动矢量信息和块b1(例如,图4a中的块1)的运动矢量信息可以是运动矢量预测器列表中的两个条目,并且可能是前两个条目。

在这个示例中,视频编码器200和视频解码器300可以将第一hmvp候选与块a1(例如,图4a中的块0)的运动矢量信息和块b1(例如,图4a中的块1)的运动矢量信息进行比较。如果第一hmvp候选不同于块a1的运动矢量信息和块b1的运动矢量信息,则视频编码器200和视频解码器300可以将第一hmvp添加到运动矢量预测器列表中。如果第一hmvp候选与块a1或块b1的运动矢量信息相同,则视频编码器200和视频解码器300可以不将第一hmvp添加到运动矢量预测器列表中。

类似地,在这个示例中,视频编码器200和视频解码器300可以将第二hmvp候选与块a1(例如,图4a中的块0)的运动矢量信息和块b1(例如,图4a中的块1)的运动矢量信息进行比较。如果第二hmvp候选不同于块a1的运动矢量信息和块b1的运动矢量信息,则视频编码器200和视频解码器300可以将第二hmvp添加到运动矢量预测器列表中。如果第二hmvp候选与块a1或块b1的运动矢量信息相同,则视频编码器200和视频解码器300可以不将第二hmvp添加到运动矢量预测器列表中。

在上面的示例中,第一和第二hmvp候选可以认为是通过{a1,b1}被剪枝的。例如,仅当第一hmvp候选不同于a1和b1的运动矢量信息时,第一hmvp候选才被添加到运动矢量预测器列表,并且仅当第二hmvp候选不同于a1和b1的运动矢量信息时,第二hmvp候选才被添加到运动矢量预测器列表。

在一些示例中,所有hmvp候选都通过{a1,b1}被剪枝。在另一示例中,hmvp候选通过{a1,b1,b0,a0}被剪枝。在另一示例中,不同的hmvp候选可以通过不同的候选被剪枝。例如,在上述情况下,hmvp候选历史表的大小是10。视频编码器200和视频解码器300可以从每3个hmvp候选中选择一个来添加到合并列表{c1,c4,c7,c10}中。候选c1通过{a1,b1,b0}被剪枝。候选c4通过{a1,b1}被剪枝。候选c7通过{a1}被剪枝。c10候选没有被剪枝。在另一示例中,hmvp候选可以通过其它hmvp候选被剪枝。

在另一示例中,当将hmvp候选历史表中的hmvp候选添加到运动矢量预测器列表时,视频编码器200和视频解码器300可以被配置为通过运动矢量预测器列表中的预定义候选(例如合并候选列表,amvp候选列表或仿射候选列表)来对hmvp候选进行剪枝。例如,如上所述,当向合并列表添加hmvp候选时,视频编码器200和视频解码器300可以被配置为通过合并列表中的前m个候选来对hmvp候选进行剪枝。例如,m=2。当将hmvp候选历史表中的hmvp候选添加到合并列表时,视频编码器200和视频解码器300可以被配置为通过合并列表中的前两个候选来对hmvp候选进行剪枝。

换句话说,视频编码器200和视频解码器300可以构建运动矢量预测器列表(例如,合并列表或amvp列表)。视频编码器200和视频解码器300可以将hmvp候选历史表中的第一hmvp候选与运动矢量预测器列表中的两个条目(例如,m=2并且这两个条目是运动矢量预测器列表中的前两个条目)进行比较,而不与运动矢量预测器列表中的其它条目进行比较,并且当第一hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第一hmvp候选添加到运动矢量预测器列表中。视频编码器200和视频解码器300可以将hmvp候选历史表中的第二hmvp候选与运动矢量预测器列表中的两个条目进行比较,而不与运动矢量预测器列表中的其它条目进行比较,并且当第二hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第二hmvp候选添加到运动矢量预测器列表中。

在另一示例中,当向合并列表添加hmvp候选时,视频编码器200和视频解码器300可以被配置为通过合并列表中指定类型的候选来对hmvp候选进行剪枝。例如,视频编码器200和视频解码器300可以被配置为通过合并列表中先前添加的空间候选来对新的hmvp候选进行剪枝。作为另一示例,视频编码器200和视频解码器300可以被配置为通过合并列表中的空间候选、和/或tmvp候选和/或hmvp候选来对新的hmvp候选进行剪枝。

作为另一示例,当向合并列表添加hmvp候选时,视频编码器200和视频解码器300可以被配置为通过合并列表中指定数量的指定类型候选来对hmvp候选进行剪枝。例如,视频编码器200和视频解码器300可以被配置为通过合并列表中的前m个空间候选来对hmvp候选进行剪枝。

又例如,当向合并列表添加hmvp候选时,视频编码器200和视频解码器300可以被配置为通过合并列表中最近的w个候选来对hmvp候选进行剪枝。例如,w=2和4个候选可能已添加到合并列表中。当向合并列表添加新的hmvp候选时,视频编码器200和视频解码器300可以被配置为通过合并列表中的第三和第四候选来对新的hmvp候选进行剪枝。

又例如,当向amvp列表0(例如,参考图片列表0)添加hmvp候选时,视频编码器200和视频解码器300可以被配置为使用与当前编码块相同的参考(相同的参考索引或相同的poc)来选择hmvp候选。视频编码器200和视频解码器300可以如上所述按向前次序或向后次序检查hmvp候选。视频编码器200和视频解码器300可以被配置为通过列表中指定数目的n个amvp候选来对第一个数目m个hmvp候选进行剪枝。对于双向预测,amvp列表1可以按照与列表0相同的方式来生成。例如,在虚拟测试模型(virtualtestmodel,vtm)中,amvp列表的大小是2。如果m=1且n=1,则仅第一hmvp候选通过列表中的第一amvp候选被剪枝。如果m=0,则不应用剪枝。

在另一示例中,视频编码器200和视频解码器300可以被配置为定义大小为wxh的块(区域)。视频编码器200和视频解码器300可以被配置为使用相同的hmvp候选历史表来对相同wxh区域内的块进行编解码。

下一节涉及合并列表组织。在一个示例中,视频编码器200和视频解码器300可以被配置为不使用hmvp候选来产生成对平均候选。例如,预定义对被定义为{(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)},其中数字表示合并索引到合并候选列表。如果该对中的任何候选是hmvp候选,则视频编码器200和视频解码器300可以被配置为不使用该对来生成成对候选。

在另一示例中,视频编码器200和视频解码器300可以被配置为将成对平均候选放置在hmvp候选的前面。例如,视频编码器200和视频解码器300可以被配置为将成对候选的对的数目减少为n,并且将n个成对候选放在hmvp候选的前面。例如,当n=2时,视频编码器200和视频解码器300可以仅使用{(0,1),(0,2)}来生成成对候选并将它们放在hmvp候选的前面。作为另一示例,当n=1时,视频编码器200和视频解码器300可以仅使用{(0,1)}来生成成对候选并将它们放在hmvp候选的前面。

在一个示例中,视频编码器200和视频解码器300可以被配置为通过比较两个运动矢量预测器之间的参考方向、和/或参考索引、和/或poc和/或运动矢量(有/无缩放)来执行剪枝。如果一个或多个比较匹配,则视频编码器200和视频解码器300可以被配置为不将该运动矢量预测器添加到候选列表。

在另一示例中,可以在视频编码器200和视频解码器300中预定义其中编解码块共享相同历史表的hmvp表的大小(n)、子采样率(r)、初始位置(s)、hmvp表的数目、选择方法、剪枝方法和/或wxh的区域大小,或者被设置为在序列级、图片级、切片级或块级从视频编码器200信令通知到视频解码器300的值。例如,这样的示例信息可以在序列参数集(sps)、图片参数集(pps)、切片头(sh)、编解码树单元(ctu)或编解码单元(cu)中进行信令通知。

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

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

视频数据存储器230可以存储要由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。dpb218可以充当参考图片存储器,其存储参考视频数据用于由视频编码器200预测后续视频数据。视频数据存储器230和dpb218可以由多种存储器设备中的任何一种形成,诸如动态随机存取存储器(dram),包括同步dram(sdram)、磁阻ram(mram)、电阻ram(rram)或其它类型的存储器设备。视频数据存储器230和dpb218可以由相同的存储器设备或单独的存储器设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其它组件一起在片上(如图所示),或者相对于那些组件在片外。

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

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

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

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

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

模式选择单元202通常协调多个编码通道(pass),以测试编码参数的组合以及针对这种组合的结果速率失真值。编码参数可以包括将ctu划分为cu,用于cu的预测模式,用于cu的残差数据的变换类型,用于cu的残差数据的量化参数等。模式选择单元202可以最终选择具有比其它测试的组合更好的速率失真值的编码参数的组合。

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

通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)以生成针对当前块(例如,当前cu,或hevc中,pu和tu的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元222可以执行运动搜索以识别一个或多个参考图片(例如,存储在dpb218中的一个或多个先前编解码的图片)中的一个或多个紧密匹配的参考块。特别地,运动估计单元222可以例如根据绝对差之和(absolutedifference,sad)、平方差之和(sumofsquareddifference,ssd)、平均绝对差(meanabsolutedifference,mad)、均方差(msd)等来计算代表潜在参考块与当前块有多相似的值。运动估计单元222通常可以使用当前块与所考虑的参考块之间的逐采样点差异来执行这些计算。运动估计单元222可以识别具有通过这些计算产生的最低值的参考块,其指示与当前块最紧密匹配的参考块。

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

根据本公开的技术,运动估计单元222和运动补偿单元224可以使用hmvp候选历史表来执行帧间预测和运动矢量预测技术。例如,如下面将更详细地说明的,运动估计单元222和运动补偿单元224可以被配置为构建基于历史的运动矢量预测(hmvp)候选历史表,将来自hmvp候选历史表的一个或多个hmvp候选添加到运动矢量预测器列表中,以及使用运动矢量预测器列表对视频数据块进行编解码。

例如,运动估计单元222和运动补偿单元224可以被配置为构建基于历史的运动矢量预测(hmvp)候选历史表,该候选历史表包括扩展到当前块的邻近相邻块之外的先前编解码块的运动矢量信息。例如,hmvp候选历史表包括hmvp候选,诸如与当前块不直接邻近的块的运动矢量信息。当前块可以在合并模式中编码,但是如amvp和/或帧内块复制(ibc)模式之类的其它模式是可能的。

运动估计单元222和运动补偿单元224还可以构建运动矢量预测器列表。运动矢量预测器列表包括空间相邻块或并置块(例如,时间相邻块)的运动矢量信息。作为一个示例,运动矢量预测器列表可以包括空间上相邻的块a1、b1、b0、a0和b2中的一个或多个的运动矢量信息,其中,在图4a中,块a1被标识为0并且在pu0434的左侧,块b1被标识为1并且在pu0434的上方,块b0被标识为2并且在pu0434的右上方和pu1436的上方,块a0被标识为3并且在pu0434左下方,以及块b2被标识为4并且在pu0434的左上方。运动矢量预测器列表还可以包括时间上相邻的块t540的运动矢量信息。

运动估计单元222和运动补偿单元224可以将来自hmvp候选历史表的一个或多个hmvp候选添加到运动矢量预测器列表。例如,为了添加来自hmvp候选历史表的一个或多个hmvp候选,运动估计单元222和运动补偿单元224可以被配置为将hmvp候选历史表中的第一hmvp候选与运动矢量预测器列表中的两个条目进行比较,而不与运动矢量预测器列表中的其它条目进行比较,以及当第一hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第一hmvp候选添加到运动矢量预测器列表中。运动估计单元222和运动补偿单元224还可以被配置为将hmvp候选历史表中的第二hmvp候选与运动矢量预测器列表中的两个条目进行比较,而不与运动矢量预测器列表中的其它条目进行比较,以及当第二hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第二hmvp候选添加到运动矢量预测器列表中。

在一些示例中,运动矢量预测器列表中的两个条目的第一条目可以包括左相邻块(例如,图4a中表示为0的块a1)的运动矢量信息。运动矢量预测器列表中的两个条目的第二条目可以包括上相邻块(例如,图4a中表示为1的块b1)的运动矢量信息。运动矢量预测器列表中的第一条目和第二条目可以是运动矢量预测器列表中的前两个条目,但是本技术不限于此。另外,第一hmvp和第二hmvp候选可以是hmvp候选历史表中的前两个候选。

在一些示例中,即使在运动估计单元222和运动补偿单元224将第一和第二hmvp候选中的一个或两个包括到运动矢量预测器列表中之后,运动矢量预测器列表的大小也可能没有达到其最大大小。在这种情况下,第一和第二hmvp候选可以被视为hmvp候选的第一子集的示例,尽管在hmvp候选的第一子集中可以包括更多hmvp候选。运动估计单元222和运动补偿单元224可以将hmvp候选历史表中的在一个或多个hmvp候选的第一子集之后的一个或多个hmvp候选的第二子集中的一个或多个hmvp候选添加到运动矢量预测器列表,而不对来自第二候选的一个或多个hmvp候选与运动矢量预测器列表中的条目进行比较。

运动估计单元222和运动补偿单元224可以被配置为确定用于识别预测块的当前块的运动矢量。运动估计单元222和运动补偿单元224可以基于所确定的当前块的运动矢量来确定进入运动矢量预测器列表的条目。例如,对于合并模式,运动估计单元222和运动补偿单元224可以确定运动矢量预测器列表中具有与所确定的运动矢量的运动矢量信息相同的运动矢量信息的条目。对于amvp模式,运动估计单元222和运动补偿单元224可以确定运动矢量预测器列表中具有与所确定的运动矢量的运动矢量信息相似的运动矢量信息的条目。运动估计单元222和运动补偿单元224还可以确定条目的运动矢量信息与所确定的当前块的运动矢量之间的运动矢量差(mvd)。

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

模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始的未编解码的版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块与预测块之间的逐采样点差异。得到的逐采样点差异定义了当前块的残差块。在一些示例中,残差生成单元204还可以确定残差块中的采样点值之间的差,以使用残差差分脉冲编码调制(residualdifferentialpulsecodemodulation,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大小的非对称划分。

在模式选择单元不将cu进一步划分为pu的示例中,每个cu可以与亮度编解码块和对应的色度编解码块相关联。如上所述,cu的大小可以指的是cu的亮度编解码块的大小。视频编码器200和视频解码器300可以支持2nx2n、2nxn或nx2n的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将重构块存储在dpb218中。例如,在不需要滤波器单元216的操作的示例中,重构单元214可以将重构块存储到dpb218中。在需要滤波器单元216的操作的示例中,滤波器单元216可以将滤波后的重构块存储到dpb218中。运动估计单元222和运动补偿单元224可以从dpb218检索由重构(和可能滤波)的块形成的参考图片,以对随后编码的图片的块进行帧间预测。另外,帧内预测单元226可以使用当前图片的dpb218中的重构块来对当前图片中的其它块进行帧内预测。

通常,熵编码单元220可以对从视频编码器200的其它功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一示例的语法元素执行一个或多个熵编码操作,以生成熵编码数据。例如,熵编码单元220可以执行上下文自适应可变长度编码(context-adaptivevariablelengthcoding,cavlc)操作、cabac操作、可变至可变(variable-to-variable,v2v)长度编解码操作、基于语法的上下文自适应二进制算术编解码(syntax-basedcontext-adaptivebinaryarithmeticcoding,sbac)操作、概率间隔划分熵(probabilityintervalpartitioningentropy,pipe)编解码操作,指数-格伦布(golomb)编码操作,或对数据的另一种熵编码操作。在一些示例中,熵编码单元220可以在语法元素未被熵编码的旁路模式下操作。

如所示的,在一些示例中,熵编码单元220可以从模式选择单元202接收信息。作为一个示例,运动估计单元222和运动补偿单元224可以被配置为输出指示进入运动矢量预测器列表(例如,如使用上述示例技术构建的)的条目的信息。熵编码单元220可以对指示进入运动矢量预测器列表的信息进行编码和信令通知。熵编码单元220还可以对指示由当前块的运动矢量标识的预测块与当前块之间的差异的信息进行编码和信令通知。

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

以上描述的操作是相对于块而描述的。这种描述应当理解为用于亮度编解码块和/或色度编解码块的操作。如上所述,在一些示例中,亮度编解码块和色度编解码块是cu的亮度和色度分量。在一些示例中,亮度编解码块和色度编解码块是pu的亮度和色度分量。

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

图3是示出可以执行本公开的技术的示例视频解码器300的框图。图3是为了说明的目的而提供的,并且不限制在本公开中广泛例示和描述的技术。为了说明的目的,本公开描述了根据h.266/vvc、jem和hevc的技术的视频解码器300。然而,本公开的技术可以由被配置为其它视频编解码标准的视频编解码设备来执行。

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

cpb存储器320可以存储要由视频解码器300的组件进行解码的视频数据,诸如编码视频比特流。存储在cpb存储器320中的视频数据可以例如从计算机可读介质110(图1)获得。cpb存储器320可以包括存储来自编码视频比特流的编码视频数据(例如,语法元素)的cpb。此外,cpb存储器320可以存储除了编解码图片的语法元素以外的视频数据,诸如代表来自视频解码器300的各个单元的输出的临时数据。dpb314通常存储解码的图片,视频解码器300可以输出这些解码的图片和/或视频解码器300在对编码视频比特流的后续数据或图片进行解码时将这些解码的图片用作参考视频数据。cpb存储器320和dpb314可以由多种存储器设备中的任何一种形成,诸如动态随机存取存储器(dram),包括同步dram(sdram)、磁阻ram(mram)、电阻ram(rram)或其它类型的存储器设备。cpb存储器320和dpb314可以由相同的存储器设备或单独的存储器设备提供。在各种示例中,cpb存储器320可以与视频解码器300的其它组件一起位于片上,或者相对于这些组件位于片外。

另外或可替代地,在一些示例中,视频解码器300可以从存储器120(图1)检索编解码视频数据。也就是说,存储器120可以如上所讨论与cpb存储器320一起存储数据。同样地,当视频解码器300的部分或全部功能性在将由视频解码器300的处理电路系统执行的软件中实施时,存储器120可以存储将由视频解码器300执行的指令。

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

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

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

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

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

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

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

根据本公开的技术,当使用hmvp候选历史表对块进行编码时,运动补偿单元316可以执行帧间预测和运动矢量预测技术。例如,如下面将更详细地解释的,运动补偿单元316可以被配置为构建基于历史的运动矢量预测(hmvp)候选历史表,将hmvp候选历史表中的一个或多个hmvp候选添加到运动矢量预测器列表中,以及使用运动矢量预测器列表对视频数据块进行编码。

例如,运动补偿单元316可以被配置为构建基于历史的运动矢量预测(hmvp)候选历史表,该候选历史表包括扩展到当前块的邻近相邻块之外的先前编码块的运动矢量信息。例如,hmvp候选历史表包括hmvp候选,诸如与当前块不直接邻近的块的运动矢量信息。如下面所述,当前块可以在合并模式中被编码,但是如amvp和/或帧内块复制(ibc)模式之类的其它模式也是可能的。

运动补偿单元316还可以构建运动矢量预测器列表。运动矢量预测器列表包括空间相邻块或并置块(例如,时间相邻块)的运动矢量信息。作为一个示例,运动矢量预测器列表可以包括空间上相邻的块a1、b1、b0、a0和b2中的一个或多个的运动矢量信息,其中,在图4a中,块a1被标识为0并且在pu0434的左侧,块b1被标识为1并且在pu0434的上方,块b0被标识为2并且在pu0434的右上方和pu1436的上方,块a0被标识为3并且在pu0434的左下方,块b2被标识为4并且在pu0434的左上方。运动矢量预测器列表还可以包括时间上相邻的块t540的运动矢量信息。

运动补偿单元316可以将来自hmvp候选历史表的一个或多个hmvp候选添加到运动矢量预测器列表。例如,为了添加来自hmvp候选历史表的一个或多个hmvp候选,运动补偿单元316可以被配置为将hmvp候选历史表中的第一hmvp候选与运动矢量预测器列表中的两个条目进行比较,而不与运动矢量预测器列表中的其它条目进行比较,以及当第一hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第一hmvp候选添加到运动矢量预测器列表中。运动补偿单元316还可以被配置为将hmvp候选历史表中的第二hmvp候选与运动矢量预测器列表中的两个条目进行比较,而不与运动矢量预测器列表中的其它条目进行比较,以及当第二hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第二hmvp候选添加到运动矢量预测器列表中。

在一些示例中,运动矢量预测器列表中的两个条目中的第一条目可以包括左相邻块(例如,图4a中表示为0的块a1)的运动矢量信息。运动矢量预测器列表中的两个条目中的第二条目可以包括上述相邻块(例如,图4a中表示为1的块b1)的运动矢量信息。运动矢量预测器列表中的第一条目和第二条目可以是运动矢量预测器列表中的前两项,但是本技术不限于此。另外,第一hmvp和第二hmvp候选可以是hmvp候选历史表中的前两个候选。

在一些示例中,即使在运动补偿单元316将第一和第二hmvp候选中的一个或两个包括到运动矢量预测器列表中之后,运动矢量预测器列表的大小也可能没有达到其最大大小。在这种情况下,第一和第二hmvp候选可以被视为hmvp候选的第一子集的示例,尽管在hmvp候选的第一子集中可以包括更多hmvp候选。

运动补偿单元316可以将hmvp候选历史表中在一个或多个hmvp候选的第一子集之后的一个或多个hmvp候选的第二子集中的一个或多个hmvp候选添加到运动矢量预测器列表,而不对来自第二子集的一个或多个hmvp候选与运动矢量预测器列表中的条目进行比较。

在一些示例中,熵解码单元302可以对指示进入运动矢量预测器列表的条目的信息进行解码。运动补偿单元316可以接收指示进入运动矢量预测器列表的条目的信息,并从运动矢量预测器列表的条目检索运动矢量信息。

运动补偿单元316可以基于检索到的运动矢量信息来确定当前块的运动矢量。例如,在合并模式中,运动补偿单元316可以将当前块的运动矢量设置为等于检索到的运动矢量信息。在amvp模式中,运动补偿单元316还可以接收检索到的运动矢量信息与实际运动矢量之间的运动矢量差(mvd)。运动补偿单元316可以将mvd添加到检索到的运动矢量信息中,以确定当前块的运动矢量。

运动补偿单元316可以基于当前块的运动矢量来确定当前块的预测块。例如,运动补偿单元316可以从包括由运动矢量标识的参考块的参考图片中检索采样点值。运动补偿单元316可以基于检索到的采样点来确定预测块。

作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式生成预测块。同样,帧内预测单元318通常可以以与相对于帧内预测单元226(图2)所描述的方式相似的方式来执行帧内预测处理。帧内预测单元318可以从dpb314检索针对当前块的相邻采样点的数据。

重构单元310可以使用预测块和残差块重构当前块。例如,重构单元310可以将残差块的采样点与预测块的对应采样点相加,以重构当前块。换句话说,重构单元310可以将预测块添加到所接收的指示预测块与当前块之间的差异的残差信息中,以重构当前块。

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

视频解码器300可以将重构的块存储在dpb314中。如上面所讨论的,dpb314可以向预测处理单元304提供参考信息,诸如用于帧内预测的当前图片的采样点和用于后续运动补偿的先前解码图片的采样点。此外,视频解码器300可以输出来自dpb的解码图片,以用于随后在诸如图1的显示设备118的显示设备上呈现。

以这种方式,视频解码器300代表视频解码设备的示例,该视频解码设备包括被配置为存储视频数据的存储器和一个或多个处理单元,该一个或多个处理单元在电路系统中实施并被配置为构建基于历史的运动矢量预测(hmvp)候选历史表,将hmvp候选历史表中的一个或多个hmvp候选添加到运动矢量预测器列表中,以及使用运动矢量预测器列表对视频数据块进行编解码。

图7是示出用于对当前块进行编码的示例方法的流程图。当前块可以包括当前cu。尽管相对于视频编码器200(图1和图2)进行了描述,但应该理解,其它设备可以被配置为执行类似于图7的方法。

在这个示例中,视频编码器200最初预测当前块(350)。例如,视频编码器200可以形成当前块的预测块。在一个或多个示例中,视频编码器200可以被配置为基于运动矢量形成预测块。视频编码器200可以被配置为利用本公开中描述的示例技术来构建运动矢量预测器列表,并且信令通知运动矢量预测器列表中的视频解码器300用于确定运动矢量的条目的信息。

然后,视频编码器200可以计算当前块的残差块(352)。为了计算残差块,视频编码器200可以计算原始未编解码块与当前块的预测块之间的差。视频编码器200然后可以对残差块的系数进行变换和量化(354)。接下来,视频编码器200可以扫描残差块的量化变换系数(356)。在扫描期间或在扫描之后,视频编码器200可以对系数进行熵编码(358)。例如,视频编码器200可以使用cavlc或cabac对系数进行编码。视频编码器200然后可以输出块的熵编码数据(360)。

图8是示出用于对视频数据的当前块进行解码的示例方法的流程图。当前块可以包括当前cu。尽管相对于视频解码器300(图1和3)进行了描述,但应该理解,其它设备可以被配置为执行类似于图8的方法。

视频解码器300可以接收对于当前块的熵编解码数据,诸如熵编解码预测信息和与当前块对应的残差块的系数的熵编解码数据(370)。视频解码器300可以对熵编解码数据进行熵解码以确定当前块的预测信息并再现残差块的系数(372)。视频解码器300可以例如使用由当前块的预测信息指示的帧内或帧间预测模式来预测当前块(374),以计算当前块的预测块。

作为一个示例,视频解码器300可以被配置为使用本公开中描述的示例技术来构建运动矢量预测器列表。视频解码器300随后可以接收进入运动矢量预测器列表的条目,并且可以基于运动矢量预测器列表的条目中的运动矢量信息来确定当前块的运动矢量。然后,视频解码器300可以基于所确定的运动矢量来计算预测块。

然后,视频解码器300可以对再现的系数进行逆扫描(376),以创建量化变换系数的块。视频解码器300随后可以对系数进行逆量化和逆变换以产生残差块(378)。视频解码器300可以通过组合预测块和残差块来对当前块进行最终解码(380)。

图9是示出示例编解码方法的流程图。为了便于描述,相对于处理电路系统来描述图9的示例。处理电路系统的示例包括形成视频编码器200或视频解码器300的固定功能和/或可编程处理电路系统。例如,视频编码器200和视频解码器300二者可以被配置为执行本公开中描述的示例技术。

处理电路系统可以被配置为构建基于历史的运动矢量预测(hmvp)候选历史表,该候选历史表包括扩展到当前块的邻近相邻块之外的先前编解码块的运动矢量信息(400)。例如,处理电路系统可以访问存储器(例如,视频数据存储器230或dpb314),以获取不直接与当前块相邻的先前编解码块的运动矢量信息。处理电路系统可以将这些先前编解码的块的运动矢量信息添加到hmvp候选历史表中。

处理电路系统可以构建运动矢量预测器列表(402)。处理电路系统可以用一个或多个空间相邻块或并置块(例如,时间相邻块)的运动信息来构建运动矢量预测器列表。例如,处理电路系统可将空间相邻块或并置块的运动矢量信息添加到运动矢量预测器列表中以构建运动矢量预测器列表。

在本公开中描述的技术中,处理电路系统还可以将来自hmvp候选历史表的一个或多个一个或多个hmvp候选添加到当前块的运动矢量预测器列表(404)。处理电路系统可以为以合并模式被编解码的当前块添加一个或多个hmvp候选,并且通常,处理电路系统可以为以合并模式、高级运动矢量预测(amvp)模式或帧内块复制(ibc)合并模式之一被编解码的当前块添加一个或多个hmvp。

为了添加来自hmvp候选历史表的一个或多个hmvp候选,处理电路系统可以被配置为将hmvp候选历史表中的第一hmvp候选与运动矢量预测器列表中的两个条目进行比较,而不与运动矢量预测器列表中的其它条目进行比较,以及当第一hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第一hmvp候选添加到运动矢量预测器列表中。此外,处理电路系统可以被配置为将hmvp候选历史表中的第二hmvp候选与运动矢量预测器列表中的两个条目进行比较,而不与运动矢量预测器列表中的其它条目进行比较,以及当第二hmvp候选与运动矢量预测器列表中的两个条目都不同时,将第二hmvp候选添加到运动矢量预测器列表中。在一些示例中,运动矢量预测器列表中的两个条目可以是当前块的左相邻块的第一条目和当前块的上相邻块的第二条目。

在一些示例中,第一和第二hmvp候选可以被认为是hmvp候选的第一子集。然而,在候选的第一个子集中可能有两个以上的hmvp候选。处理电路系统可以进一步被配置为将hmvp候选历史表中在一个或多个hmvp候选的第一子集之后的一个或多个hmvp候选的第二子集中的一个或多个hmvp候选添加到运动矢量预测器列表,而不对来自第二子集的一个或多个hmvp候选与运动矢量预测器列表中的条目进行比较。

处理电路系统可以被配置为使用运动矢量预测器列表对视频数据的当前块进行编码(406)。作为一个示例,在处理电路系统代表视频解码器300的情况下,处理电路系统可以被配置为从运动矢量预测器列表的条目中检索运动矢量信息,基于检索到的运动矢量信息确定当前块的运动矢量,基于运动矢量确定预测块,并将预测块添加到所接收的指示预测块与当前块之间的差异的残差信息中以重构当前块。作为另一示例,在处理电路系统代表视频编码器200的情况下,处理电路系统可以被配置为确定用于识别预测块的当前块的运动矢量,基于所确定的当前块的运动矢量,信令通知指示进入运动矢量预测器列表中的条目的信息,以及信令通知指示预测块与当前块之间的差的残差信息。

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

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

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

指令可由诸如以下各项的一个或多个处理器执行:一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其它等效的集成或离散逻辑电路。因此,如本文所使用的术语“处理器”可以指上述结构中的任何一种或适合于实现本文所描述的技术的任何其它结构。另外,在一些方面中,本文所描述的功能性可在配置用于编码和解码的专用硬件和/或软件模块内提供,或并入组合编解码器中。此外,这些技术可以在一个或多个电路或逻辑元件中完全实现。

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

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1