CN118285101A - 时间运动矢量预测器候选搜索 - Google Patents
时间运动矢量预测器候选搜索 Download PDFInfo
- Publication number
- CN118285101A CN118285101A CN202280077356.8A CN202280077356A CN118285101A CN 118285101 A CN118285101 A CN 118285101A CN 202280077356 A CN202280077356 A CN 202280077356A CN 118285101 A CN118285101 A CN 118285101A
- Authority
- CN
- China
- Prior art keywords
- block
- prediction
- blocks
- current
- mvp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000033001 locomotion Effects 0.000 title claims abstract description 200
- 239000013598 vector Substances 0.000 title claims abstract description 182
- 230000002123 temporal effect Effects 0.000 title claims abstract description 36
- 238000000034 method Methods 0.000 claims abstract description 126
- 238000012545 processing Methods 0.000 claims description 35
- 230000011664 signaling Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 10
- 230000007246 mechanism Effects 0.000 abstract description 6
- 238000005192 partition Methods 0.000 description 139
- 238000000638 solvent extraction Methods 0.000 description 101
- 239000000523 sample Substances 0.000 description 42
- 230000008569 process Effects 0.000 description 36
- 230000000875 corresponding effect Effects 0.000 description 33
- 230000006835 compression Effects 0.000 description 30
- 238000007906 compression Methods 0.000 description 30
- 239000000872 buffer Substances 0.000 description 27
- 241000023320 Luma <angiosperm> Species 0.000 description 26
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 26
- 239000002131 composite material Substances 0.000 description 25
- 238000010586 diagram Methods 0.000 description 14
- 238000003860 storage Methods 0.000 description 14
- 230000011218 segmentation Effects 0.000 description 13
- 230000003044 adaptive effect Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000009466 transformation Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 9
- 238000013139 quantization Methods 0.000 description 8
- 230000000295 complement effect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 150000001875 compounds Chemical class 0.000 description 5
- 230000007774 longterm Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 101150114515 CTBS gene Proteins 0.000 description 4
- 239000013074 reference sample Substances 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 101100025317 Candida albicans (strain SC5314 / ATCC MYA-2876) MVD gene Proteins 0.000 description 2
- 101150079299 MVD1 gene Proteins 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- 230000000153 supplemental effect Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- IESVDEZGAHUQJU-ZLBXKVHBSA-N 1-hexadecanoyl-2-(4Z,7Z,10Z,13Z,16Z,19Z-docosahexaenoyl)-sn-glycero-3-phosphocholine Chemical group CCCCCCCCCCCCCCCC(=O)OC[C@H](COP([O-])(=O)OCC[N+](C)(C)C)OC(=O)CC\C=C/C\C=C/C\C=C/C\C=C/C\C=C/C\C=C/CC IESVDEZGAHUQJU-ZLBXKVHBSA-N 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Abstract
本公开内容总体上涉及视频编码,并且特别地,涉及用于确定用于视频编码中的帧间预测的时间运动矢量预测器(TMVP)候选的方法和系统。例如,所公开的方法包括限制运动矢量预测器(MVP)列表中的TMVP候选的数目并且提供各种搜索机制以便促进TMVP和其他类型的MVP候选中的MVP候选多样性并提高编码效率。
Description
相关申请的交叉引用
本申请基于2022年10月31日提交的题为“Temporal Motion Vector PredictorCandidates Search”的美国非临时申请第18/051,397号和2022年8月30日提交的题为“Temporal Motion Vector Predictor Candidates Improvement”的美国临时专利申请第63/402,386号并且要求这两个美国申请的优先权权益,上述美国非临时申请和美国临时专利申请通过引用整体并入本文。
技术领域
本公开内容总体上涉及视频编码,并且特别地涉及用于确定视频编码中的帧间预测的时间运动矢量预测器候选的方法和系统。
背景技术
本文中提供的该背景描述是出于总体上呈现本公开内容的上下文的目的。就该背景技术部分中描述的工作的程度而言,目前署名的发明人的工作以及在提交本申请时可以不被另外算作为现有技术的描述的各方面既没有明确地也没有隐含地承认为针对本公开内容的现有技术。
可以使用具有运动补偿的帧间图片预测来执行视频编码和解码。未压缩的数字视频可以包括一系列图片,其中,每个图片具有例如1920×1080亮度样本以及相关联的全采样或子采样的色度样本的空间维度。该一系列图片可以具有例如每秒60个图片或每秒60帧的固定或可变的图片速率(可替选地被称为帧速率)。未压缩的视频对流式传输或数据处理具有特定的比特率要求。例如,具有像素分辨率为1920×1080、帧速率为60帧/秒、以及在每像素每彩色通道8位下的色度子采样为4:2:0的视频需要接近1.5Gbit/s的带宽。一小时这样的视频需要超过600千兆字节的存储空间。
视频编码和解码的一个目的可以是通过压缩来减少未压缩的输入视频信号中的冗余。压缩可以帮助减少以上提及的带宽和/或存储空间要求,在一些情况下可以减少两个数量级或更多。可以采用无损压缩和有损压缩两者以及其组合。无损压缩是指可以经由解码处理根据压缩的原始信号重建原始信号的精确副本的技术。有损压缩是指原始视频信息在编码期间未完全保留并且在解码期间不可完全恢复的编码/解码处理。在使用有损压缩的情况下,重建的信号可能与原始信号不同,但是原始信号和重建的信号之间的失真足够小,以使重建的信号对于预期应用有用,尽管有一些信息损失。在视频的情况下,有损压缩被广泛使用于许多应用中。可容忍的失真量取决于应用。例如,某些消费者视频流式传输应用的用户可能比电影或电视广播应用的用户容忍更高的失真。可以选择或调整可由特定编码算法实现的压缩比以反映各种失真容限:更高的可容忍失真通常允许产生更高损失和更高压缩比的编码算法。
视频编码器和解码器可以利用来自若干广泛类别和步骤的技术,包括例如运动补偿、傅立叶变换、量化和熵编码。
视频编解码器技术可以包括被称为帧内编码的技术。在帧内编码中,在不参考来自先前重建的参考图片的样本或其他数据的情况下表示样本值。在一些视频编解码器中,图片在空间上被细分为样本块。在以帧内模式对所有样本块进行编码的情况下,该图片可以被称为帧内图片。帧内图片及其派生例如独立解码器刷新图片可以用于重置解码器状态,并且因此可以用作编码视频比特流和视频会话中的第一图片或者用作静止图像。然后,可以对帧内预测之后的块的样本进行到频域的变换,并且可以在熵编码之前对这样生成的变换系数进行量化。帧内预测表示使预变换域中的样本值最小化的技术。在一些情况下,变换之后的DC值越小并且AC系数越小,则在给定量化步长下表示熵编码之后的块所需的位就越少。
诸如从例如MPEG-2代编码技术中已知的传统帧内编码不使用帧内预测。然而,一些较新的视频压缩技术包括如下技术,其尝试基于例如在空间上邻近并且在解码顺序中先于正在进行帧内编码或解码的数据块的编码和/或解码期间获得的元数据和/或周围样本数据对块进行编码/解码。这样的技术在下文中被称为“帧内预测”技术。注意,在至少一些情况下,帧内预测仅使用来自正在重建的当前图片的参考数据,而不使用来自其他参考图片的参考数据。
可以存在许多不同形式的帧内预测。当在给定的视频编码技术中有多于一种这样的技术可用时,所使用的技术可以被称为帧内预测模式。可以在特定编解码器中提供一种或更多种帧内预测模式。在某些情况下,模式可以具有子模式和/或可以与各种参数相关联,并且针对视频块的模式/子模式信息和帧内编码参数可以单独编码或共同包括在模式码字中。针对给定模式、子模式和/或参数组合使用哪个码字可以对通过帧内预测的编码效率增益产生影响,并且因此用于将码字转换成比特流的熵编码技术也可以如此。
特定模式的帧内预测由H.264引入,在H.265中被细化,并且在诸如联合开发模型(joint exploration model,JEM)、通用视频编码(versatile video coding,VVC)和基准集(benchmark set,BMS)的较新编码技术中被进一步细化。通常,对于帧内预测,可以使用已经变得可用的邻近样本值来形成预测器块。例如,可以将沿着特定方向和/或线的特定邻近样本集合的可用值复制到预测器块中。对使用的方向的参考可以被编码在比特流中,或者其本身可以被预测。
参照图1A,在右下方描绘的是在H.265的33个可能的帧内预测器方向(对应于H.265中指定的35个帧内模式中的33个角模式)中指定的九个预测器方向的子集。箭头会聚的点(101)表示正在被预测的样本。箭头表示使用邻近样本来预测101处的样本的方向。例如,箭头(102)指示根据右上方的与水平方向成45度角一个或多个邻近样本来预测样本(101)。类似地,箭头(103)指示根据样本(101)的左下方的与水平方向成22.5度角的一个或多个邻近样本来预测样本(101)。
仍然参照图1A,在左上方描绘的是4×4样本的正方形块(104)(由黑体虚线指示)。正方形块(104)包括16个样本,每个样本用“S”、其在Y维度上的位置(例如,行索引)以及其在X维度上的位置(例如,列索引)来标记。例如,样本S21是Y维度上(从顶部起)的第二样本并且是X维度上(从左侧起)的第一样本。类似地,样本S44是块(104)中在Y维度和X维度上的第四样本。由于块的大小是4×4样本,因此S44在右下方处。进一步示出的是遵循类似编号方案的示例参考样本。参考样本用R、其相对于块(104)的Y位置(例如,行索引)和X位置(列索引)来标记。在H.264和H.265两者中,使用与正在重建的块相邻地邻近的预测样本。
块104的帧内图片预测可以通过根据用信号通知的预测方向从邻近样本复制参考样本值开始。例如,假设编码视频比特流包括信令,针对该块104,该信令指示箭头(102)的预测方向——即,根据右上方的与水平方向成45度角的一个或多个预测样本来预测样本。在这样的情况下,根据同一参考样本R05来预测样本S41、S32、S23和S14。然后,根据参考样本R08来预测样本S44。
在某些情况下,可以例如通过插值将多个参考样本的值组合以计算参考样本;尤其是在方向不能被45度整除的情况下。
随着视频编码技术的不断发展,可能的方向的数目也在增加。例如,在H.264(2003年)中,九个不同的方向可用于帧内预测。在H.265(2013年)中其增加到33个,并且在本公开内容的时候,JEM/VVC/BMS可以支持多达65个方向。已经进行了实验研究以帮助识别最合适的帧内预测方向,并且熵编码中的某些技术可以用于以少量位来对那些最合适的方向进行编码,从而接受针对方向的特定位惩罚。此外,有时可以根据在已解码的邻近块的帧内预测中使用的邻近方向来预测方向本身。
图1B示出了描绘根据JEM的65个帧内预测方向的示意图(180),以说明预测方向的数目在随着时间发展的各种编码技术中不断增加。
用于将表示帧内预测方向的位映射到编码视频比特流中的预测方向的方式可以随着视频编码技术的不同而改变;并且该方式的范围例如可以从预测方向的简单直接映射到帧内预测模式,到码字,到涉及最可能模式的复杂自适应方案以及类似技术。然而,在所有情况下,可能存在用于帧内预测的某些方向,这些方向在统计上比某些其他方向更不可能出现在视频内容中。由于视频压缩的目标是减少冗余,因此在设计良好的视频编码技术中,那些较不可能的方向相比更可能的方向将可能由更多的位来表示。
帧间图片预测或帧间预测可以基于运动补偿。在运动补偿中,来自先前重建的图片或其一部分(参考图片)的样本数据在沿由运动矢量(此后被称为MV(motion vector))指示的方向进行空间移位之后,可以用于预测新重建的图片或者图片部分(例如,块)。在一些情况下,参考图片可以与当前正在重建的图片相同。MV可以具有两个维度X和Y,或者三个维度,其中第三维度是使用中的参考图片的指示(类似于时间维度)。
在一些视频压缩技术中,可以根据其他MV来预测适用于样本数据的特定区域的当前MV,例如根据与样本数据的在空间上与正在重建的区域相邻的其他区域相关并且在解码顺序中先于当前MV的那些其他MV来预测该当前MV。这样做可以通过依靠消除相关MV中的冗余来显著减少对MV进行编码所需的数据总量,从而提高压缩效率。例如,由于在对从摄像装置得出的输入视频信号(称为自然视频)进行编码时存在比单个MV所适用的区域大的区域在视频序列中沿类似的方向移动的统计可能性,并且因此在一些情况下可以使用根据邻近区域的MV得出的类似运动矢量进行预测,因此,MV预测可以有效地发挥作用。这导致针对给定区域的实际MV与根据周围MV预测的MV相似或相同。这样的MV又可以在熵编码之后以小于直接对MV进行编码而不是从邻近MV预测的情况下会使用的位数少的位数来表示。在一些情况下,MV预测可以是根据原始信号(即:样本流)得出的信号(即,MV)的无损压缩的示例。在其他情况下,MV预测本身可以是有损的,例如,由于根据若干周围MV计算预测器时的舍入误差而有损。
在H.265/HEVC(ITU-T H.265建议书,“高效视频编码(High Efficiency VideoCoding)”,2016年12月)中描述了各种MV预测机制。在H.265指定的多种MV预测机制中,下面描述的是此后被称为“空间合并”的技术。
具体地,参照图2,当前块(201)包括在运动搜索处理期间已经由编码器发现的根据已经经空间移位的相同大小的先前块可预测的样本。代替直接对该MV进行编码,可以使用与用A0、A1和B0、B1、B2(分别对应202至206)表示的五个周围样本中的任一样本相关联的MV,根据与一个或更多个参考图片相关联的元数据例如根据最近(在解码顺序上)的参考图片得出MV。在H.265中,MV预测可以使用来自邻近块使用的同一参考图片的预测器。
发明内容
本公开内容总体上涉及视频编码,并且特别地,涉及用于确定视频编码中用于帧间预测的时间运动矢量预测器(temporal motion vector predictor,TMVP)候选的方法和系统。例如,所公开的方法包括限制运动矢量预测器(motion vector predictor,MVP)列表中的TMVP候选的数目,并且提供各种搜索机制以便促进TMVP和其他类型的MVP候选中的MVP候选多样性并提高编码效率。
在示例实现方式中,公开了一种用于处理视频流中的当前帧的当前预测块的方法。该方法可以包括确定要通过参考帧中的参考块对当前预测块进行帧间预测以及确定要通过参考运动矢量对用于当前预测块的运动矢量进行预测;将当前帧中的候选预测块集合识别为用于当前预测块的时间运动矢量预测器(TMVP)候选的搜索池;遵循搜索顺序搜索候选预测块集合以识别用于当前预测块的至多N个TMVP候选,其中,响应于识别到N个TMVP候选而停止搜索,N是正整数;构建指示运动矢量预测器(MVP)候选集合的MVP列表,所述MVP候选集合包括空间MVP(SMVP)候选集合和至多N个TMVP候选中的一个或更多个;从视频流中提取用于当前预测块的MVP索引;以及根据所提取的MVP索引和MVP列表来识别用于对当前预测块进行帧间预测的参考运动矢量。
在上面的实现方式中,当前预测块属于当前超级块;当前超级块包括多个预测块;并且候选预测块集合包括当前超级块的多个预测块的至少子集。
在上面的实现方式中的任何一个实现方式中,当前超级块的多个预测块形成具有列维度和行维度的预测块阵列;当前超级块的重建的邻近预测块在行维度上位于当前超级块上方和/或在列维度上位于当前超级块左侧;并且用于在候选预测块集合中搜索至多N个TMVP候选的搜索顺序包括至少沿着预测块阵列的列维度和行维度中的一个从远离当前超级块的重建的邻近预测块开始,以及然后移动到更靠近当前超级块的重建的邻近预测块。
在上面的实现方式中的任何一个实现方式中,用于在候选预测块集合中搜索至多N个TMVP候选的搜索顺序可以包括:从预测块阵列的底行开始到顶行,并且在每行中从最右边的预测块开始到最左边的预测块;或者从预测块阵列的最右边的列开始到最左边的列,并且在每列中从底部预测块开始到顶部预测块;或者沿着相对于列维度和行维度的对角线方向从预测块阵列的最右边底部的预测块开始朝向最左边顶部的预测块来搜索预测块阵列。
在上面的实现方式中的任何一个实现方式中,候选预测块集合包括多个预测块的子集,其中从多个预测块中跳过M个预测块,M是非负整数。
在上面的实现方式中的任何一个实现方式中,被跳过的M个预测块包括至少预测块阵列的最左边的列。
在上面的实现方式中的任何一个实现方式中,被跳过的M个预测块包括至少预测块阵列的顶行。
在上面的实现方式中的任何一个实现方式中,被跳过的M个预测块包括至少预测块阵列的顶行和最左边的列。
在上面的实现方式中的任何一个实现方式中,候选预测块集合排除当前超级块之外的任何附加预测块。
在上面的实现方式中的任何一个实现方式中,候选预测块集合还包括当前超级块之外的至少一个附加预测块。
在上面的实现方式中的任何一个实现方式中,该方法还可以包括搜索当前超级块的多个预测块以识别至多N1个TMVP候选,N1是不大于N的正整数;以及响应于从多个预测块中识别到N1个TMVP候选,停止搜索当前超级块的多个预测块。
在上面的实现方式中的任何一个实现方式中,从当前超级块之外的至少一个附加预测块中识别至多1个TMVP候选,并且所述方法还包括响应于从当前超级块之外的至少一个附加预测块中识别到1个TMVP候选,停止搜索当前超级块之外的至少一个附加预测块。
在上面的实现方式中的任何一个实现方式中,候选预测块集合包括来自多个预测块的至多L个预测块,L是小于当前超级块中的预测块的总数的正整数。
在上面的实现方式中,L=1并且候选预测块集合仅包括预测块阵列的最右边底部的预测块。在上面的实现方式中,至多L个预测块均匀地分布在当前超级块的多个预测块内。
在上面的实现方式中的任何一个实现方式中,候选预测块集合的位置由编码信息确定,该编码信息包括当前超级块的空间邻近块的运动矢量或已经包括在MVP列表中的SMVP候选的数目。
在上面的实现方式中的任何一个实现方式中,该方法还包括:响应于MVP列表中已经存在N1个SMVP候选,进一步将MVP列表中的TMVP候选的数目限制为N2,其中,N1和N2是正整数,并且N2不大于N。
在上面的实现方式中的任何一个实现方式中,用于用信号通知MVP列表中的与当前预测块和帧间预测模式相关联的索引的上下文取决于是否至少N个TMVP已经包括在MVP列表中。
在上面的实现方式中的任何一个实现方式中,将MVP列表中的TMVP候选限制为至多N个是响应于在双向帧间预测模式下对当前预测块进行编码。
本公开内容的各方面还提供了一种电子装置或设备,其包括被配置成执行上面的方法实现方式中的任一方法实现方式的电路系统或处理器。
本公开内容的各方面还提供了一种存储指令的非暂态计算机可读介质,在指令由电子装置执行时,使电子装置执行上面的方法实现方式中的任一方法实现方式。
附图说明
根据以下详细描述和附图,所公开主题的其他特征、性质和各种优点将更加明显,在附图中:
图1A示出了帧内预测方向模式的示例性子集的示意性图示;
图1B示出了示例性帧内预测方向的图示;
图2示出了在一个示例中用于运动矢量预测的当前块及其周围的空间合并候选的示意性图示;
图3示出了根据示例实施方式的通信系统(300)的简化框图的示意性图示;
图4示出了根据示例实施方式的通信系统(400)的简化框图的示意性图示;
图5示出了根据示例实施方式的视频解码器的简化框图的示意性图示;
图6示出了根据示例实施方式的视频编码器的简化框图的示意性图示;
图7示出了根据另一示例实施方式的视频编码器的框图;
图8示出了根据另一示例实施方式的视频解码器的框图;
图9示出了根据本公开内容的示例实施方式的编码块划分的方案;
图10示出了根据本公开内容的示例实施方式的编码块划分的另一方案;
图11示出了根据本公开内容的示例实施方式的编码块划分的另一方案;
图12示出了根据示例划分方案将基本块划分成编码块的示例;
图13示出了示例三元划分方案;
图14示出了示例四叉树二叉树编码块划分方案;
图15示出了根据本公开内容的示例实施方式的用于将编码块划分成多个变换块的方案和变换块的编码顺序;
图16示出了根据本公开内容的示例实施方式的用于将编码块划分成多个变换块的另一方案和变换块的编码顺序;
图17示出了根据本公开内容的示例实施方式的用于将编码块划分成多个变换块的另一方案;
图18示出了用于针对超级块的空间运动矢量预测器候选的搜索处理。
图19示出了用于通过线性投影来确定用于当前预测块的时间运动矢量预测器的示例处理。
图20示出了超级块的示例内部预测块和外部预测块。
图21示出了针对单个帧间预测块的示例新运动矢量预测器候选生成。
图22示出了针对复合帧间预测块的示例新运动矢量预测器候选生成。
图23示出了示例参考运动矢量候选库更新处理。
图24示出了用于构建运动矢量预测器列表的示例顺序。
图25至图30示出了用于识别当前超级块的时间运动矢量预测器候选的搜索顺序的示例。
图31示出了根据本公开内容的示例实施方式的方法的流程图;
图32示出了根据本公开内容的示例实施方式的计算机系统的示意图。
具体实施方式
贯穿整个说明书和权利要求书中,术语可以具有超出明确陈述的含义的上下文中提示或暗示的细微含义。如本文中所使用的短语“在一个实施方式中”或“在一些实施方案中”不一定是指相同的实施方案,并且如本文中所使用的短语“在另一实施方式中”或“在其他实施方式中”不一定是指不同的实施方式。同样,如本文中所使用的短语“在一个实现方式中”或“在一些实现方式中”不一定是指相同的实现方式,并且如本文所使用的短语“在另一实现方式中”或者“在其他实现方式中”不一定是指不同的实现方式。例如,意指所要求保护的主题包括示例性实施方式/实现方式的整体或部分的组合。
通常,术语可以至少部分地从上下文中的用法来理解。例如,如本文中所使用的术语,诸如“和”、“或”或者“和/或”可以包括各种含义,其可以至少部分地取决于使用这样的术语的上下文。通常,如果“或”用于关联列表,例如A、B或C,则“或”旨在表示A、B和C,此处以包含的意义使用,以及A、B或C,此处以排他的意义使用。另外,至少部分地取决于上下文,如本文中所使用的术语“一个或更多个”或“至少一个”可以用于以单数意义描述任何特征、结构或特性,或者可以用于以复数意义描述特征、结构或特性的组合。类似地,诸如“一”、“一个”或“该”的术语同样可以被理解成传达单数用法或传达复数用法,这至少部分地取决于上下文。另外,术语“基于”或“由……确定”可以被理解为不一定旨在传达排他的因素集合,并且可以替代地允许存在不一定明确描述的附加因素,这同样至少部分地取决于上下文。图3示出了根据本公开内容的实施方式的通信系统(300)的简化框图。通信系统(300)包括多个终端设备,所述多个终端设备可以经由例如网络(350)彼此通信。例如,通信系统(300)包括经由网络(350)互连的第一对终端设备(310)和(320)。在图3的示例中,第一对终端设备(310)和(320)可以执行数据的单向传输。例如,终端设备(310)可以对(例如,由终端设备(310)捕获的视频图片流的)视频数据进行编码,以用于经由网络(350)传输至另一终端设备(320)。经编码的视频数据可以以一个或更多个编码视频比特流的形式传输。终端设备(320)可以从网络(350)接收编码视频数据、对编码视频数据进行解码以恢复视频图片并且根据恢复的视频数据显示视频图片。单向数据传输可以在媒体服务应用等中实现。
在另一示例中,通信系统(300)包括执行编码视频数据的双向传输的第二对终端设备(330)和(340),该双向传输可以例如在视频会议应用期间实现。对于数据的双向传输,在示例中,终端设备(330)和(340)中的每个终端设备可以对(例如,由终端设备捕获的视频图片流的)视频数据进行编码,以用于经由网络(350)传输至终端设备(330)和(340)中的另一终端设备。终端设备(330)和(340)中的每个终端设备还可以接收由终端设备(330)和(340)中的另一终端设备传输的编码视频数据,并且可以对编码视频数据进行解码以恢复视频图片,并且可以根据恢复的视频数据在可访问的显示设备处显示视频图片。
在图3的示例中,终端设备(310)、(320)、(330)和(340)可以实现为服务器、个人计算机和智能电话,但是本公开内容的基本原理的适用性可以不限于此。本公开内容的实施方式可以在台式计算机、膝上型计算机、平板计算机、媒体播放器、可穿戴计算机、专用视频会议装备等中实现。网络(350)表示在终端设备(310)、(320)、(330)和(340)之中传送编码视频数据的任何数目或类型的网络,包括例如有线(连线的)和/或无线通信网络。通信网络(350)9可以在电路交换信道、分组交换信道和/或其他类型的信道中交换数据。代表性的网络包括电信网络、局域网、广域网和/或因特网。出于本讨论的目的,除非在本文中明确说明,否则网络(350)的架构和拓扑对于本公开内容的操作而言可能是不重要的。
作为所公开的主题的应用的示例,图4示出了视频编码器和视频解码器在视频流式传输环境中的放置。所公开的主题可以同等地适用于其他视频应用,包括例如视频会议、数字TV广播、游戏、虚拟现实、在包括CD、DVD、存储棒等的数字介质上存储压缩视频等。
视频流式传输系统可以包括视频捕获子系统(413),视频捕获子系统(413)可以包括视频源(401),例如数字摄像装置,视频源(401)用于创建未压缩的视频图片或图像流(402)。在示例中,视频图片流(402)包括由视频源401的数字摄像装置记录的样本。视频图片流(402)被描绘为粗线以强调当与经编码的视频数据(404)(或编码视频比特流)进行比较时的高数据量,视频图片流(402)可以由耦接至视频源(401)的包括视频编码器(403)的电子设备(420)进行处理。视频编码器(403)可以包括硬件、软件或其组合以实现或实施如下文更详细地描述的所公开主题的各方面。经编码的视频数据(404)(或经编码的视频比特流(404))被描绘为细线以强调当与未压缩的视频图片流(402)进行比较时的较低数据量,经编码的视频数据(404)(或编码视频比特流(404))可以存储在流式传输服务器(405)上以供将来使用或者直接存储至下游视频设备(未示出)。一个或更多个流式传输客户端子系统例如图4中的客户端子系统(406)和(408)可以访问流式传输服务器(405)以检索经编码的视频数据(404)的副本(407)和(409)。客户端子系统(406)可以包括例如电子设备(430)中的视频解码器(410)。视频解码器(410)对经编码的视频数据的传入副本(407)进行解码,并且创建未压缩的并且可以在显示器(412)(例如,显示屏)或另一呈现设备(未描绘)上呈现的传出视频图片流(411)。视频解码器410可以被配置成执行本公开内容中描述的各种功能中的一些或全部功能。在一些流式传输系统中,可以根据某些视频编码标准/视频压缩标准对经编码的视频数据(404)、(407)和(409)(例如,视频比特流)进行编码。这些标准的示例包括ITU-T H.265建议书。在示例中,开发中的视频编码标准非正式地被称为通用视频编码(Versatile Video Coding,VVC)。所公开的主题可以在VVC和其他视频编码标准的上下文中使用。
注意,电子设备(420)和(430)可以包括其他部件(未示出)。例如,电子设备(420)可以包括视频解码器(未示出),并且电子设备(430)还可以包括视频编码器(未示出)。
图5示出了根据以下本公开内容的任何实施方式的视频解码器(510)的框图。视频解码器(510)可以被包括在电子设备(530)中。电子设备(530)可以包括接收器(531)(例如,接收电路系统)。视频解码器(510)可以用于代替图4的示例中的视频解码器(410)。
接收器(531)可以接收要由视频解码器(510)解码的一个或更多个编码视频序列。在同一实施方式或另一实施方式中,一次可以解码一个编码视频序列,其中每个编码视频序列的解码独立于其他编码视频序列。每个视频序列可以与多个视频帧或图像相关联。可以从信道(501)接收编码视频序列,信道(501)可以是到存储经编码的视频数据的存储设备或传输经编码的视频数据的流式传输源的硬件/软件链路。接收器(531)可以接收经编码的视频数据以及其他数据,例如可以被转发至其各自的处理电路系统(未描绘)的编码音频数据和/或辅助数据流。接收器(531)可以将编码视频序列与其他数据分开。为了防止网络抖动,可以将缓冲存储器(515)设置在接收器(531)与熵解码器/解析器(520)(此后称为“解析器(520)”)之间。在某些应用中,缓冲存储器(515)可以实现为视频解码器(510)的一部分。在其他应用中,缓冲存储器(515)可以在视频解码器(510)外部并且与视频解码器(510)分开(未描绘)。在又一些其他应用中,出于例如防止网络抖动的目的,在视频解码器(510)外部可以有缓冲存储器(未描绘),并且在视频解码器(510)内部可以有另一附加的缓冲存储器(515)例如以处理回放定时。当接收器(531)从具有足够带宽和可控性的存储/转发设备或从等时同步网络接收数据时,可以不需要缓冲存储器(515),或者缓冲存储器(515)可以较小。为了在诸如因特网的最优分组网络上使用,可能需要具有足够大小的缓冲存储器(515),并且其大小可以相对大。这样的缓冲存储器可以用自适应大小来实现,并且可以至少部分地在操作系统或视频解码器(510)外部的类似元件(未描绘)中实现。
视频解码器(510)可以包括解析器(520)以根据编码视频序列重建符号(521)。这些符号的类别包括:用于管理视频解码器(510)的操作的信息;以及可能包括用于控制诸如显示器(512)(例如,显示屏)的呈现设备的信息,该显示器(512)可能是或可能不是电子设备(530)的组成部分但是可以耦接至电子设备(530),如图5所示。用于呈现设备的控制信息可以是辅助增强信息(SEI(Supplemental Enhancement Information,SEI)消息)或视频可用性信息(VUI(Video Usability Information,VUI))参数集片段(未描绘)的形式。解析器(520)可以对由解析器(520)接收到的编码视频序列进行解析/熵解码。编码视频序列的熵编码可以根据视频编码技术或视频编码标准进行,并且可以遵循各种原理,包括可变长度编码、霍夫曼编码(Huffman coding)、具有或不具有上下文灵敏度的算术编码等。解析器(520)可以基于与子群组对应的至少一个参数,从编码视频序列提取用于视频解码器中的像素的子群组中的至少之一的子群组参数集。子群组可以包括图片群组(Group ofPicture,GOP)、图片、图块、切片、宏块、编码单元(Coding Unit,CU)、块、变换单元(Transform Unit,TU)、预测单元(Prediction Unit,PU)等。解析器(520)还可以从编码视频序列提取诸如变换系数(例如,傅里叶变换系数)、量化器参数值、运动矢量等的信息。
解析器(520)可以对从缓冲存储器(515)接收的视频序列执行熵解码/解析操作,以创建符号(521)。
取决于编码视频图片或编码视频图片的一部分的类型(例如:帧间图片和帧内图片、帧间块和帧内块)以及其他因素,符号(521)的重建可能涉及多个不同的处理或功能单元。所涉及的单元以及它们如何被涉及可以通过由解析器(520)从编码视频序列解析的子群组控制信息来控制。为了简单起见,未描绘解析器(520)与以下多个处理或功能单元之间的这样的子群组控制信息流。
除已经提及的功能块以外,视频解码器(510)可以在概念上被细分成如下面所描述的多个功能单元。在商业约束下操作的实际实现方式中,这些功能单元中的许多功能单元彼此紧密交互并且可以至少部分地相互集成。然而,出于清楚地描述所公开的主题的各种功能的目的,在下面的公开内容中采用在概念上细分成功能单元。
第一单元可以包括缩放器/逆变换单元(551)。缩放器/逆变换单元(551)可以从解析器(520)接收作为符号(521)的量化变换系数以及控制信息,包括指示要使用哪种类型的逆变换、块大小、量化因子/参数、量化缩放矩阵等的信息。缩放器/逆变换单元(551)可以输出包括可以输入到聚合器(555)中的样本值的块。
在一些情况下,缩放器/逆变换(551)的输出样本可以属于帧内编码块,即,不使用来自先前重建的图片的预测性信息但是可以使用来自当前图片的先前重建部分的预测性信息的块。这样的预测性信息可以由帧内图片预测单元(552)提供。在一些情况下,帧内图片预测单元(552)可以使用已经重建并存储在当前图片缓冲器(558)中的周围块信息来生成大小和形状与重建中的块相同的块。例如,当前图片缓冲器(558)对例如部分重建的当前图片和/或完全重建的当前图片进行缓冲。在一些实现方式中,聚合器(555)可以以每个样本为基础将帧内预测单元(552)已经生成的预测信息添加至由缩放器/逆变换单元(551)提供的输出样本信息。
在其他情况下,缩放器/逆变换单元(551)的输出样本可以属于经帧间编码并且可能经运动补偿的块。在这样的情况下,运动补偿预测单元(553)可以访问参考图片存储器(557)以获取用于帧间图片预测的样本。在根据属于该块的符号(521)对所获取的样本进行运动补偿之后,可以由聚合器(555)将这些样本添加至缩放器/逆变换单元(551)的输出(单元551的输出可以称为残差样本或残差信号)以生成输出样本信息。运动补偿预测单元(553)从其获取预测样本的参考图片存储器(557)内的地址可以由运动矢量控制,运动矢量以符号(521)的形式供运动补偿预测单元(553)使用,符号(521)可以具有例如X、Y分量(移位)和参考图片分量(时间)。运动补偿还可以包括在使用子样本精确运动矢量时从参考图片存储器(557)获取的样本值的插值,并且还可以与运动矢量预测机制等相关联。
聚合器(555)的输出样本可以在环路滤波器单元(556)中经受各种环路滤波技术。视频压缩技术可以包括环路内滤波器技术,环路内滤波器技术受控于编码视频序列(也称为已编码视频比特流)中包括的参数,所述参数作为来自解析器(520)的符号(521)可用于环路滤波器单元(556),但是视频压缩技术也可以响应于在对编码图片或编码视频序列的先前(按解码顺序)部分进行解码期间获得的元信息,以及响应于先前重建并且经环路滤波的样本值。若干种类型的环路滤波器可以以各种顺序被包括为环路滤波器单元556的一部分,这将在下面更详细地描述。
环路滤波器单元(556)的输出可以是样本流,该样本流可以输出至呈现设备(512)以及存储在参考图片存储器(557)中,以用于将来的帧间图片预测。
一旦完全重建,某些编码图片就可以被用作参考图片以用于将来的帧间图片预测。例如,一旦与当前图片对应的编码图片被完全重建,并且编码图片(通过例如解析器(520))被识别为参考图片,则当前图片缓冲器(558)可以变为参考图片存储器(557)的一部分,并且可以在开始重建随后的编码图片之前重新分配新的当前图片缓冲器。
视频解码器(510)可以根据诸如ITU-T Rec.H.265的标准中采用的预定视频压缩技术执行解码操作。在编码视频序列遵循视频压缩技术或标准的语法以及视频压缩技术或标准中记录的配置文件两者的意义上,编码视频序列可以符合所使用的视频压缩技术或标准指定的语法。具体地,配置文件可以从视频压缩技术或标准中可用的所有工具中选择某些工具作为仅在所述配置文件下可使用的工具。为了符合标准,编码视频序列的复杂度可以处于由视频压缩技术或标准的级别限定的范围内。在一些情况下,级别限制最大图片大小、最大帧速率、最大重建样本速率(以例如每秒兆个样本为单位进行测量)、最大参考图片大小等。在一些情况下,由级别设置的限制可以通过假设参考解码器(HypotheticalReference Decoder,HRD)规范以及在编码视频序列中用信号通知的HRD缓冲器管理的元数据来进一步限定。
在一些示例实施方式中,接收器(531)可以连同经编码的视频一起接收附加(冗余)数据。附加数据可以被包括为编码视频序列的一部分。附加数据可以被视频解码器(510)用于对数据进行适当解码以及/或者更准确地重建原始视频数据。附加数据可以是例如时间、空间或信噪比(signal noise ratio,SNR)增强层、冗余切片、冗余图片、前向纠错码等形式。
图6示出了根据本公开内容的示例实施方式的视频编码器(603)的框图。视频编码器(603)可以被包括在电子设备(620)中。电子设备(620)还可以包括传输器(640)(例如,传输电路系统)。视频编码器(603)可以用于代替图4的示例中的视频编码器(403)。
视频编码器(603)可以从视频源(601)(其并非图6的示例中的电子设备(620)的一部分)接收视频样本,视频源(601)可以捕获要由视频编码器(603)编码的视频图像。在另一示例中,可以将视频源(601)实现为电子设备(620)的一部分。
视频源(601)可以提供要由视频编码器(603)编码的呈数字视频样本流形式的源视频序列,该数字视频样本流可以具有任何合适的位深度(例如:8位、10位、12位、……)、任何颜色空间(例如,BT.601YCrCb、RGB、XYZ……)和任何合适的采样结构(例如,YCrCb 4:2:0、YCrCb4:4:4)。在媒体服务系统中,视频源(601)可以是能够存储先前准备的视频的存储设备。在视频会议系统中,视频源(601)可以是捕获本地图像信息作为视频序列的摄像装置。可以将视频数据提供为当按顺序观看时被赋予运动的多个单独的图片或图像。图片自身可以被组织为空间像素阵列,其中,取决于所使用的采样结构、颜色空间等,每个像素可以包括一个或更多个样本。本领域普通技术人员可以容易地理解像素与样本之间的关系。下面的描述主要针对样本。
根据一些示例实施方式,视频编码器(603)可以实时地或者在由应用要求的任何其他时间约束下将源视频序列的图片编码并压缩成编码视频序列(643)。施行适当的编码速度构成控制器(650)的一个功能。在一些实施方式中,控制器(650)可以在功能上耦接至如下所述的其他功能单元并且控制所述其他功能单元。为了简单起见,未描绘耦接。通过控制器(650)设置的参数可以包括速率控制相关参数(图片跳过、量化器、率失真优化技术的λ值……)、图片大小、图片群组(group of picture,GOP)布局、最大运动矢量搜索范围等。控制器(650)可以被配置成具有其他合适的功能,这些功能属于针对某一系统设计优化的视频编码器(603)。
在一些示例实施方式中,视频编码器(603)可以被配置成在编码环路中操作。作为过于简化的描述,在示例中,编码环路可以包括源编码器(630)(例如,负责基于要编码的输入图片以及参考图片创建诸如符号流的符号)以及嵌入在视频编码器(603)中的(本地)解码器(633)。解码器(633)以类似于(远程)解码器将创建样本数据的方式重建符号以创建样本数据,即使嵌入式解码器633在没有熵编码的情况下处理源编码器630的编码视频流也是如此(因为在所公开的主题中考虑的视频压缩技术中,熵编码中的编码视频比特流与符号之间的任何压缩都可以是无损的)。重建的样本流(样本数据)被输入至参考图片存储器(634)。由于符号流的解码产生与解码器位置(本地或远程)无关的位精确结果,因此参考图片存储器(634)中的内容在本地编码器与远程编码器之间也是位精确的。换言之,编码器的预测部分“看到”的参考图片样本与解码器在解码期间使用预测时将“看到”的样本值完全相同。该参考图片同步性的基本原理(以及在例如由于信道误差而无法维持同步性的情况下产生的漂移)用于提高编码质量。
“本地”解码器(633)的操作可以与已经在上面结合图5详细描述的“远程”解码器如视频解码器(510)的操作相同。然而,还简要参照图5,当符号可用并且由熵编码器(645)和解析器(520)将符号编码/解码为编码视频序列可以为无损的时,可能无法完全在编码器的本地解码器(633)中实现包括缓冲存储器(515)和解析器(520)的视频解码器(510)的熵解码部分。
此时可以观察到,除了可能仅存在于解码器中的解析/熵解码之外的任何解码器技术,也可能必定需要以基本上相同的功能形式存在于对应的编码器中。出于该原因,所公开的主题有时可能侧重于与编码器的解码部分相关的解码器操作。由于编码器技术与已全面描述的解码器技术互逆,因此可以简化对编码器技术的描述。仅在某些区域或方面中,下面提供了对编码器的更详细描述。
在操作期间,在一些示例实现方式中,源编码器(630)可以执行运动补偿预测性编码,该运动补偿预测性编码参考来自视频序列的被指定为“参考图片”的一个或更多个先前编码图片来对输入图片进行预测性编码。以此方式,编码引擎(632)对输入图片的像素块与可以被选作输入图片的预测参考的参考图片的像素块之间的颜色通道中的差异(或残差)进行编码。术语“残差”及其形容词形式“残余”可以互换使用。
本地视频解码器(633)可以基于由源编码器(630)创建的符号,对可以被指定为参考图片的图片的编码视频数据进行解码。编码引擎(632)的操作可以有利地为有损处理。当编码视频数据可以在视频解码器(图6中未示出)处被解码时,重建的视频序列通常可以是带有一些误差的源视频序列的副本。本地视频解码器(633)复制可以由视频解码器对参考图片执行的解码处理,并且可以使重建的参考图片存储在参考图片高速缓存(634)中。以该方式,视频编码器(603)可以在本地存储重建的参考图片的副本,所述副本与将由远端(远程)视频解码器获得的重建参考图片具有共同内容(不存在传输误差)。
预测器(635)可以针对编码引擎(632)执行预测搜索。即,对于要编码的新图片,预测器(635)可以在参考图片存储器(634)中搜索可以用作新图片的适当的预测参考的样本数据(作为候选参考像素块)或某些元数据,例如参考图片运动矢量、块形状等。预测器(635)可以基于样本块逐像素块进行操作,以找到适当的预测参考。在一些情况下,如由通过预测器(635)获得的搜索结果所确定的,输入图片可以具有从参考图片存储器(634)中存储的多个参考图片取得的预测参考。
控制器(650)可以管理源编码器(630)的编码操作,包括例如设置用于对视频数据进行编码的参数和子群组参数。
可以在熵编码器(645)中对所有以上提及的功能单元的输出进行熵编码。熵编码器(645)通过根据诸如霍夫曼编码、可变长度编码、算术编码等的技术对由各种功能单元生成的符号进行无损压缩,将符号转换成编码视频序列。
传输器(640)可以缓冲由熵编码器(645)创建的编码视频序列,从而为经由通信信道(660)进行传输做准备,通信信道(660)可以是到存储经编码的视频数据的存储设备的硬件/软件链路。传输器(640)可以将来自视频编码器(603)的编码视频数据与要传输的其他数据合并,所述其他数据例如是编码音频数据和/或辅助数据流(未示出源)。
控制器(650)可以管理视频编码器(603)的操作。在编码期间,控制器(650)可以向每个编码图片分配某一编码图片类型,这可能影响可以应用于相应的图片的编码技术。例如,通常可以将图片分配为以下图片类型中的一种:
帧内图片(I图片),其可以是在不将序列中的任何其他图片用作预测源的情况下就可以被编码和解码的图片。一些视频编解码器允许不同类型的帧内图片,包括例如独立解码器刷新(“IDR(Independent Decoder Refresh)”)图片。本领域普通技术人员了解I图片的那些变型及其相应的应用和特征。
预测性图片(P图片),其可以是可以使用下述帧间预测或帧内预测进行编码和解码的图片,所述帧间预测或帧内预测使用至多一个运动矢量和参考索引来预测每个块的样本值。
双向预测性图片(B图片),其可以是可以使用下述帧间预测或帧内预测进行编码和解码的图片,所述帧间预测或帧内预测使用至多两个运动矢量和参考索引来预测每个块的样本值。类似地,多个预测性图片可以将多于两个参考图片和相关联元数据用于单个块的重建。
源图片通常可以在空间上细分成多个样本编码块(例如,分别为4×4、8×8、4×8或16×16样本的块),并且逐块进行编码。可以参考其他(编码的)块对这些块进行预测性编码,所述其他块是通过应用于块的相应图片的编码分配而确定的。例如,可以对I图片的块进行非预测性编码,或者可以参考同一图片的已经编码的块对I图片的块进行预测性编码(空间预测或帧内预测)。P图片的像素块可以参考一个先前编码的参考图片经由空间预测或经由时间预测进行预测性编码。B图片的块可以参考一个或两个先前编码的参考图片经由空间预测或经由时间预测进行预测性编码。源图片或中间处理的图片可以被细分成其他类型的块以用于其他目的。编码块和其他类型的块的划分可以遵循或可以不遵循相同的方式,如下面进一步详细描述的。
视频编码器(603)可以根据诸如ITU-T H.265建议书的预定视频编码技术或标准执行编码操作。在视频编码器(603)的操作中,视频编码器(603)可以执行各种压缩操作,包括利用输入视频序列中的时间和空间冗余的预测性编码操作。因此,编码视频数据可以符合由所使用的视频编码技术或标准指定的语法。
在一些示例实施方式中,传输器(640)可以连同经编码的视频一起传输附加数据。源编码器(630)可以包括这样的数据作为编码视频序列的一部分。附加数据可以包括时间/空间/SNR增强层、其他形式的冗余数据例如冗余图片以及切片、SEI消息、VUI参数集片段等。
可以按时间序列将视频捕获为多个源图片(视频图片)。帧内图片预测(通常简写为帧内预测)利用给定图片中的空间相关性,而帧间图片预测利用图片之间的时间或其他相关性。例如,编码/解码中的特定图片——其被称为当前图片——可以被划分成块。当前图片中的块在类似于视频中先前已编码且仍被缓冲的参考图片中的参考块时,可以通过被称作运动矢量的矢量进行编码。运动矢量指向参考图片中的参考块,并且在使用多个参考图片的情况下,运动矢量可以具有标识参考图片的第三维度。
在一些示例实施方式中,可以将双向预测技术用于帧间图片预测。根据这样的双向预测技术,使用两个参考图片,诸如按解码顺序均在视频中的当前图片之前(但按显示顺序可能分别是过去或将来)的第一参考图片和第二参考图片。可以通过指向第一参考图片中的第一参考块的第一运动矢量和指向第二参考图片中的第二参考块的第二运动矢量对当前图片中的块进行编码。可以通过第一参考块和第二参考块的组合来联合预测该块。
此外,可以将合并模式技术用于帧间图片预测以提高编码效率。
根据本公开内容的一些示例实施方式,以块为单位执行诸如帧间图片预测和帧内图片预测的预测。例如,将视频图片序列中的图片划分成编码树单元(coding tree unit,CTU)以用于压缩,图片中的CTU可以具有相同大小,例如64×64像素、32×32像素或16×16像素。一般地,CTU可以包括三个并行编码树块(coding tree block,CTB):一个亮度CTB和两个色度CTB。每个CTU可以被递归地以四叉树分割成一个或多个编码单元(coding unit,CU)。例如,可以将64×64像素的CTU分割成一个64×64像素的CU、或4个32×32像素的CU。32×32块中的一个或更多个块中的每一个可以进一步分割成4个16×16像素的CU。在一些示例实施方式中,可以在编码期间分析每个CU以确定各种预测类型之中用于CU的预测类型,例如帧间预测类型或帧内预测类型。取决于时间和/或空间可预测性,可以将CU分割成一个或更多个预测单元(prediction unit,PU)。通常,每个PU包括亮度预测块(predictionblock,PB)和两个色度PB。在实施方式中,以预测块为单位执行译码(编码/解码)中的预测操作。可以以各种空间模式执行将CU分割成PU(或不同颜色通道的PB)。例如,亮度或色度PB可以包括用于样本例如8×8像素、16×16像素、8×16像素、16×8样本等的值(例如,亮度值)的矩阵。
图7示出了根据本公开内容的另一示例实施方式的视频编码器(703)的图。视频编码器(703)被配置成接收视频图片序列中的当前视频图片内的样本值的处理块(例如,预测块),并且将处理块编码到作为编码视频序列的一部分的编码图片中。示例视频编码器(703)可以用于代替图4示例中的视频编码器(403)。
例如,视频编码器(703)接收用于处理块例如8×8样本的预测块等的样本值的矩阵。然后,视频编码器(703)使用例如率失真优化(rate-distortion optimization,RDO)来确定是使用帧内模式、帧间模式还是双向预测模式对处理块最佳地编码。在确定以帧内模式对处理块进行编码的情况下,视频编码器(703)可以使用帧内预测技术将处理块编码到编码图片中;而在确定以帧间模式或双向预测模式对处理块进行编码的情况下,视频编码器(703)可以分别使用帧间预测或双向预测技术将处理块编码到编码图片中。在一些示例实施方式中,合并模式可以用作帧间图片预测的子模式,其中,在不借助预测子外部的编码运动矢量分量的情况下根据一个或更多个运动矢量预测子得出运动矢量。在一些其他示例实施方式中,可以存在适用于主题块的运动矢量分量。因此,视频编码器(703)可以包括图7中未明确示出的部件,例如,用于确定处理块的预测模式的模式决策模块。
在图7的示例中,视频编码器(703)包括如图7中的示例布置中所示的耦接在一起的帧间编码器(730)、帧内编码器(722)、残差计算器(723)、开关(726)、残差编码器(724)、通用控制器(721)和熵编码器(725)。
帧间编码器(730)被配置成接收当前块(例如,处理块)的样本、将该块与参考图片中的一个或更多个参考块(例如,按显示顺序的先前图片和后来图片中的块)进行比较、生成帧间预测信息(例如,根据帧间编码技术的冗余信息描述、运动矢量、合并模式信息)、以及基于帧间预测信息使用任何合适的技术计算帧间预测结果(例如,已预测块)。在一些示例中,参考图片是使用嵌入在图6的示例编码器620中的解码单元633(示出为图7的残差解码器728,如下面进一步详细描述的)基于经编码的视频信息解码的解码参考图片。
帧内编码器(722)被配置成接收当前块(例如,处理块)的样本、将该块与同一图片中已经编码的块进行比较、以及在变换之后生成量化系数、以及在一些情况下还生成帧内预测信息(例如,根据一个或更多个帧内编码技术的帧内预测方向信息)。帧内编码器(722)可以基于帧内预测信息和同一图片中的参考块计算帧内预测结果(例如,已预测块)。
通用控制器(721)可以被配置成确定通用控制数据,并且基于通用控制数据来控制视频编码器(703)的其他部件。在示例中,通用控制器(721)确定块的预测模式,并且基于该预测模式将控制信号提供至开关(726)。例如,当预测模式是帧内模式时,通用控制器(721)控制开关(726)选择供残差计算器(723)使用的帧内模式结果,并且控制熵编码器(725)选择帧内预测信息并且将帧内预测信息包括在比特流中;并且当该块的预测模式是帧间模式时,通用控制器(721)控制开关(726)选择供残差计算器(723)使用的帧间预测结果,并且控制熵编码器(725)选择帧间预测信息并且将帧间预测信息包括在比特流中。
残差计算器(723)可以被配置成计算接收到的块与选自帧内编码器(722)或帧间编码器(730)的块的预测结果之间的差(残差数据)。残差编码器(724)可以被配置成对残差数据进行编码以生成变换系数。例如,残差编码器(724)可以被配置成将残差数据从空间域转换至频域以生成变换系数。然后,变换系数经受量化处理以获得量化的变换系数。在各种示例实施方式中,视频编码器(703)还包括残差解码器(728)。残差解码器(728)被配置成执行逆变换并且生成解码残差数据。解码残差数据可以适当地由帧内编码器(722)和帧间编码器(730)使用。例如,帧间编码器(730)可以基于解码残差数据和帧间预测信息来生成解码块,以及帧内编码器(722)可以基于解码残差数据和帧内预测信息来生成解码块。适当处理解码块以生成解码图片,并且这些解码图片可以缓冲在存储器电路(未示出)中并用作参考图片。
熵编码器(725)可以被配置成将比特流格式化以包括经编码的块并且执行熵编码。熵编码器(725)被配置成在比特流中包括各种信息。例如,熵编码器(725)可以被配置成在比特流中包括通用控制数据、选择的预测信息(例如,帧内预测信息或帧间预测信息)、残差信息以及其他合适的信息。当在帧间模式或双向预测模式的合并子模式下对块进行编码时,可能不存在残差信息。
图8示出了根据本公开内容的另一实施方式的示例视频解码器(810)的图。视频解码器(810)被配置成接收作为编码视频序列的一部分的编码图片,并且对编码图片进行解码以生成重建的图片。在示例中,视频解码器(810)可以用于代替图4的示例中的视频解码器(410)。
在图8的示例中,视频解码器(810)包括如图8的示例布置中所示的耦接在一起的熵解码器(871)、帧间解码器(880)、残差解码器(873)、重建模块(874)和帧内解码器(872)。
熵解码器(871)可以被配置成根据编码图片来重建某些符号,这些符号表示构成编码图片的语法元素。这样的符号可以包括例如对块进行编码的模式(例如,帧内模式、帧间模式、双向预测模式、合并子模式或另一子模式)、可以标识供帧内解码器(872)或帧间解码器(880)进行预测所使用的某些样本或元数据的预测信息(例如,帧内预测信息或帧间预测信息)、呈例如量化的变换系数的形式的残差信息等。在示例中,当预测模式是帧间模式或双向预测模式时,将帧间预测信息提供至帧间解码器(880);而当预测类型是帧内预测类型时,将帧内预测信息提供至帧内解码器(872)。残差信息可以经受逆量化并且被提供至残差解码器(873)。
帧间解码器(880)可以被配置成接收帧间预测信息,并且基于帧间预测信息来生成帧间预测结果。
帧内解码器(872)可以被配置成接收帧内预测信息,并且基于帧内预测信息来生成预测结果。
残差解码器(873)可以被配置成执行逆量化以提取解量化的变换系数,并且对解量化的变换系数进行处理以将残差从频域转换至空间域。残差解码器(873)还可以利用某些控制信息(以包括量化器参数(Quantizer Parameter,QP)),该控制信息可以由熵解码器(871)提供(由于这可能仅是低数据量控制信息,因此未描绘数据路径)。
重建模块(874)可以被配置成在空间域中将由残差解码器(873)输出的残差与预测结果(由帧间预测模块或帧内预测模块输出,视情况而定)进行组合以形成重建的块,该重建的块形成重建的图片的一部分,重建的图片作为重建的视频的一部分。注意,还可以执行其他合适的操作例如解块操作等来改善视觉质量。
注意,可以使用任何合适的技术来实现视频编码器(403)、(603)和(703)以及视频解码器(410)、(510)和(810)。在一些示例实施方式中,可以使用一个或更多个集成电路来实现视频编码器(403)、(603)和(703)以及视频解码器(410)、(510)和(810)。在另一实施方式中,可以使用执行软件指令的一个或更多个处理器来实现视频编码器(403)、(603)和(603)以及视频解码器(410)、(510)和(810)。
转到用于编码和解码的块划分,一般划分可以从基本块开始,并且可以遵循预定义的规则集、特定模式、划分树或任何划分结构或方案。划分可以是分层的和递归的。在遵循任何示例划分过程或以下描述的其他过程或其组合来分割或划分基本块之后,可以获得最终的一组分区或编码块。这些分区中的每一个可以处于划分分层中的各种划分级别中之一,并且可以具有各种形状。分区中的每一个可以称为编码块(coding block,CB)。对于以下进一步描述的各种示例划分实现方式,每个所得到的CB可以具有任何允许的大小和划分级别。这样的分区称为编码块,因为它们可以形成这样的单元:可以针对所述单元作出一些基本编码/解码决策,并且可以优化、确定编码/解码参数并在经编码的视频比特流中用信号通知该编码/解码参数。最终分区中的最高或最深级别表示树的编码块划分结构的深度。编码块可以是亮度编码块或色度编码块。每种颜色的CB树结构可以称为编码块树(codingblock tree,CBT)。
所有颜色通道的编码块可以统称为编码单元(coding unit,CU)。所有颜色通道的分层结构可以统称为编码树单元(coding tree unit,CTU)。CTU中的各种颜色通道的划分模式或结构可以相同或不同。
在一些实现方式中,用于亮度和色度通道的划分树方案或结构可以不必相同。换言之,亮度通道和色度通道可以具有各自的编码树结构或模式。此外,亮度通道和色度通道是使用相同还是不同的编码划分树结构以及要使用的实际编码划分树结构可以取决于正被编码的切片是P、B还是I切片。例如,对于I切片,色度通道和亮度通道可以具有各自的编码划分树结构或编码划分树结构模式,而对于P或B切片,亮度和色度通道可以共享相同的编码划分树方案。当应用各自的编码划分树结构或模式时,可以通过一个编码划分树结构将亮度通道划分成CB,并且可以通过另一编码划分树结构将色度通道划分成色度CB。
在一些示例实现方式中,可以将预定划分模式应用于基本块。如图9所示,示例4方式划分树(4-way partition tree)可以从第一预定义级别(例如,64×64块级别或其他大小,作为基本块大小)开始,并且基本块可以向下分层划分到预定义的最低级别(例如,4×4级别)。例如,基本块可以经受902、904、906和908所指示的四个预定义的划分选项或模式,其中被指定为R的分区被允许用于递归划分,因为图9中所示的相同划分选项可以以较低尺度重复,直到最低级别(例如,4×4级别)。在一些实现方式中,可以对图9的划分方案应用另外的限制。在图9的实现方式中,可以允许矩形分区(例如1:2/2:1的矩形分区),但不允许它们是递归的,而允许正方形分区是递归的。如果需要,遵循图9的递归情况下的划分生成最终的一组编码块。编码树深度可以被进一步定义,以指示从根节点或根块的分割深度。例如,可以将根节点或根块例如64×64块的编码树深度设置为0,并且在根块遵循图9进一步分割一次之后,编码树深度增加1。对于以上方案,从64×64基本块到4×4的最小分区的最大或最深级别将是4(从级别0开始)。这样的划分方案可以应用于颜色通道中的一个或更多个。每个颜色通道可以遵循图9的方案独立地进行划分(例如,可以在每个分层级别针对颜色通道中的每一个独立地确定预定义模式中的划分模式或选项)。替选地,颜色通道中的两个或更多个可以共享图9的相同的分层模式树(例如,可以在每个分层级别针对两个或更多个颜色通道选择预定义模式中的相同划分模式或选项)。
图10示出了允许递归划分以形成划分树的另一示例预定义划分模式。如图10所示,可以预定义示例10方式划分结构或模式。根块可以在预定义级别处开始(例如,从128×128级别或64×64级别的基本块开始)。图10的示例划分结构包括各种2:1/1:2和4:1/1:4的矩形分区。图10的第二行中指示为1002、1004、1006和1008的具有3个子分区的划分类型可以称为“T型”分区。“T型”分区1002、1004、1006和1008可以称为左T型、顶T型、右T型和底T型。在一些示例实现方式中,不允许进一步细分图10的矩形分区。编码树深度可以被进一步定义,以指示从根节点或根块的分割深度。例如,可以将根节点或根块例如128×128块的编码树深度设置为0,并且在根块遵循图10进一步分割一次之后,编码树深度增加1。在一些实现方式中,可以允许仅1010中的全正方形分区遵循图10的模式递归划分成划分树的下一级别。换言之,对于T型模式1002、1004、1006和1008内的正方形分区,可能不允许递归划分。如果需要,遵循图10的递归情况下的划分过程生成最终的一组编码块。这样的方案可以应用于颜色通道中的一个或更多个。在一些实现方式中,可以对8×8级别以下的分区的使用增加更多的灵活性。例如,在某些情况下可以使用2×2色度帧间预测。
在编码块划分的一些其他示例实现方式中,可以使用四叉树结构来将基本块或中间块分割成四叉树分区。这样的四叉树分割可以被分层地和递归地应用于任何正方形分区。基本块或中间块或分区是否进行进一步四叉树分割可以适应于基本块或中间块/分区的各种局部特性。可以进一步适应性调整图片边界处的四叉树分割。例如,可以在图片边界处执行隐式四叉树分割,使得块将保持四叉树分割直到大小适合图片边界。
在一些其他示例实现方式中,可以使用从基本块的分层二元划分。对于这样的方案,可以将基本块或中间级别块划分成两个分区。二元划分可以是水平的或垂直的。例如,水平二元划分可以将基本块或中间块分割成相等的右分区和左分区。同样,垂直二元划分可以将基本块或中间块分割成相等的上分区和下分区。这样的二元划分可以是分层的和递归的。可以在基本块或中间块中的每一个处作出是否应当继续二元划分方案的决策,并且如果方案进一步继续,则作出应当使用水平二元划分还是垂直二元划分的决策。在一些实现方式中,进一步的划分可以在预定义的最低分区大小处(在一个或两个维度上)停止。替选地,一旦达到距基本块的预定义划分级别或深度,就可以停止进一步的划分。在一些实现方式中,可以限制分区的长宽比。例如,分区的长宽比可以不小于1:4(或大于4:1)。这样,具有4:1的垂直与水平长宽比的垂直条带分区可以仅进一步被垂直二元划分成各自具有2:1的垂直与水平长宽比的上部分区和下部分区。
在又一些其他示例中,可以使用三元划分方案来划分基本块或任何中间块,如图13所示。三元模式可以如图13的1302所示垂直实现,或者如图13的1304所示水平实现。虽然图13中的示例分割比(垂直地或水平地)被示为1:2:1,但是也可以预定义其他比率。在一些实现方式中,可以预定义两个或更多个不同的比率。这样的三元划分方案可以用于补充四叉树或二元划分结构,因为这样的三叉树划分能够在一个连续的分区中捕获位于块中心的对象,而四叉树和二叉树总是沿块中心分割,并且因此将对象分割到分离的分区。在一些实现方式中,示例三叉树的分区的宽度和高度总是2的幂以避免附加变换。
以上划分方案可以在不同的划分级别处以任何方式组合。作为一个示例,可以组合上述四叉树和二元划分方案以将基本块划分成四叉树-二叉树(quadtree-binary-tree,QTBT)结构。在这样的方案中,基本块或中间块/分区可以是四叉树分割或二元分割,服从一组预定义条件(如果指定的话)。在图14中示出了具体示例。在图14的示例中,基本块首先被四叉树分割成四个分区,如1402、1404、1406和1408所示。此后,所得到的分区中的每一个被四叉树划分成四个进一步的分区(例如1408),或者在下一级别被二元分割成两个进一步的分区(水平地或垂直地例如1402或1406,例如两者均是对称的),或者不分割(例如1404)。可以允许二元或四叉树分割递归地用于正方形形状的分区,如1410的整体示例划分模式和1420中的对应树结构/表示所示,其中实线表示四叉树分割,并且虚线表示二元分割。可以将标志用于每个二元分割节点(非叶二元分区)以指示二元分割是水平的还是垂直的。例如,如1420所示,与1410的划分结构一致,标志“0”可以表示水平二元分割,并且标志“1”可以表示垂直二元分割。对于四叉树分割划分,不需要指示分割类型,因为四叉树分割总是水平地且竖直地分割块或分区以产生具有相等大小的4个子块/分区。在一些实现方式中,标志“1”可以表示水平二元分割,并且标志“0”可以表示垂直二元分割。
在QTBT的一些示例实现方式中,四叉树和二元分割规则集可以由以下预定义参数和与其相关联的对应函数来表示:
-CTU大小:四叉树的根节点大小(基本块的大小)
-MinQTSize:允许的最小四叉树叶节点大小
-MaxBTSize:允许的最大二叉树根节点大小
-MaxBTDepth:允许的最大二叉树深度
-MinBTSize:允许的最小二叉树叶节点大小
在QTBT划分结构的一些示例实现方式中,可以将CTU大小设置为128×128亮度样本,其具有两个对应的64×64色度样本块(当考虑并使用示例色度子采样时),可以将MinQTSize设置为16×16,可以将MaxBTSize设置为64×64,可以将MinBTSize(对于宽度和高度两者)设置为4×4,并且可以将MaxBTDepth设置为4。可以首先将四叉树划分应用于CTU以生成四叉树叶节点。四叉树叶节点可以具有从其允许的最小大小16×16(即,MinQTSize)到128×128(即,CTU大小)的大小。如果节点为128×128,则由于大小超过MaxBTSize(即,64×64),因此不会首先通过二叉树分割。否则,不超过MaxBTSize的节点可以通过二叉树划分。在图14的示例中,基本块为128×128。根据预定义规则集,仅可以对基本块进行四叉树分割。基本块具有分割深度0。所得到的四个分区中的每一个为64×64——不超过MaxBTSize,在级别1处可以进一步被四叉树或二叉树分割。过程继续。当二叉树深度达到MaxBTDepth(即,4)时,可以不考虑进一步的分割。当二叉树节点的宽度等于MinBTSize(即,4)时,可以不考虑进一步的水平分割。类似地,当二叉树节点的高度等于MinBTSize时,不考虑进一步的垂直分割。
在一些示例实现方式中,以上QTBT方案可以被配置成支持亮度和色度具有相同的QTBT结构或分离的QTBT结构的灵活性。例如,对于P和B切片,一个CTU中的亮度CTB和色度CTB可以共享相同的QTBT结构。然而,对于I切片,可以将亮度CTB通过QTBT结构划分成CB,并且可以将色度CTB通过另一QTBT结构划分成色度CB。这意味着CU可以用于指代I切片中的不同颜色通道,例如,I切片可以由亮度分量的编码块或两个色度分量的编码块组成,并且P或B切片中的CU可以由所有三个颜色分量的编码块组成。
在一些其他实现方式中,QTBT方案可以用上述三元方案来补充。这样的实现方式可以称为多类型树(multi-type-tree,MTT)结构。例如,除了节点的二元分割之外,还可以选择图13的三元划分模式中之一。在一些实现方式中,仅正方形节点可以经受三元分割。可以使用附加标志来指示三元划分是水平的还是垂直的。
诸如QTBT实现方式和由三元分割补充的QTBT实现方式的两级或多级树的设计主要是为了降低复杂度。理论上,遍历树的复杂度是TD,其中T表示分割类型的数目,以及D是树的深度。可以通过使用多种类型(T)同时减小深度(D)来进行折衷。
在一些实现方式中,可以将CB进一步划分。例如,出于编码和解码过程期间进行帧内或帧间预测的目的,还可以将CB划分成多个预测块(prediction block,PB)。换言之,可以将CB进一步分割成不同的子分区,可以在子分区中进行个别预测决策/配置。并行地,出于描绘执行视频数据的变换或逆变换的级别的目的,可以将CB进一步划分成多个变换块(transform block,TB)。CB到PB和TB的划分方案可以相同或者可以不同。例如,每个划分方案可以基于例如视频数据的各种特性使用其自己的过程被执行。在一些示例实现方式中,PB划分方案和TB划分方案可以是独立的。在一些其他示例实现方式中,PB划分方案和TB划分方案与边界可以是相关的。在一些实现方式中,例如,可以在PB划分之后对TB进行划分,并且特别地,在划分编码块后确定每个PB之后,然后可以将PB进一步划分成一个或更多个TB。例如,在一些实现方式中,可以将PB分割成一个、两个、四个或其他数目的TB。
在一些实现方式中,为了将基本块划分成编码块并且进一步划分成预测块和/或变换块,可以对亮度通道和色度通道进行不同处理。例如,在一些实现方式中,将编码块划分成预测块和/或变换块对于亮度通道可以是允许的,而这样的将编码块划分成预测块和/或变换块对于色度通道可能是不允许的。在这样的实现方式中,亮度块的变换和/或预测因此可以仅在编码块级别处执行。再例如,亮度通道和色度通道的最小变换块大小可以不同,例如,与色度通道相比,亮度通道的编码块可以被允许划分成较小的变换块和/或预测块。对于又一示例,将编码块划分成变换块和/或预测块的最大深度在亮度通道与色度通道之间可以不同,例如,与色度通道相比,亮度通道的编码块可以被允许划分成较深的变换块和/或预测块。对于具体示例,可以将亮度编码块划分成多种大小的变换块,这些变换块可以由向下直到2个级别的递归划分来表示,并且可以允许例如正方形、2:1/1:2和4:1/1:4的变换块形状以及从4×4到64×64的变换块大小。然而,对于色度块,可能仅允许为亮度块指定的最大可能变换块。
在用于将编码块划分成PB的一些示例实现方式中,PB划分的深度、形状和/或其他特性可以取决于PB是帧内编码还是帧间编码。
将编码块(或预测块)划分成变换块可以以各种示例方案实现,包括但不限于递归地或非递归地进行四叉树分割和预定义模式分割,并另外考虑了编码块或预测块的边界处的变换块。通常,所得到的变换块可以在不同的分割级别处,可以不具有相同的大小,并且可以不需要形状为正方形(例如,它们可以是具有一些允许的大小和长宽比的矩形)。下面关于图15、图16和图17进一步详细描述其他示例。
然而,在一些其他实现方式中,经由以上划分方案中的任一种获得的CB可以用作用于预测和/或变换的基本或最小编码块。换言之,出于执行帧间预测/帧内预测目的和/或出于变换目的,不执行进一步的分割。例如,从以上QTBT方案获得的CB可以直接用作用于执行预测的单元。具体地,这样的QTBT结构去除了多个划分类型的构思,即,其去除了CU、PU和TU的分离,并且支持如上所述的CU/CB划分形状的更多灵活性。在这样的QTBT块结构中,CU/CB可以具有正方形或矩形形状。这样的QTBT的叶节点被用作用于预测和变换处理的单元,而无需任何进一步的划分。这意味着CU、PU和TU在这样的示例QTBT编码块结构中具有相同的块大小。
可以以任何方式组合以上各种CB划分方案和CB到PB和/或TB(包括没有PB/TB划分)的进一步划分。提供以下具体实现方式作为非限制性示例。
下面描述编码块和变换块划分的具体示例实现方式。在这样的示例实现方式中,可以使用递归四叉树分割或上述预定义分割模式(例如图9和图10中的那些)将基本块分割成编码块。在每个级别处,是否应当继续对特定分区的进一步四叉树分割可以依据本地视频数据特性来确定。所得到的CB可以处于各种四叉树分割级别,并且可以具有各种大小。可以在CB级别(或对于所有三色通道,CU级别)处做出关于是使用帧间图片(时间)预测还是帧内图片(空间)预测来对图片区域进行编码的决策。可以根据预定义的PB分割类型将每个CB进一步分割成一个、两个、四个或其他数目的PB。在一个PB内,可以应用相同的预测处理,并且可以基于PB将相关信息传输至解码器。在通过基于PB分割类型应用预测处理获得残差块之后,可以根据与用于CB的编码树类似的另一四叉树结构将CB划分成TB。在该特定实现方式中,CB或TB可以但不必限于正方形形状。此外,在该特定示例中,对于帧间预测,PB可以为正方形或矩形形状,但对于帧内预测,PB可以仅为正方形。可以将编码块分割成例如四个正方形形状的TB。可以将每个TB进一步递归地(使用四叉树分割)分割成较小的TB,所述较小的TB称为残余四叉树(Residual Quadtree,RQT)。
下面进一步描述将基本块划分成CB、PB和或TB的另一示例实现方式。例如,不是使用诸如图9或图10所示的多个划分单元类型,而是可以使用具有嵌套的多类型树的四叉树,该嵌套的多类型树使用二元和三元分割分段结构(例如,如上所述的QTBT或具有三元分割的QTBT)。可以放弃CB、PB和TB的拆分(即,将CB划分成PB和/或TB,以及将PB划分成TB),除非当对于最大变换长度而言具有太大的大小的CB需要拆分时,其中这样的CB可能需要进一步分割。该示例划分方案可以被设计成支持针对CB划分形状的更多灵活性,使得预测和变换都可以在CB级别上执行而无需进一步划分。在这样的编码树结构中,CB可以具有正方形或矩形形状。具体地,可以首先通过四叉树结构划分编码树块(coding tree block,CTB)。然后,可以通过嵌套多类型树结构进一步划分四叉树叶节点。图11示出了使用二元或三元分割的嵌套多类型树结构的示例。具体地,图11的示例多类型树结构包括四种分割类型,所述四种分割类型被称为垂直二元分割(SPLIT_BT_VER)(1102)、水平二元分割(SPLIT_BT_HOR)(1104)、垂直三元分割(SPLIT_TT_VER)(1106)和水平三元分割(SPLIT_TT_HOR)(1108)。然后,CB对应于多类型树的叶。在该示例实现方式中,除非CB对于最大变换长度而言太大,否则该分段被用于预测和变换处理两者,而无需任何进一步的划分。这意味着,在大多数情况下,CB、PB和TB在具有嵌套多类型树编码块结构的四叉树中具有相同的块大小。在最大支持变换长度小于CB的颜色分量的宽度或高度时,出现例外。在一些实现方式中,除了二元或三元分割之外,图11的嵌套模式可以进一步包括四叉树分割。
图12中示出了针对一个基本块的具有块划分的嵌套多类型树编码块结构(包括四叉树、二元和三元分割选项)的四叉树的一个特定示例。更详细地,图12示出了基本块1200被四叉树分割成四个正方形分区1202、1204、1206和1208。针对经四叉树分割的分区中的每一个做出进一步使用图11的多类型树结构和四叉树进行进一步的分割的决策。在图12的示例中,分区1204未被进一步分割。分区1202和1208各自采用另一四叉树分割。对于分区1202,第二级别四叉树分割的左上、右上、左下和右下分区分别采用第三级别的四叉树分割、图11的水平二元分割1104、无分割和图11的水平三元分割1108。分区1208采用另一四叉树分割,并且第二级别四叉树分割的左上、右上、左下和右下分区分别采用图11的垂直三元分割1106的第三级别分割、无分割、无分割和图11的水平二元分割1104。1208的第三级别左上分区的子分区中的两个子分区分别根据图11的水平二元分割1104和水平三元分割1108被进一步分割。分区1206在图11的垂直二元分割1102成两个分区之后采用第二级别分割模式,这两个分区根据图11的水平三元分割1108和垂直二元分割1102被进一步分割成第三级别。根据图11的水平二元分割1104,对第三级别的分区中的一个分区进一步应用第四级别分割。
对于以上具体示例,最大亮度变换大小可以为64×64,并且最大支持色度变换大小可以不同于亮度,例如可以为32×32。即使以上图12中的示例CB通常不被进一步分割成更小的PB和/或TB,在亮度编码块或色度编码块的宽度或高度大于最大变换宽度或高度时,也可以将亮度编码块或色度编码块在水平方向和/或垂直方向上自动分割以满足该方向上的变换大小限制。
在以上将基本块划分成CB的特定示例中,并且如上所述,编码树方案可以支持亮度和色度具有分开的块树结构的能力。例如,对于P和B切片,一个CTU中的亮度CTB和色度CTB可以共享相同的编码树结构。例如,对于I切片,亮度和色度可以具有分开的编码块树结构。当应用分开的块树结构时,可以通过一个编码树结构将亮度CTB划分成亮度CB,并且通过另一编码树结构将色度CTB划分成色度CB。这意味着I切片中的CU可以包括亮度分量的编码块或两个色度分量的编码块,而P或B切片中的CU总是包括所有三个颜色分量的编码块,除非视频是单色的。
当编码块进一步被划分成多个变换块时,其中的变换块可以按各种顺序或扫描方式而排列在比特流中。下面进一步详细描述用于将编码块或预测块划分成变换块以及变换块的编码顺序的示例实现方式。在一些示例实现方式中,如上所述,变换划分可以支持多种形状的变换块,例如1:1(正方形)、1:2/2:1和1:4/4:1,其中变换块大小的范围从例如4×4至64×64。在一些实现方式中,如果编码块小于或等于64×64,则变换块划分可以仅应用于亮度分量,使得对于色度块,变换块大小与编码块大小相同。否则,如果编码块宽度或高度大于64,则亮度编码块和色度编码块两者可以分别被隐式地分割成多个min(W,64)×min(H,64)变换块和min(W,32)×min(H,32)变换块。
在变换块划分的一些示例实现方式中,对于帧内编码块和帧间编码块两者,可以将编码块进一步划分成具有多至预定义数目的级别(例如,2个级别)的划分深度的多个变换块。变换块划分深度和大小可以是相关的。对于一些示例实现方式,以下在表1中示出了从当前深度的变换大小到下一深度的变换大小的映射。
表1:变换划分大小设置
基于表1的示例映射,对于1:1正方形块,下一级别变换分割可以创建四个1:1正方形子变换块。变换划分可以在例如4×4处停止。这样,当前深度的4×4的变换大小对应于下一深度的4×4的相同大小。在表1的示例中,对于1:2/2:1非正方形块,下一级别变换分割可以创建两个1:1正方形子变换块,而对于1:4/4:1非正方形块,下一级别变换分割可以创建两个1:2/2:1子变换块。
在一些示例实现方式中,对于帧内编码块的亮度分量,可以关于变换块划分应用附加限制。例如,对于变换划分的每个级别,可以将所有子变换块限制为具有相等的大小。例如,对于32×16编码块,级别1变换分割创建两个16×16子变换块,级别2变换分割创建八个8×8子变换块。换言之,第二级别分割必须应用于所有第一级别子块,以将变换单元保持为相等的大小。图15中示出了按表1进行的帧内编码正方形块的变换块划分的示例、以及由箭头指示的编码顺序。具体地,1502示出了正方形编码块。在1504中示出了根据表1的向4个大小相等的变换块的第一级别分割,其中,编码顺序由箭头指示。在1506中示出了根据表1的所有第一级别大小相等的块向16个大小相等的变换块的第二级别分割,其中,编码顺序由箭头指示。
在一些示例实现方式中,对于帧间编码块的亮度分量,以上针对帧内编码的限制可能不适用。例如,在第一级别的变换分割之后,子变换块中的任一个可以进一步独立地再分割一个级别。因此,所得到的变换块可以具有或可以不具有相同的大小。图16中示出了帧间编码块向变换块的示例分割以及其编码顺序。在图16的示例中,根据表1以两个级别将帧间编码块1602分割成变换块。在第一级别处,将帧间编码块分割成四个大小相等的变换块。然后,将四个变换块中的仅一个变换块(而非所有的变换块)进一步分割成四个子变换块,从而得到具有两种不同大小的总共7个变换块,如1604所示。这7个变换块的示例编码顺序由图16的1604中的箭头示出。
在一些示例实现方式中,对于色度分量,可以对变换块应用一些附加限制。例如,对于色度分量,变换块大小可以与编码块大小一样大,但是不小于预定义大小例如8×8。
在一些其他示例实现方式中,对于其宽度(W)或高度(H)大于64的编码块,亮度编码块和色度编码块两者可以分别被隐含地分割为多个min(W,64)×min(H,64)和min(W,32)×min(H,32)变换单元。此处,在本公开内容中,“min(a,b)”可以返回a与b之间的较小值。
图17还示出了用于将编码块或预测块划分为变换块的另一替选示例方案。如图17所示,代替使用递归变换划分,可以根据编码块的变换类型将预定义的一组划分类型应用于编码块。在图17所示的特定示例中,可以应用6个示例划分类型中的一个划分类型,以将编码块分割为各种数目的变换块。这样的生成变换块划分的方案可以应用于编码块或预测块。
更详细地,图17的划分方案提供了任何给定变换类型的多达6个示例划分类型(变换类型是指例如诸如ADST等的初级变换的类型)。在该方案中,可以基于例如率失真成本向每个编码块或预测块分配变换划分类型。在示例中,可以基于编码块或预测块的变换类型来确定分配给编码块或预测块的变换划分类型。特定变换划分类型可以对应于变换块分割大小和模式,如由图17所示的6个变换划分类型所示出的。可以预定义各种变换类型与各种变换划分类型之间的对应关系。以下示出了其中大写的标签指示可以基于率失真成本而分配给编码块或预测块的变换划分类型的示例:
·PARTITION_NONE:分配等于块大小的变换大小。
·PARTITION_SPLIT:分配为块大小的1/2宽度和块大小的1/2高度的变换大小。
·PARTITION_HORZ:分配具有与块大小相同的宽度和块大小的1/2高度的变换大小。
·PARTITION_VERT:分配具有块大小的1/2宽度和与块大小相同的高度的变换大小。
·PARTITION_HORZ4:分配具有与块大小相同的宽度和块大小的1/4高度的变换大小。
·PARTITION_VERT4:分配具有块大小的1/4宽度和与块大小相同的高度的变换大小。
在以上示例中,如图17所示的变换划分类型针对经划分的变换块全部包含均匀的变换大小。这仅是示例,而不是限制。在一些其他实现方式中,针对特定划分类型(或模式)下的经划分的变换块,可以使用混合变换块大小。
然后,从以上任何一个划分方案中获得的PB(或CB,在不被进一步划分为预测块时也被称为PB)可以成为经由帧内预测或帧间预测进行编码的单独块。对于用于当前PB的帧间预测,可以生成当前块与预测块之间的残差,对残差进行编码,并将残差包括在经编码的比特流中。
可以例如在单参考模式或复合参考模式下实现帧间预测。在一些实现方式中,跳过标志可以首先包括在当前块的比特流中(或在更高级别处),以指示当前块是否是帧间编码的并且不被跳过。如果当前块是帧间编码的,则另一标志可以进一步包括在比特流中,作为指示单参考模式或复合参考模式是否用于当前块的预测的信号。对于单参考模式,可以使用一个参考块来生成当前块的预测块。对于复合参考模式,可以使用两个或更多个参考块,以例如通过加权平均来生成预测块。复合参考模式可以称为多于一个参考模式、两个参考模式或多个参考模式。可以使用一个或多个参考帧索引以及另外使用指示参考块与当前块之间在相对于帧的位置上例如在水平像素和垂直像素中的移位的相应的一个或多个运动矢量来识别一个或多个参考块。例如,针对当前块的帧间预测块可以从被参考帧中的一个运动矢量识别为单参考模式下的预测块的单参考块生成,而对于复合参考模式,预测块可以通过两个参考帧中的由两个参考帧索引和两个对应的运动矢量指示的两个参考块的加权平均来生成。可以以各种方式将运动矢量编码并包括在比特流中。
在一些实现方式中,编码或解码系统可以维护解码图片缓冲器(Decoded PictureBuffer,DPB)。一些图像/图片可以保持在DPB中以等待显示(在解码系统中),并且DPB中的一些图像/图片可以用作参考帧以使得能够进行帧间预测(在解码系统或编码系统中)。在一些实现方式中,DPB中的参考帧可以被标记为用于正在被编码或解码的当前图像的短期参考或长期参考。例如,短期参考帧可以包括下述帧,所述帧用于对当前帧中的块或按照解码顺序与当前帧最接近的预定义数目(例如,2)个后续视频帧中的块进行帧间预测。长期参考帧可以包括DPB中的下述帧,所述帧可以用于对按照解码顺序与当前帧相距多于预定义数目个帧的帧中的图像块进行预测。关于用于短期参考帧和长期参考帧的这种标签的信息可以被称为参考图片集(Reference Picture Set,RPS),并且可以被添加到已编码比特流中的每个帧的头。可以通过图片顺序计数器(Picture Order Counter,POC)来识别已编码视频流中的每个帧,所述帧根据回放顺序以绝对方式进行编号或者与例如从I帧开始的图片组相关。
在一些示例实现方式中,可以基于RPS中的信息来形成包含用于帧间预测的短期参考帧和长期参考帧的标识的一个或更多个参考图片列表。例如,针对单向帧间预测可以形成单个图片参考列表,表示为L0参考(或参考列表0),而针对双向帧间预测可以形成两个图片参考列表,表示为L0(或参考列表0)和L1(或参考列表1)以用于两个预测方向中的每一个。包括在L0列表和L1列表中的参考帧可以以各种预定义方式进行排序。L0列表和L1列表的长度可以用信令通知在视频比特流中。单向帧间预测可以在单参考模式下进行,或者当在复合预测模式下用于通过加权平均生成预测块的多个参考在要预测的块所位于的帧的同一侧时在复合参考模式下进行。双向帧间预测可以仅在复合模式下进行,因为双向帧间预测涉及至少两个参考块。
在一些实现方式中,可以实现用于帧间预测的合并模式(merge mode,MM)。通常,对于合并模式,用于当前PB的单参考预测中的运动矢量或者复合参考预测中的运动矢量中的一个或更多个运动矢量可以从其他运动矢量得出,而不是独立地计算并用信号通知。例如,在编码系统中,用于当前PB的当前运动矢量可以由当前运动矢量与其他一个或更多个已经编码的运动矢量(称为参考运动矢量)之间的差来表示。运动矢量中的这样的差异而不是当前运动矢量的整体可以被编码并包括在比特流中,并且可以被链接至参考运动矢量。相应地在解码系统中,可以基于经解码的运动矢量差和与其链接的经解码的参考运动矢量来得出与当前PB对应的运动矢量。作为通用合并模式(general merge mode,MM)帧间预测的特定形式,基于运动矢量差的这样的帧间预测可以被称为具有运动矢量差(Merge Modewith Motion Vector Difference,MMVD)的合并模式。因此,通常的MM或特别的MMVD可以被实现为利用与不同的PB相关联的运动矢量之间的相关性来提高编码效率。例如,邻近的PB可以具有类似的运动矢量,并且因此MVD可以小并且可以被有效地编码。又例如,运动矢量可以针对空间中类似位置/定位的块在时间上(在帧之间)关联。
在一些示例实现方式中,可以在编码处理期间将MM标志包括在比特流中以用于指示当前PB是否在合并模式下。另外地,或者可替选地,可以在编码处理期间将MMVD标志包括在比特流中并且在比特流中用信号通知以指示当前PB是否在MMVD模式下。可以在PB级、CB级、CU级、CTB级、CTU级、切片级、帧级、图片级、序列级提供MM和/或MMVD标志或指示符。对于特定示例,可以针对当前CU包括MM标志和MMVD标志两者,并且可以在跳过标志和MM标志之后立即用信号通知MMVD标志以指定MMVD模式是否用于当前CU。
在MMVD的一些示例实现方式中,可以针对正在预测的块形成用于运动矢量预测的参考运动矢量(reference motion vector,RMV)或MV预测器候选的列表。RMV候选的列表可以包括预定数目(例如,2个)的MV预测器候选块,MV预测器候选块的运动矢量可以用于预测当前运动矢量。RMV候选块可以包括从同一帧中的邻近块和/或时间块(例如,当前帧的前一帧或后一帧中相同位置的块)中选择的块。这些选项表示在相对于当前块的空间或时间位置处可能具有与当前块类似或相同的运动矢量的块。MV预测器候选的列表的大小可以是预定的。例如,列表可以包括两个或更多个候选。为了在RMV候选的列表上,例如,可以要求候选块具有与当前块相同的参考帧(或多个参考帧),候选块必须存在(例如,在当前块靠近帧的边缘时,需要执行边界检查),并且必须在编码处理期间已经被编码和/或在解码处理期间已经被解码。在一些实现方式中,如果空间上邻近的块可用并且满足以上条件,则可以首先用空间上邻近的块(以特别的预定义顺序扫描)来填充合并候选的列表,并且然后如果列表中仍然有可用空间,则用时间块来填充合并候选的列表。例如,可以从当前块的左边的块和顶部的块中选择邻近的RMV候选块。RMV预测器候选的列表可以在各种级别(序列、图片、帧、切片、超级块等)下动态地形成为动态参考列表(Dynamic Reference List,DRL)。可以在比特流中用信号通知DRL。
在一些实现方式中,可以用信号通知被用作用于预测当前块的运动矢量的参考运动矢量的实际MV预测器候选。在RMV候选列表包括两个候选的情况下,被称为合并候选标志的一位标志可以用于指示参考合并候选的选择。针对在复合模式下预测的当前块,使用MV预测器预测的多个运动矢量中的每个运动矢量可以与来自合并候选列表的参考运动矢量相关联。编码器可以确定RMV候选中的哪一个更接近地预测当前编码块的MV,并且将该选择作为索引用信号通知到DRL中。
在MMVD的一些示例实现方式中,在RMV候选被选择并且用作用于要预测的运动矢量的基本运动矢量预测器之后,可以在编码系统中计算运动矢量差(MVD或差量MV,表示要预测的运动矢量与参考候选运动矢量之间的差)。这样的MVD可以包括表示MV差的大小和MV差的方向的信息,可以在比特流中用信号通知MV差的大小和MV差的方向两者。可以以各种方式用信号通知运动差大小和运动差方向。
在MMVD的一些示例实现方式中,距离索引可以用于指定运动矢量差的大小信息,并且可以用于指示表示与起始点(参考运动矢量)的预定义运动矢量差的预定义偏移集合中的一个。然后可以将根据用信号通知的索引的MV偏移添加至起始(参考)运动矢量的水平分量或垂直分量。可以通过MVD的方向信息来确定应当偏移参考运动矢量的水平分量还是垂直分量。表2中指定了距离索引与预定义偏移之间的示例预定义关系。
表2——距离索引与预定义MV偏移的示例关系
在MMVD的一些示例实现方式中,方向索引还可以用信号通知并且用于表示MVD相对于参考运动矢量的方向。在一些实现方式中,可以将方向限制为水平方向和垂直方向中的任一个。表3中示出了示例2位方向索引。在表3的示例中,MVD的解释可以是根据起始/参考MV的信息的变量。例如,在起始/参考MV对应于单向预测块或者对应于具有指向当前图片的同一侧的两个参考帧列表(即,两个参考图片的POC都大于当前图片的POC,或者都小于当前图片的POC)的双向预测块时,表3中的符号可以指定添加至起始/参考MV的MV偏移的符号(方向)。在起始/参考MV对应于具有在当前图片的不同侧的两个参考图片(即,一个参考图片的POC大于当前图片的POC,并且另一参考图片的POC小于当前图片的POC)的双向预测块时,并且图片参考列表0中的参考POC与当前帧之间的差大于图片参考列表1中的参考POC与当前帧之间的差,表3中的符号可以指定添加至与图片参考列表0中的参考图片对应的参考MV的MV偏移的符号(方向),并且与图片参考列表1中的参考图片对应的MV的偏移的符号可以具有相反的值(用于偏移的相反的符号)。否则,如果图片参考列表1中的参考POC与当前帧之间的差大于图片参考列表0中的参考POC与当前帧之间的差,则表3中的符号可以指定添加至与图片参考列表1相关联的参考MV的MV偏移的符号,并且与图片参考列表0相关联的参考MV的偏移的符号具有相反的值。
表3–方向索引指定的MV偏移符号的示例实现
方向IDX | 00 | 01 | 10 | 11 |
x轴(水平) | + | – | N/A | N/A |
y轴(垂直) | N/A | N/A | + | – |
在一些示例实现方式中,可以根据每个方向上的POC的差来缩放MVD。如果两个列表中POC的差相同,则不需要缩放。否则,如果参考列表0中的POC的差大于参考列表1中的POC的差,则缩放参考列表1的MVD。如果参考列表1的POC差大于列表0,则可以以相同的方式缩放列表0的MVD。如果起始MV是单向预测的,则MVD被添加至可用MV或参考MV。
在用于双向复合预测的MVD编码和信令的一些示例实现方式中,除了单独编码和用信号通知这两个MVD之外或可替代单独编码和用信号通知这两个MVD,可以实现对称MVD编码,使得仅一个MVD需要用信号通知,并且另一MVD可以从用信号通知的MVD得出。在这样的实现方式中,用信号通知包括列表-0和列表-1两者的参考图片索引的运动信息。然而,仅用信号通知与例如参考列表-0相关联的MVD,并且不用信号通知而是得出与参考列表-1相关联的MVD。具体地,在切片级,被称为“mvd_l_zero_flag”的标记可以被包括在比特流中,以用于指示是否未在比特流中用信号通知参考列表-1。如果该标志为1,从而指示参考列表-1等于零(并且因此没有用信号通知),则被称为“BiDirPredFlag”的双向预测标志可以被设置为0,意指不存在双向预测。否则,如果mvd_ll_zero_flag为零,如果列表-0中最近的参考图片和列表-1中最近的参考图片形成参考图片的前向和后向对或参考图片的后向和前向对,则BiDirPredFlag可以被设置为1,并且列表-0参考图片和列表-1参考图片两者是短期参考图片。否则,BiDirPredFlag被设置为0。BiDirPredFlag为1可以指示在比特流中另外地用信号通知对称模式标志。在BiDirPredFlag为1的情况下,解码器可以从比特流中提取对称模式标志。例如,对称模式标志可以在CU级别用信号通知(如果需要),并且其可以指示对称MVD编码模式是否用于对应的CU。在对称模式标志为1的情况下,其指示使用对称MVD编码模式,并且列表-0和列表-1两者的参考图片索引(被称为“mvp_l0_flag”和“mvp_l1_flag”)仅被用信号通知有与列表-0相关联的MVD(被称为”MVD0“),并且另一运动矢量差“MVD1”将被得出而不用信号通知。例如,可以将MVD1得出为-MVD0。因此,在示例对称MVD模式中仅用信号通知一个MVD。
在用于MV预测的一些其他示例实现方式中,协调方案可以用于实现通用合并模式MMVD和用于单参考模式MV预测和复合参考模式MV预测两者的一些其他类型的MV预测。可以使用各种语法元素来用信号通知其中预测当前块的MV的方式。
例如,针对单参考模式,可以用信号通知以下MV预测模式:
NEARMV–在没有任何MVD的情况下,直接使用由DRL(动态参考列表)索引指示的列表中的运动矢量预测器(MVP)之一。
NEWMV–使用由DRL索引用信号通知的列表中的运动矢量预测器(MVP)之一作为参考,并且对MVP应用差量(例如,使用MVD)。
GLOBALMV–使用基于帧级全局运动参数的运动矢量。
同样,针对使用与要预测的两个MV对应的两个参考帧的复合参考帧间预测模式,可以用信号通知以下MV预测模式:
NEAR_NEARMV–在没有用于要预测的MV中的两个MV的MVD的情况下,使用由DRL索引用信号通知的列表中的运动矢量预测器(MVP)之一。
NEAR_NEWMV–为了预测两个运动矢量中的第一运动矢量,在没有MVD的情况下,使用由DRL索引用信号通知的列表中的运动矢量预测器(MVP)之一作为参考MV;为了预测两个运动矢量中的第二运动矢量,结合另外用信号通知的差量MV(MVD),使用由DRL索引用信号通知的列表中的运动矢量预测器(MVP)之一作为参考MV。
NEW_NEARMV–为了预测两个运动矢量中的第二运动矢量,在没有MVD的情况下,使用由DRL索引用信号通知的列表中的运动矢量预测器(MVP)之一作为参考MV;为了预测两个运动矢量中的第一运动矢量,结合另外用信号通知的差量MV(MVD),使用由DRL索引用信号通知的列表中的运动矢量预测器(MVP)之一作为参考MV。
NEW_NEWMV–使用由DRL索引用信号通知的列表中的运动矢量预测器(MVP)之一作为参考MV,并且将其与另外用信号通知的差量MV结合使用以预测两个MV中的每一个。
GLOBAL_GLOBALMV–基于MV的帧级全局运动参数使用来自每个参考的MV。
因此,上面的术语“NEAR”是指在没有任何MVD的情况下使用参考MV作为通用合并模式的MV预测,而术语“NEW”是指包括使用参考MV并且如MMVD模式下那样利用用信号通知或得出的MVD对其进行偏移的MV预测。针对复合帧间预测,上面的参考基本运动矢量和运动矢量差量两者在两个参考或两个MVD之间通常可以是不同的或独立的,即使这两个MVD例如可以是相关的,并且可以利用这样的相关性来减少用信号通知两个运动矢量差量所需的信息量。为了利用这样的相关性,如下面进一步详细描述的,可以在比特流中实现并指示两个MVD的联合信令。
在MVD的一些示例实现方式中,可以允许用于MVD的预定义像素分辨率。例如,可以允许1/8像素运动矢量精度(或准确度)。可以以各种方式构造和用信号通知在各种MV预测模式下的上面所描述的MVD。在一些实现方式中,可以使用各种语法元素来用信号通知参考帧列表0或列表1中的以上运动矢量差。
例如,被称为“mv_joint”的语法元素可以指定与其相关联的运动矢量差的哪些分量非零。对于MVD,这是针对所有非零分量联合用信号通知的。例如,mv_joint具有以下值:
0可以指示沿着水平方向或垂直方向不存在非零MVD;
1可以指示仅沿着水平方向存在非零MVD;
2可以指示仅沿着垂直方向存在非零MVD;
3可以指示沿着水平方向和垂直方向两者存在非零MVD。
在用于MVD的“mv_joint”语法元素用信号通知不存在非零MVD分量的情况下,则没有其他MVD信息可以用信号通知。然而,如果“mv_joint”语法用信号通知存在一个或两个非零分量的信号,则如下面描述的,还可以针对非零MVD分量中的每个非零MVD分量用信号通知附加语法元素。
例如,被称为“mv_sign”的语法元素可以用于另外指定对应的运动矢量差分量是正还是负。
又例如,被称为“mv_class”的语法元素可以用于针对对应的非零MVD分量指定预定义类别集合中的运动矢量差的类别。例如,运动矢量差的预定义类别可以用于将运动矢量差的连续大小空间划分成不交叠的范围,其中每个范围对应于一个MVD类别。因此,用信号通知的MVD类别指示对应的MVD分量的大小范围。在下面的表4中所示出的示例实现方式中,较高的类别对应于具有较大大小的范围的运动矢量差。在表4中,符号(n,m]用于表示大于n个像素并且小于或等于m个像素的运动矢量差的范围。
表4:用于运动矢量差的大小类别
在一些其他示例中,被称为“mv_bit”的语法元素还可以用于指定非零运动矢量差分量与对应的用信号通知的MV类别大小范围的起始大小之间的偏移的整数部分。因此,mv_bit可以指示MVD的大小或幅度。“my_bit”中用于用信号通知每个MVD类别的全部范围所需的位数可以根据MV类别而变化。例如,表4的实现方式中的MV_CLASS 0和MV_CLASS1可能仅需要单个位来指示从起始MVD为0开始的为1或2的整数像素偏移;表4的示例实现方式中的每个更高的MV_CLASS可能需要比前一个MV_CLASS逐步地多一个位用于“mv_bit”。
在一些其他示例中,被称为“mv_fr”的语法元素还可以用于指定用于对应的非零MVD分量的运动矢量差的前2个分数位,而被称为“mv_hp”的语法元素可以用于指定用于对应的非零MVD分量的运动矢量差的第三个分数位(高分辨率位)。两位“mv_fr”基本上提供1/4像素MVD分辨率,而“mv_hp”位还可以提供1/8像素分辨率。在一些其他实现方式中,可以使用多于一个的“mv_hp”位来提供比1/8像素更精细的MVD像素分辨率。在一些示例实现方式中,可以在各种级别中的一个或更多个级别用信号通知其他标志以指示是否支持1/8像素分辨率或更高的MVD分辨率。如果MVD分辨率没有被应用于特定编码单元,则可以不用信号通知上面针对对应的不支持的MVD分辨率的语法元素。
在上面的一些示例实现方式中,分数分辨率可以独立于不同类别的MVD。换言之,无论运动矢量差的大小如何,都可以使用预定义数目的“mv_fr”和“mv_hp”位来提供用于运动矢量分辨率的类似选项以用于用信号通知非零MVD分量的分数MVD。
然而,在一些其他示例实现方式中,各种MVD大小类别中的运动矢量差的分辨率可以是差分的或自适应的。具体地,用于较高MVD类别的大MVD大小的高分辨率MVD可以不在压缩效率或编码增益方面提供统计上显著的改进。因此,针对对应于更高MVD大小类别的更大的MVD大小范围,可以以递减的分辨率(整数像素分辨率或分数像素分辨率)对MVD进行编码。同样地,通常可以针对较大的MVD值以递减的分辨率(整数像素分辨率或分数像素分辨率)对MVD进行编码。这样的MVD类别相关或MVD大小相关的MVD分辨率通常可以被称为自适应MVD分辨率、大小相关的自适应MVD分辨率或大小相关的MVP分辨率。术语“分辨率”还可以被称为“像素分辨率”。自适应MVD分辨率可以以如通过以下示例实现方式所描述的各种方式来实现,以用于实现总体上更好的压缩效率。特别地,以不太精确的MVD为目标而减少的信令位数目可能大于由于这样的不太精确的MVD而导致的对帧间预测残差进行编码所需的附加位,由于统计观察到以非自适应方式在与低的大小或低类别MVD的MVD分辨率类似的水平处理大的大小或高类别的MVD的MVD分辨率可能不会显著提高具有大的大小或高类别MVD的块的帧间预测残差编码效率。换言之,针对大的大小或高类别MVD使用较高的MVD分辨率与使用较低的MVD分辨率相比可能不产生太多编码增益。
在一些通用示例实现方式中,MVD的像素分辨率或精度可以随着MVD类别的提高而降低或者可以不提高。降低MVD的像素分辨率对应于较粗糙的MVD(或从一个MVD级别到下一个级别的较大步长)。在一些实现方式中,MVD像素分辨率与MVD类别之间的对应关系可以被指定、预定义或预配置,并且因此可能不需要在编码比特流中用信号通知。
在一些示例实现方式中,表3的MV类别可以分别与不同的MVD像素分辨率相关联。
在一些示例实现方式中,每个MVD类别可以与单个允许的分辨率相关联。在一些其他实现方式中,一个或更多个MVD类别可以分别与两个或更多个可选的MVD像素分辨率相关联。因此,比特流中用于具有这样的MVD类别的当前MVD分量的信号之后可以跟随有用于指示针对当前MVD分量选择的可选像素分辨率的附加信令。在一些示例实现方式中,自适应地允许的MVD像素分辨率可以包括但不限于1/64像素(像素)、1/32像素、1/16像素、1/8像素、1-4-像素、1/2-像素、1-像素、2-像素、4-像素…(按分辨率的降序)。因此,递增MVD类别中的每一个MVD类别可以以非递增方式与这些MVD像素分辨率之一相关联。在一些实现方式中,MVD类别可以与以上两个或更多个分辨率相关联,并且较高分辨率可以低于或等于之前MVD类别的较低分辨率。例如,如果表4的MV_CLASS_3与可选的1-像素和2-像素分辨率相关联,则表4的MV_CLASS_4可以与其相关联的最高分辨率将是2-像素。在一些其他实现中,MV类别的最高可允许分辨率可以高于之前(较低)MV类别的最低可允许分辨率。然而,递增MV类的允许的分辨率的平均值可能仅是非递增的。
在一些实现方式中,在允许高于1/8像素的分数像素分辨率的情况下,“mv_fr”和“mv_hp”信令可以相应地扩展到总共超过3个分数位。
在一些示例实现方式中,分数像素分辨率可能仅被允许用于低于或等于阈值MVD类别的MVD类别。例如,分数像素分辨率可能仅被允许用于MVD_CLASS_0,而不被允许用于表4中的所有其他MV类别。同样,分数像素分辨率可以仅被允许用于低于或等于表4的其他MV类别中的任何一个MVD类别的MVD类别。对于高于阈值MVD类别的其他MVD类别,仅允许MVD的整数像素分辨率。以这样的方式,对于以高于或等于阈值MVD类别的MVD类别用信号通知的MVD,可以不需要用信号通知诸如“mv-fr”和/或“mv-hp”位中的一个或更多个的分数分辨率信令。对于具有分辨率低于1像素的MVD类别,可以进一步减少“mv-bit”信令中的位数。例如,对于表4中的MV_CLASS_5,MVD像素偏移的范围为(32,64],因此需要5个位来以1-像素分辨率用信号通知整个范围。然而,如果MV_CLASS_5与2-像素MVD分辨率相关联(分辨率低于1-像素分辨率),则“mv-bit”可能需要4个位而不是5个位,并且“mv-fr”和“mv-hp”都不需要在作为MV-CLASS_5的“mv_class”的信令之后用信号通知。
在一些示例实现方式中,分数像素分辨率可能仅被允许用于具有低于阈值整数像素值的整数值的MVD。例如,分数像素分辨率可能仅被允许用于小于5个像素的MVD。对应于该示例,分数分辨率可以被允许用于表4的MV_CLASS_0和MV_CLASS_1,并且不被允许用于所有其他MV类别。又例如,分数像素分辨率可能仅被允许用于小于7个像素的MVD。对应于该示例,分数分辨率可以被允许用于表4的MV_CLASS_0和MV_CLASS_1(具有低于5个像素的范围),并且分数分辨率不被允许用于MV_CLASS_3及更高(具有高于5个像素的范围)。对于属于MV_CLASS_2的MVD,其像素范围包括5个像素,根据“mv-bit”值,可以或可以允许MVD的分数像素分辨率。如果“m-bit”值用信号通知为1或2(使得用信号通知的MVD的整数部分是5或6,被计算为具有如“m-bit”所指示的偏移为1或2的MV_CLASS_2的像素范围的开始),则可以允许分数像素分辨率。否则,如果“mv-bit”值用信号通知为3或4(使得用信号通知的MVD的整数部分是7或8),则可以不允许分数像素分辨率。
在一些其他实现方式中,针对等于或高于阈值MV类别的MV类别,仅单个MVD值可以被允许。例如,这样的阈值MV类别可以是MV_CLASS_2。因此,MV_CLASS_2及以上可仅被允许具有单个MVD值且不具有分数像素分辨率。可以预定义用于这些MV类别的单个允许的MVD值。在一些示例中,所允许的单个值可以是表4中这些MV类别的相应范围的较高端的值。例如,MV_CLASS_2到MV_CLASS_10可以高于或等于MV_CLASS2的阈值类别,并且这些类别的单个允许的MVD值可以分别被预定义为8、16、32、64、128、256、512、1024和2048,如表5所示。在一些其他示例中,允许的单个值可以是表4中这些MV类别的相应范围的中间值。例如,MV_CLASS_2到MV_CLASS_10可以高于类别阈值,并且这些类别的单个允许的MVD值可以分别被预定义为3、6、12、24、48、96、192、384、768和1536。范围内的任何其他值还可以被定义为用于相应MVD类别的单个允许的分辨率。
表5:每个MV大小类别中的自适应MVD
在上面的实现方式中,在用信号通知的“mv_class”等于或高于预定义的MVD类别阈值的情况下,仅“mv_class”信令足以确定MVD值。MVD的大小和方向然后将使用“mv_class”和“mv_sign”来确定。
因此,当针对仅一个参考帧(来自参考帧列表0或列表1,但不是两者)用信号通知MVD或针对两个参考帧联合地用信号通知MVD的情况下,MVD的精度(或分辨率)可以取决于表3中的相关联的运动矢量差的类别和/或MVD的大小。可以设想取决于MVD大小或类别的各种其他自适应MVD分辨率方案。
转向各种复合帧间预测模式,其中每个MV可以通过参考运动矢量预测并且通过MVD编码,如上面所描述的,这两个MVD可以在比特流中单独地用信号通知或联合地用信号通知。因此,在一些示例实现方式中,除了上面所描述的NEAR_NEARMV、NEAR_NEWMV、NEW_NEARMV、NEW_NEWMV和GLOBAL_GLOBALMV模式之外,可以引入被称为JOINT_NEWMV的另一帧间预测模式用于其中联合地用信号通知参考列表0和参考列表1的MVD的模式。具体地,如果帧间预测模式被指示为NEW_NEWMV,则单独地用信号通知参考列表0和参考列表1的MVD,而在帧间预测模式被指示为JOINT_NEWMV模式的情况下,则联合地用信号通知参考列表0和参考列表1的MV。特别地,对于联合MVD,可能仅需要在比特流中用信号通知和发送被称为joint_delt_mv的一个MVD,并且参考列表0和参考列表1的MVD可以根据joint_delta_mv得出。然后可以将得出的MVD与参考列表0或参考列表1中的参考运动矢量组合以生成用于定位用于复合帧间预测的参考块的两个运动矢量。
在复合帧间预测的一些实现方式中,可以将JOINT_NEWMV模式与NEAR_NEARMV、NEAR_NEWMV、NEW_NEARMV、NEW_NEWMV和GLOBAL_GLOBALMV模式一起用信号通知。在这样的实现方式中,可以在各种信令级别(例如,序列级、图片级、帧级、切片级、瓦片级、超级块级等)中的任何一个信令级下在比特流中包括语法用于指示这些可替选的复合帧间预测模式中的任何一个。可替选地,JOINT_NEWMV模式可以被实现为NEW_NEWMV模式的子模式。换言之,在NEW_NEWMV模式下,用于两个参考块的两个MVD被联合地用信号通知(因此为JOINT_NEWMV子模式)或不被联合地用信号通知(NEW_NEWMV模式的另一子模式)。在这样的实现方式中,第一语法元素可以包括在比特流中用于指示NEAR_NEARMV、NEAR_NEWMV、NEW_NEARMV、NEW_NEWMV和GLOBAL_GLOBALMV模式中的任何一个,并且在第一语法元素指示针对编码块选择了NEW_NEWMV模式的情况下,则还可以将第二语法元素包括在比特流中并且可由解码器提取以用于指示用于编码块的MVD是单独地用信号通知还是联合地用信号通知。
对于复合帧间预测中的联合MVD实现,可以从比特流中根据用信号通知的联合MVD(例如,上面所描述的joint_delta_mv)得出与参考MV相关联的MVD。例如,这样的得出可能涉及对用信号通知的联合MVD进行缩放以获得两个MVD中的一个或两个。换言之,可以在将用信号通知的联合MVD添加至运动矢量预测器(MVP)或参考MV之前对其进行缩放。作为缩放的结果,经缩放的MVD的精度或像素分辨率可能与运动矢量差的允许精度不同。在一些示例实现方式中,根据联合地用信号通知的MVD进行缩放的这样的MVD在被添加至参考MVD以用于生成运动矢量之前可以首先被量化到针对当前图片或切片或瓦片或超级块或编码块的MVD的允许精度。
在一些示例实现方式中,可以在比特流中用信号通知复合帧间预测模式中的参考帧的帧索引。帧索引可以对应于与参考帧相关联的图片顺序计数器(POC)。参考帧与当前帧之间的距离可以由对应的POC之间的差来限定和表示。参考帧(在当前帧之前或之后)的方向可以由符号表示。因此,带符号的距离可以用于表示参考帧相对于当前帧的位置。用于复合帧间预测模式的参考帧可以被称为第一参考帧和第二参考帧。
在一些示例实现方式中,在用信号通知JOINT_NEWMV模式并且两个参考帧与当前帧之间的POC距离不同的情况下,可以基于POC距离来缩放MVD用于参考列表0或参考列表1。具体地,参考帧列表0与当前帧之间的距离可以表示为td0,并且参考帧列表1与当前帧之间的距离可以表示为td1。如果td0等于或大于td1,则joint_mvd可以直接用于参考列
表0,并且可以基于式(1)根据joint_mvd得出参考列表1的MVD。
否则,如果td1等于或大于td0,则joint_mvd直接用于参考列表1,并且基于式(2)根据joint_mvd得出参考列表0的MVD。
回到上面描述的运动矢量预测器(MVP)和MVP列表,在一些示例实现方式中,可以为编码块组(例如,超级块)建立这样的运动矢量预测器列表,运动矢量预测器列表包含用于针对超级块的每个预测块预测运动矢量的运动矢量候选。可以预定义或配置MVP列表的最大大小。可以使用预定义的一组规则来建立MVP列表中的候选。例如,可以从属于在空间上接近当前编码块或超级块的块的已经重建的运动矢量中选择这些候选(被称为空间运动矢量预测器或SMVP)。可替选地或另外地,这些候选可以属于当前编码块或超级块的参考帧中的块(被称为时间运动矢量预测器或TMVP)。空间运动矢量预测器可以是相邻的SMVP或非相邻的SMVP。相邻的SMVP可以指属于与当前编码块或超级块相邻的预测块的运动矢量预测器。非相邻的SMVP可以指属于不紧邻当前编码块或超级块的预测块的运动矢量预测器。其他类型的MVP候选还可以从重建的运动矢量得出。又例如,如下面进一步详细描述的,可以将一个或更多个附加MVP库保持为用于建立MVP列表的源之一。
可以构造MVP列表以在当前编码块或超级块的编码器侧和解码器侧两者上保持预定数目的重建MVP候选(SMVP、TMVP或其他得出的MVP,或其他类型的MVP候选)。当在帧间预测模式中对当前预测块进行编码时,编码器将从MVP候选列表中的候选中选择提供最佳编码效率的MVP作为当前预测块的运动矢量的预测器。可以在比特流中用信号通知在MVP列表中所选择的MVP的索引。解码器将在重建比特流时对应地更新当前编码块或超级块的MVP列表,提取用于当前帧间预测的预测块的MVP索引,根据MVP列表中提取的MVP索引从MVP候选列表获得MVP,并且使用MVP作为当前预测块的运动矢量的预测器,以便重建当前预测块的运动矢量(例如,通过将从MVP列表提取的运动矢量预测器与对应的MVD组合)。例如,MVP列表可以表示具有预定的固定大小的堆栈。
例如,可以从包括相邻的空间邻近预测块以及非相邻的空间邻近块的空间邻近预测块得出SMVP,相邻空间邻近预测块是当前块或超级块的顶部或左侧的当前块或超级块的直接邻近块(假设这些是已经重建的之前块),非相邻的空间邻近块靠近但不与当前块或超级块直接相邻。图18中示出了亮度块或超级块的空间邻近预测块集合的示例。
图18示出了超级块1802,在该示例中,超级块1802包括16个预测块(其中每个预测块是帧间预测的)。例如,每个预测块可以是8×8块。如图18中的超级块1802周围的各种较小的正方形所示,超级块1802可以与各种相邻和非相邻的预测块相关联。仅顶部和左侧的邻近预测块被示出,因为这些邻近预测块表示已经被重建的预测块(例如,在解码器中,或者在编码器的循环解码单元中)。在图18中用斜线阴影化的邻近预测块表示相邻的邻近预测块,而其它预测块表示当前超级块1802的非相邻的邻近预测块。
在一些示例实现方式中,为了确定是否需要将图18中的空间邻近块的运动矢量中的任何运动矢量视为MVP候选列表中的条目,可以对照预定义的规则集来检查或搜索这些邻近预测块。例如,可以检查或搜索这些邻近预测块以确定它们是否关联于与超级块1802内的当前预测块相同的参考帧索引(用于帧间预测)。如果这些邻近预测块与当前预测块不共享相同的参考帧索引,则其运动矢量可能没有资格作为MVP候选列表中的条目。因为MVP候选列表的大小是有限的(例如,4个或其他数目的候选),所以可以按预定顺序检查/搜索这些邻近预测块并对其进行排序。搜索顺序可以是预定义的。在图18中示出了示例预定义搜索顺序,其中,如由箭头1所示出的,首先从左到右检查顶部相邻的邻近预测块,然后如由箭头2所示出的,从上到下检查左侧相邻的邻近预测块。如由箭头3所示出的,接下来检查超级块1801的右上邻近预测块。之后,如由箭头4所示出的,以该示例的搜索顺序,检查当前超级块1802的左上角邻近预测块,然后是检查顶部的第二行邻近预测块、左侧的第二列邻近预测块、顶部的第三行邻近预测块以及左侧的第三列邻近预测块。预测块的邻近行内的搜索顺序可以是从左到右,而预测块的邻近列内的搜索顺序可以是从上到下。在检查和搜索处理期间,如果MVP候选列表中的空间仍然可用,则与和当前预测块相同的参考帧相关联的邻近预测块可以被标记为有资格作为MVP候选列表的条目。术语MP候选列表和MP列表可互换使用。
在一些示例实现方式中,如果对应的相邻预测块与当前块共享同一参考帧,则在TMVP之前首先将相邻的SMVP候选放入MVP列表中。如果仍然存在空间并且如果对应的相邻预测块与当前块共享同一参考帧,则在TMVP之后将非相邻的SMVP候选放入MVP列表中。因此,在一些示例实现方式中,所有SMVP候选都具有与当前块相同的参考图片。例如,如果当前预测块具有单个参考图片(单参考帧间预测),则具有与当前块的参考图片相同的单个参考图片的MVP候选,或者具有具备与单个参考图片当前块的参考图片相同的两个参考图片中的一个参考图片的复合参考图片的MVP候选有资格被放入MVP候选列表中。又例如,对于具有复合参考图片(例如,2个参考图片)的当前块,仅在候选块也在复合参考下被预测并且候选块的两个参考图片与当前块的两个参考图片相同时才可以将候选块放入MVP候选列表中(在仍然存在空间的情况下)。
在一些其他实现方式中,可以将比图18中所示出的非相邻的邻近块更多或更少行或列的非相邻的邻近块包括在SMVP候选搜索中。
在一些示例实现方式中,如上面所描述的以及下面更详细地描述的,还可以根据当前预测块的参考图片或帧得出TMVP并将其包括在MVP候选列表中。为了生成时间MV预测器,首先存储多个帧的MV以及与相应帧相关联的帧索引。此后,对于当前帧的每个预测块(例如,每个8×8块),识别其空间轨迹穿过当前块的多个帧的MV,并将其与对应的多个帧的帧索引一起存储在时间MV缓冲器中。对于使用单个参考帧的帧间预测,无论参考帧是前向参考帧还是后向参考帧,MV都以8×8单位存储以用于执行未来帧的时间运动矢量预测。对于复合帧间预测,仅前向MV以8×8单位存储以用于执行未来帧的时间运动矢量预测。
在图19中示出了一个示例。在该示例中,帧1906中的所指示块的帧1906(R1,图19的右侧)的MV,被称为MVref,从R1指向其参考帧1908(图19的左侧)。在这样做的过程中,MVref穿过当前帧1902的8×8块1910。MVref被存储在与该8×8块1910相关联的时间MV缓冲器中。在用于识别穿过特定当前预测块的这样的运动矢量MVref的一些示例实现方式中,在参考帧列表0和参考帧列表1中以预定顺序扫描诸如R1的多个帧:例如,LAST_FRAME、BWDREF_FRAME、ALTREF_FRAME,ALTREF2_FRAME和LAST2_FRAME。在一些实现方式中,来自较高索引参考帧的MV(以扫描顺序)不替代先前识别的由较低索引参考帧分配的MV(以扫描次序)。
然后,给定当前帧中当前块的预定义块坐标,存储在时间MV缓冲器中的相关联的MVref可以被识别并投影到当前块上,以得出从当前块指向其图19的参考帧1904(例如,图19中的MV0)的TMVP。如果在例如如上面所描述的或者以其他顺序的相邻SMVP搜索之后在MVP候选列表中存在空间,则可以将这样的TMVP视为MVP候选列表中的MVP候选。
在一些实现方式中,可以根据预测块组(例如,超级块)的粒度来搜索或确定TMVP。换言之,一个完整的超级块可以与相同的一个或更多个TMVP候选相关联。超级块可以包括多个预测块。例如,超级块可以是16×16,或者可以是32×32,而预测块可以是8×8。因此,超级块可以对应地包括4个或16个预测块。例如,可以在预测块级上得出和重建运动矢量。因此,针对超级块的TMVP的搜索可以包括扫描多个预测块以识别其运动矢量并确定这些运动矢量或这些运动矢量的缩放版本中的哪些应当被视为TMVP候选,以及应当以什么顺序考虑它们以形成关于超级块的MVP候选列表。TMVP候选的搜索中要扫描的多个预测块可以包括超级块内的块(被称为内部TMVP块)或超级块外的块(也被称为外TMVP块或外部TMVP块)。在一些实现方式中,要扫描的预测块集合和扫描预测块集合的顺序可以是预定义的、预配置的或自适应配置的。预测块集合相对于超级块的块位置可以被相应地重新定义、预配置或自适应地配置。
图20中示出了示例。在图20中,16×16超级块包括4个预测块B0、B1、B2和B3。因此,这些预测块形成内部块。还可以预定义外部预测块集合,例如B4至B6。可以搜索/测试这些预测块(内部TMVP块和外部TMVP块两者)以用于确定和识别包括B0至B3的超级块的有效TMVP候选。因此,在该示例中,针对有效时间MV预测器检查多达7个块。可以在这些内部预测块和外部预测块中预定义搜索顺序。例如,扫描可以从内部块进行到外部块。在扫描处理期间,如果在其他扫描(包括但不限于更高级别的SMVP扫描)之后仍然存在空间,如果识别到每个扫描块的TMVP,则将其放入MV预测器列表中。例如,并且如上面所描述的,可以在相邻的空间MV预测器之后但在非相邻的空间MV预测器之前检查时间MV预测器。在一个示例中,TMVP搜索顺序可以是B0->B1->B2->B3->B4->B5->B6。下面关于图25至图30进一步详细地提供各种配置下的各种其他示例搜索实现方式。
在一些示例实现方式中,为了得出MV预测器,所有的空间MV候选和时间MV候选被池化,并且每个预测器可以被分配有在扫描空间邻近预测块和时间邻近预测块期间所确定的权重。基于相关联的权重,对MVP候选进行分类和排序,并且多达预定数目(例如,四个)的候选被识别并被添加至MVP列表。如上所述,MV预测器的该列表还被称为动态参考列表(DRL),该DRL在动态MV预测模式下使用。DRL可以被实现为MVP索引的列表。
在一些示例实现方式中,在池化TMVP和SMVP之后,如果MVP列表仍然未满,则可以执行对MVP候选的附加搜索,并且可以使用这样的附加MVP候选来填充MVP列表。附加MVP候选可以包括例如全局MV、零MV、无缩放的组合复合MV等。在一些实现方式中,在附加搜索之前,可以仅池化相邻的TMVP和SMVP。换言之,在这些实现方式中可以排除不相邻的TMVP。
在一些示例实现方式中,添加在MVP列表中的相邻的SMVP候选、TMVP候选和非相邻的SMVP候选(如果允许)可以被进一步重新排序。这样的重新排序处理的示例可以基于每个候选的权重。例如,可以根据当前块和候选块在空间中的交叠区域来预定义候选的权重。
在一些示例实现方式中,一些类型的MVP可能不会被考虑并且因此在重新排序处理期间可能不会受到影响。例如,在重新排序处理期间可能不考虑外部/非相邻的TMVP候选,这意指重新排序处理仅影响相邻的空间候选。
在一些其他示例实现方式中,可以得出其他MVP候选。可以针对单个参考图片并且以复合模式得出MVP候选。例如,可以放宽上面关于SMVP的要求邻近块与当前块共享参考帧以便被视为SMVP候选的限制。例如,在单帧间预测情况下,如果当前块的邻近预测块的参考帧与当前块的参考帧不相同,但是它们在相同的方向(向前或向后)上,则可以利用时间缩放算法将邻近预测块的MV缩放至当前块的参考帧以便形成当前块的运动矢量的MVP。
图21中示出了示例。在图21中,示出了从当前帧2105中的当前超级块2104的邻近预测块2102到邻近预测块2102的参考帧2108中的参考预测块2106的运动矢量MV1 2110,并且可以根据当前帧2105、邻近预测块2102的参考帧2106和当前超级块2104的参考帧2120的帧位置对运动矢量MV1 2110进行缩放以生成如图21中所示出的MV0 2130作为当前超级块2104的MVP候选。
又例如,如图22中所示出的,针对在复合帧间预测下具有当前帧2204的当前超级块2202的情况,在例如组合MV的参考帧与当前块2202相同的情况下,利用来自当前超级块2202的不同邻近预测块的组合MV来得出当前块的MVP。在图22中,组合MV(MV2,MV3)具有与当前块2202相同的参考帧2210和2212,但是它们可以来自不同的邻近块2206和2208。
在上面的示例实现方式的一些扩展中,可以实现运动矢量候选库机制。例如,可以实现多个MV库缓冲器,并且每个库缓冲器可以与对应于分别覆盖单帧间模式和复合帧间模式的单个或一对参考帧的唯一的参考帧类型相关联。可以以相同的大小来实现所有库缓冲器。在新的MV被添加至已满的库缓冲器时,现有MV被逐出以为新的MV腾出空间。
除了上面描述的以其他方式针对MV列表所获得的参考MV候选之外,编码块(例如,超级块)还可以参考MV候选库来收集针对MV列表的参考MV候选。在对超级块进行编码之后,用由超级块的预测块所使用的MV来更新MV库。
在一些示例实现方式中,可以在瓦片中实现编码。每个瓦片可以与由瓦片内的所有超级块使用的独立MV参考库相关联。在开始对每个瓦片进行编码时,清空对应的库。此后,在对该瓦片内的每个超级块进行编码的同时,可以使用来自该库的MV作为MV参考候选。在对超级块进行编码结束时,库被更新。
图23中示出了基于瓦片中的超级块的示例库更新处理。在图23中,瓦片2302包括多个超级块(SB)。被编码的当前超级块被示出为2304。如图23所指示的,2304上方或2304左侧同一行上的超级块已经被编码(或在解码器中被重建),而2304下方或2304右侧同一行上的超级块将被编码(或在解码器中被重建)。如图23中的箭头所示,在对超级块2304进行编码之后,将超级块2303内的每个编码块所使用的第一(例如,多达64个)候选MV添加至库2306。在更新期间,还可以涉及修剪处理。
在使用MV候选库的一些实现方式中,在对超级块进行上面所描述的MV候选扫描之后,如果在MV候选列表中仍然存在空闲时隙,则编解码器可以参考MV候选库(在具有匹配参考帧类型的缓冲器中)以获得其他MV候选。例如,从库的末尾向后到库的起始,如果库中的MV还不存在于MVP候选列表中,则可以将其附加至MVP候选列表中,直到MVP列表满为止。
根据上面的各种实现方式,MVP列表的示例构造可以遵循图24中所示出的搜索/处理顺序,直到识别到预定义数目的MVP候选:相邻的SMVP(2402)、针对现有候选的重新排序处理(2404)、TMVP(2406)、非相邻的SMVP(2408)、得出的候选(2410)、额外或附加的MVP候选(2412),来自参考MV候选库的候选(2414)。
如上所述,MVP列表中MVP候选的空间或数目可以是有限的。例如,MVP列表可以被限制为4个MVP候选。在许多情况下,遵循上面的实现方式或其他方式可识别的TMVP可能是充足的,并且因此在遵循例如图24的过程搜索相邻的SMVP之后,将几乎总是填满MVP列表。因此,其他MVP候选(例如,属于非相邻的SMVP、其他MVP、附加MVP或来自MVP库的MVP的MVP候选)几乎总是可以被剥夺被评估以包括在MVP列表中的机会。因此,在下面描述的一些示例实现方式中,可以对可以包括在MVP候选列表中的TMVP候选的数目施加限制。这样的限制可以是在各种编码级别预定义的或配置的。TMVP的这样的预定或配置的限制可以基于视频类型和统计,以便于实现改进的编码增益。
在一些示例实现方式中,可以插入MVP候选列表的TMVP候选的数目可以被限制为N个,其中N是正整数。例如,N可以是1或2。以这样的方式,所得到的MVP列表可以不被TMVP过度支配,并且可以在包括其他类型的MVP方面更加平衡。
在一些其他示例实现方式中,可以设计用于构建MVP列表的处理,以使得包括SMVP、TMVP和上面所描述的其他类型的得出的和/或附加的MVP的各种类型的MVP可以彼此补充以联合地提供改进的编码效率。
例如,考虑到针对寻找SMVP候选而扫描的相邻或非相邻的邻近块在当前超级块的顶部或左侧,如果针对TMVP的当前超级块的内部预测块的扫描从当前超级块中更远离当前超级块的顶部和左侧的内部预测块开始,则互补TMVP可以更有可能。以这样的方式,更远离针对SMVP扫描的预测块因此与针对SMVP扫描的预测块更互补的这些预测块的TMVP提供了较早的机会来形成MVP列表。
这样的内部预测块扫描顺序对于上面关于图20描述的顺序可能是不同的。可以存在用于这样的扫描的各种具体示例实现方式。根据例如被编码的视频帧的类型和/或特性,在提高总体编码效率方面,一些顺序可能比其他顺序更好。内部预测块中用于这样的目的的扫描顺序可以是预定义的或者可以被配置并在比特流中用信号通知。例如,可能存在具有预定义顺序索引的预定义顺序。可以由编码器在预定义的扫描顺序中进行扫描顺序的选择,并且可以针对比特流中使用的超级块用信号通知所选择的扫描顺序的索引。
在一些示例实现方式中,可以针对超级块扫描内部预测块以按图25和图26中所示出的顺序识别候选TMVP,其中从右到左和从下到上扫描内部块。具体地,图25示出了包括4个预测块的大小为16×16的示例超级块,每个预测块为8×8。内部块的示例扫描顺序从右到左并从下到上进行,例如B3→B2→B1→B0。同样,图26示出了包括16个预测块的大小为32×32的示例超级块,每个预测块为8×8。内部块的示例扫描顺序从右到左并从上到下进行,例如,B15→B14→B13→B12→B11→B10→B9→B8→B7→B6→B5→B4→B3→B2→B1→B0。这些实现方式从更远离例如可以提供SMVP候选的相邻和非相邻的邻近块(至少在水平方向上)并且因此与其互补的内部块开始扫描TMVP候选。
在一些替选示例实现方式中,可以针对超级块扫描内部预测块以按图27和图28中所示出的顺序来识别候选TMVP。具体地,图27示出了包括4个预测块的大小为16×16的示例超级块,每个预测块为8×8。内部块的示例扫描顺序从下到上并从左到右进行,例如,按B3→B1→B2→B0的顺序。同样,图28示出了包括16个预测块的大小为32×32的示例超级块,每个预测块为8×8。内部块的示例扫描顺序从右到左并从上到下进行,例如,B15→B11→B7→B3→B14→B10→B6→B2→B13→B9→B5→B1→B12→B8→B4→B0。这些实现方式从更远离例如可以提供SMVP候选的相邻和非相邻的邻近块(至少在垂直方向上)并且因此与其互补的内部块开始扫描TMVP候选。
在一些其他替代示例实现中,可以针对超级块扫描内部预测块以按图29和图30中所示出的顺序来识别候选TMVP。具体地,图29示出了包括4个预测块的大小为16×16的示例超级块,每个预测块为8×8。内部块的示例扫描顺序从下到上并从左到右进行,例如,按B3→B2→B1→B0的顺序。同样,图30示出了包括16个预测块的大小为32×32的示例超级块,每个预测块为8×8。内部块的示例扫描顺序从右到左并从上到下进行,例如,B15→B14→B11→B13→B10→B7→B12→B9→B6→B3→B8→B5→B2→B4→B1→B0。这些实现方式从更远离例如可以提供SMVP候选的相邻和非相邻的邻近块(在垂直方向和水平方向上)并且因此与其互补的内部块开始扫描TMVP候选。
根据上面的内部预测块的示例扫描顺序,可以识别并将多达有限数目N的TMVP包括在MVP列表中,只要在扫描内部块时MVP列表仍然存在空间。如果在扫描内部块时识别到少于N个的TMVP,并且MVP列表中仍然存在空间,并且要扫描的下一个MVP候选是外部块,则扫描外部块,只要总TMVP不多于N个(如果N被配置用于聚合中的所有TMVP)并且MVP列表中仍然存在空间的程度。
在上面关于图25至图30的示例实现方式的一些其他变型中,在内部预测块的扫描期间可以跳过数目为M的候选,其中M可以是非负值,如果M等于0,则其与图25至图30中的实现方式相同。
例如,在针对TMVP的扫描中要跳过的候选内部预测块可以是更接近超级块的顶部和/或左侧的候选内部预测块,以便于在MVP列表中生成与其他MVP候选例如SMVP较少互补的TMVP,如上面所说明的。要跳过的内部块可以以预测块的行或列为单位,例如,在TMVP扫描中可以跳过内部块的一个或更多个行或列。
例如,如果涉及多于1个的内部TMVP块行,则可以跳过第一内部TMVP块行(顶行)。具体地,如图25、图27和图29中所示出的,可以跳过B0和B1,并且按图25、图27和图29中的相应顺序仅检查B2和B3内部TMVP块。例如,如图26、图28和图30中所示出的,可以跳过B0至B3,并且按图26、图28和图30中所示出的相应顺序来检查其余的内部块。
又例如,如果涉及多于1个的内部TMVP列,则可以跳过第一内部TMVP块列。例如,如图25、图27和图29中所示出的,可以跳过B0和B2,并且按图25、图27和图29所示出的相应顺序仅检查B1和B3内部TMVP块。例如,如图26、图28和图30中所示出的,可以跳过B0、B4、B8和B12,并且按图26、图28和图30中所示出的相应顺序来检查其余的内部块。
又例如,如果涉及多于1个的内部TMVP列和多于1个的内部TMVP行,则可以跳过第一内部TMVP块列和第一内部TMVP行两者。例如,如图25、图27和图29中所示出的,可以跳过B0、B1和B2,并且仅检查B3内部TMVP块。例如,如图26、图28和图30中所示出的,可以跳过B0至B3、B4、B8和B12,并且按图26、图28和图30中所示出的相应顺序来检查其余的内部块B5、B6、B7、B9、B10、B11、B13、B14、B15。
在一些示例实现方式中,除了在TMVP扫描期间跳过当前超级块的内部预测块中的一些内部预测块之外,无论当前超级块的大小如何(例如,16×16或32×32),都可以跳过外部TMVP块并且不对其进行检查以插入MVP列表。例如,在图20中,诸如B4、B5和B6的外部块可以被跳过并且可以不被检查或插入MVP列表中。
MVP列表中TMVP候选的N个运动矢量预测器的上限可以单独应用于内部块,或者单独应用于外部块,或者聚合应用于内部块和外部块两者。在一些示例实现方式中,可以将来自内部TMVP块的至多1个TMVP候选插入MVP列表中。在一些其他实现方式中,可以将来自外部TMVP块的至多1个TMVP候选插入MVP列表中。在一些其他实现方式中,可以将来自内部和外部TMVP块的至多1个TMVP候选插入MVP列表中。
在一些示例实现方式中,用于识别TMVP候选的要扫描的预测块的数目可以被限制为K个,其中K是正整数。例如,K可以被限制为4。因此,针对TMVP候选,可以仅扫描K个块。这样的限制可以应用于内部TMVP块的扫描、外部TMVP块的扫描或聚合应用于内部和外部TMVP块两者的扫描。在一些实现方式中,可以针对内部块和外部块指定单独的K。这些限制可以是预定义的或固定的。这些限制可以与超级块大小无关。可替选地,可以在比特流中自适应地配置和指示这些限制。例如,可以检查K数目的内部块以识别用于插入MVP列表中的TMVP。根据例如一些预定义或配置的模式,要检查的K数目的内部预测块可以均匀地分布在共置的TMVP块区域内。例如,要检查的内部预测块可以均匀地分布在图25、图27和图29中的B0至B3之间,或者分布在图26、图28和图30中的B0至B15之间。又例如,K应用于内部预测块,并且可以被设置为1。换言之,只检查一个内部块。例如,要检查的内部块可以是图25、图27和图29的块B2,并且可以是图16、图28和图30的块B15。
可以指定要插入MVP列表中的TMVP的数目的上限(上面的整数N)和针对TMVP候选要检查的预测块的数目的上限(上面的整数K)两者。上述上限可以是预定义的或配置的。其可以相互依赖。例如,N和P可以被指定为N以及P与N之间的差。在一些限制中,P和N可以被指定为相同的整数。
在一些示例实现方式中,可以有条件地应用MVP列表中TMVP候选的N个运动矢量预测器的上限。例如,在以双向帧间预测模式对当前超级块进行编码并且两个参考帧指向当前帧的不同方向时(一个参考帧的POC小于当前帧的POC,并且另一参考帧的POC大于当前帧的POC),可以将上限N应用于当前超级块,否则可以不应用于当前超级块。
在一些示例实现方式中,MVP列表中TMVP的上限N的有条件应用可以涉及已经添加至MVP列表的SMVP候选的数目。例如,在已经将N2个SMVP候选添加到MVP列表中的情况下,可以添加至MVP列表的TMVP候选的上限N2可以是有效的,否则,N2限制将不适用。例如,可以将N1设置为2,可以将N2设置为1。N1和N2可以是预定义的或者可以被配置。N1和N2可以是依赖于超级块的大小或者可以是独立于超级块的大小的超级块大小。
转向用于在比特流中用信号通知MVP的几个方面,在一些示例实现方式中,由于从MVP列表或DRL索引中选择MVP可以与已经插入MVP列表中的TMVP的数目相互关联,所以用信号通知DRL索引和帧间预测模式的上下文可以取决于是否已经将至少L数目的TMVP插入MVP列表中,L是任何正整数。在一个示例中,L可以被设置为1。换言之,在MVP列表中存在至少L个TMVP的情况下,第一上下文可以用于用信号通知特定预测块的DRL索引和帧间预测模式,否则,第二上下文可以用于用信号通知DRL索引。
在一些示例实现方式中,TMVP候选块在MVP列表中的位置可以例如经由其他编码信息隐式地用信号通知,包括但不限于空间邻近块的运动矢量,或者已经插入MVP列表中的空间MVP的数目等。
图31示出了示例方法的流程图3100,该示例方法遵循基于上述的用于搜索TMVP候选和用于构建MVP列表的实现方式的基本原理。示例方法流程在S3101处开始。在S3110中,在接收到视频比特流之后,确定要通过参考帧中的参考块对当前预测块进行帧间预测,以及要通过参考运动矢量对当前预测块的运动矢量进行预测。在S3120中,当前帧中的候选预测块集合被识别为用于当前预测块的TMVP候选的搜索池。在S3130中,遵循搜索顺序搜索候选预测块集合以识别用于当前预测块的至多N个TMVP候选,其中,响应于识别到N个TMVP候选而停止搜索,N是正整数。在S3140中,构建指示MVP候选集合的MVP列表,MVP候选集合包括SMVP候选集合和至多N个TMVP候选中的一个或更多个。在S3150中,从视频流中提取用于当前预测块的MVP索引。在S3160中,根据提取的MVP索引和MVP列表来识别用于对当前预测块进行帧间预测的参考运动矢量。该示例方法在S3199处结束。
在本公开内容的实施方式和实现方式中,任何步骤和/或操作可以根据需要以任何量或顺序组合或布置。步骤和/或操作中的两个或更多个可以并行执行。本公开内容中的实施方式和实现方式可以单独地使用或以任何顺序组合地使用。此外,方法(或实施方式)、编码器和解码器中的每一个可以通过处理电路系统(例如,一个或更多个处理器或者一个或更多个集成电路)实现。在一个示例中,一个或更多个处理器执行存储在非暂态计算机可读介质中的程序。本公开内容中的实施方式可以应用于亮度块或色度块。术语块可以被解释为预测块、编码块或编码单元即CU。这里的术语块也可以用于指代变换块。在以下各项中,当说到块大小时,其可以是指块宽度或高度、宽度和高度的最大值、或宽度和高度的最小值、或面积大小(宽度×高度)、块的长宽比(宽度:高度、或高度:宽度)。
上述技术可以使用计算机可读指令被实现为计算机软件,并且被物理地存储在一个或更多个计算机可读介质中。例如,图32示出了适合于实现所公开的主题的某些实施方式的计算机系统(3200)。
计算机软件可以使用任何合适的机器代码或计算机语言来编码,机器代码或计算机语言可以经过汇编、编译、链接等机制以创建包括指令的代码,指令可以由一个或更多个计算机中央处理单元(central processing unit,CPU)、图形处理单元(GraphicsProcessing Unit,GPU)等直接执行或者通过解释、微代码执行等来执行。
指令可以在各种类型的计算机或其部件(包括例如个人计算机、平板计算机、服务器、智能电话、游戏设备、物联网设备等)上执行。
图32中示出的用于计算机系统(3200)的部件本质上是示例性的,并且不旨在对实现本公开内容的实施方式的计算机软件的使用范围或功能提出任何限制。部件的配置也不应当被解释为具有与计算机系统(3200)的示例性实施方式中示出的任何一个部件或部件的组合有关的任何依赖性或要求。
计算机系统(3200)可以包括某些人机接口输入设备。这样的人机接口输入设备可以响应于由一个或更多个人类用户通过例如触觉输入(例如:击键、滑动、数据手套移动)、音频输入(例如:语音、拍打)、视觉输入(例如:姿势)、嗅觉输入(未描绘)的输入。人机接口设备还可以用来捕获不一定与由人类进行的有意识输入直接相关的某些媒体,例如音频(诸如:语音、音乐、环境声音)、图像(诸如:扫描图像、从静止图像摄像装置获得的摄影图像)、视频(诸如:二维视频、包括立体视频的三维视频)。
输入人机接口设备可以包括以下中的一个或更多个(描绘了每者中的仅一个):键盘(3201)、鼠标(3202)、触控板(3203)、触摸屏(3210)、数据手套(未示出)、操纵杆(3205)、麦克风(3206)、扫描仪(3207)、摄像装置(3208)。
计算机系统(3200)还可以包括某些人机接口输出设备。这样的人机接口输出设备可以通过例如触觉输出、声音、光和气味/味道刺激一个或更多个人类用户的感官。这样的人机接口输出设备可以包括触觉输出设备(例如,通过触摸屏(3210)、数据手套(未示出)或操纵杆(3205)的触觉反馈,但是还可以存在不用作输入设备的触觉反馈设备)、音频输出设备(例如:扬声器(3209)、耳机(未描绘))、视觉输出设备(例如,包括CRT屏幕、LCD屏幕、等离子体屏幕、OLED屏幕的屏幕(3210),每个屏幕具有或没有触摸屏输入能力,每个屏幕具有或没有触觉反馈能力——其中的一些可能能够通过诸如立体输出的装置、虚拟现实眼镜(未描绘)、全息显示器和烟罐(未描绘)来输出二维视觉输出或多于三维的输出)、以及打印机(未描绘)。
计算机系统(3200)还可以包括人类可访问存储设备及其相关联的介质,例如,包括具有CD/DVD等介质(3221)的CD/DVD ROM/RW(3220)的光学介质、拇指驱动器(3222)、可移除硬盘驱动器或固态驱动器(3223)、诸如磁带和软盘(未描绘)的传统磁介质、基于专用ROM/ASIC/PLD的设备例如安全加密狗(未描绘)等。
本领域技术人员还应当理解,结合目前公开的主题使用的术语“计算机可读介质”不包含传输介质、载波或其他瞬态信号。
计算机系统(3200)还可以包括到一个或更多个通信网络(3255)的接口(3254)。网络例如可以是无线网络、有线网络、光网络。网络还可以是局域网、广域网、城域网、车载和工业网络、实时网络、延迟容忍网络等。网络的示例包括:局域网(例如以太网、无线LAN),包括GSM、3G、4G、5G、LTE等的蜂窝网络,包括有线TV、卫星TV和地面广播TV的TV有线或无线广域数字网络,包括CAN总线的车辆和工业网络等。某些网络通常需要外部网络接口适配器,该外部网络接口适配器附接至某些通用数据端口或外围总线(3249)(诸如例如,计算机系统(3200)的USB端口);其他网络通常通过附接至如下所述的系统总线(例如,到PC计算机系统的以太网接口或到智能电话计算机系统的蜂窝网络接口)而集成到计算机系统(3200)的核中。使用这些网络中的任何网络,计算机系统(3200)可以与其他实体通信。这样的通信可以是单向仅接收的(例如,广播TV)、单向仅发送的(例如,到某些CANbus设备的CANbus)、或双向的,例如,到使用局域数字网络或广域数字网络至其他计算机系统。可以在如以上所述的这些网络和网络接口中的每一个上使用某些协议和协议栈。
以上提及的人机接口设备、人类可访问存储设备和网络接口可以附接至计算机系统(3200)的核(3240)。
核(3240)可以包括一个或更多个中央处理单元(Central Processing Unit,CPU)(3241)、图形处理单元(Graphics Processing Unit,GPU)(3242)、现场可编程门区域(Field Programmable Gate Area,FPGA)(3243)形式的专用可编程处理单元、用于某些任务的硬件加速器(3244)、图形适配器(3250)等。这些设备以及只读存储器(Read-onlymemory,ROM)(3245)、随机存取存储器(3246)、内部大容量存储装置例如内部非用户可访问的硬盘驱动器、SSD等(3247)可以通过系统总线(3248)连接。在一些计算机系统中,可以以一个或更多个物理插头的形式访问系统总线(3248),以能够通过其他CPU、GPU等进行扩展。外围设备可以直接附接至核的系统总线(3248),或者可以通过外围总线(3249)附接至核的系统总线(3248)。在示例中,屏幕(3210)可以连接至图形适配器(3250)。外围总线的架构包括PCI、USB等。
CPU(3241)、GPU(3242)、FPGA(3243)和加速器(3244)可以执行某些指令,这些指令组合起来可以构成以上提及的计算机代码。该计算机代码可以存储在ROM(3245)或RAM(3246)中。暂态数据也可以存储在RAM(3246)中,而永久数据可以存储在例如内部大容量存储装置(3247)中。可以通过使用高速缓存存储器来实现对存储器设备中的任何存储器设备的快速存储及检索,该高速缓存存储器可以与一个或更多个CPU(3241)、GPU(3242)、大容量存储装置(3247)、ROM(3245)、RAM(3246)等紧密相关联。
计算机可读介质可以在其上具有用于执行各种计算机实现的操作的计算机代码。介质和计算机代码可以是出于本公开内容的目的而专门设计和构造的介质和计算机代码,或者介质和计算机代码可以具有对于计算机软件领域的技术人员公知且可用的类型。
作为非限制示例,具有架构的计算机系统(3200)——并且特别是核(3240)——可以由于处理器(包括CPU、GPU、FPGA、加速器等)执行体现在一个或更多个有形计算机可读介质中的软件而提供功能。这样的计算机可读介质可以是与如以上所介绍的用户可访问大容量存储装置以及具有非暂态性质的核(3240)的某些存储装置例如核内部大容量存储装置(3247)或ROM(3245)相关联的介质。实现本公开内容的各种实施方式的软件可以存储在这样的设备中并且由核(3240)执行。根据特定需要,计算机可读介质可以包括一个或更多个存储器设备或芯片。软件可以使核(3240)——特别是其中的处理器(包括CPU、GPU、FPGA等)——执行本文中描述的特定处理或特定处理的特定部分,包括限定存储在RAM(3246)中的数据结构以及根据由软件限定的处理修改这样的数据结构。另外地或作为替选方案,计算机系统可以由于硬连线或以其他方式体现在电路(例如:加速器(3244))中的逻辑而提供功能,该电路可以代替软件而操作或与软件一起操作以执行本文中描述的特定处理或特定处理的特定部分。在适当的情况下,提及软件可以包含逻辑,并且反之,提及逻辑也可以包含软件。在适当的情况下,提及计算机可读介质可以包含存储用于执行的软件的电路(例如,集成电路(integrated circuit,IC))、体现用于执行的逻辑的电路或者上述两者。本公开内容包含硬件和软件的任何合适组合。
尽管本公开内容已经描述了若干示例性实施方式,但是存在落入本公开内容的范围内的改变、置换和各种替换等效物。因此将认识到,本领域技术人员将能够设想出许多系统和方法,这些系统和方法尽管未在本文中明确示出或描述,但是体现了本公开内容的原理并因此在本公开内容的精神和范围内。
附录A:首字母缩略词
JEM:联合探索模式
VVC:多功能视频编码
BMS:基准集
MV:运动矢量
HEVC:高效视频编码
SEI:辅助增强信息
VUI:视频可用性信息
GOP:图片组
TU:变换单元
PU:预测单元
CTU:编码树单元
CTB:编码树块
PB:预测块
HRD:假设参考解码器
SNR:信噪比
CPU:中央处理单元
GPU:图形处理单元
CRT:阴极射线管
LCD:液晶显示器
OLED:有机发光二极管
CD:致密盘
DVD:数字视频光盘
ROM:只读存储器
RAM:随机存取存储器
ASIC:专用集成电路
PLD:可编程逻辑装置
LAN:局域网
GSM:全球移动通信系统
LTE:长期演进
CANBus:控制器局域网总线
USB:通用串行总线
PCI:外围组件互连
FPGA:现场可编程门阵列
SSD:固态驱动器
IC:集成电路
HDR:高动态范围
SDR:标准动态范围
JVET:联合视频探索组
MPM:最可能模式
WAIP:广角帧内预测
CU:编码单元
PU:预测单元
TU:变换单元
CTU:编码树单元
PDPC:位置相关预测组合
ISP:内部子分区
SPS:序列参数集
PPS:图片参数集
APS:自适应参数集
VPS:视频参数集
DPS:解码参数集
ALF:自适应环路滤波器
SAO:样本自适应偏移
CC-ALF:交叉分量自适应环路滤波器
CDEF:约束方向增强滤波器
CCSO:交叉分量样本偏移
LSO:局部样本偏移
LR:环路恢复滤波器
AV1:开放媒体联盟视频1
AV2:开放媒体联盟视频2
MVD:运动矢量差
CfL:根据亮度分量预测色度分量SDT:半解耦树
SDP:半解耦分割
SST:半分离树
SB:超级块
IBC(或IntraBC):帧内块复制
CDF:累积密度函数
SCC:屏幕内容编码
GBI:广义双向预测
BCW:具有CU级权重的双向预测CIIP:组合帧内帧间预测
POC:图片顺序计数
RPS:参考图片集
DPB:解码图片缓冲
MMVD:具有运动矢量差的合并模式
Claims (22)
1.一种用于处理视频流中的当前帧的当前预测块的方法,所述方法包括:
确定要通过参考帧中的参考块对所述当前预测块进行帧间预测,以及确定要通过参考运动矢量对用于所述当前预测块的运动矢量进行预测;
将所述当前帧中的候选预测块集合识别为用于所述当前预测块的时间运动矢量预测器(TMVP)候选的搜索池;
遵循搜索顺序搜索所述候选预测块集合以识别用于所述当前预测块的至多N个TMVP候选,其中,响应于识别到N个TMVP候选而停止所述搜索,N是正整数;
构建指示运动矢量预测器(MVP)候选集合的MVP列表,所述MVP候选集合包括空间MVP(SMVP)候选集合和所述至多N个TMVP候选中的一个或更多个;
从所述视频流中提取用于所述当前预测块的MVP索引;以及
根据所提取的MVP索引和所述MVP列表来识别用于对所述当前预测块进行帧间预测的所述参考运动矢量。
2.根据权利要求1所述的方法,其中:
所述当前预测块属于当前超级块;
所述当前超级块包括多个预测块;并且
所述候选预测块集合包括所述当前超级块的所述多个预测块的至少子集。
3.根据权利要求2所述的方法,其中:
所述当前超级块的所述多个预测块形成具有列维度和行维度的预测块阵列;
所述当前超级块的重建的邻近预测块在所述行维度上位于所述当前超级块上方和/或在所述列维度上位于所述当前超级块左侧;并且
用于在所述候选预测块集合中搜索所述至多N个TMVP候选的搜索顺序包括至少沿着所述预测块阵列的所述列维度和所述行维度中的一个从远离所述当前超级块的所述重建的邻近预测块开始,以及然后移动到更靠近所述当前超级块的所述重建的邻近预测块。
4.根据权利要求3所述的方法,其中,用于在所述候选预测块集合中搜索所述至多N个TMVP候选的搜索顺序包括:
从所述预测块阵列的底行开始到顶行,并且在每行中从最右边的预测块开始到最左边的预测块;或者
从所述预测块阵列的最右边的列开始到最左边的列,并且在每列中从底部预测块开始到顶部预测块;或者
沿着相对于所述列维度和所述行维度的对角线方向从所述预测块阵列的最右边底部的预测块开始朝向最左边顶部的预测块来搜索所述预测块阵列。
5.根据权利要求3所述的方法,其中,所述候选预测块集合包括所述多个预测块的子集,其中从所述多个预测块中跳过M个预测块,M是非负整数。
6.根据权利要求5所述的方法,其中,被跳过的所述M个预测块包括至少所述预测块阵列的最左边的列。
7.根据权利要求5所述的方法,其中,被跳过的所述M个预测块包括至少所述预测块阵列的顶行。
8.根据权利要求5所述的方法,其中,被跳过的所述M个预测块包括至少所述预测块阵列的顶行和最左边的列。
9.根据权利要求3所述的方法,其中,所述候选预测块集合排除所述当前超级块之外的任何附加预测块。
10.根据权利要求3所述的方法,其中,所述候选预测块集合还包括所述当前超级块之外的至少一个附加预测块。
11.根据权利要求10所述的方法,还包括:
搜索所述当前超级块的所述多个预测块以识别至多N1个TMVP候选,N1是不大于N的正整数;以及
响应于从所述多个预测块中识别到N1个TMVP候选,停止搜索所述当前超级块的所述多个预测块。
12.根据权利要求10所述的方法,其中,从所述当前超级块之外的所述至少一个附加预测块中识别至多1个TMVP候选,并且所述方法还包括:响应于从所述当前超级块之外的所述至少一个附加预测块中识别到1个TMVP候选,停止搜索所述当前超级块之外的所述至少一个附加预测块。
13.根据权利要求3所述的方法,其中,所述候选预测块集合包括来自所述多个预测块的至多L个预测块,L是小于所述当前超级块中的预测块的总数的正整数。
14.根据权利要求13所述的方法,其中,L=1并且所述候选预测块集合仅包括所述预测块阵列的最右边底部的预测块。
15.根据权利要求13所述的方法,其中,所述至多L个预测块均匀地分布在所述当前超级块的所述多个预测块内。
16.根据权利要求3所述的方法,其中,所述候选预测块集合的位置由编码信息确定,所述编码信息包括所述当前超级块的空间邻近块的运动矢量或已经包括在所述MVP列表中的SMVP候选的数目。
17.根据权利要求1至16中任一项所述的方法,其中,所述方法还包括:响应于所述MVP列表中已经存在N1个SMVP候选,进一步将所述MVP列表中的TMVP候选的数目限制为N2,其中,N1和N2是正整数,并且N2不大于N。
18.根据权利要求1至16中任一项所述的方法,其中,用于用信号通知所述MVP列表中的与所述当前预测块和帧间预测模式相关联的索引的上下文取决于是否至少N个TMVP已经包括在所述MVP列表中。
19.根据权利要求1至16中任一项所述的方法,其中,将所述MVP列表中的TMVP候选限制为至多N个是响应于在双向帧间预测模式下对所述当前预测块进行编码。
20.一种用于处理视频流的当前帧的当前预测块的电子装置,包括用于存储指令的存储器和用于执行所述指令以使所述电子装置进行以下操作的处理器:
确定要通过参考帧中的参考块对所述当前预测块进行帧间预测,以及确定要通过参考运动矢量对用于所述当前预测块的运动矢量进行预测;
将所述当前帧中的候选预测块集合识别为用于所述当前预测块的时间运动矢量预测器(TMVP)的搜索池;
遵循搜索顺序搜索所述候选预测块集合以识别用于所述当前预测块的至多N个TMVP候选,其中,响应于识别到N个TMVP候选而停止所述搜索,N是正整数;
构建指示运动矢量预测器(MVP)候选集合的MVP列表,所述MVP候选集合包括空间MVP(SMVP)候选集合和所述至多N个TMVP候选中的一个或更多个;
从所述视频流中提取用于所述当前预测块的MVP索引;以及
根据所提取的MVP索引和所述MVP列表来识别用于对所述当前预测块进行帧间预测的所述参考运动矢量。
21.一种用于处理视频流的当前帧的当前预测块的电子装置,包括用于存储指令的存储器和用于执行所述指令以使所述电子装置执行根据权利要求2至16所述的任一方法的处理器。
22.一种用于存储指令的非暂态计算机可读介质,所述指令在由电子装置的处理器执行时被配置成使所述电子装置执行根据权利要求1至16所述的的任一方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/402,386 | 2022-08-30 | ||
US18/051,397 | 2022-10-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118285101A true CN118285101A (zh) | 2024-07-02 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117063471A (zh) | 用于运动矢量差的联合信令方法 | |
US11979596B2 (en) | Joint coding for adaptive motion vector difference resolution | |
CN116325723B (zh) | 用于视频解码的方法、计算机设备及介质 | |
CN116982315A (zh) | 利用单个参考信令推导运动矢量 | |
CN116830581A (zh) | 用于运动矢量差的经改进的信令方法和装置 | |
CN116830582A (zh) | 运动矢量差的自适应分辨率与运动矢量相关参数的写入/导出之间的依赖关系 | |
CN116686289A (zh) | 用于单参考运动矢量差的自适应精度 | |
CN116569553A (zh) | 采用样本填充进行帧内块复制预测的方法和装置 | |
CN116584092B (zh) | 视频块解码方法、装置和存储介质 | |
CN118285101A (zh) | 时间运动矢量预测器候选搜索 | |
CN116636210A (zh) | 用于自适应运动矢量差分辨率的内插滤波器 | |
CN116686287A (zh) | 用于联合mvd编码的mvd缩放 | |
CN117044205A (zh) | 改进的运动矢量差分编码上下文推导 | |
KR20240050431A (ko) | 시간적 모션 벡터 예측자 후보들 탐색 | |
CN116601955A (zh) | 运动矢量差的自适应分辨率 | |
CN116783892A (zh) | 用于修正运动矢量候选的方法和设备 | |
CN116569547A (zh) | 用于限制运动矢量差的方法和设备 | |
CN116325735A (zh) | 用于针对参考帧进行自适应重新排序的方法和装置 | |
CN116830572A (zh) | 调整运动矢量差的自适应分辨率的方案 | |
CN116584097A (zh) | 联合运动矢量差编解码 | |
CN117296320A (zh) | 使用映射和不同类型的从亮度到色度预测 | |
CN117203965A (zh) | 调色板预测值生成和信号通知 | |
CN117242772A (zh) | 使用邻近亮度样本的根据亮度的色度预测 | |
KR20240068697A (ko) | 서브블록 모션 벡터에 기초한 모션 벡터 예측을 위한 방법 및 장치 | |
KR20230136169A (ko) | 단일-참조 모션 벡터 차이에 대한 적응적 해상도 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |