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

矢量预测器列表生成

文献发布时间:2023-06-19 10:32:14


矢量预测器列表生成

本申请要求2019年9月10日提交的美国申请16/566,571、2018年9月12日提交的美国临时申请62/730,495以及2018年9月17日提交的美国临时申请62/732,526的优先权,上述每个申请的全部内容通过引用合并于此。

技术领域

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

背景技术

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

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

发明内容

总体上,本公开描述了用于预测器选择的技术,诸如用于运动矢量。该技术可以应用于现有的视频编解码器,诸如HEVC(高效视频译码)、或者是未来视频译码标准中的有效译码工具。例如,本公开描述了示例技术,该技术从邻近块和对应时域块生成用于当前块的运动矢量预测器。基于运动矢量预测器导出当前块的运动矢量。在一些示例中,该技术可以用于通过使用快速修剪算法来降低运动矢量预测器列表生成的复杂性。运动矢量预测器列表可用于合并候选列表生成,或用于其他运动矢量预测器列表生成的领域,诸如高级运动矢量预测(AMVP)列表和仿射MVP列表。

在一个示例中,一种对视频数据的当前块进行译码(编码或解码)的方法包括:构建用于视频数据的当前块的运动矢量预测器列表,其中构建运动矢量预测器列表包括:确定用于第一组块中的块的运动矢量,第一组块包括与当前块直接邻近的块;确定用于第二组块中的第一块的第一运动矢量,第二组块包括与当前块分开一个或多个块的块;确定用于第二组块中的第二块的第二运动矢量;确定第二运动矢量是否与用于第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的块的运动矢量相同;响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量不相同,并且与来自第一组块的块子集的任何块的任何运动矢量都不相同,将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集中的任何块的运动矢量相同,绕过将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;使用用于当前块的运动矢量对当前块进行帧间预测译码;以及使用运动矢量预测器列表对运动矢量进行译码。

在另一个示例中,一种用于对视频数据的当前块进行译码的设备包括:配置为存储视频数据的存储器;以及在电路中实现的一个或多个处理器,该一个或多个处理器被配置为:构建用于视频数据的当前块的运动矢量预测器列表,其中,为了构建运动矢量预测器列表,一个或多个处理器被配置为:确定用于第一组块中的块的运动矢量,第一组块包括与当前块直接邻近的块;确定用于第二组块中的第一块的第一运动矢量,第二组块包括与当前块分开一个或多个块的块;确定用于第二组块中的第二块的第二运动矢量;确定第二运动矢量是否与用于第二组块中的第一块的第一运动矢量或者与来自第一组块的块子集的块的运动矢量相同;响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量不相同,并且与来自第一组块的块子集中的任何块的任何运动矢量都不相同,将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;响应于确定第二运动矢量与用于第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的任何块的运动矢量相同,绕过将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;使用当前块的运动矢量对当前块进行帧间预测译码;以及使用运动矢量预测器列表对运动矢量进行译码。

在另一示例中,一种计算机可读存储介质,其上存储有指令,该指令在被执行时使处理器执行:构建用于视频数据的当前块的运动矢量预测器列表,其中,为了构建运动矢量预测器列表,该指令使处理器执行:确定用于第一组块中的块的运动矢量,第一组块包括与当前块直接邻近的块;确定用于第二组块中的第一块的第一运动矢量,第二组块包括与当前块分开一个或多个块的块;确定用于第二组块中的第二块的第二运动矢量;确定第二运动矢量是否与用于第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的块的运动矢量相同;响应于确定第二运动矢量与用于第二组块中的第一块的第一运动矢量不相同,并且与来自第一组块的块子集中的任何块的任何运动矢量都不相同,将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;响应于确定第二运动矢量与用于第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的任何块的运动矢量相同,绕过将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;使用用于当前块的运动矢量对当前块进行帧间预测译码;以及使用运动矢量预测器列表对运动矢量进行译码。

在另一示例中,一种用于对视频数据进行译码的设备包括:用于构建用于视频数据的当前块的运动矢量预测器列表的部件,其中,用于构建运动矢量预测器列表的部件包括:用于确定第一组块中的块的运动矢量的部件,第一组块包括与当前块直接邻近的块;用于确定第二组块中的第一块的第一运动矢量的部件,第二组块包括与当前块分开一个或多个块的块;用于确定第二组块中的第二块的第二运动矢量的部件;用于确定第二运动矢量是否与第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的块的运动矢量相同的部件;用于响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量不相同并且与来自第一组块的块子集中的任何块的任何运动矢量都不相同,而将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中的部件;用于响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的任何块的运动矢量相同,而绕过将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中的部件;用于使用当前块的运动矢量对当前块进行帧间预测译码的部件;以及用于使用运动矢量预测器列表对运动矢量进行译码的部件。

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

附图说明

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

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

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

图4A是图示用于合并/跳过模式的空域邻近运动矢量候选的示例的概念图。

图4B是图示用于合并/跳过模式的时域邻近运动矢量候选的示例的概念图。

图5是图示用来导出空域合并候选的空域邻近块的示例的概念图。

图6是图示用来导出空域合并候选的空域邻近块的附加示例的概念图。

图7是图示根据本公开的技术的可用来导出空域合并候选的空域邻近块的示例集合的概念图。

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

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

图10是图示根据本公开的技术的对视频数据的当前块进行编码的示例方法的流程图。

图11是图示根据本公开的技术的对视频数据的当前块进行解码的示例方法的流程图。

具体实施方式

本公开涉及运动矢量预测器选择。在视频译码中,诸如在帧间预测中,基于预测块来预测当前块。当前块的运动矢量识别参考块以用于生成预测块。与其中视频解码器可以导出运动矢量的运动矢量预测器技术相比,信令通知运动矢量的坐标可能需要更多的带宽。

例如,在诸如合并/跳过模式、高级运动矢量预测(AMVP)模式或仿射合并/AMVP模式的运动矢量预测器技术中,视频编码器和视频解码器构建相同的运动矢量预测器列表,该列表包括充当当前块的运动矢量的候选预测器的运动矢量的列表。运动矢量预测器列表中的运动矢量预测器可以是空域上邻近或相近的块的运动矢量或时域块的运动矢量(例如,与包括正在被编码或解码的当前块的当前图片不同的图片中的块)。

视频编码器发信号通知到运动矢量预测器列表的索引,而不发信号通知坐标,而是。视频解码器基于到运动矢量预测器列表的索引确定运动矢量预测器,并基于运动矢量预测器生成当前块的运动矢量。例如,在合并模式下,视频解码器将用于当前块的运动矢量设置为等于运动矢量预测器。在AMVP模式下,视频解码器还接收该运动矢量和运动矢量预测器之间的运动矢量差(MVD)。视频解码器将MVD添加到运动矢量预测器,以确定用于当前块的运动矢量。

本公开描述了用于构建运动矢量预测器列表的示例技术。例如,可能会出现的影响译码效率的一个技术问题是运动矢量预测器的重复可能出现在运动矢量预测器列表中(例如,相同的运动矢量预测器存在于运动矢量预测器列表中的多个位置)。在这种情况下,运动矢量预测器列表中可能没有足够的可用空间,并且运动矢量预测器列表中可能没有包含更好的运动矢量预测器,这是因为运动矢量预测器的重复已用尽了运动矢量预测器列表中的可用位置。

克服这种缺陷的一种方法是“修剪”运动矢量预测器列表以去除运动矢量预测器的重复。但是,随着运动矢量预测器列表的大小增加,检查以确保没有重复所需的时钟周期数可能会导致视频编码或解码过程变慢。

本公开描述了即使在运动矢量预测器列表的大小相对较大的情况下也提供快速修剪的一种或多种示例技术。举例来说,视频译码器(例如,视频编码器或视频解码器)可将邻近块分组为块的集合(例如,第一组块、第二组块等)。

附加地或替代地,视频译码器可以确定是否已对运动矢量预测器列表执行最大数量的修剪操作。在一些示例中,如果修剪操作的数量达到最大允许数量,则视频译码器可将新的潜在候选添加到列表而无需修剪。在一些示例中,如果修剪操作的数量达到最大允许数量,则视频译码器可不将新的潜在候选添加到列表。视频译码器还可将默认候选添加到列表中。

视频译码器可以包括第二组块中的第一块的运动矢量。然后视频译码器可以确定第二组块中的第二块的运动矢量是否与第二组块中的第一块的运动矢量相同或者与第一组块的块子集的运动矢量相同。作为一个示例,子集可以包括具有运动矢量的第一组块中的前两个块。

如果第二块的运动矢量与这些运动矢量中的任何一个相同,则视频译码器可绕过(例如,不插入或避免插入)将第二组块中的第二块的运动矢量插入到运动矢量预测器列表中。如果第二块的运动矢量与所有这些运动矢量均不相同,则视频译码器可将第二组块中的第二块的运动矢量插入到运动矢量预测器列表中。

视频译码器可以对第二群组(group)块中的其他块重复此操作,并对第三群组块中的块重复此操作。在以上示例中,第二组块中的第一块是可以是与第二组块中的第二块在空域上最接近的块,并且第一块可以是先前被检查以确定是否第一运动矢量要包括在运动矢量预测器列表中的块。

在一些示例中,第一组块包括与当前块直接邻近的块。第二组块、第三组块等包括与当前块分开一个或多个块的块。

视频译码器还可以确定附加运动矢量预测器。例如,视频译码器可以基于第一群组中的块的运动矢量、第二群组中的块的运动矢量、第三群组中的块的运动矢量等来确定附加运动矢量预测器。在一个示例中,视频译码器可对第一组块中的两个或更多块的运动矢量与时域运动矢量预测器进行平均以确定第一附加运动矢量预测器。视频译码器可对第二组块和第三组块执行类似的操作以确定另外两个运动矢量预测器。

这样,本公开描述了以视频编码器和视频解码器用于帧间预测的有效方式来构建运动矢量预测器列表的技术的示例。这些示例技术可以解决视频译码器的操作中存在的技术问题,诸如当视频译码器在确定是否要在运动矢量预测器列表中包括运动矢量预测器时减少处理时间。

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

如图1所示,在此示例中,系统100包括提供将由目的地设备116进行解码和显示的编码视频数据的源设备102。特别地,源设备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,其对图片的数据进行编码。源设备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输出到存储设备116。类似地,目的地设备116可以经由输入接口122访问来自存储设备116的编码数据。存储设备116可以包括各种分布式或本地访问的数据存储介质中的任何一种,比如硬盘、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器,或者用于存储编码视频数据的任何其他合适的数字存储介质。

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

输出接口108和输入接口122可以代表无线发射机/接收机、调制解调器、有线联网组件(例如以太网卡)、根据各种IEEE 802.11标准中的任何一种进行操作的无线通信组件,或者其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以配置为根据比如4G、4G-LTE(长期演进)、LTE高级、5G或类似标准的蜂窝通信标准来传输比如编码视频数据的数据。在输出接口108包括无线发射机的某些示例中,输出接口108和输入接口122可以配置为根据其他无线标准,比如IEEE 802.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-TH.265,也表示为高效视频译码(HEVC)或其扩展,比如多视图和/或可缩放的视频译码扩展。替代地,视频编码器200和视频解码器300可以根据其他专有或工业标准,例如当前正在开发的用于通用视频编码(VCC)标准的联合探索测试模型(JEM)来操作。VCC标准将在下面更详细地描述。然而,本公开的技术不限于任何特定的译码标准。

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

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

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

作为另一示例,视频编码器200和视频解码器300可以配置为根据用于VCC的JEM进行操作。根据JEM,视频译码器(比如视频编码器200)将图片分割为多个CTU。视频编码器200可以根据比如四叉树-二叉树(QTBT)结构的树结构来对CTU进行分割。JEM的QTBT结构消除了多个分割类型的概念,比如HEVC的CU、PU和TU之间的区分。JEM的QTBT结构包括两个级别:根据四叉树分割而分割出来的第一级,以及根据二叉树分割而分割出来的第二级。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于编码单元(CU)。

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

视频编码器200和视频解码器300可以配置为使用根据HEVC的四叉树分割、根据JEM的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可以包含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。

根据本公开的技术,如下文更详细地讨论,在执行运动搜索以识别运动向量以产生预测块之后,视频编码器200可对运动向量进行编码。具体地,视频编码器200可构建运动向量预测器列表以包括当前块的各种在空域和/或时域上邻近的块的运动向量。具体地,第一组邻近块可以紧邻当前块,并且第二组邻近块可以与当前块分开一个或多个块。如果运动向量与第一组块的运动向量相同,则视频编码器200可以避免将第二组块的运动向量添加到运动矢量预测器列表。视频编码器200然后可以从运动向量预测器列表中选择运动向量预测器,并使用该运动向量预测器对用来生成预测块的运动向量进行编码。

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

为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。JEM提供了六十七种帧内预测模式,包括各种方向的模式以及平面模式和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可以进一步地生成例如在图片标头、块标头、条带标头中到视频解码器300的语法数据,比如基于块的语法数据、基于图片的语法数据以及基于序列的语法数据,或者生成其他语法数据,比如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS)。视频解码器300可以类似地对此类语法数据进行解码以确定如何解码对应视频数据。

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

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

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

以下描述与视频译码相关的一些技术,例如联合探索模型(JEM)的技术。视频编码标准包括ITU-T H.261、ISO/IEC MPEG-1视觉、ITU-T H.262或ISO/IEC MPEG-2视觉、ITU-TH.263、ISO/IEC MPEG-4视觉和ITU-T H.264(也称为ISO/IEC MPEG-4AVC),包括其可伸缩视频译码(SVC)和多视图视频译码(MVC)扩展。

另外,ITU-T视频译码专家组(VCEG)和ISO/IEC运动图片专家组(MPEG)的视频译码联合协作团队(JCT-VC)以及3D视频译码扩展开发联合协作团队(JCT-3V)已经开发了高效视频译码(HEVC)或ITU-T H.265,包括其范围扩展、多视图扩展(MV-HEVC)和可伸缩扩展(SHVC)。

ITU-T VCEG(Q6/16)和ISO/IEC MPEG(JTC 1/SC 29/WG 11)研究了对未来视频译码技术标准化的潜在需求,其压缩能力大大超过了当前HEVC标准(包括其针对屏幕内容译码和高动态范围译码的当前扩展和近期扩展)的压缩能力。称为联合视频探索团队(JVET)的小组正在联合协作中共同开展这项探索活动,以评估这一领域中的专家提出的压缩技术设计。

ITU-T WP3/16和ISO/IEC JTC 1/SC 29/WG 11的联合视频专家组(JVET)在2018年7月10日至18日期间在GR–卢布尔雅那会展中心举行了第十一次会议(Dunajska cesta 18,1000Ljubljana,Slovenia)。通用视频译码(VVC)被选择作为新标准的非正式名称。

如上所述,在HEVC中,条带中最大的译码单元称为译码树块(CTB)或译码树单元(CTU)。CTB包含一个四叉树,其节点是译码单元。

在HEVC主配置文件中,CTB的尺寸可以从16×16到64×64(尽管从技术上讲,可以支持8×8CTB尺寸)。译码单元(CU)的尺寸可以与CTB的尺寸相同,也可以小至8×8。每个译码单元可以以一种模式译码。当CU被帧间译码时,CU可被进一步分割为2或4个预测单元(PU),或当不应用进一步的分割时,CU仅变为一个PU。当一个CU中存在两个PU时,两个PU能是一半尺寸的矩形,也可以是分别为CU的尺寸的1/4或3/4的两个矩形。

当CU被帧间译码时,针对每个PU存在一组运动信息。另外,利用独特的帧间预测模式对每个PU进行译码以导出运动信息集合。

在HEVC标准中,存在两种帧间预测模式,分别称为预测单元(PU)的合并(跳过被认为是合并的特例)和高级运动矢量预测(AMVP)模式。

在AMVP或合并模式中,为多个运动矢量预测器保持运动矢量(MV)候选列表。运动矢量(MV)候选列表也称为运动矢量预测器列表。当前PU的运动矢量以及合并模式下的参考索引是通过从MV候选列表中选取一个候选来生成的。

根据HEVC,MV候选列表(或运动矢量预测器列表)包括用于合并模式的多达5个候选(例如,五个运动矢量预测器)和用于AMVP的仅两个候选(例如,两个运动矢量预测器)模式。合并候选可以包含一组运动信息,例如,与参考图片列表(列表0和列表1)和参考索引两者相对应的运动矢量。如果通过合并索引识别了合并候选,则参考图片被用于当前块的预测,并且确定相关联的运动矢量。但是,在AMVP模式下,对于来自列表0或列表1的每个潜在预测方向,由于AMVP候选仅包含运动矢量,因此可以将参考索引与到MV候选列表的MV预测器(MVP)索引一起明确地信令通知。在AMVP模式中,可以进一步细化预测的运动矢量。

如上文所见,合并候选对应于运动信息的完整集合,而AMVP候选仅包含用于特定预测方向和参考索引的一个运动矢量。两种模式的候选都类似地从相同的空域和时域邻近块中得出。

图2A和图2B是分别图示用于合并和高级运动矢量预测(AMVP)模式的空域邻近运动矢量候选的示例的概念图。特别地,图2A描绘了PU 130A和130B。PU 130A具有空域邻近候选132A-132E(空域邻近候选132),可以从中选择运动信息作为用于合并模式的运动矢量预测器。图2B描绘了PU 134A和134B。PU 134A具有空域邻近候选136A-136E(空域邻近候选136),可以从中选择运动信息作为用于AMVP模式的运动矢量预测器。

视频编码器200和视频解码器300可以被配置为使用空域邻近候选132、136来预测运动信息。尽管用于从块生成候选的技术可以与合并和AMVP模式不同,对于特定PU(图2A中的PU 130A,图2B中的PU 134A),视频编码器200和视频解码器300可以从邻近块(例如,如图2A和图2B所示)中导出空域MV候选,。

根据HEVC,在合并模式下,能够利用图2A所示的带有数字的顺序来导出多达四个空域MV候选。在HEVC的示例中,如图2A所示,顺序如下:左侧(0,A1,空域邻近候选132A),上方(1,B1,空域邻近候选132B),右上(2,B0,空域邻近候选132C),左下(3,A0,空域邻近候选132D)和左上(4,B2,空域邻近候选132E)。在HEVC的AVMP模式下,如图2B所示,邻近块被分成两组:左侧组包括块0和1(分别为空域邻近候选136A、136B),而上方组包括块2、3和4(分别为空域邻近候选136C-136E)。对于每个组,参考与信令通知的参考索引指示的参考图片相同的参考图片的邻近块中的潜在候选具有最高优先级,以被选择来形成该组的最终候选。可能所有邻近块都不包含指向同一参考图片的运动矢量。因此,如果找不到这样的候选,则可以缩放第一可用候选以形成最终候选,从而能够补偿时域距离差。

图3A和图3B是分别图示时域运动矢量预测器(TMVP)候选和针对TMVP的运动矢量缩放的示例的概念图。特别地,图3A描绘了包括PU 142A、142B的LCU 140。PU 142A具有TMVP候选144A和144B,并且LCU 140具有TMVP候选144C。

如果被启用且可用,视频编码器200和视频解码器300可以将TMVP候选144A-144C(TMVP候选144)中的一个()在空域运动矢量候选之后添加到MV候选列表(例如,运动矢量预测器列表)中。对于TMVP候选,运动矢量导出的过程对于合并和AMVP模式而言可能是相同的。但是,可以将合并模式下TMVP候选的目标参考索引设置为0。

在HEVC中,用于导出TMVP候选的主要块位置是在并置的PU之外的右下块(如图3A所示的TMPV候选144A),以补偿对用于生成空域邻近候选的上方和左侧块的偏差。然而,如果TMVP候选144A位于当前CTB行的外部,或者运动信息不可用(例如,与TMVP候选144C一样),则TMVP候选144A被PU的中心块(即TMVP候选144B)代替。

视频编码器200和视频解码器300可以从以条带级别指示的并置图片的并置PU中导出TMVP候选144之一的运动矢量。并置的PU的运动矢量称为并置的MV。如图3B所示,视频编码器200和视频解码器300可以从并置的MV 152中导出当前图片146(参考当前参考图片148A)的当前块的TMVP候选运动矢量150,该MV 152从并置的图片148C开始并且参考并置的参考图片148B。类似于AVC中的时域直接模式,为了导出TMVP候选运动矢量150,并置的MV152可能需要被缩放以补偿并置的图片148C和并置的参考图片148B之间的时域距离与当前图片146和当前参考图片148A之间的时域距离之间的差,如图3A所示。

图4A是图示用于合并/跳过模式的空域邻近运动矢量候选的示例的概念图。图4A描绘了当前块154和邻近块156A-156E(邻近块156)。视频编码器200和视频解码器300可以在合并/跳过模式下执行运动矢量预测。对于HEVC的跳过模式和合并模式,信令通知(例如,用于运动矢量预测器列表的)合并索引,以指示使用了合并候选列表中的哪个邻近块156(即,哪个候选)。并不发送帧间预测指示符、参考索引或MVD。可以在合并模式下考虑两种类型的合并候选:空域运动矢量预测器(SMVP)和时域运动矢量预测器(TMVP)。对于根据HEVC的SMVP导出,在位于图4A所示的位置的候选中最多选择四个合并候选。在HEVC中,导出的顺序是A

在按照HEVC的TMVP的导出中,如图4B所描绘的,基于属于在信令通知的参考图片列表内的当前图片的参考图片之一的并置PU来导出用于当前块158的缩放运动矢量。在HEVC中,在条带标头中明确信令通知要用于导出并置PU的参考图片列表。按照HEVC,使用POC距离tb和td,利用并置的PU的缩放运动矢量获得用于时域合并候选的缩放运动矢量,其中tb被定义为当前图片的参考图片和当前图片之间的POC差,并且td被定义为在并置的图片的参考图片和并置的图片之间的POC差。在HEVC中将时域合并候选的参考图片索引设置为等于零。HEVC规范草案中描述了缩放过程的实际实现。对于B条带,获得两个运动矢量,一个运动矢量用于参考图片列表0,另一个运动矢量用于参考图片列表1,并且这两个运动矢量被组合以产生双向预测合并候选。

图4B是图示用于合并/跳过模式的时域邻近运动矢量候选的示例的概念图。如图4B所示,在两个候选位置C 160B和H 160A之间选择并置的PU的位置。如果位置H 160A处的PU不可用,或未被帧内译码或在当前CTU行的外部,则使用位置C 160B。否则,根据HEVC,将位置H 160A用于导出时域合并候选。

除了SMVP和TMVP之外,HEVC中还有两种附加类型的合成合并候选:组合的双向预测MVP和零MVP。利用SMVP和TMVP生成组合的双向预测MVP。组合的双向预测合并候选仅在HEVC中用于B条带。例如,在HEVC中,原始合并候选列表中的具有mvL0和refIdxL0或mvL1和refIdxL1的两个候选被用来创建组合的双向预测合并候选。

在按照HEVC的候选选择过程中,将具有与处理顺序中的先前候选相同的运动参数的重复候选从候选列表中删除。在HEVC中,将此过程定义为修剪过程。而且,在HEVC中不考虑相同合并估计区域(MER)内的候选,以便帮助并行合并处理。为了避免在HEVC中不模拟虚拟2N×2N分割,避免了冗余分割形状。

在每个生成步骤之间,如果候选数量达到MaxNumMergeCand,则停止导出过程。在HEVC的当前通用测试条件下,MaxNumMergeCand设置为等于5。由于候选数量对于HEVC是恒定的,因此使用截断的一元二值化对最佳合并候选的索引进行编码。

以下描述了HEVC中运动预测的另外一些方面。合并和AMVP模式的一些方面描述如下。其他标准和视频译码过程能够将这些或类似过程用于运动预测。

视频编码器200和视频解码器300可以执行运动矢量缩放。假设运动矢量的值与呈现时域中图片的距离成比例。运动矢量将两个图片、参考图片和包含运动矢量的图片(即包含图片)相关联。当运动矢量被用于预测另一运动矢量时,可以基于图片的图片顺序计数(POC)值来计算包含图片和参考图片的距离。

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

视频编码器200和视频解码器300可以执行人工运动矢量候选生成。如果运动矢量候选列表不完整,则可以生成人工运动矢量候选,并将其插入列表的末尾,直到列表中具有指定数量的候选为止。

在HEVC的合并模式中,存在两种类型的人工MV候选:仅针对B条带导出的组合候选,以及如果第一种类型(组合候选)并未提供足够的人工候选情况下的仅用于AMVP的零候选。

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

视频编码器200和视频解码器300可执行用于候选插入的修剪过程。来自不同块的候选可能恰好是相同的,这降低了合并/AMVP候选列表的效率。按照HEVC,应用修剪过程来解决此问题。根据修剪过程,视频编码器200和视频解码器300可以在当前候选列表中将一个候选与其他候选进行比较,以在一定程度上避免插入相同的候选。为了降低复杂度,例如根据下面更详细描述的本公开的技术,可以仅应用有限数量的修剪过程,而不是将每个潜在候选与所有其他现有候选进行比较。

图5是图示用于导出空域合并候选的空域邻近块的示例的概念图。视频编码器200和视频解码器300可以使用非邻近空域邻近候选的运动信息来构建当前块162的运动矢量预测候选列表。对于诸如VVC之类的未来视频译码标准,提出了一种非邻近(例如,不与当前块直接邻近的块)空域合并候选预测技术。这样的技术可以通过根据非邻近空域邻近块来填充合并候选列表来增加合并候选列表的大小。例如,图5图示了非邻近空域邻近块(例如,与当前块不直接邻近的块)的示例。在图5中,标识为1-5的块是邻近块(例如,直接邻近),标识为6-49的块与当前块162非邻近(例如,不直接邻近但是接近)。

可以按照如下对邻近块进行分组。通常,组可以基于与当前块的接近度。在一个示例中,组1包括块1-5;组2包括块13、10、6、8、12、9、7、11、14和16;组3包括块26、24、21、17、19、23、20、18、22、25和27;组4包括块37、35、32、28、30、34、31、29、33、36和38;组5包括块48、46、43、39、41、45、42、40、44、47和49。

本公开认识到一些视频译码方案可能遇到以下问题。帧间预测中运动矢量预测器的增加能够提高译码效率。然而,为了避免多次添加相同的候选(例如,添加相同的运动矢量预测器),可能需要修剪过程。例如,当列表(例如运动矢量预测器列表)的大小增加时,可能需要越来越多的修剪操作,这会增加视频编码器200和视频解码器300的复杂性(例如,视频编码器200和视频解码器300可能会需要花费更多的时钟周期来执行修剪操作,从而减慢编码和解码的速度)。

另外,本公开认识到,随着运动矢量预测器列表的大小增加,使用了越来越多的修剪操作,这增加了视频编码器和视频解码器的复杂性。修剪操作可以包括将现有候选与新候选进行比较,并且如果它们相同,则不将新候选添加到运动矢量预测器列表中。

根据本公开的技术,视频译码器(例如,视频编码器200或视频解码器300)可从当前块162的邻近块(例如,直接邻近和非直接邻近的块)和对应的时域块生成运动矢量预测器。视频译码器可以执行快速修剪算法的一种或多种示例技术,以减少构建运动矢量预测器列表的复杂性。视频译码器可在合并候选列表生成中或在其它运动矢量预测器列表产生领域中执行示例技术,例如,用于AMVP列表产生和仿射MVP列表生成。

附加地或替代地,可根据本公开的技术将视频译码器配置为从邻近块和对应时域块生成运动矢量预测器。这些示例技术可以通过快速修剪算法降低运动矢量预测器列表生成的复杂性。这些示例技术可以用于合并候选列表生成,并且还可以用于诸如AMVP列表生成和仿射MVP列表生成的其他运动矢量预测器列表生成领域。

图6是说明用于导出空域合并候选的空域邻近块的附加示例的概念图。在图6中,当前CU 164的尺寸是宽度×高度。编号的块示出了可用于导出空域合并候选的候选空域邻近块的位置。CU 164和运动矢量预测器候选之间的距离在水平方向上是Offset_X,在垂直方向上是Offset_Y。Offset_X和Offset_Y能够是固定值,或者取决于CU 164的尺寸。Offset_X和Offset_Y能够在解码器侧和编码器侧指定,也可以在参数集(VPS、SPS、PPS等)中发送。

视频译码器(视频编码器200或视频解码器300)可以通过以数字的升序检查编号的块来构建候选列表(例如,运动矢量预测器列表)。图6中所示的顺序是一个例子。顺序可以在解码器侧和编码器侧指定,也可以在参数集中发送。

如果块是帧间预测译码,则视频译码器可从该块获取并存储运动信息,并将该运动信息用作CU 164的潜在候选。视频译码器可通过比较潜在候选与现有候选来执行修剪过程。如果视频译码器确定现有候选具有相同的运动信息,则可以修剪潜在候选(例如,绕过将候选插入到运动矢量预测器列表中)。如果视频译码器不修剪潜在候选,则视频译码器可将潜在候选插入到候选列表(例如,运动矢量预测器列表)中。当候选的数量达到预定义的最大数量时,则可以终止候选列表(例如,运动矢量预测器列表)的构建过程。

作为一个示例,假设候选列表(例如,运动矢量预测器列表)的大小为10,并且潜在运动矢量预测器候选的数量为25。视频编码器可执行以下过程,其中在列表中的候选数量达到10时视频编码器可以终止该过程。

1.运动矢量预测器的位置可以依赖于CU 164的尺寸。例如,在图6中,offset_xi等于CU宽度,而offset_yj等于CU高度。在图6的示例中,offset_Xk等于CU宽度>>1(1/2宽度),而offset_Yl等于CU高度>>1(1/2高度)。

2.检查块1、2、3、4和5的第一组潜在候选。如果运动信息可用,则将运动信息添加到运动矢量预测器列表中。当检查来自第二组的候选时,通过比较来自第二组的运动信息与运动矢量预测器列表中已经存在的候选来执行修剪。

3.检查块6到10的第二组潜在候选。在检查第二组的候选时,通过比较运动信息与运动矢量预测器列表中已经存在的候选来执行修剪。

4.为了限制修剪数量,将修剪操作的最大数量定义为MaxPruningNum。如果修剪操作的数量达到MaxPruningNum,则不再修剪。

5.重复添加候选,直到列表中的候选数量达到10或已检查所有潜在候选。

以这种方式,块1-5代表与当前块直接邻近的第一组块的示例,并且块6-25(或其任何子集)可以代表与当前块分开一个或多个块的第二组块的示例。根据本公开的技术,视频译码器(例如,视频编码器200或视频解码器300)可确定第一组块(例如,块1-5)的运动矢量,然后确定第二组块(例如,块6–25的块9)中的块的运动矢量。视频译码器可将块1-5(第一组块)的运动矢量添加到运动矢量预测器列表中。视频译码器可确定例如块9的运动矢量是否与块1-5中任一块的运动矢量相同。如果块9的运动矢量与块1-5的运动矢量不同,则视频译码器可以将块9的运动矢量添加到运动矢量预测列表中;否则,视频译码器可绕过将该运动矢量添加到运动矢量预测列表中。尽管在此示例中讨论了块1-5中的每个块,但是应该理解,视频译码器可以将运动矢量与第一组块的任何子集(例如,仅块1、2和5)进行比较。

另外,继续上面的示例,视频译码器可确定第二组块(例如,块6-25的块8)的第二运动矢量是否与第一组块的运动矢量的任何一个或块9的运动矢量相同。如果第二运动矢量与第二组块的块9的运动矢量不同,并且与第一组块的任何块的任何运动矢量都不相同,则视频译码器可以将该第二运动矢量作为运动矢量预测器插入运动矢量预测器列表中。否则,如果第二运动矢量与第二组块的块9的运动矢量相同或与第一组块的任何一个的运动矢量相同,则视频译码器可以绕过将第二运动矢量作为运动矢量预测器插入运动矢量预测器列表中。

在替代示例中,视频译码器可执行用来限制修剪操作的数量的技术。举例来说,视频译码器可使用最接近的邻近候选对已经添加到运动矢量候选列表中的候选执行修剪。例如,当检查块4处的候选时,最接近的邻近候选是在块9的候选。

在另一替代示例中,视频译码器可通过将当前候选与候选列表中的前N个可用候选进行比较来执行修剪操作。N可以在编码器侧和解码器侧指定,也可以在参数集中发送。

在另一替代示例中,视频译码器可在候选之间执行完全的修剪。

在另一替代示例中,候选列表的大小可为N,且潜在运动矢量候选的数量可为M。N和M可以在视频编码器200和视频解码器300中预先指定,或者视频编码器200可以对参数集(例如,视频参数集(VPS)、序列参数集(SPS)、图片参数集(PPS))或其他数据集(例如条带标头、块(例如CTU)标头等)中表示N和M的数据进行编码。

在该示例中,修剪操作能够通过比较两个运动矢量预测器之间的参考方向和/或参考索引和/或POC和/或运动矢量(具有/不具有缩放)来完成。如果运动矢量预测器与列表中的一个相同,则视频译码器(视频编码器200或视频解码器300)可以避免将运动矢量预测器添加到列表中。

视频编码器200和视频解码器300可以被配置为执行基于计数的修剪算法,用于从运动矢量预测候选列表中修剪候选。视频编码器200和视频解码器300可以配置有在运动矢量预测器列表生成期间允许的修剪操作的最大数量。举例来说,视频编码器200可确定最大数量并且在参数集、条带标头、块标头等中译码(例如发信号通知)该最大数量。可替代地,视频编码器200和视频解码器300可以被预先配置有最大数量。当修剪操作的数量已经达到该最大数量时,视频编码器200和视频解码器300可以阻止进一步的修剪操作。

在一个示例中,如果修剪的数量达到最大允许数量,则视频编码器200和视频解码器300可以在不进行修剪的情况下将新的潜在候选添加到列表中。在另一个示例中,如果修剪操作的数量达到最大允许数量,则新的潜在候选将不会添加到列表中。视频编码器200和视频解码器300可以在列表中添加默认候选。例如,如果尚未达到最大允许数量,则视频编码器200和视频解码器300可以在列表中添加组合候选(像HEVC方法中那样)。

本文描述的修剪操作的示例可以由视频编码器200和视频解码器300执行。这些示例可以单独执行或以任何组合执行。

在一个示例中,比较顺序是根据列表中候选的顺序。令N代表运动矢量预测器列表中从1到N索引的候选数。当检查新候选时,视频编码器200和视频解码器300可首先将新候选与列表中的第一候选进行比较。如果新候选与候选1不同,则视频编码器200和视频解码器300可以将新候选与候选2比较。比较顺序是从候选1到候选N。如果潜在候选与列表中的候选相同,则不将其添加到列表中。视频编码器200和视频解码器300可以执行修剪,直到修剪操作的数量达到最大允许修剪数量为止,或者在将新候选与列表中的所有N个候选进行比较之后。

在一个示例中,比较顺序是根据列表中候选的倒序。令N代表运动矢量预测器列表中从1到N索引的候选数。当检查新候选时,视频编码器200和视频解码器300可首先将新候选与列表中最近添加的候选进行比较(即,从候选N开始)。如果新候选与候选N不同,则视频编码器200和视频解码器300可以将新候选与候选N-1进行比较。比较顺序是从候选N到候选1。如果新候选与列表中的任何一个候选相同,则视频编码器200和视频解码器300可以不将新候选添加到列表中。视频编码器200和视频解码器300可以执行修剪,直到修剪操作的数量达到最大允许修剪数量,或者已将潜在候选与列表中的所有候选进行了比较。

在一个示例中,根据新候选与列表中的候选之间的距离来确定比较顺序。根据候选在列表中的位置,视频编码器200和视频解码器300可以计算要检查的候选的列表,其以与新候选进行比较的顺序排列。可以根据新候选与列表中的候选之间的距离来定义顺序。视频编码器200和视频解码器300可以将新候选与列表中的第一最接近候选进行比较,然后将新候选与列表中的第二最接近候选进行比较,并且继续进行,直到修剪操作的数量达到最大允许修剪数量或已将潜在候选与列表中的所有候选进行了比较。

在一个示例中,能够将修剪操作的最大数量设置为在视频编码器200和视频解码器300中指定的固定数量。在一些示例中,能够根据当前块尺寸设置最大数量。在一些示例中,能够根据最大允许的译码块尺寸来设置最大数量。在一些示例中,能够根据最小允许的译码块尺寸来设置最大数量。

在一个示例中,修剪操作的最大数量能够被设置为在序列级别、图片级别、条带级别或块级别从视频编码器200发信号通知给视频解码器300的值。例如,可以在序列参数集(SPS)、图片参数集(PPS)、条带标头(SH)、译码树单元(CTU)或译码单元(CU)中用信号发送这个值。

在一个示例中,能够在视频编码器200和视频解码器300中指定比较顺序。在一个示例中,能够将修剪顺序(比较顺序)设置为在序列级别、图片级别、条带级别或块级别从视频编码器200发信号通知给视频解码器300的值。例如,可以在序列参数集(SPS)、图片参数集(PPS)、条带标头(SH)、译码树单元(CTU)或译码单元(CU)中用信号发送这个值。

图7是图示根据本公开的技术的可用于导出空域合并候选的空域邻近块的示例集合的概念图。图7示出了邻近CU 166的候选范例的示例。

1.在每个回合(组)中要检查的运动矢量候选的位置数量可以不同。每个回合中的候选数量和回合数量可以在编码器侧和解码器侧指定,或者在参数集中发送。

2.两个连续组之间的距离可以不同。候选的位置可以取决于CU 166的尺寸或基于固定值。

3.如图7的示例中所示,第一组中的位置与HEVC中的位置相同,即包括位置1、2、3、4和5。随着距CU 166的距离增加,第一组之后的每个组中的位置数量可以增加。在图7的示例中,第二组包括位置7、8和9;第三组包括从9到15的位置;第四组包括从16到23的位置。

例如,如图7所示,CU 166的尺寸是CU.width和CU.height,并且CU 166的左上角位置是leftTop()。例如,候选5的位置被定义为leftTop.offset(-1,-1)。令leftTop的位置为(x,y),因此符号“leftTop.offset(-1,-1)”表示(x-1,y-1)。

