用于对视频进行编码或解码的方法和装置与流程

专利2024-04-08  105


用于对视频进行编码或解码的方法和装置
相关申请的交叉引用
1.本技术基于2020年3月26日提交的名称为“methods for motion vector angular prediction”申请号为63/000,095美国临时申请的,并要求其优先权,该申请通过引用整体并入本文。
技术领域
2.本公开总体上涉及视频数据处理,并且更具体地,涉及运动矢量角预测的使用。


背景技术:

3.视频是捕获视觉信息的一组静态图像(或“帧”)。为了减少存储内存和传输带宽,可以在存储或传输之前对视频进行压缩,然后在显示之前对视频进行解压缩。压缩过程通常称为编码,解压缩过程通常称为解码。有多种使用标准化视频编码技术的视频编码格式,最常见的是基于预测、变换、量化、熵编码和环内滤波。标准化组织开发了视频编码标准,例如高效视频编码(例如hevc/h.265)标准,通用视频编码(例如vvc/h.266)标准和avs标准,指定了特定的视频编码格式。随着视频标准中采用越来越多的先进视频编码技术,新的视频编码标准的编码效率越来越高。


技术实现要素:

4.在一些示例性实施例中,提供了一种用于解码视频的计算机实现的方法。所述方法包括:接收包括视频帧的编码单元的位流,所述编码单元以跳过模式或直接模式进行编码;确定所述编码单元是否具有大于阈值宽度的宽度或大于阈值高度的高度;响应于所述编码单元具有大于阈值宽度的宽度或大于阈值高度的高度,启用运动矢量角预测过程以将一个或多个运动矢量角预测候选存储在候选列表中,所述候选列表存储有与所述编码单元相关联的多个运动候选;以及,根据所述候选列表和从所述位流解析的索引,对所述编码单元执行帧间预测。
5.本公开的实施例提供了一种装置。在一些实施例中,所述装置包括:存储器,其被配置为存储指令;以及处理器,其耦合到所述存储器并且被配置为执行所述指令以使得所述装置:接收包括视频帧的编码单元的位流,所述编码单元以跳过模式或直接模式进行编码;确定所述编码单元是否具有大于阈值宽度的宽度或大于阈值高度的高度;响应于所述编码单元具有大于阈值宽度的宽度或大于阈值高度的高度,启用运动矢量角预测过程以将一个或多个运动矢量角预测候选存储在候选列表中,所述候选列表存储有与所述编码单元相关联的多个运动候选;以及,根据所述候选列表和从所述位流解析的索引,对所述编码单元执行帧间预测。
6.本公开的实施例提供了一种存储指令集的非暂时性计算机可读存储介质,所述指令集可由设备的一个或多个处理器执行以使设备执行用于运动矢量预测的方法。所述方法包括:将编码单元划分为多个子块;通过以下方式填充与所述编码单元相关联的参考列表:
如果与所述参考列表中的参考单元相关联的相邻块的运动信息可用,则用所述编码单元的相邻块的所述运动信息填充所述参考单元;如果与作为所述参考列表中的第一条目的第一参考单元相关联的第一相邻块的运动信息不可用,则用预定义的运动信息填充所述第一参考单元;以及,如果与剩余参考单元相关联的相邻块的运动信息不可用,则用填充在参考列表中的先前相邻参考单元中的运动信息填充所述剩余参考单元;以及,执行运动矢量角预测过程,以通过根据一个或多个预测方向使用参考列表来获得每个子块的一个或多个运动矢量角预测候选。
附图说明
7.在下面的详细描述和附图中示出了本公开的实施例和各个方面。图中所示的各种特征没有按比例绘制。
8.图1示出了与本公开的一些实施例一致的示例性视频序列的结构。
9.图2示出了与本公开的一些实施例一致的视频编码系统中的示例性编码器的示意图。
10.图3示出了与本公开的一些实施例一致的视频编码系统中的示例性解码器的示意图。
11.图4示出了与本公开的一些实施例一致的用于对视频进行编码或解码的示例性装置的框图。
12.图5示出了与本公开的一些实施例一致的用于视频编码方法的示例性过程的流程图。
13.图6示出了与本公开的一些实施例一致的用于导出空间运动矢量预测(smvp)的示例性相邻块。
14.图7示出了与本公开的一些实施例一致的用于视频解码方法的示例性过程的流程图。
15.图8示出了与本公开的一些实施例一致的示例性mvap过程的流程图。
16.图9示出了与本公开的一些实施例一致的mvap过程中的编码单元中的子块。
17.图10示出了与本公开的一些实施例一致的用于在mvap过程中使用的示例性参考运动信息列表。
18.图11a示出了与本公开的一些实施例一致的填充用于mvap过程使用的参考运动信息列表的示例性过程。
19.图11b示出了与本公开的一些实施例一致的填充用于mvap过程使用的参考运动信息列表的另一示例性过程。
20.图12a示出了与本公开的一些实施例一致的每个子块在第一方向上的示例性mvap候选。
21.图12b示出了与本公开的一些实施例一致的每个子块在第二方向上的示例性mvap候选。
22.图12c示出了与本公开的一些实施例一致的每个子块在第三方向上的示例性mvap候选。
23.图12d示出了与本公开的一些实施例一致的每个子块在第四方向上的示例性mvap
候选。
24.图12e示出了与本公开的一些实施例一致的每个子块在第五方向上的示例性mvap候选。
25.图13示出了与本公开的一些实施例一致的另一示例性mvap过程的流程图。
26.图14示出了与本公开的一些实施例一致的又一示例性mvap过程的流程图。
具体实施方式
27.现在将详细参考示例性实施例,其示例在附图中示出。以下描述参照附图,除非另有说明,其中不同附图中的相同数字表示相同或相似的元件。在示例性实施例的以下描述中阐述的实施方式并不代表与本公开一致的所有实施方式。相反,它们仅是与如所附权利要求中所述的与本公开相关的方面一致的装置和方法的示例。下面更详细地描述本公开的特定方面。如果与通过引用并入的术语和/或定义相冲突的话,以本文提供的术语和定义为准。
28.音频视频编码标准(avs)工作组是avs系列视频标准的标准设置组织。avs工作组正在开发avs3视频标准,这是avs系列视频标准的第三代。avs3的前身avs1和avs2分别发行于2006年和2016。avs3标准基于avs1、avs2、h.264/avc、h.265/hevc等现代视频压缩标准中使用过的同一混合视频编码系统。
29.avs工作组选择了高性能模型(hpm)作为avs3标准开发的新参考软件平台。hpm中的初始技术是从avs2标准继承而来的,然后通过新的高级视频编码技术对其进行了修改和增强,以提高压缩性能。与前身avs2相比,avs3最终完成的第一阶段的编码性能提高了20%以上。avs继续包括提高压缩性能的编码技术,并且avs3标准的第二阶段正在avs3的第一阶段之上开发,以提高编码效率。
30.视频是按时间顺序排列以存储视觉信息的一组静态图像(或“帧”)。可以使用视频采集设备(例如,相机)以时间顺序采集和存储这些图像,并且可以使用视频回放设备(例如,电视、计算机、智能手机、平板计算机、视频播放器、或任何具有显示功能的最终用户终端)显示时间序列中的此类图像。此外,在一些应用中,视频采集设备可以实时地将采集的视频发送到视频回放设备(例如,具有监视器的计算机),例如用于监视、会议或现场广播。
31.为了减少此类应用所需的存储空间和传输带宽,可以对视频进行压缩。例如,可以在存储和传输之前对视频进行压缩,并在显示之前进行解压缩。可以通过由处理器(例如,通用计算机的处理器)或专用硬件执行的软件来实现压缩和解压缩。用于压缩的模块或电路通常被称为“编码器”,并且用于解压缩的模块或电路通常被称为“解码器”。编码器和解码器可以统称为“编解码器”。编码器和解码器可以被实现为各种合适的硬件、软件、或其组合中的任何一种。例如,编码器和解码器的硬件实现可以包括电路,诸如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑或其任何组合。编码器和解码器的软件实现可以包括固定在计算机可读介质中的程序代码、计算机可执行指令、固件或任何合适的计算机实现的算法或过程。视频压缩和解压缩可以通过各种算法或标准来实现,例如mpeg-1、mpeg-2、mpeg-4、h.26x系列、avs标准等。在一些应用中,编解码器可以从第一编码标准解压缩视频,并且使用第二编码标准重新压缩解压缩的视频,在这种情况下,编解码器可以被称为“转码器”。
32.视频编码过程可以识别并保留可用于重建图像的有用信息。如果忽略不重要的信息不能被完全重建,则编码过程可以被称为“有损”。否则,它可以被称为“无损”。大多数编码过程都是有损的,这是为了减少所需的存储空间和传输带宽的权衡。
33.在许多情况下,被编码的图像(称为“当前图像”)的有用信息包括相对于参考图像(例如,先前编码和重建的图像)的变化。这样的变化可以包括像素的位置变化、亮度变化或颜色变化,代表对象的一组像素的位置变化可以反映对象在参考图像和当前图像之间的运动。
34.在不参考另一图像的情况下编码的图像(即,它是它自己的参考图像)被称为“i图像”。如果图像的一些或所有块(例如,通常是指视频他需的部分的块)使用一参考图像帧内预测或帧间预测(例如,单向预测)来预测,该图像称为“p图像”。如果图像中的至少一个块使用两个参考图像来预测(例如,双向预测),则将图像称为“b图像”。
35.在本公开中,通过根据编码单元的大小选择性地启用或禁用mvap过程,并在参考列表中的第一条目在mvap过程中不可用时分配预定义的运动信息,可以将简化的运动矢量角预测(mvap)过程应用于跳过模式或直接模式编码中的编码器和解码器。这种修改可以通过在视频流的编码和解码过程期间禁用用于当前编码单元的不太有用的编码工具来提高编码性能,并且在编码器侧和解码器侧实现用于跳过模式或直接模式编码的有利于硬件的方法。
36.图1示出了与本公开的实施例一致的的示例性视频序列的结构。视频序列100可以是实况视频或已采集和存档的视频。视频序列100可以是现实生活视频、计算机生成的视频(例如,计算机游戏视频)或其组合(例如,具有增强现实效果的现实生活视频)。视频序列100可以从视频采集设备(例如,相机)、包含先前采集的视频档案(例如,存储在存储设备中的视频文件)或视频馈送接口(例如,视频广播收发器)以从视频内容提供商接收视频。在图1所示的实施例中,视频序列1 00可以包括沿时间线在时间上布置的一系列图像,包括图像102、104、106和108。图像102-106是连续的,图像106和108之间有更多的图像。
37.当视频被压缩或解压缩时,被编码的图像(称为“当前图像”)的有用信息包括关于参考图像(例如,先前被编码和重建的图像)的变化。这样的变化可以包括像素的位置变化、亮度变化或颜色变化。例如,一组像素的位置变化可以反映由这些像素表示的对象在两个图像(例如,参考图像和当前图像)之间的运动。
38.例如,如图1所示,图像1 02是i-图像,将其自身作为参考图像。如箭头所示,图像104是使用图像102作为其参考图像的p图像。图像106是b图像,使用图像104和108作为其参考图像,如箭头所示。在一些实施例中,图像的参考图像可以是或可以不是紧接在图像之前或之后。例如,图像104的参考图像可以是图像102之前的图像,即,不是紧接在图像104之前的图像。图1所示的图像102-106的上述参考图像仅是示例,并不意味着限制本公开。
39.由于计算复杂性,在一些实施例中,视频编解码器可以将图像分割成多个基本段,并按段对图像段进行编码或解码。也就是说,视频编解码器无需一次对整个图像进行编码或解码。在本公开中,这样的基本段被称为基本处理单元(“bpu”)。例如,图1还示出了视频序列1 00的图像(例如,图像102-108中的任何一个)的示例性结构110。例如,结构110可用于划分图像108。如图1所示,图108被划分为4
×
4个基本处理单元。在一些实施例中,在一些视频编码标准(例如,avs3、h.265/hevc或h.266/vvc)中,基本处理单元可以被称为“编码树
单元”(“ctu”),或在某些视频编码标准(例如,mpeg族、h.261、h.263或h.264/avc)中被称为“宏块”。在avs3中,ctu可以是最大的块单元,并且可以大至128x128亮度样本(加上相应的色度样本,具体取决于色度格式)。
40.图1中的基本处理单元1仅用于说明目的。基本处理单元可以在图像中具有可变的大小,例如128
×
128、64
×
64、32
×
32、16
×
16、4
×
8、16
×
32或任意形状和大小的像素。可以基于编码效率和要保持在基本处理单元中的细节水平的平衡来为图像选择基本处理单元的尺寸和形状。
41.基本处理单元可以是逻辑单元,其可以包括存储在计算机存储器中(例如,在视频帧缓冲区中)的一组不同类型的视频数据。例如,彩色图像的基本处理单元可以包括表示消色差亮度信息的亮度分量(y)、表示颜色信息的一个或多个色度分量(例如,cb和cr)以及相关联的语法元素,其中亮度和色度分量可以具有与基本处理单元的相同大小。在一些视频编码标准中,亮度和色度分量可以被称为“编码树块”(“ctb”)。对基本处理单元执行的任何操作都可以对其亮度和色度分量中的每一个重复执行。
42.在视频编码中的多个操作阶段期间,基本处理单元的大小对于处理而言可能仍然太大,因此可以将其进一步划分为在本公开中被称为“基本处理子单元”的段。例如,在模式决策阶段,编码器可以将基本处理单元拆分为多个基本处理子单元,并为每个单独的基本处理子单元确定预测类型。如图1所示,结构110中的基本处理单元112被进一步划分为4
×
4个基本处理子单元。例如,在avs3中,可以使用四叉树、二叉树或扩展二叉树将ctu进一步划分为编码单元(cu)。图1中的基本处理子单元仅用于说明目的。可以将同一图像的不同基本处理单元划分为不同方案中的基本处理子单元。基本处理子单元可以在一些视频编码标准(例如,avs3、h.265/hevc或h.266/vvc)中被称为“编码单元”(“cu”),或者在一些视频编码标准(例如,mpeg族,h.261、h.263或h.264/avc)被称为“块”。基本处理子单元的大小可以与基本处理单元的大小相同或小于基本处理单元的大小。与基本处理单元类似,基本处理子单元也是逻辑单元,其可以包括存储在计算机存储器(例如,在视频帧缓冲区中)中的一组不同类型的视频数据(例如,y、cb、cr和相关联的语法元素)。可以对其亮度和色度分量重复执行对基本处理子单元执行的操作。可以根据处理需要将这种划分执行到进一步的级别,并且在不同阶段中,可以使用不同的方案对基本处理单元进行划分。在分区结构的叶节点处,发送对应编码模式所需的编码信息(例如,帧内预测模式或帧间预测模式)、运动信息(例如,参考索引、运动向量(mv)等)以及量化残差系数。
43.在一些情况下,在视频编码中的某些操作阶段(例如预测阶段或变换阶段),基本处理子单元仍然可能太大而无法处理。因此,编码器可以进一步将基本处理子单元分成更小的段(例如,被称为“预测块”或“pb”),可以在该级别上执行预测操作。类似地,编码器可以进一步将基本处理子单元分割成更小的段(例如,被称为“变换块”或“tb”),在该级别上可以执行变换操作。同一基本处理子单元的划分方案在预测阶段和变换阶段可以不同。例如,同一cu的预测块(pb)和变换块(tb)可以具有不同的大小和数量。模式决策阶段、预测阶段、变换阶段中的操作将在后面的段落中结合图2和图3提供的示例详细描述。
44.在一些实施方式中,为了提供并行处理的能力以及对视频编码和解码的容错能力,可以将图像划分成用于处理的区域,使得对于图像的区域,编码或解码过程可以不依赖于来自图像的任何其他区域的信息。换句话说,图像的每个区域都可以单独处理。通过这样
做,编解码器可以并行处理图像的不同区域,从而提高了编码效率。此外,当一区域的数据在处理中被损坏或在网络传输中丢失时,编解码器可以正确地编码或解码同一图像的其他区域而不依赖于被损坏或丢失的数据,从而提供容错能力。在某些视频编码标准中,可以将图像划分为不同类型的区域。例如,h.265/hevc和h.266/vvc提供两种类型的区域:“条带(slice)”和“块片(tile)”。视频序列100的不同图像可以具有用于将图像划分为区域的不同划分方案。
45.在一些标准中,支持两种模式的条带。在光栅扫描条带模式中,条带包括图像的块片光栅扫描中的块片序列。在矩形条带模式中,条带包括共同形成图像的矩形区域的一个或多个块片,或者共同形成图像的矩形区域的一个块片的一个或多个连续的ctu行。矩形条带内的块片可以在对应于该条带的矩形区域内以块片光栅扫描顺序进行扫描。例如,在图1中,结构110被分成1 6个块片(4个块片列和4个块片行)和3个光栅扫描条带114、116和118,其中其边界被示为结构110内部的实线。条带114包括四个基本处理单元。条带116和118分别包括六个基本处理单元。在一些实施例中,子图像可以包括共同覆盖图像的矩形区域的一个或多个条带。应当注意的是,图1中的基本处理单元、基本处理子单元以及结构110的块和条带仅是示例,并不意味着对本公开的限制。
46.图2示出了与本公开的一些实施例一致的视频编码系统(例如,avs3或h.26x系列)中的示例性编码器200的示意图。输入视频被逐块处理。如上所述,在avs3标准中,ctu是最大的块单元,并且可以大到128
×
128亮度样本(取决于色度格式,加上的相应色度样本)。可以使用四叉树、二叉树或三叉树将一个ctu进一步划分为cu。如图2所示,编码器200可以接收由视频采集设备(例如,相机)生成的视频序列202。本文使用的术语“接收”可以指以任何方式接收、输入、获取、检索、获得、读取、访问或用于输入数据的任何动作。编码器200可以将视频序列202编码成视频位流228。类似于图1中的视频序列100,视频序列202可以包括按时间顺序排列的一组图像(称为“原始图像”)。类似于图1中的结构110,视频序列202的任何原始图像可以被编码器200划分为基本处理单元、基本处理子单元或区域进行处理。在一些实施例中,编码器200可以在视频序列202的原始图像的基本处理单元的级别上执行处理。例如,编码器200可以以迭代方式执行图2中的过程,其中编码器200可以在过程的一次迭代中对基本处理单元进行编码。在一些实施例中,编码器200可以并行地对视频序列202的原始图像的区域(例如,图1中的条带14-18)进行处理。
47.组件202、2042、2044、206、208、210、212、214、216、226和228可以被称为“前向路径”。在图2中,编码器200可以将视频序列202的原始图像的一基本处理单元(称为“原始bpu”)馈送到两个预测阶段,帧内预测(也称为“图像内预测”或“空间预测”)阶段2042和帧间预测(也称为“图像间预测”、“运动补偿预测”或“时间预测”)阶段2044以执行预测操作并生成对应的预测数据206和预测bpu 208。特别地,编码器200可以接收原始bpu和预测参考224,其可以从过程的先前迭代的重建路径生成。
48.帧内预测阶段2042和帧间预测阶段2044的目的是通过从预测数据206和预测参考224中提取可用于重建原始bpu作为预测bpu 208的预测数据206来减少信息冗余。在一些实施例中,帧内预测可以使用来自同一图像中的一个或多个已经编码的相邻bpu的像素来预测当前bpu。也就是说,帧内预测中的预测参考224可以包括相邻bpu,使得空间相邻样本可以用于预测当前块。帧内预测可以减少图像固有的空间冗余。
49.在一些实施例中,帧间预测可以使用来自一个或多个已经编码的图像(“参考图像”)的区域来预测当前bpu。也就是说,帧间预测中的预测参考224可以包括编码图像。帧间预测可以减少图像固有的时间冗余。
50.在前向路径中,编码器200在帧内预测阶段2042和帧间预测阶段2044执行预测操作。例如,在帧内预测阶段2042,编码器200可以执行帧内预测。对于正被编码的图像的原始bpu,预测参考224可以包括在同一图像中已经被编码(在前向路径中)和重建(在重建路径中)的一个或多个相邻bpu。编码器200可以通过插值相邻的bpu来生成预测bpu 208。插值技术可以包括例如线性插值或内插、多项式插值或内插等。在一些实施例中,编码器200可以在像素级别执行插值,例如通过插值预测bpu 208的每个像素的对应像素的值。用于插值的相邻bpu可以位于相对于原始bpu的各个方向,例如在垂直方向(例如,在原始bpu的顶部),水平方向(例如,在原始bpu的左侧),对角线方向(例如,在原始bpu的左下、右下、左上或右上),或在所使用的视频编码标准中定义的任何方向。对于帧内预测,预测数据206可以包括,例如,所使用的相邻bpu的位置(例如,坐标)、所使用的相邻bpu的大小、插值的参数、所使用的相邻bpu相对于原始bpu的方向等。
51.对于另一个示例,在帧间预测阶段2042,编码器200可以执行帧间预测。对于当前图像的原始bpu,预测参考224可以包括已经被编码(在前向路径中)和重建(在重建路径中)的一个或多个图像(被称为“参考图像”)。在一些实施例中,可以通过逐个bpu对参考图像进行编码和重建。例如,编码器可以将重建的残差bpu 222添加到预测bpu 208以生成重建bpu。当同一张图像的所有重建的bpu都被生成时,编码器可以生成一重建图像作为参考图像。编码器200可以执行“运动估计”的操作以在参考图像范围(称为“搜索窗口”)内搜索匹配区域。可以基于原始bpu在当前图像中的位置来确定搜索窗口在参考图像中的位置。例如,搜索窗口可以在参考图像中与当前图像中的原始bpu具有相同坐标的位置处为中心,并且可以向外延伸预定距离。当编码器200在搜索窗口中识别(例如,通过使用pel递归算法、块匹配算法等)类似于原始bpu的区域时,编码器可以确定这样的区域作为匹配区域。匹配区域可以具有与原始bpu不同的大小(例如,小于、等于、大于或具有不同的形状)。因为参考图像和当前图像在时间线上在时间上分开(例如,如图1所示),所以可以认为匹配区域随着时间的推移“移动”到原始bpu的位置。编码器可以记录这种运动的方向和距离作为“运动矢量(mv)”。当使用多个参考图像时(例如,如图1中的图像106),编码器200可以搜索匹配区域并为每个参考图像确定其相关联的mv。在一些实施例中,编码器200可以将权重分配给各个匹配参考图像的匹配区域的像素值。
52.运动估计可用于识别各种类型的运动,例如平移、旋转、缩放等。对于帧间预测,预测数据206可以包括例如参考索引、匹配区域的位置(例如,坐标)、与匹配区域相关联的mv、参考图像的数量、与参考图像相关联的权重或其他运动信息。
53.为了生成预测的bpu 208,编码器200可以执行“运动补偿”操作。运动补偿可以用于基于预测数据206(例如,mv)和预测参考224来重建预测bpu 208。例如,编码器200可以根据mv移动参考图像的匹配区域,其中编码器200可以预测当前图像的原始bpu。当使用多个参考图像时(例如,如图1中的图像106),编码器200可以根据匹配区域的各个mv和平均像素值来移动参考图像的匹配区域。在一些实施例中,如果编码器200已经将权重分配给各个匹配参考图像的匹配区域的像素值,则编码器200可以将移动的匹配区域的像素值的加权和
相加。
54.在一些实施例中,帧间预测可以利用单向预测或双向预测并且是单向的或双向的。单向帧间预测可以使用相对于当前图像在相同时间方向上的一个或多个参考图像。例如,图1中的图像104是单向帧间预测图像,其中参考图像(即,图像102)在图像104之前。在单向预测中,仅使用指向一个参考图像的一个mv来生成当前块的预测信号。
55.另一方面,双向帧间预测可以在相对于当前图像的两个时间方向上使用一个或多个参考图像。例如,图1中的图像106是双向帧间预测图像,其中参考图像(例如,图像104和08)相对于图像104处于相反的时间方向。在双向预测中,使用两个mv,每个mv指向其自己的参考图像,来生成当前块的预测信号。在生成视频位流228之后,可以在视频位流228中向解码器发送mv和参考索引,以识别当前块的一个或多个预测信号来自何处。
56.对于帧间预测cu,运动参数可以包括mv、参考图像索引和参考图像列表使用索引、或者编码要使用的特征所需的其他附加信息。运动参数可以以显式或隐式方式用信号通知。在avs3中,在一些特定的帧间编码模式(诸如跳过模式或直接模式)下,运动参数(例如,mv增量和参考图像索引)在视频位流228中不被编码和用信号通知。相反,运动参数可以在解码器侧以与编码器200中定义的相同的规则导出。跳过模式和直接模式的详细信息将在下面的段落中讨论。
57.在帧内预测阶段2042和帧间预测阶段2044之后,在模式决策阶段230,编码器200可以为过程的当前迭代选择预测模式(例如,帧内预测或帧间预测之一)。例如,编码器200可以执行率失真优化方法,其中编码器200可以根据候选预测模式的比特率和候选预测模式下的重建参考图像的失真来选择预测模式以最小化成本函数的值。取决于所选择的预测模式,编码器200可以生成对应的预测bpu 208(例如,预测块)和预测数据206。
58.在一些实施例中,预测的bpu 208可以与原始bpu相同。然而,由于非理想的预测和重建操作,预测的bpu 208通常与原始bpu略有不同。为了记录这样的差异,在生成预测的bpu 208之后,编码器200可以将其从原始bpu中减去以生成残差bpu 210,其也称为预测残差。
59.例如,编码器200可以从原始bpu的对应像素的值减去预测bpu 208的像素的值(例如,灰度值或rgb值)。残差bpu 210的每个像素可以具有作为原始bpu和预测bpu 208的对应像素之间的这种减法的结果的残差值。与原始bpu相比,预测数据206和残差bpu 210可以具有更少的比特,但是它们可以用于重建原始bpu而没有显著的质量劣化。因此,原始bpu被压缩。
60.在生成残差bpu 210之后,编码器200可以将残差bpu 210馈送到变换阶段212和量化阶段214,以产生量化残差系数216。为了进一步压缩残差bpu 210,在变换阶段212,编码器200可以通过将残差bpu 210分解为一组二维“基本图案”来减少其空间冗余。每个基本图案与“变换系数”相关联。基本图案可以具有相同的大小(例如,残差bpu 210的大小),每个基本图案可以表示残差bpu 210的变化频率(例如,亮度变化的频率)分量。基本图案中的任何一个都不能从任何其他基本图案的任何组合(例如,线性组合)中再现。换句话说,分解可以将残差bpu 210的变化分解到频域中。这种分解类似于函数的离散傅立叶变换,其中,基本图像类似于离散傅立叶变换的基本函数(例如,三角函数),并且变换系数类似于与基本函数相关联的系数。
61.不同的变换算法可以使用不同的基本图案。在变换阶段212可以使用各种变换算法,例如,离散余弦变换、离散正弦变换等。变换阶段212处的变换是可逆的。也就是说,编码器200可以通过变换的逆运算(称为“逆变换”)来恢复残差bpu 210。例如,为了恢复残差bpu 210的像素,逆变换可以是将基本图案的对应像素的值乘以相应的相关联系数并将乘积相加以产生加权和。对于视频编码标准,编码器200和相应的解码器(例如图3的解码器300)都可以使用相同的变换算法(因此具有相同的基本图案)。因此,编码器200可以仅记录变换系数,解码器可以从中重建残差bpu 210,而无需从编码器200接收基本图案。与残差bpu 210相比,变换系数可以具有更少的比特,但是它们可以用于重建残差bpu 210而没有显著的质量劣化。因此,残差bpu 210被进一步压缩。
62.编码器可以进一步在量化阶段214压缩变换系数。在变换过程中,不同的基本图案可以表示不同的变化频率(例如,亮度变化频率)。因为人眼通常更擅长识别低频变化,所以编码器可以忽略高频变化的信息,而不会在解码中引起明显的质量劣化。例如,在量化阶段214,编码器200可以通过将每个变换系数除以整数值(称为“量化参数”)并将商四舍五入到其最接近的整数来生成量化的变换系数216。在这样的操作之后,可以将高频基本图案的一些变换系数转换为零,并且可以将低频基本图案的变换系数转换为较小的整数。编码器可以忽略零值的量化变换系数216,由此变换系数被进一步压缩。该量化处理也是可逆的,其中量化变换系数216可以在量化的逆操作(称为“逆量化”)中被重建为变换系数。
63.因为编码器200在舍入操作中忽略了该除法的余数,所以量化阶段214可能是有损的。通常,量化阶段214在编码过程中贡献最多的信息损失。信息损失越大,量化变换系数216所需的比特数就越少。为了获得不同级别的信息损失,编码器200可以使用不同的量化参数值或量化过程的任何其他参数。
64.编码器200可以将预测数据206和量化的残差系数216馈送到二进制编码阶段226,以生成视频位流228来完成前向路径。在二进制编码阶段226,编码器200可以216使用二进制编码技术来编码预测数据206和量化残差系数,二进制编码技术例如熵编码、可变长度编码、算术编码、霍夫曼编码、上下文自适应二进制算术编码(cabac),或任何其他无损或有损压缩算法。
65.例如,二进制编码阶段226中的cabac的编码过程可以包括二值化步骤、上下文建模步骤和二进制算术编码步骤。如果语法元素不是二进制的,编码器200首先将语法元素映射到二进制序列。编码器200可以选择用于编码的上下文编码模式或旁路编码模式。在一些实施例中,对于上下文编码模式,要编码的二进制(bin)的概率模型由“上下文”选择,“上下文”指的是先前编码的语法元素。然后,将bin和所选上下文模型传递给算术编码引擎,该算术编码引擎对bin进行编码并更新上下文模型的相应概率分布。在一些实施例中,对于旁路编码模式,在不通过“上下文”选择概率模型的情况下,以固定概率(例如,等于0.5的概率)对bin进行编码。在一些实施例中,为特定的bin选择旁路编码模式,以便在编码效率损失可忽略的情况下加速熵编码过程。
66.在一些实施例中,除了预测数据206和量化残差系数216之外,编码器200可以在二进制编码阶段226对其他信息进行编码,例如,在预测阶段(例如,帧内预测阶段2042或帧间预测阶段2044)选择的预测模式、预测操作的参数(例如,帧内预测模式、运动信息等)、变换阶段212处的变换类型、量化过程的参数(例如,量化参数)、编码器控制参数(例如,比特率
控制参数)等。也就是说,可以将编码信息发送到二进制编码级226以在被打包到视频位流228之前进一步降低比特率。编码器200可以使用二进制编码阶段226的输出数据来生成视频位流228。在一些实施例中,视频位流228可以被进一步打包以用于网络传输。
67.组件218、220、333、224、232和234可被称为“重建路径”。重建路径可用于确保编码器200及其对应的解码器(例如,图3中的解码器300)使用相同的参考数据进行预测。
68.在该过程中,在量化阶段214之后,编码器200可以将经量化残差系数216馈送到逆量化阶段218和逆变换阶段220,以生成重建残差bpu222。在逆量化阶段218,编码器200可以对量化残差系数216执行逆量化以生成重建变换系数。在逆变换阶段220,编码器200可以基于重建变换系数生成重建残差bpu222。编码器200可以将重建残差bpu222添加到预测bpu 208,以生成要在下一次迭代中预测阶段2042、2044中使用的预测参考224。
69.在重建路径中,如果在前向路径中已经选择了帧内预测模式,则在生成预测参考224(例如,在当前图像中已经编码和重建的当前bpu)之后,编码器200可以将预测参考224直接馈送到帧内预测阶段2042以供以后的使用(例如,用于插值当前图像的下一bpu)。如果在前向路径中已经选择了帧间预测模式,则在生成预测参考224(例如,已经对所有bpu进行编码和重建的当前图像)之后,编码器200可以将预测参考224馈送到环路滤波阶段232。在该位置,编码器200可以将环路滤波器应用于预测参考224,以减少或消除由帧间预测引入的失真(例如,块状伪影)。编码器200可以在环路滤波阶段232处应用各种环路滤波器技术,例如去块、采样自适应偏移(sao)、自适应环路滤波器(alf)等。在sao中,在去块滤波器之后,在帧间预测回路中引入非线性幅度映射,以使用查找表重建原始信号幅度,该查找表由编码器侧的直方图分析确定的一些附加参数描述。
70.可以将经环路滤波的参考图像存储在缓冲区234(或“解码图像缓冲区”)中以供以后使用(例如,用作视频序列202的未来图像的帧间预测参考图像)。编码器200可以将一个或多个参考图像存储在要在帧间预测阶段2044使用的缓冲区234中。在一些实施例中,编码器200可以在二进制编码阶段226处编码环路滤波器的参数(例如,环路滤波器强度)以及经量化的残差系数216、预测数据206和其他信息。
71.编码器200可以迭代地执行上面讨论的过程,以对原始图像的每个原始bpu(在前向路径中)进行编码,并生成用于对原始图像的下一个原始bpu(在重建路径中)进行编码的预测参考224。在对原始图像的所有原始bpu进行编码之后,编码器200可以继续对视频序列202中的下一图像进行编码。
72.应该注意的是,可以将编码过程的其他变化用于编码视频序列202。在一些实施例中,可以由编码器200以不同的顺序执行过程的阶段。在一些实施例中,编码过程的一个或多个阶段可以组合成单个阶段。在一些实施例中,编码过程的单个阶段可以分为多个阶段。例如,变换阶段212和量化阶段214可以组合成单个阶段。在一些实施例中,编码过程可以包括在图2中未示出的附加阶段。在一些实施例中,编码过程可以省略图2中的一个或多个阶段。
73.例如,在一些实施例中,编码器200可以在变换跳过模式下操作。在变换跳过模式中,变换阶段212被旁路,并且对tb用信号通知变换跳过标志。这可以改善一些类型的视频内容的压缩效果,例如计算机生成的图像或与相机视图内容(例如,滚动文本)混合的图形。此外,编码器200也可以在无损模式下操作。在无损模式中,变换阶段212、量化阶段214和影
响解码图像的其它处理(例如,sao和去块滤波器)被旁路。使用应用于量化变换系数的相同邻域上下文,将来自帧内预测阶段2042或帧间预测阶段2044的残差信号馈送到二进制编码阶段226。这允许数学上无损的重建。因此,变换和变换跳过残差系数都在非重叠cg中编码。也就是说,每个cg可以包括一个或多个变换残差系数,或者一个或多个变换跳过残差系数。
74.图3示出了与本公开的一些实施例一致的视频编码系统(例如,h.26x系列)的示例性解码器300的框图。解码器300可以执行与图2中的压缩处理相对应的解压缩处理。压缩过程和解压缩过程中的相应阶段在图2和图3中用相同的数字标记。
75.在一些实施例中,解压缩过程可以类似于图2中的重建路径。解码器300可以相应地将视频位流228解码成视频流304。视频流304可以非常类似于图2中的视频序列202。但是,由于压缩和解压缩过程(例如,图2中的量化阶段214)中的信息丢失,视频流304可能与视频序列202不同。类似于图2中的编码器200,解码器300可以在视频位流228中编码的每个图像的基本处理单元(bpu)的级别上执行解码处理。例如,解码器300可以以迭代方式执行该过程,其中解码器300可以在一次迭代中对基本处理单元进行解码。在一些实施例中,解码器300可以针对在视频位流228中编码的每个图像的区域(例如,条带114-118)并行地执行解码过程。
76.在图3中,解码器300可以将与编码图像的基本处理单元(称为“编码bpu”)相关联的视频位流228的一部分馈送到二进制解码阶段302。在二进制解码阶段302,解码器300可以将视频位流解包和解码为预测数据206和量化残差系数216。解码器300可以使用预测数据206和量化残差系数来重建与视频位流228对应的视频流304。
77.解码器300可以在二进制解码阶段302执行由编码器200使用的二进制编码技术(例如,熵编码、可变长度编码、算术编码、霍夫曼编码、上下文自适应二进制算术编码或任何其他无损压缩算法)的逆运算。在一些实施例中,除了预测数据206和量化残差系数216之外,解码器300可以在二进制解码阶段302解码其他信息,例如,预测模式、预测操作的参数、变换类型、量化过程的参数(例如,量化参数)、编码器控制参数(例如,比特率控制参数)等。在一些实施例中,如果视频位流228通过网络以分组的形式传输,则解码器300可以在将视频位流228馈送到二进制解码级302之前对其进行解包。
78.解码器300可以将经量化残差系数216馈送到逆量化阶段218和逆变换阶段220以生成经重建的残差bpu333。解码器300可以将预测数据206馈送到帧内预测阶段2042和帧间预测阶段2044以生成预测的bpu 208。特别地,对于被解码的编码图像(被称为“当前图像”)的编码基本处理单元(被称为“当前bpu”),从由解码器300的二进制解码阶段302解码的预测数据206可以包括各种类型的数据,取决于编码器200使用何种预测模式来编码当前bpu。例如,如果帧内预测被编码器200用于对当前bpu进行编码,则预测数据206可以包括编码信息,诸如指示帧内预测的预测模式指示符(例如,标志值)、帧内预测操作的参数等。帧内预测操作的参数可以包括例如用作参考的一个或多个相邻bpu的位置(例如,坐标)、相邻bpu的大小、插值的参数、相邻bpu相对于原始bpu的方向等。对于另一示例,如果帧间预测被编码器200用于编码当前bpu,则预测数据206可以包括编码信息,诸如指示帧间预测的预测模式指示符(例如,标志值)、帧间预测操作的参数等。帧间预测操作的参数可以包括例如与当前bpu相关联的参考图像的数量、分别与参考图像相关联的权重、各个参考图像中的一个或多个匹配区域的位置(例如,坐标)、分别与匹配区域相关联的一个或多个mv等。
79.因此,预测模式指示符可用于选择将调用帧间预测模块还是帧内预测模块。然后,相应的预测操作的参数可以被发送到相应的预测模块以生成预测信号。特别地,基于预测模式指示符,解码器300可以决定是在帧内预测阶段2042执行帧内预测还是在帧间预测阶段2044执行帧间预测。执行这种帧内预测或帧间预测的细节在图2中描述,在此不再赘述。下文将不再重复。在执行这种帧内预测或帧间预测之后,解码器300可以生成预测的bpu208。
80.在生成预测bpu 208之后,解码器300可以将重建残差bpu333添加到预测bpu 208以生成预测参考224。在一些实施例中,预测参考224可以存储在缓冲区(例如,计算机存储器中的解码图像缓冲区)中。解码器300可以将预测参考224馈送到帧内预测阶段2042和帧间预测阶段2044以用于在下一次迭代中执行预测操作。
81.例如,如果在帧内预测阶段2042使用帧内预测解码当前bpu,则在生成预测参考224(例如,解码的当前bpu)之后,解码器300可以将预测参考224直接馈送到帧内预测阶段2042以用于以后的使用(例如,用于插值当前图像的下一bpu)。如果在帧间预测阶段2044使用帧间预测解码当前bpu,则在生成预测参考224(例如,其中所有bpu都已被解码的参考图像)之后,解码器300可以将预测参考224馈送到环路滤波器级232以减少或消除失真(例如,块状伪影)。此外,预测数据206还可以包括环路滤波器的参数(例如,环路滤波器强度)。因此,解码器300可以如图2所示的方式将环路滤波器应用于预测参考224。例如,可以应用诸如去块、sao或alf之类的环路滤波器来形成环路滤波的参考图像,其被存储在缓冲区234(例如,计算机存储器中的解码图像缓冲区(dpb))中以供以后使用(例如,用于视频位流228的未来编码画面的预测的帧间预测阶段2044)。在一些实施例中,来自缓冲区234的重建图像也可以被发送到显示器,诸如tv、pc、智能手机或平板电脑,以被终端用户观看。
82.解码器300可以迭代地执行解码过程,以解码编码图像的每个编码bpu,并生成用于对编码图像的下一个编码bpu进行编码的预测参考224。在对编码图像的所有编码的bpu解码之后,解码器300可以将该图像输出到视频流304以供显示,并且继续解码视频位流228中的下一个编码图像。
83.图4是根据本公开的一些实施例的用于对视频进行编码或解码的示例性装置400的框图。如图4所示,装置400可以包括处理器402。当处理器402执行本文所述的指令时,装置400可以成为用于视频编码或解码的专用机器。处理器402可以是能够操纵或处理信息的任何类型的电路。例如,处理器402可以包括任何数量的中央处理单元(或“cpu”)、图形处理单元(或“gpu”)、神经处理单元(“npu”)、微控制器单元(“mcu”)、光学处理器、可编程逻辑控制器、微处理器、数字信号处理器、知识产权(ip)核心、可编程逻辑阵列(pla)、可编程阵列逻辑(pal)、通用阵列逻辑(gal)、复杂可编程逻辑器件(cpld),现场可编程门阵列(fpga)、片上系统(soc)、专用集成电路(asic)等中的任何组合。在一些实施例中,处理器402还可以是被分组为单个逻辑组件的一组处理器。例如,如图4所示,处理器402可以包括多个处理器,包括处理器402a、处理器402b和处理器402n。
84.装置400还可以包括被配置为存储数据(例如,一组指令、计算机代码、中间数据等)的存储器404。例如,如图4所示,所存储的数据可以包括程序指令(例如,用于实现图2和图3中的阶段的程序指令)和用于处理的数据(例如,视频序列202、视频位流228或视频流304)。处理器402可以访问用于处理的程序指令和数据(例如,经由总线410),并且执行程序
指令以对用于处理的数据执行操作或操纵。存储器404可以包括高速随机存取存储设备或非易失性存储设备。在一些实施例中,存储器404可以包括任意数量的随机存取存储器(ram)、只读存储器(rom)、光盘、磁盘、硬盘驱动器、固态驱动器、闪存驱动器、安全数字(sd)卡、记忆棒、紧凑型闪存(cf)卡等的任意组合。存储器404也可以是被分组为单个逻辑组件的一组存储器(图4中未示出)。
85.总线410可以是在设备400内部的组件之间传输数据的通信设备,诸如内部总线(例如,cpu-存储器总线)、外部总线(例如,通用串行总线端口、外围组件互连快速端口),或者类似物。
86.为了便于解释而不引起歧义,在本公开中,处理器402和其他数据处理电路统称为“数据处理电路”。数据处理电路可以完全实现为硬件,或者实现为软件、硬件或固件的组合。此外,数据处理电路可以是单个独立模块,或者可以完全或部分地组合到设备400的任何其他部件中。
87.设备400还可以包括网络接口406,以提供与网络(例如,因特网、内联网、局域网、移动通信网络等)的有线或无线通信。在一些实施例中,网络接口406可以包括任何数量的网络接口控制器(nic)、射频(rf)模块、应答器、收发器、调制解调器、路由器、网关、有线网络适配器、无线网络适配器、蓝牙适配器、红外适配器、近场通信(“nfc”)适配器、蜂窝网络芯片等中的任意组合。
88.在一些实施例中,可选地,装置400可以进一步包括外围接口408,以提供到一个或多个外围设备的连接。如图4所示,外围设备可以包括但不限于光标控制设备(例如,鼠标、触摸板或触摸屏)、键盘、显示器(例如,阴极射线管显示器、液晶显示器、或发光二极管显示器)、视频输入设备(例如,相机或耦合到视频档案的输入接口)等。
89.应当注意的是,视频编解码器(例如,执行编码器200或解码器300的过程的编解码器)可以被实现为装置400中的任何软件或硬件模块的任何组合。例如,过程编码器200或解码器300的一些或所有阶段可以被实现为装置400的一个或多个软件模块,例如可以被加载到存储器404中的程序指令。对于另一示例,过程编码器200或解码器300的一些或所有阶段可以被实现为装置400的一个或多个硬件模块,例如专用数据处理电路(例如,fpga、asic、npu等)。
90.如上所述,可以使用不同的模式来实现视频编码或解码过程。在一些正常的帧间编码模式中,编码器200可以按每个cu用信号通知mv、每个参考图像列表的对应参考图像索引和参考图像列表使用标志、或其他信息。另一方面,当用跳过模式和/或直接模式编码cu时,包括参考索引和运动矢量的运动信息不在视频位流228中用信号通知至解码器300。相反,可以在解码器300处使用与编码器200相同的规则来导出运动信息。
91.例如,当用跳过模式编码cu时,cu与一个pu相关联,并且没有显著的残差系数,没有编码的mv增量或参考图像索引。在跳过模式下,可以通过将残差设置为零来跳过残差数据的信号通知。在直接模式下,在导出运动信息和分区的同时传输残差数据。与用信号通知运动信息的帧间模式相比,因此可以在跳过模式或直接模式中将专用于运动信息的位节省。
92.在一些实施例中,编码器200和解码器300需要遵循标准中规定的规则来导出运动矢量和参考索引以执行帧间预测2044。在一些实施例中,跳过模式和直接模式可以共享相
同的运动信息推导规则。运动信息的推导可以基于空间或时间相邻块。因此,跳过模式和直接模式适用于当前块的运动信息接近当前块的空间或时间相邻块的运动信息的情况。
93.例如,在avs3中,跳过模式或直接模式可以使得运动信息(例如,参考索引、mv等)能够从空间或时间(共同定位)相邻者继承。可以从这些相邻者生成运动候选的候选列表。在一些实施例中,为了在跳过模式或直接模式下导出用于帧间预测2044的运动信息,编码器200可以先导出运动候选的候选列表并选择运动候选中的一个以执行帧间预测2044。当用信号通知视频位流228时,编码器200可以用信号通知所选候选的索引。在解码器侧,解码器300可以获得从视频位流228解析的索引,导出相同的候选列表,并且使用相同的运动候选来执行帧间预测2044。
94.运动候选的候选列表可以包括基于不同方法获得的多个候选。例如,在avs3规范中,候选列表可以具有12个候选,包括时间运动矢量预测(tmvp)候选、一个或多个空间运动矢量预测(smvp)候选、一个或多个运动矢量角预测(mvap)候选、以及一个或多个基于历史的运动矢量预测(hmvp)候选。在一些实施例中,编码器或解码器可以首先导出并添加候选列表中的tmvp和smvp候选。添加tmvp和smvp候选后,编码器或解码器导出并添加mvap候选和hmvp候选。在一些实施例中,存储在候选列表中的mvap候选的数量可以根据mvap过程中可用方向的数量而变化。例如,mvap候选的数量可以在0到最大数量(例如,5)之间。在添加mvap候选之后,可以将一个或多个hmvp候选添加到候选列表中,直到候选总数达到目标数量(例如,avs3规范中的12个候选)。
95.图5示出了与本公开的一些实施例一致的示例性视频编码方法500的流程图。在一些实施例中,视频编码方法500可以由编码器(例如,图2中的编码器200)执行以生成与视频帧相关联的视频位流。例如,编码器可以被实现为用于对视频序列(例如,图2中202的视频序列)进行编码或转码的装置(例如,图4中的装置400)的一个或多个软件或硬件组件以生成用于视频帧或包括一个或多个cu的视频序列的位流(例如,图2中的视频位流228)。例如,处理器(例如,图4中的处理器402)可以执行视频编码方法500。
96.参考视频编码方法500,在步骤510-570,编码器导出用于帧间预测的候选列表。在步骤510,编码器将与当前cu相关联的tmvp候选存储为候选列表中的运动候选之一。在一些实施例中,tmvp可以从某一参考帧中的并置块的mv导出。这里的某个参考帧被指定为b帧(即双向预测图像)的参考图像列表1(即列表1)或p帧(即预测图像)的参考图像列表0(即,list0)中参考索引为0的参考帧。当并置块的mv不可用时,根据空间相邻块的mv导出的mv预测器(mvp)可以用作tmvp。
97.在步骤520,编码器将与当前cu相关联的一个或多个smvp候选存储为候选列表中的一个或多个运动候选。现在参考图6,其示出了与本公开的一些实施例一致的用于导出一cu 610的空间运动矢量预测(smvp)的示例性相邻块620a、620b、620c、620d、620f和620g。
98.在一些实施例中,候选列表可以包括与当前cu相关联的三个smvp候选。如图6所示,这些smvp候选可从cu 610的相邻块620f、620g、620c、620b、620a和620d导出。例如,第一smvp候选可以是双预测候选,第二smvp候选可以是参考图像列表0(即,refpiclist0或list0)中具有参考帧的单向预测候选,并且第三smvp候选可以是参考图像列表1(即,refpiclist 1或列表1)中具有参考帧的单向预测候选。每个参考图像列表可以包括零个或更多个参考图像。在一些实施例中,以上提到的这些smvp候选以指定的顺序被设置为六个
相邻块620f、620g、620c、620b、620a和620d的第一可用mv,但是本公开不限于此。
99.回到参考图5,在步骤530,编码器确定当前cu是否具有大于阈值宽度(例如,8个像素)的宽度或大于阈值高度(例如,8个像素)的高度。响应于编码单元(步骤530-是)具有大于阈值宽度的宽度或大于阈值高度的高度,在步骤540,编码器启用一mvap过程以获得一个或多个mvap候选。在步骤550,编码器将获得的mvap候选存储在候选列表中。mvap流程的详细信息将在以下段落中讨论。
100.响应于当前cu具有等于阈值宽度的宽度和等于阈值高度的高度(步骤530-否),编码器在步骤560处禁用mvap过程。因此,不执行步骤540和550,并且编码器导出候选列表而不将mvap候选存储在候选列表中。
101.在步骤570,编码器在候选中存储与当前cu相关联的一个或多个hmvp候选。hmvp可以从先前编码或解码的块的运动信息中导出。例如,在对帧间编码块进行编码(或解码)之后,图2中的编码器200(或图3中的解码器300)可以将与编码/解码块相关联的运动信息添加到hmvp表的最后条目。在一些实施例中,可以将hmvp表的尺寸设置为8,但本公开不限于此。在将新的运动候选插入到表中时,可以使用受约束的先进先出(fifo)规则。可以首先应用冗余校验来确定表中是否已经存在相同的运动候选。如果在表中找到相同的运动候选,则可以将该候选移动到表的最后一个条目中,而不是插入新的相同条目。hmvp表中的多个候选用作跳过模式和直接模式的hmvp候选。
102.在一些实施例中,编码器可以首先检查存储在hmvp表中的hmvp候选是否与候选列表中的任何运动候选相同。响应于hmvp与候选列表中的运动候选不同,编码器将hmvp候选存储在候选列表中。此过程可以称为“修剪”过程。
103.例如,hmvp表可以从它的最后一个条目到它的第一个条目进行检查。如果hmvp表中的候选与候选列表中的任何候选(例如,tmvp或smvp候选)不相同,则将hmvp表中的候选作为hmvp候选放入候选列表中。如果hmvp表中的候选与tmvp候选或smvp候选之一相同,则不会将该候选放入候选列表中以避免冗余。
104.在步骤510-570中导出与用于帧间预测的当前cu相关联的候选列表之后,在步骤580,编码器根据候选列表中选择的运动候选对cu执行帧间预测(例如,图2中帧间预测2044)。然后,在步骤590,编码器可以用信号通知与视频帧相关联的位流(例如,图2中的视频位流228)。位流可以包括以跳过模式或直接模式编码的cu和所选择的运动候选的索引。
105.如上所述,由编码器200使用视频编码方法500生成的视频位流228可以由解码器300通过逆运算来解码。图7是与本发明的一些实施例一致的对应于图5中的视频编码方法500的示例性视频解码方法700。在一些实施例中,可以由解码器(例如,图3中的解码器300)执行视频解码方法700以解码图3中的视频位流228。例如,解码器可以被实现为用于对位流(例如,图3中的视频位流228)进行解码的装置(例如,图4中的装置400)的一个或多个软件或硬件组件,以重建位流的视频帧或视频序列(例如,图3中的视频流304)。例如,处理器(例如,图4中的处理器402)可以执行视频解码方法700。
106.参考视频解码方法700,在步骤710,解码器接收位流(例如,图3中228的视频位流)。从编码器侧接收的位流包括视频帧的一个或多个cu,以及在跳过模式或直接模式中编码的针对cu的所选运动候选的索引。
107.在步骤720-780,类似于视频编码方法500的步骤510-570,解码器还导出用于帧间
预测的相同候选列表。在步骤720,解码器将与当前cu相关联的tmvp候选存储为候选列表中的运动候选之一。在步骤730,解码器将与当前cu相关联的一个或多个smvp候选存储为候选列表中的一个或多个运动候选。在步骤740,解码器确定当前cu是否具有大于阈值宽度的宽度或大于阈值高度的高度。响应于一编码单元具有大于阈值宽度的宽度或大于阈值高度的(步骤740-是),在步骤750,解码器启用mvap过程以获得与当前cu相关联的一个或多个mvap候选。在步骤760,解码器将获得的一个或多个mvap候选存储在候选列表中。响应于编码单元具有等于阈值宽度的宽度和等于阈值高度的高度(步骤740-否),解码器在步骤770处禁用mvap过程。因此,不执行步骤750和760,并且解码器导出候选列表而不将一个或多个mvap候选存储在候选列表中。在步骤780,解码器将一个或多个hmvp候选存储在候选中。
108.在由解码器执行的步骤720-780中导出候选列表的操作类似于由编码器执行的步骤510-570的操作,这些操作先前已经详细讨论过,因此在此不再重复。
109.在导出与用于帧间预测的当前cu相关联的候选列表之后,在步骤790,解码器根据候选列表和从位流解析的索引对cu执行帧间预测。通过从位流解析的所述索引,解码器可以为解码器侧的帧间预测选择相同的运动候选,并且因此重建包括在跳过模式或直接模式中编码的cu的位流的视频帧或视频序列。
110.在上面提到的mvap过程中,一个cu被分成多个子块(例如,8
×
8个子块),并且每个子块具有其自己的运动信息。如果将mvap过程应用于具有阈值大小(例如,8
×
8)的多个cu,则一个cu仅包括一个子块。结果,cu的子块的mvap候选可能与smvp候选相同,这导致候选列表的冗余。通过在方法500和方法700中对大于阈值大小(例如,8
×
8)的cu应用mvap过程,可以去除跳过模式和直接模式的候选列表中的潜在冗余。
111.此外,通过禁用具有阈值大小的cu的mvap过程,用于构建候选列表的循环数可以小于用于较大cu的循环数。因此,可以简化候选列表构建,这可以减少编码器和解码器所需的硬件资源。
112.图8示出了与本公开的一些实施例相一致的与编码单元相关联的示例性mvap过程800的流程图。如图8所示,mvap过程800包括步骤810、820、830、842、844和850。在一些实施例中,作为帧间预测模式之一的mvap模式可以应用于宽度和高度大于4个像素的cu以执行mvap过程800。
113.在步骤810,编码器200或解码器300将编码单元划分成子块。现在参考图9,其示出了与本公开的一些实施例一致的在与mvap过程中的视频帧900相关联的编码单元910中的子块s1-s8。在mvap过程中,cu910被分割成子块s1-s8。在一些实施例中,每个子块s1-s8的大小是8
×
8。对于每个8
×
8子块,从参考运动信息预测包括参考索引和mv的运动信息。如图9所示,当前cu 910中的子块s3的参考运动信息是当前cu 910在d0-d4的五个不同方向上的水平和垂直相邻块920和930的运动信息(例如,参考mv)。例如,方向d0被称为水平方向,方向d1被称为垂直方向,方向d2被称为水平向上方向,方向d3被称为水平向下方向,方向d4被称为垂直向下方向。
114.图10示出了与本公开的一些实施例一致的用于在mvap过程中使用的示例性参考运动信息列表1000。对于以mvap模式编码的m
×
n cu,用相邻块的运动信息填充参考运动信息列表。参考运动信息列表1000的数量和大小以4
×
4为单位为(2m/4+2n/4+1)。例如,如图10所示,对于32
×
16cu 910,参考运动信息列表1000包括25个4
×
4单元u0-u24。
115.通过执行步骤820、830、842和844,编码器200或解码器300在参考运动信息列表1000中填充一个或多个参考单元(例如,图10中的参考单元u0-u24)。在步骤820,编码器200或解码器300将编码单元(例如,图10中cu 910)的一个或多个相邻块的运动信息填充到参考列表(例如,图10的参考运动信息列表1000)中的一个或多个参考单元(例如,图10中的一个或多个参考单元u0-u24),如果运动信息可用的话。
116.可选地,在图8的步骤820,可用的运动信息被复制到一个或多个参考单元u0-u24中的对应一个。对于一些相邻块,如果相邻块以帧内编码模式编码,则运动信息可能是不可用的,并且对应的参考单元u0-u24保持空白。
117.在步骤830,为了减少冗余候选,编码器200或解码器300通过检查每个预测方向的可用性,从五个预测方向(例如,图9中的方向d0-d4)中选择一个或多个可用方向。例如,编码器200或解码器300可以通过比较参考运动信息来检查五个预测方向的可用性。在一些实施例中,为了降低复杂度,在比较中涉及4
×
4单元u0-u24的子集,而不是比较4
×
4单元u0-u24中的每一个的运动信息。4
×
4单元u0-u24的子集可以根据不同预测方向d0-d4而不同。
118.在图10提供的一个示例中,对于方向d0,比较单元u11和u9中的mv。对于d1方向,比较单元u13和u17中的mv。对于方向d2,比较单位u11、u12和u13的mv。对于方向d3,比较单位u3、u7和u9的mv。对于方向d4,比较单元u17、u21和u23中的mv。请注意,本文公开的比较中使用的4
×
4单元u0-u24的子集仅仅是示例,并不意味着限制本公开。在各种实施例中,可以使用不同的子集。
119.当4
×
4单元的子集的运动信息不相同时,相应的预测方向可用。例如,如果单元u11中的运动信息与单元u9中的运动信息不相同,则对应的预测方向d0可用,并且可以获得与方向d0对应的mvap候选。在一些实施例中,如果4
×
4单元的子集的运动信息中的任一个不可用,则认为4
×
4单元的子集的运动信息相同。
120.如果4
×
4单元的子集的运动信息相同,则相应的预测方向不可用。例如,如果单元u11中的运动信息与单元u9中的运动信息相同,则对应的预测方向d0不可用,并且将无法获得与方向d0对应的mvap候选。可选地,根据可用一个或多个方向的数量,mvap候选的数量在0到5的范围内。
121.回到参考图8,在步骤842和844,编码器200或解码器300基于预定义的运动信息或相邻参考单元中的运动信息填充运动信息不可用的剩余一个或多个参考单元。特别地,在步骤842,如果与第一参考单元相关联的运动信息不可用,则编码器200或解码器300用预定义的运动信息填充参考列表中的第一参考单元(例如,单元u0)。在步骤844,如果与剩余一个或多个参考单元相关联的运动信息不可用,则编码器200或解码器300用填充在参考列表中的先前相邻参考单元中的运动信息填充剩余一个或多个参考单元(例如,一个或多个单元u1-u24)。
122.图11a示出了与本公开的一些实施例一致的在步骤842和844中填充用于mvap过程的参考运动信息列表的示例性过程。在一些实施例中,可以从左下单元(例如,单元u0)到右上单元(例如,单元u24)检查运动信息的可用性。在参考运动信息列表的第一条目(例如,左下单元u0)的运动信息不可用的情况下,在第一条目中填充预定义的运动信息1110。例如,在一些实施例中,编码器200或解码器300可以用零运动矢量和被设置为零的参考索引来填充第一参考单元。在一些其它实施例中,编码器200或解码器300可以用存储在hmvp表的最
后条目中的运动信息填充第一参考单元。在又一些其他实施例中,编码器200或解码器300可以用tmvp候选或smvp候选的运动信息填充第一参考单元。
123.在步骤844,在任何单元u1-u24的运动信息不可用的情况下,可以从底部或左侧相邻的4
×
4单元复制运动信息。例如,如果单元u10的运动信息不可用,则单元u10用来自底部相邻单元u9的运动信息来填充,如图11a所示。如果单元u20的运动信息不可用,则单元u20用来自左相邻单元u19的运动信息填充,如图11a所示。
124.图11b示出了与本公开的一些实施例一致的填充用于mvap过程的参考运动信息列表的另一示例性过程。在图11b的实施例中,如果左下单元u0的运动信息不可用,则单元u0用参考运动信息列表中找到的第一可用运动信息(例如,单元u6)来填充,如图11b所示。
125.与图11b的实施例相比,在左下单元u0的运动信息不可用的情况下,通过执行mvap过程800并在步骤832分配预定义的运动信息,不需要编码器200或解码器300来搜索图11b所示的第一可用运动信息。因此,可以实现填充参考运动信息列表简化的且硬件友好的过程。
126.回到参考图8,在步骤820-844之后,用运动信息填充参考运动信息列表中的每个参考单元。然后,在步骤850,编码器200或解码器300可以执行mvap过程,以通过根据一个或多个预测方向使用参考列表来获得每个子块的一个或多个mvap候选。
127.在一些实施例中,可以根据所选择的预测方向从参考运动信息列表中预测每个8
×
8子块的mvap候选。图12a-12e示出了与本公开的一些实施例一致的每个子块s1-s8的示例性mvap候选。如图12a所示,在预测方向d0上,子块s1、s2、s3和s4的mvap候选可以是填充在参考单元u11中的运动信息,并且子块s5、s6、s7和s8的mvap候选可以是填充在参考单元u9中的运动信息。
128.如图12b所示,在预测方向d1,子块s1和s5的mvap候选可以是填充在参考单元u13中的运动信息,子块s2和s6的mvap候选可以是填充在参考单元u15中的运动信息,子块s3和s7的mvap候选可以是填充在参考单元u17中的运动信息,并且子块s4和s8的mvap候选可以是填充在参考单元u19中的运动信息。
129.如图12c所示,在预测方向d2上,子块s5的mvap候选可以是填充在参考单元u10中的运动信息,子块s1和s6的mvap候选可以是填充在参考单元u12中的运动信息,子块s2和s7的mvap候选可以是填充在参考单元u14中的运动信息,子块s3和s8的mvap候选可以是填充在参考单元u16中的运动信息,并且子块s4的mvap候选可以是填充在参考单元u18中的运动信息。
130.如图12d所示,在预测方向d3,子块s1的mvap候选可以是填充在参考单元u9中的运动信息,子块s2和s5的mvap候选可以是填充在参考单元u7中的运动信息,子块s3和s6的mvap候选可以是填充在参考单元u5中的运动信息,子块s4和s7的mvap候选可以是填充在参考单元u3中的运动信息,并且子块s8的mvap候选可以是填充在参考单元u1中的运动信息。
131.如图12e所示,在预测方向d4,子块s1的mvap候选可以是填充在参考单元u15中的运动信息,子块s2和s5的mvap候选可以是填充在参考单元u17中的运动信息,子块s3和s6的mvap候选可以是填充在参考单元u19中的运动信息,子块s4和s7的mvap候选可以是填充在参考单元u21中的运动信息,并且子块s8的mvap候选可以是填充在参考单元u23中的运动信息。如图12a-12e所示,mv预测可以应用于在当前块内的8
×
8个子块s1-s8。因此,mvap候选
是子块级别候选,并且在当前块内的不同子块s1-s8可以具有不同的mv。
132.图13示出了与本公开的一些实施例一致的另一示例性mvap过程1300的流程图。与mvap过程800相比,在mvap过程1300中,编码器200或解码器300可以绕过步骤820并启用用于编码单元的mvap过程,而无需检查预测方向的可用性。因此,编码器200或解码器300可以根据五个预测方向d0-d4来导出存储运动候选的候选列表,所述运动候选包括针对每个子块的五个mvap候选(例如,图12a-12e中所示的mvap候选)。
133.图14示出了与本公开的一些实施例一致的另一示例性mvap过程1400的流程图。与图8中的mvap过程800相比或与图13中的mvap过程1300相比,在mvap过程1400中,编码器200或解码器300可以在步骤820中填充可用的运动信息之后执行步骤1410-1430。
134.在步骤1410,编码器200或解码器300对填充有可用运动信息的一个或多个参考单元的数量进行计数。在步骤1420,编码器200或解码器300确定填充有可用运动信息的一个或多个参考单元的数量是否达到预定阈值或百分比(例如,总数的25%或50%)。
135.响应于填充有可用运动信息的参考单元的数量达到阈值(步骤1420-是),编码器200或解码器300启用编码单元的运动矢量角预测过程,并继续执行步骤842、844和850。因此,编码器200或解码器300可以根据五个预测方向d0-d4来导出存储运动候选的候选列表,所述运动候选包括针对每个子块的五个mvap候选(例如,图12a-12e中所示的mvap候选)。
136.响应于填充有可用运动信息的参考单元的数量小于阈值(步骤1420-否),编码器200或解码器300在步骤1430禁用当前cu的mvap过程。因此,编码器200或解码器300导出候选列表,而不将mvap候选存储在候选列表中。
137.在一些实施例中,在步骤830中执行的运动信息比较对于硬件实现是复杂的。通过消除图13中mvap过程1300中的比较步骤830或图14中的mvap过程1400,可以简化mvap候选的推导,这降低了计算复杂度并提供了更有效的处理。
138.在图13中的mvap过程1300中,填充参考运动信息列表的步骤可以简化为步骤820、842和844。在步骤820中,将可用的运动信息复制并填充到参考单元。在步骤842和844中,由于不可用运动信息而产生的剩余参考单元可以由预定运动信息或在相邻参考单元中填充的运动信息来填充。
139.在图14中的mvap过程1400中,如果相邻块中的可用运动信息不足以预测准确的mvap候选,则可以禁用和终止mvap过程。因此,与图13中的mvap过程1300相比,可以通过稍微增加的编码复杂度来提高编码效率。
140.鉴于以上描述,如在本公开的各种实施例中提出的,通过使用简化的mvap过程以跳过模式或直接模式对位流进行编码和解码,可以根据编码单元的大小启用或禁用mvap过程。因此,可以降低编码和解码复杂度。此外,在一些实施例中,通过在参考列表中的第一条目不可用时分配预定义的运动信息,在提交参考列表时不需要搜索参考列表的第一可用运动信息。因此,可以实现简化且硬件友好的mvap过程。此外,在一些实施例中,mvap过程中的运动信息比较步骤可以被消除或替换为简化的方法,以进一步降低编码和解码复杂度。
141.本文描述的各种示例性实施例是在方法步骤或过程的一般上下文中描述的,所述方法步骤或过程可以在一个方面由计算机可读介质中体现的计算机程序产品实现,所述计算机可读介质包括由联网环境中的计算机执行的计算机可执行指令,例如程序代码。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据
结构等。计算机可执行指令、相关联的数据结构和程序模块表示用于执行本文所公开的方法的步骤的程序代码的示例。这样的可执行指令或相关联的数据结构的特定序列表示用于实现在这样的步骤或过程中描述的功能的相应动作的示例。
142.在一些实施例中,还提供了包括指令的非暂时性计算机可读存储介质,并且所述指令可以由设备(诸如所公开的编码器和解码器)执行,用于执行上述方法。非暂时性介质的常见形式包括,例如,软盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、cd-rom、任何其他光学数据存储介质、任何具有孔图案的物理介质、ram、prom和eprom、flash-eprom或任何其他闪存、nvram、高速缓存、寄存器、任何其他存储芯片或盒式存储,以及它们的联网版本。该设备可以包括一个或多个处理器(cpu)、输入/输出接口、网络接口或存储器。
143.应该注意的是,本文中的关系术语,例如“第一”和“第二”,仅用于将实体或操作与另一实体或操作区分开来,并不要求或暗示这些实体或操作之间的任何实际关系或顺序。此外,词语“包括”、“具有”、“包含”和“包括”和其他类似的形式在在含义上是等效的,并且是开放式的,因为在这些词语中的任何一个后面的一个或多个项目并不意味着是这样一个或多个项目的详尽列表,或者意味着仅限于列出的一个或多个项目。
144.如本文所用,除非另有特别说明,术语“或”包括所有可能的组合,除非在不可行的情况下。例如,如果声明数据库可包括a或b,则除非另有明确声明或不可行,否则数据库可包括a、或b、或a和b。作为第二示例,如果声明数据库可以包括a、b或c,则除非另有明确说明或不可行,否则数据库可以包括a、或b、或c、或a和b、或a和c、或b和c、或a,b和c。
145.应当理解,上述实施例可以通过硬件、或软件(程序代码)、或硬件和软件的组合来实现。如果通过软件实现,则可以将其存储在上述计算机可读介质中。该软件在由处理器执行时可以执行所公开的方法。本公开中描述的计算单元和其他功能单元可以通过硬件、软件或硬件和软件的组合来实现。本领域普通技术人员还将理解,可以将上述多个模块/单元组合为一个模块/单元,并且可以将上述模块/单元中的每一个进一步划分为多个子模块/子单元。
146.在前面的说明书中,已经参考许多具体细节描述了实施例,这些具体细节可以随实施而变化。可以对所描述的实施例进行某些修改和改变。其他实施例对于本领域技术人员来说,从本文公开的说明书和实施的考虑来看是显而易见的。本说明书和实施例仅被认为是示例性的,本发明的真正范围和精神由所附权利要求指示。还附图所示的步骤序列仅用于说明目的,而不旨在限于任何特定的步骤序列。因此,本领域技术人员可以理解,这些步骤可以在实施相同方法的同时执行不同的顺序。
147.可以使用以下条款进一步描述实施例:1、一种视频解码方法,其特征在于,包括:接收包括视频帧的编码单元的位流,所述编码单元以跳过模式或直接模式进行编码;确定所述编码单元是否具有大于阈值宽度的宽度或大于阈值高度的高度;响应于所述编码单元具有大于阈值宽度的宽度或大于阈值高度的高度,启用运动矢量角预测过程以将一个或多个运动矢量角预测候选存储在候选列表中,所述候选列表存储有与所述编码单元相关联的多个运动候选;以及
根据所述候选列表和从所述位流解析的索引,对所述编码单元执行帧间预测。2、根据条款1所述的方法,还包括:响应于另一编码单元具有等于所述阈值宽度的宽度和等于所述阈值高度的高度,禁用所述运动矢量角预测过程以导出所述候选列表,而不将任何运动矢量角预测候选存储在所述候选列表中,所述候选列表存储有与所述另一编码单元相关联的所述多个运动候选。3、根据条款1或条款2所述的方法,还包括:通过以下方式导出用于所述帧间预测的候选列表:将时间运动矢量预测存储为所述候选列表中的运动候选之一;将空间运动矢量预测存储为所述候选列表中的运动候选之一;以及响应于启用所述运动矢量角预测过程,将所述一个或多个运动矢量角预测候选存储为所述候选列表中的一个或多个运动候选。4、根据条款3所述的方法,其中,导出所述候选列表还包括:检查存储在hmvp表中的基于历史的运动矢量预测是否与所述候选列表中的任何运动候选相同;以及响应于所述基于历史的运动矢量预测不同于所述候选列表中的运动候选,将所述基于历史的运动矢量预测存储为所述候选列表中的运动候选之一。5、一种视频编码方法,其特征在于,包括:确定视频帧的编码单元是否具有大于阈值宽度的宽度或大于阈值高度的高度;响应于所述编码单元具有大于阈值宽度的宽度或大于阈值高度的高度,启用运动矢量角预测过程以将一个或多个运动矢量角预测候选存储候选列表中,所述候选列表存储有与所述编码单元相关联的多个运动候选;根据所述候选列表中选择的运动候选对所述编码单元执行帧间预测;以及发信号通知与所述视频帧相关联的位流,所述位流包括以跳过模式或直接模式编码的一个或多个所述编码单元以及所选择的运动候选的索引。6、根据条款5所述的方法,还包括:响应于另一编码单元具有等于所述阈值宽度的宽度和等于所述阈值高度的高度,禁用所述运动矢量角预测过程以导出所述候选列表,而不将任何运动矢量角预测候选存储在所述候选列表中,所述候选列表存储有与所述另一编码单元相关联的所述多个运动候选。7、根据条款5或条款6所述的方法,还包括:通过以下方式导出用于所述帧间预测的候选列表:将时间运动矢量预测存储为所述候选列表中的运动候选之一;将空间运动矢量预测存储为所述候选列表中的运动候选之一;以及响应于启用所述运动矢量角预测过程,将所述一个或多个运动矢量角预测候选存储为所述候选列表中的一个或多个运动候选。8、根据条款7所述的方法,其中,导出所述候选列表还包括:检查存储在hmvp表中的基于历史的运动矢量预测是否与候选列表中的任何运动候选相同;以及
响应于所述基于历史的运动矢量预测与所述候选列表中的运动候选不同,将所述基于历史的运动矢量预测存储为所述候选列表中的运动候选之一。9、一种用于运动矢量预测的方法,包括:将编码单元划分为多个子块;通过以下方式填充与所述编码单元相关联的参考列表:如果与所述参考单元相关联的相邻块的运动信息可用,则用所述编码单元的相邻块的所述运动信息填充所述参考列表中的参考单元;如果与作为所述参考列表中的第一条目的第一参考单元相关联的第一相邻块的运动信息不可用,则用预定义的运动信息填充所述第一参考单元;以及如果与剩余参考单元相关联的相邻块的运动信息不可用,则用填充在参考列表中的先前相邻参考单元中的运动信息填充剩余参考单元;以及执行运动矢量角预测过程,以通过根据一个或多个预测方向使用参考列表来获得每个子块的一个或多个运动矢量角预测候选。10、根据条款9所述的方法,其中用所述预定义的运动信息填充所述第一参考单元包括:用零运动矢量和设置为零的参考索引填充所述第一参考单元。11、根据条款9所述的方法,其中用所述预定义的运动信息填充所述第一参考单元包括:用存储在基于历史的运动矢量预测表的最后一个条目中的运动信息填充所述第一参考单元。12、根据条款9所述的方法,其中用所述预定义的运动信息填充所述第一参考单元包括:用时间运动矢量预测器(tvp)候选或空间运动矢量预测(smvp)候选的运动信息填充所述第一参考单元。13、根据条款9-12中任一项所述的方法,还包括:响应于填充有相邻块的可用运动信息的所述参考单元的数量小于阈值:禁用编码单元的运动矢量角预测过程;以及导出存储有多个运动候选的候选列表,而不将任何矢量角预测候选存储到所述候选列表。14、根据条款9-12中任一项所述的方法,还包括:响应于填充有相邻块的可用运动信息的参考单元的数量达到阈值:为所述编码单元启用所述运动矢量角预测过程;以及根据多个预测方向,导出存储多个运动候选的候选列表,所述候选列表包括针对每个子块的多个运动矢量角预测候选。15、根据条款9-12中任一项所述的方法,还包括:在不检查所述一个或多个预测方向的可用性的情况下,为所述编码单元启用所述运动矢量角预测过程;以及根据多个预测方向,导出存储多个运动候选的候选列表,所述候选列表包括针对每个子块的多个运动矢量角预测候选。
16、根据条款9-12中任一项所述的方法,还包括:通过检查每个预测方向的可用性,从多个预测方向中选择一个或多个可用方向;以及根据所述一个或多个可用方向执行所述运动矢量角预测过程,以获得所述一个或多个运动矢量角预测候选。17、根据条款16所述的方法,其中根据所述一个或多个可用方向的数量,所述一个或多个矢量角预测候选的数量在0至5之间。18、根据条款9-17中任一项所述的方法,其中,对于m
×
n编码单元,所述参考运动信息列表中的所述参考单元的数量是(2m/4+2n/4+1),m和n为整数。19、根据条款9-18中任一项所述的方法,其中所述参考运动信息列表中的所述参考单元的大小是4
×
4。20、根据条款9-19中任一项所述的方法,还包括:通过以下方式导出存储多个运动候选的候选列表:存储时间运动矢量预测和空间运动矢量预测;响应于启用所述运动矢量角预测过程,存储所述一个或多个运动矢量角预测候选;以及存储基于历史的运动矢量预测。21、一种装置,包括:存储器,所述存储器被配置为存储指令;以及处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置执行:接收包括视频帧的编码单元的位流,所述编码单元以跳过模式或直接模式进行编码;确定所述编码单元是否具有大于阈值宽度的宽度或大于阈值高度的高度;响应于所述编码单元具有大于阈值宽度的宽度或大于阈值高度的高度,启用运动矢量角预测过程以将一个或多个运动矢量角预测候选存储在候选列表中,所述候选列表存储有与所述编码单元相关联的多个运动候选;以及根据所述候选列表和从所述位流解析的索引,对所述编码单元执行帧间预测。22、根据条款21所述的装置,其中所述处理器被配置为执行所述指令以使所述装置:响应于另一编码单元具有等于所述阈值宽度的宽度和等于所述阈值高度的高度,禁用所述运动矢量角预测过程以导出所述候选列表,而不将任何运动矢量角预测候选存储在所述候选列表中,所述候选列表存储有与所述另一编码单元相关联的所述多个运动候选。23、根据条款21或条款22所述的装置,其中所述处理器被配置为执行所述指令以使所述装置:通过以下方式导出用于帧间预测的候选列表:将时间运动矢量预测存储为候选列表中的运动候选之一;将空间运动矢量预测存储为候选列表中的运动候选之一;以及
响应于启用所述运动矢量角预测过程,将所述一个或多个运动矢量角预测候选存储为所述候选列表中的一个或多个运动候选。24、根据条款23所述的装置,其中所述处理器被配置为执行所述指令以使所述装置通过以下方式导出所述候选列表:检查存储在hmvp表中的基于历史的运动矢量预测是否与所述候选列表中的任何运动候选相同;以及响应于基于历史的运动矢量预测不同于所述候选列表中的运动候选,将所述基于历史的运动矢量预测存储为所述候选列表中的运动候选之一。25、一种装置,包括:存储器,所述存储器被配置为存储指令;以及处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置执行:确定视频帧的编码单元是否具有大于阈值宽度的宽度或大于阈值高度的高度;响应于所述编码单元具有大于阈值宽度的宽度或大于阈值高度的高度,启用运动矢量角预测过程以将一个或多个运动矢量角预测候选存储到候选列表中,所述候选列表存储有与所述编码单元相关联的多个运动候选;根据所述候选列表中选择的运动候选对所述编码单元执行帧间预测;以及发信号通知与所述视频帧相关联的位流,所述位流包括以跳过模式或直接模式编码的一个或多个所述编码单元以及所选择的运动候选的索引。26、根据条款25所述的装置,其中所述处理器被配置为执行所述指令以使所述装置:响应于另一编码单元具有等于所述阈值宽度的宽度和等于所述阈值高度的高度,禁用所述运动矢量角预测过程以导出所述候选列表,而不将任何运动矢量角预测候选存储在所述候选列表中,所述候选列表存储有与所述另一编码单元相关联的所述多个运动候选。27、根据条款25或条款26所述的装置,其中所述处理器被配置为执行所述指令以使所述装置:通过以下方式导出用于所述帧间预测的候选列表:将时间运动矢量预测存储为所述候选列表中的运动候选之一;将空间运动矢量预测存储为所述候选列表中的运动候选之一;以及响应于启用所述运动矢量角预测过程,将所述一个或多个运动矢量角预测候选存储为所述候选列表中的一个或多个运动候选。28、根据条款27所述的装置,其中所述处理器被配置为执行所述指令以使所述装置通过以下方式导出所述候选列表:检查存储在hmvp表中的基于历史的运动矢量预测是否与候选列表中的任何运动候选相同;以及响应于所述基于历史的运动矢量预测与所述候选列表中的运动候选不同,将所述基于历史的运动矢量预测存储为所述候选列表中的运动候选之一。29、一种装置,包括:
存储器,所述存储器被配置为存储指令;以及处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置执行:将编码单元划分为多个子块;通过以下方式填充与编码单元相关联的参考列表:如果与所述参考单元相关联的相邻块的运动信息可用,则用所述编码单元的相邻块的运动信息填充所述参考列表中的参考单元;如果与作为参考列表中的第一条目的第一参考单元相关联的第一相邻块的运动信息不可用,则用预定义的运动信息填充所述第一参考单元;以及如果与剩余参考单元相关联的相邻块的运动信息不可用,则用填充在参考列表中的先前相邻参考单元中的运动信息填充剩余参考单元;以及执行运动矢量角预测过程,以通过根据一个或多个预测方向使用所述参考列表来获得每个子块的一个或多个运动矢量角预测候选。30、根据条款29所述的装置,其中所述处理器被配置为执行所述指令以使所述装置通过以下方式用所述预定义的运动信息填充所述第一参考单元:用零运动矢量和设置为零的参考索引填充所述第一参考单元。31、根据条款29所述的装置,其中所述处理器被配置为执行所述指令以使所述装置通过以下方式用所述预定义的运动信息填充所述第一参考单元:用存储在基于历史的运动矢量预测器表的最后一个条目中的运动信息填充所述第一参考单元。32、根据条款29所述的装置,其中所述处理器被配置为执行所述指令以使所述装置通过以下方式用所述预定义的运动信息填充所述第一参考单元:用时间运动矢量预测(tmvp)候选或空间运动矢量预测(smvp)候选的运动信息填充所述第一参考单元。33、根据条款29-32中任一项所述的装置,其中所述处理器被配置为执行所述指令以使所述装置:响应于填充有所述相邻块的所述可用运动信息的参考单元的数量小于阈值:禁用所述编码单元的运动矢量角预测过程;以及导出存储有多个运动候选的候选列表,而不将任何矢量角预测候选存储到所述候选列表。34、根据条款29-32中任一项所述的装置,其中所述处理器被配置为执行所述指令以使所述装置:响应于填充有所述相邻块的可用运动信息的参考单元的数量达到阈值:为所述编码单元启用运动矢量角预测过程;以及根据多个预测方向,导出存储多个运动候选的候选列表,所述候选列表包括针对每个子块的多个运动矢量角预测候选。35、根据条款29-32中任一项所述的装置,其中所述处理器被配置为执行所述指令以使所述装置:在不检查所述一个或多个预测方向的可用性的情况下,为所述编码单元启用所述
运动矢量角预测过程;以及根据多个预测方向,导出存储多个运动候选的候选列表,所述候选列表包括针对每个子块的多个运动矢量角预测候选。36、根据条款29-32中任一项所述的装置,其中所述处理器被配置为执行所述指令以使所述装置:通过检查每个预测方向的可用性,从多个预测方向中选择一个或多个可用方向;以及根据所述一个或多个可用方向执行所述运动矢量角预测过程,以获得所述一个或多个运动矢量角预测候选。37、根据条款36所述的装置,其中根据所述一个或多个可用方向的数量,所述一个或多个矢量角预测候选的数量在0至5之间。38、根据条款29-37中任一项所述的装置,其中对于m
×
n编码单元,所述参考运动信息列表中的所述参考单元的数量是(2m/4+2n/4+1),m和n为整数。39、根据条款29-38中任一项所述的装置,其中所述参考运动信息列表中的所述参考单元的大小是4
×
4。40、根据条款29-39中任一项所述的装置,其中所述处理器被配置为执行所述指令以使所述装置:通过以下方式导出存储多个运动候选的候选列表:存储时间运动矢量预测和空间运动矢量预测;响应于启用所述运动矢量角预测过程,存储所述一个或多个运动矢量角预测候选;以及存储基于历史的运动矢量预测。41、一种非暂时性计算机可读存储介质,其存储有指令集,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于解码视频的方法,包括:接收包括视频帧的编码单元的位流,所述编码单元以跳过模式或直接模式进行编码;确定所述编码单元是否具有大于阈值宽度的宽度或大于阈值高度的高度;响应于所述编码单元具有大于阈值宽度的宽度或大于阈值高度的高度,启用运动矢量角预测过程以将一个或多个运动矢量角预测候选存储在候选列表中,所述候选列表存储有与所述编码单元相关联的多个运动候选;以及根据所述候选列表和从所述位流解析的索引,对所述编码单元执行帧间预测。42、根据条款41所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:响应于另一编码单元具有等于所述阈值宽度的宽度和等于所述阈值高度的高度,禁用所述运动矢量角预测过程以导出所述候选列表,而不将任何运动矢量角预测候选存储在所述候选列表中,所述候选列表存储有与所述另一编码单元相关联的所述多个运动候选。43、根据条款41或条款42所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:
通过以下方式导出用于帧间预测的候选列表:将时间运动矢量预测存储为候选列表中的运动候选之一;将空间运动矢量预测存储为候选列表中的运动候选之一;以及响应于启用所述运动矢量角预测过程,将所述一个或多个运动矢量角预测候选存储为所述候选列表中的一个或多个运动候选。44、根据条款43所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步通过以下方式执行导出所述候选列表:检查存储在hmvp表中的基于历史的运动矢量预测是否与所述候选列表中的任何运动候选相同;以及响应于基于历史的运动矢量预测不同于所述候选列表中的运动候选,将所述基于历史的运动矢量预测存储为所述候选列表中的运动候选之一。45、一种非暂时性计算机可读存储介质,存储有指令集,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于对视频进行编码的方法,包括:确定视频帧的编码单元是否具有大于阈值宽度的宽度或大于阈值高度的高度;响应于所述编码单元具有大于阈值宽度的宽度或大于阈值高度的高度,启用运动矢量角预测过程以将一个或多个运动矢量角预测候选存储到候选列表中,所述候选列表存储有与所述编码单元相关联的多个运动候选;根据所述候选列表中选择的运动候选对所述编码单元执行帧间预测;以及发信号通知与所述视频帧相关联的位流,所述位流包括以跳过模式或直接模式编码的一个或多个所述编码单元以及所选择的运动候选的索引。46、根据条款45所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:响应于另一编码单元具有等于所述阈值宽度的宽度和等于所述阈值高度的高度,禁用所述运动矢量角预测过程以导出所述候选列表,而不将任何运动矢量角预测候选存储在所述候选列表中,所述候选列表存储有与所述另一编码单元相关联的所述多个运动候选。47、根据条款45或条款46所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:通过以下方式导出用于所述帧间预测的候选列表:将时间运动矢量预测存储为所述候选列表中的运动候选之一;将空间运动矢量预测存储为所述候选列表中的运动候选之一;以及响应于启用所述运动矢量角预测过程,将所述一个或多个运动矢量角预测候选存储为所述候选列表中的一个或多个运动候选。48、根据条款47所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步通过以下方式执行导出所述候选列表:检查存储在hmvp表中的基于历史的运动矢量预测是否与候选列表中的任何运动候选相同;以及
响应于所述基于历史的运动矢量预测与所述候选列表中的运动候选不同,将所述基于历史的运动矢量预测存储为所述候选列表中的运动候选之一。49、一种非暂时性计算机可读存储介质,存储有指令集,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于运动矢量预测的方法,包括:将编码单元划分为多个子块;通过以下方式填充与编码单元相关联的参考列表:如果与所述参考单元相关联的相邻块的运动信息可用,则用所述编码单元的相邻块的运动信息填充所述参考列表中的参考单元;如果与作为参考列表中的第一条目的第一参考单元相关联的第一相邻块的运动信息不可用,则用预定义的运动信息填充所述第一参考单元;以及如果与剩余参考单元相关联的相邻块的运动信息不可用,则用填充在参考列表中的先前相邻参考单元中的运动信息填充剩余参考单元;以及执行运动矢量角预测过程,以通过根据一个或多个预测方向使用所述参考列表来获得每个子块的一个或多个运动矢量角预测候选。50、根据条款49所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备通过以下方式用所述预定义的运动信息填充所述第一参考单元:用零运动矢量和设置为零的参考索引填充所述第一参考单元。51、根据条款49所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备通过以下方式用所述预定义的运动信息填充所述第一参考单元:用存储在基于历史的运动矢量预测器表的最后一个条目中的运动信息填充所述第一参考单元。52、根据条款49所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备通过以下方式用所述预定义的运动信息填充所述第一参考单元:用时间运动矢量预测(tmvp)候选或空间运动矢量预测(smvp)候选的运动信息填充所述第一参考单元。53、根据条款49-52中任一项所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:响应于填充有所述相邻块的所述可用运动信息的参考单元的数量小于阈值:禁用所述编码单元的运动矢量角预测过程;以及导出存储有多个运动候选的候选列表,而不将任何矢量角预测候选存储到所述候选列表。54、根据条款49-52中任一项所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:响应于填充有所述相邻块的可用运动信息的参考单元的数量达到阈值:为所述编码单元启用运动矢量角预测过程;以及根据多个预测方向,导出存储多个运动候选的候选列表,所述候选列表包括针对
每个子块的多个运动矢量角预测候选。55、根据条款49-52中任一项所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:在不检查所述一个或多个预测方向的可用性的情况下,为所述编码单元启用所述运动矢量角预测过程;以及根据多个预测方向,导出存储多个运动候选的候选列表,所述候选列表包括针对每个子块的多个运动矢量角预测候选。56、根据条款49-52中任一项所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:通过检查每个预测方向的可用性,从多个预测方向中选择一个或多个可用方向;以及根据所述一个或多个可用方向执行所述运动矢量角预测过程,以获得所述一个或多个运动矢量角预测候选。57、根据条款56所述的非暂时性计算机可读存储介质,其中根据所述一个或多个可用方向的数量,所述一个或多个矢量角预测候选的数量在0至5之间。58、根据条款49-57中任一项所述的非暂时性计算机可读存储介质,其中,对于m
×
n编码单元,所述参考运动信息列表中的所述参考单元的数量是(2m/4+2n/4+1),m和n为整数。59、根据条款49-58中任一项所述的非暂时性计算机可读存储介质,其中所述参考运动信息列表中的所述参考单元的大小是4
×
4。60、根据条款49-59中任一项所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:通过以下方式导出存储多个运动候选的候选列表:存储时间运动矢量预测和空间运动矢量预测;响应于启用所述运动矢量角预测过程,存储所述一个或多个运动矢量角预测候选;以及存储基于历史的运动矢量预测。
148.在附图和说明书中,已经公开了示例性实施例。然而,可以对这些实施例进行许多变化和修改。因此,尽管采用了特定的术语,但它们仅在通用和描述性的意义上使用,而不是出于限制的目的。

技术特征:
1.一种视频解码方法,其特征在于,包括:接收包括视频帧的编码单元的位流,所述编码单元以跳过模式或直接模式进行编码;确定所述编码单元是否具有大于阈值宽度的宽度或大于阈值高度的高度;响应于所述编码单元具有大于阈值宽度的宽度或大于阈值高度的高度,启用运动矢量角预测过程以将一个或多个运动矢量角预测候选存储在候选列表中,所述候选列表存储有与所述编码单元相关联的多个运动候选;以及根据所述候选列表和从所述位流解析的索引,对所述编码单元执行帧间预测。2.根据权利要求1所述的方法,还包括:响应于另一编码单元具有等于所述阈值宽度的宽度和等于所述阈值高度的高度,禁用所述运动矢量角预测过程以导出所述候选列表,而不将任何运动矢量角预测候选存储在所述候选列表中,所述候选列表存储有与所述另一编码单元相关联的所述多个运动候选。3.根据权利要求1所述的方法,还包括:通过以下方式导出用于所述帧间预测的候选列表:将时间运动矢量预测存储为所述候选列表中的运动候选之一;将空间运动矢量预测存储为所述候选列表中的运动候选之一;以及响应于启用所述运动矢量角预测过程,将所述一个或多个运动矢量角预测候选存储为所述候选列表中的一个或多个运动候选。4.根据权利要求3所述的方法,其特征在于,导出所述候选列表还包括:检查存储在hmvp表中的基于历史的运动矢量预测是否与所述候选列表中的任何运动候选相同;以及响应于所述基于历史的运动矢量预测不同于所述候选列表中的运动候选,将所述基于历史的运动矢量预测存储为所述候选列表中的运动候选之一。5.一种装置,包括:存储器,所述存储器被配置为存储指令;以及处理器,所述处理器耦合到所述存储器并被配置为执行所述指令以使所述装置:接收包括视频帧的编码单元的位流,所述编码单元以跳过模式或直接模式进行编码;确定所述编码单元是否具有大于阈值宽度的宽度或大于阈值高度的高度;响应于所述编码单元具有大于阈值宽度的宽度或大于阈值高度的高度,启用运动矢量角预测过程以将一个或多个运动矢量角预测候选存储在候选列表中,所述候选列表存储有与所述编码单元相关联的多个运动候选;以及根据所述候选列表和从所述位流解析的索引,对所述编码单元执行帧间预测。6.根据权利要求5所述的装置,其中,所述处理器被配置为执行所述指令以使所述装置:响应于另一编码单元具有等于所述阈值宽度的宽度和等于所述阈值高度的高度,禁用所述运动矢量角预测过程以导出所述候选列表,而不将任何运动矢量角预测候选存储在所述候选列表中,所述候选列表存储有与所述另一编码单元相关联的所述多个运动候选。7.根据权利要求5所述的装置,其中,所述处理器被配置为执行所述指令以使所述装置:通过以下方式导出用于所述帧间预测的候选列表:
将时间运动矢量预测存储为所述候选列表中的运动候选之一;将空间运动矢量预测存储为所述候选列表中的运动候选之一;以及响应于启用所述运动矢量角预测过程,将所述一个或多个运动矢量角预测候选存储为所述候选列表中的一个或多个运动候选。8.根据权利要求7所述的装置,其特征在于,所述处理器被配置成执行所述指令以使所述装置通过以下方式导出所述候选列表:检查存储在hmvp表中的基于历史的运动矢量预测是否与所述候选列表中的任何运动候选相同;以及响应于所述基于历史的运动矢量预测不同于所述候选列表中的运动候选,将所述基于历史的运动矢量预测存储为所述候选列表中的运动候选之一。9.一种非暂时性计算机可读存储介质,存储有指令集,所述指令集可由设备的一个或多个处理器执行以使所述设备执行用于运动矢量预测的方法,包括:将编码单元划分为多个子块;通过以下方式填充与所述编码单元相关联的参考列表:如果与所述参考列表中的参考单元相关联的相邻块的运动信息可用,则用所述编码单元的相邻块的所述运动信息填充所述参考单元;如果与作为所述参考列表中的第一条目的第一参考单元相关联的第一相邻块的运动信息不可用,则用预定义的运动信息填充所述第一参考单元;以及如果与剩余参考单元相关联的相邻块的运动信息不可用,则用填充在参考列表中的先前相邻参考单元中的运动信息填充所述剩余参考单元;以及执行运动矢量角预测过程,以通过根据一个或多个预测方向使用参考列表来获得每个子块的一个或多个运动矢量角预测候选。10.根据权利要求9所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使得所述设备通过以下方式用所述预定义的运动信息填充所述第一参考单元:用零运动矢量和设置为零的参考索引填充所述第一参考单元。11.根据权利要求9所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使得所述设备通过以下方式用所述预定义的运动信息填充所述第一参考单元:用存储在基于历史的运动矢量预测表的最后一个条目中的运动信息填充所述第一参考单元。12.根据权利要求9所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使得所述设备通过以下方式用所述预定义的运动信息填充所述第一参考单元:用时间运动矢量预测(tmvp)候选或空间运动矢量预测(smvp)候选的运动信息填充所述第一参考单元。13.根据权利要求9所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:响应于填充有相邻块的可用运动信息的所述参考单元的数量小于阈值:
禁用编码单元的运动矢量角预测过程;以及导出存储有多个运动候选的候选列表,而不将任何矢量角预测候选存储到所述候选列表。14.根据权利要求9所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:响应于填充有相邻块的可用运动信息的所述参考单元的数量达到阈值:为所述编码单元启用所述运动矢量角预测过程;以及根据多个预测方向,导出存储多个运动候选的候选列表,所述候选列表包括针对每个子块的多个运动矢量角预测候选。15.根据权利要求9所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:在不检查所述一个或多个预测方向的可用性的情况下,为所述编码单元启用所述运动矢量角预测过程;以及根据多个预测方向,导出存储多个运动候选的候选列表,所述候选列表包括针对每个子块的多个运动矢量角预测候选。16.根据权利要求9所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:通过检查每个预测方向的可用性,从多个预测方向中选择一个或多个可用方向;以及根据所述一个或多个可用方向执行所述运动矢量角预测过程,以获得所述一个或多个运动矢量角预测候选。17.根据权利要求16所述的非暂时性计算机可读存储介质,其中,根据所述一个或多个可用方向的数量,所述一个或多个向量角度预测候选的数量在0到5之间。18.根据权利要求9所述的计算机可读存储介质,其中,对于m
×
n编码单元,所述参考运动信息列表中的所述参考单元的数量是(2m/4+2n/4+1),m和n为整数。19.根据权利要求9所述的计算机可读存储介质,其中,所述参考运动信息列表中的所述参考单元的大小为4
×
4。20.根据权利要求9所述的非暂时性计算机可读存储介质,其中可由所述设备的所述一个或多个处理器执行的所述指令集使所述设备进一步执行:通过以下方式导出存储多个运动候选的候选列表:存储时间运动矢量预测和空间运动矢量预测;响应于启用所述运动矢量角预测过程,存储所述一个或多个运动矢量角预测候选;以及存储基于历史的运动矢量预测。

技术总结
本公开提供了一种计算机实现的视频解码方法。所述方法包括:接收包括视频帧的编码单元的位流,所述编码单元以跳过模式或直接模式进行编码;确定所述编码单元是否具有大于阈值宽度的宽度或大于阈值高度的高度;响应于所述编码单元具有大于阈值宽度的宽度或大于阈值高度的高度,启用运动矢量角预测过程以将一个或多个运动矢量角预测候选存储在候选列表中,所述候选列表存储有与所述编码单元相关联的多个运动候选;以及,根据所述候选列表和从所述位流解析的索引,对所述编码单元执行帧间预测。测。测。


技术研发人员:廖如伶 陈杰 叶琰
受保护的技术使用者:阿里巴巴集团控股有限公司
技术研发日:2021.03.16
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-7640.html

最新回复(0)