CN114009037A - 帧内块复制模式的运动候选列表构建 - Google Patents
帧内块复制模式的运动候选列表构建 Download PDFInfo
- Publication number
- CN114009037A CN114009037A CN202080045728.XA CN202080045728A CN114009037A CN 114009037 A CN114009037 A CN 114009037A CN 202080045728 A CN202080045728 A CN 202080045728A CN 114009037 A CN114009037 A CN 114009037A
- Authority
- CN
- China
- Prior art keywords
- block
- list
- sub
- current
- candidates
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种视频处理的方法,包括:对于视频的当前图片的当前块和视频的比特流表示之间的转换,构建用于适用于当前块的编解码技术的运动候选的列表,其中,基于历史的运动候选根据来自先前处理的视频块的信息导出。编解码技术使用来自当前块的当前图片的参考样点来预测当前块的至少一部分。该方法还包括基于确定来执行转换。
Description
相关申请的交叉引用
根据适用的专利法和/或巴黎公约的规定,提出本申请是为了及时要求于2019年6月22日提交的国际专利申请第PCT/CN2019/092438号的优先权和权益。出于美国法律的所有目的,上述申请的全部公开内容通过引用并入作为本申请的公开内容的一部分。
技术领域
本文档涉及视频和图像编解码和解码技术。
背景技术
数字视频占据因特网和其它数字通信网络上的最大的带宽使用。随着能够接收和显示视频的所连接的用户设备的数量增加,预计数字视频使用的带宽需求将继续增长。
发明内容
可以由视频或图像解码器或编码器实施例使用所公开的技术以在子块级别对视频比特流的编码或解码执行帧内块复制分割技术。
在一个示例方面,公开了一种视频处理的方法。该方法包括:对于视频的当前图片的当前块和视频的比特流表示之间的转换,构建用于适用于当前块的编解码技术的运动候选的列表,其中,基于历史的运动候选根据来自先前处理的视频块的信息导出。编解码技术使用来自当前块的当前图片的参考样点来预测当前块的至少一部分。该方法还包括基于该确定来执行转换。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,确定当前块被划分成多个子块。使用修改的帧内块复制(IBC)编解码技术对多个块中的至少一个进行编解码,该技术使用来自当前块的当前图片的一个或多个视频区域的参考样点。该方法还包括基于该确定来执行转换。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,确定当前块被划分成多个子块。根据图案使用对应的编解码技术在编解码的表示中对多个子块中的每一个进行编解码。该方法还包括基于该确定来执行转换。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,基于与当前块的特性有关的条件,确定与运动候选的列表相关联的操作。对于编解码技术或基于来自先前处理的视频块的信息来构建运动候选的列表。该方法还包括基于该确定来执行转换。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,确定使用基于时域信息的帧间编解码技术编解码的当前块被划分成多个子块。使用修改的帧内块复制(IBC)编解码技术对多个块中的至少一个进行编解码,该技术使用来自包括当前块的当前图片的一个或多个视频区域的参考样点。该方法还包括基于该确定来执行转换。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:确定在视频区域中的当前视频块和当前视频块的比特流表示之间的转换中使用子块帧内块复制(sbIBC)编解码模式,其中,当前视频块被划分成多个子块,并且每个子块基于来自视频区域的参考样点进行编解码,其中,子块的尺寸是基于划分规则以及使用sbIBC编解码模式对多个子块执行转换。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:确定在视频区域中的当前视频块和当前视频块的比特流表示之间的转换中使用子块帧内块复制(sbIBC)编解码模式,其中,当前视频块被划分成多个子块,并且每个子块基于来自视频区域的参考样点进行编解码,并使用sbIBC编解码模式对多个子块执行转换,其中,转换包括确定给定子块的初始化运动矢量(initMV),从initMV识别参考块,以及使用参考块的MV信息导出给定子块的运动矢量(MV)信息。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:确定在视频区域中的当前视频块和当前视频块的比特流表示之间的转换中使用子块帧内块复制(sbIBC)编解码模式,其中,当前视频块被划分成多个子块,并且每个子块基于来自视频区域的参考样点进行编解码,并使用sbIBC编解码模式对多个子块执行转换,其中,转换包括生成子块IBC候选。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:在当前视频块的比特流表示和被分为多个子块的当前视频块之间执行转换,其中,转换包括使用子块帧内块编解码(sbIBC)模式处理多个子块中的第一子块和使用帧内编解码模式处理多个子块中的第二子块。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:在当前视频块的比特流表示和被分为多个子块的当前视频块之间执行转换,其中,转换包括使用帧内编解码模式处理多个子块中的所有子块。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:在当前视频块的比特流表示和被分为多个子块的当前视频块之间执行转换,其中,转换包括使用调色板编解码模式处理所有多个子块,在调色板模式中代表性像素值的调色板用于对每个子块进行编解码。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:在当前视频块的比特流表示和被分为多个子块的当前视频块之间执行转换,其中,转换包括使用调色板模式处理多个子块中的第一子块以及使用帧内块复制编解码模式处理多个子块中的第二子块,在该调色板模式中代表性像素值的调色板用于对第一子块进行编解码。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:在当前视频块的比特流表示和被分为多个子块的当前视频块之间执行转换,其中,转换包括使用调色板模式处理多个子块中的第一子块以及使用帧内编解码模式处理多个子块中的第二子块,在该调色板模式中代表性像素值的调色板用于对第一子块进行编解码。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:在当前视频块的比特流表示和被分为多个子块的当前视频块之间执行转换,其中,转换包括使用子块帧内块编解码(sbIBC)模式处理多个子块中的第一子块以及使用帧间编解码模式处理多个子块中的第二子块。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:在当前视频块的比特流表示和被分为多个子块的当前视频块之间执行转换,其中,转换包括使用子块帧内编解码模式处理多个子块中的第一子块以及使用帧间编解码模式处理多个子块中的第二子块。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:决定使用上述权利要求中任一项所述的方法来将当前视频块编码为比特流表示;并且包括在以下级别的比特流表示中的指示决定的信息:解码器参数集级别或序列参数集级别或视频参数集级别或图片参数集级别或图片标头级别或条带标头级别或片组标头级别或最大编解码单元级别或编解码单元级别或最大编解码单元行级别或LCU的组级别或变换单元级别或预测单元级别或视频编解码单元级别。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:基于编码条件来决定使用上述权利要求中的任一项所述的方法来将当前视频块编码为比特流表示;以及使用上述权利要求中的任一项所述的方法执行编码,其中,条件是基于以下中的一个或多个:编解码单元、预测单元、变换单元、当前视频块或当前视频块的视频编解码单元的位置。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:确定对于在视频区域中的块和视频区域的比特流表示之间的转换使用帧内块复制模式和帧间预测模式;以及使用帧内块复制模式和帧间预测模式对视频区域中的块执行转换。
在另一个示例方面,公开了一种视频处理的方法。该方法包括:在当前视频块和当前视频块的比特流表示之间的转换期间,基于编解码条件视情况执行运动候选列表构建过程和/或执行用于更新基于历史的运动矢量预测符表的表更新过程,以及基于运动候选列表构建过程和/或表更新过程执行转换。
在另一个示例方面,上述方法可以由包括处理器的视频解码器装置实现。
在另一个示例方面,上述方法可以由包括处理器的视频编码器装置实现。
在又一个示例方面,这些方法可以以处理器可执行指令的形式实现并存储在计算机可读程序介质上。
这些和其它方面将在本文档中进一步描述。
附图说明
图1示出了用于Merge候选列表构建的导出过程。
图2示出了空域Merge候选的位置的示例。
图3示出了为空域Merge候选的冗余检查所考虑的候选对的示例。
图4示出了N×2N和2N×N分割的第二PU的示例位置。
图5示出了对于时域Merge候选的运动矢量缩放的图示的示例。
图6示出了时域Merge候选C0和C1的候选位置的示例。
图7示出了组合的双向预测Merge候选的示例。
图8示出了运动矢量预测候选的导出过程的示例。
图9示出了空域运动矢量候选的运动矢量缩放的示例图示。
图10示出了用于4参数仿射模式(左)和6参数仿射模型(右)的示例简化仿射运动模型。
图11示出了每个子块的仿射运动矢量场的示例。
图12示出了仿射Merge模式的示例候选位置
图13示出了修改的Merge列表构建过程的示例。
图14示出了基于三角分割的帧间预测的示例。
图15示出了应用第一加权因子组的CU的示例。
图16示出了运动矢量存储的示例。
图17示出了最终运动矢量表达(UMVE)搜索过程的示例。
图18示出了UMVE搜索点的示例。
图19示出了在DMVR中的列表0和列表1之间镜像的MVD(0,1)的示例。
图20示出了可以在一次迭代中检查的MV的示例。
图21示出了帧内块复制的示例。
图22是视频处理装置的示例的框图。
图23是视频处理方法的示例的流程图。
图24是其中可以实现所公开的技术的示例视频处理系统的框图。
图25是根据本技术的用于视频处理的方法的流程图表示。
图26是根据本技术的用于视频处理的另一种方法的流程图表示。
图27是根据本技术的用于视频处理的另一种方法的流程图表示。
图28是根据本技术的用于视频处理的另一种方法的流程图表示。
图29是根据本技术的用于视频处理的又一种方法的流程图表示。
具体实施方式
本文档提供了可由图像或视频比特流的解码器使用的各种技术,以提高解压缩的或解码的数字视频或图像的质量。为简便起见,本文使用术语“视频”既包括图片的序列(传统上称为视频),也包括单个图像。此外,视频编码器还可在编码的过程期间实现这些技术,以便重构用于进一步编码的解码帧。
在本文档中使用章节标题是为了易于理解,并且不将实施例和技术限于相应的章节。因此,来自一个章节的实施例可以与来自其它章节的实施例组合。
1.概要
本文档涉及视频编解码技术。具体地,其涉及帧内块复制(又称为当前图片参考,CPR)编解码。它可以应用于像HEVC之类的现有的视频编解码标准或者待最终确定的标准(通用视频编解码)。它也可以适用于未来的视频编解码标准或视频编解码器。
2.背景
视频编解码标准主要是通过众所周知的ITU-T和ISO/IEC标准的发展而得以演进。ITU-T制作了H.261和H.263标准,ISO/IEC制作了MPEG-1和MPEG-4Visual标准,并且两个组织联合制作了H.262/MPEG-2视频标准和H.264/MPEG-4高级视频编解码(Advanced VideoCoding,AVC)标准和H.265/HEVC标准。从H.262开始,视频编解码标准基于混合视频编解码结构,其中利用时域预测加变换编解码。为了探索HEVC之外的未来视频编解码技术,由VCEG和MPEG于2015年联合成立联合视频探索团队(JVET)。从那时起,JVET采用了许多新方法并将其纳入名为联合探索模型(JEM)的参考软件。2018年4月,VCEG(Q6/16)和ISO/IEC JTC1SC29/WG11(MPEG)之间的联合视频专家团队(JVET)成立,致力于VVC标准,目标是与HEVC相比降低50%比特率。
2.1 HEVC/H.265中的帧间预测
对于帧间编解码的编解码单元(CU),其可以根据分割模式以一个预测单元(PU)、两个PU进行编解码。每个帧间预测的PU具有对于一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。也可以使用inter_pred_idc来信令通知对两个参考图片列表中一个的使用。运动矢量可以明确地被编解码为相对于预测符的增量。
当使用跳过(skip)模式来编解码CU时,一个PU与该CU相关联,并且不存在显著的残差系数,不存在编解码的运动矢量增量或参考图片索引。指定Merge模式,由此从邻域PU——包括空域和时域候选——获得当前PU的运动参数。Merge模式可以应用于任何帧间预测的PU,而不仅适用于跳过模式。Merge模式的替代方案是运动参数的显式传输(explicit transmission),其中,对每个PU显式地信令通知:运动矢量(更确切地,相比于运动矢量预测符的运动矢量差(MVD))、每个参考图片列表的对应参考图片索引、以及参考图片列表使用。这样的模式在本公开中被命名为高级运动矢量预测(AMVP)。
当信令通知指示要使用两个参考图片列表中的一者时,PU从样点的一个块产生。这被称为“单向预测”。单向预测可用于P条带和B条带。
当信令通知指示要使用两个参考图片列表时,PU从样点的两个块产生。这被称为“双向预测”。双向预测仅可用于B条带。
2.1.1参考图片列表
在HEVC中,术语帧间预测用于表示从除当前解码的图片以外的参考图片的数据元素(例如,样点值或运动矢量)导出的预测。像在H.264/AVC中一样,可以从多个参考图片来预测图片。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引识别应使用列表中的哪些参考图片来创建预测信号。
单个参考图片列表——列表0用于P条带,并且两个参考图片列表——列表0和列表1用于B条带。应当注意,就捕获/显示顺序而言,List 0/1中包含的参考图片可以是来自过去和将来的图片。
2.1.2 Merge模式
2.1.2.1 Merge模式的候选的导出
当使用Merge模式预测PU时,从比特流解析出指向Merge候选列表(Mergecandidates list)中的条目的索引,并且该索引被用于取回运动信息。该列表的构建在HEVC标准中规定并可以根据以下步骤的顺序进行总结:
步骤1:初始候选导出
步骤1.1:空域候选导出
步骤1.2:空域候选的冗余检查
步骤1.3:时域候选导出
步骤2:附加候选插入
步骤2.1:创建双向预测候选
步骤2.2:插入零运动候选
在图1中也示意性地描绘了这些步骤。对于空域Merge候选导出,在位于五个不同位置的候选中选择最多四个Merge候选。对于时域Merge候选导出,在两个候选中选择最多一个Merge候选。由于在解码器处假设每个PU的候选的数量是恒定的,因此当从步骤1获得的候选的数量未达到在条带标头中信令通知的Merge候选的最大数量(MaxNumMergeCand)时,生成附加的候选。由于候选的数量是恒定的,因此使用截断一元二值化(TU)来编码最佳Merge候选的索引。如果CU的尺寸等于8,则当前CU的所有PU共享单个Merge候选列表,该单个Merge候选列表与2N×2N预测单元的Merge候选列表相同。
在下文中,详细描述了与前述步骤相关联的操作。
2.1.2.2空域候选导出
在空域Merge候选的导出中,在位于图2中描绘的位置中的候选中选择最多四个Merge候选。导出的顺序是A1、B1、B0、A0和B2。仅当位置A1、B1、B0、A0的任何PU不可用时(例如,因为该PU属于另一个条带或片)或者是帧内编解码时,才考虑位置B2。在添加位置A1处的候选之后,对剩余候选的添加进行冗余检查,该冗余检查确保具有相同运动信息的候选被排除在列表之外,从而改进编解码效率。为了降低计算复杂度,在所提到的冗余检查中并未考虑所有可能的候选对。相反,仅考虑与图3中的箭头链接的对,并且仅当用于冗余检查的对应候选具有不同的运动信息时,则该候选才被添加到列表中。重复运动信息的另一个来源是与不同于2N×2N的分割相关联的“第二PU”。作为示例,图4分别描绘了对于N×2N和2N×N的情况的第二PU。当当前PU被分割为N×2N时,位置A1处的候选不被考虑用于列表构建。事实上,通过添加该候选将导致具有相同运动信息的两个预测单元,这对于在编解码单元中仅具有一个PU是冗余的。类似地,当当前PU被分割为2N×N时,不考虑位置B1。
2.1.2.3时域候选导出
在此步骤中,只有一个候选被添加到列表中。特别地,在该时域Merge候选的导出中,基于并置(co-located)图片中的并置PU来导出缩放的运动矢量。如图5中虚线所示,获得了用于时域Merge候选的缩放的运动矢量,该用于时域Merge候选的缩放的运动矢量使用POC距离tb和td而从并置PU的运动矢量被缩放,其中tb被定义为当前图片的参考图片与该当前图片之间的POC差,并且td被定义为并置图片的参考图片与该并置图片之间的POC差。时域Merge候选的参考图片索引被设置为等于零。在HEVC规范中描述了缩放过程的实际实现。对于B条带,获得两个运动矢量并将其组合以产生双向预测Merge候选,该两个运动矢量中的一个用于参考图片列表0而另一个用于参考图片列表1。
2.1.2.4并置图片和并置PU
当启用TMVP时(例如slice_temporal_mvp_enabled_flag等于1),表示并置图片的变量ColPic导出如下:
-如果当前条带是B条带并且信令通知collocated_from_l0_flag等于0,则ColPic设置为等于RefPicList1[collocated_ref_idx]。
-否则(slice_type等于B并且collocated_from_l0_flag等于1,或者slice_type等于P),ColPic设置为等于RefPicList0[collocated_ref_idx]。
在此,collocated_ref_idx和collocated_from_l0_flag是两个语法元素,其可以在条带标头中被信令通知。
如图6所示,在属于参考帧的并置PU(Y)中,在候选C0和C1之间选择用于时域候选的位置。如果位置C0处的PU不可用、被帧内编解码或在当前编解码树单元(CTU,即LCU,最大编解码单元)行之外,则使用位置C1。否则,在时域Merge候选的导出中使用位置C0。
有关的语法元素描述如下:
7.3.6.1一般条带段标头语法
2.1.2.5 TMVP候选的MV的导出
更具体地,执行以下步骤以便导出TMVP候选:
(1)设置参考图片列表X=0,目标参考图片设置为列表X中索引等于0的参考图片(例如,curr_ref)。调用并置运动矢量的导出过程以获得指向curr_ref的列表X的MV。
(2)如果当前条带是B条带,则设置参考图片列表X=1,目标参考图片设置为列表X中索引等于0的参考图片(例如curr_ref)。调用并置运动矢量的导出过程以获得指向curr_ref的列表X的MV。
在下一子章节中描述并置运动矢量的导出过程。
2.1.2.5.1并置运动矢量的导出过程
对于并置块,可以使用单向预测或双向预测进行帧内或帧间编解码。如果进行帧内编解码,则TMVP候选设置为不可用。
如果是来自列表A的单向预测,则将列表A的运动矢量缩放到目标参考图片列表X。
如果是双向预测并且目标参考图片列表为X,则将列表A的运动矢量缩放到目标参考图片列表X,并且根据以下规则确定A:
-如果参考图片均不具有比当前图片更大的POC值,则A设置为等于X。
-否则,将A设置为等于collocated_from_l0_flag。
包括一些有关的描述如下:
8.5.3.2.9并置运动矢量的导出过程
此过程的输入是:
-变量currPb,指定当前预测块,
-变量colPb,指定由ColPic指定的并置图片内部的并置预测块,
-亮度位置(xColPb,yColPb),指定相对于由ColPic指定的并置图片的左上亮度样点的由colPb指定的并置亮度预测块的左上样点,
-参考索引refIdxLX,X为0或1。
此过程的输出是:
-运动矢量预测mvLXCol,
-可用性标志availableFlagLXCol。
变量currPic指定当前图片。
数组predFlagL0Col[x][y]、mvL0Col[x][y]和refIdxL0Col[x][y]分别设置为等于由ColPic指定的并置图片的PredFlagL0[x][y]、MvL0[x][y]和RefIdxL0[x][y],并且数组predFlagL1Col[x][y]、mvL1Col[x][y]和refIdxL1Col[x][y]分别设置为等于由ColPic指定的并置图片的PredFlagL1[x][y]、MvL1[x][y]和RefIdxL1[x][y]。
变量mvLXCol和availableFlagLXCol导出如下:
-如果以帧内预测模式对colPb进行编解码,则mvLXCol的两个分量设置为等于0,并且availableFlagLXCol设置为等于0。
-否则,运动矢量mvCol、参考索引refIdxCol和参考列表标识符listCol导出如下:
-如果predFlagL0Col[xColPb][yColPb]等于0,则mvCol、refIdxCol和listCol分别设置为等于mvL1Col[xColPb][yColPb]、refIdxL1Col[xColPb][yColPb]和L1。
-否则,如果predFlagL0Col[xColPb][yColPb]等于1并且predFlagL1Col[xColPb][yColPb]等于0,则mvCol、refIdxCol和listCol分别设置为等于mvL0Col[xColPb][yColPb]、refIdxL0Col[xColPb][yColPb]和L0。
-否则(predFlagL0Col[xColPb][yColPb]等于1并且predFlagL1Col[xColPb][yColPb]等于1),进行以下分配:
-如果NoBackwardPredFlag等于1,则mvCol、refIdxCol和listCol分别设置为等于mvLXCol[xColPb][yColPb]、refIdxLXCol[xColPb][yColPb]和LX。
-否则,mvCol、refIdxCol和listCol分别设置为等于mvLNCol[xColPb][yColPb]、refIdxLNCol[xColPb][yColPb]和LN,其中N为collocated_from_l0_flag的值。
并且,mvLXCol和availableFlagLXCol导出如下:
-如果LongTermRefPic(currPic,currPb,refIdxLX,LX)不等于LongTermRefPic(ColPic,colPb,refIdxCol,listCol),则mvLXCol的两个分量均设置为等于0,并且availableFlagLXCol设置为等于0。
-否则,变量availableFlagLXCol设置为等于1,refPicListCol[refIdxCol]设置为在由ColPic指定的并置图片中包含预测块colPb的条带的参考图片列表listCol中参考索引为refIdxCol的图片,并且以下内容适用:
colPocDiff=DiffPicOrderCnt(ColPic,refPicListCol[refIdxCol]) (2-1)
currPocDiff=DiffPicOrderCnt(currPic,RefPicListX[refIdxLX]) (2-2)
-如果RefPicListX[refIdxLX]是长期参考图片,或者colPocDiff等于currPocDiff,则mvLXCol导出如下:
mvLXCol=mvCol (2-3)
-否则,将mvLXCol导出如下为运动矢量mvCol的缩放版本:
tx=(16384+(Abs(td)>>1))/td (2-4)
distScaleFactor=Clip3(-4096,4095,(tb*tx+32)>>6) (2-5)
mvLXCol=Clip3(-32768,32767,Sign(distScaleFactor*mvCol)*((Abs(distScaleFactor*mvCol)+127)>>8)) (2-6)
其中,td和tb导出如下:
td=Clip3(-128,127,colPocDiff) (2-7)
tb=Clip3(-128,127,currPocDiff) (2-8)
NoBackwardPredFlag的定义是:
变量NoBackwardPredFlag导出如下:
-如果对于当前条带的RefPicList0或RefPicList1中的每个图片aPic,DiffPicOrderCnt(aPic,CurrPic)小于或等于0,则NoBackwardPredFlag设置为等于1。
-否则,NoBackwardPredFlag设置为等于0。
2.1.2.6附加候选插入
除了空域和时域Merge候选以外,还存在两种附加类型的Merge候选:组合的双向预测Merge候选和零Merge候选。通过利用空域和时域Merge候选来生成组合的双向预测Merge候选。组合的双向预测Merge候选仅用于B条带。通过将初始候选的第一参考图片列表运动参数与另一个候选的第二参考图片列表运动参数进行组合来生成组合的双向预测候选。如果这两个元组(tuple)提供不同的运动假设,则它们将形成一个新的双向预测候选。作为示例,图7描绘了以下情况,在该情况中原始列表(在左方)中具有mvL0和refIdxL0或者mvL1和refIdxL1的两个候选用于创建组合的双向预测Merge候选,该组合的双向预测Merge候选被添加到最终列表(在右方)。关于被认为生成这些附加Merge候选的组合有诸多规则。
零运动候选被插入以填充Merge候选列表中的剩余条目,并且因此达到MaxNumMergeCand容量。这些候选具有零空域位移和参考图片索引,该参考图片索引从零开始并且每当新的零运动候选被添加到列表时则增加。最终,对这些候选不执行冗余检查。
2.1.3 AMVP
AMVP利用运动矢量与邻域PU的空域-时域相关性,该空域-时域相关性用于运动参数的显式传输。对于每个参考图片列表,通过下述操作来构建运动矢量候选列表:首先检查左方、上方在时域上邻域PU位置的可用性,移除冗余候选,并添加零矢量,以使候选列表为恒定长度。然后,编码器可以从候选列表中选择最佳预测符,并传输指示所选候选的对应索引。与Merge索引信令通知类似,使用截断一元来编码最佳运动矢量候选的索引。在这种情况下要编码的最大值是2(参见图8)。在以下章节中,提供了关于运动矢量预测候选的导出过程的细节。
2.1.3.1 AMVP候选的导出
图8总结了用于运动矢量预测候选的导出过程。
在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选导出,最终基于位于如图2示出的五个不同位置的每个PU的运动矢量来导出两个运动矢量候选。
对于时域运动矢量候选导出,从基于两个不同的并置位置导出的两个候选中选择一个运动矢量候选。在制作空域-时域候选的第一列表之后,移除列表中的重复的运动矢量候选。如果潜在候选的数量大于2,则从列表中移除其在相关联的参考图片列表内的参考图片索引大于1的运动矢量候选。如果空域-时域运动矢量候选的数量小于2,则将附加的零运动矢量候选添加到列表中。
2.1.3.2空域运动矢量候选
在空域运动矢量候选的导出中,在五个潜在候选中考虑最多两个候选,该五个潜在候选从位于如图2示出的位置的PU导出,这些位置与运动Merge的那些位置相同。当前PU的左侧的导出的顺序被定义为A0、A1和缩放的A0、缩放的A1。当前PU的上侧的导出的顺序被定义为B0、B1、B2、缩放的B0、缩放的B1、缩放的B2。因此,对于每一侧,存在四种可用作运动矢量候选的情况,其中两种情况不需要使用空域缩放,并且两种情况使用空域缩放。四种不同的情况总结如下。
*无空域缩放
(1)相同的参考图片列表,以及相同的参考图片索引(相同的POC)
(2)不同的参考图片列表,但是相同的参考图片(相同的POC)
*空域缩放
(3)相同的参考图片列表,但是不同的参考图片(不同的POC)
(4)不同的参考图片列表,以及不同的参考图片(不同的POC)
首先检查无空域缩放情况,接下来检查空域缩放。不管参考图片列表如何,当POC在邻域PU的参考图片与当前PU的参考图片之间是不同的时,考虑空域缩放。如果左方候选的所有PU都不可用或者被帧内编解码,则允许对上方运动矢量进行缩放,以帮助左方和上方MV候选的并行导出。否则,对上方运动矢量不允许空域缩放。
在空域缩放过程中,以与时域缩放类似的方式缩放邻域PU的运动矢量,如图9所示。主要差异在于当前PU的参考图片列表和索引被给定为作为输入;实际缩放过程与时域缩放的过程相同。
2.1.3.3时域运动矢量候选
除了参考图片索引导出以外,用于时域Merge候选的所有导出的过程与用于空域运动矢量候选的导出的过程相同(见图6)。将参考图片索引信令通知给解码器。
2.2 VVC中的帧间预测方法
存在几种新的用于帧间预测改进的编解码工具,诸如用于信令通知MVD的自适应运动矢量差分辨率(AMVR)、具有运动矢量差的Merge(MMVD),三角预测模式(TPM)、组合的帧内-帧间预测(CIIP)、高级TMVP(ATMVP,又称为SbTMVP)、仿射预测模式、广义双向预测(GBI)、解码器侧运动矢量细化(DMVR)和双向光流(BIO,又称为BDOF)。
VVC中支持三种不同的Merge列表构建过程:
(1)子块Merge候选列表:它包括ATMVP和仿射Merge候选。仿射模式和ATMVP模式两者共享一个Merge列表构建过程。在此,可以按顺序添加ATMVP和仿射Merge候选。子块Merge列表的尺寸在条带标头中信令通知,并且最大值为5。
(2)常规Merge列表:对于帧间编解码的块,共享一个Merge列表构建过程。在此,可以按顺序插入空域/时域Merge候选、HMVP、成对的Merge候选和零运动候选。在条带标头中信令通知常规Merge列表尺寸,并且最大值为6。MMVD、TPM、CIIP依赖于常规Merge列表。
(3)IBC Merge列表:其以与常规Merge列表类似的方式完成。
类似地,VVC支持三个AMVP列表:
(1)仿射AMVP候选列表
(2)常规AMVP候选列表
(3)IBC AMVP候选列表:与IBC Merge列表的构建过程相同
2.2.1 VVC中的编解码块结构
在VVC中,采用四叉树/二叉树/三叉树(QT/BT/TT)结构将图片分为正方形或矩形块。
除了QT/BT/TT,还在VVC中采用单独的树(又称为双重编解码树)以用于I帧。通过单独的树,分别为亮度和色度分量信令通知编解码块结构。
此外,CU被设置为等于PU和TU,除了用几种特定的编解码方法编解码的块(诸如,帧内子分割预测,其中PU等于TU,但是小于CU,以及对于帧间编解码块的子块变换,其中PU等于CU,但TU小于PU)以外。
2.2.2仿射预测模式
在HEVC中,对于运动补偿预测(MCP)仅应用平移运动模型。而在现实世界中,存在许多种运动,例如放大/缩小、旋转、透视运动(perspective motion)和其它不规则的运动。在VVC中,简化的仿射变换运动补偿预测应用于4-参数仿射模型和6-参数仿射模型。如图10所示,该块的仿射运动场由4-参数仿射模型的两个控制点运动矢量(CPMV)和6-参数仿射模型的3个CPMV来描述。
块的运动矢量场(MVF)由以下等式分别以等式(1)中的4-参数仿射模型(其中4-参数定义为变量a、b、e和f)和等式(2)中的6-参数仿射模型(其中4-参数定义为变量a、b、c、d、e和f)描述:
其中(mvh 0,mvh 0)是左上角控制点的运动矢量,并且(mvh 1,mvh 1)是右上角控制点的运动矢量,并且(mvh 2,mvh 2)是左下角控制点的运动矢量,所有三个运动矢量被称为控制点运动矢量(CPMV),(x,y)代表相对于当前块内左上样点的代表点的坐标,并且(mvh(x,y),mvv(x,y))是为位于(x,y)的样点所导出的运动矢量。CP运动矢量可以被信令通知(像是在仿射AMVP模式中)或即时导出(像是在仿射Merge模式中)。w和h是当前块的宽度和高度。实践中,该除法是通过取整操作右移实现。在VTM中,代表点定义为子块的中心位置,例如,当子块的左上角相对于当前块内左上样点的坐标为(xs,ys),代表点的坐标定义为(xs+2,ys+2)。对于每个子块(例如,VTM中的4×4),代表点被用于导出整个子块的运动矢量。
为了进一步简化运动补偿预测,应用基于子块的仿射变换预测。为了导出每个M×N(在当前VVC中,M和N两者都被设置为4)子块的运动矢量,如图11所示,根据等式(1)和(2)计算每个子块的中心样点的运动矢量并将其取整至1/16的分数准确度。然后,可以应用1/16像素的运动补偿插值滤波器,以利用导出的运动矢量生成每个子块的预测。由仿射模式引入1/16像素的插值滤波器。
在MCP之后,每个子块的高准确度运动矢量以与正常运动矢量相同的准确度被取整并保存。
2.2.3对于整个块的MERGE
2.2.3.1平移的常规Merge模式的Merge列表构建
2.2.3.1.1基于历史的运动矢量预测(HMVP)
与Merge列表设计不同,在VVC中,采用了基于历史的运动矢量预测(HMVP)方法。
在HMVP中,存储了先前编解码的运动信息。将先前编解码块的运动信息定义为HMVP候选。多个HMVP候选存储在一个命名为HMVP表的表中,并且在即时编码/解码过程期间维持该表。当开始对新的片/LCU行/条带进行编码/解码时,HMVP表被清空。每当存在帧间编解码的块和非子块、非TPM模式时,相关联的运动信息被添加到表的最后一个条目作为新的HMVP候选。整个编解码流程如图12所示。
2.2.3.1.2常规Merge列表构建过程
常规Merge列表(用于平移运动)的构建可以根据以下步骤序列进行总结:
步骤1:导出空域候选
步骤2:插入HMVP候选
步骤3:插入成对平均候选
步骤4:默认运动候选
HMVP候选可以在AMVP和Merge候选列表两者的构建过程中使用。图13描绘了修改的Merge候选列表构建过程。当在TMVP候选插入之后,Merge候选列表未满时,可以利用存储在HMVP表中的HMVP候选来填充Merge候选列表。考虑到一个块通常就运动信息而言与最近的邻域块相关性更高,因此以索引的降序插入表中的HMVP候选。最先将表中的最后一个条目添加到列表中,而最后添加第一个条目。类似地,冗余移除被应用于HMVP候选。一旦可用Merge候选的总数达到允许被信令通知的Merge候选的最大数量,则Merge候选列表构建过程终止。
注意,所有的空域/时域/HMVP候选都应以非IBC模式进行编解码。否则,不允许将其添加到常规Merge候选列表中。
HMVP表包含多达5个常规运动候选,并且每个候选都是唯一的。
2.2.3.1.2.1修剪过程
仅当用于冗余检查的对应的候选不具有相同的运动信息时,才将候选添加到列表中。这样的比较过程称为修剪过程。
在空域候选中的修剪过程取决于当前块的TPM的使用。
当在未使用TPM模式(例如,常规Merge、MMVD、CIIP)对当前块进行编解码时,利用用于空域Merge候选的HEVC修剪过程(例如,五个修剪)。
2.2.4三角预测模式(TPM)
在VCC中,支持三角分割模式用于帧间预测。三角分割模式仅应用于8×8或更大且以Merge模式编解码而不以MMVD或CIIP模式编解码的CU。对于满足这些条件的CU,信令通知CU级别的标志以指示是否应用了三角分割模式。
当使用该模式时,如图14所示,使用对角线划分或反对角线划分将CU均匀地划分为两个三角形分割。CU中的每个三角分割都是使用自己的运动进行帧间预测的;每个分割仅允许单向预测,即每个分割具有一个运动矢量和一个参考索引。应用单向预测运动约束以确保与常规双向预测相同,每个CU仅需要两个运动补偿的预测。
如果CU级别标志指示当前CU是使用三角分割模式编解码的,则进一步信令通知指示三角分割的方向(对角线或反对角线)的标志以及两个Merge索引(每个分割一个)。在预测每个三角分割之后,使用具有自适应权重的混合(blending)处理来调整沿对角线或反对角线边缘的样点值。这是整个CU的预测信号,并且与在其它预测模式中一样,变换和量化过程将应用于整个CU。最后,使用三角分割模式预测的CU的运动场以4×4单元存储。
常规Merge候选列表在没有额外的运动矢量修剪的情况下被重新用于三角分割Merge预测。对于常规Merge候选列表中的每个Merge候选,其L0或L1运动矢量中有且仅有一个用于三角预测。另外,选择L0与L1运动矢量的顺序是基于其Merge索引奇偶校验。通过这种方案,可以直接使用常规Merge列表。
2.2.4.1 TPM的Merge列表构建过程
在一些实施例中,常规Merge列表构建过程可以包括以下修改:
(1)如何进行修剪过程是取决于当前块的TPM的使用
-如果未使用TPM对当前块进行编解码,则调用应用于空域Merge候选的HEVC的5个修剪。
-否则(如果使用TPM编解码对当前块进行编解码),则在添加新的空域Merge候选时应用完全修剪。换言之,将B1与A1进行比较;将B0与A1和B1进行比较;将A0与A1、B1和B0进行比较;以及将B2与A1、B1、A0和B0进行比较。
(2)关于是否检查来自B2的运动信息的条件是取决于当前块的TPM的使用
-如果未使用TPM对当前块进行编解码,则在检查B2之前,仅当存在少于4个空域Merge候选时才访问和检查B2。
-否则(如果使用TPM对当前块进行编解码),则在添加B2之前,不管有多少可用的Merge候选,始终访问和检查B2。
2.2.4.2自适应加权过程
在预测每个三角预测单元之后,将自适应加权过程应用于两个三角预测单元之间的对角线边缘,以导出整个CU的最终预测。两个加权因子组定义如下:
第一加权因子组:{7/8,6/8,4/8,2/8,1/8}和{7/8,4/8,1/8}分别用于亮度和色度样点;
第二加权因子组:{7/8,6/8,5/8,4/8,3/8,2/8,1/8}和{6/8,4/8,2/8}分别用于亮度和色度样点。
基于两个三角预测单元的运动矢量的比较来选择加权因子组。如果以下条件中的任何一个为真,则使用第二加权因子组:
-两个三角预测单元的参考图片彼此不同
-两个运动矢量的水平值之差的绝对值大于16个像素。
-两个运动矢量的垂直值之差的绝对值大于16个像素。
否则,使用第一加权因子组。在图15中示出了一个示例。
2.2.4.3运动矢量存储
三角预测单元的运动矢量(图16中的Mv1和Mv2)存储在4×4网格中。对于每个4×4网格,取决于在CU中的4×4网格的位置,存储单向预测或双向预测运动矢量。如图16所示,对于位于非加权区域(即,不位于对角线边缘)中的4×4网格,存储单向预测运动矢量——Mv1或Mv2。另一方面,对于位于加权区域中的4×4网格,存储双向预测运动矢量。根据以下规则从Mv1和Mv2导出双向预测运动矢量:
(1)在Mv1和Mv2具有来自不同方向(L0或L1)的运动矢量的情况下,将Mv1和Mv2简单地组合以形成双向预测运动矢量。
(2)在Mv1和Mv2两者都来自相同的L0(或L1)方向的情况下,
-如果Mv2的参考图片与L1(或L0)参考图片列表中的图片相同,则将Mv2缩放到该图片。将Mv1和缩放的Mv2组合以形成双向预测运动矢量。
-如果Mv1的参考图片与L1(或L0)参考图片列表中的图片相同,则将Mv1缩放到该图片。将缩放的Mv1和Mv2组合以形成双向预测运动矢量。
-否则,对于加权区域仅存储Mv1。
2.2.4.4 Merge模式的语法表、语义和解码过程
添加的改变以带下划线的粗体斜体突出显示。删除标记为[[]]。。
7.3.5.1一般条带标头语法
7.3.7.5编解码单元语法
7.3.7.7 Merge数据语法
7.4.6.1一般条带标头语义
six_minus_max_num_merge_cand指定从6减去的条带中支持的Merge运动矢量预测(MVP)候选的最大数量。Merge MVP候选的最大数量MaxNumMergeCand导出如下:
MaxNumMergeCand=6-six_minus_max_num_merge_cand (7-57)
MaxNumMergeCand的值应在1到6的范围中(包括端值)。
five_minus_max_num_subblock_merge_cand指定从5减去的条带中支持的基于子块的Merge运动矢量预测(MVP)候选的最大数量。当不存在five_minus_max_num_subblock_merge_cand时,则推断其等于5-sps_sbtmvp_enabled_flag。基于子块的Merge MVP候选的最大数量MaxNumSubblockMergeCand导出如下:
MaxNumSubblockMergeCand=5-five_minus_max_num_subblock_merge_cand(7-58)
MaxNumSubblockMergeCand的值应在0到5的范围中(包括端值)。
7.4.8.5编解码单元语义
pred_mode_flag等于0指定当前编解码单元是在帧间预测模式中编解码的。pred_mode_flag等于1指定当前编解码单元是在帧内预测模式中编解码的。
当不存在pred_mode_flag时,可如下推断:
-如果cbWidth等于4并且cbHeight等于4,则pred_mode_flag推断为等于1。
-否则,在解码I条带时,将pred_mode_flag推断为等于1,而在分别解码P或B条带时,将pred_mode_flag推断为等于0。
对于x=x0..x0+cbWidth-1且y=y0..y0+cbHeight-1,变量CuPredMode[x][y]导出如下:
-否则(pred_mode_flag等于1),将CuPredMode[x][y]设置为等于MODE_INTRA。
pred_mode_ibc_flag等于1指定当前编解码单元是在IBC预测模式中编解码的。pred_mode_ibc_flag等于0指定当前编解码单元不是在IBC预测模式中编解码的。
当不存在pred_mode_ibc_flag时,可如下推断:
-如果cu_skip_flag[x0][y0]等于1,并且cbWidth等于4,且cbHeight等于4,则pred_mode_ibc_flag推断为等于1。
-否则,如果cbWidth和cbHeight都等于128,则pred_mode_ibc_flag推断为等于0。
-否则,当解码I条带时,将pred_mode_ibc_flag推断为等于sps_ibc_enabled_flag的值;并且相应地当解码P或B条带时,将pred_mode_ibc_flag的值推断为等于0。
当pred_mode_ibc_flag等于1时,对于x=x0..x0+cbWidth-1且y=y0..y0+cbHeight-1,将变量CuPredMode[x][y]设置为等于MODE_IBC。
general_merge_flag[x0][y0]指定是否从邻域的帧间预测分割中推断当前编解码单元的帧间预测参数。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
当不存在general_merge_flag[x0][y0]时,可如下推断:
-如果cu_skip_flag[x0][y0]等于1,则推断general_merge_flag[x0][y0]等于1。
-否则,推断general_merge_flag[x0][y0]等于0。
mvp_l0_flag[x0][y0]指定列表0的运动矢量预测符索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度图片样点的位置(x0,y0)。
当不存在mvp_l0_flag[x0][y0]时,则将其推断为等于0。
mvp_l1_flag[x0][y0]具有与mvp_l0_flag相同的语义,其中l0和列表0分别被l1和列表1代替。
inter_pred_idc[x0][y0]指定根据表7-10,列表0、列表1或双向预测是否用于当前编解码单元。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
表7-10–关联到帧间预测模式的名称
当不存在inter_pred_idc[x0][y0]时,则将其推断为等于PRED_L0。
7.4.8.7 Merge数据语义
regular_merge_flag[x0][y0]等于1指定使用常规Merge模式来生成当前编解码单元的帧间预测参数。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
当不存在regular_merge_flag[x0][y0]时,可如下推断:
-如果以下所有条件为真,则将regular_merge_flag[x0][y0]推断为等于1:
-sps_mmvd_enabled_flag等于0。
-general_merge_flag[x0][y0]等于1。
-cbWidth*cbHeight等于32。
-否则,推断regular_merge_flag[x0][y0]等于0。
mmvd_merge_flag[x0][y0]等于1指定使用具有运动矢量差的Merge模式来生成当前编解码单元的帧间预测参数。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
当不存在mmvd_merge_flag[x0][y0]时,可如下推断:
-如果以下所有条件为真,则将mmvd_merge_flag[x0][y0]推断为等于1:
-sps_mmvd_enabled_flag等于1。
-general_merge_flag[x0][y0]等于1。
-cbWidth*cbHeight等于32。
-regular_merge_flag[x0][y0]等于0。
-否则,推断mmvd_merge_flag[x0][y0]等于0。
mmvd_cand_flag[x0][y0]指定是否将Merge候选列表中的第一(0)或第二(1)候选与从mmvd_distance_idx[x0][y0]和mmvd_direction_idx[x0][y0]导出的运动矢量差一起使用。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
当不存在mmvd_cand_flag[x0][y0]时,则将其推断为等于0。
mmvd_distance_idx[x0][y0]指定用于导出MmvdDistance[x0][y0]的索引,如表7-12所示。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
表7-12–基于mmvd_distance_idx[x0][y0]的MmvdDistance[x0][y0]的规定
mmvd_direction_idx[x0][y0]指定用于导出MmvdSign[x0][y0]的索引,如表7-13中所指定。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
表7-13–基于mmvd_direction_idx[x0][y0]的MmvdSign[x0][y0]的规定
Merge加MVD偏移的两个分量MmvdOffset[x0][y0]导出如下:
MmvdOffset[x0][y0][0]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][0](0-2)
MmvdOffset[x0][y0][1]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][1](0-3)
merge_subblock_flag[x0][y0]指定是否从邻域块中推断当前编解码单元的基于子块的帧间预测参数。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。当不存在merge_subblock_flag[x0][y0]时,则将其推断为等于0。
merge_subblock_idx[x0][y0]指定基于子块的Merge候选列表的Merge候选索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
当不存在merge_subblock_idx[x0][y0]时,则将其推断为等于0。
ciip_flag[x0][y0]指定是否将组合的帧间图片Merge和帧内图片预测应用于当前编解码单元。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
当不存在ciip_flag[x0][y0]时,则将其推断为等于0。
当ciip_flag[x0][y0]等于1时,具有x=xCb..xCb+cbWidth-1和y=yCb..yCb+cbHeight-1的变量IntraPredModeY[x][y]设置为等于INTRA_PLANAR。
变量MergeTriangleFlag[x0][y0]指定在解码B条带时是否使用基于三角形的运动补偿来生成当前编解码单元的预测样点,该变量MergeTriangleFlag[x0][y0]导出如下:
-如果以下所有条件为真,则将MergeTriangleFlag[x0][y0]设置为等于1:
-sps_triangle_enabled_flag等于1。
-slice_type等于B。
-general_merge_flag[x0][y0]等于1。
-MaxNumTriangleMergeCand大于或等于2。
-cbWidth*cbHeight大于或等于64。
-regular_merge_flag[x0][y0]等于0。
-mmvd_merge_flag[x0][y0]等于0。
-merge_subblock_flag[x0][y0]等于0。
-ciip_flag[x0][y0]等于0。
-否则,将MergeTriangleFlag[x0][y0]设置为等于0。
merge_triangle_split_dir[x0][y0]指定Merge三角模式的划分方向。阵列索引x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
当不存在merge_triangle_split_dir[x0][y0]时,则将其推断为等于0。
merge_triangle_idx0[x0][y0]指定基于三角形的运动补偿候选列表的第一Merge候选索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
当不存在merge_triangle_idx0[x0][y0]时,则将其推断为等于0。
merge_triangle_idx1[x0][y0]指定基于三角形的运动补偿候选列表的第二Merge候选索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
当不存在merge_triangle_idx1[x0][y0]时,则推断其等于0。
merge_idx[x0][y0]指定Merge候选列表的Merge候选索引,其中x0、y0指定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
当不存在merge_idx[x0][y0]时,可如下推断:
-如果mmvd_merge_flag[x0][y0]等于1,则将merge_idx[x0][y0]推断为等于mmvd_cand_flag[x0][y0]。
-否则(mmvd_merge_flag[x0][y0]等于0),则将merge_idx[x0][y0]推断为等于0。
2.2.4.4.1解码过程
在一些实施例中,解码过程定义如下:
8.5.2.2 Merge模式的亮度运动矢量的导出过程
此过程仅当general_merge_flag[XCB][YCB]等于1时被调用,其中(xCb,yCb)指定相对于当前图片的左上亮度样点的当前亮度编解码块的左上样点。
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上样点的亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中的当前编解码块的宽度,
-变量cbHeight,指定亮度样点中的当前编解码块的高度。
此过程的输出是:
-1/16分数样点准确度mvL0[0][0]和mvL1[0][0]中的亮度运动矢量,
-参考索引refIdxL0和refIdxL1,
-预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0],
-双向预测权重索引bcwIdx。
-Merge候选列表mergeCandList。
双向预测权重索引bcwIdx设置为等于0。
运动矢量mvL0[0][0]和mvL1[0][0],参考索引refIdxL0和refIdxL1以及预测利用标志predFlagL0[0][0]和predFlagL1[0][0]通过以下有序步骤导出:
1.用以下条件调用8.5.2.4节中规定的从邻域编解码单元的空域Merge候选的导出过程:亮度编解码块位置(xCb,yCb),亮度编解码块宽度cbWidth和亮度编解码块高度cbHeight作为输入;并且输出是可用性标志availableFlagA0、availableFlagA1、availableFlagB0、availableFlagB1和availableFlagB2,参考索引refIdxLXA0、refIdxLXA1、refIdxLXB0、refIdxLXB1和refIdxLXB2,预测列表利用标志predFlagLXA0、predFlagLXA1、predFlagLXB0、predFlagLXB1和predFlagLXB2,和运动矢量mvLXA0、mvLXA1、mvLXB0、mvLXB1和mvLXB2,其中X为0或1,以及双向预测权重索引bcwIdxA0、bcwIdxA1、bcwIdxB0、bcwIdxB1、bcwIdxB2。
2.参考索引refIdxLXCol(X为0或1)和时域Merge候选Col的双向预测权重索引bcwIdxCol设置为等于0。
3.用以下条件调用8.5.2.11节中规定的时域亮度运动矢量预测的导出过程:亮度位置(xCb,yCb),亮度编解码块宽度cbWidth,亮度编解码块高度cbHeight和变量refIdxL0Col作为输入;并且输出是可用性标志availableFlagL0Col和时域运动矢量mvL0Col。可用变量FlagCol、predFlagL0Col和predFlagL1Col导出如下:
availableFlagCol=availableFlagL0Col (8-263)
predFlagL0Col=availableFlagL0Col (8-264)
predFlagL1Col=0 (8-265)
4.当slice_type等于B时,用以下条件调用8.5.2.11节中指定的时域亮度运动矢量预测的导出过程:亮度位置(xCb,yCb),亮度编解码块宽度cbWidth,亮度编解码块高度cbHeight和变量refIdxL1Col作为输入;并且输出是可用性标志availableFlagL1Col和时域运动矢量mvL1Col。变量availableFlagCol和predFlagL1Col导出如下:
availableFlagCol=availableFlagL0Col||availableFlagL1Col (8-266)
predFlagL1Col=availableFlagL1Col (8-267)
5.Merge候选列表mergeCandList构建如下:
6.变量numCurrMergeCand和numOrigMergeCand设置为等于mergeCandList中Merge候选的数量。
7.当numCurrMergeCand小于(MaxNumMergeCand-1)并且NumHmvpCand大于0时,适用以下:
-用以下条件调用8.5.2.6中规定的基于历史的Merge候选的导出过程:mergeCandList和numCurrMergeCand作为输入,并且修改的mergeCandList和numCurrMergeCand作为输出。
-numOrigMergeCand设置为等于numCurrMergeCand。
8.当numCurrMergeCand小于MaxNumMergeCand且大于1时,适用以下:
-用以下条件调用8.5.2.4节中规定的成对平均Merge候选的导出过程:mergeCandList,参考索引refIdxL0N和refIdxL1N,所述预测列表利用标志predFlagL0N和predFlagL1N,在mergeCandList中每个候选N的运动矢量mvL0N和mvL1N,以及numCurrMergeCand作为输入;并且输出分配给mergeCandList,numCurrMergeCand,参考索引refIdxL0avgCand和refIdxL1avgCand,预测列表利用标志predFlagL0avgCand和predFlagL1avgCand以及被添加到mergeCandList中的候选avgCand的运动矢量mvL0avgCand和mvL1avgCand。被添加到mergeCandList中的候选avgCand的双向预测权重索引bcwIdx设置为等于0。
-numOrigMergeCand设置为等于numCurrMergeCand。
9.用以下条件调用8.5.2.5节中规定的零运动矢量Merge候选的导出过程:mergeCandList,参考索引refIdxL0N和refIdxL1N,预测列表利用标志predFlagL0N和predFlagL1N,mergeCandList中每个候选N的运动矢量mvL0N和mvL1N以及numCurrMergeCand作为输入;并且输出分配给mergeCandList,numCurrMergeCand,参考索引refIdxL0zeroCandm和refIdxL1zeroCandm,预测列表利用标志predFlagL0zeroCandm和predFlagL1zeroCandm以及被添加到mergeCandList中的每个新候选zeroCandm的运动矢量mvL0zeroCandm和mvL1zeroCandm。被添加到mergeCandList中的每个新候选zeroCandm的双向预测权重索引bcwIdx设置为等于0。被添加的候选的数量numSeroMergeCand设置为等于(numCurrMergeCand-numOrigMergeCand)。当numZeroMergeCand大于0时,m的范围为0到numZeroMergeCand-1(含端值)。
10.进行以下分配,N为Merge候选列表mergeCandList(N=mergeCandList[merge_idx[xCb][yCb]])中位置merge_idx[xCb][yCb]处的候选,并且X由0或1替换:
refIdxLX=refIdxLXN (8-269)
predFlagLX[0][0]=predFlagLXN (8-270)
mvLX[0][0][0]=mvLXN[0] (8-271)
mvLX[0][0][1]=mvLXN[1] (8-272)
bcwIdx=bcwIdxN (8-273)
11.当mmvd_merge_flag[xCb][yCb]等于1时,适用以下:
-用以下条件调用8.5.2.7中规定的Merge运动矢量差的导出过程:亮度位置(xCb,yCb),参考索引refIdxL0、refIdxL1以及预测列表利用标志predFlagL0[0][0]和predFlagL1[0][0]作为输入,并且运动矢量差mMvdL0和mMvdL1作为输出。
-运动矢量差mMvdLX被添加到Merge运动矢量mvLX,X为0和1,如下:
mvLX[0][0][0]+=mMvdLX[0] (8-274)
mvLX[0][0][1]+=mMvdLX[1] (8-275)
mvLX[0][0][0]=Clip3(-217,217-1,mvLX[0][0][0]) (8-276)
mvLX[0][0][1]=Clip3(-217,217-1,mvLX[0][0][1]) (8-277)
2.2.3.3 MMVD
在一些实施例中,提出了最终运动矢量表达(UMVE,也称为MMVD)。UMVE使用运动矢量表达方法用于跳过模式或Merge模式。
UMVE重复使用与VVC中的常规Merge候选列表中所包括的Merge候选相同的Merge候选。在Merge候选之中,可以选择基本候选,并通过运动矢量表达方法对其进一步扩展。
UMVE提供了一种新的运动矢量差(MVD)表示方法,其中使用起点、运动幅度和运动方向来表示MVD。
在一些实施例中,照原样使用Merge候选列表。但是,只有默认Merge类型(MRG_TYPE_DEFAULT_N)的候选才会考虑UMVE的扩展。
基本候选索引定义起点。基本候选索引指示在列表中的候选之中的最佳候选,如下。
表4:基本候选IDX
如果基本候选的数量等于1,则不信令通知基本候选IDX。
距离索引是运动幅度信息。距离索引指示距起点信息的预定义距离。预定义的距离如下:
表5.距离IDX
方向索引表示MVD相对于起点的方向。方向索引可以表示四个方向,如下所示。
表6.方向IDX
| 方向IDX | 00 | 01 | 10 | 11 |
| x-轴 | + | – | N/A | N/A |
| y-轴 | N/A | N/A | + | – |
在发送跳过标志或Merge标志之后立即信令通知UMVE标志。如果跳过或Merge标志为真,则解析UMVE标志。如果UMVE标志等于1,则解析UMVE语法。但是,如果不是1,则解析仿射(AFFINE)标志。如果AFFINE标志等于1,则为AFFINE模式;但是,如果不等于1,则将为VTM的跳过/Merge模式解析跳过/Merge索引。
不需要由于UMVE候选而附加的行缓冲区。因为软件的跳过/Merge候选直接用作基本候选。使用输入的UMVE索引,可以在运动补偿之前确定MV的补充。无需为此保留长行缓冲区。
在当前的通用测试条件下,可以选择Merge候选列表中的第一或第二Merge候选作为基本候选。
UMVE也被称为具有MV差的Merge(MMVD)。
2.2.6组合的帧内-帧间预测(CIIP)
在一些实施例中,提出了多假设预测,其中组合的帧内预测和帧间预测是生成多个假设的一种方法。
当将多假设预测应用于改善帧内模式时,多假设预测将一个帧内预测与一个Merge索引预测进行组合。在Merge CU中,当标志为真时,信令通知一个标志用于Merge模式以从帧内候选列表中选择帧内模式。对于亮度分量,帧内候选列表仅从一个帧内预测模式,例如平面模式导出。从帧内和帧间预测应用于预测块的权重由两个邻域块(A1和B1)的编解码模式(帧内或非帧内)确定。
2.2.7基于子块的Merge技术
建议将所有与子块有关的运动候选不仅放入非子块Merge候选的常规Merge列表,还放入单独的Merge列表中。
将与子块有关的运动候选放在单独的Merge列表中,该列表命名为“子块Merge候选列表”。
在一个示例中,子块Merge候选列表包括ATMVP候选和仿射Merge候选。
按以下顺序用候选填充子块Merge候选列表:
1.ATMVP候选(可能可用或不可用);
2.仿射Merge列表(包括继承的仿射候选;和构建的仿射候选)
3.填充为零MV 4-参数仿射模型
2.2.7.1 ATMVP(又称为子块时域运动矢量预测符,SbTMVP)
ATMVP的基本思想是为一个块导出多组时域运动矢量预测符。每个子块分配有一组运动信息。当生成ATMVP Merge候选时,将以8×8级别而不是整个块级别完全运动补偿。
在当前设计中,ATMVP分两个步骤预测CU内子CU的运动矢量,该两个步骤分别在以下两个子章节中进行描述。
2.2.7.1.1初始化运动矢量的导出
由tempMv表示初始化运动矢量。当块A1可用并且未被帧内编解码(例如,使用帧间或IBC模式编解码)时,应用以下来导出初始化运动矢量。
-如果以下所有条件为真,则tempMv设置为等于来自列表1的块A1的运动矢量,由mvL1A1表示:
-列表1的参考图片索引可用(不等于-1),并且具有与并置图片相同的POC值(例如,DiffPicOrderCnt(ColPic,RefPicList[1][refIdxL1A1])等于0),
-与当前图片相比,所有参考图片都没有更大的POC(例如,对于当前条带的每个参考图片列表中的每个图片aPic,DiffPicOrderCnt(aPic,currPic)都小于或等于0),
-当前条带等于B条带,
-collocated_from_l0_flag等于0。
-否则,如果以下所有条件为真,则tempMv设置为等于来自列表0的块A1的运动矢量,由mvL0A1表示:
-列表0的参考图片索引可用(不等于-1),
-具有与并置图片相同的POC值(例如,DiffPicOrderCnt(ColPic,RefPicList[0][refIdxL0A1])等于0)。
-否则,零运动矢量被用作初始化MV。
在具有初始化运动矢量的条带标头处信令通知的并置图片中,识别对应的块(当前块的中心位置加上取整的MV,在必要的特定范围内被修剪)。
如果块是帧间编解码的,则转到第二步骤。否则,ATMVP候选设置为不可用。
2.2.7.1.2子CU运动导出
第二步骤是将当前CU划分成子CU,并从与并置图片中的每个子CU相对应的块中获得每个子CU的运动信息。
如果子CU的对应块以帧间模式编解码,则通过对于并置MV调用导出过程,利用运动信息来导出当前子CU的最终运动信息,该导出过程与用于传统的TMVP过程的过程不同。基本上,如果从目标列表X中预测对应块以用于单向预测或双向预测,则利用运动矢量;否则,如果从列表Y(Y=1-X)预测对应块以用于单向预测或双向预测,并且NoBackwardPredFlag等于1,则利用列表Y的MV。否则,无法找到运动候选。
如果由初始化MV和当前子CU的位置识别的并置图片中的块是帧内或IBC编解码的,或者如上所述无法找到运动候选,则进一步适用以下:
将用于提取并置图片Rcol中的运动场的运动矢量表示为MVcol。为了最小化由于MV缩放所造成的影响,可以通过以下方式选择用于导出MVcol的空域候选列表中的MV:如果候选MV的参考图片是并置图片,则选择该MV并在不进行任何缩放的情况下将其用作MVcol。否则,选择具有最接近并置图片的参考图片的MV,以使用缩放导出MVcol。
用于并置运动矢量导出过程的示例解码过程描述如下:
8.5.2.12并置运动矢量的导出过程
此过程的输入是:
-变量currCb,指定当前编解码块,
-变量colCb,指定由ColPic指定的并置图片内部的并置编解码块,
-亮度位置(xColCb,yColCb),相对于由ColPic指定的并置图片的左上亮度样点指定了由colCb指定的并置亮度编解码块的左上样点,
-参考索引refIdIdLX,X为0或1,
-指示子块时域Merge候选的标志sbFlag。
此过程的输出是:
-1/16分数样点准确度中的运动矢量预测mvLXCol,
-可用性标志availableFlagLXCol。
变量currPic指定当前图片。
数组predFlagL0Col[x][y]、mvL0Col[x][y]和refIdxL0Col[x][y]分别设置为等于由ColPic指定的并置图片的PredFlagL0[x][y]、MvDmvrL0[x][y]和RefIdxL0[x][y],并且数组predFlagL1Col[x][y]、mvL1Col[x][y]和refIdxL1Col[x][y]分别设置为等于由ColPic指定的并置图片的PredFlagL1[x][y]、MvDmvrL1[x][y]和RefIdxL1[x][y]。
变量mvLXCol和availableFlagLXCol导出如下:
-如果colCb以帧内或IBC预测模式编解码,则mvLXCol的两个分量均设置为等于0,并且availableFlagLXCol设置为等于0。
-否则,运动矢量mvCol、参考索引refIdxCol和参考列表标识符listCol导出如下:
-如果sbFlag等于0,则availableFlagLXCol设置为1并适用以下:
-如果predFlagL0Col[xColPb][yColPb]等于0,则mvCol、refIdxCol和listCol分别设置为等于mvL1Col[xColPb][yColPb]、refIdxL1Col[xColPb][yColPb]和L1。
-否则,如果predFlagL0Col[xColPb][yColPb]等于1并且predFlagL1Col[xColPb][yColPb]等于0,则mvCol、refIdxCol和listCol分别设置为等于mvL0Col[xColPb][yColPb]、refIdxL0Col[xColPb][yColPb]和L0。
-否则(predFlagL0Col[xColPb][yColPb]等于1并且predFlagL1Col[xColPb][yColPb]等于1),进行以下分配:
-如果NoBackwardPredFlag等于1,则mvCol、refIdxCol和listCol分别设置为等于mvLXCol[xColPb][yColPb]、refIdxLXCol[xColPb][yColPb]和LX。
-否则,mvCol、refIdxCol和listCol分别设置为等于mvLNCol[xColPb][yColPb]、refIdxLNCol[xColPb][yColPb]和LN,其中N为collocated_from_l0_flag的值。
-否则(sbFlag等于1),则适用以下:
-如果PredFlagLXCol[xColCb][yColCb]等于1,则mvCol、refIdxCol和listCol分别设置为等于mvLXCol[xColCb][yColCb]、refIdxLXCol[xColCb][yColCb]和LX,而availableFlagLXCol设置为1。
-否则(PredFlagLXCol[xColCb][yColCb]等于0),则适用以下:
-如果当前条带的每个参考图片列表中的每个图片aPic的DiffPicOrderCnt(aPic,currPic)都小于或等于0,并且PredFlagLYCol[xColCb][yColCb]等于1,则mvCol、refIdxCol和listCol分别设置为mvLYCol[xColCb][yColCb]、refIdxLYCol[xColCb][yColCb]和LY,其中Y等于!X,其中X是调用此过程的X的值。availableFlagLXCol设置为1。
-mvLXCol的两个分量均设置为0,并且availableFlagLXCol设置为等于0。
-当availableFlagLXCol等于真(TRUE)时,mvLXCol和availableFlagLXCol导出如下:
-如果LongTermRefPic(currPic,currCb,refIdxLX,LX)不等于LongTermRefPic(ColPic,colCb,refIdxCol,listCol),则mvLXCol的两个分量均设置为等于0,并且availableFlagLXCol设置为等于0。
-否则,变量availableFlagLXCol设置为等于1,refPicList[listCol][refIdxCol]设置为在由ColPic指定的并置图片中包含编解码块colCb的条带的参考图片列表listCol中具有参考索引refIdxCol的图片,并且适用以下:
colPocDiff=DiffPicOrderCnt(ColPic,refPicList[listCol][refIdxCol])(8-402)
currPocDiff=DiffPicOrderCnt(currPic,RefPicList[X][refIdxLX]) (8-403)
-用以下条件调用第8.5.2.15节中规定的并置运动矢量的时域运动缓冲压缩过程:mvCol作为输入,并且修改的mvCol作为输出。
-如果RefPicList[X][refIdxLX]是长期参考图片,或者colPocDiff等于currPocDiff,则mvLXCol导出如下:
mvLXCol=mvCol (8-404)
-否则,mvLXCol导出为运动矢量mvCol的缩放版本,如下:
tx=(16384+(Abs(td)>>1))/td (8-405)
distScaleFactor=Clip3(-4096,4095,(tb*tx+32)>>6) (8-406)
mvLXCol=Clip3(-131072,131071,(distScaleFactor*mvCol+128-(distScaleFactor*mvCol>=0))>>8)) (8-407)
where td and tb are derived as follows:
td=Clip3(-128,127,colPocDiff) (8-408)
tb=Clip3(-128,127,currPocDiff) (8-409)
2.2.8运动信息的细化
2.2.8.1解码器侧运动矢量细化(DMVR)
在双向预测操作中,对于一个块区域的预测,将分别使用列表0的运动矢量(MV)和列表1的MV形成的两个预测块进行组合以形成单个预测信号。在解码器侧运动矢量细化(DMVR)方法中,进一步对双向预测的两个运动矢量进行细化。
对于VVC中的DMVR,假定列表0和列表1之间的MVD镜像如图19所示,并执行双边匹配以细化MV,例如在几个MVD候选中找到最佳的MVD。用MVL0(L0X,L0Y)和MVL1(L1X,L1Y)表示两个参考图片列表的MV。将列表0的(MvdX,MvdY)表示的、可以将成本函数(例如,SAD)最小化的MVD定义为最佳MVD。对于SAD函数,其定义为以列表0参考图片中的运动矢量(L0X+MvdX,L0Y+MvdY)导出的列表0的参考块与以列表1参考图片中的运动矢量(L1X-MvdX,L1Y-MvdY)导出的列表1的参考块之间的SAD。
运动矢量细化过程可以迭代两次。在每个迭代中,可以分两步检查最多6个MVD(具有整数像素的精度),如图20所示。在第一步骤中,检查MVD(0,0)、(-1,0)、(1,0)、(0,-1)、(0,1)。在第二步骤中,可以选择并进一步检查MVD(-1,-1)、(-1、1)、(1,-1)或(1、1)中的一个。假设函数Sad(x,y)返回MVD(x,y)的SAD值。在第二步骤中检查的由(MvdX,MvdY)表示的MVD如下决定:
MvdX=-1;
MvdY=-1;
If(Sad(1,0)<Sad(-1,0))
MvdX=1;
If(Sad(0,1)<Sad(0,-1))
MvdY=1;
在第一迭代中,起点是信令通知的MV,并且在第二迭代中,起点是信令通知的MV加上在第一迭代中选择的最佳MVD。仅在一个参考图片为前一图片而另一参考图片为后一图片且两个参考图片与当前图片的图片顺序计数距离相同时才应用DMVR。
为了进一步简化DMVR的过程,在一些实施例中,采用的DMVR设计具有以下主要特征:
-当列表0和列表1之间的(0,0)位置SAD小于阈值时,提前终止。
-当对于某些位置,列表0和列表1之间的SAD为零时,提前终止。
-DMVR的块尺寸:W*H>=64&&H>=8,其中W和H是块的宽度和高度。
-对于CU尺寸>16*16的DMVR,将CU划分为多个16x16子块。如果仅CU的宽度或高度大于16,则仅在垂直或水平方向上划分。
-参考块尺寸(W+7)*(H+7)(用于亮度)。
-25点基于SAD的整数像素搜索(即,(+-)2细化搜索范围,单个阶段)
-基于双线性插值的DMVR。
-基于“参数误差表面等式”的子像素细化。仅当最小SAD成本不等于零且最佳MVD在上一次MV细化迭代中为(0,0)时,才执行此过程。
-亮度/色度MC w/参考块填充(如果需要)。
-仅用于MC和TMVP的细化MV。
2.2.8.1.1 DMVR的使用
当以下条件均为真时,可以启用DMVR:
-SPS中的DMVR启用标志(即,sps_dmvr_enabled_flag)等于1
-TPM标志、帧间仿射标志和子块Merge标志(ATMVP或仿射Merge),MMVD标志均等于0
-Merge标志等于1
-当前块是双向预测的,并且列表1中的当前图片与参考图片之间的POC距离等于列表0中的参考图片与当前图片之间的POC距离
-当前CU的高度大于或等于8
-亮度样点的数量(CU宽度*高度)大于或等于64
2.2.8.1.2基于“参数误差表面等式”的子像素细化
该方法总结如下:
1.仅当中心位置是给定迭代中的最佳成本位置时,才计算参数误差表面拟合。
2.中心位置成本以及距中心的(-1,0)、(0,-1)、(1,0)和(0,1)位置处的成本用于拟合以下形式的二维抛物线误差表面等式
E(x,y)=A(x-x0)2+B(y-y0)2+C
其中(x0,y0)对应于成本最小的位置,并且C对应于最小成本值。通过求解5个未知数中的5个等式,可计算出(x0,y0)为:
x0=(E(-1,0)-E(1,0))/(2(E(-1,0)+E(1,0)-2E(0,0)))
y0=(E(0,-1)-E(0,1))/(2((E(0,-1)+E(0,1)-2E(0,0)))
可以通过调整执行除法的精度(例如,计算出多少比特的商)以将(x0,y0)计算为任何所需的子像素精度。对于1/16像素准确度,仅需计算商的绝对值的4位,这有助于每个CU所需的2次除法的基于快速移位的减法的实现。
3.将计算出的(x0,y0)添加到整数距离细化MV以获得子像素准确的细化增量MV。
2.3帧内块复制
HEVC屏幕内容编解码扩展(HEVC-SCC)和当前VVC测试模型(VTM-4.0)已采用了帧内块复制(IBC),又称当前图片参考。IBC将运动补偿的概念从帧间编解码扩展到了帧内编解码。如图21所示,当应用IBC时,当前块由相同图片中的参考块预测。在对当前块进行编解码或解码之前,必须已经重构了参考块中的样点。尽管IBC对于大多数相机捕获的序列而言效率不高,但它示出了屏幕内容的显着编解码增益。原因是屏幕内容图片中有很多重复的模式,诸如图标和文本字符。IBC可以有效地移除这些重复模式之间的冗余。在HEVC-SCC中,如果选择当前图片作为其参考图片,则帧间编解码的编解码单元(CU)可以应用IBC。在这种情况下,MV被重命名为块矢量(BV),并且BV始终具有整数像素的精度。为了与主配置文档HEVC兼容,当前图片在解码图片缓冲区(Decoded Picture Buffer,DPB)中被标记为“长期”参考图片。应当注意,类似地,在多视图/3D视频编解码标准中,视图间参考图片也被标记为“长期”参考图片。
在BV找到其参考块之后,可以通过复制参考块来生成预测。可以通过从原始信号中减去参考像素来获得残差。然后,可以像在其它编解码模式中一样应用变换和量化。
然而,当参考块在图片之外、或与当前块重叠、或在重构区域之外、或在受某些约束限制的有效区域之外时,未定义部分或全部像素值。基本上,有两种解决此问题的方案。一种是禁止这种情况,例如在比特流一致性中。另一种是对那些未定义的像素值应用填充。以下子章节详细描述了方案。
2.3.1 VVC测试模型中的IBC(VTM4.0)
在当前的VVC测试模型(例如VTM-4.0设计)中,整个参考块应与当前的编解码树单元(CTU)一起,且不与当前块重叠。因此,不需要填充参考或预测块。IBC标志被编解码为当前CU的预测模式。因此,每个CU总共存在三种预测模式:MODE_INTRA\MODE_INTER和MODE_IBC。
2.3.1.1 IBC Merge模式
在IBC Merge模式中,从比特流中解析指向IBC Merge候选列表中的条目的索引。IBC Merge列表的构建可以根据以下步骤序列进行总结:
步骤1:导出空域候选
步骤2:插入HMVP候选
步骤3:插入成对平均候选
在空域Merge候选的导出中,在位于如附图2所描绘的A1、B1、B0、A0和B2所示的位置中的候选之中选择最多四个Merge候选。导出的顺序是A1、B1、B0、A0和B2。仅当位置A1、B1、B0、A0的任何PU不可用(例如,因为它属于另一条带或片)或者没有用IBC模式进行编解码时,才考虑位置B2。在添加位置A1处的候选之后,对剩余候选的插入进行冗余检查,其确保具有相同运动信息的候选被排除在列表之外,使得编解码效率提高。
在插入空域候选之后,如果IBC Merge列表尺寸仍小于最大IBC Merge列表尺寸,则可以插入来自HMVP表的IBC候选。当插入HMVP候选时执行冗余检查。
最后,将成对平均候选插入IBC Merge列表。
当由Merge候选识别的参考块在图片之外、或者与当前块重叠、或者在重构区域之外、或者在受某些约束限制的有效区域之外时,Merge候选被称为无效Merge候选。
注意,可将无效的Merge候选插入到IBC Merge列表中。
2.3.1.2 IBC AMVP模式
在IBC AMVP模式中,指向IBC AMVP列表中条目的AMVP索引是从比特流中解析出来的。IBC AMVP列表的构建可以根据以下步骤序列进行总结:
步骤1:导出空域候选
-检查A0、A1,直到找到可用的候选。
-检查B0、B1、B2,直到找到可用的候选。
步骤2:插入HMVP候选
步骤3:插入零候选
在插入空域候选之后,如果IBC AMVP列表尺寸仍然小于最大IBC AMVP列表尺寸,则可以插入来自HMVP表的IBC候选。
最后,将零候选插入到IBC AMVP列表中。
2.3.1.3色度IBC模式
在当前的VVC中,在子块级别执行色度IBC模式中的运动补偿。色度块将被分割为几个子块。每个子块确定对应亮度块是否具有块矢量以及有效性(如果存在的话)。当前VTM中存在编码器约束,其中如果当前色度CU中的所有子块都具有有效的亮度块矢量,则将测试色度IBC模式。例如,在YUV 420视频上,色度块为NxM,然后并置亮度区域为2Nx2M。色度块的子块尺寸为2x2。有几个步骤执行色度mv导出,然后进行块复制过程。
(1)色度块将首先被分割为(N>>1)*(M>>1)个子块。
(2)具有坐标为(x,y)的左上样点的每个子块取回对应的亮度块,该亮度块覆盖了坐标为(2x,2y)的相同左上样点。
(3)编码器检查取回的亮度块的块矢量(bv)。如果满足以下条件之一,则bv被视为无效。
a.对应亮度块的bv不存在。
b.由bv识别的预测块尚未重构。
c.由bv识别的预测块与当前块部分或完全重叠。
(4)将子块的色度运动矢量设置为对应亮度子块的运动矢量。
当所有子块都找到有效的bv时,在编码器处允许IBC模式。
2.3.2 IBC的最新进展
2.3.2.1单个BV列表
在一些实施例中,IBC中用于Merge模式和AMVP模式的BV预测符共享公共的预测符列表,该列表包含以下元素:
(1)2个空域邻域位置(如图2中的A1、B1)
(2)5个HMVP条目
(3)默认的零矢量
列表中的候选数量由从条带标头导出的变量控制。对于Merge模式,可以最多使用此列表的前6个条目;对于AMVP模式,可以使用此列表的前2个条目。并且该列表符合共享的Merge列表区域要求(在SMR内共享相同的列表)。
除了上述的BV预测符候选列表之外,可以简化HMVP候选与现有Merge候选(A1、B1)之间的修剪操作。在简化中,最多将进行2次修剪操作,因为其仅将第一HMVP候选与(一个或多个)空域Merge候选进行比较。
2.3.2.2 IBC的尺寸限制
在一些实施例中,在先前的VTM和VVC版本中,可以在当前比特流约束的顶部明确地使用用于禁用128x128 IBC模式的语法约束,这使得IBC标志的存在取决于CU尺寸<128x128。
2.3.2.3 IBC的共享的Merge列表
为了降低解码器复杂度并支持并行编码,在一些实施例中,对于CU划分树中的一个祖先节点的所有叶编解码单元(CU)可以共享相同的Merge候选列表,以启用小的跳过/Merge编解码的CU的并行处理。祖先节点被命名为Merge共享节点。假设Merge共享节点是叶CU,在Merge共享节点处生成共享Merge候选列表。
更具体地说,可以适用以下:
-如果块具有不大于32的亮度样点,并划分为2个4x4子代块(child block),则使用在非常小的块(例如,两个相邻的4x4块)之间的共享Merge列表。
-如果块具有大于32的亮度样点,但是在划分之后,至少一个子块小于阈值(32),该划分的所有子代块共享相同的Merge列表(例如,16x4或4x16三元划分或8x8四元划分)。
这样的限制仅应用于IBC Merge模式。
3.由实施例解决的技术问题的示例
一个块可以用IBC模式编解码。然而,块内的不同子区域可以具有不同的内容。需要研究如何进一步探索与当前帧内的先前编解码块的相关性。
4.实施例的示例
在本文档中,帧内块复制(IBC)可以不限于当前的IBC技术,而是可以解释为在当前条带/片/组块/图片/其他视频单元(例如,CTU行)内使用参考样点的技术,但排除传统的帧内预测方法。
为解决上述问题,提出了基于子块的IBC(sbIBC)编解码方法。在sbIBC中,当前IBC编解码的视频块(例如,CU/PU/CB/PB)被分为多个子块。每个子块的尺寸可以小于视频块的尺寸。对于来自多个子块的每个相应子块,视频编解码器可以识别当前图片/条带/片/组块/片组中的相应子块的参考块。视频编解码器可以使用相应子块的所识别参考块的运动参数来确定相应子块的运动参数。
另外,不限于仅将IBC应用于单向预测编解码块。也可以支持双向预测,其中两个参考图片均为当前图片。可替代地,也可以支持双向预测,其中一个参考图片来自当前图片而另一个参考图片来自不同图片。在又一个示例中,也可以应用多个假设。
下面的列表应被认为是解释一般概念的示例。这些技术不应狭义地解释。此外,可以以任何方式组合这些技术。邻域块A0、A1、B0、B1和B2如图2所示。
1.在sbIBC中,尺寸等于M×N的一个块可以被划分成多于一个子块。
a.在一个示例中,子块尺寸固定为L×K,例如,L=K=4。
b.在一个示例中,子块尺寸固定为最小编解码单元/预测单元/变换单元/运动信息存储单元。
c.在一个示例中,一个块可以被划分成具有不同尺寸或具有相等尺寸的多个子块。
d.在一示例中,可以信令通知子块尺寸的指示。
e.在一示例中,子块尺寸的指示可以例如根据块维度在块与块之间改变。
f.在一个示例中,子块尺寸必须为(N1×minW)×(N2×minH)的形式,其中minW×minH表示最小编解码单元/预测单元/变换单元/运动信息存储单元,并且N1和N2是正整数。
g.在一个示例中,子块维度可以取决于颜色格式和/或颜色分量。
i.例如,不同颜色分量的子块尺寸可以不同。
1)可替代地,不同颜色分量的子块尺寸可以相同。
ii.例如,当颜色格式是4:2:0时,亮度分量的2L×2K子块可以对应于色度分量的L×K子块。
1)可替代地,当颜色格式为4:2:0时,亮度分量的四个2L×2K子块可以对应于色度分量的2L×2K子块。
iii.例如,当颜色格式为4:2:2时,亮度分量的2L×2K子块可以对应于色度分量的2L×K子块。
1)可替代地,当颜色格式为4:2:2时,亮度分量的两个2L×2K子块可以对应于色度分量的2L×2K子块。
iv.例如,当颜色格式为4:4:4时,亮度分量的2L×2K子块可以对应于色度分量的2L×2K子块。
h.在一个示例中,第一颜色分量的子块的MV可以从第二颜色分量的一个对应子块或多个对应子块导出。
i.例如,可以将第一颜色分量的子块的MV导出为第二颜色分量的多个对应子块的平均MV。
ii.可替代地,此外,当利用单个树时可以应用上述方法。
iii.可替代地,此外,当对于某些块尺寸,诸如4×4色度块时,可以应用上述方法。
i.在一个示例中,子块尺寸可以取决于编解码模式,诸如IBC Merge/AMVP模式。
j.在一个示例中,子块可以是非矩形的,诸如三角/楔形。
2.利用两个阶段,包括使用初始化运动矢量(表示为initMV)识别对应参考块,以及根据参考块导出子CU的一个或多个运动矢量,以获得子CU的运动信息,其至少一个参考图片等于当前图片。
a.在一个示例中,参考块可以在当前图片中。
b.在一个示例中,参考块可以在参考图片中。
i.例如,可以在并置参考图片中。
ii.例如,可以在通过使用并置块的运动信息或并置块的邻域块识别的参考图片中。
阶段1.a关于initMV(vx,vy)的设置
c.在一个示例中,initMV可以从当前块或当前子块中的一个或多个邻域块(相邻或不相邻)导出。
i.邻域块可以是相同图片中的一个。
1)可替代地,可以是参考图片中的一个。
a.例如,可以在并置参考图片中。
b.例如,可以通过使用并置块的运动信息或并置块的邻域块来识别。
ii.在一个示例中,可以从邻域块Z导出。
1)例如,initMV可以设置为等于存储在邻域块Z中的MV。
例如,邻域块Z可以是块A1。
iii.在一个示例中,可以从按顺序检查的多个块中导出。
1)在一个示例中,可以将与当前图片相关联的,作为被检查块的参考图片的第一识别的运动矢量设置为initMV。
d.在一个示例中,initMV可以从运动候选列表导出。
i.在一个例子中,可以从IBC候选列表中的第k个(例如,第一个)候选导出。
1)在一个示例中,IBC候选列表是Merge/AMVP候选列表。
2)在一个示例中,可以利用不同于现有IBC Merge候选列表构建过程的IBC候选列表,诸如使用不同的空域邻域块。
ii.在一个示例中,可以从IBC HMVP表中的第k个(例如,第一个)候选导出。
e.在一个示例中,可以基于当前块的位置导出。
f.在一个示例中,可以取决于当前块的维度导出。
g.在一个示例中,可以设置为默认值。
h.在一个示例中,可以在视频单元级别(诸如片/条带/图片/组块/CTU行/CTU/CTB/CU/PU/TU等)信令通知initMV的指示。
i.当前块内的两个不同子块的初始MV可以不同。
j.如何导出初始MV可以在块与块之间、在片与片之间、在条带与条带之间等变化。
阶段1.b关于使用initMV识别子CU的对应参考块
k.在一个示例中,可以首先将initMV转换为1个像素的整数精度,并且可以利用转换的MV来识别子块的对应块。表示由(vx’,vy’)表示的转换的MV。
i.在一个示例中,如果(vx,vy)是以F个像素的帧间精度,则由(vx',vy')表示的转换的MV可以设置为(vx*F,vy*F)(例如,F=2或4)。
ii.可替代地,(vx’,vy’)直接设置为等于(vx,vy)。
l.假设一个子块的左上位置为(x,y),并且子块尺寸为K×L。子块的对应块设置为覆盖坐标(x+offsetX+vx',y+offsetY+vy')的CU/CB/PU/PB,其中offsetX和offsetY用于指示相对于当前的所选择的坐标。
i.在一个示例中,offsetX和/或offsetY设置为0。
ii.在一个示例中,offsetX可以设置为(L/2)或(L/2+1)或(L/2–1),其中L可以是子块的宽度。
iii.在一个示例中,offsetY可以设置为(K/2)或(K/2+1)或(K/2–1),其中K可以是子块的高度。
iv.可替代地,水平和/或垂直偏移可以被进一步裁剪到一个范围,
诸如在图片/条带/片/组块边界/IBC参考区域等内。
阶段2关于使用识别的对应参考块的运动信息导出子块的运动矢量(由subMV
(subMVx,subMVy)表示)
m.子块的subMV从对应块的运动信息导出。
i.在一个示例中,如果对应块具有指向当前图片的运动矢量,则subMV设置为等于MV。
ii.在一个示例中,如果对应块具有指向当前图片的运动矢量,则subMV设置为等于MV加上initMV。
n.导出的subMV可以被进一步裁剪到给定范围,或裁剪以确保其指向IBC参考区域。
o.在一致性比特流中,导出的subMV必须是子块的IBC的有效MV。
3.可以生成具有子块运动矢量的一个或多个IBC候选,其可以被表示为子块IBC候选。
4.可以将子块IBC候选插入到包括ATMVP、仿射Merge候选的子块Merge候选中。
a.在一个示例中,可以在所有其他子块Merge候选之前添加。
b.在一个示例中,可以在ATMVP候选之后添加。
c.在一个示例中,可以在继承的仿射候选或构建的仿射候选之后添加。
d.在一个示例中,可以将其添加到IBC Merge/AMVP候选列表中。
i.可替代地,是否添加可以取决于当前块的模式信息。例如,如果是IBC AMVP模式,则可能无法添加。
e.要添加的候选列表可以取决于分割结构,例如,双树或单树。
f.可替代地,可以将多个子块IBC候选插入到子块Merge候选中。
5.IBC子块运动(例如,AMVP/Merge)候选列表可以使用至少一个子块IBC候选构建。
a.可替代地,可以例如使用不同的初始化MV将一个或多个子块IBC候选插入到IBC子块Merge候选。
b.可替代地,另外,是构建IBC子块运动候选列表还是现有IBC AMVP/Merge候选列表可以由指示符信令通知,或即时导出。
c.可替代地,另外,如果当前块以IBC Merge模式编解码,则可以信令通知IBC子块Merge候选列表的索引。
d.可替代地,另外,如果当前块以IBC AMVP模式编解码,则可以信令通知IBC子块AMVP候选列表的索引。
i.可替代地,另外,用于IBC AMVP模式的信令通知/导出的MVD
可以被应用于一个或多个子块。
6.子块的参考块和子块可以属于相同的颜色分量。
通过被应用于相同块中的不同子块的其他工具的混合使用来扩展sbIBC
7.一个块可以被划分成多个子块,其中至少一个子块以IBC编解码并且至少一个子块以帧内模式编解码。
a.在一个示例中,对于子块,可以不导出运动矢量。相反,对于子块,可以导出一个或多个帧内预测模式。
b.可替代地,可以导出调色板模式或/和调色板表。
c.在一个示例中,对于整个块可以导出一个帧内预测模式。
8.一个块可以被划分成多个子块,其中所有子块都以帧内模式编解码。
9.一个块可以被划分成多个子块,其中所有子块都以调色板模式编解码。
10.一个块可以被划分成多个子块,其中至少一个子块以IBC模式编解码并且至少一个子块以调色板模式编解码。
11.一个块可以被划分成多个子块,其中至少一个子块以帧内模式编解码并且至少一个子块以调色板模式编解码。
12.一个块可以被划分成多个子块,其中至少一个子块以IBC模式编解码并且至少一个子块以帧间模式编解码。
13.一个块可以被划分成多个子块,其中至少一个子块以帧内模式编解码并且至少一个子块以帧间模式编解码。
与其他工具的交互
14.当应用上述方法中的一种或多种时,可能不会更新IBC HMVP表。
a.可替代地,用于IBC编解码子区域的运动矢量中的一个或多个运动矢量可以用于更新IBC HMVP表。
15.当应用上述方法中的一种或多种时,可能不会更新非IBC HMVP表。
b.可替代地,用于帧间编解码子区域的运动矢量中的一个或多个运动矢量可以用于更新非IBC HMVP表。
16.环路滤波过程(例如,去块(deblock)过程)可以取决于上述方法的使用。
a.在一个示例中,当应用上述方法中的一种或多种时,可以滤波子块边界。
a.可替代地,当应用上述方法中的一种或多种时,可以滤波子块边界。
b.在一个示例中,可以以与传统的IBC编解码块类似的方式来对待使用上述方法编解码的块。
17.对于使用上述方法中的一种或多种编解码的块,可以禁用某些编解码方法(例如,子块变换、仿射运动预测、多个参考线帧内预测、基于矩阵的帧内预测、对称MVD编解码、使用MVD解码器侧运动导出/细化的Merge、双向最佳流、简化的二次变换、多个变换集等)。
18.上述方法和/或子块尺寸的使用的指示可以以序列/图片/条带/片组/片/组块/CTU/CTB/CU/PU/TU/其他视频单元级别被信令通知或即时导出。
a.在一个示例中,上述方法中的一种或多种可以被视为特殊的IBC模式。
i.可替代地,另外,如果一个块被编解码为IBC模式,则使用传统的基于整个块的IBC方法或sbIBC的进一步指示可以被信令通知或导出。
ii.在一个示例中,后续IBC编解码块可以利用当前sbIBC编解码块的运动信息作为MV预测符。
1.可替代地,可以不允许后续IBC编解码块以利用当前sbIBC编解码块的运动信息作为MV预测符。
b.在一个示例中,sbIBC可以由运动候选列表的候选索引指示。
i.在一个示例中,将具体候选索引分配给sbIBC编解码块。
c.在一个示例中,IBC候选可以被分为两个类别:一类用于整个块编解码,而另一类用于子块编解码。一个块是否以sbIBC模式编解码可以取决于IBC候选的类别。
工具的使用
19.是否和/或如何应用上述方法可以取决于以下信息:
a.在DPS/SPS/VPS/PPS/APS/图片标头/条带标头/片组标头/最大编解码单元(LCU)/编解码单元(CU)/LCU行/LCU组/TU/PU块/视频编解码单元中信令通知的消息
b.CU/PU/TU/块/视频编解码单元的位置
c.当前块和/或其邻域块的块维度
d.当前块和/或其邻域块的块形状
e.当前块和/或其邻域块的帧内模式
f.其邻域块的运动/块矢量
g.颜色格式的指示(诸如4:2:0,4:4:4)
h.编解码树结构
i.条带/片组类型和/或图片类型
j.颜色分量(例如,可能仅应用于色度分量或亮度分量)
k.时域层ID
l.标准的配置文档/级别/层级(tier)
与Merge列表构建过程和IBC使用有关的想法
20.IBC模式可以与帧间预测模式一起用于帧间编解码图片/条带/片组/片中的块。
a.在一个示例中,对于IBC AMVP模式,可以信令通知语法元素以指示是否从当前图片和与当前图片不同的参考图片(表示为时域参考图片)两者预测当前块。
i.可替代地,另外,如果还可以从时域参考图片中预测当前块,则可以信令通知语法元素以指示使用了哪个时域参考图片及其相关联的MVP索引、MVD、MV精度等。
ii.在一个示例中,对于IBC AMVP模式,一个参考图片列表可以仅包括当前图片,而另一个参考图片列表可以仅包括时域参考图片。
b.在一示例中,对于IBC Merge模式,可以从邻域块导出运动矢量和参考图片。
i.例如,如果仅从当前图片预测邻域块,则从邻域块导出的运动信息可以仅参考当前图片。
ii.例如,如果从当前图片和时域参考图片两者预测邻域块,则导出的运动信息可以参考当前图片和时域参考图片两者。
1)可替代地,导出的运动信息可以仅参考当前图片。
iii.例如,如果仅从时域参考图片预测邻域块,则当构建IBC Merge候选时可以视为“无效”或“不可用”。
c.在一个示例中,可以将固定的加权因子分配给来自当前图片的参考块和来自时域参考图片的参考块,以进行双向预测。
i.可替代地,另外,可以信令通知加权因子。
21.运动候选列表构建过程(例如,常规Merge列表、IBC Merge/AMVP列表、子块Merge列表、IBC子块候选列表)和/或是否/如何更新HMVP表可以取决于块维度和/或Merge共享条件。将块的宽度和高度分别表示为W和H。条件C可以取决于块维度和/或编解码信息。
a.运动候选列表构建过程(例如,常规Merge列表、IBC Merge/AMVP列表、子块Merge列表、IBC子块候选列表)和/或是否/如何更新HMVP表可以取决于条件C。
b.在一个示例中,条件C可以取决于当前块和/或其邻域(相邻或不相邻)块的编解码信息。
c.在一个示例中,条件C可以取决于Merge共享条件。
d.在一个示例中,条件C可以取决于当前块的块维度和/或邻域(相邻或不相邻)块的块维度和/或当前和/或邻域块的编解码模式。
e.在一个示例中,如果满足条件C,则跳过空域Merge候选的导出。
f.在一个示例中,如果满足条件C,则跳过来自空域邻域(相邻或不相邻)块的候选的导出。
g.在一个示例中,如果满足条件C,则跳过来自某些空域邻域(相邻或不相邻)块(例如,块B2)的候选的导出。
h.在一个示例中,如果满足条件C,则跳过HMVP候选的导出。
i.在一个示例中,如果满足条件C,则跳过成对Merge候选的导出。
j.在一个示例中,如果满足条件C,则最大修剪操作的数量减少或设置为0。
i.可替代地,另外,可以减少或移除空域Merge候选之间的修剪操作。
ii.可替代地,另外,可以减少或移除HMVP候选和其他Merge候选之间的修剪操作。
k.在一个示例中,如果满足条件C,则跳过HMVP候选的更新。
i.在一个示例中,HMVP候选可以在不被修剪的情况下直接添加到运动列表中。
l.在一个示例中,如果满足条件C,则不添加默认运动候选(例如,IBC Merge/AVMP列表中的零运动候选)。
m.在一个示例中,当满足条件C时,将检查/添加不同的检查顺序(例如,从第一个到最后一个而不是从最后一个到第一个)和/或不同数量的HMVP候选。
n.在一个示例中,当W*H大于或不小于阈值(例如1024)时,可以满足条件C。
o.在一个示例中,当W和/或H大于或不小于阈值(例如32)时,可以满足条件C。
p.在一个示例中,当W大于或不小于阈值(例如32)时,可以满足条件C。
q.在一个示例中,当H大于或不小于阈值(例如32)时,可以满足条件C。
r.在一个示例中,当W*H大于或不小于阈值(例如1024)并且当前块以IBC AMVP和/或Merge模式编解码时,可以满足条件C。
s.在一个示例中,当W*H小于或不大于阈值(例如16或32或64)并且当前块以IBCAMVP和/或Merge模式编解码时,可以满足条件C。
i.可替代地,另外,当满足条件C时,IBC运动列表构建过程可以包括来自空域邻域块(例如,A1、B1)的候选和默认候选。即,跳过HMVP候选的插入。
ii.可替代地,另外,当满足条件C时,IBC运动列表构建过程可以包括来自IBCHMVP表的HMVP候选的候选和默认候选。即,跳过来自空域邻域块的候选的插入。
iii.可替代地,另外,在满足条件C的情况下,在对块进行解码之后,跳过IBC HMVP表的更新。
iv.可替代地,当以下一个/一些/全部情况为真时,可以满足条件C:
1)当W*H等于或不大于T1(例如16)并且当前块以IBC AMVP和/或Merge模式编解码时
2)当W等于T2且H等于T3(例如,T2=4,T3=8)时,其上方的块可用并且尺寸等于AxB;并且当前块及其上方的块都以某种模式编解码
a.可替代地,当W等于T2且H等于T3(例如,T2=4,T3=8)时,其上方块可用,在相同的CTU中并且尺寸等于AxB,并且当前块及其上方块两者以相同模式编解码
b.可替代地,当W等于T2且H等于T3(例如,T2=4,T3=8)时,其上方块可用并且尺寸等于AxB,并且当前块及其上方块两者以相同模式编解码
c.可替代地,当W等于T2且H等于T3(例如,T2=4,T3=8)时,其上方块不可用
d.可替代地,当W等于T2且H等于T3(例如,T2=4,T3=8)时,其上方块不可用或上方块不在当前CTU之外
3)当W等于T4并且H等于T5(例如,T4=8,T5=4)时,其左方块可用并且尺寸等于AxB;当前块及其左方块两者以某种模式编解码
a.可替代地,当W等于T4且H等于T5时(例如,T4=8,T5=4),则其左方块不可用
4)当W*H不大于T1(例如32)时,当前块以IBC AMVP和/或Merge模式编解码;其上方和左方邻域块可用,并且尺寸等于AxB,并以某种模式编解码。
a.当W*H不大于T1(例如32)时,当前块以某种模式编解码;其左方邻域块可用,尺寸等于AxB且以IBC编解码;并且其上方邻域块可用,在相同的CTU内且尺寸等于AxB,并以相同的模式编解码。
b.当W*H不大于T1(例如32)时,当前块以某种模式编解码;其左方邻域块不可用;并且其上方邻域块可用,在相同的CTU内且尺寸等于AxB,并以相同的模式编解码。
c.当W*H不大于T1(例如32)时,当前块以某种模式编解码;其左方邻域块不可用;并且其上方邻域块不可用。
d.当W*H不大于T1(例如32)时,当前块以某种模式编解码;其左方邻域块可用,尺寸等于AxB,并以相同的模式编解码;并且其上方邻域块不可用。
e.当W*H不大于T1(例如32)时,当前块以某种模式编解码;其左方邻域块不可用;并且其上方邻域块不可用或在当前CTU之外。
f.当W*H不大于T1(例如32)时,当前块以某种模式编解码;其左方邻域块可用,尺寸等于AxB,并以相同的模式编解码;并且其上方邻域块不可用或在当前CTU之外。
5)在上述示例中,“某种模式”是IBC模式。
6)在上述示例中,“某种模式”是帧间模式。
7)在上述示例中,“AxB”可以设置为4x4。
8)在上述示例中,“邻域块尺寸等于AxB”可以替换为“邻域块尺寸不大于或不小于AxB”。
9)在上述示例中,上方和左方邻域块是被访问以进行空域Merge候选导出的两个块。
a.在一个示例中,假设当前块中的左上样点的坐标为(x,y),左方块为覆盖(x-1,y+H-1)的一个块。
b.在一个示例中,假设当前块中的左上样点的坐标为(x,y),左方块为覆盖(x+W-1,y-1)的一个块。
t.上述阈值可以是预定义的或信令通知的。
i.可替代地,另外,阈值可以取决于块的编解码信息,诸如编解码模式。
u.在一个示例中,当当前块在共享节点下并且当前块以IBC AMVP和/或Merge模式编解码时,满足条件C。
i.可替代地,另外,当满足条件C时,IBC运动列表构建过程可以包括来自空域邻域块(例如,A1、B1)的候选和默认候选。即,跳过HMVP候选的插入。
ii.可替代地,另外,当满足条件C时,IBC运动列表构建过程可以包括来自IBCHMVP表的HMVP候选的候选和默认候选。即,跳过来自空域邻域块的候选的插入。
iii.可替代地,另外,在满足条件C的情况下,在对块进行解码之后,跳过IBC HMVP表的更新。
v.在一个示例中,可以诸如根据块的编解码信息来自适应地改变条件C。
i.在一个示例中,可以基于编解码模式(IBC或非IBC模式)、块维度来定义条件C。
w.是否应用上述方法可以取决于块的编解码信息,诸如是否为IBC编解码块。
i.在一个示例中,当块以IBC编解码时,可以应用上述方法。
IBC运动列表
22.建议IBC HMVP表中的运动候选以整数像素的精度而不是1/16个像素的精度存储。
a.在一个示例中,所有运动候选都以1个像素的精度存储。
b.在一个示例中,当使用来自空域邻域(相邻或不相邻)块和/或来自IBC HMVP表的运动信息时,跳过MV的取整过程。
23.建议IBC运动列表可以仅包含来自一个或多个IBC HMVP表的运动候选。
a.可替代地,另外,IBC运动列表中候选的信号通知可以取决于HMVP表中可用的HMVP候选的数量。
b.可替代地,另外,IBC运动列表中候选的信令通知可以取决于HMVP表中的HMVP候选的最大数量。
c.可替代地,在不进行修剪的情况下,将HMVP表中的HMVP候选按顺序添加到列表中。
i.在一个示例中,该顺序基于表的条目索引的升序。
ii.在一个示例中,该顺序基于表的条目索引的降序。
iii.在一个示例中,可以跳过表中的前N个条目。
iv.在一个示例中,可以跳过表中的最后N个条目。
v.在一个示例中,可以跳过具有(一个或多个)无效BV的条目。
vi.
d.可替代地,另外,可以进一步修改从一个或多个HMVP表的HMVP候选导出的运动候选,诸如通过向水平矢量添加偏移和/或向垂直矢量添加偏移。
i.可以修改具有(一个或多个)无效BV的HMVP候选以提供(一个或多个)有效BV。
e.可替代地,另外,可以在一个或多个HMVP候选之后或之前添加默认运动候选。
f.如何/是否将HMVP候选添加到IBC运动列表可以取决于块的维度。
i.例如,当块维度(W和H代表宽度和高度)满足条件C时,IBC运动列表可以仅包含来自一个或多个HMVP表的运动候选。
1)在一个示例中,条件C是W<=T1和H<=T2,例如T1=T2=4。
2)在一个示例中,条件C是W<=T1或H<=T2,例如,T1=T2=4。
3)在一个示例中,条件C是W*H<=T,例如,T=16。
5.实施例
添加的改变以带下划线的粗体斜体突出显示。删除标记为[[]]。。
5.1实施例#1
当当前块在共享节点下时,不更新HMVP表。并且对于共享节点下的块仅使用单个IBC HMVP表。
7.4.8.5编解码单元语义
[[当以下所有条件为真时,通过将NumHmvpSmrIbcCand设置为等于NumHmvpIbcCand,并将HmvpSmrIbcCandList[i]设置为等于HmvpIbcCandList[i],其中i=0...NumHmvpIbcCand–1,来更新用于共享Merge候选列表区域的基于历史的运动矢量预测符列表:
IsInSmr[x0][y0]等于真(TRUE)。
SmrX[x0][y0]等于x0。
SmrY[x0][y0]等于y0。]]
8.6.2 IBC块的运动矢量分量的导出过程
8.6.2.1概述
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度,
此过程的输出是:
-1/16分数样点准确度的亮度运动矢量mvL。
亮度运动矢量mvL导出如下:
-用以下条件调用8.6.2.2节中规定的IBC亮度运动矢量预测的导出过程:亮度位置(xCb,yCb),变量cbWidth和cbHeight作为输入;并且输出是亮度运动矢量mvL。
-当general_merge_flag[xCb][yCb]等于0时,适用以下:
1.变量mvd导出如下:
mvd[0]=MvdL0[xCb][yCb][0] (8-883)
mvd[1]=MvdL0[xCb][yCb][1] (8-884)
2.用以下条件调用8.5.2.14节中规定的运动矢量的取整过程:mvX设置为等于mvL,rightShift设置为等于MvShift+2,并且leftShift设置为等于MvShift+2作为输入;并且取整的mvL作为输出。
3.亮度运动矢量mvL修改如下:
u[0]=(mvL[0]+mvd[0]+218)%218 (8-885)
mvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-886)
u[1]=(mvL[1]+mvd[1]+218)%218 (8-887)
mvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-888)
注1–如上规定的所得到的mvL[0]和mvL[1]的值将始终在-217到217-1的范围内(含端值)。
当IsInSmr[xCb][yCb]为假时,以亮度运动矢量mvL调用8.6.2.6节中规定的基于历史的运动矢量预测符列表的更新过程。
参考块内部的左上位置(xRefTL,yRefTL)和参考块内部的右下位置(xRefBR,yRefBR)导出如下:
(xRefTL,yRefTL)=(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4)) (8-889)
(xRefBR,yRefBR)=(xRefTL+cbWidth-1,yRefTL+cbHeight-1) (8-890)
比特流一致性要求亮度运动矢量mvL应遵循以下约束:
-……
8.6.2.4基于IBC历史的运动矢量候选的导出过程
此过程的输入是:
-运动矢量候选列表mvCandList,
-列表中可用的运动矢量候选的数量numCurrCand。
此过程的输出是:
-修改的运动矢量候选列表mvCandList,
-[[变量isInSmr,指定当前编解码单元是否在共享Merge候选区域内部]]
-列表中修改的运动矢量候选的数量numCurrCand。
变量isPrunedA1和isPrunedB1都设置为等于假(FALSE)。
数组smrHmvpIbcCandList和变量smrNumHmvpIbcCand导出如下:
[[smr]]HmvpIbcCandList=[[isInSmr?HmvpSmrIbcCandList:]]HmvpIbcCandList (8-906)
[[smr]]NumHmvpIbcCand=[[isInSmr?NumHmvpSmrIbcCand:]]NumHmvpIbcCand(8-907)
对于smrHmvpIbcCandList[hMvpIdx]中的每个候选,索引hMvpIdx=1..[[smr]]NumHmvpIbcCand,重复以下有序步骤,直到numCurrCand等于MaxNumMergeCand:
1.变量sameMotion导出如下:
-如果对于任何运动矢量候选N以下所有条件为真,其中N为A1或B1,则sameMotion和isPrunedN都设置为等于真:
-hMvpIdx小于或等于1。
-候选[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx]等于运动矢量候选N。
-isPrunedN等于假。
-否则,sameMotion设置为等于假。
2.当sameMotion等于假时,将候选[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx]添加到运动矢量候选列表,如下:
mvCandList[numCurrCand++]=[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx](8-908)
5.2实施例#2
当块尺寸满足某些条件(诸如Width*Height<K)时,移除IBC运动列表构建过程中空域Merge/AMVP候选的检查。在以下描述中,阈值K可以预定义,如16。
7.4.8.2编解码树单元语义
CTU是编解码树结构的根节点。
[[指定(x,y)处的样点是否位于共享Merge候选列表区域内部的数组IsInSmr[x][y]初始化如下,其中x=0..CtbSizeY–1且y=0..CtbSizeY-1:
IsInSmr[x][y]=FALSE (7-96)]]
7.4.8.4编解码树语义
[[当以下所有条件为真时,IsInSmr[x][y]设置为等于真,其中x=x0..x0+cbWidth–1且y=y0..y0+cbHeight-1。
-IsInSmr[x0][y0]等于假
-cbWidth*cbHeight/4小于32
-treeType不等于DUAL_TREE_CHROMA
当IsInSmr[x0][y0]等于真时。数组SmrX[x][y]、SmrY[x][y]、SmrW[x][y]和SmrH[x][y]导出如下,其中x=x0..x0+cbWidth–1且y=y0..y0+cbHeight–1:
SmrX[x][y]=x0 (7-98)
SmrY[x][y]=y0 (7-99)
SmrW[x][y]=cbWidth (7-100)
SmrH[x][y]=cbHeight (7-101)
当以下所有条件为真时,IsInSmr[x][y]设置为等于真,其中x=x0..x0+cbWidth–1且y=y0..y0+cbHeight–1:
-IsInSmr[x0][y0]等于假
-以下条件中的一个为真:
-mtt_split_cu_binary_flag等于1,并且cbWidth*cbHeight/2小于32
-mtt_split_cu_binary_flag等于0,并且cbWidth*cbHeight/4小于32
-treeType不等于DUAL_TREE_CHROMA
当IsInSmr[x0][y0]等于真时。数组SmrX[x][y]、SmrY[x][y]、SmrW[x][y]和SmrH[x][y]导出如下,其中x=x0..x0+cbWidth–1且y=y0..y0+cbHeight–1:
SmrX[x][y]=x0 (7-102)
SmrY[x][y]=y0 (7-103)
SmrW[x][y]=cbWidth (7-104)
SmrH[x][y]=cbHeight (7-105)]]
7.4.8.5编解码单元语义
[[当以下所有条件为真时,通过将NumHmvpSmrIbcCand设置为等于NumHmvpIbcCand,并将HmvpSmrIbcCandList[i]设置为等于HmvpIbcCandList[i],其中i=0...NumHmvpIbcCand–1,来更新用于共享Merge候选列表区域的基于历史的运动矢量预测符列表:
IsInSmr[x0][y0]等于真。
SmrX[x0][y0]等于x0。
SmrY[x0][y0]等于y0。]]
进行以下分配,其中x=x0..x0+cbWidth–1且y=y0..y0+cbHeight–1:
CbPosX[x][y]=x0 (7-106)
CbPosY[x][y]=y0 (7-107)
CbWidth[x][y]=cbWidth (7-108)
CbHeight[x][y]=cbHeight (7-109)
8.6.2IBC块的运动矢量分量的导出过程
8.6.2.1概述
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度,
此过程的输出是:
-1/16分数样点准确度的亮度运动矢量mvL。
亮度运动矢量mvL导出如下:
-用以下条件调用8.6.2.2节中规定的IBC亮度运动矢量预测的导出过程:亮度位置(xCb,yCb),变量cbWidth和cbHeight作为输入;并且输出是亮度运动矢量mvL。
-当general_merge_flag[xCb][yCb]等于0时,适用以下:
4.变量mvd导出如下:
mvd[0]=MvdL0[xCb][yCb][0] (8-883)
mvd[1]=MvdL0[xCb][yCb][1] (8-884)
5.用以下条件调用8.5.2.14节中规定的运动矢量的取整过程:mvX设置为等于mvL,rightShift设置为等于MvShift+2,并且leftShift设置为等于MvShift+2作为输入;并且取整的mvL作为输出。
6.亮度运动矢量mvL修改如下:
u[0]=(mvL[0]+mvd[0]+218)%218 (8-885)
mvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-886)
u[1]=(mvL[1]+mvd[1]+218)%218 (8-887)
mvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-888)
注1–如上规定的所得到的mvL[0]和mvL[1]的值将始终在-217到217-1的范围内(含端值)。
当smrWidth*smrHeight大于K时,用亮度运动矢量mvL调用8.6.2.6节中规定的基于历史的运动矢量预测符列表的更新过程。
参考块内部的左上位置(xRefTL,yRefTL)和参考块内部的右下位置(xRefBR,yRefBR)导出如下:
(xRefTL,yRefTL)=(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4)) (8-889)
(xRefBR,yRefBR)=(xRefTL+cbWidth-1,yRefTL+cbHeight-1) (8-890)
比特流一致性要求亮度运动矢量mvL应遵循以下约束:
-……
8.6.2.2 IBC亮度运动矢量预测的导出过程
仅当CuPredMode[xCb][yCb]等于MODE_IBC时才调用此过程,其中(xCb,yCb)相对于当前图片的左上亮度样点指定当前亮度编解码块的左上样点。
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度。
此过程的输出是:
-1/16分数样点准确度的亮度运动矢量mvL。
变量xSmr、ySmr、smrWidth、smrHeight和smrNumHmvpIbcCand导出如下:
xSmr=[[IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:]]xCb (8-895)
ySmr=[[IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:]]yCb (8-896)
smrWidth=[[IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:]]cbWidth (8-897)
smrHeight=[[IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:]]cbHeight (8-898)
smrNumHmvpIbcCand=[[IsInSmr[xCb][yCb]?NumHmvpSmrIbcCand:]]NumHmvpIbcCand (8-899)
亮度运动矢量mvL通过以下有序步骤导出:
1.当smrWidth*smrHeight大于K时,用以下条件调用8.6.2.3节中规定的从邻域编解码单元进行空域运动矢量候选的导出过程:亮度编解码块位置(xCb,yCb)设置为等于(xSmr,ySmr),亮度编解码块宽度cbWidth和亮度编解码块高度cbHeight设置为等于smrWidth和smrHeight作为输入;并且输出是可用性标志availableFlagA1、availableFlagB1和运动矢量mvA1和mvB1。
2.当smrWidth*smrHeight大于K时,运动矢量候选列表mvCandList构建如下:
3.当smrWidth*smrHeight大于K时,变量numCurrCand设置为等于mvCandList中Merge候选的数量。
4.当numCurrCand小于MaxNumMergeCandand且smrNumHmvpIbcCand大于0时,用以下条件调用8.6.2.4中规定的基于IBC历史的运动矢量候选的导出过程:mvCandList,isInSmr设置为等于IsInSmr[xCb][yCb]以及numCurrCand作为输入;并且修改的mvCandList和numCurrCand作为输出。
5.当numCurrCand小于MaxNumMergeCand时,适用以下,直到numCurrCand等于MaxNumMergeCand:
1.mvCandList[numCurrCand][0]设置为等于0。
2.mvCandList[numCurrCand][1]设置为等于0。
3.numCurrCand增加1。
6.变量mvIdx导出如下:
mvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb] (8-901)
7.进行以下分配:
mvL[0]=mergeCandList[mvIdx][0] (8-902)
mvL[1]=mergeCandList[mvIdx][1] (8-903)
8.6.2.4基于IBC历史的运动矢量候选的导出过程
此过程的输入是:
-运动矢量候选列表mvCandList,
-列表中可用的运动矢量候选的数量numCurrCand。
此过程的输出是:
-修改的运动矢量候选列表mvCandList,
-[[变量isInSmr,指定当前编解码单元是否在共享Merge候选区域内部]]
-列表中修改的运动矢量候选的数量numCurrCand。
变量isPrunedA1和isPrunedB1都设置为等于假。
数组smrHmvpIbcCandList和变量smrNumHmvpIbcCand导出如下:
[[smr]]HmvpIbcCandList=[[isInSmr?HmvpSmrIbcCandList:]]HmvpIbcCandList (8-906)
[[smr]]NumHmvpIbcCand=[[isInSmr?NumHmvpSmrIbcCand:]]NumHmvpIbcCand(8-907)
对于smrHmvpIbcCandList[hMvpIdx]中的每个候选,其中索引hMvpIdx=1..[[smr]]NumHmvpIbcCand,重复以下有序步骤,直到numCurrCand等于MaxNumMergeCand:
1.变量sameMotion导出如下:
-如果smrWidth*smrHeight大于K,对于任何运动矢量候选N以下所有条件为真,其中N为A1或B1,则sameMotion和isPrunedN都设置为等于真:
-hMvpIdx小于或等于1。
-候选[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx]等于运动矢量候选N。
-isPrunedN等于假。
-否则,sameMotion设置为等于假。
2.当sameMotion等于假时,将候选[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx]添加到运动矢量候选列表,如下:
mvCandList[numCurrCand++]=[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx] (8-908)
5.3实施例#3
当块尺寸满足某些条件(诸如当前块在共享节点下,以及不更新HMVP表)时,移除IBC运动列表构建过程中空域Merge/AMVP候选的检查。
8.6.2.2 IBC亮度运动矢量预测的导出过程
仅当CuPredMode[xCb][yCb]等于MODE_IBC时才调用此过程,其中(xCb,yCb)相对于当前图片的左上亮度样点指定了当前亮度编解码块的左上样点。
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度。
此过程的输出是:
-1/16分数样点准确度的亮度运动矢量mvL。
变量xSmr、ySmr、smrWidth、smrHeight和smrNumHmvpIbcCand导出如下:
xSmr=[[IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:]]xCb (8-895)
ySmr=[[IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:]]yCb (8-896)
smrWidth=[[IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:]]cbWidth (8-897)
smrHeight=[[IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:]]cbHeight (8-898)
smrNumHmvpIbcCand=[[IsInSmr[xCb][yCb]?NumHmvpSmrIbcCand:]]NumHmvpIbcCand (8-899)
亮度运动矢量mvL通过以下有序步骤导出:
1.当IsInSmr[xCb][yCb]为假时,用以下条件调用8.6.2.3节中规定的从邻域编解码单元进行空域运动矢量候选的导出过程:亮度编解码块位置(xCb,yCb)设置为等于(xSmr,ySmr),亮度编解码块宽度cbWidth和亮度编解码块高度cbHeight设置为等于smrWidth和smrHeight作为输入;并且输出是可用性标志availableFlagA1、availableFlagB1和运动矢量mvA1和mvB1。
2.当IsInSmr[xCb][yCb]为假时,运动矢量候选列表mvCandList构建如下:
3.当IsInSmr[xCb][yCb]为假时,变量numCurrCand设置为等于mvCandList中Merge候选的数量。
4.当numCurrCand小于MaxNumMergeCand且smrNumHmvpIbcCand大于0时,用以下条件调用8.6.2.4中规定的基于IBC历史的运动矢量候选的导出过程:mvCandList,isInSmr设置为等于IsInSmr[xCb][yCb]以及numCurrCand作为输入;并且修改的mvCandList和numCurrCand作为输出。
5.当numCurrCand小于MaxNumMergeCand时,适用以下,直到numCurrCand等于MaxNumMergeCand:
1.mvCandList[numCurrCand][0]设置为等于0。
2.mvCandList[numCurrCand][1]设置为等于0。
3.numCurrCand增加1。
6.变量mvIdx导出如下:
mvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb] (8-901)
7.进行以下分配:
mvL[0]=mergeCandList[mvIdx][0] (8-902)
mvL[1]=mergeCandList[mvIdx][1] (8-903)
8.6.2.4基于IBC历史的运动矢量候选的导出过程
此过程的输入是:
-运动矢量候选列表mvCandList,
-列表中可用的运动矢量候选的数量numCurrCand。
此过程的输出是:
-修改的运动矢量候选列表mvCandList,
-[[变量isInSmr,指定当前编解码单元是否在共享Merge候选区域内部]]
-列表中修改的运动矢量候选的数量numCurrCand。
变量isPrunedA1和isPrunedB1都设置为等于假(FALSE)。
数组smrHmvpIbcCandList和变量smrNumHmvpIbcCand导出如下:
[[smr]]HmvpIbcCandList=[[isInSmr?HmvpSmrIbcCandList:]]HmvpIbcCandList (8-906)
[[smr]]NumHmvpIbcCand=[[isInSmr?NumHmvpSmrIbcCand:]]NumHmvpIbcCand(8-907)
对于smrHmvpIbcCandList[hMvpIdx]中的每个候选,其中索引hMvpIdx=1..[[smr]]NumHmvpIbcCand,重复以下有序步骤,直到numCurrCand等于MaxNumMergeCand:
1.变量sameMotion导出如下:
-如果isInSmr为假并且对于任何运动矢量候选N以下所有条件为真,其中N为A1或B1,则sameMotion和isPrunedN都设置为等于真:
-hMvpIdx小于或等于1。
-候选[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx]等于运动矢量候选N。
-isPrunedN等于假。
-否则,sameMotion设置为等于假。
2.当sameMotion等于假时,将候选[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx]添加到运动矢量候选列表,如下:
mvCandList[numCurrCand++]=[[smr]]HmvpIbcCandList[[[smr]]NumHmvpIbcCand-hMvpIdx] (8-908)
8.6.2 IBC块的运动矢量分量的导出过程
8.6.2.1概述
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度,
此过程的输出是:
-1/16分数样点准确度的亮度运动矢量mvL。
亮度运动矢量mvL导出如下:
-用以下条件调用8.6.2.2节中规定的IBC亮度运动矢量预测的导出过程:亮度位置(xCb,yCb),变量cbWidth和cbHeight作为输入;并且输出是亮度运动矢量mvL。
-当general_merge_flag[xCb][yCb]等于0时,适用以下:
7.变量mvd导出如下:
mvd[0]=MvdL0[xCb][yCb][0] (8-883)
mvd[1]=MvdL0[xCb][yCb][1] (8-884)
8.用以下条件调用8.5.2.14节中规定的运动矢量的取整过程:mvX设置为等于mvL,rightShift设置为等于MvShift+2,并且leftShift设置为等于MvShift+2作为输入;并且取整的mvL作为输出。
9.亮度运动矢量mvL修改如下:
u[0]=(mvL[0]+mvd[0]+218)%218 (8-885)
mvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-886)
u[1]=(mvL[1]+mvd[1]+218)%218 (8-887)
mvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-888)
注1–如上规定的所得到的mvL[0]和mvL[1]的值将始终在-217到217-1的范围内(含端值)。
当IsInSmr[xCb][yCb]为假时,用亮度运动矢量mvL调用8.6.2.6节中规定的基于历史的运动矢量预测符列表的更新过程。
参考块内部的左上位置(xRefTL,yRefTL)和参考块内部的右下位置(xRefBR,yRefBR)导出如下:
(xRefTL,yRefTL)=(xCb+(mvL[0]>>4),yCb+(mvL[1]>>4)) (8-889)
(xRefBR,yRefBR)=(xRefTL+cbWidth-1,yRefTL+cbHeight-1) (8-890)
比特流一致性要求亮度运动矢量mvL应遵循以下约束:
-……
5.4实施例#4
当块尺寸满足某些条件(诸如Width*Height<=K;或者Width=N,Height=4,并且左方邻域块为4×4并以IBC模式编解码;或者Width=4,Height=N,并且上方邻域块为4x4并以IBC模式编解码;以及不更新HMVP表)时,移除IBC运动列表构建过程中空域Merge/AMVP候选的检查。在以下描述中,可以预定义阈值K,诸如16,可以预定义N,诸如8。
7.4.9.2编解码树单元语义
CTU是编解码树结构的根节点。
指定(x,y)处的样点是否可用于6.4.4节中规定的邻域块可用性的导出过程的数组IsAvailable[cIdx][x][y]被初始化如下,其中cIdx=0..2,x=0..CtbSizeY–1且y=0..CtbSizeY-1:
IsAvailable[cIdx][x][y]=FALSE (7-123)
[[指定(x,y)处的样点是否位于共享Merge候选列表区域内部的数组IsInSmr[x][y]被初始化如下,其中x=0..CtbSizeY–1且y=0..CtbSizeY-1:
IsInSmr[x][y]=FALSE (7-124)]]
7.4.9.4编解码树语义
[[当以下所有条件为真时,IsInSmr[x][y]设置为等于真,其中x=x0..x0+cbWidth–1且y=y0..y0+cbHeight–1:
-IsInSmr[x0][y0]等于假
-cbWidth*cbHeight/4小于32
-treeType不等于DUAL_TREE_CHROMA
当IsInSmr[x0][y0]等于真时。数组SmrX[x][y]、SmrY[x][y]、SmrW[x][y]和SmrH[x][y]导出如下,其中x=x0..x0+cbWidth–1且y=y0..y0+cbHeight–1:
SmrX[x][y]=x0 (7-126)
SmrY[x][y]=y0 (7-127)
SmrW[x][y]=cbWidth (7-128)
SmrH[x][y]=cbHeight (7-129)]]
8.6.2 IBC块的块矢量分量的导出过程
8.6.2.1概述
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度,
此过程的输出是:
-1/16分数样点准确度的亮度块矢量bvL。
亮度块矢量bvL导出如下:
-用以下条件调用8.6.2.2节中规定的IBC亮度块矢量预测的导出过程:亮度位置(xCb,yCb),变量cbWidth和cbHeight作为输入;并且输出是亮度块矢量bvL。
-当general_merge_flag[xCb][yCb]等于0时,适用以下:
1.变量bvd导出如下:
bvd[0]=MvdL0[xCb][yCb][0] (8-900)
bvd[1]=MvdL0[xCb][yCb][1] (8-901)
2.用以下条件调用8.5.2.14节中规定的运动矢量的取整过程:mvX设置为等于bvL,rightShift设置为等于AmvrShift,并且leftShift设置为等于AmvrShift作为输入;并且取整的bvL作为输出。
3.亮度块矢量bvL修改如下:
u[0]=(bvL[0]+bvd[0]+218)%218 (8-902)
bvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-903)
u[1]=(bvL[1]+bvd[1]+218)%218 (8-904)
bvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-905)
注1–如上规定的所得到的bvL[0]和bvL[1]的值将始终在-217到217-1的范围内(含端值)。
变量IslgrBlk设置为(cbWidth×cbHeight大于K?真:假)。
如果IsLgrBlk为真,则当CbWidth等于N并且CbHeight等于4并且左方邻域块为4x4
并以IBC模式编解码时,IsLgrBlk设置为假。
如果IsLgrBlk为真,则当CbWidth等于4并且CbHeight等于N并且上方邻域块为4x4
并以IBC模式编解码时,IsLgrBlk设置为假。
(或可替代地:
变量IslgrBlk设置为(cbWidth×cbHeight大于K?真:假)。
如果IsLgrBlk为真,则当CbWidth等于N并且CbHeight等于4并且左方邻域块为4x4
并以IBC模式编解码时,IsLgrBlk设置为假。
如果IsLgrBlk为真,则当CbWidth等于4并且CbHeight等于N并且上方邻域块可用
并为4x4并以IBC模式编解码时,IsLgrBlk设置为假。)
当IsLgrBlk为真,[[IsInSmr[xCb][yCb]等于假]]时,用亮度块矢量bvL调用8.6.2.6节中规定的基于历史的块矢量预测符列表的更新过程。
比特流一致性要求亮度块矢量bvL应遵循以下约束:
-CtbSizeY大于或等于((yCb+(bvL[1]>>4))&(CtbSizeY-1))+cbHeight。
-IbcVirBuf[0][(x+(bvL[0]>>4))&(IbcVirBufWidth-1)][(y+(bvL[1]>>4))&(CtbSizeY-1)]不应等于-1,其中x=xCb..xCb+cbWidth-1且y=yCb..yCb+cbHeight–1。
8.6.2.2 IBC亮度块矢量预测的导出过程
仅当CuPredMode[0][xCb][yCb]等于MODE_IBC时才调用此过程,其中(xCb,yCb)相对于当前图片的左上亮度样点指定当前亮度编解码块的左上样点。
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度。
此过程的输出是:
-1/16分数样点准确度的亮度块矢量bvL。
[[变量xSmr、ySmr、smrWidth和smrHeight导出如下:
xSmr=IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:xCb (8-906)
ySmr=IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:yCb (8-907)
smrWidth=IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:cbWidth (8-908)
smrHeight=IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:cbHeight (8-909)]]
变量IslgrBlk设置为(cbWidth×cbHeight大于K?真:假)。
如果IsLgrBlk为真,则当CbWidth等于N并且CbHeight等于4并且左方邻域块为4x4
并以IBC模式编解码时,IsLgrBlk设置为假。
如果IsLgrBlk为真,则当CbWidth等于4并且CbHeight等于N并且上方邻域块为4x4
并以IBC模式编解码时,IsLgrBlk设置为假。
(或可替代地:
变量IslgrBlk设置为(cbWidth×cbHeight大于K?真:假)。
如果IsLgrBlk为真,则当CbWidth等于N并且CbHeight等于4并且左方邻域块为4x4
并以IBC模式编解码时,IsLgrBlk设置为假。
如果IsLgrBlk为真,则当CbWidth等于4并且CbHeight等于N并且上方邻域块可用
并为4x4并以IBC模式编解码时,IsLgrBlk设置为假。)
亮度块矢量bvL通过以下有序步骤导出:
1.当IslgrBlk为真时,用以下条件调用8.6.2.3节中规定的从邻域编解码单元进行空域块矢量候选的导出过程:亮度编解码块位置(xCb,yCb)设置为等于(xCb,yCb[[xSmr,ySmr]]),亮度编解码块宽度cbWidth和亮度编解码块高度cbHeight设置为等于[[smr]]CbWidth和[[smr]]CbHeight作为输入;并且输出是可用性标志availableFlagA1、availableFlagB1和块矢量bvA1和bvB1。
2.当IslgrBlk为真时,块矢量候选列表bvCandList构建如下:
3.当IslgrBlk为真时,变量numCurrCand设置为等于bvCandList中Merge候选的数量。
4.当numCurrCand小于MaxNumIbcMergeCand且NumHmvpIbcCand大于0时,用以下条件调用8.6.2.4中规定的基于IBC历史的块矢量候选的导出过程:bvCandList,和IsLgrBlk,以及numCurrCand作为输入;并且修改的bvCandList和numCurrCand作为输出。
5.当numCurrCand小于MaxNumIbcMergeCand时,适用以下,直到numCurrCand等于MaxNumIbcMergeCand:
1.bvCandList[numCurrCand][0]设置为等于0。
2.bvCandList[numCurrCand][1]设置为等于0。
3.numCurrCand增加1。
6.变量bvIdx导出如下:
bvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb] (8-911)
7.进行以下分配:
bvL[0]=bvCandList[mvIdx][0] (8-912)
bvL[1]=bvCandList[mvIdx][1] (8-913)
8.6.2.3IBC空域块矢量候选的导出过程
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度。
此过程的输出是:
-邻域编解码单元的可用性标志availableFlagA1和availableFlagB1,
-邻域编解码单元的1/16分数样点准确度的块矢量bvA1和bvB1,
对于availableFlagA1和mvA1的导出,适用以下:
-邻域亮度编解码块内部的亮度位置(xNbA1,yNbA1)设置为等于(xCb-1,yCb+cbHeight-1)。
-用以下条件调用6.4.4节中规定的邻域块可用性的导出过程:当前亮度位置(xCurr,yCurr)设置为等于(xCb,yCb),邻域亮度位置(xNbA1,yNbA1),checkPredModeY设置为等于真,并且cIdx设置为等于0作为输入;并且将输出分配给块可用性标志availableA1。
-变量availableFlagA1和bvA1导出如下:
-如果availableA1等于假,则availableFlagA1设置为等于0,并且bvA1的两个分量设置为等于0。
-否则,availableA1设置为等于1,并进行以下分配:
bvA1=MvL0[xNbA1][yNbA1] (8-914)
对于availableFlagB1和bvB1的导出,适用以下:
-邻域亮度编解码块内部的亮度位置(xNbB1,yNbB1)设置为等于(xCb+cbWidth-1,yCb-1)。
-用以下条件调用6.4.4节中规定的邻域块可用性的导出过程:当前亮度位置(xCurr,yCurr)设置为等于(xCb,yCb),邻域亮度位置(xNbB1,yNbB1),checkPredModeY设置为等于真,并且cIdx设置为等于0作为输入;并且将输出分配给块可用性标志availableB1。
-变量availableFlagB1和bvB1导出如下:
-如果以下条件中的一个或多个为真,则availableFlagB1设置为等于0,并且bvB1的两个分量设置为等于0:
-availableB1等于假。
-availableA1等于真并且亮度位置(xNbA1,yNbA1)和(xNbB1,yNbB1)具有相同的块矢量。
-否则,availableFlagB1设置为等于1,并进行以下分配:
bvB1=MvL0[xNbB1][yNbB1] (8-915)
8.6.2.4基于IBC历史的块矢量候选的导出过程
此过程的输入是:
-块矢量候选列表bvCandList,
-[[变量isInSmr,指定当前编解码单元是否在共享Merge候选区域内部]]
指示非小块的变量IslgrBlk,
-列表中可用的块矢量候选的数量numCurrCand。
此过程的输出是:
-修改的块矢量候选列表bvCandList,
-列表中修改的运动矢量候选的数量numCurrCand。
变量isPrunedA1和isPrunedB1都设置为等于假。
对于[[smr]]HmvpIbcCandList[hMvpIdx]中的每个候选,其中索引hMvpIdx=1.[[smr]]NumHmvpIbcCand,重复以下有序步骤,直到numCurrCand等于MaxNumIbcMergeCand:
1.变量sameMotion导出如下:
-如果IsLgrBlk为真并且对于任何块矢量候选N以下所有条件为真,其中N为A1或B1,则sameMotion和isPrunedN都设置为等于真:
-hMvpIdx小于或等于1。
-候选HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]等于块矢量候选N。
-isPrunedN等于假。
-否则,sameMotion设置为等于假。
2.当sameMotion等于假时,将候选HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]添加到块矢量候选列表,如下:
bvCandList[numCurrCand++]=HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx](8-916)
5.5实施例#5
当块尺寸满足某些条件(诸如Width=N,Height=4,并且左方邻域块为4×4并以IBC模式编解码;或者Width=4,Height=N,并且上方邻域块为4×4并以IBC模式编解码)时,移除IBC运动列表构建过程中空域Merge/AMVP候选的检查。在以下描述中,可以预定义N,如4或8。
7.4.9.2编解码树单元语义
CTU是编解码树结构的根节点。
指定(x,y)处的样点是否可用于6.4.4节中规定的邻域块可用性的导出过程的数组IsAvailable[cIdx][x][y]被初始化如下,其中cIdx=0..2,x=0..CtbSizeY–1且y=0..CtbSizeY-1:
IsAvailable[cIdx][x][y]=FALSE (7-123)
[[指定(x,y)处的样点是否位于共享Merge候选列表区域内部的数组IsInSmr[x][y]被初始化如下,其中x=0..CtbSizeY–1且y=0..CtbSizeY-1:
IsInSmr[x][y]=FALSE (7-124)]]
7.4.9.4编解码树语义
[[当以下所有条件为真时,IsInSmr[x][y]设置为等于真,其中x=x0..x0+cbWidth–1且y=y0..y0+cbHeight–1:
-IsInSmr[x0][y0]等于假
-cbWidth*cbHeight/4小于32
-treeType不等于DUAL_TREE_CHROMA
当IsInSmr[x0][y0]等于真时。数组SmrX[x][y]、SmrY[x][y]、SmrW[x][y]和SmrH[x][y]导出如下,其中x=x0..x0+cbWidth–1且y=y0..y0+cbHeight–1:
SmrX[x][y]=x0 (7-126)
SmrY[x][y]=y0 (7-127)
SmrW[x][y]=cbWidth (7-128)
SmrH[x][y]=cbHeight (7-129)]]
8.6.2 IBC块的块矢量分量的导出过程
8.6.2.1概述
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度,
此过程的输出是:
-1/16分数样点准确度的亮度块矢量bvL。
亮度块矢量mvL导出如下:
-用以下条件调用8.6.2.2节中规定的IBC亮度块矢量预测的导出过程:亮度位置(xCb,yCb),变量cbWidth和cbHeight作为输入;并且输出是亮度块矢量bvL。
-当general_merge_flag[xCb][yCb]等于0时,适用以下:
1.变量bvd导出如下:
bvd[0]=MvdL0[xCb][yCb][0] (8-900)
bvd[1]=MvdL0[xCb][yCb][1] (8-901)
2.用以下条件调用8.5.2.14节中规定的运动矢量的取整过程:mvX设置为等于bvL,rightShift设置为等于AmvrShift,并且leftShift设置为等于AmvrShift作为输入;并且取整的bvL作为输出。
3.亮度块矢量bvL修改如下:
u[0]=(bvL[0]+bvd[0]+218)%218 (8-902)
bvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-903)
u[1]=(bvL[1]+bvd[1]+218)%218 (8-904)
bvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-905)
注1–如上规定的所得到的bvL[0]和bvL[1]的值将始终在-217到217-1的范围内(含端值)。
当以下条件中的一个为真时,变量IslgrBlk设置为真。
当CbWidth等于N并且CbHeight等于4并且左方邻域块为4x4并以IBC模式编解码
时。
当CbWidth等于4并且CbHeight等于N并且上方邻域块为4x4并以IBC模式编解码
时。
否则,IsLgrBlk设置为假。
(或可替代地:
变量IslgrBlk设置为(cbWidth×cbHeight大于16?真:假),并且进一步检查以下:
如果IsLgrBlk为真,则当CbWidth等于N并且CbHeight等于4并且左方邻域块为4x4
并以IBC模式编解码时,IsLgrBlk设置为假。
如果IsLgrBlk为真,则当CbWidth等于4并且CbHeight等于N并且上方邻域块为4x4
并以IBC模式编解码时,IsLgrBlk设置为假。)
当IsLgrBlk为真,[[IsInSmr[xCb][yCb]等于假]]时,用亮度块矢量bvL调用8.6.2.6节中规定的基于历史的块矢量预测符列表的更新过程。
比特流一致性要求亮度块矢量bvL应遵循以下约束:
-CtbSizeY大于或等于((yCb+(bvL[1]>>4))&(CtbSizeY-1))+cbHeight。
-IbcVirBuf[0][(x+(bvL[0]>>4))&(IbcVirBufWidth-1)][(y+(bvL[1]>>4))&(CtbSizeY-1)]不应等于-1,其中x=xCb..xCb+cbWidth-1且y=yCb..yCb+cbHeight–1。
8.6.2.2 IBC亮度块矢量预测的导出过程
仅当CuPredMode[0][xCb][yCb]等于MODE_IBC时才调用此过程,其中(xCb,yCb)相对于当前图片的左上亮度样点指定当前亮度编解码块的左上样点。
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度。
此过程的输出是:
-1/16分数样点准确度的亮度块矢量bvL。
[[变量xSmr、ySmr、smrWidth和smrHeight导出如下:
xSmr=IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:xCb (8-906)
ySmr=IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:yCb (8-907)
smrWidth=IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:cbWidth (8-908)
smrHeight=IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:cbHeight (8-909)]]
当以下条件中的一个为真时,变量IslgrBlk设置为真。
当CbWidth等于N并且CbHeight等于4并且左方邻域块为4x4并以IBC模式编解码
时。
当CbWidth等于4并且CbHeight等于N并且上方邻域块为4x4并以IBC模式编解码
时。
否则,IsLgrBlk设置为假。
(或可替代地:
变量IslgrBlk设置为(cbWidth×cbHeight大于16?真:假),并且进一步检查以下:
如果IsLgrBlk为真,则当CbWidth等于N并且CbHeight等于4并且左方邻域块为4x4
并以IBC模式编解码时,IsLgrBlk设置为假。
如果IsLgrBlk为真,则当CbWidth等于4并且CbHeight等于N并且上方邻域块为4x4
并以IBC模式编解码时,IsLgrBlk设置为假。)
亮度块矢量bvL通过以下有序步骤导出:
1.当IslgrBlk为真时,用以下条件调用8.6.2.3节中规定的从邻域编解码单元进行空域块矢量候选的导出过程:作为输入,亮度编解码块位置(xCb,yCb)设置为等于(xCb, yCb[[xSmr,ySmr]]),亮度编解码块宽度cbWidth和亮度编解码块高度cbHeight设置为等于[[smr]]CbWidth和[[smr]]CbHeight;并且输出是可用性标志availableFlagA1、availableFlagB1和块矢量bvA1和bvB1。
2.当IslgrBlk为真时,块矢量候选列表bvCandList构建如下:
3.当IslgrBlk为真时,变量numCurrCand设置为等于bvCandList中Merge候选的数量。
4.当numCurrCand小于MaxNumIbcMergeCand且NumHmvpIbcCand大于0时,用以下条件调用8.6.2.4中规定的基于IBC历史的块矢量候选的导出过程:bvCandList,和IsLgrBlk,以及numCurrCand作为输入;并且修改的bvCandList和numCurrCand作为输出。
5.当numCurrCand小于MaxNumIbcMergeCand时,适用以下,直到numCurrCand等于MaxNumIbcMergeCand:
1.bvCandList[numCurrCand][0]设置为等于0。
2.bvCandList[numCurrCand][1]设置为等于0。
3.numCurrCand增加1。
6.变量bvIdx导出如下:
bvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb] (8-911)
7.进行以下分配:
bvL[0]=bvCandList[mvIdx][0] (8-912)
bvL[1]=bvCandList[mvIdx][1] (8-913)
8.6.2.3 IBC空域块矢量候选的导出过程
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度。
此过程的输出是:
-邻域编解码单元的可用性标志availableFlagA1和availableFlagB1,
-邻域编解码单元的1/16分数样点准确度的块矢量bvA1和bvB1,
对于availableFlagA1和mvA1的导出,适用以下:
-邻域亮度编解码块内部的亮度位置(xNbA1,yNbA1)设置为等于(xCb-1,yCb+cbHeight-1)。
-用以下条件调用6.4.4节中规定的邻域块可用性的导出过程:当前亮度位置(xCurr,yCurr)设置为等于(xCb,yCb),邻域亮度位置(xNbA1,yNbA1),checkPredModeY设置为等于真,并且cIdx设置为等于0作为输入;并且将输出分配给块可用性标志availableA1。
-变量availableFlagA1和bvA1导出如下:
-如果availableA1等于假,则availableFlagA1设置为等于0,并且bvA1的两个分量设置为等于0。
-否则,availableA1设置为等于1,并进行以下分配:
bvA1=MvL0[xNbA1][yNbA1] (8-914)
对于availableFlagB1和bvB1的导出,适用以下:
-邻域亮度编解码块内部的亮度位置(xNbB1,yNbB1)设置为等于(xCb+cbWidth-1,yCb-1)。
-用以下条件调用6.4.4节中规定的邻域块可用性的导出过程:当前亮度位置(xCurr,yCurr)设置为等于(xCb,yCb),邻域亮度位置(xNbB1,yNbB1),checkPredModeY设置为等于真,并且cIdx设置为等于0作为输入;并且将输出分配给块可用性标志availableB1。
-变量availableFlagB1和bvB1导出如下:
-如果以下条件中的一个或多个为真,则availableFlagB1设置为等于0,并且bvB1的两个分量设置为等于0:
-availableB1等于假。
-availableA1等于真并且亮度位置(xNbA1,yNbA1)和(xNbB1,yNbB1)具有相同的块矢量。
-否则,availableFlagB1设置为等于1,并进行以下分配:
bvB1=MvL0[xNbB1][yNbB1] (8-915)
8.6.2.4基于IBC历史的块矢量候选的导出过程
此过程的输入是:
-块矢量候选列表bvCandList,
-[[变量isInSmr,指定当前编解码单元是否在共享Merge候选区域内部]]
指示非小块的变量IslgrBlk,
-列表中可用的块矢量候选的数量numCurrCand。
此过程的输出是:
-修改的块矢量候选列表bvCandList,
-列表中修改的运动矢量候选的数量numCurrCand。
变量isPrunedA1和isPrunedB1都设置为等于假。
对于[[smr]]HmvpIbcCandList[hMvpIdx]中的每个候选,其中索引hMvpIdx=1.[[smr]]NumHmvpIbcCand,重复以下有序步骤,直到numCurrCand等于MaxNumIbcMergeCand:
1.变量sameMotion导出如下:
-如果IsLgrBlk为真并且对于任何块矢量候选N以下所有条件为真,其中N为A1或B1,则sameMotion和isPrunedN都设置为等于真:
-hMvpIdx小于或等于1。
-候选HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]等于块矢量候选N。
-isPrunedN等于假。
-否则,sameMotion设置为等于假。
2.当sameMotion等于假时,将候选HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]添加到块矢量候选列表,如下:
bvCandList[numCurrCand++]=HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx](8-916)
5.6实施例#6
当块尺寸满足某些条件(诸如,Width*Height<=K并且左方邻域块或上方邻域块为4×4并以IBC模式编解码)时,移除IBC运动列表构建过程中空域Merge/AMVP候选的检查。在以下描述中,可以预定义阈值K,如16或32。
7.4.9.2编解码树单元语义
CTU是编解码树结构的根节点。
指定(x,y)处的样点是否可用于6.4.4节中规定的邻域块可用性的导出过程的数组IsAvailable[cIdx][x][y]被初始化如下,其中cIdx=0..2,x=0..CtbSizeY–1且y=0..CtbSizeY-1:
IsAvailable[cIdx][x][y]=FALSE (7-123)
[[指定(x,y)处的样点是否位于共享Merge候选列表区域内部的数组IsInSmr[x][y]被初始化如下,其中x=0..CtbSizeY–1且y=0..CtbSizeY-1:
IsInSmr[x][y]=FALSE (7-124)]]
7.4.9.4编解码树语义
[[当以下所有条件为真时,IsInSmr[x][y]设置为等于真,其中x=x0..x0+cbWidth–1且y=y0..y0+cbHeight–1:
-IsInSmr[x0][y0]等于假
-cbWidth*cbHeight/4小于32
-treeType不等于DUAL_TREE_CHROMA
当IsInSmr[x0][y0]等于真时。数组SmrX[x][y]、SmrY[x][y]、SmrW[x][y]和SmrH[x][y]导出如下,其中x=x0..x0+cbWidth–1且y=y0..y0+cbHeight–1:
SmrX[x][y]=x0 (7-126)
SmrY[x][y]=y0 (7-127)
SmrW[x][y]=cbWidth (7-128)
SmrH[x][y]=cbHeight (7-129)]]
8.6.2 IBC块的块矢量分量的导出过程
8.6.2.1概述
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度,
此过程的输出是:
-1/16分数样点准确度的亮度块矢量bvL。
亮度块矢量mvL导出如下:
-用以下条件调用8.6.2.2节中规定的IBC亮度块矢量预测的导出过程:亮度位置(xCb,yCb),变量cbWidth和cbHeight作为输入;并且输出是亮度块矢量bvL。
-当general_merge_flag[xCb][yCb]等于0时,适用以下:
1.变量bvd导出如下:
bvd[0]=MvdL0[xCb][yCb][0] (8-900)
bvd[1]=MvdL0[xCb][yCb][1] (8-901)
2.用以下条件调用8.5.2.14节中规定的运动矢量的取整过程:mvX设置为等于bvL,rightShift设置为等于AmvrShift,并且leftShift设置为等于AmvrShift作为输入;并且取整的bvL作为输出。
3.亮度块矢量bvL修改如下:
u[0]=(bvL[0]+bvd[0]+218)%218 (8-902)
bvL[0]=(u[0]>=217)?(u[0]-218):u[0] (8-903)
u[1]=(bvL[1]+bvd[1]+218)%218 (8-904)
bvL[1]=(u[1]>=217)?(u[1]-218):u[1] (8-905)
注1–如上规定的所得到的bvL[0]和bvL[1]的值将始终在-217到217-1的范围内(含端值)。
变量IslgrBlk设置为(cbWidth×cbHeight大于K?真:假)。
如果IsLgrBlk为真,则当左方邻域块为4x4并以IBC模式编解码时,IsLgrBlk设置
为假。
如果IsLgrBlk为真,则当上方邻域块为4x4并以IBC模式编解码时,IsLgrBlk设置
为假。
(或可替代地:
变量IslgrBlk设置为(cbWidth×cbHeight大于K?真:假)。
如果IsLgrBlk为真,则当左方邻域块为4x4并以IBC模式编解码时,IsLgrBlk设置
为假。
如果IsLgrBlk为真,则当上方邻域块与当前块在相同的CTU中并为4x4并以IBC模
式编解码时,IsLgrBlk设置为假。)
当IsLgrBlk为真,[[IsInSmr[xCb][yCb]等于假]]时,用亮度块矢量bvL调用8.6.2.6节中规定的基于历史的块矢量预测符列表的更新过程。
比特流一致性要求亮度块矢量bvL应遵循以下约束:
-CtbSizeY大于或等于((yCb+(bvL[1]>>4))&(CtbSizeY-1))+cbHeight。
-IbcVirBuf[0][(x+(bvL[0]>>4))&(IbcVirBufWidth-1)][(y+(bvL[1]>>4))&(CtbSizeY-1)]不应等于-1,其中x=xCb..xCb+cbWidth-1且y=yCb..yCb+cbHeight–1。
8.6.2.2 IBC亮度块矢量预测的导出过程
仅当CuPredMod[0][xCb][yCb]等于MODE_IBC时才调用此过程,其中(xCb,yCb)相对于当前图片的左上亮度样点指定当前亮度编解码块的左上样点。
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度。
此过程的输出是:
-1/16分数样点准确度的亮度块矢量bvL。
[[变量xSmr、ySmr、smrWidth和smrHeight导出如下:
xSmr=IsInSmr[xCb][yCb]?SmrX[xCb][yCb]:xCb (8-906)
ySmr=IsInSmr[xCb][yCb]?SmrY[xCb][yCb]:yCb (8-907)
smrWidth=IsInSmr[xCb][yCb]?SmrW[xCb][yCb]:cbWidth (8-908)
smrHeight=IsInSmr[xCb][yCb]?SmrH[xCb][yCb]:cbHeight (8-909)]]
变量IslgrBlk设置为(cbWidth×cbHeight大于K?真:假)。
如果IsLgrBlk为真,则当左方邻域块为4x4并以IBC模式编解码时,IsLgrBlk设置
为假。
如果IsLgrBlk为真,则当上方邻域块为4x4并以IBC模式编解码时,IsLgrBlk设置
为假。
(或可替代地:
变量IslgrBlk设置为(cbWidth×cbHeight大于K?真:假)。
如果IsLgrBlk为真,则当左方邻域块为4x4并以IBC模式编解码时,IsLgrBlk设置
为假。
如果IsLgrBlk为真,则当上方邻域块与当前块在相同的CTU中并为4x4并以IBC模
式编解码时,IsLgrBlk设置为假。)
亮度块矢量bvL通过以下有序步骤导出:
1.当IslgrBlk为真时,用以下条件调用8.6.2.3节中规定的从邻域编解码单元进行空域块矢量候选的导出过程:亮度编解码块位置(xCb,yCb)设置为等于(xCb,yCb[[xSmr,ySmr]]),亮度编解码块宽度cbWidth和亮度编解码块高度cbHeight设置为等于[[smr]]CbWidth和[[smr]]CbHeight作为输入;并且输出是可用性标志availableFlagA1、availableFlagB1和块矢量bvA1和bvB1。
2.当IslgrBlk为真时,块矢量候选列表bvCandList构建如下:
3.当IslgrBlk为真时,变量numCurrCand设置为等于bvCandList中Merge候选的数量。
4.当numCurrCand小于MaxNumIbcMergeCand且NumHmvpIbcCand大于0时,用以下条件调用8.6.2.4中规定的基于IBC历史的块矢量候选的导出过程:bvCandList,和IsLgrBlk,以及numCurrCand作为输入;并且修改的bvCandList和numCurrCand作为输出。
5.当numCurrCand小于MaxNumIbcMergeCand时,适用以下,直到numCurrCand等于MaxNumIbcMergeCand:
1.bvCandList[numCurrCand][0]设置为等于0。
2.bvCandList[numCurrCand][1]设置为等于0。
3.numCurrCand增加1。
6.变量bvIdx导出如下:
bvIdx=general_merge_flag[xCb][yCb]?merge_idx[xCb][yCb]:mvp_l0_flag[xCb][yCb] (8-911)
7.进行以下分配:
bvL[0]=bvCandList[mvIdx][0] (8-912)
bvL[1]=bvCandList[mvIdx][1] (8-913)
8.6.2.3 IBC空域块矢量候选的导出过程
此过程的输入是:
-当前亮度编解码块的左上样点相对于当前图片的左上亮度样点的亮度位置(xCb,yCb),
-变量cbWidth,指定亮度样点中当前编解码块的宽度,
-变量cbHeight,指定亮度样点中当前编解码块的高度。
此过程的输出是:
-邻域编解码单元的可用性标志availableFlagA1和availableFlagB1,
-邻域编解码单元的1/16分数样点准确度的块矢量bvA1和bvB1,
对于availableFlagA1和mvA1的导出,适用以下:
-邻域亮度编解码块内部的亮度位置(xNbA1,yNbA1)设置为等于(xCb-1,yCb+cbHeight-1)。
-用以下条件调用6.4.4节中规定的邻域块可用性的导出过程:当前亮度位置(xCurr,yCurr)设置为等于(xCb,yCb),邻域亮度位置(xNbA1,yNbA1),checkPredModeY设置为等于真,并且cIdx设置为等于0作为输入;并且将输出分配给块可用性标志availableA1。
-变量availableFlagA1和bvA1导出如下:
-如果availableA1等于假,则availableFlagA1设置为等于0,并且bvA1的两个分量设置为等于0。
-否则,availableA1设置为等于1,并进行以下分配:
bvA1=MvL0[xNbA1][yNbA1] (8-914)
对于availableFlagB1和bvB1的导出,适用以下:
-邻域亮度编解码块内部的亮度位置(xNbB1,yNbB1)设置为等于(xCb+cbWidth-1,yCb-1)。
-用以下条件调用6.4.4节中规定的邻域块可用性的导出过程:当前亮度位置(xCurr,yCurr)设置为等于(xCb,yCb),邻域亮度位置(xNbB1,yNbB1),checkPredModeY设置为等于真,并且cIdx设置为等于0作为输入;并且将输出分配给块可用性标志availableB1。
-变量availableFlagB1和bvB1导出如下:
-如果以下条件中的一个或多个为真,则availableFlagB1设置为等于0,并且bvB1的两个分量设置为等于0:
-availableB1等于假。
-availableA1等于真并且亮度位置(xNbA1,yNbA1)和(xNbB1,yNbB1)具有相同的块矢量。
-否则,availableFlagB1设置为等于1,并进行以下分配:
bvB1=MvL0[xNbB1][yNbB1] (8-915)
8.6.2.4基于IBC历史的块矢量候选的导出过程
此过程的输入是:
-块矢量候选列表bvCandList,
-[[变量isInSmr,指定当前编解码单元是否在共享Merge候选区域内部]]
指示非小块的变量IslgrBlk,
-列表中可用的块矢量候选的数量numCurrCand。
此过程的输出是:
-修改的块矢量候选列表bvCandList,
-列表中修改的运动矢量候选的数量numCurrCand。
变量isPrunedA1和isPrunedB1都设置为等于假。
对于[[smr]]HmvpIbcCandList[hMvpIdx]中的每个候选,其中索引hMvpIdx=1.[[smr]]NumHmvpIbcCand,重复以下有序步骤,直到numCurrCand等于MaxNumIbcMergeCand:
1.变量sameMotion导出如下:
-如果IsLgrBlk为真并且对于任何块矢量候选N以下所有条件为真,其中N为A1或B1,则sameMotion和isPrunedN都设置为等于真:
-hMvpIdx小于或等于1。
-候选HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]等于块矢量候选N。
-isPrunedN等于假。
-否则,sameMotion设置为等于假。
2.当sameMotion等于假时,将候选HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx]添加到块矢量候选列表,如下:
bvCandList[numCurrCand++]=HmvpIbcCandList[NumHmvpIbcCand-hMvpIdx](8-916)
图22是视频处理装置2200的框图。装置2200可用于实现本文所述的一个或多个方法。装置2200可以被实现在智能手机、平板计算机、计算机、物联网(IoT)接收器等中。装置2200可以包括一个或多个处理器2202、一个或多个存储器2204和视频处理硬件2206。(一个或多个)处理器2202可以被配置为实现本文档所述的一个或多个方法。(一个或多个)存储器2204可用于存储用于实现本文所述的方法和技术的数据和代码。视频处理硬件2206可用于在硬件电路中实现本文所述的一些技术。视频处理硬件2206可以部分或全部地以专用硬件或图像处理单元(GPU)或专业信号处理块的形式包括在(一个或多个)处理器2202内。
图23是视频处理方法2300的示例的流程图。方法2300包括:在操作2302处,确定使用子块帧内块复制(sbIBC)编解码模式。方法2300还包括:在操作2304处,使用sbIBC编解码模式执行转换。
可以使用以下基于条款的描述来描述一些实施例。
以下条款示出了在先前章节中的项目1中讨论的技术的示例实施例。
1.一种视频处理的方法,包括:确定在视频区域中的当前视频块和所述当前视频块的比特流表示之间的转换中使用子块帧内块复制(sbIBC)编解码模式,其中,所述当前视频块被划分成多个子块,并且每个子块基于来自所述视频区域的参考样点进行编解码,其中,所述子块的尺寸基于划分规则,并使用所述sbIBC编解码模式对所述多个子块执行所述转换。
2.根据条款1所述的方法,其中,所述当前视频块是MxN块,其中,M和N是整数,并且其中,所述划分规则指定每个子块具有相同的尺寸。
3.根据条款1所述的方法,其中,所述比特流表示包括指示所述子块的划分规则或尺寸的语法元素。
4.根据条款1-3中任一项所述的方法,其中,取决于所述当前视频块的颜色分量,所述划分规则指定所述子块的尺寸。
5.根据条款1-4中任一项所述的方法,其中,第一颜色分量的子块可以从对应于所述当前视频块的第二颜色分量的子块导出所述第一颜色分量的子块的运动矢量信息。
以下条款示出了在先前章节中的项目2和6中讨论的技术的示例实施例。
1.一种视频处理的方法,包括:确定在视频区域中的当前视频块和所述当前视频块的比特流表示之间的转换中使用子块帧内块复制(sbIBC)编解码模式,其中,所述当前视频块被划分成多个子块,并且每个子块基于来自所述视频区域的参考样点进行编解码,并使用sbIBC编解码模式对所述多个子块执行所述转换,其中,所述转换包括:确定给定子块的初始化运动矢量(initMV),从所述initMV识别参考块,以及使用所述参考块的MV信息导出所述给定子块的运动矢量(MV)信息。
2.根据条款1所述的方法,其中,所述确定所述initMV包括从所述给定子块的一个或多个邻域块确定所述initMV。
3.根据条款2所述的方法,其中,所述一个或多个邻域块按顺序检查。
4.根据条款1所述的方法,其中,所述确定所述initMV包括从运动候选列表导出所述initMV。
5.根据条款1-4中任一项所述的方法,其中,所述识别所述参考块包括将所述initMV转换成一个像素的精度以及基于所述转换的initMV识别所述参考块。
6.根据条款1-4中任一项所述的方法,其中,所述识别所述参考块包括:将所述initMV应用于所述给定块内的偏移位置,其中,所述偏移位置表示为与所述给定子块的预先确定的位置的偏移(offsetX,offsetY)。
7.根据条款1-6中任一项所述的方法,其中,所述导出所述给定子块的MV包括裁剪所述参考块的MV信息。
8.根据条款1-7中任一项所述的方法,其中,所述参考块具有与所述当前视频块不同的颜色分量。
以下条款示出了在先前章节中的项目3、4和5中讨论的技术的示例实施例。
1.一种视频处理的方法,包括:确定在视频区域中的当前视频块和所述当前视频块的比特流表示之间的转换中使用子块帧内块复制(sbIBC)编解码模式,其中,所述当前视频块被划分成多个子块,并且每个子块基于来自所述视频区域的参考样点进行编解码;并使用所述sbIBC编解码模式对所述多个子块执行所述转换,其中,所述转换包括生成子块IBC候选。
2.根据条款1所述的方法,其中,所述子块IBC候选被添加到候选列表,所述候选列表包括可替代运动矢量预测符候选。
3.根据条款1所述的方法,其中,所述子块IBC候选被添加到列表,所述列表包括仿射Merge候选。
以下条款示出了在先前章节中的项目7、8、9、10、11、12和13中讨论的技术的示例实施例。
1.一种视频处理的方法,包括:在当前视频块的比特流表示和被分为多个子块的所述当前视频块之间执行转换,其中,所述转换包括使用子块帧内块编解码(sbIBC)模式处理所述多个子块中的第一子块和使用帧内编解码模式处理所述多个子块中的第二子块。
2.一种视频处理的方法,包括:在当前视频块的比特流表示和被分为多个子块的所述当前视频块之间执行转换,其中,所述转换包括使用帧内编解码模式处理所述多个子块中的所有子块。
3.一种视频处理的方法,包括:在当前视频块的比特流表示和被分为多个子块的所述当前视频块之间执行转换,其中,所述转换包括使用调色板编解码模式处理所有所述多个子块,在所述调色板模式中代表性像素值的调色板用于对每个子块进行编解码。
4.一种视频处理的方法,包括:在当前视频块的比特流表示和被分为多个子块的所述当前视频块之间执行转换,其中,所述转换包括使用调色板模式处理所述多个子块中的第一子块,以及使用帧内块复制编解码模式处理所述多个子块中的第二子块,在所述调色板模式中代表性像素值的调色板用于对所述第一子块进行编解码。
5.一种视频处理的方法,包括:在当前视频块的比特流表示和被分为多个子块的所述当前视频块之间执行转换,其中,所述转换包括使用调色板模式处理所述多个子块中的第一子块,以及使用帧内编解码模式处理所述多个子块中的第二子块,在所述调色板模式中代表性像素值的调色板用于对所述第一子块进行编解码。
6.一种视频处理的方法,包括:在当前视频块的比特流表示和被分为多个子块的所述当前视频块之间执行转换,其中,所述转换包括使用子块帧内块编解码(sbIBC)模式处理所述多个子块中的第一子块,以及使用帧间编解码模式处理所述多个子块中的第二子块。
7.一种视频处理的方法,其包括:在当前视频块的比特流表示和被分为多个子块的所述当前视频块之间执行转换,其中,所述转换包括使用子块帧内编解码模式处理所述多个子块中的第一子块,以及使用帧间编解码模式处理所述多个子块中的第二子块。
以下条款示出了在先前章节中的项目14中讨论的技术的示例实施例。
8.根据条款1-7中任一项所述的方法,其中,所述方法还包括在所述当前视频块的转换之后避免更新基于IBC历史的运动矢量预测符表。
以下条款示出了在先前章节中的项目15中讨论的技术的示例实施例。
9.根据条款1-7中任一项或多项所述的方法,还包括在所述当前视频块的转换之后避免更新非基于IBC历史的运动矢量预测符表。
以下条款示出了在先前章节中的项目16中讨论的技术的示例实施例。
10.根据条款1-7中任一项所述的方法,其中,所述转换包括基于所述处理的环路滤波器的选择性使用。
以下条款示出了在先前章节中的项目1中讨论的技术的示例实施例。
17.根据条款1-7中任一项所述的方法,其中,执行所述转换包括由于使用所述方法而通过对于所述当前视频块禁用某种编解码模式来执行所述转换,其中,所述某种编解码模式包括以下中的一种或多种:子块变换、仿射运动预测、多个参考线帧内预测、基于矩阵的帧内预测、对称运动矢量差(MVD)编解码、使用MVD解码器侧运动导出/细化的Merge、双向最佳流、简化的二次变换,或多个变换集。
以下条款示出了在先前章节中的项目18中讨论的技术的示例实施例。
1.根据上述条款中的任一项所述的方法,其中,在所述比特流表示中的指示符包括关于如何将所述方法应用于所述当前视频块的信息。
以下条款示出了在先前章节中的项目19中讨论的技术的示例实施例。
1.一种视频编码的方法,包括:决定使用以上条款中任一项所述的方法来将所述当前视频块编码为所述比特流表示;并且包括在以下级别的所述比特流表示中的指示所述决定的信息:解码器参数集级别或序列参数集级别或视频参数集级别或图片参数集级别或图片标头级别或条带标头级或片组标头级别或最大编解码单元级别或编解码单元级别或最大编解码单元行级别或LCU的组级别或变换单元级别或预测单元级别或视频编解码单元级别。
2.一种视频编码的方法,包括:决定使用以上条款中的任一项所述的方法来基于编码条件将所述当前视频块编码为所述比特流表示;以及使用上述条款中任一项所述的方法执行所述编码,其中,所述条件是基于以下中一个或多个:编解码单元、预测单元、变换单元、所述当前视频块或所述当前视频块的视频编解码单元的位置,
所述当前视频块和/或其邻域块的块维度,
所述当前视频块和/或其邻域块的块形状,
所述当前视频块和/或其邻域块的帧内模式,
所述当前视频块的邻域块的运动/块矢量;
所述当前视频块的颜色格式;
编解码树结构;
所述当前视频块的条带或片组类型或图片类型;
所述当前视频块的颜色分量;
所述当前视频块的时域层ID;
用于所述比特流表示的配置文档或级别或标准。
以下条款示出了在先前章节中的项目20中讨论的技术的示例实施例。
1.一种视频处理的方法,包括:确定对于视频区域中的块和所述视频区域的比特流表示之间的转换使用帧内块复制模式和帧间预测模式;以及使用所述帧内块复制模式和所述帧间预测模式对所述视频区域中的块执行所述转换。
2.根据条款1所述的方法,其中,所述视频区域包括视频图片或视频条带或视频片组或视频片。
3.根据条款1-2中任一项所述的方法,其中,所述帧间预测模式使用可替代运动矢量预测符(AMVP)编解码模式。
4.根据条款1-3中任一项所述的方法,其中,所述执行所述转换包括从邻域块导出用于所述帧内块复制模式的Merge候选。
以下条款示出了在先前章节中的项目21中讨论的技术的示例实施例。
1.一种视频处理的方法,包括:在当前视频块和所述当前视频块的比特流表示之间的转换期间,基于编解码条件视情况执行运动候选列表构建过程和/或执行用于更新基于历史的运动矢量预测符表的表更新过程,以及基于所述运动候选列表构建过程和/或所述表更新过程执行所述转换。
2.根据条款1所述的方法,当满足或不满足所述编解码条件时,可以应用不同的过程。
3.根据条款1所述的方法,当满足所述编解码条件时,不应用基于历史的运动矢量预测符表的更新。
4.根据条款1所述的方法,当满足所述编解码条件时,跳过来自空域邻域(相邻或不相邻)块的候选的导出。
5.根据条款1所述的方法,当满足所述编解码条件时,跳过HMVP候选的导出。
6.根据条款1所述的方法,所述编解码条件包括所述块宽度乘以高度不大于16或32或64。
7.根据条款1所述的方法,所述编解码条件包括所述块以IBC模式编解码。
8.根据条款1所述的方法,其中,所述编解码条件如先前章节中的项目21.b.s.iv中所述。
根据以上条款中任一项的方法,其中,所述转换包括从所述当前视频块生成所述比特流表示。
根据以上条款中任一项的方法,其中,所述转换包括从所述比特流表示生成所述当前视频块的样点。
一种视频处理装置,包括处理器,所述处理器被配置为实现以上条款中任一项或多项所述的方法。
一种计算机可读介质,其上存储有代码,所述代码在执行时使得处理器实现以上条款中任一项或多项所述的方法。
图24是示出其中可实现本文中所公开的各种技术的示例视频处理系统2400的框图。各种实现方式可以包括系统2400的一些或全部组件。系统2400可以包括用于接收视频内容的输入2402。视频内容可以以原始或未压缩的格式(例如8或10比特多分量像素值)接收,或者可以以压缩或编码的格式接收。输入2402可以代表网络接口、外围总线接口或存储接口。网络接口的示例包括有线接口(诸如以太网、无源光网络(PON)等)和无线接口(诸如Wi-Fi或蜂窝接口)。
系统2400可以包括可以实现本文档中描述的各种编解码或编码方法的编解码组件2404。编解码组件2404可以减少从输入2402到编解码组件2404的输出的视频的平均比特率,以产生视频的编解码表示。因此,编解码技术有时称为视频压缩或视频转码技术。编解码组件2404的输出可以被存储或经由所连接的通信来发送,如组件2406所表示的。在输入2402处接收的视频的存储或通信的比特流(或编解码)表示可以由组件2408使用,以生成被发送到显示接口2410的像素值或可显示视频。从比特流表示中生成用户可见的视频的过程有时称为视频解压缩。此外,尽管某些视频处理操作被称为“编解码”操作或工具,但是应当理解,在编码器处使用编解码工具或操作,并且将由解码器执行反向编解码结果的对应解码工具或操作。
外围总线接口或显示接口的示例可以包括通用串行总线(USB)或高清晰度多媒体接口(HDMI)或Displayport等。存储接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文档中描述的技术可以实施在各种电子设备中,诸如移动电话、膝上型计算机、智能电话或其它能够执行数字数据处理和/或视频显示的设备。
图25是根据本技术的用于视频处理的方法2500的流程图表示。方法2500包括,在操作2510处,对于视频的当前块和视频的比特流表示之间的转换,确定当前块被划分成多个子块。使用修改的帧内块复制(IBC)编解码技术对多个块中的至少一个进行编解码,该技术使用来自当前块的当前图片的一个或多个视频区域的参考样点。方法2500包括,在操作2520处,基于该确定来执行转换。
在一些实施例中,视频区域包括当前图片、条带、片、组块或片组。在一些实施例中,在当前块具有M×N(M和N是整数)的维度的情况下,当前块被划分成多个子块。在一些实施例中,多个子块具有相同尺寸L×K,L和K是整数。在一些实施例中,L=K。在一些实施例中,L=4或K=4。
在一些实施例中,多个子块具有不同的尺寸。在一些实施例中,多个子块具有非矩形形状。在一些实施例中,多个子块具有三角或楔形形状。
在一些实施例中,基于以下来确定多个子块中的至少一个的尺寸:最小编解码单元、最小预测单元、最小变换单元或者用于运动信息存储的最小单元的尺寸。在一些实施例中,至少一个子块的尺寸被表示为(N1×minW)×(N2×minH),其中minW×minH表示最小编解码单元、预测单元、变换单元或者用于运动信息存储的单元的尺寸,并且其中N1和N2是正整数。在一些实施例中,多个子块中的至少一个的尺寸是基于编解码模式,当前块以该编解码模式在比特流表示中编解码。在一些实施例中,编解码模式至少包括帧内块复制(IBC)Merge模式或子块时域运动矢量预测模式。在一些实施例中,其中在比特流表示中信令通知多个子块中的至少一个的尺寸。
在一些实施例中,方法包括确定视频的后续块被划分成多个子块以用于转换,其中,当前块中的第一子块与后续块中的第二子块具有不同的尺寸。在一些实施例中,根据当前块的维度和后续块的维度,第一子块的尺寸与第二子块的尺寸不同。在一些实施例中,多个子块中的至少一个的尺寸是基于视频的颜色格式或颜色分量。在一些实施例中,第一子块与视频的第一颜色分量相关联,而第二子块与视频的第二颜色分量相关联,第一子块和第二子块具有不同的维度。在一些实施例中,在视频的颜色格式为4:2:0的情况下,与亮度分量相关联的第一子块的维度为2L×2K,而与色度分量相关联的第二子块的维度为L×K。在一些实施例中,在视频的颜色格式为4:2:2的情况下,与亮度分量相关联的第一子块的维度为2L×2K,而与色度分量相关联的第二子块的尺寸为2L×K。在一些实施例中,第一子块与视频的第一颜色分量相关联,而第二子块与视频的第二颜色分量相关联,第一子块和第二子块具有相同的维度。在一些实施例中,在视频的颜色格式为4:2:0或4:4:4的情况下,与亮度分量相关联的第一子块的维度为2L×2K,并且与色度分量相关联的第二子块的维度为2L×2K。
在一些实施例中,基于与视频的第二颜色分量相关联的一个或多个子块来确定与视频的第一颜色分量相关联的第一子块的运动矢量。在一些实施例中,第一子块的运动矢量是与第二颜色分量相关联的一个或多个子块的运动矢量的平均值。在一些实施例中,基于单个树分割结构将当前块分割成多个子块。在一些实施例中,当前块与视频的色度分量相关联。在一些实施例中,当前块的尺寸为4×4。
在一些实施例中,基于以下来确定多个子块的至少一个子块的运动信息:基于初始运动矢量识别参考块,以及基于该参考块确定子块的运动信息。在一些实施例中,参考块位于当前图片内。在一些实施例中,参考块位于一个或多个参考图片的参考图片内。在一些实施例中,一个或多个参考图片中的至少一个是当前图片。在一些实施例中,参考块位于并置参考图片内,该并置参考图片根据时域信息与一个或多个参考图片中的一个并置。在一些实施例中,基于整理后的(collated)块或整理后的块的邻域块的运动信息来确定参考图片。根据时域信息将并置块与当前块并置。在一些实施例中,基于当前块的一个或多个邻域块或子块的一个或多个邻域块来确定参考块的初始运动矢量。在一些实施例中,一个或多个邻域块包括当前块或子块的相邻块和/或非相邻块。在一些实施例中,一个或多个邻域块和参考块中的至少一者位于相同图片内。在一些实施例中,一个或多个邻域块中的至少一个位于一个或多个参考图片的参考图片内。在一些实施例中,一个或多个邻域块中的至少一个位于并置参考图片内,该并置参考图片根据时域信息与一个或多个参考图片中的一个并置。在一些实施例中,基于整理后的块或整理后的块的邻域块的运动信息来确定参考图片,其中根据时域信息将并置块与当前块并置。
在一些实施例中,初始运动矢量等于存储在一个或多个邻域块中的一个的运动矢量。在一些实施例中,基于检查一个或多个邻域块以进行转换的顺序来确定初始运动矢量。在一些实施例中,初始运动矢量是与当前图片相关联的第一识别的运动矢量。在一些实施例中,基于运动候选的列表来确定参考块的初始化运动矢量。在一些实施例中,运动候选的列表包括帧内块复制(IBC)候选的列表、Merge候选的列表、子块时域运动矢量预测候选的列表或基于过去的运动预测结果确定的基于历史的运动候选的列表。在一些实施例中,基于列表中的所选择的候选来确定初始化运动矢量。在一些实施例中,所选择的候选是列表中的第一候选。在一些实施例中,基于使用与传统的构建过程中的空域邻域块不同的空域邻域块的过程来构建候选的列表。
在一些实施例中,基于当前图片中的当前块的位置来确定参考块的初始运动矢量。在一些实施例中,基于当前块的维度来确定参考块的初始运动矢量。在一些实施例中,初始运动矢量设置为默认值。在一些实施例中,初始运动矢量在视频单元级别的比特流表示中被指示。在一些实施例中,视频单元包括片、条带、图片、组块、编解码树单元(CTU)的行、CTU、编解码树块(CTB)、编解码单元(CU)、预测单元(PU)或变换单元(TU)。在一些实施例中,用于子块的初始运动矢量不同于用于当前块的第二子块的另一初始运动块。在一些实施例中,根据视频单元不同地确定当前块的多个子块的初始运动矢量。在一些实施例中,视频单元包括块、片或条带。
在一些实施例中,在识别参考块之前,将初始运动矢量转换为F个像素的整数精度,F是大于或等于1的正整数。在一些实施例中,F为1、2或4。在一些实施例中,初始运动矢量表示为(vx,vy),并且其中转换的运动矢量(vx',vy')表示为(vx×F,vy×F)。在一些实施例中,子块的左上位置表示为(x,y),并且子块的尺寸为L×K,L是当前子块的宽度,K是子块的高度。参考块被识别为覆盖(x+offsetX+vx',y+offsetY+vy')的区域,offsetX和offset为非负值。在一些实施例中,offsetX为0和/或offsetY为0。在一些实施例中,offsetX等于L/2、L/2+1或L/2-1。在一些实施例中,offsetY等于K/2、K/2+1或K/2-1。在一些实施例中,offsetX和/或offsetY被裁剪在一个范围内,该范围包括图片、条带、片、组块或帧内块复制参考区域。
在一些实施例中,进一步基于参考块的运动信息来确定子块的运动矢量。在一些实施例中,在参考块的运动矢量指向当前图片的情况下,子块的运动矢量与参考块的运动矢量相同。在一些实施例中,在参考块的运动矢量指向当前图片的情况下,基于将初始运动矢量添加到参考块的运动矢量来确定子块的运动矢量。在一些实施例中,子块的运动矢量被裁剪在一定范围内,使得子块的运动矢量指向帧内块复制参考区域。在一些实施例中,子块的运动矢量是子块的帧内块复制候选的有效运动矢量。
在一些实施例中,确定子块的一个或多个帧内块复制候选,以确定子块的运动信息。在一些实施例中,将一个或多个帧内块复制候选添加到运动候选列表中,该列表包括以下中的一个:子块的Merge候选、子块的子块时域运动矢量预测候选,或子块的仿射Merge候选。在一些实施例中,一个或多个帧内块复制候选被定位在列表中的子块的任何Merge候选之前。在一些实施例中,一个或多个帧内块复制候选被定位在列表中的子块的任何子块时域运动矢量预测候选之后。在一些实施例中,一个或多个帧内块复制候选被定位在列表中子块的任何继承或构建的仿射候选之后。在一些实施例中,是否将一个或多个帧内块复制候选添加到运动候选的列表是基于当前块的编解码模式。在一些实施例中,在使用帧内块复制(IBC)子块时域运动矢量预测模式对当前块进行编解码的情况下,从运动候选的列表中排除一个或多个帧内块复制候选。
在一些实施例中,是否将一个或多个帧内块复制候选添加到运动候选的列表是基于当前块的分割结构。在一些实施例中,将一个或多个帧内块复制候选添加为列表中子块的Merge候选。在一些实施例中,基于不同的初始运动矢量,将一个或多个帧内块复制候选添加到运动候选的列表。在一些实施例中,在比特流表示中指示是否将一个或多个帧内块复制候选添加到运动候选的列表。在一些实施例中,是否在比特流表示中信令通知指示运动候选的列表的索引是基于当前块的编解码模式。在一些实施例中,在使用帧内块复制Merge模式对当前块进行编解码的情况下,在比特流表示中信令通知了指示包括帧内块复制Merge候选的运动候选的列表的索引。在一些实施例中,在使用帧内块复制子块时域运动矢量预测模式的情况下,在比特流表示中信令通知了指示包括帧内块复制子块时域运动矢量预测候选的运动候选的列表的索引。在一些实施例中,将帧内块复制子块时域运动矢量预测模式的运动矢量差应用于多个子块。
在一些实施例中,参考块和子块与视频的相同颜色分量相关联。在一些实施例中,当前块是否被划分成多个子块是基于与当前块相关联的编解码特性。在一些实施例中,编解码特性包括在以下中的比特流表示中的语法标志:解码器参数集、序列参数集、视频参数集、图片参数集、APS、图片标头、条带标头、片组标头、最大编解码单元(LCU)、编解码单元(CU)、LCU的行、LCU的组、变换单元、预测单元、预测单元块或视频编解码单元中。在一些实施例中,编解码特性包括编解码单元、预测单元、变换单元、块或视频编解码单元的位置。在一些实施例中,编解码特性包括当前块或当前块的邻域块的维度。在一些实施例中,编解码特性包括当前块或当前块的邻域块的形状。在一些实施例中,编解码特性包括当前块或当前块的邻域块的帧内编解码模式。在一些实施例中,编解码特性包括当前块的邻域块的运动矢量。在一些实施例中,编解码特性包括视频的颜色格式的指示。在一些实施例中,编解码特性包括当前块的编解码树结构。在一些实施例中,编解码特性包括与当前块相关联的条带类型、片组类型或图片类型。在一些实施例中,编解码特性包括与当前块相关联的颜色分量。在一些实施例中,编解码特性包括与当前块相关联的时域层标识符。在一些实施例中,编解码特性包括用于比特流表示的标准的配置文档、级别或层级。
图26是根据本技术的用于视频处理的方法2600的流程图表示。方法2600包括,在操作2610处,对于视频的当前块和视频的比特流表示之间的转换,确定当前块被划分成多个子块。根据图案使用对应的编解码技术在编解码的表示中对多个子块中的每一个进行编解码。方法还包括,在操作2620处,基于该确定来执行转换。
在一些实施例中,图案指定使用修改的帧内块复制(IBC)编解码技术对多个子块中的第一子块进行编解码,在该技术中使用来自视频区域的参考样点。在一些实施例中,图案指定使用帧内预测编解码技术对多个子块中的第二子块进行编解码,在该技术中使用来自相同子块的样点。在一些实施例中,图案指定使用调色板编解码技术对多个子块中的第二子块进行编解码,在该技术中使用代表性像素值的调色板。在一些实施例中,图案指定使用帧间编解码技术对多个子块中的第二子块进行编解码,在该技术中使用时域信息。
在一些实施例中,图案指定使用帧内预测编解码技术对多个子块中的第一子块进行编解码,在该技术中使用来自相同子块的样点。在一些实施例中,图案指定使用调色板编解码技术对多个子块中的第二子块进行编解码,在该技术中使用代表性像素值的调色板。在一些实施例中,图案指定使用帧间编解码技术对多个子块中的第二子块进行编解码,在该技术中使用时域信息。
在一些实施例中,图案指定使用单个编解码技术对所有多个子块进行编解码。在一些实施例中,单个编解码技术包括帧内预测编解码技术,在该技术中来自相同子块的样点被用于编解码多个子块。在一些实施例中,单个编解码技术包括调色板编解码技术,在该技术中代表性像素值的调色板被用于编解码多个子块。
在一些实施例中,在一种或多种编解码技术的图案应用于当前块的情况下,子块时域运动矢量预测模式的基于历史的运动候选表对于转换保持相同,该基于历史的运动候选表基于过去转换中的运动信息来确定。在一些实施例中,基于历史的表用于IBC编解码技术或非IBC编解码技术。
在一些实施例中,在图案指定使用IBC编解码技术对多个子块中的至少一个子块进行编解码的情况下,用于该至少一个子块的一个或多个运动矢量被用于更新IBC子块时域运动矢量预测模式的基于历史的运动候选表,该基于历史的运动候选表基于过去转换中的运动信息来确定。在一些实施例中,在图案指定使用帧间编解码技术对多个子块中的至少一个子块进行编解码的情况下,用于该至少一个子块的一个或多个运动矢量被用于更新非IBC子块时域运动矢量预测模式的基于历史的运动候选表,该基于历史的运动候选表基于过去转换中的运动信息来确定。
在一些实施例中,对多个子块的边界进行滤波的滤波过程的使用是基于根据图案的至少一种编解码技术的使用。在一些实施例中,在应用至少一种编解码技术的情况下,应用对多个子块的边界进行滤波的滤波过程。在一些实施例中,在应用至少一种编解码技术的情况下,省略了对多个子块的边界进行滤波的滤波过程。
在一些实施例中,对于根据图案进行转换的当前块禁用第二编解码技术。在一些实施例中,第二编解码技术包括以下中的至少一个:子块变换编解码技术、仿射运动预测编解码技术、多个参考线帧内预测编解码技术、基于矩阵的帧内预测编解码技术、对称运动矢量差(MVD)编解码技术、使用解码器侧运动导出或细化的Merge编解码技术、双向最佳流编解码技术、基于当前块维度而具有降低维度的二次变换编解码技术或多个变换集编解码技术。
在一些实施例中,在比特流表示中信令通知根据图案的至少一种编解码技术的使用。在一些实施例中,在以下级信令通知使用:序列级别、图片级别、条带级别、片组级别、片级别、组块级别、编解码树单元(CTU)级别、编解码树块(CTB)级别、编解码单元(CU)级别、预测单元(PU)级别、变换单元(TU)或另一视频单元级别。在一些实施例中,至少一种编解码技术包括修改的IBC编解码技术,并且基于指示运动候选列表中的候选的索引值在比特流表示中指示修改的IBC编解码技术。在一些实施例中,预定义值被分配给使用修改的IBC编解码技术编解码的当前块。
在一些实施例中,在转换期间确定根据图案的至少一种编解码技术的使用。在一些实施例中,在比特流中信令通知使用帧内块复制(IBC)编解码技术来对当前块进行编解码,在该技术中使用来自当前块的参考样点。在一些实施例中,在转换期间确定使用帧内块复制(IBC)编解码技术来对当前块进行编解码,在该技术中使用来自当前块的参考样点。
在一些实施例中,当前块的多个子块的运动信息被用作运动矢量预测符,以用于视频的后续块和比特流表示之间的转换。在一些实施例中,不允许当前块的多个子块的运动信息被用于视频的后续块和比特流表示之间的转换。在一些实施例中,基于运动候选是否为适用于视频块或该块内的子块的候选,确定将当前块划分成使用至少一种编解码技术编解码的多个子块。
图27是根据本技术的用于视频处理的方法2700的流程图表示。方法2700包括,在操作2710处,对于视频的当前块和视频的比特流表示之间的转换,基于与当前块的特性有关的条件,确定与运动候选列表相关联的操作。运动候选的列表被构建以用于编解码技术或基于来自先前处理的视频块的信息。方法2700还包括,在操作2720处,基于该确定来执行转换。
在一些实施例中,编解码技术包括Merge编解码技术、帧内块复制(IBC)子块时域运动矢量预测编解码技术、子块Merge编解码技术、IBC编解码技术或修改的IBC编解码技术,该修改的IBC编解码技术使用来自当前块的视频区域的参考样点来对当前块的至少一个子块进行编解码。
在一些实施例中,当前块的维度为W×H,W和H为正整数。条件与当前块的维度有关。在一些实施例中,条件与当前块的编解码信息或当前块的邻域块的编解码信息有关。在一些实施例中,条件与用于在当前块和另一块之间共享运动候选的列表的Merge共享条件有关。
在一些实施例中,操作包括使用Merge编解码技术来导出用于运动候选的列表的空域Merge候选。在一些实施例中,操作包括基于当前块的空域邻域块来导出用于运动候选的列表的运动候选。在一些实施例中,空域邻域块包括当前块的相邻块或不相邻块。
在一些实施例中,操作包括导出用于基于来自先前处理的视频块的信息而构建的运动候选的列表的运动候选。在一些实施例中,操作包括导出用于运动候选的列表的成对Merge候选。在一些实施例中,操作包括一个或多个修剪操作,该一个或多个修剪操作移除运动候选的列表中的冗余条目。在一些实施例中,一个或多个修剪操作用于运动候选的列表中的空域Merge候选。
在一些实施例中,操作包括在转换之后更新基于来自先前处理的视频块的信息而构建的运动候选列表。在一些实施例中,更新包括在不进行修剪操作的情况下将导出的候选添加到运动候选的列表中,该修剪操作移除运动候选的列表中的冗余。在一些实施例中,操作包括在运动候选的列表中添加默认运动候选。在一些实施例中,默认运动候选包括使用IBC子块时域运动矢量预测编解码技术的零运动候选。在一些实施例中,在满足条件的情况下跳过该操作。
在一些实施例中,操作包括以预定义顺序检查运动候选的列表中的运动候选。在一些实施例中,操作包括检查运动候选的列表中的预定义数量的运动候选。在一些实施例中,在W×H大于或等于阈值的情况下满足条件。在一些实施例中,在W×H大于或等于阈值并且使用IBC子块时域运动矢量预测编解码技术或Merge编解码技术对当前块进行编解码的情况下,满足条件。在一些实施例中,阈值为1024。
在一些实施例中,在W和/或H大于或等于阈值的情况下满足条件。在一些实施例中,阈值为32。在一些实施例中,在W×H小于或等于阈值并且使用IBC子块时域运动矢量预测编解码技术或Merge编解码技术对当前块进行编解码的情况下,满足条件。在一些实施例中,阈值为16。在一些实施例中,阈值为32或64。在一些实施例中,在满足条件的情况下,操作包括跳过将基于空域邻域块确定的候选插入运动候选的列表中。
在一些实施例中,在W等于T2,H等于T3,T2和T3为正整数,并且当前块上方的邻域块可用并且使用与当前块相同的编解码技术进行编解码的情况下,满足条件。在一些实施例中,在邻域块和当前块在相同的编解码树单元中的情况下,满足条件。
在一些实施例中,在W等于T2,H等于T3,T2和T3为正整数,并且当前块上方的邻域块不可用或是在当前块所位于的当前编解码树单元外部的情况下,满足条件。在一些实施例中,T2为4且T3为8。在一些实施例中,在W等于T4,H等于T5,T4和T5为正整数,并且当前块左方的邻域块可用并且使用与当前块相同的编解码技术进行编解码的情况下,满足条件。在一些实施例中,在W等于T4,H等于T5,T4和T5为正整数,并且当前块左方的邻域块不可用的情况下,满足条件。在一些实施例中,T4为8且T5为4。
在一些实施例中,在W×H小于或等于阈值,使用IBC子块时域运动矢量预测编解码技术或Merge编解码技术对当前块进行编解码,并且使用相同的编解码技术对当前块上方的第一邻域块和当前块左方的第二邻域块进行编解码的情况下,满足条件。在一些实施例中,第一和第二邻域块可用并且使用IBC编解码技术进行编解码,并且其中第二邻域块在与当前块相同的编解码树单元内。在一些实施例中,第一邻域块不可用,并且其中第二邻域块可用并且在与当前块相同的编解码树单元内。在一些实施例中,第一和第二邻域块不可用。在一些实施例中,第一邻域块可用,而第二邻域块不可用。在一些实施例中,第一邻域块不可用,并且第二邻域块在当前块所位于的编解码树单元的外部。在一些实施例中,第一邻域块可用,并且第二邻域块在当前块所位于的编解码树单元的外部。在一些实施例中,阈值为32。在一些实施例中,第一和第二邻域块用于导出空域Merge候选。在一些实施例中,当前块的左上样点被定位在(x,y)处,并且其中第二邻域块覆盖定位在(x-1,y+H-1)处的样点。在一些实施例中,当前块的左上样点被定位在(x,y)处,并且其中第二邻域块覆盖定位在(x+W-1,y-1)处的样点。
在一些实施例中,相同的编解码技术包括IBC编解码技术。在一些实施例中,相同的编解码技术包括帧间编解码技术。在一些实施例中,当前块的邻域块的维度等于A×B。在一些实施例中,当前块的邻域块的维度大于A×B。在一些实施例中,当前块的邻域块的维度小于A×B。在一些实施例中,A×B等于4×4。在一些实施例中,阈值是预定义的。在一些实施例中,在比特流表示中信令通知阈值。在一些实施例中,阈值是基于当前块的编解码特性,该编解码特性包括对当前块进行编解码的编解码模式。
在一些实施例中,在当前块具有共享运动候选的列表的父代节点并且使用IBC子块时域运动矢量预测编解码技术或Merge编解码技术对当前块进行编解码的情况下,满足条件。在一些实施例中,条件根据当前块的编解码特性自适应地改变。
图28是根据本技术的用于视频处理的方法2800的流程图表示。方法2800包括,在操作2810处,对于视频的当前块和视频的比特流表示之间的转换,确定使用基于时域信息的帧间编解码技术编解码的当前块被划分成多个子块。使用修改的帧内块复制(IBC)编解码技术对多个块中的至少一个进行编解码,该技术使用来自包括当前块的当前图片的一个或多个视频区域的参考样点。方法2800包括,在操作2820处,基于该确定来执行转换。
在一些实施例中,视频区域包括当前图片、条带、片、组块或片组。在一些实施例中,帧间编解码技术包括子块时域运动矢量编解码技术,并且其中在比特流表示中包括一个或多个语法元素,该一个或多个语法元素指示是否基于当前图片和不同于当前图片的参考图片两者对当前块进行编解码。在一些实施例中,在基于当前图片和参考图片两者对当前块进行编解码的情况下,一个或多个语法元素指示用于对当前块进行编解码的参考图片。在一些实施例中,一个或多个语法元素还指示与参考图片相关联的运动信息,该运动信息至少包括运动矢量预测索引、运动矢量差或运动矢量精度。在一些实施例中,第一参考图片列表仅包括当前图片,并且第二参考图片列表仅包括参考图片。在一些实施例中,帧间编解码技术包括时域Merge编解码技术,并且基于当前块的邻域块来确定运动信息,该运动信息至少包括运动矢量或参考图片。在一些实施例中,在仅基于当前图片确定邻域块的情况下,运动信息仅适用于当前图片。在一些实施例中,在基于当前图片和参考图片两者确定邻域块的情况下,运动信息适用于当前图片和参考图片两者。在一些实施例中,仅在基于当前图片和参考图片两者确定邻域块的情况下,运动信息才适用于当前图片。在一些实施例中,在仅基于参考图片确定邻域块的情况下,丢弃邻域块以确定Merge候选。
在一些实施例中,将固定的加权因子分配给来自当前图片的参考块和来自参考图片的参考块。在一些实施例中,在比特流表示中信令通知固定的加权因子。
图29是根据本技术的用于视频处理的方法2900的流程图表示。方法2900包括,在操作2910处,对于视频的当前图片的当前块和视频的比特流表示之间的转换,构建用于适用于当前块的编解码技术的运动候选的列表,其中,基于历史的运动候选根据来自先前处理的视频块的信息导出。编解码技术使用来自当前块的当前图片的参考样点来预测当前块的至少一部分。方法2900还包括,在操作2920处,基于该确定来执行转换。
在一些实施例中,基于历史的运动候选被组织为至少一个表中的条目。在一些实施例中,构建包括仅检查在至少一个表中组织的基于历史的运动候选。在一些实施例中,构建的运动候选的列表仅包括基于历史的运动候选。
在一些实施例中,基于历史的运动候选根据与表相关联的顺序被添加到运动候选的列表中,而无需执行修剪步骤以移除列表中的冗余。在一些实施例中,顺序指定基于表中基于历史的运动候选的条目索引的升序将基于历史的运动候选添加到列表。在一些实施例中,顺序指定基于表中基于历史的运动候选的条目索引的降序将基于历史的运动候选添加到列表。在一些实施例中,顺序指定跳过表中的前N个条目,N是非负整数。在一些实施例中,顺序指定跳过表中的最后N个条目,N是非负整数。在一些实施例中,顺序指定跳过表中具有无效块矢量的条目。
在一些实施例中,基于块的维度来确定构建。在一些实施例中,块具有宽度W和高度H,并且在块的维度满足条件的情况下,运动候选的列表仅包括基于历史的运动候选。在一些实施例中,在W≤T1且H≤T2,T1和T2为正整数的情况下,满足条件。在一些实施例中,在W≤T1或H≤T2,T1和T2为正整数的情况下,满足条件。在一些实施例中,T1=T2=4。在一些实施例中,在W×H≤T,T为正整数的情况下,满足条件。在一些实施例中,T=16。
在一些实施例中,在比特流表示中是否信令通知运动候选列表中的候选是基于表中可用的基于历史的运动候选的数量。在一些实施例中,在比特流表示中是否信令通知运动候选列表中的候选是基于表中基于历史的运动候选的最大数量。在一些实施例中,基于历史的运动候选在被添加到运动候选的列表之前被修改。在一些实施例中,通过向基于历史的运动候选的水平矢量或垂直矢量添加偏移来修改基于历史的运动候选。在一些实施例中,具有无效块矢量的基于历史的运动候选被修改为有效块矢量。
在一些实施例中,在添加基于历史的运动候选之前或之后,将默认运动候选添加到列表中。在一些实施例中,以整数像素的精度将至少一个基于历史的运动候选存储在运动候选的列表中。在一些实施例中,以整数像素的精度存储运动候选的列表中的所有基于历史的运动候选。在一些实施例中,在来自空域邻域块或先前处理的视频块的运动信息被用于构建运动候选列表的情况下,跳过执行运动候选的取整步骤。
在一些实施例中,执行转换包括基于视频块生成比特流表示。在一些实施例中,执行转换包括从比特流表示生成视频块。
将理解,公开了用于视频编码或视频解码的技术。视频编码器或解码器可以采用这些技术,以一起使用帧内块复制和基于子块的视频处理,以实现更高的编解码效率和性能。
所公开技术的一些实施例包括决定或确定以启用视频处理工具或模式。在一个示例中,当启用视频处理工具或模式时,编码器将在视频块的处理中使用或实现该工具或模式,但是不一定基于该工具或模式的使用来修改所得到的比特流。即,当基于决定或确定而启用视频处理工具或模式时,从视频块到视频的比特流表示的转换将使用该视频处理工具或模式。在另一示例中,当启用视频处理工具或模式时,解码器将在已经知道比特流已被修改的情况下基于视频处理工具或模式来处理比特流。即,将使用基于决定或确定而启用的视频处理工具或模式来执行从视频的比特流表示到视频块的转换。
所公开技术的一些实施例包括决定或确定以禁用视频处理工具或模式。在一个示例中,当禁用视频处理工具或模式时,编码器在视频块转换到视频的比特流表示的转换中将不使用该工具或模式。在另一个示例中,当禁用视频处理工具或模式时,解码器将在已经知道比特流尚未被修改的情况下,使用基于决定或确定而启用的视频处理工具或模式来处理比特流。
本文档中描述的公开和其它方案、示例、实施例、模块和功能操作可以以数字电子电路实现,或者以计算机软件、固件或硬件实现,包括本文档中公开的结构及其结构等同物,或者以它们中的一个或多个的组合实现。所公开的和其它的实施例可以实现为一个或多个计算机程序产品,例如,在计算机可读介质上编码的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质组成、或者它们中的一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除了硬件以外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如机器生成的电信号、光信号或电磁信号,其被生成以对信息进行编码以便传输到合适的接收器装置。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言,并且可以以任何形式来部署计算机程序,包括独立程序或适合在计算环境中使用的模块、组件、子例程或其它单元。计算机程序并不必需对应于文件系统中的文件。程序可以存储在文件的保存其它程序或数据(例如,存储在标志语言文档中的一个或多个脚本)的部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。可以部署计算机程序以在一个计算机上或计算机位于一个站点上或分布在多个站点上并通过通信网络互连的多个计算机上执行。
本文档中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
举例来说,适合于执行计算机程序的处理器包括通用和专用微处理器、以及任何种类的数字计算机的任一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合到用于存储数据的一个或多个大容量存储设备(例如磁盘、磁光盘或光盘),以从该一个或多个大容量存储设备接收数据,或将数据传输到该一个或多个大容量存储设备,或者既接收又传输数据。然而,计算机不需要具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪速存储器设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
虽然本专利文档包含许多细节,但这些细节不应被解释为对任何主题或可要求保护的范围的限制,而是作为特定于特定技术的特定实施例的特征的描述。在本专利文档中,在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此要求权利保护,但是在某些情况下,可以从所要求保护的组合中去除来自该组合的一个或多个特征,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为要求以所示的特定顺序或按顺序执行这样的操作,或者执行所有示出的操作,以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分开不应被理解为在所有实施例中都要求这种分开。
仅描述了几个实现方式和示例,并且可以基于本专利文档中描述和示出的内容来作出其它实现方式、增强和变型。
Claims (30)
1.一种视频处理的方法,包括:
对于视频的当前图片的当前块和所述视频的比特流表示之间的转换,构建用于适用于所述当前块的编解码技术的运动候选的列表,其中,基于历史的运动候选根据来自先前处理的视频块的信息导出,其中,所述编解码技术使用来自所述当前块的当前图片的参考样点来预测所述当前块的至少一部分;以及
基于确定来执行所述转换。
2.根据权利要求1所述的方法,其中,所述基于历史的运动候选被组织为至少一个表中的条目。
3.根据权利要求1或2所述的方法,其中,所述构建包括仅检查组织在所述至少一个表中的基于历史的运动候选。
4.根据权利要求1或2所述的方法,其中,所构建的运动候选的列表仅包括基于历史的运动候选。
5.根据权利要求1至4中的任一项所述的方法,其中,根据与所述表相关联的顺序将所述基于历史的运动候选添加到所述运动候选的列表中,而无需执行修剪步骤以移除所述列表中的冗余。
6.根据权利要求5所述的方法,其中,所述顺序基于所述表中的所述基于历史的运动候选的条目索引的升序来指定将所述基于历史的运动候选添加到所述列表。
7.根据权利要求5所述的方法,其中,所述顺序基于所述表中的所述基于历史的运动候选的条目索引的降序来指定将所述基于历史的运动候选添加到所述列表。
8.根据权利要求5至7中的任一项所述的方法,其中,所述顺序指定跳过所述表中的前N个条目,N是非负整数。
9.根据权利要求5至7中的任一项所述的方法,其中,所述顺序指定跳过所述表中的最后N个条目,N是非负整数。
10.根据权利要求5至9中的任一项所述的方法,其中,所述顺序指定跳过所述表中具有无效块矢量的条目。
11.根据权利要求1至10中任一项所述的方法,其中,基于所述块的维度来确定所述构建。
12.根据权利要求11所述的方法,其中,所述块具有宽度W和高度H,并且其中,在所述块的维度满足条件的情况下,所述运动候选的列表仅包括所述基于历史的运动候选。
13.根据权利要求12所述的方法,其中,在W≤T1且H≤T2,T1和T2为正整数的情况下,满足所述条件。
14.根据权利要求12所述的方法,其中,在W≤T1或H≤T2,T1和T2为正整数的情况下,满足所述条件。
15.根据权利要求13或14所述的方法,其中,T1=T2=4。
16.根据权利要求12所述的方法,其中,在W×H≤T,T为正整数的情况下,满足所述条件。
17.根据权利要求16所述的方法,其中,T=16。
18.根据权利要求1至17中任一项所述的方法,其中,在所述比特流表示中是否信令通知所述运动候选的列表中的候选是基于所述表中可用的基于历史的运动候选的数量。
19.根据权利要求1至17中任一项所述的方法,其中,在所述比特流表示中是否信令通知所述运动候选的列表中的候选是基于所述表中基于历史的运动候选的最大数量。
20.根据权利要求1至19中的任一项所述的方法,其中,所述基于历史的运动候选在被添加到所述运动候选的列表之前被修改。
21.根据权利要求20所述的方法,其中,通过向所述基于历史的运动候选的水平矢量或垂直矢量添加偏移来修改基于历史的运动候选。
22.根据权利要求20所述的方法,其中,具有无效块矢量的基于历史的运动候选被修改为有效块矢量。
23.根据权利要求1至22中的任一项所述的方法,其中,在添加所述基于历史的运动候选之前或之后,将默认运动候选添加到所述列表中。
24.根据权利要求1至23中的任一项所述的方法,其中,以整数像素精度将至少一个基于历史的运动候选存储在所述运动候选的列表中。
25.根据权利要求24所述的方法,其中,以整数像素精度存储所述运动候选的列表中的所有所述基于历史的运动候选。
26.根据权利要求24或25所述的方法,其中,在来自空域邻域块或先前处理的视频块的运动信息用于构建所述运动候选的列表的情况下,跳过执行运动候选的取整步骤。
27.根据权利要求1至26中任一项所述的方法,其中,执行所述转换包括从所述视频块生成所述比特流表示。
28.根据权利要求1至26中任一项所述的方法,其中,执行所述转换包括从所述比特流表示生成所述视频块。
29.一种视频处理装置,包括处理器,所述处理器被配置为实现如权利要求1至28中任一项所述的方法。
30.一种其上存储代码的计算机可读介质,所述代码在执行时使得处理器实现如权利要求1至28中任一项所述的方法。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CNPCT/CN2019/092438 | 2019-06-22 | ||
| CN2019092438 | 2019-06-22 | ||
| PCT/CN2020/097373 WO2020259426A1 (en) | 2019-06-22 | 2020-06-22 | Motion candidate list construction for intra block copy mode |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN114009037A true CN114009037A (zh) | 2022-02-01 |
| CN114009037B CN114009037B (zh) | 2025-01-10 |
Family
ID=74061234
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202080045728.XA Active CN114009037B (zh) | 2019-06-22 | 2020-06-22 | 帧内块复制模式的运动候选列表构建 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US12088786B2 (zh) |
| CN (1) | CN114009037B (zh) |
| WO (1) | WO2020259426A1 (zh) |
Families Citing this family (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102662603B1 (ko) | 2019-06-06 | 2024-04-30 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩을 위한 움직임 후보 리스트 구성 |
| CN113950838B (zh) | 2019-06-06 | 2026-03-17 | 北京字节跳动网络技术有限公司 | 基于子块的帧内块复制 |
| WO2020256105A1 (ja) * | 2019-06-21 | 2020-12-24 | 株式会社Jvcケンウッド | 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム、動画像復号装置、動画像復号方法及び動画像復号プログラム |
| CN116527923B (zh) | 2020-07-28 | 2025-10-21 | 北京达佳互联信息技术有限公司 | 视频编码方法、电子装置和存储介质 |
| WO2022214028A1 (en) * | 2021-04-08 | 2022-10-13 | Beijing Bytedance Network Technology Co., Ltd. | Method, device, and medium for video processing |
| CN113220752A (zh) | 2021-05-06 | 2021-08-06 | 北京字跳网络技术有限公司 | 展示方法、装置和电子设备 |
| US11876978B2 (en) | 2021-08-31 | 2024-01-16 | Tencent America LLC | Intra prediction mode information propagation for geometric partition mode with IBC and intra prediction |
| CN118830241A (zh) * | 2021-12-01 | 2024-10-22 | 抖音视界有限公司 | 用于视频处理的方法、装置和介质 |
| WO2023132514A1 (ko) * | 2022-01-05 | 2023-07-13 | 현대자동차주식회사 | 개선된 amvp-merge 모드를 이용하는 비디오 코딩을 위한 방법 및 장치 |
| CN119137948A (zh) * | 2022-04-05 | 2024-12-13 | 抖音视界有限公司 | 用于视频处理的方法、装置和介质 |
| WO2023237017A1 (en) * | 2022-06-07 | 2023-12-14 | Beijing Bytedance Network Technology Co., Ltd. | Method, apparatus, and medium for video processing |
| WO2024046479A1 (en) * | 2022-09-03 | 2024-03-07 | Douyin Vision Co., Ltd. | Method, apparatus, and medium for video processing |
| WO2024078630A1 (en) * | 2022-10-14 | 2024-04-18 | Douyin Vision Co., Ltd. | Method, apparatus, and medium for video processing |
| US12568202B2 (en) * | 2022-12-21 | 2026-03-03 | Tencent America LLC | IBC chroma block vector search range validation |
| WO2024213123A1 (en) * | 2023-04-12 | 2024-10-17 | Mediatek Inc. | Intra-block copy with subblock modes and template matching |
| EP4725188A1 (en) * | 2023-06-06 | 2026-04-15 | Douyin Vision Co., Ltd. | Method, apparatus, and medium for video processing |
Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2015023689A2 (en) * | 2013-08-16 | 2015-02-19 | Sony Corporation | Intra-block copying enhancements for hevc in-range-extension (rext) |
| WO2015106121A1 (en) * | 2014-01-10 | 2015-07-16 | Qualcomm Incorporated | Block vector coding for intra block copy in video coding |
| WO2015124110A1 (en) * | 2014-02-21 | 2015-08-27 | Mediatek Singapore Pte. Ltd. | Method of video coding using prediction based on intra picture block copy |
| US20160330471A1 (en) * | 2014-01-03 | 2016-11-10 | Microsoft Technology Licensing, Llc | Block vector prediction in video and image coding/decoding |
| US20160360224A1 (en) * | 2015-06-08 | 2016-12-08 | Canon Kabushiki Kaisha | Enhanced coding and decoding using intra block copy mode |
| WO2017058633A1 (en) * | 2015-10-02 | 2017-04-06 | Qualcomm Incorporated | Intra block copy merge mode and padding of unavailable ibc reference region |
| CN106797476A (zh) * | 2014-10-07 | 2017-05-31 | 高通股份有限公司 | 帧内bc及帧间统一 |
| CN107079161A (zh) * | 2014-09-01 | 2017-08-18 | 寰发股份有限公司 | 用于屏幕内容以及视频编码的帧内图片块复制的方法 |
| CN109905714A (zh) * | 2017-12-08 | 2019-06-18 | 华为技术有限公司 | 帧间预测方法、装置及终端设备 |
Family Cites Families (76)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6014181A (en) | 1997-10-13 | 2000-01-11 | Sharp Laboratories Of America, Inc. | Adaptive step-size motion estimation based on statistical sum of absolute differences |
| US10554985B2 (en) | 2003-07-18 | 2020-02-04 | Microsoft Technology Licensing, Llc | DC coefficient signaling at small quantization step sizes |
| KR20050119422A (ko) | 2004-06-16 | 2005-12-21 | 삼성전자주식회사 | 움직임 보상에 기반한 입력 영상의 노이즈 예측 및 그장치와, 이를 사용한 노이즈 제거 및 동영상 부호화 방법,이를 수행하기 위한 프로그램이 기록된 기록 매체 |
| WO2008120577A1 (ja) | 2007-03-29 | 2008-10-09 | Kabushiki Kaisha Toshiba | 画像符号化及び復号化の方法及び装置 |
| KR101739987B1 (ko) | 2010-12-28 | 2017-05-26 | 에스케이 텔레콤주식회사 | 주변블록의 특징벡터를 이용한 영상 부호화/복호화 방법 및 장치 |
| WO2013077659A1 (ko) | 2011-11-24 | 2013-05-30 | 에스케이텔레콤 주식회사 | 모션 벡터의 예측 부호화/복호화 방법 및 장치 |
| US20130294513A1 (en) | 2012-05-07 | 2013-11-07 | Qualcomm Incorporated | Inter layer merge list construction for video coding |
| EP4593395A3 (en) | 2012-10-01 | 2025-10-01 | GE Video Compression, LLC | Scalable video coding using inter-layer prediction contribution to enhancement layer prediction |
| US9253503B2 (en) | 2012-12-18 | 2016-02-02 | Xerox Corporation | Computationally efficient motion estimation with learning capabilities for video compression in transportation and regularized environments |
| US10015515B2 (en) | 2013-06-21 | 2018-07-03 | Qualcomm Incorporated | Intra prediction from a predictive block |
| JP6359101B2 (ja) | 2013-10-14 | 2018-07-18 | マイクロソフト テクノロジー ライセンシング,エルエルシー | ビデオ及び画像の符号化及び復号のためのイントラブロックコピー予測モードの特徴 |
| CN105659602B (zh) | 2013-10-14 | 2019-10-08 | 微软技术许可有限责任公司 | 用于视频和图像编码的帧内块复制预测模式的编码器侧选项 |
| US20150189333A1 (en) | 2013-12-27 | 2015-07-02 | Industrial Technology Research Institute | Method and system for image processing, decoding method, encoder, and decoder |
| US9883197B2 (en) | 2014-01-09 | 2018-01-30 | Qualcomm Incorporated | Intra prediction of chroma blocks using the same vector |
| US10368092B2 (en) | 2014-03-04 | 2019-07-30 | Microsoft Technology Licensing, Llc | Encoder-side decisions for block flipping and skip mode in intra block copy prediction |
| MX361228B (es) | 2014-03-04 | 2018-11-29 | Microsoft Technology Licensing Llc | Inversión de bloque y modo de omisión en predicción de intracopia de bloque. |
| EP3103259A4 (en) | 2014-03-13 | 2017-11-01 | Huawei Technologies Co., Ltd. | Improved method for screen content coding |
| EP3128754B1 (en) | 2014-03-31 | 2020-11-11 | Samsung Electronics Co., Ltd. | Interlayer video decoding method for performing sub-block-based prediction and apparatus therefor, and interlayer video encoding method for performing sub-block-based prediction and apparatus therefor |
| CN106416253A (zh) | 2014-05-22 | 2017-02-15 | 联发科技股份有限公司 | 用于图像以及视频编码的具有翻动的帧内块复制方法 |
| US20150373362A1 (en) | 2014-06-19 | 2015-12-24 | Qualcomm Incorporated | Deblocking filter design for intra block copy |
| KR102402622B1 (ko) | 2014-06-19 | 2022-05-27 | 브이아이디 스케일, 인크. | 블록 벡터 도출을 이용하여 인트라 블록 복사 코딩을 위한 방법 및 시스템 |
| CA2959682C (en) | 2014-09-30 | 2022-12-06 | Microsoft Technology Licensing, Llc | Rules for intra-picture prediction modes when wavefront parallel processing is enabled |
| US9854237B2 (en) | 2014-10-14 | 2017-12-26 | Qualcomm Incorporated | AMVP and merge candidate list derivation for intra BC and inter prediction unification |
| US10306229B2 (en) | 2015-01-26 | 2019-05-28 | Qualcomm Incorporated | Enhanced multiple transforms for prediction residual |
| US9591325B2 (en) | 2015-01-27 | 2017-03-07 | Microsoft Technology Licensing, Llc | Special case handling for merged chroma blocks in intra block copy prediction mode |
| CA2977526C (en) | 2015-02-27 | 2020-02-18 | Arris Enterprises Llc | Modification of unification of intra block copy and inter signaling related syntax and semantics |
| EP3266212A4 (en) | 2015-03-20 | 2018-08-01 | MediaTek Singapore Pte Ltd. | Methods of palette coding with inter-prediction in video coding |
| CN113179406B (zh) | 2015-04-13 | 2023-07-18 | 寰发股份有限公司 | 用于视频数据的视频编解码方法和装置 |
| US10638140B2 (en) | 2015-05-29 | 2020-04-28 | Qualcomm Incorporated | Slice level intra block copy and other video coding improvements |
| EP4040791A1 (en) | 2015-06-08 | 2022-08-10 | Vid Scale, Inc. | Intra block copy mode for screen content coding |
| EP3308540B1 (en) | 2015-06-09 | 2020-04-15 | Microsoft Technology Licensing, LLC | Robust encoding/decoding of escape-coded pixels in palette mode |
| US10148977B2 (en) | 2015-06-16 | 2018-12-04 | Futurewei Technologies, Inc. | Advanced coding techniques for high efficiency video coding (HEVC) screen content coding (SCC) extensions |
| US10178403B2 (en) | 2015-06-23 | 2019-01-08 | Qualcomm Incorporated | Reference picture list construction in intra block copy mode |
| US10356427B2 (en) | 2015-10-05 | 2019-07-16 | Mediatek Inc. | Method and apparatus of palette index map coding for screen content coding |
| US20190158870A1 (en) | 2016-01-07 | 2019-05-23 | Mediatek Inc. | Method and apparatus for affine merge mode prediction for video coding system |
| CN108886613B (zh) | 2016-03-28 | 2022-04-19 | 株式会社Kt | 用于处理视频信号的方法和装置 |
| US10560718B2 (en) | 2016-05-13 | 2020-02-11 | Qualcomm Incorporated | Merge candidates for motion vector prediction for video coding |
| CN106375764B (zh) | 2016-08-31 | 2018-04-10 | 中国科学技术大学 | 一种结合方向预测和块复制预测的视频帧内编码方法 |
| US10448010B2 (en) | 2016-10-05 | 2019-10-15 | Qualcomm Incorporated | Motion vector prediction for affine motion models in video coding |
| WO2018143496A1 (ko) | 2017-02-03 | 2018-08-09 | 엘지전자(주) | 예측 모드를 유도하여 비디오 신호를 인코딩, 디코딩하는 방법 및 장치 |
| KR102774043B1 (ko) | 2017-03-31 | 2025-02-27 | 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 | 화상 부호화 장치, 화상 복호 장치, 화상 부호화 방법 및 화상 복호 방법 |
| US10701393B2 (en) | 2017-05-10 | 2020-06-30 | Mediatek Inc. | Method and apparatus of reordering motion vector prediction candidate set for video coding |
| TW201907732A (zh) | 2017-07-05 | 2019-02-16 | 財團法人工業技術研究院 | 視訊編碼方法、視訊解碼方法、視訊編碼器及視訊解碼器 |
| US10931963B2 (en) | 2017-12-07 | 2021-02-23 | Tencent America LLC | Method and apparatus for video coding |
| US11381834B2 (en) | 2018-04-02 | 2022-07-05 | Hfi Innovation Inc. | Video processing methods and apparatuses for sub-block motion compensation in video coding systems |
| KR102840294B1 (ko) | 2018-06-29 | 2025-07-30 | 두인 비전 컴퍼니 리미티드 | 하나 또는 다수의 룩업 테이블들을 사용하여 이전에 코딩된 모션 정보를 순서대로 저장하고 이를 사용하여 후속 블록들을 코딩하는 개념 |
| EP4322533A3 (en) | 2018-06-29 | 2024-03-06 | Beijing Bytedance Network Technology Co., Ltd. | Checking order of motion candidates in lut |
| WO2020007362A1 (en) | 2018-07-06 | 2020-01-09 | Mediatek Inc. | Inherited motion information for decoding a current coding unit in a video coding system |
| US10440378B1 (en) | 2018-07-17 | 2019-10-08 | Tencent America LLC | Method and apparatus for history-based motion vector prediction with parallel processing |
| US10958934B2 (en) | 2018-07-27 | 2021-03-23 | Tencent America LLC | History-based affine merge and motion vector prediction |
| US10362330B1 (en) | 2018-07-30 | 2019-07-23 | Tencent America LLC | Combining history-based motion vector prediction and non-adjacent merge prediction |
| CN116800982A (zh) | 2018-08-13 | 2023-09-22 | Lg电子株式会社 | 图像编码/解码设备和图像数据发送设备 |
| US11245922B2 (en) | 2018-08-17 | 2022-02-08 | Mediatek Inc. | Shared candidate list |
| US10848782B2 (en) | 2018-09-21 | 2020-11-24 | Tencent America LLC | Method and apparatus for video coding |
| US11012687B2 (en) | 2018-10-01 | 2021-05-18 | Tencent America LLC | Method and apparatus for video coding |
| JP7230189B2 (ja) | 2018-10-08 | 2023-02-28 | エルジー エレクトロニクス インコーポレイティド | シンタックスデザイン方法及びシンタックスを用いてコーディングを行う装置 |
| US11051034B2 (en) | 2018-10-08 | 2021-06-29 | Qualcomm Incorporated | History-based motion vector predictor |
| CN112868238B (zh) | 2018-10-23 | 2023-04-21 | 北京字节跳动网络技术有限公司 | 局部照明补偿和帧间预测编解码之间的并置 |
| CN113016187B (zh) | 2018-11-07 | 2023-06-06 | 寰发股份有限公司 | 利用当前画面参照编码方式的视频区块编码或解码方法和装置 |
| CN121531143A (zh) * | 2018-11-08 | 2026-02-13 | Oppo广东移动通信有限公司 | 图像信号编码/解码方法及其设备 |
| CN111436227B (zh) | 2018-11-12 | 2024-03-29 | 北京字节跳动网络技术有限公司 | 在视频处理中使用组合帧间-帧内预测 |
| WO2020108574A1 (en) | 2018-11-28 | 2020-06-04 | Beijing Bytedance Network Technology Co., Ltd. | Improving method for transform or quantization bypass mode |
| CN113170181B (zh) | 2018-11-29 | 2023-12-08 | 北京字节跳动网络技术有限公司 | 块内拷贝模式中的仿射继承方法 |
| BR112020014544A2 (pt) * | 2018-12-12 | 2021-08-03 | Lg Electronics Inc. | método e aparelho para processamento de sinal de vídeo baseado em predição de vetor de movimento baseado em histórico |
| US11589050B2 (en) | 2018-12-18 | 2023-02-21 | Hfi Innovation Inc. | Method and apparatus of encoding or decoding video blocks with constraints during block partitioning |
| WO2020135465A1 (en) * | 2018-12-28 | 2020-07-02 | Beijing Bytedance Network Technology Co., Ltd. | Modified history based motion prediction |
| CN109618157A (zh) | 2018-12-29 | 2019-04-12 | 东南大学 | 一种视频显示流压缩编码的硬件实现系统及方法 |
| US11032560B2 (en) * | 2019-01-17 | 2021-06-08 | Tencent America LLC | Method and apparatus for video coding without updating the HMVP table |
| KR102696718B1 (ko) * | 2019-02-01 | 2024-08-21 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 조합된 인트라-인터 예측의 확장된 적용 |
| SG11202107959WA (en) | 2019-02-02 | 2021-08-30 | Beijing Bytedance Network Technology Co Ltd | Buffer management for intra block copy in video coding |
| WO2020156549A1 (en) | 2019-02-02 | 2020-08-06 | Beijing Bytedance Network Technology Co., Ltd. | Buffer access methods for intra block copy in video coding |
| US11190800B2 (en) * | 2019-02-07 | 2021-11-30 | Qualcomm Incorporated | Motion vector predictor list generation for intra block copy mode in video coding |
| WO2020164630A1 (en) * | 2019-02-17 | 2020-08-20 | Beijing Bytedance Network Technology Co., Ltd. | Signaling of intra block copy merge candidates |
| WO2020180155A1 (ko) | 2019-03-07 | 2020-09-10 | 엘지전자 주식회사 | 비디오 신호를 처리하기 위한 방법 및 장치 |
| CN113950838B (zh) | 2019-06-06 | 2026-03-17 | 北京字节跳动网络技术有限公司 | 基于子块的帧内块复制 |
| KR102662603B1 (ko) | 2019-06-06 | 2024-04-30 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩을 위한 움직임 후보 리스트 구성 |
-
2020
- 2020-06-22 WO PCT/CN2020/097373 patent/WO2020259426A1/en not_active Ceased
- 2020-06-22 CN CN202080045728.XA patent/CN114009037B/zh active Active
-
2021
- 2021-12-21 US US17/558,161 patent/US12088786B2/en active Active
Patent Citations (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2015023689A2 (en) * | 2013-08-16 | 2015-02-19 | Sony Corporation | Intra-block copying enhancements for hevc in-range-extension (rext) |
| US20160330471A1 (en) * | 2014-01-03 | 2016-11-10 | Microsoft Technology Licensing, Llc | Block vector prediction in video and image coding/decoding |
| WO2015106121A1 (en) * | 2014-01-10 | 2015-07-16 | Qualcomm Incorporated | Block vector coding for intra block copy in video coding |
| WO2015124110A1 (en) * | 2014-02-21 | 2015-08-27 | Mediatek Singapore Pte. Ltd. | Method of video coding using prediction based on intra picture block copy |
| CN107079161A (zh) * | 2014-09-01 | 2017-08-18 | 寰发股份有限公司 | 用于屏幕内容以及视频编码的帧内图片块复制的方法 |
| CN106797476A (zh) * | 2014-10-07 | 2017-05-31 | 高通股份有限公司 | 帧内bc及帧间统一 |
| US20160360224A1 (en) * | 2015-06-08 | 2016-12-08 | Canon Kabushiki Kaisha | Enhanced coding and decoding using intra block copy mode |
| WO2017058633A1 (en) * | 2015-10-02 | 2017-04-06 | Qualcomm Incorporated | Intra block copy merge mode and padding of unavailable ibc reference region |
| CN109905714A (zh) * | 2017-12-08 | 2019-06-18 | 华为技术有限公司 | 帧间预测方法、装置及终端设备 |
Non-Patent Citations (1)
| Title |
|---|
| LI ZHANG: "CE4-related: History-based Motion Vector Prediction", JOINT VIDEO EXPERTS TEAM (JVET) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11 11TH MEETING: LJUBLJANA, SI, 10–18 JULY 2018,JVET-K0104, 18 July 2018 (2018-07-18) * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20220116592A1 (en) | 2022-04-14 |
| US12088786B2 (en) | 2024-09-10 |
| WO2020259426A1 (en) | 2020-12-30 |
| CN114009037B (zh) | 2025-01-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN113950838B (zh) | 基于子块的帧内块复制 | |
| CN114009037B (zh) | 帧内块复制模式的运动候选列表构建 | |
| JP7683985B2 (ja) | 動き候補リスト構築プロセスの条件付き実行 | |
| CN113994699B (zh) | 视频编解码的运动候选列表构建 | |
| CN113170181B (zh) | 块内拷贝模式中的仿射继承方法 | |
| CN113424525B (zh) | 解码器侧细化工具的尺寸选择性应用 | |
| CN114175636B (zh) | 自适应参数集中的自适应环路滤波的指示 | |
| CN113966616B (zh) | 使用临近块信息的运动候选列表构建 | |
| CN114450959A (zh) | 视频编解码中的几何分割模式 | |
| CN113950840A (zh) | 帧内块复制编解码的块的Merge候选的约束 | |
| CN113994682B (zh) | 具有默认参数的基于历史的运动矢量预测 | |
| CN115152229B (zh) | merge估计区域下IBC块的BV列表构建过程 | |
| CN114097219A (zh) | 基于历史的运动矢量预测表中的运动信息的存储 | |
| CN113273208A (zh) | 仿射预测模式的改进 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |