用于视频译码的空间-时间运动向量预测模式
文献发布时间:2023-06-19 11:55:48
本申请要求享有于2019年12月5日提交的美国申请No.16/704,827的优先权,其要求享有于2018年12月6日提交的美国临时申请No.62/776,373的权益,它们的全部内容通过引用的方式并入本文。
技术领域
本公开内容涉及视频编码和视频解码。
背景技术
数字视频功能可以结合到各种设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(PDA)、膝上型电脑或台式计算机、平板电脑、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏机、蜂窝或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流设备等。数字视频设备实施视频译码技术,诸如由MPEG-2、MPEG-4、ITU-TH.263、ITU-T H.264/MPEG-4,第10部分,高级视频译码(AVC)、高效视频译码(HEVC)标准、ITU-T H.265/高效视频译码(HEVC)以及此类标准的扩展定义的标准中描述的那些技术。通过实施这样的视频译码技术,视频设备可以更有效地发送、接收、编码、解码和/或存储数字视频信息。
视频译码技术包括空间(图片内)预测和/或时间(图片间)预测,以减少或消除视频序列中固有的冗余。对于基于块的视频译码,可以将视频切片(slice)(例如,视频图片或视频图片的一部分)划分为视频块,这些视频块也可以称为译码树单元(CTU)、译码单元(CU)和/或译码节点。图片的帧内编码(I)切片中的视频块是相对于同一图片中相邻块中的参考样本而使用空间预测进行编码的。图片的帧间编码(P或B)切片中的视频块可使用相对于同一图片中相邻块中参考样本的空间预测,或相对于其他参考图片中参考样本的时间预测。可以将图片称为帧,并且可以将参考图片称为参考帧。
发明内容
总体而言,本公开内容描述了用于视频译码中的帧间预测和运动向量预测的技术。更具体而言,本公开内容描述了用于空间-时间运动向量预测的技术,诸如基于运动向量预测符列表的运动向量预测。本公开内容的技术可与诸如H.265/HEVC(高效视频译码)的现有视频编解码器中的任何一种一起使用,或者可以在诸如H.266/VVC(通用视频译码)的任何未来视频译码标准中作为高效译码工具。
如更详细地描述,本公开内容描述了构建包括空间相邻块和时间相邻块的运动向量信息的运动向量预测符列表的示例技术。在一些情况下,图片的译码顺序(例如,从左到右或从右到左)可影响哪些空间相邻块可用于构建运动向量预测符列表。因此,本公开内容描述了视频译码器(例如,视频编码器或视频解码器)可借以基于用于图片的译码顺序来构建运动向量预测符列表的示例技术。此外,对于时间相邻块(也称为共位块),视频译码器可被配置为按特定顺序访问并检查时间相邻块的运动向量信息的可用性。
在一个示例中,本公开内容描述了一种对视频数据进行译码的方法,所述方法包括:针对在具有从左到右译码顺序的第一图片中的第一块,构建第一运动向量预测符列表,其中,第一运动向量预测符列表中的第一条目是基于第一块的左侧相邻块的运动向量信息的;基于第一运动向量预测符列表来对第一图片中的第一块进行译码;针对在具有从右到左译码顺序的第二图片中的第二块,构建第二运动向量预测符列表,其中,第二运动向量预测符列表中的第一条目是基于第二块的右侧相邻块的运动向量信息的;以及基于第二运动向量预测符列表来对第二图片中的第二块进行译码。
在一个示例中,本公开内容描述了一种用于对视频数据进行译码的设备,所述设备包括被配置为存储运动向量信息的存储器和耦合到存储器的处理电路。所述处理电路被配置为:针对在具有从左到右译码顺序的第一图片中的第一块,构建第一运动向量预测符列表,其中,第一运动向量预测符列表中的第一条目是基于在存储器中所存储的、第一块的左侧相邻块的运动向量信息的;基于第一运动向量预测符列表对第一图片中的第一块进行译码;针对在具有从右到左译码顺序的第二图片中的第二块,构建第二运动向量预测符列表,其中,第二运动向量预测符列表中的第一条目是基于在存储器中所存储的、第二块的右侧相邻块的运动向量信息;以及基于第二运动向量预测符列表来对第二图片中的第二块进行译码。
在一个示例中,本公开内容描述了一种其上存储有指令的计算机可读存储介质,所述指令在被执行时使一个或多个处理器:针对在具有从左到右译码顺序的第一图片中的第一块,构建第一运动向量预测符列表,其中,第一运动向量预测符列表中的第一条目是基于第一块的左侧相邻块的运动向量信息的;基于第一运动向量预测符列表来对第一图片中的第一块进行译码;针对在具有从右到左译码顺序的第二图片中的第二块,构建第二运动向量预测符列表,其中,第二运动向量预测符列表中的第一条目是基于第二块的右侧相邻块的运动向量信息的;以及基于第二运动向量预测符列表来对第二图片中的第二块进行译码。
在附图和以下说明中阐述了一个或多个示例的细节。依据说明书和附图以及权利要求书,其他特征、目的和优点将是显而易见的。
附图说明
图1是示出可以执行本公开内容的技术的示例视频编码和解码系统的方框图。
图2是示出可以执行本公开内容的技术的示例视频编码器的方框图。
图3是示出可以执行本公开内容的技术的示例视频解码器的方框图。
图4A是示出用于合并模式的空间相邻候选的概念图。
图4B是示出用于高级运动向量预测(AMVP)模式的空间相邻候选的概念图。
图5A是示出时间运动向量预测符(TMVP)候选的概念图。
图5B是示出用于TMVP的运动向量缩放的概念图。
图6是示出获取非邻近空间合并候选的概念图。
图7A是示出在运动向量预测中使用的示例空间候选和时间候选的概念图。
图7B是示出空间候选的示例访问顺序的概念图。
图7C是示出空间候选的另一示例访问顺序的概念图。
图8A是示出根据本公开内容的一个示例的示例空间时间运动向量预测符模式的概念图。
图8B是示出根据本公开内容的一个示例的示例经反转空间时间运动向量预测符模式的概念图。
图8C是示出根据本公开内容的一个示例的另一示例经反转空间时间运动向量预测符模式的概念图。
图9是示出示例译码方法的流程图。
具体实施方式
在一些示例中,视频译码(例如,视频编码或视频解码)可包括帧间预测和/或帧内块复制(IBC)技术。在帧间预测或IBC两者中,视频编码器基于当前块的运动向量(对于IBC,运动向量可以是块向量)确定预测块,确定预测块与当前块之间的残差信息(例如,差),并且用信号发送残差信息。视频解码器接收残差信息。另外,视频解码器确定当前块的运动向量,并且基于运动向量来确定预测块。视频解码器将残差信息与预测块相加以重构当前块。
视频解码器确定当前块的运动向量的一种方式是基于运动向量预测符(predictor)列表。视频编码器和视频解码器都利用类似的过程来构建各自的运动向量预测符列表,使得由视频编码器构建的运动向量预测符列表与由视频解码器构建的运动向量预测符列表是相同的。运动向量预测符列表包括先前经译码块(诸如空间相邻块(例如,在与当前块相同的图片中与当前块相邻的块)和共位块(例如,位于其他图片中的特定位置处的块))的运动向量信息。在一些示例中,运动向量预测符列表可包括人工生成的运动向量信息(例如,并非来自先前经译码块的运动向量信息)。
视频编码器确定运动向量预测符列表中的条目,并且用信号发送指示所述条目的信息。视频解码器基于所述条目根据运动向量预测符列表确定运动向量信息,并基于所确定的运动向量信息来确定当前块的运动向量。作为一个示例,视频解码器可将当前块的运动向量设定为等于所确定的运动向量信息(例如,诸如在合并模式中)。作为另一示例,视频解码器可将由视频编码器用信号发送的运动向量差(MVD)添加到所确定的运动向量信息以确定当前块的运动向量(例如,诸如在高级运动向量预测(AMVP)模式中)。
如上所述,运动向量预测符列表可以包括空间相邻块的运动向量信息。在一些示例中,为了使空间相邻块的运动向量信息可用,预先译码(例如,编码或解码)了空间相邻块。如果相邻块尚未被译码,则视频编码器和视频解码器可能尚未确定且可能尚未具有用于确定该尚未被译码的相邻块的运动向量信息的必要信息。因此,在一些示例中,可为了运动向量信息而进行检查的仅有空间相邻块是先前经译码块。
然而,哪些块是先前经译码块可基于图片的译码顺序。例如,视频译码器(例如,视频编码器或视频解码器)可从左到右和从上到下来对第一图片进行译码。从左到右和从上到下对第一图片进行译码可以表示:视频译码器从第一图片中的左上块开始在第一图片内逐块地进行译码且在向右的方向上对块进行译码,直到视频译码器到达第一图片的右边界为止。接着,视频译码器返回到第一图片中的左上块下方的块,且逐块地进行译码,直到视频译码器到达第一图片的右边界为止。视频译码器重复这些操作,直到视频译码器对第一图片的右下块进行译码为止。
译码顺序不需要必然是从左到右和从上到下的。视频译码器可从右到左和从上到下来对第二图片进行译码。从右到左和从上到下对第二图片进行译码可以表示:视频译码器从第二图片中的右上块开始在第二图片内逐块地进行译码,且在向左的方向上对块进行译码,直到视频译码器到达第二图片的左边界为止。接着,视频译码器返回到第二图片中的右上块下方的块,且逐块地进行译码,直到视频译码器到达第二图片的左边界为止。视频译码器重复这些操作,直到视频译码器对第二图片的左下块进行译码为止。
由于第一和第二图片的不同译码顺序,与第二图片中的块相比,针对第一图片中的块可能存在不同的先前被译码的空间相邻块。作为示例,对于在具有从左到右译码顺序的第一图片中的第一块,在对第一块进行译码之前可能已经译码了第一块的左侧相邻块,因此,左侧相邻块的运动向量信息可以是可用的(例如,先前已确定)。此外,对于第一块,第一块的右侧相邻块可能尚未译码,因此,右侧相邻块的运动向量信息可能不可用(例如,尚未确定)。
对于在具有从右到左的译码顺序的第二图片中的第二块,可以是与第一图片中的第一块的相反的情况。例如,对于在具有从右到左译码顺序的第二图片中的第二块,第二块的左侧相邻块可能尚未译码,因此,左侧相邻块的运动向量信息可能不可用(例如,尚未确定)。此外,对于第二块,在对第二块进行译码之前可能已经译码了第二块的右侧相邻块,因此,右侧相邻块的运动向量信息可以是可用的(例如,先前已确定)。
因为已经译码了哪些空间相邻块可以是基于图片的译码顺序的,所以用于构建具有从左到右译码顺序的第一图片中的第一块的运动向量预测符列表的技术与用于构建具有从右到左译码顺序的第二图片中的第二块的运动向量预测符列表的技术可以不同。在本公开内容中所描述的一个或多个示例中,其运动向量信息形成第一块的运动向量预测符列表的空间相邻块集合的位置,可以相对于其运动向量信息形成第二块的运动向量预测符列表的空间相邻块集合的位置反转。
例如,针对在具有从左到右译码顺序的第一图片中的第一块,视频译码器可构建第一运动向量预测符列表,使得第一运动向量预测符列表中的第一条目是基于第一块的左侧相邻块的运动向量信息的。针对在具有从右到左译码顺序的第二图片中的第二块,视频译码器可构建第二运动向量预测符列表,使得第二运动向量预测符列表中的第一条目是基于第二块的右侧相邻块的运动向量信息的。相对于第一块的左侧相邻块和相对于第二块的右侧相邻块可以被认为是相对于彼此反转的(例如,左侧相邻块在左侧,而右侧相邻块在右侧)。
在一些示例中,视频译码器可构建第一运动向量预测符列表,使得第一运动向量预测符列表具有按以下顺序的运动向量信息:左侧相邻块的运动向量信息、上方相邻块的运动向量信息、右上方相邻块的运动向量信息、左下方相邻块的运动向量信息和左上方相邻块的运动向量信息。视频译码器可构建第二运动向量预测符列表,使得第二运动向量预测符列表具有按以下顺序的运动向量信息:右侧相邻块的运动向量信息、上方相邻块的运动向量信息、左上方相邻块的运动向量信息、右下方相邻块的运动向量信息和右上方相邻块的运动向量信息。
在上述示例中,第一和第二运动向量预测符列表具有特定的顺序,其中空间相邻块的运动向量信息被排列在运动向量预测符列表中。尽管存在运动向量信息的特定排列顺序,但视频译码器可被配置为并行地访问来自空间相邻块的运动向量信息。这可允许视频译码器以一个存储器调用(例如,以批次请求)而非需要多个存储器调用来访问运动向量信息。视频译码器可接着根据特定顺序(例如,上文所描述的示例顺序)来排列运动向量信息。
在一些技术中,特定空间相邻块的运动向量信息是否被包括在运动向量预测符列表中是基于另一块的运动向量信息的可用性的。即,是否将特定空间相邻块添加到运动向量预测符列表中是有条件的(例如,以另一块的运动向量信息的可用性为条件)。由于存在针对是否包括空间相邻块的运动向量信息的条件,所以视频译码器可能需要首先访问该另一块的运动向量信息以判断是否满足条件,且接着基于是否满足条件来发送对空间相邻块的运动向量信息的另一请求。此类技术会导致多个存储器调用,这会增加对块进行译码所花费的时间量。
在本公开内容中描述的一个或多个示例中,是否将特定空间相邻块的运动向量信息包括在运动向量预测符列表中并不以另一块的运动向量信息是否可用为条件。以此方式,视频译码器能够以对存储器的批次请求而非多个请求来访问空间相邻块的运动向量信息,这会减少对块进行译码所花费的时间量且改进视频译码器的操作。
如上文所描述的,除了空间相邻块的运动向量信息之外,视频译码器还可以包括一个或多个共位块(也称为时间相邻块)的运动向量信息。该一个或多个共位块是在与包括正被译码的块的图片不同的另一图片(称为参考图片)中的块。共位块的一个示例是位于参考图片中与当前图片中正被译码的当前块的位置重叠的位置处的块。即,当前块可以界定当前图片内的一个区域,在相同区域内但在参考图片内的块是共位块的示例。共位块的这个示例可以被称为中心共位块。
共位块的另一示例是位于当前块下方但在参考图片中(例如,在由当前图片中的当前块界定的区域下方但在参考图片中)的块。共位块的这个示例可以被称为下方共位块。共位块的另一示例是位于当前块的右侧但在参考图片中的块(例如,在由当前图片中的当前块界定的区域的右侧,但在参考图片中)。共位块的这个示例可以被称为右侧共位块。共位块的另一示例是位于当前块的左侧但在参考图片中的块(例如,在由当前图片中的当前块界定的区域的左侧,但在参考图片中)。共位块的这个示例可以被称为左侧共位块。
在一个或多个示例中,视频译码器可确定中心共位块的运动向量信息是否可用。如果中心共位块的运动向量可用,则视频译码器可将该运动向量信息添加到运动向量预测符列表,且不检查任何其他共位块。如果中心共位块的运动向量不可用,则视频译码器可确定下方共位块的运动向量信息是否可用。如果用于下方共位块的运动向量可用,则视频译码器可将该运动向量信息添加到运动向量预测符列表,且不检查任何其他共位块。
如果下方共位块的运动向量不可用,则视频译码器可基于图片译码顺序来确定右侧共位块或左侧共位块中的一个的运动向量信息是否可用。作为一个示例,如果译码顺序是从左到右,则视频译码器可确定右侧共位块的运动向量信息是否可用。如果译码顺序是从右到左,则视频译码器可确定左侧共位块的运动向量信息是否可用。在其他示例中,视频译码器可执行逆操作(例如,针对从左到右译码顺序的左侧共位块的运动向量信息和针对从右到左译码顺序的右侧共位块的运动向量信息)。如果在适当情况下右侧共位块或左侧共位块的运动向量可用,则视频译码器可将该运动向量信息添加到运动向量预测符列表,且不检查任何其他共位块。
可以存在共位块的另外示例。例如,共位块可以是右下块,其位于当前块的右下方(例如,在对角右下方向上)但在参考图片中(例如,由当前图片中的当前块界定的区域的右下方,但在参考图片中)。共位块的另一示例可以是左下块,其位于当前块的左下方(例如,在对角左下方向上),但在参考图片中(例如,由当前图片中的当前块界定的区域的左下方,但在参考图片中)。视频译码器针对运动向量信息是检查右下方共位块还是左下方共位块可以是基于图片译码顺序的(例如,针对从左到右译码顺序检查右下方共位块,针对从右到左译码顺序检查左下方共位块,或反之亦然)。
此外,视频译码器可将运动向量信息添加到运动向量预测符列表,直到运动向量预测符列表满为止(例如,直到运动向量预测符列表中的条目数量等于运动向量预测符列表的最大大小为止)。在一些示例中,运动向量预测符列表的大小可基于块的大小。例如,如果块所具有的大小大于阈值大小,则运动向量预测符列表的最大大小可以是M(例如,运动向量预测符列表中可存在最多M个条目)。如果块所具有的大小小于阈值大小,则运动向量预测符列表的最大大小可以是X(例如,在运动向量预测符列表中可存在最多X个条目)。X可以小于M。
作为示例,如果块具有的大小大于Nx4或4xN,则运动向量预测符列表的最大大小可以是六(例如,M=6)。如果块具有的大小小于Nx4或4xN,则运动向量预测符列表的最大大小可以是四(例如,X=4)。在阈值大小为Nx4或4xN的情况下,N可小于或等于八。
图1是示出可执行本公开内容的技术的示例性视频编码和解码系统100的方框图。本公开内容的技术总体上针对对视频数据进行译码(编码和/或解码)。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未译码的视频、编码的视频、解码的(例如,重构的)视频以及视频元数据(诸如信令数据)。
如图1所示,在该示例中,系统100包括源设备102,该源设备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。本公开内容将“译码(coding)”设备称为执行对数据的译码(编码和/或解码)的设备。因此,视频编码器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 Advanced、5G等的蜂窝通信标准来传递诸如经编码视频数据的数据。在输出接口108包括无线发射机的一些示例中,输出接口108和输入接口122可以配置为根据其他无线标准(例如IEEE 802.11规范、IEEE 802.15规范(例如ZigBeeTM)、蓝牙TM标准等)来传递诸如经编码视频数据的数据。在一些示例中,源设备102和/或目的地设备116可以包括各自的片上系统(SoC)设备。例如,源设备102可以包括SoC设备以执行归属于视频编码器200和/或输出接口108的功能,并且目的地设备116可以包括SoC设备以执行归属于视频解码器300和/或输入接口122的功能。
本公开内容的技术可以应用于支持各种多媒体应用中的任何一种的视频译码,诸如空中电视广播、有线电视传输、卫星电视传输、互联网流视频传输(诸如通过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的设备可以包括集成电路、微处理器和/或无线通信设备,诸如蜂窝电话。
视频译码标准包括ITU-TH.261、ISO/IEC MPEG-1Visual、ITU-TH.262或ISO/IECMPEG-2Visual、ITU-T H.263、ISO/IEC MPEG-4Visual和ITU-T H.264(也称为ISO/IECMPEG-4AVC),包括其可缩放视频译码(SVC)和多视图视频译码(MVC)扩展。
此外,已经由ITU-T视频译码专家组(VCEG)和ISO/IEC运动图像专家组(MPEG)的视频译码联合协作小组(JCT-VC)以及3D视频译码扩展开发联合协作小组(JCT-3V)开发了视频译码标准,名为高效视频译码(HEVC)或ITU-T H.265(如在G.J.Sullivan,J.-R.Ohm,W.-J.Han,T.Wiegand的“Overview of the High Efficiency Video Coding(HEVC)Standard”中描述的,IEEE Transactions on Circuits and Systems for Video Technology,vol.22,no.12,第1649-1668页,2012年12月),包括其范围扩展、多视图扩展(MV-HEVC)和可缩放扩展(SHVC)。可从http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip获得HEVC草案规范(下文中称为HEVC WD)。可以在http://phenix.it-sudparis.eu/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip中找到HEVC的国际标准最终草案(FDIS)的最新版本。
ITU-T VCEG(Q6/16)和ISO/IEC MPEG(JTC1/SC29/WG11)现在正在研究对压缩能力大大超过当前HEVC标准(包括其当前扩展和用于屏幕内容译码和高动态范围译码的近期扩展)的未来视频译码技术的标准化的潜在需求。这些小组以被称为联合视频探索小组(JVET)的联合协作努力共同从事这种探索活动,以评估由他们在这个领域的专家提出的压缩技术设计。JVET首次在2015年10月19-21日成立。可以从https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.2/下载参考软件的版本,即联合探索测试模型7(JEM7)。J.Chen,E.Alshina,G.J.Sullivan,J.-R.Ohm,J.Boyce的“Algorithm Description of Joint Exploration Test Model 7”(JVET-G1001,2017年7月)中描述了联合探索测试模型7(JEM-7)的算法描述。在Bross等人的“Versatile Video Coding(Draft 6)”(ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频专家组(JVET),第15次会议:Gothenburg,SE,2019年7月3–12日,JVET-O2001-vE)中描述了VVC标准的最新草案(下文称为“VVC草案6”)。然而,本公开内容的技术不限于任何特定译码标准。
视频编码器200和视频解码器300可以根据诸如ITU-T H.265(也称为高效视频译码(HEVC))或其扩展(诸如多视图扩展和/或可伸缩视频译码扩展)的视频译码标准进行操作。可替换地,视频编码器200和视频解码器300可以根据其他私有或工业标准进行操作,诸如联合探索测试模型(JEM)和/或VVC。视频译码标准的另一实例是关键视频译码(EVC)标准。然而,本公开内容的技术不限于任何特定译码标准。
通常,视频编码器200和视频解码器300可以执行对图片的基于块的译码。术语“块”通常是指包括要处理(例如,在编码和/或解码过程中的编码、解码或以其他方式使用的)的数据的结构。例如,块可以包括亮度和/或色度数据的样本的二维矩阵。通常,视频编码器200和视频解码器300可以对以YUV(例如,Y、Cb、Cr)格式表示的视频数据进行译码。即,不是对图片的样本的红色、绿色和蓝色(RGB)数据进行译码,而是视频编码器200和视频解码器300可以对亮度分量和色度分量进行译码,其中色度分量可以包括红色调色度分量和蓝色调色度分量。在一些示例中,视频编码器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可以被配置为根据JEM和/或VVC的示例进行操作。根据JEM/VVC的实例,视频译码器(诸如视频编码器200)将图片划分成多个译码树单元(CTU)。视频编码器200可根据树结构(诸如四叉树-二叉树(QTBT)结构)来划分CTU。JEM/VVC的示例的QTBT结构消除了多种划分类型的概念,诸如HEVC的CU、PU和TU之间的分隔。JEM/VVC的示例的QTBT结构包括两个级别:根据四叉树划分而划分的第一级,以及根据二叉树划分而划分的第二级。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可包括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或VVC还提供了仿射运动补偿模式,可以将其视为帧间预测模式。在仿射运动补偿模式中,视频编码器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还可以例如在图片报头、块报头、切片报头中,向视频解码器300生成语法数据,诸如基于块的语法数据、基于图片的语法数据和基于序列的语法数据,或其他语法数据,诸如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS)。视频解码器300可类似地解码此类语法数据以确定如何解码对应的视频数据。
以此方式,视频编码器200可以生成包括经编码视频数据(例如,描述从图片到块(例如,CU)的划分的语法元素以及块的预测和/或残差信息)的位流。最终,视频解码器300可以接收位流并对经编码视频数据进行解码。
通常,视频解码器300执行与视频编码器200所执行的过程互逆的过程,以对位流的经编码视频数据进行解码。例如,视频解码器300可使用CABAC以与视频编码器200的CABAC编码过程虽然互逆但基本相似的方式来对位流的语法元素的值进行解码。语法元素可定义:从图片到CTU的划分信息,以及根据相应的划分结构(诸如QTBT结构)的每个CTU的划分,以定义CTU的CU。语法元素可进一步定义视频数据的块(例如,CU)的预测和残差信息。
残差信息可以由例如经量化的变换系数表示。视频解码器300可对块的经量化的变换系数进行逆量化和逆变换,以再现该块的残差块。视频解码器300使用以信号通知的预测模式(帧内或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成用于该块的预测块。视频解码器300然后可以组合预测块和残差块(在逐样本的基础上)以再现原始块。视频解码器300可执行附加处理,诸如执行去块处理以减少沿块边界的视觉伪像。
根据本公开内容的技术,视频编码器200和视频解码器300可被配置为构建运动向量预测符列表。如上文所描述,对于合并模式和AMVP模式,视频解码器300可基于运动向量预测符列表中的运动向量信息确定正被解码的当前块的运动向量。例如,视频编码器200可以用信号发送指示指向运动向量预测符列表中的索引的信息,且视频解码器300可基于该索引来检索存储在运动向量预测符列表中的运动向量信息。对于合并模式,视频解码器300可将当前块的运动向量设定为等于检索到的运动向量信息。对于AMVP模式,视频解码器300可进一步接收指示当前块的运动向量与检索的运动向量信息之间的运动向量差(MVD)的信息。在该示例中,视频解码器300可将MVD与所检索的运动向量信息相加,以确定当前块的运动向量。
在合并和AMVP模式中,视频编码器200和视频解码器300可被配置为类似方式构建运动向量预测符列表,使得由视频编码器200构建的运动向量预测符列表与由视频解码器300构建的运动向量预测符列表基本上相同。为了构建运动向量预测符列表,视频编码器200和视频解码器300可检索空间相邻块和时间相邻块(也称为共位块)的运动向量信息。空间相邻块是指位于包括正被编码或解码的当前块的当前图片中的块。共位块指代位于不同于当前图片的参考图片中的块。
然而,视频编码器200和视频解码器300检查哪些空间相邻块的运动向量信息可以是基于正被编码或解码的当前块所位于的当前图片的译码顺序的。如下文更详细地描述,在当前图片具有从左到右译码顺序的示例中,被检查的空间相邻块的示例在图8A中示出且标识为块0 802、块1 804、块2 806、块3 808和块4 810。在当前图片具有从右到左译码顺序的示例中,被检查的空间相邻块的示例在图8B中示出且标识为块0 818、块1 820、块2 822、块3 824和块4 826。以此方式,视频编码器200和视频解码器300可被配置为基于图片的译码顺序而检查不同空间相邻块。
除了空间相邻块之外,视频编码器200和视频解码器300还可以包括共位块的运动向量信息。在一些示例中,对于当前图片的从左到右译码顺序,视频编码器200和视频解码器300可以确定图8A的中心共位块5 812的运动向量信息是否可用,如果可用,则将中心共位块5 812的运动向量信息包括在运动向量预测符列表中且不检查或包括任何其他共位块的运动向量信息。
如果中心共位块5 812的运动向量信息不可用,则视频编码器200和视频解码器300可确定图8A的下方共位块6 814的运动向量信息是否可用,如果可用,则将下方共位块6814的运动向量信息包括在运动向量预测符列表中且不检查或包括任何其他共位块的运动向量信息。如所示的,下方共位块6 814可以是在当前块800的底部且最靠近其右侧的块(例如,块6 814在图8A的当前块800下方且块6 814的右边界与图8A的当前块800的右边界相同)。即,下方共位块的右边界在与包括当前块800的图片不同的图片中与当前块800的右边界位于相同位置。块6 814的坐标可以是(xColBot,yColBot),其中xColBot=xCb+cbWidth-1,并且yColBot=yCb+cbHeight,其中(xCb,yCb)是图8A的当前块800的坐标,cbWidth是图8A的当前块800的宽度,并且cbHeight是图8A的当前块800的高度。
如果下方共位块6 814的运动向量信息不可用,则视频编码器200和视频解码器300可确定图8A的右侧共位块7 816的运动向量信息是否可用,如果可用,则将右侧共位块7816的运动向量信息包括在运动向量预测符列表中且不检查或包括任何其他共位块的运动向量信息。如所示的,右侧共位块7 816可以是在图8A的当前块800的右侧且最靠近其底部的块(例如,块7 816在图8A的当前块800的右侧且块7 816的底部边界与图8A的当前块800的底部边界相同)。块7 816的坐标可以是(xColBr,yColBr),其中xColBr=xCb+cbWidth,且yColBr=yCb+cbHeight-1,其中(xCb,yCb)是图8A的当前块800的坐标,cbWidth是图8A的当前块800的宽度,且cbHeight是图8A的当前块800的高度。
在一些示例中,对于当前图片的从右到左译码顺序,视频编码器200和视频解码器300可确定图8B的中心共位块5 828的运动向量信息是否可用,如果可用,则将中心共位块5828的运动向量信息包括在运动向量预测符列表中且不检查或包括任何其他共位块的运动向量信息。
如果中心共位块5 828的运动向量信息不可用,则视频编码器200和视频解码器300可确定图8B的下方共位块6 830的运动向量信息是否可用,如果可用,则将下方共位块6830的运动向量信息包括在运动向量预测符列表中且不检查或包括任何其他共位块的运动向量信息。如所示的,下方共位块6 830可以是在当前块800的底部且最靠近其左侧的块(例如,块6 830在图8B的当前块800下方,且块6 830的左边界与图8B的当前块800的左边界相同)。即,下方共位块的左边界在与包括当前块800的图片不同的图片中与当前块800的左边界位于相同位置。块6 830的坐标可以是(xColBot,yColBot),其中xColBot=xCb,并且yColBot=yCb+cbHeight,其中(xCb,yCb)是图8B的当前块800的坐标,cbWidth是图8B的当前块800的宽度,并且cbHeight是图8B的当前块800的高度。
如果下方共位块6 830的运动向量信息不可用,则视频编码器200和视频解码器300可确定图8B的左侧共位块7 832的运动向量信息是否可用,如果可用,则将左侧共位块7832的运动向量信息包括在运动向量预测符列表中且不检查或包括任何其他共位块的运动向量信息。如所示的,左侧共位块7 832可以是在图8B的当前块800的左侧且最靠近其底部的块(例如,块7 832在图8B的当前块800的左侧,且块7 832的底部边界与图8B的当前块800的底部边界相同)。块7 832的坐标可以是(xColBr,yColBr),其中xColBr=xCb-1,并且yColBr=yCb+cbHeight-1,其中(xCb,yCb)是图8B的当前块800的坐标,cbWidth是图8B的当前块800的宽度,并且cbHeight是图8B的当前块800的高度。
在一些示例中,图8A的块814、816和图8B的块830、832的共位位置可以用粒度8×8块来定义。例如,如果当前CU(例如,图8A或8B的当前块800)为64×64,则在底部、左侧或右侧可存在多个8×8块可用。在一些示例中,仅有角部的8×8块(例如,块814、816、830、832)可以用于提供运动向量。
此外,在一些示例中,运动向量预测符列表的大小可基于当前块的大小。作为一个示例,如果当前块的大小大于阈值,则运动向量预测符列表的条目的最大数量可大于当前块的大小小于阈值的情况。例如,如果当前块的大小大于Nx4或4xN,其中N小于或等于8,则运动向量预测符列表的最大大小可以是六。如果当前块的大小小于Nx4或4xN,其中N小于或等于8,则运动向量预测符列表的最大大小可以是四。上述值仅仅是帮助理解的一个示例,而不应被认为是限制性的。
本公开内容通常可以提及“用信号发送(signaling)”某些信息,诸如语法元素。术语“用信号发送”通常可以指代对语法元素和/或用于对经编码视频数据进行解码的其他数据的值的通信。即,视频编码器200可以用信号发送位流中的语法元素的值。通常,用信号发送是指在位流中生成值。如上所述,源设备102可以基本上实时地或非实时地(诸如在将语法元素存储到存储设备112以供稍后由目的地设备116检索时可能发生)将位流传输到目的地设备116。
参考图2和3更详细地示出和描述视频编码器200和视频解码器300的示例。在描述图2和3之前,下文参考图4A、4B、5A、5B和6描述视频译码过程的一些额外细节,诸如运动向量预测。
如更详细地描述,图7A-7C示出了视频编码器200和视频解码器300为了构建运动向量预测符列表而进行评估的空间相邻块和时间相邻块的一些示例。使用图7A-7C中所示的技术来构建运动向量预测符列表可能存在某些问题。如更详细地描述,图8A-8C示出了可解决针对图7A-7C描述的构建运动向量预测符列表的问题的构建运动向量预测符列表的一些额外示例。
以下回顾HEVC中的CU结构和运动向量预测。在HEVC中,切片中的最大译码单元被称为译码树块(CTB)或译码树单元(CTU)。CTB包含四叉树,其节点是译码单元。
在HEVC主简档(main profile)中,CTB的大小可以在16×16至64×64的范围内(尽管在技术上可以支持8×8CTB大小)。译码单元(CU)可以是与CTB相同的大小,小至8×8。每个译码单元用一种模式译码,诸如帧间译码或帧内译码。帧间译码还可被称为帧间预测译码或帧间预测。帧内译码还可被称为帧内预测译码或帧内预测。
当对CU进行帧间译码时,CU可进一步划分成2或4个预测单元(PU),或当不应用进一步划分时可以是一个PU。当一个CU中存在两个PU时,这些PU可以是该CU的一半大小的矩形或具有CU的1/4或3/4大小的两个矩形大小。当对CU进行帧间译码时,每个PU具有一个运动信息集合,其是用帧间预测模式导出的。
以下回顾运动向量预测。在HEVC标准中,对于预测单元(PU)存在两种帧间预测模式,其分别被称为合并(merge)(跳过(skip)被视为合并的特殊情况)和高级运动向量预测(AMVP)模式。在AMVP模式或合并模式中的任一者中,维持针对多个运动向量预测符的一个运动向量(MV)预测符列表(也称为MV候选列表)。运动向量预测符列表可被称为运动向量预测符列表。通过从运动向量预测符列表中取出一个候选来生成当前PU的运动向量以及合并模式中的参考索引。运动向量预测符列表可含有用于合并模式的多达5个候选和用于AMVP模式的仅两个候选。合并候选可含有运动信息集合,例如,对应于参考图片列表(列表0和列表1)和参考索引两者的运动向量。如果合并候选由合并索引标识,则确定用于当前块的预测的参考图片以及相关联的运动向量。即,将由合并索引在运动向量预测符列表中标识的运动向量和参考图片设置为等于当前块的运动向量和参考图片。
另一方面,在AMVP模式下,对于来自列表0或列表1的每个潜在预测方向,需要明确地用信号发送参考索引以及指向运动向量预测符列表中的MV预测符(MVP)索引,因为AMVP候选仅含有运动向量。在AMVP模式中,可进一步细化经预测的运动向量(例如,基于上文描述的运动向量差(MVD))。从相同的空间和时间相邻块类似地导出用于两种模式的候选。
以下回顾其运动向量信息形成为运动向量预测符(也称为运动向量预测符候选)的空间相邻块。在一些示例中,从图4A和4B中所示的相邻块分别针对特定PU(PU
在合并模式中,在一些示例中,可以以图4A中所示的顺序导出多达五个空间MV候选,该顺序如下:如图4A所示,左(0,A1)、上(1,B1)、右上(2,B0)、左下(3,A0)和左上(4,B2)。例如,对于PU0 434,块A1被标识为0且在PU0 434的左侧,块B1被标识为1且在PU0 434的上方,块B0被标识为2且在PU0 434的右上方且在PU1 436上方,块A0被标识为3且在PU0 434的左下方,块B2被标识为4且在PU0 434的左上方。
在AMVP模式中,在一些示例中,将相邻块分成两组:左侧组包括分别在PU0 438的左下方和左侧的块0和1,以及上方组包括在PU0 438的右上方、上方和左上方的块2、3和4,如图4B中所示。块2在PU1 440上方。对于每一组,参考与由用信号发送的参考索引指示的参考图片相同的参考图片的相邻块中的潜在候选,具有将被选择以形成该组的最终候选的最高优先级。所有相邻块可以不包含指向相同参考图片的运动向量。因此,如果不能找到这样的候选,则可以缩放第一可用候选以形成最终候选,并且因此可以补偿时间距离差。
下面利用图5A和5B回顾时间运动向量预测。图5A是示出时间运动向量预测符(TMVP)候选的概念图。图5B是示出用于TMVP的运动向量缩放的概念图。
在一些示例中,如果TMVP候选被启用且可用,则将其添加到MV候选列表(例如,运动向量预测符列表)中在空间运动向量候选(例如,空间相邻块的运动向量信息)之后。TMVP候选的运动向量导出过程对于合并模式和AMVP模式两者是相同的,然而,在合并模式中对于TMVP候选将目标参考索引设定为0。
在一些示例中,用于TMVP候选导出的主要块位置是如图5A中示出为块T 540的位于共位PU外部的右下块。块T 540的位置可以补偿对用于生成空间相邻候选的左上块的偏移。然而,如果块T540位于当前CTB行之外,或运动信息不可用于块T 540,则用PU的中央块541代替块T 540。
在图5B中,从在切片级中指示的共位图片546的共位PU,导出当前图片550中的TMVP候选的运动向量548。用于共位PU的运动向量(MV)被称为共位MV 542。为了导出TMVP候选运动向量,可缩放共位MV 542以补偿时间距离差,如图5B中所示。例如,共位图片546和共位参考图片544之间的时间差以及当前图片550和当前参考图片552之间的时间差被用于缩放共位MV 542以生成运动向量548。
以下回顾HEVC中的运动预测的一些其他方面。以下描述合并模式和AMVP模式的若干方面。
运动向量缩放:运动向量的值可以与图片在呈现时间中的距离成比例。运动向量将两个图片,即参考图片和包含运动向量的图片(即包含图片)相关联。当利用运动向量来预测另一运动向量时,基于图片顺序计数(POC)值来计算包含图片与参考图片的距离。
对于要预测的运动向量,其相关联的包含图片和参考图片可以是不同的。因此,计算新的距离(基于POC),并基于这两个POC距离来缩放运动向量。对于空间相邻候选,用于两个运动向量的包含图片是相同的,而参考图片是不同的。在HEVC中,运动向量缩放应用于空间和时间相邻候选的TMVP和AMVP两者。
人工运动向量候选生成:如果运动向量预测符列表不完整(例如,候选少于预定数量),则生成人工运动向量候选,并将其插入在运动向量预测符列表的末尾,直到运动向量预测符列表具有所有候选为止。在合并模式中,存在两种类型的人工MV候选:仅针对B切片导出的组合候选,以及在仅针对B切片导出的组合候选未提供足够的人工候选来填充运动向量预测符列表的情况下的仅针对AMVP使用的零候选。
对于已经在运动向量预测符列表中并且具有必要运动信息的每对候选,通过参考列表0中图片的第一候选的运动向量与参考列表1中图片的第二候选的运动向量的组合,导出双向组合运动向量候选。
候选插入的修剪过程:来自不同块的候选可能碰巧相同,这降低le合并/AMVP运动向量预测符列表的效率。应用修剪过程来解决这个问题。修剪过程将一个候选与当前运动向量预测符列表中的其他候选进行比较以避免插入相同的候选。为了降低复杂性,仅应用有限数量的修剪过程以避免将每个潜在候选与列表中的所有其他现有候选进行比较。
VVC的发展包括增强的运动向量预测。例如,已经提出了几种帧间译码工具,其导出或细化运动向量预测的运动向量预测符列表或合并当前块的预测。下面描述几个示例。
下面描述基于历史的运动预测(HMVP),如在L.Zhang,K.Zhang,H.Liu,Y.Wang,P.Zhao和D.Hong的“CE4-related:History-based Motion Vector Prediction”(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可被配置为将相关联的运动信息作为新HMVP候选以先进先出(FIFO)方式插入到表中。接着,视频编码器200和视频解码器300可被配置为应用约束FIFO规则。在一些技术中,当将HMVP候选插入到表时,视频编码器200和视频解码器300可被配置为首先应用冗余校验(例如,修剪)以确定表中是否存在相同HMVP候选。如果找到,则视频编码器200和视频解码器300可被配置为从表中移除该特定HMVP候选,且移动该候选之后的所有HMVP候选。
视频编码器200和视频解码器300可被配置为,在合并候选列表构建过程中使用HMVP候选。例如,视频编码器200和视频解码器300可被配置为,从表中的最后条目到第一条目将所有HMVP候选插入到TMVP候选之后。视频编码器200和视频解码器300可被配置为对HMVP候选应用修剪。一旦可用的合并候选的总数达到用信号发送的或预定的最大允许合并候选数量,视频编码器200和视频解码器300可被配置为终止合并候选列表构建过程。合并候选列表构建是构建运动向量预测符列表的一个示例。
类似地,视频编码器200和视频解码器300可被配置为,在AMVP候选列表构建过程中使用HMVP候选,来构建AMVP候选列表。视频编码器200和视频解码器300可被配置为,将最后K个HMVP候选的运动向量在表中插入在TMVP候选之后。视频编码器200和视频解码器300可被配置为,仅使用具有与AMVP目标参考图片相同的参考图片的HMVP候选来构建AMVP候选列表。视频编码器200和视频解码器300可被配置为对HMVP候选应用修剪。AMVP候选列表构建是构建运动向量预测符列表的另一示例。
以下描述非邻接空间合并候选。非邻接空间合并候选的构建,如在R.Yu等人的“CE4-2.1:Adding non-adjacent spatial merge candidates”(Joint Video Experts Team(JVET)of ITU-T SG 16WP 3and ISO/IEC JTC 1/SC 29/WG 11,第11次会议:Ljubljana,SI,2018年7月10-18日(下文中称为“JVET-K0228”)中所描述的,涉及从两个不邻接的相邻位置导出新的空间候选。例如,如图6中所示,视频编码器200和视频解码器300可从当前块648上方的最接近非邻接块650和/或从当前块648左侧的最接近非邻接块652导出新的空间候选。例如,图6示出了具有相邻块A0、A1、B2、B1和B0的当前块648。在一些示例中,非邻接空间合并候选包括图6的不与当前块648空间相邻的块HN 652和块VN 650的运动信息。即,图6示出了其运动向量信息可用于构建HMVP候选历史表的块的示例。
块650和652被限制在到当前块648的1个CTU的最大距离内。非邻接候选的提取过程开始于在垂直方向上追溯先前经解码块。当遇到帧间译码块或者所追溯的距离达到1个CTU大小时,垂直逆向追溯停止。
然后,提取过程在水平方向上追溯先前经解码块。用于停止水平提取过程的标准取决于是否有垂直非邻接候选被成功提取。如果没有垂直非邻接候选被提取,当遇到经帧间译码块或所追溯的距离超过一个CTU大小的阈值时,水平提取过程停止。如果存在被提取的垂直非邻接候选,则当遇到含有与垂直非邻接候选不同的MV的经帧间译码块或所追溯的距离超过一个CTU大小的阈值时,水平提取过程停止。将所提取的非邻接相邻候选在合并候选列表中添加在TMVP候选之前。
如上文所描述,对于合并模式和AMVP模式,视频编码器200和视频解码器300可构建运动向量(MV)候选列表,也称为运动向量预测符列表。运动向量预测符列表包括空间相邻块(例如,与当前块相邻且与当前块在同一图片中的块)、时间相邻块(例如,与当前块相邻但在与当前块不同的图片中的块)的运动向量信息,并且在一些示例中,包括HMVP候选的运动向量信息(例如,来自形成HMVP候选的先前经解码运动向量的表的条目)。时间相邻块也被称为共位块。
因此,为了构建运动向量预测符列表,视频编码器200和视频解码器300可评估相邻块(例如,空间相邻块和时间相邻块)以确定相邻块是否具有运动向量信息。如果相邻块具有运动向量信息(例如,因为相邻块被帧间译码),则视频编码器200和视频解码器300可将相邻块的运动向量信息包括在运动向量预测符列表中。视频编码器200和视频解码器300可维持HMVP候选的最近编码或解码的块的运动向量信息的单独表。
可以存在视频编码器200和视频解码器300可评估(例如,检查)以确定相邻块是否具有运动向量信息的多个相邻块。为了限制视频编码器200和视频解码器300可能需要评估的相邻块的数量,下文描述用于空间运动向量预测和时间运动向量预测的一些示例设计(例如,被评估的块的空间相邻块和时间相邻块的示例)。
在合并模式的一些实施方式中(在一些术语中,这可被称为跳过模式或直接模式),可按给定顺序来访问(例如,检查)空间运动向量预测符(MVP)候选和时间运动向量预测符(MVP)候选,以填充运动向量预测符列表。空间MVP(SMVP)可以是空间相邻块的运动向量,该运动向量可用作当前块的运动向量的运动向量预测符。如上所述,时间MVP(TMVP)可以是时间相邻块(例如,共位块)的运动向量,该运动向量可用作当前块的运动向量的运动向量预测符。
在一些技术中,为了确定SMVP和TMVP,视频编码器200和视频解码器300可按特定顺序来评估相邻块(例如,空间相邻块或时间相邻块)。视频编码器200和视频解码器300可据以评估相邻块的顺序也可被称为访问顺序。
图7A是示出在运动向量预测中使用的示例空间候选和时间候选的概念图。图7B是示出空间候选的示例访问顺序的概念图。图7C是示出空间候选的另一示例访问顺序的概念图。
图7A示出了被用作MVP候选的空间相邻者的示例。在图7A中,当前块700的空间相邻者(例如,空间相邻块)包括块A 702、B 704、(C 706、A1 710A|B1 710B)、块A0 714和块B2712。视频编码器200和视频解码器300可用两阶段过程来评估相邻块。图7B中示出了检查空间候选(例如,空间相邻块)的顺序(即,用从0到5的数字标记的访问顺序)。
图7A的第1组候选包括:
a.块A 702、B 704、C 706(在HEVC符号表示中与块B0 708共位)并且以杂散阴影示出,以及
b.块A1 710A或块B1 710B,其中取决于块C 706中的运动向量预测符是否可用而包括块A1710A或块B1 710B。
第2组候选包括:
a.块A0 714和B2 712
在图7A中,块C 706与块B0 708共位。例如,块C 706和块B0 708可以是相同的块,但是由于HEVC和VVC之间的命名改变,在图7A中给出了两个不同的名称。HEVC标准将示为块B0 708的块称为块“B0”。VVC标准将示为块B0 708的块称为块“C”。因此,块C 706与块B0708共位,并且与当前块700在同一图片中。
作为根据第1组和第2组进行评估的示例,视频编码器200和视频解码器300可评估(例如,检查)第1组中的块。视频编码器200和视频解码器300可评估块A 702且确定是否存在块A 702的运动向量信息。如果存在块A 702的运动向量信息(例如,因为用运动向量对块A 702进行了帧间译码),则视频编码器200和视频解码器300可将块A 702的运动向量信息添加到运动向量预测符列表。不管块A 702是否具有运动向量信息,视频编码器200和视频解码器300都可评估块B 704且确定是否存在块B 704的运动信息。如果存在块B 704的运动向量信息(例如,因为用运动向量对块B 704进行了帧间译码),则视频编码器200和视频解码器300可将块B 704的运动向量信息添加到运动向量预测符列表。不管块B 704是否具有运动向量信息,视频编码器200和视频解码器300都可评估块C 706且确定是否存在块C 706的运动信息。如果存在块C 706的运动向量信息(例如,因为用运动向量对块C 706进行了帧间译码),则视频编码器200和视频解码器300可将块C 706的运动向量信息添加到运动向量预测符列表。
在一些示例中,视频编码器200和视频解码器300可基于是否存在块C 706的运动向量信息来评估块A1 710A或块B1 710B中的一个。例如,如果存在块C 706的运动向量信息,则视频编码器200和视频解码器300可评估块A1 710A或块B1 710B中的一个(例如,块A1710A)。然而,如果不存在块C 706的运动向量信息(例如,因为对块C 706进行了帧内译码),则视频编码器200和视频解码器300可评估块A1 710A或块B1 710B中的另一个(例如,块B1710B)。
在评估块A1 710A或B1 710B中的一个之后,视频编码器200和视频解码器300可评估第2组的块(例如,块B2 712和A0 714)且将运动向量信息添加到运动向量预测符列表,如上文所描述。接着,视频编码器200和视频解码器300可评估时间相邻者(例如,时间相邻块或共位块)。
在图7A中,当前块700的时间相邻者(例如,时间相邻块)包括块718中的一个或多个和块CO 716。如图7A所示,被用作MVP候选的时间共位的相邻者来自于共同位于当前块的中心的块(标记为块CO 716)和位于当前块外部的最右下方位置的块718A(具有虚线轮廓)。块CO 716和块718可以是不同于包括当前块700的当前图片的参考图片。第3组候选块(以虚线轮廓示出)包括:
a.块CO 716、H 718A
b.如果发现H位置(例如,块H 718A)在共位图片外部,则可以替代地使用一个或多个回退H位置(例如,块H 718B-718D)。
例如,视频编码器200和视频解码器300可评估块CO 716以确定是否存在块CO 716的运动向量信息,且在可用时将块CO 716的运动向量信息添加到运动向量预测符列表。类似地,视频编码器200和视频解码器300可评估块H 718A以确定是否存在块H 718A的运动向量信息,且在可用时将块H 718A的运动向量信息添加到运动向量预测符列表。如果块H718A不可用(例如,因为其在图片外部),则视频编码器200和视频解码器300可评估块H718B到718D中的一个。
运动向量预测符列表的大小可以是固定的(即,运动向量预测符列表中可存在固定数量的条目)。因此,视频编码器200和视频解码器300可评估(例如,检查)相邻块,且只要未达到运动向量预测符列表的最大大小,就将运动向量信息添加到相邻块的运动向量预测符列表。此外,如果在评估块H718A-718D中的一个和时间相邻(例如,共位)块CO 716之后未达到运动向量预测符列表的大小,则视频编码器200和视频解码器300可将HMVP候选添加到运动向量预测符列表或将人工运动向量候选添加到运动向量预测符列表。
如上文所描述的,可存在视频编码器200和视频解码器300据以评估相邻块的顺序。图7B示出了示例顺序。例如,在图7B中,“0”指代块A 702,并且是视频编码器200和视频解码器300可评估的第一个块。“1”指代块B 704,并且是视频编码器200和视频解码器300可评估的第二个块,并且以此类推。
在图7B中,“3”指代块A1 710A和B1 710B。这将指示视频编码器200和视频解码器300可基于是否存在块C 706(标识为“2”)的运动向量信息来评估块A1 710A或B1 710B中的一个。
在一些示例实施方式中,取决于所使用的块划分和译码顺序,可使用反转空间MVP候选顺序,如图7C中所示,其中检查顺序从0进行到5。例如,与图7A和图7B一致,如果视频编码器200和视频解码器300使用用于图片中的块的从左到右和从上到下的译码顺序分别进行编码或解码,则将在对当前块700进行编码或解码之前对块A 702、B 704、C 706、A1710A、B1 701B、B2 712和A0 714进行编码或解码。因为将在对当前块700进行编码或解码之前对块A 702、B 704、C 706、A1 710A、B1 701B、B2 712和A0 714进行编码或解码,所以为了对当前块700进行编码或解码,视频编码器200和视频解码器300能够评估块A 702、B 704、C706、A1 710A、B1 701B、B2 712和A0 714的运动向量信息。例如,因为按照从左到右、从上到下的译码顺序在当前块700之前对块A 702进行编码或解码,所以如果对块A 702进行了帧间译码,则视频编码器200和视频解码器300能够访问块A 702的运动向量信息。
然而,在一些示例中,译码顺序可能不是从左到右和从上到下。相反,译码顺序可以是从右到左和从上到下。在这些示例中,图7A和7B中所示出的相邻块中的一些可能在当前块700之前尚未被编码或解码。因此,即使相邻块将被帧间译码,相邻块的运动向量信息仍不可用,因为按照从右到左的译码顺序,图7A和7B中的相邻块中的一些将尚未被编码或解码。
图7C示出了按照图片中的块的从右到左和从上到下的译码顺序,将被评估的空间相邻块以及将对空间相邻块进行评估的顺序的示例。例如,在图7C中,视频编码器200和视频解码器300可评估块726A或726B中的一个、块720、722、724、728和730。例如,视频编码器200和视频解码器300可从块720(标识为“0”)开始,接着是块722(标识为“1”),随后是块724(标识为“2”),开始评估以确定是否存在运动向量信息。
类似于图7A和图7B的块A1 710A和B1 710B,在图7C中,视频编码器200和视频解码器300可基于是否存在块724的运动向量信息(例如,基于块724是否被帧间译码)来评估块726A或726B(两者均标识为“3”)中的一个。如所示的,在块726A或726B中的一个之后,视频编码器200和视频解码器300可评估块728且随后评估块730。
上文描述视频编码器200和视频解码器300可以据以评估相邻块以确定是否存在要被包括在运动向量预测符列表中的运动向量信息的示例顺序。在一些示例中,视频编码器200和视频解码器300可并行地评估多个相邻块而非逐一地进行评估。在这些示例中,视频编码器200和视频解码器300可以以图7A-7C中所示的顺序对运动向量预测符列表中的运动向量信息进行排序。
作为示例,视频编码器200和视频解码器300可并行地而不是一个接一个地评估块A 702和块B 704。在该示例中,如果块A 702和块B 704两者均具有运动向量信息,则视频编码器200和视频解码器300可构建运动向量预测符列表,使得块A 702的运动向量信息在块B704的运动向量信息之前,因为按照评估顺序,块A 702在块B 704之前。
然而,在图7A-7C中所示的示例中,可能存在对并行评估运动向量信息的限制,这可能影响计算效率。例如,是评估块A1 710A还是块B1 710B是基于是否存在块C 706的运动向量信息的。在这些示例中,视频编码器200和视频解码器300可以串行地评估块C 706,然后基于评估块C 706的结果(例如,基于是否存在块C 706的运动向量信息)来评估块A1710A或块B1 710B中的一个。在图7C中,视频编码器200和视频解码器300可以串行地评估块724,然后基于评估块724的结果(例如,基于是否存在块724的运动向量信息)来评估块726A或块726B中的一个,而不是并行评估。
类似地,视频编码器200和视频解码器300是否评估块H 718B-718D中的一个可以是基于块718A是否可用(例如,不在图片之外)。尽管在图7C中未示出时间相邻块,但将应用于图7A中的块H 718A-718D的操作同样可应用于时间相邻块。
即,MVP候选设计(诸如图7A-7C中描述的模式),基于特定MVP候选的可用性(例如,基于块C 706的运动向量信息的可用性(也称为C候选可用性)),块划分类型或基于MVP候选的空间位置(诸如从图7A中示出的一组H候选(例如,块H 718A-718D)中进行选择),而使用有条件的MVP提取(A1|B1)(例如,块A1 710A或块B1 710B)。这种有条件的提取增加了计算复杂度,并且可能影响MVP的特定实施方式的并行化或存储器限制。
在一些示例中,构建运动向量预测符列表可能需要大量相依性和条件,可能引入显著的相对(每像素)复杂性,尤其是对于小的块大小(例如,4×4或4×N,其中N<=8)而言。对于大小较小的块,在空间相邻块的运动向量信息中可能没有那么多的多样性。例如,与大小较大的块相比,对于大小较小的块,当前块的左侧相邻块和上方相邻块可以彼此更接近。作为说明,在图7A中,当前块700越大,块A 702和块B0 708彼此越远离,而当前块700越小,块A 702和块B0 708彼此越接近。
彼此更接近的两个块倾向于具有相似的运动向量信息。因此,对于大小较小的块,与大小较大的块的空间相邻块相比,空间相邻块具有相似的运动向量信息的可能性较高。因为空间相邻块具有相似运动向量信息的可能性较高,所以具有大小相对较大的运动向量预测符列表可能不提供运动向量信息的多样性。即,尽管对于大小较小的块具有大小相对较大的运动向量预测符列表可提供许多运动向量预测符候选,但运动向量信息的多样性可能不大。然而,对于大小较大的块,具有相对大的运动向量预测符列表可提供多样化的运动向量信息,从而允许包括具有相对接近实际运动向量的值的运动向量预测符候选。
因此,可能不期望对于所有大小的块具有相同大小的运动向量预测符列表。对于大小较小的块,具有与大小较大的块相同大小的运动向量预测符列表意味着视频编码器200和视频解码器300需要执行多个操作以填充运动向量预测符列表,而由于运动向量信息中缺乏多样性而无法实现来自具有多个运动向量预测符候选的译码增益。因此,对于大小较小的块,大小较小的运动向量预测符列表可以是有益的。然而,对于大小较大的块,具有大小相对小的运动向量预测符列表可能是不利的,因为由于运动向量预测符列表的大小较小,所以多样化的运动向量预测符候选可能被排除在运动向量预测符列表之外。
鉴于这些缺点,本公开内容描述了用于执行空间-时间运动向量预测符列表构建的以下技术。示例技术可以单独地或组合地应用。此外,示例技术可以解决上述问题。然而,示例技术不应被认为限于解决上述问题。
在一个示例中,本公开内容描述了用于确定据以生成空间MVP候选和时间MVP候选的模式的技术。视频编码器200和视频解码器300可以采用以下的根据空间-时间相邻候选构建运动向量预测符列表的过程。如图8A所示,运动向量预测符列表中候选位置的优先级由数字0…7标记。
首先,视频编码器200和视频解码器300以图8A中实线块所示的0…4的顺序访问(即,检查运动信息的可用性)空间MVP候选。例如,视频编码器200和视频解码器300可确定块0 802、块1 804、块2 806、块3 808和块4 810的运动向量信息是否可用。
接下来,视频编码器200和视频解码器300访问(即,检查运动信息的可用性)时间共位位置(5、6和7)(其被示出为虚线块)处的运动向量预测符候选。例如,视频编码器200和视频解码器300可确定块5 812(也称为中心共位块5 812)或块6 814(也称为下方共位块6814(其中下方共位块6 814可以在图8A的当前块800的底部且最靠近其右侧)或块7 816(也称为右侧共位块7 816(其中右侧共位块7 816可以在图8B的当前块800的右侧且最靠近其底部))的运动向量信息是否可用。
图8A是示出根据本公开内容的一个示例的示例空间-时间运动向量预测符模式的概念图。图8B是示出根据本公开内容的一个示例的示例经反转空间-时间运动向量预测符模式的概念图。图8C是示出根据本公开内容的一个示例的另一示例经反转空间-时间运动向量预测符模式的概念图。图8A-8C示出了不同的检查顺序(例如,如由块中的数字所指示的)以及时间共位块的不同位置(例如,如由虚线块所示的)。
取决于译码模式、划分类型和/或译码方向,尤其是涉及反转扫描顺序处理的译码模式,可以采用空间反转(或镜像)模式,如图8B中所示。在一些示例中,可以反转图8A中所示的模式的一部分,例如,仅反转空间位置,而时间候选位置保持相同。在又一示例中,MVP候选的模式(例如,相对位置)可保持相同。然而,访问顺序可以沿着特定轴(例如,对角线轴)空间反转(镜像),如图8C所示。
在一个或多个示例中,视频编码器200和视频解码器300可各自基于包括当前块800的图片的译码顺序来构建运动向量预测符列表。译码顺序的一个示例是从左到右的译码顺序,在此情况下,视频编码器200和视频解码器300从当前图片的左上角开始逐块地进行编码或解码,直到到达当前图片的右端为止,接着是左上角下方的块,并且依此类推,直到到达位于右下方处的块为止。译码顺序的另一示例是从右到左的译码顺序,在此情况下,视频编码器200和视频解码器300可从当前图片的右上角开始逐块地进行编码或解码,直到到达当前图片的左端为止,接着是右上角下方的块,并且依此类推,直到到达位于左下方的块为止。
译码顺序可能影响哪些空间相邻块可用于检查。例如,仅仅先前被编码或解码的块的运动向量信息可以是可用的。因此,如果一个块尚未被编码或解码,则该块的运动向量信息可能尚不可用。因为译码顺序定义了对块进行编码或解码的顺序,所以是否能够确定空间相邻块的运动向量信息是基于译码顺序的。
作为示例,在图8A中,对于从左到右的译码顺序,块0 802的运动向量信息可以在对当前块800进行编码或解码时可用。然而,当前块800的右侧相邻块的运动向量信息可能不可用。在图8B中,对于从右到左的译码顺序,块0 818的运动向量信息可在对当前块800进行编码或解码时可用。然而,当前块800的左侧相邻块的运动向量信息可能不可用。
在一个或多个示例中,针对在具有从左到右的译码顺序的第一图片中的第一块,视频编码器200和视频解码器300可构建第一运动向量预测符列表。如图8A中所示,第一运动向量预测符列表中的第一条目是基于第一块的左侧相邻块(例如,块0 802)的运动向量信息的。第一块的左侧相邻块可以是第一块左侧的块,其具有与第一块的底部边界相同的底部边界。针对在具有从右到左的译码顺序的第二图片中的第二块,视频编码器200和视频解码器300可构建第二运动向量预测符列表。如图8B中所示,第二运动向量预测符列表中的第一条目是基于第二块的右侧相邻块(例如,块0 818)的运动向量信息。第二块的右侧相邻块可以是第二块右侧的块,其具有与第二块的底部边界相同的底部边界。
如图所示,块0 802在图8A的当前块800的左侧。在一些示例中,块0 802可位于图8A的当前块800的左侧,使得块0 802的底部边界与图8A的当前块800的底部边界相同。如图所示,块0818在图8B的当前块800的右侧。在一些示例中,块0 818可以位于图8B的当前块800的右侧,使得块0 818的底部边界与图8B的当前块800的底部边界相同。
对于第一运动向量预测符列表,第一运动向量预测符列表中的条目可如下:第一条目是左侧相邻块0 802,第二条目是上方相邻块1 804,第三条目是右上方相邻块2 806,第四条目是左下方相邻块3 808,第五条目是左上方相邻块4 810。在一些示例中,上方相邻块1 804可在图8A的当前块800的顶部且与图8A的当前块800共享右边界。
对于第二运动向量预测符列表,第二运动向量预测符列表中的条目可如下:第一条目是右侧相邻块0 818,第二条目是上方相邻块1 820,第三条目是左上方相邻块2 822,第四条目是右下方相邻块3 824,第五条目是右上方相邻块4 826。在一些示例中,上方相邻块1 820可在图8B的当前块800的顶部且与图8B的当前块800共享左边界。
在一些示例中,在检查空间相邻块之后,视频编码器200和视频解码器300可检查共位块。在一个示例中,视频编码器200和视频解码器300可检查中心共位块5 812。如果中心共位块5 812的运动向量信息可用,则视频编码器200和视频解码器300可将该运动向量信息添加到运动向量预测符列表且不添加来自任何其他共位块的运动向量信息。
如果中心共位块5 812的运动向量信息不可用,则视频编码器200和视频解码器300可检查下方共位块6 814。如果下方共位块6 814的运动向量信息可用,则视频编码器200和视频解码器300可将该运动向量信息添加到运动向量预测符列表且不添加来自任何其他共位块的运动向量信息。如图所示,下方共位块6 814可以是在当前块800的底部且最靠近其右侧的块(例如,块6 814在图8A的当前块800下方且块6 814的右边界与图8A的当前块800的右边界相同)。块6 814的坐标可以是(xColBot,yColBot),其中xColBot=xCb+cbWidth-1,并且yColBot=yCb+cbHeight,其中(xCb,yCb)是图8A的当前块800的坐标,cbWidth是图8A的当前块800的宽度,cbHeight是图8A的当前块800的高度。
如果下方共位块6 814的运动向量信息不可用,则视频编码器200和视频解码器300可检查右侧共位块7 816。如果右侧共位块7 816的运动向量信息可用,则视频编码器200和视频解码器300可将该运动向量信息添加到运动向量预测符列表且不添加来自任何其他共位块的运动向量信息。如图所示,右侧共位块7 816可以是在图8A的当前块800的右侧且最靠近其底部的块(例如,块7 816在图8A的当前块800的右侧且块7 816的底部边界与图8A的当前块800的底部边界相同)。块7 816的坐标可以是(xColBr,yColBr),其中xColBr=xCb+cbWidth,且yColBr=yCb+cbHeight-1,其中(xCb,yCb)是图8A的当前块800的坐标,cbWidth是图8A的当前块800的宽度,cbHeight是图8A的当前块800的高度。
在另一示例中,视频编码器200和视频解码器300可检查中心共位块5 828。如果中心共位块5828的运动向量信息可用,则视频编码器200和视频解码器300可将该运动向量信息添加到运动向量预测符列表且不添加来自任何其他共位块的运动向量信息。
如果中心共位块5 828的运动向量信息不可用,则视频编码器200和视频解码器300可检查下方共位块6 830。如果下方共位块6 830的运动向量信息可用,则视频编码器200和视频解码器300可将该运动向量信息添加到运动向量预测符列表且不添加来自任何其他共位块的运动向量信息。如图所示,下方共位块6 830可以是在当前块800的底部且最靠近其左侧的块(例如,块6 830在图8B的当前块800下方,且块6 830的左边界与图8B的当前块800的左边界相同)。块6 830的坐标可以是(xColBot,yColBot),其中xColBot=xCb,并且yColBot=yCb+cbHeight,其中(xCb,yCb)是图8B的当前块800的坐标,cbWidth是图8B的当前块800的宽度,cbHeight是图8B的当前块800的高度。
如果下方共位块6 830的运动向量信息不可用,则视频编码器200和视频解码器300可检查左侧共位块7 832。如果左侧共位块7 832的运动向量信息可用,则视频编码器200和视频解码器300可将该运动向量信息添加到运动向量预测符列表且不添加来自任何其他共位块的运动向量信息。如图所示,左侧共位块7 832可以是在图8B的当前块800的左侧且最靠近其底部的块(例如,块7 832在图8B的当前块800的左侧,且块7 832的底部边界与图8B的当前块800的底部边界相同)。块7832的坐标可以是(xColBr,yColBr),其中xColBr=xCb-1,并且yColBr=yCb+cbHeight-1,其中(xCb,yCb)是图8B的当前块800的坐标,cbWidth是图8B的当前块800的宽度,cbHeight是图8B的当前块800的高度。
应当理解,图8A和8B中的空间相邻块和共位块的位置是一个示例,并且不应当被认为是限制性的。例如,块802可以大致位于图8A的当前块800的左侧,块818可以大致位于图8B的当前块800的右侧。这同样适用于其他空间相邻块和共位块。
以上示例描述了视频编码器200和视频解码器300对在运动向量预测符列表中的运动向量信息进行排序的示例方式。在一些示例中,尽管视频编码器200和视频解码器300以特定顺序对在运动向量预测符列表中的运动向量信息(如果可用的话)进行排序,但视频编码器200和视频解码器300可被配置为并行地访问相邻块(例如,图8A和8B中的空间相邻块0..4)的运动向量信息。即,视频编码器200和视频解码器300可并行地检查用于构建运动向量预测符列表的多个(例如,所有)空间相邻块的运动向量信息。
例如,本公开内容描述了用于将运动向量预测符候选包括到运动向量预测符列表中的技术。描述了运动向量预测符列表构建的以下过程。视频编码器200和视频解码器300可以按无条件顺序且独立于其他运动向量预测符候选的可用性,来检查运动向量预测符候选位置(例如,所有空间相邻块)。因此,可以并行地执行运动向量预测符候选检查。
如果相邻块的位置在图片边界内,则视频编码器200和视频解码器300可检查相邻块。此外,视频编码器200和视频解码器300可检查在一位置处的相邻块,该位置使得该相邻块已经被编码或解码。此外,视频编码器200和视频解码器300可确定相邻块的运动向量信息是否可用。如果满足以上示例条件,则视频编码器200和视频解码器300可将相邻块的运动向量信息包括在运动向量预测符列表中。
如上所述,可能存在运动向量预测符列表的最大大小。例如,可以将所提取的运动向量预测符候选包括在运动向量预测符列表中,直到运动向量预测符列表的有效大小达到指定的上边界值为止,例如,由定义运动向量预测符列表的最大大小的MAX_MVP_LIST_SIZE指定的上边界值。在一些示例中,MAX_MVP_LIST_SIZE的值可等于6。
然而,如上所述,在不考虑块大小的情况下使所有块具有相同的最大列表大小可能导致运动向量预测符列表的构建不必要地复杂或未包括足够的候选。例如,如上所述,对于大小较小的块,为了减少计算周期,具有大小较小的运动向量预测符列表可能是有益的,因为额外的候选可能不提供太多的译码增益。然而,对于大小较大的块,为了确保运动向量信息中的良好多样性,具有大小较大的运动向量预测符列表可以是有益的。
在一个示例中,视频编码器200和视频解码器300可被配置为,依据当前经译码块大小来确定和/或限制所构建的运动向量预测符列表的最大有效大小。在一些示例中,对于包括4xN或Nx4个像素的块,其中N<=8,有效MVP列表大小被设定为等于SMAL_BLOCK_MAX_MVP_LIST<MAX_MVP_LIST_SIZE。变量SMAL_BLOCK_MAX_MVP_LIST定义用于大小较小的块的运动向量预测符列表的最大大小,其中大小较小的块可以是具有小于或等于4xN或Nx4的样本的块,N为8。
为了指示当前块是否为大小较小的块,视频编码器200和/或视频解码器300可确定smallBlockFlag(例如,指示块是否小的二进制值)。用于确定smallBlockFlag的等式可以是smallBlockFlag=(cuw*cuh 在一些示例中,小块大小的标准SMALL_BLOCK_SIZE可被定义为等于16个像素。因此,针对小块大小的32的示例仅为一个示例,且本公开内容涵盖针对小块大小的除32和16以外的值。 在一些示例中,MAX_MVP_LIST_SIZE的值可等于4。即,对于大小较小的块,运动向量预测符列表的最大大小可以是四。在一些示例中,小块大小的标准可以通过块边长度的值来表达: smallBlockFlag=((max(cuw,cuh)<=8&&min(cuw,cuh)<8)) if(smallBlockFlag) 使用SMAL_BLOCK_MAX_MVP_LIST; else, 使用 MAX_MVP_LIST_SIZE 在另一示例中,本公开内容描述了用于用信号发送运动向量预测符候选列表参数的技术。例如,可在解码器侧(例如,视频解码器300)处将最大可能运动向量预测符列表大小(MAX_MVP_LIST_SIZE)指定为边信息(例如,来自视频编码器200的用信号发送的信息)。 在一些示例中,由应用有效地用于当前译码条件(例如,用于当前序列、图片、切片或CU组)的最大运动向量预测符列表大小(例如,MAX_MVP_LIST_SIZE和/或SMAL_BLOCK_MAX_MVP_LIST),可由位流的语法元素(例如,在序列/图片/切片的报头或其他层级)用信号发送。 在一些示例中,在解码器侧处将块大小相依性的参数(例如,SMALL_BLOCK_SIZE)指定为边信息。在另一示例中,可通过位流用信号发送该参数。 图2是示出可执行本公开内容的技术的示例视频编码器200的方框图。提供图2是出于说明的目的,并且不应被认为是对本公开内容中广泛例示和描述的技术的限制。出于说明的目的,本公开内容在诸如HEVC视频译码标准和开发中的H.266/VCC视频译码标准之类的视频译码标准的上下文中描述了视频编码器200。然而,本公开内容的技术不限于这些视频译码标准,而是可一般性地应用于视频编码和解码。 在图2的示例中,视频编码器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的其他组件在片上(on-chip),如图所示,或者相对于那些组件在片外(off-chip)。 在本公开内容中,对视频数据存储器230的提及不应被解释为限于视频编码器200内部的存储器,除非如此具体地描述,或者限于视频编码器200外部的存储器,除非如此具体地描述。而是,对视频数据存储器230的提及应被理解为存储视频编码器200所接收的用于编码的视频数据(例如,要被编码的当前块的视频数据)的存储器。图1的存储器106还可以提供对视频编码器200的各个单元的输出的临时存储。 示出图2的各个单元以帮助理解由视频编码器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可以根据树结构,诸如上述QTBT结构或HEVC的四叉树结构,来划分图片的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可以例如通过逐样本平均或加权平均,来提取由各个运动向量标识的两个参考块的数据,并组合所提取的数据。 根据本公开内容的技术,运动估计单元222和运动补偿单元224可执行本公开内容中所描述的帧间预测和运动向量预测技术。例如,如下文将更详细解释,运动估计单元222和运动补偿单元224可被配置为利用本公开内容中描述的示例技术来构建运动向量预测符列表。 如上描述,在一些示例中,块的运动向量预测符列表可基于包括该块的图片的译码顺序以及空间相邻块和/或共位块。例如,在一个示例中,五个空间相邻块可以是图8A中针对从左到右译码顺序所示的那些块,而五个空间相邻块可以是图8B中针对从右到左译码顺序所示的那些块。 例如,针对在具有从左到右译码顺序的第一图片中的第一块,运动估计单元222和运动补偿单元224可构建第一运动向量预测符列表。第一运动向量预测符列表中的第一条目可基于第一块的左侧相邻块(例如,图8A的块0 802)的运动向量信息。针对在具有从右到左译码顺序的第二图片中的第二块,运动估计单元222和运动补偿单元224可构建第二运动向量预测符列表。第二运动向量预测符列表中的第一条目可基于第二块的右侧相邻块(例如,图8B的块0 818)的运动向量信息。 运动估计单元222和运动补偿单元224可并行地检查存储在视频数据存储器230或解码图片缓冲器218(作为两个示例)中的多个(包括所有)空间相邻块的运动向量信息。即,运动估计单元222和运动补偿单元224是否检查特定空间相邻块的运动向量信息可不取决于任何其他块的运动向量信息。 基于对空间相邻块的运动向量信息的检查,运动估计单元222和运动补偿单元224可以按基于运动向量信息的可用性的顺序来构建具有运动向量信息的运动向量预测符列表。对于从左到右的译码顺序,运动向量预测符列表中的运动向量信息的顺序可以是:左侧相邻块(例如,图8A的块0 802)的运动向量信息、上方相邻块(例如,图8A的块1 804)的运动向量信息、右上方相邻块(例如,图8A的块2 806)的运动向量信息、左下方相邻块(例如,图8A的块3 808)的运动向量信息和左上方相邻块(例如,图8A的块4 810)的运动向量信息。对于从右到左的译码顺序,运动向量预测符列表中的运动向量信息的顺序可以是:右侧相邻块(例如,图8B的块0 818)的运动向量信息、上方相邻块(例如,图8B的块1 820)的运动向量信息、左上方相邻块(例如,图8B的块2 822)的运动向量信息、右下方相邻块(例如,图8B的块3 824)的运动向量信息和右上方相邻块(例如,图8B的块4 826)的运动向量信息。 上述排序是基于运动向量信息的可用性的。如果特定块的运动向量信息不可用,则不将该运动向量信息添加到运动向量预测符列表。在一些示例中,可以将下一可用运动向量信息包括在为不存在任何运动向量信息的块保留的空间中。例如,图8A的块1 804的运动向量信息可以是运动向量预测符列表中的第二条目,且图8A的块2 806的运动向量信息可以是运动向量预测符列表中的第三条目。如果图8A的块1 804的运动向量信息不可用且图8A的块2 806的运动向量信息可用,则块2 806的运动向量信息可在运动向量预测符列表的第二条目中。 在以上示例中,运动估计单元222和运动补偿单元224基于空间相邻块确定第一运动向量预测符列表和第二运动向量预测符列表。在一些示例中,运动估计单元222和运动补偿单元224可将共位块的运动向量信息(存储在视频数据存储器230或解码图片缓冲器218(作为两个示例)中)包括在第一运动向量预测符列表和第二运动向量预测符列表中。 作为一个示例,运动估计单元222和运动补偿单元224可在确定位于不同于第一图片的图片中的任何其他共位块中的运动向量信息是否可用之前确定位于不同于第一图片的图片中的中心共位块(例如,图8A的块5 812)的运动向量信息是否可用,并且基于中心共位块的运动向量信息可用,运动估计单元222和运动补偿单元224可将中心共位块的运动向量信息添加到第一运动向量预测符列表。 在一些示例中,运动估计单元222和运动补偿单元224可确定位于不同于第一图片的图片中的中心共位块的运动向量信息不可用。在这些示例中,在确定中心共位块的运动向量信息不可用之后,运动估计单元222和运动补偿单元224可确定位于不同于第一图片的图片中的下方共位块的运动向量信息是否可用(例如,图8A的块6 814),且基于下方共位块的运动向量信息可用,运动估计单元222和运动补偿单元224可将下方共位块的运动向量信息添加到第一运动向量预测符列表。 在一些示例中,运动估计单元222和运动补偿单元224可确定位于不同于第一图片的图片中的中心共位块的运动向量信息不可用。在一些情况下,在确定中心共位块的运动向量信息不可用之后,运动估计单元222和运动补偿单元224可确定位于不同于第一图片的图片中的下方共位块的运动向量信息不可用。在这些情况下,在确定下方共位块的运动向量信息不可用之后,运动估计单元222和运动补偿单元224可确定位于不同于第一图片的图片中的右侧共位块的运动向量信息是否可用(例如,图8A的块7 816),并且基于右侧共位块的运动向量信息可用,运动估计单元222和运动补偿单元224可将右侧共位块的运动向量信息添加到第一运动向量预测符列表。 运动估计单元222和运动补偿单元224可执行类似操作来添加共位块的运动向量信息,以用于构建第二运动向量预测符列表。然而,对于第二运动向量预测符列表,运动估计单元222和运动补偿单元224可基于图8B的中心共位块5 828、下方共位块6 830和左侧共位块7 832的可用性来添加运动向量信息。 在一些示例中,在构建运动向量预测符列表时,运动估计单元222和运动补偿单元224可基于块的大小来构建运动向量预测符列表。例如,运动估计单元222和运动补偿单元224可基于第一块所具有的大小大于阈值大小而构建具有第一最大大小的第一运动向量预测符列表。运动估计单元222和运动补偿单元224可基于第一图片中的第三块所具有的大小小于阈值大小,而针对第三块构建具有第二最大大小的第三运动向量预测符列表,第二最大大小小于第一最大大小。作为一个示例,第一最大大小等于六,第二最大大小等于四,阈值大小等于Nx4或4xN,其中N小于或等于八。 运动估计单元222和运动补偿单元224可被配置为编码第一块和第二块。例如,运动估计单元222和运动补偿单元224可确定第一块的预测块,且确定用于识别预测块的第一块的运动向量。运动估计单元222和运动补偿单元224可基于该运动向量来确定第一运动向量预测符列表中的条目。运动估计单元222和运动补偿单元224可使熵编码单元220用信号发送指示第一运动向量预测符列表中的条目的信息。另外,残差生成单元204可确定表示第一块与预测块之间的差的残差数据。熵编码单元220可用信号发送指示残差数据的信息。运动估计单元222和运动补偿单元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大小的非对称划分。 在模式选择单元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可以使用当前图片的DPB218中的重构块来对当前图片中的其他块进行帧内预测。 通常,熵编码单元220可对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可对来自量化单元208的经量化变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对语法元素(它们是视频数据的另一个示例)执行一个或多个熵编码操作,以生成经熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度译码(CAVLC)操作、CABAC操作、可变至可变(V2V)长度译码操作、基于语法的上下文自适应二进制算术译码(SBAC)操作、概率间隔分割熵(PIPE)译码操作、指数Golomb编码操作或另一种熵编码操作。在一些示例中,熵编码单元220可以在旁通(bypass)模式下操作,在此情况中不对语法元素进行熵编码。 视频编码器200可以输出包括重构切片或图片的块所需的经熵编码语法元素的位流。具体而言,熵编码单元220可以输出位流。 针对块描述了上述操作。这样的描述应该被理解为是针对亮度译码块和/或色度译码块的操作。如上所述,在一些示例中,亮度译码块和色度译码块是CU的亮度和色度分量。在一些示例中,亮度译码块和色度译码块是PU的亮度和色度分量。 在一些示例中,不需要针对色度译码块重复针对亮度译码块执行的操作。作为一个示例,不需要为了识别色度块的运动向量(MV)和参考图片而重复用于识别亮度译码块的MV和参考图片的操作。而是,可以缩放用于亮度译码块的MV以确定用于色度块的MV,并且参考图片可以是相同的。作为另一示例,对于亮度译码块和色度译码块,帧内预测处理可以是相同的。 图3是示出可以执行本公开内容的技术的示例性视频解码器300的方框图。提供图3是出于说明的目的,并非是对本公开内容中广泛例示和描述的技术的限制。出于说明的目的,本公开内容描述了根据H.266/VVC、JEM和HEVC技术的视频解码器300。然而,本公开内容的技术可以由被配置为其他视频译码标准的视频译码设备来执行。 在图3的示例中,视频解码器300包括译码图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(DPB)314。预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括用以根据其他预测模式执行预测的附加单元。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的组合部分)、仿射单元、线性模型(LM)单元等。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。 CPB存储器320可以存储将由视频解码器300的组件解码的视频数据,诸如经编码视频位流。例如,存储在CPB存储器320中的视频数据可以从计算机可读介质110(图1)获得。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的其他组件在片上(on-chip),或者相对于那些组件在片外(off-chip)。 另外或可替代地,在一些示例中,视频解码器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可以生成预测块。在这种情况下,预测信息语法元素可以指示:DPB 314中的从其提取参考块的参考图片,以及运动向量,运动向量标识参考图片中参考块的相对于当前图片中当前块位置的位置。运动补偿单元316通常可以以与针对运动补偿单元224(图2)所描述的方式基本相似的方式来执行帧间预测处理。 根据本公开内容的技术,运动补偿单元316可在对本公开内容中所描述的块进行译码时执行帧间预测和运动向量预测技术。例如,如下文将更详细解释,运动补偿单元316可被配置为利用本公开内容中描述的示例技术来构建运动向量预测符列表。 如上文所描述,在一些示例中,一个块的运动向量预测符列表可以是基于包括该块的图片的译码顺序以及空间相邻块和/或共位块的。例如,在一个示例中,五个空间相邻块可以是图8A中针对从左到右译码顺序所示的那些块,且五个空间相邻块可以是图8B中针对从右到左译码顺序所示的那些块。 例如,对于在具有从左到右译码顺序的第一图片中的第一块,运动补偿单元316可构建第一运动向量预测符列表。第一运动向量预测符列表中的第一条目可基于第一块的左侧相邻块(例如,图8A的块0 802)的运动向量信息。对于在具有从右到左译码顺序的第二图片中的第二块,运动补偿单元316可构建第二运动向量预测符列表。第二运动向量预测符列表中的第一条目可基于第二块的右侧相邻块(例如,图8B的块0 818)的运动向量信息。 运动补偿单元316可并行地检查存储在解码图片缓冲器314(作为一个示例)中的多个(包括所有)空间相邻块的运动向量信息。即,运动补偿单元316是否检查特定空间相邻块的运动向量信息可不取决于任何其他块的运动向量信息。 基于对空间相邻块的运动向量信息的检查,运动补偿单元316可按基于运动向量信息的可用性的顺序来构建具有运动向量信息的运动向量预测符列表。对于从左到右的译码顺序,运动向量预测符列表中的运动向量信息的顺序可以是:左侧相邻块(例如,图8A的块0 802)的运动向量信息、上方相邻块(例如,图8A的块1 804)的运动向量信息、右上方相邻块(例如,图8A的块2 806)的运动向量信息、左下方相邻块(例如,图8A的块3 808)的运动向量信息和左上方相邻块(例如,图8A的块4 810)的运动向量信息。对于从右到左的译码顺序,运动向量预测符列表中的运动向量信息的顺序可以是:右侧相邻块(例如,图8B的块0818)的运动向量信息、上方相邻块(例如,图8B的块1 820)的运动向量信息、左上方相邻块(例如,图8B的块2 822)的运动向量信息、右下方相邻块(例如,图8B的块3 824)的运动向量信息和右上方相邻块(例如,图8B的块4 826)的运动向量信息。 上述排序是基于运动向量信息的可用性的。如果特定块的运动向量信息不可用,则不将该运动向量信息添加到运动向量预测符列表。在一些示例中,可将下一可用运动向量信息包括在为不存在任何运动向量信息的块保留的空间中。例如,图8A的块1 804的运动向量信息可以是运动向量预测符列表中的第二条目,且图8A的块2 806的运动向量信息可以是运动向量预测符列表中的第三条目。如果图8A的块1 804的运动向量信息不可用且图8A的块2 806的运动向量信息可用,则块2 806的运动向量信息可在运动向量预测符列表的第二条目中。 在以上示例中,运动补偿单元316基于空间相邻块确定第一运动向量预测符列表和第二运动向量预测符列表。在一些示例中,运动补偿单元316可将共位块的运动向量信息(存储在解码图片缓冲器314(作为一个示例)中)包括在第一运动向量预测符列表和第二运动向量预测符列表中。 作为一个示例,运动补偿单元316可在确定位于不同于第一图片的图片中的任何其他共位块中的运动向量信息是否可用之前确定位于不同于第一图片的图片中的中心共位块(例如,图8A的块5812)的运动向量信息是否可用,且基于中心共位块的运动向量信息可用,运动补偿单元316可将中心共位块的运动向量信息添加到第一运动向量预测符列表。 在一些示例中,运动补偿单元316可确定位于不同于第一图片的图片中的中心共位块的运动向量信息不可用。在这类示例中,在确定中心共位块的运动向量信息不可用之后,运动补偿单元316可确定位于不同于第一图片的图片中的下方共位块的运动向量信息是否可用(例如,图8A的块6814),且基于下方共位块的运动向量信息可用,运动补偿单元316可将下方共位块的运动向量信息添加到第一运动向量预测符列表。 在一些示例中,运动补偿单元316可确定位于不同于第一图片的图片中的中心共位块的运动向量信息不可用。在一些情况下,在确定中心共位块的运动向量信息不可用之后,运动补偿单元316可确定位于不同于第一图片的图片中的下方共位块的运动向量信息不可用。在这些情况下,在确定下方共位块的运动向量信息不可用之后,运动补偿单元316可确定位于不同于第一图片的图片中的右侧共位块的运动向量信息是否可用(例如,图8A的块7 816),且基于右侧共位块的运动向量信息可用,运动补偿单元316可将右侧共位块的运动向量信息添加到第一运动向量预测符列表。 运动补偿单元316可执行类似操作以添加共位块的运动向量信息,以用于构建第二运动向量预测符列表。然而,对于第二运动向量预测符列表,运动补偿单元316可基于图8B的中心共位块5 828、下方共位块6 830和左侧共位块7 832的可用性来添加运动向量信息。 在一些示例中,在构建运动向量预测符列表时,运动补偿单元316可基于块的大小来构建运动向量预测符列表。例如,运动补偿单元316可基于第一块所具有的大小大于阈值大小而构建具有第一最大大小的第一运动向量预测符列表。运动补偿单元316可基于第一图片中的第三块所具有的大小小于阈值大小,而针对第三块构建具有第二最大大小的第三运动向量预测符列表,第二最大大小小于第一最大大小。作为一个示例,第一最大大小等于六,第二最大大小等于四,阈值大小等于Nx4或4xN,其中N小于或等于八。 运动补偿单元316与重构单元310可被配置为解码第一块和第二块。例如,运动补偿单元316接收指示第一运动向量预测符列表中的条目的信息,且基于所述条目来确定第一块的运动向量。运动补偿单元316可基于所述运动向量,为第一块确定存储在解码图片缓冲器314中的预测块。重构单元310可被配置为基于预测块和所接收的指示表示预测块与第一块之间的差的残差数据的信息来重构第一块。运动补偿单元316和重构单元310可被配置为类似地解码第二块。 作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。同样,帧内预测单元318通常可以以与针对帧内预测单元226(图2)所描述的方式基本相似的方式来执行帧内预测处理。帧内预测单元318可以从DPB 314提取当前块的相邻样本的数据。 重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样本与预测块的对应样本相加来重构当前块。 滤波器单元312可以对重构块执行一个或多个滤波器操作。例如,滤波器单元312可以执行去块操作以减少沿着重构块的边缘的块状伪像。不一定在所有示例中都执行滤波器单元312的操作。 视频解码器300可将重构块存储在DPB 314中。如上所述,DPB 314可以向预测处理单元304提供参考信息,诸如用于帧内预测的当前图片的样本以及用于后续运动补偿的先前解码的图片。此外,视频解码器300可以从DPB输出经解码图片,以用于随后在显示设备(例如,图1的显示设备118)上呈现。 图9是示出用于对数据进行译码的示例方法的流程图。为了便于描述,针对处理电路来描述图9的示例。处理电路的一个示例是视频编码器200。处理电路的另一示例是视频解码器300。处理电路可以是固定功能电路、可编程电路或固定功能和可编程电路的组合。 在一个或多个示例中,存储器可被配置为存储运动向量信息,诸如空间相邻块和共位块的运动向量信息。作为一个示例,存储器可以是视频数据存储器230、解码图片缓冲器218或存储器106。作为另一示例,存储器可以是解码图片缓冲器314或存储器120。 针对在具有从左到右译码顺序的第一图片中的第一块,处理电路可被配置为构建第一运动向量预测符列表(400)。第一运动向量预测符列表中的第一条目可以是基于存储在存储器中的、第一块的左侧相邻块的运动向量信息的。左侧相邻块的一个示例是图8A的块0 802,其中图8A的块0 802位于图8A的当前块800的左侧且共享图8A的当前块800的左边界(例如,左侧相邻块是在第一块左侧的、具有与第一块的底部边界相同的底部边界的块)。在一些示例中,处理电路可被配置为基于运动向量信息的可用性,按照以下顺序来构建具有运动向量信息的第一运动向量预测符列表:左侧相邻块(例如,块0 802)的运动向量信息、上方相邻块(例如,块1 804)的运动向量信息、右上方相邻块(例如,块2 806)的运动向量信息、左下方相邻块(例如,块3 808)的运动向量信息和左上方相邻块(例如,块4 810)的运动向量信息。 在一些示例中,为了构建第一运动向量预测符列表,处理电路可被配置为:在确定位于不同于第一图片的图片中的任何其他共位块中的运动向量信息是否可用之前确定位于不同于第一图片的图片中的中心共位块(例如,块812)的运动向量信息是否可用,且基于中心共位块的运动向量信息可用,将中心共位块的运动向量信息添加到第一运动向量预测符列表。在一些示例中,为了构建第一运动向量预测符列表,处理电路被配置为:确定位于不同于第一图片的图片中的中心共位块的运动向量信息不可用,在确定中心共位块的运动向量信息不可用之后,确定位于不同于第一图片的图片中的下方共位块(例如,图8A的在当前块800的底部且最靠近其右侧的块6 814)的运动向量信息是否可用,并且基于下方共位块的运动向量信息可用,将下方共位块的运动向量信息添加到第一运动向量预测符列表。在一些示例中,下方共位块(例如,块6 814)的右边界在不同于第一图片的图片中与第一图片中的第一块的右边界位于相同位置。 在一些示例中,为了构建第一运动向量预测符列表,处理电路被配置为:确定位于不同于第一图片的图片中的中心共位块的运动向量信息不可用,在确定中心共位块的运动向量信息不可用之后,确定位于不同于第一图片的图片中的下方共位块的运动向量信息不可用,在确定下方共位块的运动向量信息不可用之后,确定位于不同于第一图片的图片中的右侧共位块(例如,在图8A的当前块800的右侧且最靠近其底部的块7 816)的运动向量信息是否可用,并且基于右侧共位块的运动向量信息可用,将右侧共位块的运动向量信息添加到第一运动向量预测符列表。在一些示例中,右侧共位块(例如,块7 816)的底部边界在不同于第一图片的图片中与第一图片中的第一块的底部边界位于相同位置。 处理电路可被配置为:基于第一运动向量预测符列表对第一图片中的第一块进行译码(402)。作为一个示例,为了基于第一运动向量预测符列表对第一图片中的第一块进行译码,处理电路可被配置为:基于第一运动向量预测符列表来对第一图片中的第一块进行解码。为了对第一块进行解码,处理电路可以被配置为:接收指示第一运动向量预测符列表中的条目的信息,基于该条目确定第一块的运动向量,基于运动向量确定第一块的预测块,以及基于预测块和所接收的指示表示预测块与第一块之间的差的残差数据的信息来重构第一块。作为另一示例,为了基于第一运动向量预测符列表对第一图片中的第一块进行译码,处理电路可被配置为:基于第一运动向量预测符列表来编码第一图片中的第一块。为了编码第一块,处理电路可以被配置为:确定第一块的预测块,确定用于识别预测块的第一块的运动向量,基于运动向量来确定第一运动向量预测符列表中的条目,用信号发送指示条目的信息,以及用信号发送指示表示第一块和预测块之间的差的残差数据的信息。 针对在具有从右到左译码顺序的第二图片中的第二块,处理电路可以被配置为构建第二运动向量预测符列表(404)。第二运动向量预测符列表中的第一条目可以是基于存储在存储器中的、第二块的右侧相邻块的运动向量信息的。右侧相邻块的一个示例是图8B的块0 818,其中图8B的块0 818位于图8B的当前块800的右侧且共享图8B的当前块800的右边界(例如,右侧相邻块是在第二块的右侧的具有与第二块的底部边界相同的底部边界的块)。在一些示例中,处理电路可被配置为基于运动向量信息的可用性,按照以下顺序来构建具有运动向量信息的第二运动向量预测符列表:右侧相邻块(例如,块0 818)的运动向量信息、上方相邻块(例如,块1 820)的运动向量信息、左上方相邻块(例如,块2 822)的运动向量信息、右下方相邻块(例如,块3 824)的运动向量信息和右上方相邻块(例如,块4 826)的运动向量信息。 在一些示例中,为了构建第二运动向量预测符列表,处理电路可被配置为:在确定位于不同于第二图片的图片中的任何其他共位块中的运动向量信息是否可用之前确定位于不同于第二图片的图片中的中心共位块(例如,块5 828)的运动向量信息是否可用,且基于中心共位块的运动向量信息可用,将中心共位块的运动向量信息添加到第二运动向量预测符列表。在一些示例中,为了构建第二运动向量预测符列表,处理电路被配置为:确定位于不同于第二图片的图片中的中心共位块的运动向量信息不可用,在确定中心共位块的运动向量信息不可用之后,确定位于不同于第二图片的图片中的下方共位块(例如,在图8B的当前块800的底部且最靠近其左侧的块6 830)的运动向量信息是否可用,并且基于下方共位块的运动向量信息可用,将下方共位块的运动向量信息添加到第二运动向量预测符列表。在一些示例中,下方共位块(例如,块6 830)的左边界在不同于第二图片的图片中与第二图片中的第二块的左边界位于相同位置。 在一些示例中,为了构建第二运动向量预测符列表,处理电路被配置为:确定位于不同于第二图片的图片中的中心共位块的运动向量信息不可用,在确定中心共位块的运动向量信息不可用之后,确定位于不同于第二图片的图片中的下方共位块的运动向量信息不可用,在确定下方共位块的运动向量信息不可用之后,确定位于不同于第二图片的图片中的左侧共位块(例如,在图8B的当前块800的左侧且最靠近其底部的块7 832)的运动向量信息是否可用,并且基于左侧共位块的运动向量信息可用,将左侧共位块的运动向量信息添加到第二运动向量预测符列表。在一些示例中,左侧共位块(例如,块7 832)的底部边界在不同于第二图片的图片中与第二图片中的第二块的底部边界位于相同位置。 处理电路可被配置为基于第二运动向量预测符列表对第二图片中的第二块进行译码(406)。作为一个示例,为了基于第二运动向量预测符列表对第二图片中的第二块进行译码,处理电路可被配置为基于第二运动向量预测符列表来对第二图片中的第二块进行解码。为了对第二块进行解码,处理电路可被配置为:接收指示第二运动向量预测符列表中的条目的信息,基于所述条目确定第二块的运动向量,基于运动向量确定第二块的预测块,且基于预测块和所接收的指示表示预测块与第二块之间的差的残差数据的信息来重构第二块。作为另一示例,为了基于第二运动向量预测符列表对第二图片中的第二块进行译码,处理电路可被配置为:基于第二运动向量预测符列表对第二图片中的第二块进行编码。为了对第二块进行编码,处理电路可被配置为:确定第二块的预测块,确定用于识别预测块的第二块的运动向量,基于运动向量来确定第二运动向量预测符列表中的条目,用信号发送指示条目的信息,以及用信号发送指示表示第二块与预测块之间的差的残差数据的信息。 以下是可一起执行和/或与本公开内容中描述的技术中的任一种组合执行的一些示例技术。以下示例仅是一些示例,不应被认为是限制性的或在所有示例中是必需的。 示例1、一种对视频数据进行译码的方法,所述方法包括:构建包括五个空间候选和多达三个共位时间候选的运动向量预测符列表,以及使用所述运动向量预测符列表来对视频数据块进行译码。 示例2、根据示例1的方法,其中,构建所述运动向量预测符列表包括:在检查共位时间候选的可用性之前检查空间候选的可用性。 示例3、根据示例1的方法,其中,五个空间候选和三个共位时间候选位于图8A所示的模式中。 示例4、根据示例1的方法,其中,五个空间候选和三个共位时间候选位于图8B所示的模式中。 示例5、根据示例1的方法,其中,五个空间候选和三个共位时间候选位于图8C所示的模式中。 示例6、根据示例1的方法,还包括:基于所述块的译码模式、所述块的划分类型或所述块的译码方向中的一项或多项,来确定五个空间候选和三个共位时间候选。 示例7、根据示例1的方法,其中,构建运动向量预测符列表包括:与检查共位时间候选的可用性并行地检查空间候选的可用性。 示例8、根据示例7的方法,还包括:确定空间候选和共位时间候选的相应位置的有效性,以及从被确定为有效的候选向运动向量预测符列表添加运动信息。 示例9、根据示例1的方法,其中,构建运动向量预测符列表包括:基于所述视频数据块的大小来确定运动向量预测符列表的最大有效大小,以及基于所述最大有效大小来构建运动向量预测符列表。 示例10、根据示例1-9的技术的任何组合的方法。 示例11、根据示例1-10中任一项的方法,其中,译码包括解码。 示例12、根据示例1-10中任一项的方法,其中,译码包括编码。 示例13、一种用于对视频数据进行译码的设备,所述设备包括用于执行根据示例1-10中任一项所述的方法的一个或多个单元。 示例14、根据示例13所述的设备,其中,所述一个或多个单元包括在电路中实现的一个或多个处理器。 示例15、根据示例13和14中任一项的设备,还包括:用于存储所述视频数据的存储器。 示例16、根据示例13-15的任意组合的设备,还包括:被配置为显示经解码视频数据的显示器。 示例17、根据示例13-16的任何组合的设备,其中,所述设备包括相机、计算机、移动设备、广播接收机设备或机顶盒中的一项或多项。 示例18、根据示例13-17的任何组合的设备,其中,所述设备包括视频解码器。 示例19、根据示例13-18的任何组合的设备,其中,所述设备包括视频编码器。 示例20、一种其上存储有指令的计算机可读存储介质,所述指令在被执行时使一个或多个处理器执行根据示例1-10中任一项的方法。 示例21、本公开内容中描述的技术的任何组合。 应该认识到,根据示例,本文描述的任何技术的某些操作或事件可以以不同的顺序执行,可以被添加、合并或完全省略(例如,并非所有描述的操作或事件都是实施所述技术所必需的)。此外,在某些示例中,操作或事件可以例如通过多线程处理、中断处理或多个处理器并发地而不是顺序地执行。 在一个或多个示例性中,可以以硬件、软件、固件或其任意组合来实现所描述的功能。如果以软件实现,则所述功能可以作为一个或多个指令或代码在计算机可读介质上进行存储或发送,并由基于硬件的处理单元执行。计算机可读介质包括:计算机可读存储介质,其对应于诸如数据存储介质的有形介质;或通信介质,其包括例如根据通信协议便于将计算机程序从一个地方转移到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于:(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是可由一台或多台计算机或一个或多个处理器访问以提取指令、代码和/或数据结构以实现本公开内容中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。 例如,但是并不限于,这样的计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储设备、磁盘存储设备或其它磁存储设备、闪存或者能够被用于以指令或数据结构的形式存储所需程序代码并且能够被计算机访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果用同轴电缆、纤维光缆、双绞线、数字用户线路(DSL)或诸如红外、无线电和微波的无线技术从网站、服务器或其它远程源发送软件,则该同轴电缆、纤维光缆、双绞线、DSL或诸如红外、无线和微波的无线技术也包含在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时性介质,而是针对非暂时性的有形存储介质。本文所使用的磁盘和光盘包括压缩光盘(CD)、激光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地再现数据,而光盘通常利用激光器光学地再现数据。上述的组合也包括在计算机可读介质的范围内。 指令可由一个或多个处理器执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他等效集成或分立逻辑电路。相应地,如本文所使用的术语“处理器”可以指任何前述结构或适合于实现本文描述的技术的任何其他结构。另外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或结合在组合编解码器中。同样,所述技术可以在一个或多个电路或逻辑元件中完全实现。 本公开内容的技术可以在包括无线手持机、集成电路(IC)或一组IC(例如,芯片组)的多种设备或装置中实现。在本公开内容中描述各种组件、模块或单元以强调被配置为执行所公开技术的设备的各功能方面,但不一定需要由不同硬件单元来实现。而是,如上所述,各种单元可以组合在编解码器硬件单元中,或者由互操作的硬件单元的集合来提供,包括与合适的软件和/或固件相结合的如上所述的一个或多个处理器。 已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
- 用于视频译码的空间-时间运动向量预测模式
- 用于视频译码扩展的时间运动向量预测