潜在候选人的位置能够定义如下:

a.对于候选1至5,位置与HEVC中定义的位置相同;

b.对于候选6至8

offsetX=CU.width,offsetY=CU.height

candPos6=leftTop.offset(-offsetX-1,CU.height+offset-1)

candPos7=leftTop.offset(CU.width+offsetX-1,-offsetY-1)

candPos8=leftTop.offset(-offsetX-1,-offsetY-1)

c.对于候选9至15

offsetX=CU.width x 2,offsetY=CU.height x 2

candPos9=leftTop.offset(-offsetX-1,CU.height+offset-1)

candPos10=leftTop.offset(CU.width+offsetX-1,-offsetY-1)

candPos11=leftTop.offset(CU.width>>1,-offsetY-1)

candPos12=leftTop.offset(-offsetX-1,CU.height>>1)

candPos13=leftTop.offset(CU.width+offsetX,-offsetY-1)

candPos14=leftTop.offset(-offsetX-1,CU.height+offset)

candPos15=leftTop.offset(-offsetX-1,-offsetY-1)

d.d.对于候选16至24

offsetX=CU.width x 3,offsetY=CU.height x 3

candPos16=leftTop.offset(-offsetX-1,CU.height+offset-1)

candPos17=leftTop.offset(CU.width+offsetX-1,-offsetY-1)

candPos18=leftTop.offset(CU.width>>1,-offsetY-1)

candPos19=leftTop.offset(-offsetX-1,CU.height>>1)

candPos20=leftTop.offset(CU.width+offsetX,-offsetY-1)

candPos21=leftTop.offset(-offsetX-1,CU.height+offset)

candPos22=leftTop.offset(-offsetX-1,-offsetY-1)

candPos23=leftTop.offset(CU.width+offsetX,-1)

candPos24=leftTop.offset(-1,CU.height+offset)

4.如图7所示的要被检查的块中的数字是检查顺序的一个例子。在其他示例中,可以更改检查顺序。能够在编码器和解码器侧指定检查顺序,或者在参数集中发送检查顺序。

5.在另一个示例中,组中的位置数量随着与CU 166的距离增加而减少。也就是说,所选位置在靠近CU 166时可以密集,而在远离CU 166时可以稀疏。

在一些示例中,能够从空域邻近块和对应的时域块来生成时-空运动矢量预测器(STMVP)。可以通过对3个候选(可以包括2个空域候选和1个时域候选)求平均来生成STMVP。如果这些候选之一不可用,则可以通过对两个可用候选求平均来生成STMVP。

例如,视频编码器200和视频解码器300可以对来自第一组的候选3和4的运动矢量和时域运动矢量预测器(TMVP)求平均以生成STMVP1。视频编码器200和视频解码器300可对来自第二组的候选6和候选7的运动矢量和TMVP求平均以生成STMVP2。视频编码器200和视频解码器300可以对来自第三组的候选11和候选12的运动矢量和TMVP求平均以生成STMVP3,以此类推。

视频编码器200和视频解码器300可以将STMVP添加为第二和第三组中的前导候选。即,视频编码器200和视频解码器300可以在第二组候选之前添加STMVP1和STMVP2。视频编码器200和视频解码器300可以在第三组候选之前添加STMVP3。

视频编码器200和视频解码器300可以在STMVP与列表中的候选之间执行修剪。修剪算法可以如上面关于图6所讨论的那样受到限制。基于示例,候选23、24和TMVP可用于生成STMVP。

在一些示例中,视频编码器200和视频解码器300可通过对以下2或3个候选求平均来导出STMVP1:1)候选3和候选2的第一可用候选,2)候选4和候选1的第一可用候选,3)TMVP。

在一些示例中,视频编码器200和视频解码器300可通过对以下2或3个候选求平均来导出STMVP1:1)候选3,如果候选3不可用,则使用候选2,2)候选4,如果候选4不可用,则使用候选1,3)TMVP。

在图7的示例的替代中,如上所述,视频编码器200和视频解码器300可以从其他候选生成STMVP候选,例如,使用候选9、8和TMVP,或者使用候选9、7和TMVP,或者使用候选6、8和TMVP以生成STMV。在另一替代方案中,视频编码器200和视频解码器300可利用来自不同组中的候选以及TMVP来生成STMVP候选。在另一替代方案中,视频编码器200和视频解码器300可将STMVP候选添加到每个组的末尾或列表中的另一位置。列表中STMVP候选的顺序可以在解码器侧和编码器侧指定,或者在参数集中发送。

在一些示例中,视频编码器200和视频解码器300可以从已经添加到预测器列表中的候选生成STMVP。视频编码器200和视频解码器300可将列表中的任何两个空域候选的运动矢量和TMVP求平均以生成STMVP。

在以上示例中,可以限制考虑哪些邻近块。例如,能够应用行缓冲器限制来减少缓冲器消耗。潜在的空域候选可能被限制在当前CTU及其行缓冲器之内。即,视频编码器200和视频解码器300可以仅将当前CTU内的空域候选及其行缓冲器用作潜在候选。如图6所示和以下函数所示:

offsetYUpperCTURow=((posLT.y>>log2MaxCodingBlockSize)<

offsetXLeftCTUColumn=((posLT.x>>log2MaxCodingBlockSize)<<log2MaxCodingBlockSize)-minPUSize-posLT.x

offsetY=offsetY

offsetX=offsetX

下面描述如何对参数进行译码。例如,组的数量、每个组中的候选数量、该组中用于修剪的候选数量以及修剪操作的最大数量和运动矢量候选的位置能够被预定义、固定或取决于CTU尺寸、当前译码块尺寸、候选位置和/或预测模式。可以经由SPS、PPS或条带标头或在CU级别来用信号通知组的数量、不同组中的候选的数量、该组中用于修剪的候选的数量、以及修剪操作的最大数量和运动矢量候选的位置。

附加地或替代地,视频编码器200和视频解码器300可以被配置为使用下面的示例候选范例。在这些示例中,视频编码器200和视频解码器300可以配置有定义的修剪操作的最大数量。例如,视频编码器200可以例如在序列参数集(SPS)、图片参数集(PPS)、视频参数集(VPS)、条带标头、块标头等中用信号发送确定的修剪操作的最大数量。附加地或替代地,视频编码器200和视频解码器300可以被预配置具有修剪操作的最大数量。

1.1到5的候选是HEVC候选,并在VVC中使用。视频编码器200和视频解码器300可以检查候选1至5、子PU候选(诸如ATMVP)、(基于子PU或基于非PU的)STMVP、和TMVP。视频编码器200和视频解码器300可以计算修剪操作的数量。如果修剪操作的数量达到最大数量,则视频编码器200和视频解码器300可以避免将候选添加到列表。

2.视频编码器200和视频解码器300可以检查非邻近的候选6至23。如果修剪操作的数量达到最大数量,则视频编码器200和视频解码器300可以避免将候选添加到列表中。

3.如果列表中的候选的数量未达到定义的预测器列表大小,则视频编码器200和视频解码器300可将组合候选和/或默认候选添加到列表中。

在一些示例中,视频编码器200和视频解码器300可以被配置为使用以下范例根据合并列表添加顺序来进行修剪。

1.1到5的候选是HEVC候选,并在VVC中使用。视频编码器200和视频解码器300可以检查候选1至5、子PU候选(诸如ATMVP)、(基于子PU的或基于非PU的)STMVP、和TMVP。视频编码器200和视频解码器300可以计算修剪操作的数量。如果修剪操作的数量达到最大数量,则视频编码器200和视频解码器300可避免将候选添加到列表中。

2.视频编码器200和视频解码器300可以检查非邻近的候选6至24。如果修剪操作的数量达到最大数量,则视频编码器200和视频解码器300可以避免将候选添加到列表中。

3.如果运动矢量预测列表中的候选的数量未达到定义的预测器列表大小,则视频编码器200和视频解码器300可将组合候选和/或默认候选添加到列表中。

作为另一示例,类似于以上示例,视频编码器200和视频解码器300可以根据检查顺序来检查候选。当检查潜在候选时,视频编码器200和视频解码器300可将潜在候选与列表中已经存在的候选进行比较。比较顺序可以根据距离。在该示例中,如图6所示,令CU宽度、CU高度、offset_Xi和offset_Y相同,并使用下面的函数1计算距离。在该示例中,候选7的比较顺序是候选{3、2、5、1、4、6}。视频编码器200和视频解码器300可首先将潜在候选与最接近的候选进行比较。例如,当检查候选7时,视频编码器200和视频解码器300可以首先将候选7与候选3(如果候选3可用并且被添加到预测器列表中)进行比较,然后视频编码器200和视频解码器300可以将候选7与下一个最接近的候选进行比较。

视频编码器200和视频解码器300可根据候选的位置来计算距离。如以下函数所示,将候选的位置定义为候选(x,y):

按照上述示例,

Distance=(x

Distance=

|x

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

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

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

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

在本公开中,对视频数据存储器230的引用不应被解释为限于视频编码器200内部的存储器,除非明确地这样描述,或者不应解释为限于视频数据存储器200外部的存储器,除非明确地这样描述。而是,对视频数据存储器230的引用应该被理解为指存储视频编码器200所接收的用于编码的视频数据(例如,要编码的当前块的视频数据)的存储器。图1的存储器106也提供对于视频编码器200的各种单元的输出的临时存储。

图示了图8的各种单元,以帮助理解由视频编码器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通常协调多个编码通道(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可执行运动搜索以识别一个或多个参考图片(例如,存储在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的尺寸为2N×2N,则视频编码器200可支持用于帧内预测的2N×2N或N×N的PU尺寸,以及用于帧间预测的2N×2N、2N×N、N×2N、N×N或类似的对称PU尺寸。视频编码器200和视频解码器300还可针对用于帧间预测的2N×nU、2N×nD、nL×2N和nR×2N的PU尺寸支持非对分割。

在模式选择单元不将CU进一步分割成PU的示例中,每个CU可以与亮度译码块和对应的色度译码块相关联。如上所述,CU的尺寸可以指CU的亮度译码块的尺寸。视频编码器200和视频解码器120可支持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的边缘的块效应伪影(blockiness artifact)。在一些示例中,可以跳过滤波器单元216的操作。

视频编码器200将重构块存储在DPB 218中。例如,在不需要滤波器单元224的操作的示例中,重构单元214可以将重构块存储到DPB218中。在需要滤波器单元224的操作的示例中,滤波器单元216可将滤波后的重构块存储到DPB218中。运动估计单元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表示配置为对视频数据进行编码的设备的示例,该设备包括配置为存储视频数据的存储器以及在电路中实现并配置为构建当前块的运动矢量预测器列表并基于运动矢量预测器列表进行帧间预测编码的一个或多个处理单元。

为了构建运动矢量预测器列表,视频编码器200可以被配置为:确定第一组块中的块的运动矢量,确定第二组块中的第一块的第一运动矢量,确定第二组块的第二块的第二运动矢量,并确定第二运动矢量是否与第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的块的运动矢量相同。视频编码器200可以被配置为以下之一:基于确定第二运动矢量与第二组块中的第一块的第一运动矢量不相同,并且与来自第一组块中的块子集的任何块都不相同,将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中,或者基于确定第二运动矢量与第二组块中的第一块的第一运动矢量相同或与来自第一组块的块子集中的任何块的运动矢量相同,绕过将(例如,不将或避免将)第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中。

附加地或替代地,为了构建运动矢量预测器列表,视频编码器200可以被配置为:响应于确定在将运动矢量候选添加到运动矢量预测器列表的过程中尚未执行最大数量的修剪操作:识别第一运动矢量候选,基于确定尚未执行最大数量的修剪操作,确定在修剪操作的过程中是否存在与第一运动矢量候选重复的运动矢量候选,确定在将运动矢量候选添加到运动矢量预测器列表的过程中最大数量修剪操作已被执行,以及绕过(例如,避免)确定是否存在针对要被添加到运动矢量预测器列表中的一个或多个后续运动矢量候选的重复运动矢量候选。

在一些示例中,为了对当前块进行帧间预测编码,视频编码器200可确定预测块。预测块由用于当前块的运动矢量识别,并且当前块的运动矢量可由视频解码器300基于在运动矢量预测器列表中识别的运动矢量预测器导出。视频编码器200可确定到运动矢量预测器列表的、识别运动矢量预测器的索引,基于预测块与当前块之间的差以及指示残差块的信号信息以及到运动矢量预测器列表的索引来确定残差块。

视频编码器200还代表用于对视频数据的当前块进行译码(即编码)的设备的示例,该设备包括被配置为存储视频数据的存储器;以及在电路中实现的一个或多个处理器,该一个或多个处理器被配置为:构建用于视频数据的当前块的运动矢量预测器列表,其中,为了构建运动矢量预测器列表,一个或多个处理器被配置为:确定第一组块中的块的运动矢量,第一组块包括与当前块直接邻近的块;确定第二组块中的第一块的第一运动矢量,第二组块包括与当前块分开一个或多个块的块;确定第二组块中的第二块的第二运动矢量;确定第二运动矢量是否与第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的块的运动矢量相同;响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量不同,并且与第一组块的块子集中的任何块的任何运动矢量都不相同,将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量相同或者与第一组块的块子集中的任何块的运动矢量相同,绕过将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;使用当前块的运动矢量对当前块进行帧间预测译码;以及使用运动矢量预测器列表对运动矢量进行译码。

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

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

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

附加地或可替代地,在一些示例中,视频解码器300可以从存储器120(图1)取回译码的视频数据。也就是说,存储器120可像上文关于存储器320讨论的那样存储数据。同样地,当视频解码器300的一些或全部功能在软件中实现以通过视频解码器300的处理电路来执行时,存储器120可存储将由视频解码器300执行的指令。

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

视频解码器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可以生成预测块。在这种情况下,预测信息语法元素可以指示DPB 314中的从其取回参考块的参考图片,以及识别参考图片中参考块相对于当前图片中的当前块的位置的运动矢量。运动补偿单元316通常可以以与关于运动补偿单元224(图8)所描述的方式基本相似的方式来执行帧间预测处理。

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

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

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

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

以这种方式,视频解码器300代表视频解码设备的示例,该视频解码设备包括:配置为存储视频数据的存储器以及在电路中实现的一个或多个处理单元,该一个或多个处理单元被配置为构建用于当前块的运动矢量预测器列表,并且基于运动矢量预测器列表对当前块进行帧间预测解码。为了构建运动矢量预测器列表,视频解码器300可以:确定第一组块中的块的运动矢量,确定第二组块中的第一块的第一运动矢量,确定第二组块的第二块的第二运动矢量,并确定第二运动矢量是否与第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的块的运动矢量相同。视频解码器300可以被配置为以下之一:基于确定第二运动矢量与第二组块中的第一块的第一运动矢量不相同,并且与来自第一组块中的块子集的任何块都不相同,将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中,或者,基于确定第二运动矢量与第二组块中的第一块的第一运动矢量相同或与来自第一组块的块子集中的任何块的运动矢量相同,绕过将(例如,不将或避免将)第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中。

附加地或替代地,为了构建运动矢量预测器列表,为了构建运动矢量预测器列表,视频解码器300可以被配置为:响应于确定在将运动矢量候选添加到运动矢量预测器列表的过程中尚未执行最大数量的修剪操作:识别第一运动矢量候选,基于确定尚未执行最大数量的修剪操作,确定在修剪操作的过程中是否存在与第一运动矢量候选重复的运动矢量候选,确定在将运动矢量候选添加到运动矢量预测器列表的过程中最大数量修剪操作已被执行,以及绕过(例如,避免)确定是否存在针对要被添加到运动矢量预测器列表中的一个或多个后续运动矢量候选的重复运动矢量候选。

在一些示例中,为了帧间预测解码,视频解码器300可被配置以接收到运动矢量预测器列表的索引,基于该索引确定运动矢量预测器,基于运动矢量预测器确定当前块的运动矢量;基于当前运动矢量确定预测块,确定指示预测块与当前块之间的差异的残差块,并且通过将残差块添加到预测块来重构当前块。

视频解码器300还表示用于对视频数据的当前块进行译码(即,解码)的设备的示例,该设备包括被配置为存储视频数据的存储器;以及在电路中实现的一个或多个处理器,该一个或多个处理器被配置为:构建用于视频数据的当前块的运动矢量预测器列表,其中,为了构建运动矢量预测器列表,一个或多个处理器被配置为:确定第一组块中的块的运动矢量,第一组块包括与当前块直接邻近的块;确定第二组块中的第一块的第一运动矢量,第二组块包括与当前块分开一个或多个块的块;确定第二组块中的第二块的第二运动矢量;确定第二运动矢量是否与第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的块的运动矢量相同;响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量不同,并且与第一组块的块子集中的任何块的任何运动矢量都不相同,将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量相同或者与第一组块的块子集中的任何块的运动矢量相同,绕过将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;使用当前块的运动矢量对当前块进行帧间预测译码;以及使用运动矢量预测器列表对运动矢量进行译码。

图10是图示根据本公开的技术的对视频数据的当前块进行编码的示例方法的流程图。关于视频编码器200解释了图10的方法,但是应当理解,也可以配置其他视频译码设备来执行图10的方法。

在这个示例中,视频编码器200最初利用运动矢量对视频数据的当前块进行帧间预测(350)。举例来说,视频编码器200可执行运动搜索以确定运动矢量,然后使用运动矢量产生预测块。

视频编码器200可使用本公开的技术(例如,使用运动矢量预测器列表(有时也称为“运动矢量预测器候选列表”))对运动矢量进行编码。根据这些技术,视频编码器200可首先将与当前块直接邻近的第一组块的运动矢量添加到运动矢量预测器列表(352)。然后,视频编码器200可将包括与当前块分开至少一个块的邻近块的第二块组的独特运动矢量插入到运动矢量预测器列表中(354)。同样,视频编码器200可绕过将包括与当前块分开至少一个块的邻近块的第二块组的非独特运动矢量插入到运动矢量预测器列表中(356)。视频编码器200通常可根据运动矢量是否与第一组块的运动矢量的子集和/或第二组块的运动矢量的子集相同或相似(例如,在其阈值差之内)来确定运动矢量是否“独特”。

然后,视频编码器200可使用运动矢量预测器列表对运动矢量进行编码(358)。例如,在合并模式中,视频编码器200可确定索引,该索引识别运动矢量预测器列表中与用于对当前块进行帧间预测的运动矢量匹配的运动矢量预测器。作为另一个示例,在AMVP模式中,视频编码器200可以确定索引,该索引识别运动矢量预测器列表中最接近的运动矢量预测器,以及其他运动信息,例如参考图片列表、参考图片索引和运动矢量差。

视频编码器200可进一步使用预测块形成残差块(360)。举例来说,视频编码器200可计算当前块与预测块之间的逐像素差异,并将这些差异存储在残差块中。此外,视频编码器200可将变换应用于残差块以产生变换系数的块,然后根据量化参数对变换系数进行量化。然后,视频编码器200可对代表残差块的数据(即,量化的变换系数)以及运动信息进行熵编码(362)。

以这种方式,图10的方法表示对视频数据进行编码的方法的示例,该方法包括:构建用于视频数据的当前块的运动矢量预测器列表,其中,构建运动矢量预测器列表包括:确定第一组块中的块的运动矢量,第一组块包括与当前块直接邻近的块;确定第二组块中的第一块的第一运动矢量,第二组块包括与当前块分开一个或多个块的块;确定第二组块中的第二块的第二运动矢量;确定第二运动矢量是否与第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的块的运动矢量相同;响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量不同,并且与第一组块的块子集中的任何块的任何运动矢量都不相同,将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量相同或者与第一组块的块子集中的任何块的运动矢量相同,绕过将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;使用当前块的运动矢量对当前块进行帧间预测编码;以及使用运动矢量预测器列表对运动矢量进行编码。

图11是图示根据本公开的技术的对视频数据的当前块进行解码的示例方法的流程图。关于视频解码器300解释了图11,但是应当理解,也可以配置其他视频译码设备来执行图11的方法。

视频解码器300可对残差块和当前块的运动信息进行熵解码(380)。例如,视频解码器300可以对量化的变换系数进行熵解码,然后对系数进行逆量化和逆变换以再现当前块的残差块。视频解码器300还对运动矢量预测器列表的索引(以及在AMVP模式下的诸如参考图片列表、参考索引和运动矢量差的其他运动信息)进行熵解码。

视频解码器300然后可以使用运动矢量预测器列表和运动信息对运动矢量进行解码。根据本公开的技术,视频解码器300可首先将与当前块直接邻近的第一组块的运动矢量添加到运动矢量预测器列表(382)。然后,视频解码器300可将包括与当前块分开至少一个块的邻近块的第二组块的独特运动矢量插入到运动矢量预测器列表中(384)。同样地,视频解码器300可绕过将包括与当前块分开至少一个块的邻近块的第二组块的非独特运动矢量插入到运动矢量预测器列表中(386)。视频解码器300通常可根据运动矢量是否与第一组块的运动矢量的子集和/或第二组块的运动矢量的子集相同或相似(例如,在其阈值差之内)来确定运动矢量是否“独特”。

然后,视频解码器300可使用运动矢量预测器列表对当前块的运动矢量进行解码(388)。具体来说,视频解码器300可使用解码的索引来确定运动矢量预测器。在合并模式中,视频解码器300可将运动矢量预测器用作当前块的运动矢量。在AMVP模式中,视频解码器300可将运动矢量差添加到运动矢量预测器以获得运动矢量。

然后,视频解码器300可用运动矢量对当前块进行帧间预测(390)以产生预测块。视频解码器然后可在逐像素的基础上将预测块添加到残差块以对当前块进行解码(392)。

以这种方式,图11的方法表示解码视频数据的方法的示例,该方法包括构建用于视频数据的当前块的运动矢量预测器列表,其中构建运动矢量预测器列表包括:确定第一组块中的块的运动矢量,第一组块包括与当前块直接邻近的块;确定第二组块中的第一块的第一运动矢量,第二组块包括与当前块分开一个或多个块的块;确定第二组块中的第二块的第二运动矢量;确定第二运动矢量是否与第二组块中的第一块的第一运动矢量相同或者与来自第一组块的块子集的块的运动矢量相同;响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量不同,并且与第一组块的块子集中的任何块的任何运动矢量都不相同,将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;响应于确定第二运动矢量与第二组块中的第一块的第一运动矢量相同或者与第一组块的块子集中的任何块的运动矢量相同,绕过将第二运动矢量作为运动矢量预测器插入到运动矢量预测器列表中;使用当前块的运动矢量对当前块进行帧间预测解码;以及使用运动矢量预测器列表对运动矢量进行解码。

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

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

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

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

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

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

相关技术
  • 矢量预测器列表生成
  • 一种矢量候选者列表生成方法及装置
技术分类

06120112579069