CN115152229A - merge估计区域下IBC块的BV列表构建过程 - Google Patents

merge估计区域下IBC块的BV列表构建过程 Download PDF

Info

Publication number
CN115152229A
CN115152229A CN202180013156.1A CN202180013156A CN115152229A CN 115152229 A CN115152229 A CN 115152229A CN 202180013156 A CN202180013156 A CN 202180013156A CN 115152229 A CN115152229 A CN 115152229A
Authority
CN
China
Prior art keywords
block
mer
motion
candidates
neighboring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180013156.1A
Other languages
English (en)
Inventor
王洋
张莉
刘鸿彬
张凯
王悦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Douyin Vision Co Ltd
ByteDance Inc
Original Assignee
Douyin Vision Co Ltd
ByteDance Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Douyin Vision Co Ltd, ByteDance Inc filed Critical Douyin Vision Co Ltd
Publication of CN115152229A publication Critical patent/CN115152229A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

描述了merge估计区域下IBC块的BV列表构建过程。视频处理的示例方法包括:对于视频的当前视频块和视频的比特流之间的转换,基于覆盖当前视频块的merge估计区域(MER)来确定当前视频块的一个或多个块矢量(BV)候选;将一个或多个BV候选添加到与当前视频块相关联的BV列表;以及基于BV列表执行转换。

Description

merge估计区域下IBC块的BV列表构建过程
相关申请的交叉引用
根据适用的《专利法》和/或《巴黎公约》的规定,提出本申请是为了及时要求在2020年2月7日提交的国际专利申请第PCT/CN2020/074485号、在2020年3月30日提交的国际专利申请第PCT/CN2020/082125号以及在2020年4月10日提交的国际专利申请第PCT/CN2020/084298号的优先权和权益。国际专利申请第PCT/CN2020/074485号、国际专利申请第PCT/CN2020/082125号以及国际专利申请第PCT/CN2020/084298号的全部公开内容通过引用并入,作为本申请的公开内容的部分。
技术临近
本专利文档涉及图像和视频编解码和解码。
背景技术
数字视频占互联网和其他数字通信网络上最大的带宽使用。随着能够接收和显示视频的连接用户设备数量的增加,预计数字视频使用的带宽需求将继续增长。
发明内容
本文档公开了可由视频编码器和解码器用于视频处理的技术,在视频处理中使用块矢量(BV)列表进行帧内块编解码和解码。
在一个示例方面,公开了一种视频处理方法。该方法包括:对于视频区域的视频的视频块和视频的编解码表示之间的转换,基于选择规则维护块矢量(BV)候选的列表,该选择规则基于视频块的merge估计区域(MER)选择性地指定包括的候选;以及基于BV候选的列表执行转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:确定视频的视频块和视频的编解码表示之间的转换:以及处理基于块矢量历史的候选的列表,该列表遵循以下规则:当视频块在merge估计区域(MER)中的第一种情况下,或者当该列表之前已经在MER内更新过一次的第二种情况下,不更新该列表。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于视频的视频块和视频的编解码表示之间的转换,维护运动候选的列表,基于规则将来自视频块的merge估计区域(MER)的临近块的候选选择性地添加到该列表;以及基于运动候选的列表执行转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于视频的视频块和视频的编解码表示之间的转换,维护运动候选的列表,该列表的尺寸根据尺寸规则取决于视频块是否在merge估计区域(MER)之下;以及基于运动候选的列表执行转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:确定视频的视频块相对于对应的merge估计区域的位置,以及通过基于取决于该位置的规则选择运动列表构建过程来进行视频块和视频的编解码表示之间的转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于视频的视频块确定该视频块的merge估计区域的特性,以及执行视频块和视频的编解码表示之间的转换,其中,在转换期间使用的树划分模式根据规则取决于该特性。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,基于覆盖当前视频块的merge估计区域(MER)来确定当前视频块的一个或多个块矢量(BV)候选;将一个或多个BV候选添加到与当前视频块相关联的BV列表;以及基于BV列表执行转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,在运动候选列表构建过程中,基于覆盖当前视频块的merge估计区域(MER)来确定当前视频块的一个或多个运动候选;在运动候选列表构建过程中,将一个或多个运动候选添加到与当前视频块相关联的运动候选列表;以及基于运动候选列表执行转换。
在另一个示例方面,公开了一种视频处理方法。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,基于与当前视频块相关联的merge估计区域(MER)来确定对二叉树(BT)和/或三叉树(TT)划分的一个或多个规范约束,其中,当前视频块完全在MER内或与MER重叠;以及基于一个或多个规范约束执行转换。
在另一个示例方面,公开了一种存储视频的比特流的方法。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,在运动候选列表构建过程中,基于覆盖当前视频块的merge估计区域(MER)来确定当前视频块的一个或多个运动候选;在运动候选列表构建过程中,将一个或多个运动候选添加到与当前视频块相关联的运动候选列表;基于运动候选列表从当前视频块生成比特流;以及将比特流存储在非暂时性计算机可读记录介质中。
在又一示例方面,公开了一种视频编码器装置。视频编码器包括被配置为实施上述方法的处理器。
在又一示例方面,公开了一种视频解码器装置。视频解码器包括被配置为实施上述方法的处理器。
在又一示例方面,公开了一种其上存储有代码的计算机可读介质。该代码以处理器可执行代码的形式体现了本文描述的方法之一。
这些和其他特征在整个本文档中进行了描述。
附图说明
图1显示了merge候选列表构建的推导过程。
图2显示了空域merge候选的位置。
图3显示了考虑用于空域merge候选的冗余检查的候选对。
图4示出了调色板的示例编解码,其中示出了N×2N和2N×N分割的第二PU的示例位置。
图5为时域merge候选的运动矢量缩放的图示。
图6显示了时域merge候选C0和C1的候选位置的示例。
图7显示了组合双向预测merge候选的示例。
图8显示了运动矢量预测候选的推导过程的示例。
图9为空域运动矢量候选的运动矢量缩放的图示。
图10A-10B显示了简化的仿射模型;4参数仿射模型(图10A)和6参数仿射模型(图10B)。
图11显示了每个子块的仿射MVF的示例。
图12显示了仿射merge模式的候选位置的示例。
图13显示了修改的merge列表构建过程的示例。
图14显示了基于三角形分割的帧间预测的示例。
图15显示了应用第一加权因子组的CU的示例。
图16显示了运动矢量存储的示例。
图17显示了UMVE搜索过程的示例。
图18显示了UMVE搜索点的示例。
图19显示了DMVR中列表0和列表1之间镜像的MVD(0,1)的示例。
图20显示了可在一次迭代中检查的MV的示例。
图21为帧内块复制的图示。
图22为MER的图示。
图23为MER空域临近块的图示。
图24显示了在固定位置处的MER空域临近块的示例。
图25显示了在一个块的自适应位置处的MER空域临近块的示例。
图26显示了在不同块的自适应位置处的MER空域临近块的示例。
图27为示例视频处理系统的框图。
图28为视频处理装置的框图。
图29为视频处理的示例方法的流程图。
图30是图示了根据本公开的一些实施例的视频编解码系统的框图。
图31是图示了根据本公开的一些实施例的编码器的框图。
图32是图示了根据本公开的一些实施例的解码器的框图。
图33显示了MER内不同块位置的示例。
图34为视频处理的示例方法的流程图。
图35为视频处理的示例方法的流程图。
图36为视频处理的示例方法的流程图。
图37为视频处理的示例方法的流程图。
具体实施方式
本文档中使用章节标题是为了便于理解并且不将各章节中公开的技术和实施例的适用性仅限制于该章节。此外,在一些描述中使用H.266术语仅仅是为了易于理解,而不是为了限制所公开技术的范围。因此,本文描述的技术也适用于其他视频编解码器协议和设计。
1.概要
本文档涉及视频编解码技术。具体而言,它涉及帧间编解码和帧内块复制(intrablock copy,IBC)编解码,其中参考(或预测)块是通过当前图片中的样点获得的。它可以应用于现有的视频编解码标准,如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年联合成立了联合视频探索团队(Joint Video Exploration Team,JVET)。从那时起,JVET采用了许多新方法并将其纳入名为联合探索模型(Joint ExplorationModel,JEM)的参考软件。2018年4月,在VCEG(Q6/16)与ISO/IEC JTC1 SC29/WG11(MPEG)之间的联合视频专家团队(Joint Video Expert Team,JVET)创立,以致力于VVC标准,目标是与HEVC相比降低50%比特率。
2.1 HEVC/H.265中的帧间预测
对于帧间编解码的编解码单元(coding unit,CU),根据分割模式,其可以用一个预测单元(prediction unit,PU)、2个PU编解码。每个帧间预测PU具有一个或两个参考图片列表的运动参数。运动参数包含运动矢量和参考图片索引。还可以使用inter_pred_idc信令通知两个参考图片列表之一的使用。运动矢量可以被显式地编解码为相对于预测符的增量。
当CU用跳过模式编解码时,一个PU与CU相关联,并且不存在显著残差系数,不存在编解码运动矢量增量或参考图片索引。指定Merge模式,由Merge模式从临近PU获得当前PU的运动参数,包含空域和时域候选。Merge模式可以被应用于任意帧间预测PU,不仅是跳过模式。作为Merge模式的替代是运动参数的显式传输,其中,对每个PU显式地信令通运动矢量(更准确地,与运动矢量预测符相比的运动矢量差(motion vector difference,MVD))、每个参考图片列表的对应的参考图片索引和参考图片列表的使用知。这样的模式在本公开中称为高级运动矢量预测(Advanced motion vector prediction,AMVP)。
当信令通知指示两个参考图片列表之一要被使用时,从样点的一个块产生PU。这称为‘单向预测’。单向预测对P条带和B条带两者都可用。
当信令通知指示要使用参考图片列表两者时,从样点的两个块产生PU。这称为‘双向预测’。双向预测仅对于B条带可用。
以下文本提供关于HEVC中指定的帧间预测模式的细节。描述将开始于merge模式。
2.2.1参考图片列表
在HEVC中,术语帧间预测被用于表示从参考图片而非当前解码图片的数据元素(例如,样点值或运动矢量)推导的预测。如在H.264/AVC中一样,图片可以从多个参考图片预测。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引标识列表中的参考图片中的哪个应被用于创建预测信令。
单个参考图片列表(列表0)被用于P条带,并且两个参考图片列表(列表0和列表1)被用于B条带。应注意,就捕获/显示顺序而言,包含在列表0/1中的参考图片可以是来自过去和未来的图片。
2.1.2 Merge模式
2.1.2.1 Merge模式的候选的推导
当使用merge模式预测PU时,指向merge候选列表中的条目的索引被从比特流解析并被用于检索运动信息。在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候选列表,其与2N×2N预测单元的merge候选列表相同。
在以下,与前述步骤相关联的操作被详述。
2.1.2.2空域候选推导
在空域merge候选的推导中,在位于图2中描绘的位置中的候选之中选择最多四个merge候选。推导的顺序是左(A1)、上(B1)、右上(B0)、左下(A0)和左上(B2)。仅当位置A1、B1、B0、A0的任意PU不可用(例如因为其属于另一条带或片)或是帧内编解码的时才考虑位置B2。在位置A1处添加候选之后,其余候选的添加经受冗余检查,其确保具有相同运动信息的候选被从列表排除,使得编解码效率得到提高。为降低计算复杂度,不是全部可能的候选对都在提到的冗余检查被考虑。反之,仅与图3中的箭头链接的对被考虑,并且仅如果用于冗余检查的对应的候选不具有相同运动信息才将候选添加到列表。重复的运动信息的另一来源是与不同于2Nx2N的分割相关联的“第二PU”。作为示例,图4分别描绘了N×2N和2N×N的情况的第二PU。在当前PU被分割为N×2N时,对列表构建不考虑位置A1处的候选。事实上,通过添加此候选将导致两个预测单元具有相同的运动信息,这对于在编解码单元中仅具有一个PU是冗余的。相似地,在当前PU分割为2N×N时,不考虑位置B1
2.1.2.3时域候选推导
在该步骤中,仅一个候选被添加到列表。特别地,在推导该时域merge候选时,基于共位图片中的共位PU推导缩放运动矢量。时域merge候选的缩放运动矢量如图5中虚线所示获得,其从共位PU的运动矢量使用POC距离(tb和td)缩放,其中tb被定义为当前图片的参考图片与当前图片之间的POC差,并且td被定义为共位图片的参考图片与共位图片之间的POC差。时域merge候选的参考图片索引被设定为等于零。在HEVC规范中描述了缩放过程的实际实现。对于B条带,两个运动矢量被获得并组合以进行双向预测merge候选,一个用于参考图片列表0且另一个用于参考图片列表1。
图5为时域merge候选的运动矢量缩放的图示。
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是可以在条带标头中被信令通知的两个语法元素。
在属于参考帧的共位PU(Y)中,在候选C0和C1之间选择时域候选的位置,如图6中所示。如果位置C0处的PU不可用、是帧内编解码的或在当前编解码树单元(CTU,又称为LCU,最大编解码单元)行之外,则使用位置C1。否则,在推导时域merge候选中使用位置C0
相关语法元素描述如下:
7.3.6.1通用条带段标头语法
Figure BDA0003784402810000081
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中描述了共位运动矢量的推导过程。
2.1.2.5.1共位运动矢量的推导过程
对于共位块,其可以是使用单向预测或双向预测来进行帧内或帧间编解码的。如果其是帧内编解码的,则TMVP候选被设定为不可用。
如果其是来自列表A的单向预测,则列表A的运动矢量被缩放到目标参考图片列表X。
如果其是双向预测且目标参考图片列表是X,则列表A的运动矢量被缩放到目标参考图片列表X,并且根据以下规则确定A:
–如果没有参考图片具有与当前图片相比的更大POC值,则A被设定为等于X。
–否则,A被设定为等于collocated_from_l0_flag。
JCTVC-W1005-v4中的相关工作草案描述如下:
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候选的组合的许多规则,在[1]中定义。
图7显示了组合双向预测merge候选的示例。
插入零运动候选以填充merge候选列表中的其余条目,并且因此达到MaxNumMergeCand容量。这些候选具有零空域移位和参考图片索引,所述参考图片索引始自零且每次新的零运动候选被添加到列表时增大。最终,不在这些候选上进行冗余检查。
2.1.3 AMVP
AMVP利用运动矢量与临近PU的空域-时域关联,其被用于运动参数的显式传输。对于每个参考图片列表,通过以下来构建运动矢量候选列表:首先检查左、上时域上临近PU位置的可用性,移除冗余候选,以及添加零矢量以使候选列表为恒定长度。然后,编码器可以从候选列表选择最佳预测符并传输指示所选候选的对应的索引。与merge索引信令通知相似,使用截断一元编码最佳运动矢量候选的索引。在此情况下编码的最大值是2(见图8)。在以下章节中,提供了关于运动矢量预测候选的推导过程的细节。
2.1.3.1 AMVP候选的推导
图8概括了运动矢量预测候选的推导过程。
在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选推导,基于如图2所示的位于五个不同位置中的每个PU的运动矢量,最终推导两个运动矢量候选。
对于时域运动矢量候选推导,从两个候选中选择一个运动矢量候选,所述两个候选是基于两个不同共位位置推导的。在产生空时候选的第一列表之后,列表中的重复的运动矢量候选被移除。如果潜在候选的数量大于二,则相关联的参考图片列表内的参考图片索引大于1的运动矢量候选被从列表移除。如果空时运动矢量候选的数量小于二,则附加零运动矢量候选被添加到列表。
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)
首先检查无空域缩放情况,之后检查空域缩放。在临近PU的参考图片与当前PU的参考图片之间的POC不同时考虑空域缩放,而无论参考图片列表。如果左候选的全部PU都不可用或是帧内编解码的,则允许对上运动矢量的缩放,以帮助左和上MV候选的并行推导。否则,对于上运动矢量不允许空域缩放。
在空域缩放过程中,临近PU的运动矢量以与时域缩放相似方式缩放,如图9所示。主要差异是,当前PU的参考图片列表和索引被给定作为输入;实际缩放过程与时域缩放的缩放过程相同。
2.1.3.3时域运动矢量候选
除参考图片索引推导之外,推导时域merge候选的全部过程与推导空域运动矢量候选的过程(见图6)相同。参考图片索引被信令通知到解码器。
2.2VVC中的帧间预测方法
存在用于帧间预测改善的若干新的编解码工具,诸如用于信令通知MVD的自适应运动矢量差分辨率(Adaptive Motion Vector difference Resolution,AMVR)、具有运动矢量差的Merge(Merge with Motion Vector Differences,MMVD)、三角形预测模式(Triangular prediction mode,TPM)、组合帧内帧间预测(Combined intra-interprediction,CIIP)、高级TMVP(Advanced TMVP,ATMVP,又称为SbTMVP)、仿射预测模式、广义双向预测(Generalized Bi-Prediction,GBI)、解码器侧运动矢量细化(Decoder-sideMotion Vector Refinement,DMVR)和双向光流(Bi-directional Optical flow,BIO,又称为BDOF)。
存在VVC中支持的三种不同merge列表构建过程:
1)子块merge候选列表:其包含ATMVP和仿射merge候选。一种merge列表构建过程被仿射模式和ATMVP模式两者共享。此处,可以按顺序添加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帧采用分离树(又称为双编解码树)。在分离树的情况下,编解码块结构对于亮度和色度分量被分开地信令通知。
此外,除了用几个特定编解码方法(诸如帧内子分割预测,其中PU等于TU,但小于CU;以及帧间编解码块的子块变换,其中PU等于CU,但TU小于PU)编解码的块之外,CU被设定为等于PU和TU。
2.2.2仿射预测模式
在HEVC中,仅对运动补偿预测(motion compensation prediction,MCP)应用平移运动模型。而在现实世界中,存在许多种类的运动,例如拉近/推远、旋转、透视运动和其他非常规运动。在VVC中,以4参数仿射模型和6参数仿射模型应用简化仿射变换运动补偿预测。如图10A-10B所示,块的仿射运动场对于4参数仿射模型(图10A)由两个控制点运动矢量(control point motion vector,CPMV)描述,并且对于6参数仿射模型(图10B)由3个CPMV描述。
块的运动矢量场(motion vector field,MVF)由以下等式描述,分别在4参数仿射模型(其中4参数定义为变量a、b、e和f)的情况下以等式(1)描述,并且在6参数仿射模型(其中4参数定义为变量a、b、c、d、e和f)的情况下以等式(2)描述:
Figure BDA0003784402810000151
Figure BDA0003784402810000152
其中(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中的4x4),代表性点被用于推导整个子块的运动矢量。
为了进一步简化运动补偿预测,应用基于子块的仿射变换预测。为了推导每个M×N(在当前VVC中,M和N都被设定为4)子块的运动矢量,根据等式(1)和(2)计算如图11所示的每个子块的中心样点的运动矢量,并且取整到1/16分数准确度。然后1/16像素的运动补偿插值滤波器被用于以推导的运动矢量生成每个子块的预测。1/16像素的插值滤波器由仿射模式引入。
在MCP之后,每个子块的高准确度运动矢量被取整并保存为与普通运动矢量相同的准确度。
2.2.3整个块的MERGE
2.2.3.1平移常规merge模式的merge列表构建
2.2.3.1.1基于历史的运动矢量预测(History-based Motion VectorPrediction,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候选列表构建过程(以蓝色高亮)。当merge候选列表在TMVP候选插入之后未满时,存储在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三角形预测模式(Triangular Prediction mode,TPM)
在VVC中,对帧间预测支持三角形分割模式。三角形分割模式仅应用于8x8或更大的且以merge模式但不以MMVD或CIIP模式编解码的CU。对于满足这些条件的CU,信令通知CU级别标志以指示是否应用三角形分割模式。
当使用该模式时,CU被均匀划分为两个三角形形状的分割,使用对角划分或反对角划分,如图14所示。CU中的每个三角形分割是使用其自身运动帧间预测的;对每个分割仅允许单向预测,即,每个分割具有一个运动矢量和一个参考索引。应用单向预测运动约束以确保与常规双向预测相同,每个CU需要仅两个运动补偿的预测。
如果CU级别标志指示当前CU是使用三角形分割模式编解码的,则进一步信令通知指示三角形分割的方向(对角或反对角)的标志以及两个merge索引(每个分割一个)。在预测三角形分割中的每一个之后,使用具有自适应权重的混合处理调整沿着对角或反对角边缘的样点值。这是整个CU的预测信令,并且变换和量化过程将应用于整个CU,如在其他预测模式中一样。最终,使用三角形分割模式预测的CU的运动场存储在4x4单元中。
常规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,无论在添加B2之前有多少可用空域merge候选。
2.2.4.2自适应加权过程
在预测每个三角形预测单元之后,自适应加权过程被应用于两个三角形预测单元之间的对角边缘,以推导整个CU的最终预测。两个加权因子组定义如下:
●第1加权因子组:{7/8,6/8,4/8,2/8,1/8}和{7/8,4/8,1/8}分别被用于亮度和色度样点;
●第2加权因子组:{7/8,6/8,5/8,4/8,3/8,2/8,1/8}和{6/8,4/8,2/8}分别被用于亮度和色度样点。
基于两个三角形预测单元的运动矢量的比较而选择加权因子组。当以下条件中的任一个为真时,使用第2加权因子组:
–两个三角形预测单元的参考图片彼此不同
–两个运动矢量的水平值的差的绝对值大于16像素。
–两个运动矢量的垂直值的差的绝对值大于16像素。
否则,使用第1加权因子组。图15中示出了示例。
2.2.4.3运动矢量存储
三角形预测单元的运动矢量(图16中的Mv1和Mv2)存储在4×4网格中。对于每个4×4网格,取决于4×4网格在CU中的位置,存储单向预测或双向预测运动矢量。如图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通用条带标头语法
Figure BDA0003784402810000191
7.3.7.5编解码单元语法
Figure BDA0003784402810000192
Figure BDA0003784402810000201
7.3.7.7 Merge数据语法
Figure BDA0003784402810000202
Figure BDA0003784402810000211
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。
–否则,pred_mode_flag分别在解码I条带时被推断为等于1和在解码P或B条带时被推断为等于0。
对于x=x0..x0+cbWidth–1且y=y0..y0+cbHeight–1,变量CuPredMode[x][y]被推导如下:
–如果pred_mode_flag等于0,则CuPredMode[x][y]被设定为等于MODE_INTER。
–否则(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。
–否则,pred_mode_ibc_flag分别在解码I条带时被推断为等于sps_ibc_enabled_flag的值和在解码P或B条带时被推断为等于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–对帧间预测模式的名称关联
Figure BDA0003784402810000231
当inter_pred_idc[x0][y0]不存在时,其被推断为等于PRED_L0。
7.4.8.7Merge数据语义
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]的规范
Figure BDA0003784402810000241
mmvd_direction_idx[x0][y0]指定用于推导MmvdSign[x0][y0]的索引,如表7-13中所指定。阵列索引x0、y0指定相对于图片的左上亮度样点的所考虑编解码块的左上亮度样点的位置(x0,y0)。
表7-13–基于mmvd_direction_idx[x0][y0]的MmvdSign[x0][y0]的规范
mmvd_direction_idx[x0][y0] MmvdSign[x0][y0][0] MmvdSign[x0][y0][1]
0 +1 0
1 -1 0
2 0 +1
3 0 -1
Merge加上MVD偏移MmvdOffset[x0][y0]的两个分量推导如下:
MmvdOffset[x0][y0][0]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][0] (7-124)
MmvdOffset[x0][y0][1]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][1] (7-125)
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时,变量IntraPredModeY[x][y]被设定为等于INTRA_PLANAR,其中x=xCb..xCb+cbWidth–1且y=yCb..yCb+cbHeight–1。
变量MergeTriangleFlag[x0][y0](其指定当解码B条带时基于三角形形状的运动补偿是否被用于生成当前编解码单元的预测样点)被推导如下:
–如果全部以下条件为真,则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.2Merge模式的亮度运动矢量的推导过程
仅当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.3中规定的从临近编解码单元对空域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。变量availableFlagCol、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被构建如下:
Figure BDA0003784402810000271
Figure BDA0003784402810000281
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。添加的候选的数量numZeroMergeCand被设定为等于(numCurrMergeCand-numOrigMergeCand)。当numZeroMergeCand大于0时,m范围为从0至numZeroMergeCand-1(含端值)。
10.进行以下分配,其中N是在merge候选列表mergeCandList中的位置merge_idx[xCb][yCb]处的候选(N=mergeCandList[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作为输出。
–对于X为0和1,运动矢量差mMvdLX被添加到Merge运动矢量mvLX如下所示:
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.5 MMVD
呈现了最终运动矢量表达(Ultimate motion vector expression,UMVE,又已知为MMVD)。UMVE被以提议的运动矢量表达方法用于跳过或merge模式。
UMVE重复使用与包含在VVC中的常规merge候选列表中相同的merge候选。在merge候选之中,可以选择基础候选,并且通过提出的运动矢量表达方法进一步扩展。
UMVE提供了新的运动矢量差(MVD)表示方法,其中起点、运动幅度和运动方向被用于表示MVD。
图17显示了UMVE搜索过程的示例。
图18显示了UMVE搜索点的示例。
该提出的技术使用原本的merge候选列表。但对于UMVE的扩展仅考虑默认merge类型(MRG_TYPE_DEFAULT_N)的候选。
基础候选索引定义起点。基础候选索引指示如下列表中的候选之中的最佳候选。
表4.基础候选IDX
基础候选IDX 0 1 2 3
N<sup>th</sup> MVP 1<sup>st</sup> MVP 2<sup>nd</sup> MVP 3<sup>rd</sup> MVP 4<sup>th</sup> MVP
如果基础候选的数量等于1,则基础候选IDX不被信令通知。
距离索引是运动幅度信息。距离索引指示距起点信息预定义的距离。预定义的距离如下:
表5.距离IDX
Figure BDA0003784402810000301
方向索引表示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,则解析仿射标志。如果仿射标志等于1,即仿射模式,但如果不是1,则对于VTM的跳过/merge模式解析跳过/merge索引。
不需要由于UMVE候选的附加线缓冲器。因为软件的跳过/merge候选直接用作基础候选。使用输入UMVE索引,刚好在运动补偿之前确定MV的补充。不需要为此保留长线缓冲器。
在当前普通测试条件中,merge候选列表中的第一或第二merge候选可以被选择为基础候选。
UMVE又已知为具有MV差异的Merge(Merge with MV Differences,MMVD)。
2.2.6组合帧内帧间预测(CIIP)
提议了多假设预测,其中组合帧内和帧间预测是生成多个假设的一种方式。
当多假设预测被应用于改善帧内模式时,多假设预测组合一个帧内预测和一个merge索引的预测。在merge CU中,对merge模式信令通知一个标志以在标志为真时从帧内候选列表中选择帧内模式。对于亮度分量,仅从一个帧内预测模式(即,平面模式)推导帧内候选列表。应用于来自帧内和帧间预测的预测块的权重由两个临近块(A1和B1)的编解码模式(帧内或非帧内)确定。
2.2.7基于子块的技术的merge
建议将与全部子块有关的运动候选放入除非子块merge候选的常规merge列表之外的分开的merge列表。
将与子块有关的运动候选放入名为“子块merge候选列表”的分开的merge列表中。
在一个示例中,子块merge候选列表包含ATMVP候选和仿射merge候选。
子块merge候选列表按以下顺序填充有候选:
a.ATMVP候选(可能可用或不可用);
b.仿射merge列表(包含继承的仿射候选;和构建的仿射候选)
c.填充为零MV 4参数仿射模型
2.2.7.1 ATMVP(又称为子块时域运动矢量预测符,SbTMVP)
ATMVP的基本思想是对一个块推导多组时域运动矢量预测符。每个子块分配有一组运动信息。当生成ATMVP merge候选时,在8x8级别而非整个块级别进行运动补偿。
在当前设计中,ATMVP在两个步骤中预测CU内的子CU的运动矢量,该两个步骤分别在以下两个子章节2.2.7.1.1和2.2.7.1.2中描述。
2.2.7.1.1.1初始化运动矢量的推导
由tempMv表示初始化运动矢量。当块A1可用且非帧内编解码(即,用帧间或IBC模式编解码)时,以下被应用于推导初始化运动矢量。
–如果以下条件全部为真,则tempMv被设定为等于来自列表1的块A1的运动矢量,由mvL1A1表示:
–列表1的参考图片索引可用(不等于-1),并且其具有与共位图片相同的POC值(即,DiffPicOrderCnt(ColPic,RefPicList[1][refIdxL1A1])等于0),
–全部参考图片具有与当前图片相比非更大的POC(即,DiffPicOrderCnt(aPic,currPic)对于当前条带的每个参考图片列表中的每个图片aPic小于或等于0),
–当前条带等于B条带,
–collocated_from_l0_flag等于0。
–否则,如果全部以下条件为真,则tempMv被设定为等于来自列表0的块A1的运动矢量,由mvL0A1表示:
–列表0的参考图片索引可用(不等于-1),
–其具有与共位图片相同的POC值(即,DiffPicOrderCnt(ColPic,RefPicList[0][refIdxL0A1])等于0)。
–否则,零运动矢量被用作初始化MV。
对应的块(当前块的中心位置加上取整MV,必要时裁剪到特定范围内)于在具有初始化运动矢量的条带标头处信令通知的共位图片中被标识。
如果块是帧间编解码的,则去往第2步骤。否则,ATMVP候选被设定为不可用。
2.2.7.1.1.2子CU运动推导
第二步骤是将当前CU划分为子CU,并且从对应于共位图片中的每个子CU的块获取每个子CU的运动信息。
如果子CU的对应的块是以帧间模式编解码的,则通过调用与常规TMVP过程没有区别的共位MV的推导过程,来将运动信息用于推导当前子CU的最终运动信息。基本上,如果对应的块对于单向预测或双向预测是从目标列表X预测的,则采用运动矢量;否则,如果其对于单向或双向预测是从列表Y(Y=1-X)预测的且NoBackwardPredFlag等于1,则采用列表Y的MV。否则,无法找到运动候选。
如果由初始化MV和当前子CU的位置标识的共位图片中的块是帧内或IBC编解码的,或如前所述无法找到运动候选,则进一步应用以下:
将用于取回共位图片Rcol中的运动场的运动矢量表示为MVcol。为了最小化由于MV缩放造成的影响,以以下方式选择用于推导MVcol的空域候选列表中的MV:如果候选MV的参考图片是共位图片,则该MV被选择并被用作MVcol而不进行任何缩放。否则,具有最接近共位图片的参考图片的MV被选择以在缩放的情况下推导MVcol
共位运动矢量推导过程的相关解码过程描述如下,其中与ATMVP有关的部分以
Figure BDA0003784402810000331
高亮:
8.5.2.12共位运动矢量的推导过程
该过程的输入是:
–变量currCb,指定当前编解码块,
–变量colCb,指定由ColPic指定的共位图片之内的共位编解码块,
–亮度位置(xColCb,yColCb),指定相对于由ColPic指定的共位图片的左上亮度样点的由colCb指定的共位亮度编解码块的左上样点,
–参考索引refIdxLX,其中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[xColCb][yColCb]等于0,则mvCol、refIdxCol和listCol被分别设定为等于mvL1Col[xColCb][yColCb]、refIdxL1Col[xColCb][yColCb]和L1。
–否则,如果predFlagL0Col[xColCb][yColCb]等于1且predFlagL1Col[xColCb][yColCb]等于0,则mvCol、refIdxCol和listCol被分别设定为等于mvL0Col[xColCb][yColCb]、refIdxL0Col[xColCb][yColCb]和L0。
–否则(predFlagL0Col[xColCb][yColCb]等于1且predFlagL1Col[xColCb][yColCb]等于1),进行以下分配:
–如果NoBackwardPredFlag等于1,则mvCol、refIdxCol和listCol被分别设定为等于mvLXCol[xColCb][yColCb],refIdxLXCol[xColCb][yColCb]和LX。
–否则,mvCol、refIdxCol和listCol被分别设定为等于mvLNCol[xColCb][yColCb]、refIdxLNCol[xColCb][yColCb]和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等于真时,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)
其中td和tb推导如下:
td=Clip3(-128,127,colPocDiff) (8-408)
tb=Clip3(-128,127,currPocDiff) (8-409)
2.2.8运动信息的细化
2.2.8.1解码器侧运动矢量细化(Decoder-side Motion Vector Refinement,DMVR)
在双向预测操作中,对于一个块区域的预测,分别使用list0的运动矢量(motionvector,MV)和list1的MV形成的两个预测块被组合以形成单个预测信令。在解码器侧运动矢量细化(DMVR)方法中,双向预测的两个运动矢量被进一步细化。
对于VVC中的DMVR,在列表0和列表1之间MVD镜像被如图19所示假设,并且进行双边匹配以细化MV,即,寻找若干MVD候选之中的最佳MVD。由MVL0(L0X,L0Y)和MVL1(L1X,L1Y)表示两个参考图片列表的MV。由能够最小化成本函数(例如,SAD)的列表0的(MvdX,MvdY)表示的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;
如果(Sad(1,0)<Sad(-1,0))
则MvdX=1;
如果(Sad(0,1)<Sad(0,-1))
则MvdY=1;
在第一迭代中,起点是信令通知的MV,并且在第二迭代中,起点是信令通知的MV加上在第一迭代中所选择的最佳MVD。仅当一个参考图片是在前的图片并且另一参考图片是在后的图片并且两个参考图片具有距当前图片相同的图片顺序计数距离时,应用DMVR。
图19显示了DMVR中列表0和列表1之间镜像的MVD(0,1)的示例。
图20显示了可在一次迭代中检查的MV的示例。
为了进一步简化DMVR的过程,对JEM中的设计提议了若干改变。更具体地,对VTM-4.0(即将发布)所采用的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。
·仅用于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帧内块复制
帧内块复制(IBC)(又称为当前图片参考)已经在HEVC屏幕内容编解码扩展(HEVCScreen Content Coding extension,HEVC-SCC)和当前VVC测试模型(VTM-4.0)中被采用。IBC将运动补偿的概念从帧间帧编解码扩展到帧内帧编解码。如图20所示,当应用IBC时,由相同图片中的参考块预测当前块。在当前块编解码或解码之前,参考块中的样点必须已经被重建。虽然IBC对于大部分相机捕获的序列不是很有效率,但其对屏幕内容显示出了显著编解码优势。原因是屏幕内容中存在许多重复图案,诸如屏幕内容图片中的图标和文本字符。IBC可以有效移除这些重复图案之间的冗余。在HEVC-SCC中,帧间编解码的编解码单元(CU)如果其选择当前图片作为其参考图片则可以应用IBC。在此情况下,MV被称为块矢量(BV),并且BV总是具有整数像素精度。为了与主配置文件HEVC兼容,当前图片在解码图片缓冲器(Decoded Picture Buffer,DPB)中被标记为“长期”参考图片。应注意,相似地,在多视图/3D视频编解码标准中,帧间视图参考图片也被标记为“长期”参考图片。
遵循BV找到其参考块,可以通过复制参考块生成预测。可以通过从原始信令减去参考像素得到残差。然后可以像在其他编解码模式中一样应用变换和量化。图21是帧内块复制的图示。
然而,当参考块在图片之外,或与当前块重叠,或在重建区域之外,或在由一些约束限制的有效区域之外时,部分或全部像素值未被定义。基本上,存在两种方案来解决这样的问题。一种是例如在比特流一致性中禁止这样的情况。另一种是为那些未定义的像素值应用填充。以下子会话详细描述了该方案。
2.3.1 VVC测试模型(VTM4.0)中的IBC
在当前VVC测试模型(即VTM-4.0设计)中,整个参考块应与当前编解码树单元(CTU)一起且不与当前块重叠。因此,不需要填充参考块或预测块。IBC标志被编解码为当前CU的预测模式。因此,对于每个CU存在总共三种预测模式,MODE_INTRA、MODE_INTER和MODE_IBC。
2.3.1.1 IBC Merge模式
在IBC merge模式中,从比特流解析指向IBC merge候选列表中的条目的索引。IBCmerge列表的构建可以根据以下步骤的序列概括:
●步骤1:推导空域候选
●步骤2:插入HMVP候选
●步骤3:插入成对平均候选
在空域merge候选的推导中,在位于A1、B1、B0、A0和B2所示位置中的候选之中选择最多四个merge候选,如图2所示。推导的顺序是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.2IBC AMVP模式
在IBC AMVP模式中,从比特流解析指向IBC AMVP列表中的条目的AMVP索引。IBCAMVP列表的构建可以根据以下步骤的序列概括:
·步骤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(VTM5.0中)IBC的近期进展
2.3.2.1单个BV列表
IBC中的merge模式和AMVP模式的BV预测符将共享公共预测符列表,其由以下元素构成:
·2个空域临近位置(如图2中的A1、B1)
·5个HMVP条目
·默认零矢量
列表中的候选的数量由从条带标头推导的变量控制。对于merge模式,将使用该列表的至多前6个条目;对于AMVP模式,将使用该列表的前2个条目。并且该列表符合共享merge列表区域要求(SMR内的共享的相同列表)。
除了上述BV预测符候选列表,还提议了简化HMVP候选与现有merge候选(A1、B1)之间的修剪操作。在简化中,将存在至多2个修剪操作,因为其仅将第一HMVP候选与(多个)空域merge候选作比较。
2.3.2.2 IBC的尺寸限制
在最新的VVC和VTM5中,提出在此前VTM和VVC版本中的当前比特流约束之上显式地使用语法约束来禁用128x128 IBC模式,这使得IBC标志的存在取决于CU尺寸<128x128。
2.3.2.3用于IBC的共享merge列表
为了降低解码器复杂度并支持并行编码,提出为CU划分树中的一个祖先节点的所有叶编解码单元(CU)共享相同的merge候选列表,用于实现小型跳过/merge编解码的CU的并行处理。祖先节点被命名为merge共享节点。在merge共享节点处生成共享merge候选列表,假设merge共享节点为叶CU。
更具体而言,以下可以适用:
–如果块具有不大于32的亮度样点,并且被划分成2个4×4子块,则在非常小的块(例如,两个相邻4×4块)之间使用共享merge列表。
–不过,如果该块具有大于32的亮度样点,在划分之后,至少一个子块小于阈值(32),则该划分的所有子块共享相同merge列表(例如,16×4或4×16三元划分或8×8四元划分)。
这样的限制仅应用于IBC merge模式。
2.4 Merge估计区域
在HEVC/H.265中引入了merge估计区域(MER)以允许对相同MER中编解码单元独立推导merge候选列表。与当前编解码单元在相同MER中的候选块不包括在merge候选列表中。如果xPb>>Log2ParMrgLevel等于xNbA1>>Log2ParMrgLevel且yPb>>Log2ParMrgLevel等于yNbA1>>Log2ParMrgLevel,则空域merge候选的可用性被设定为假。其中Log2ParMrgLevel等于2+log2_parallel_merge_level_MINUS 2,xPb和yPb是当前块的坐标,xNbA1和yNbA1是空域临近块的坐标。MER尺寸是自适应的,并在图片参数集中信令通知为log2_parallel_merge_level_minus2。
图22显示了MER的示例。如图22所示,与当前编解码单元在相同MER(MER 3)中的灰色块不包括在merge候选列表中,而在不同MER(MER2)中的蓝色块可以包括在merge候选列表中。
图22为MER的图示。
3由本文描述的方案和实施例解决的技术问题的示例
MER之下的IBC块的当前设计具有以下问题:
1.在MER之下很好地定义了一般merge或仿射merge的merge候选列表构建过程。然而,IBC块的块矢量(BV)merge列表构建过程是未定义的。因此,当启用IBC时,不能使用MER。
2.在当前设计中,当临近块在MER内时,它被标记为不可用。因此,对于某些CU,可能会出现所有空域临近块都不可用的情况。如何更好地处理这种情况需要进一步研究。
4示例实施例和技术的列表
在本文档中,帧内块复制(IBC)可不限于当前的IBC技术,但可解释为使用当前条带/片/子图片/图片/其他视频单元(如CTU行)中的样点获得参考(或预测)块的技术,不包括传统的帧内预测方法。为解决上述问题,提议了MER之下IBC块的BV列表构建过程。
以下项目列表应被视为解释一般概念的示例。不应以狭隘的方式解释这些项目。此外,这些项目可以以任何方式组合。
“在MER之下”可解释为“在MER内”,或“与MER重叠”,或“当前编解码块的尺寸不大于MER的尺寸”。
图23为MER空域临近块的图示。
MER空域临近块被定义为当前MER之外的那些块。此外,还引入了两个概念:MER空域相邻临近块和MER空域非相邻临近块。MER的MER空域相邻临近块是位于与MER区域空域上相邻的那些块,而MER的MER空域非相邻临近块是位于与MER区域空域上非相邻的那些块。对于这两种情况,它们都应在当前MER之外。对于右下MER,在图23中描绘了MER空域相邻临近块(例如,C0、C1、D0、D1和D2)和MER空域非相邻临近块(例如,E0、E1、F0、F1和F2)的示例。
IBC块的BV列表构建过程
1.当构建IBC编解码块的BV列表时,不能使用来自覆盖当前块的MER之下的空域临近(相邻或/和非相邻)块的BV候选。
a.提议当构建IBC编解码块的BV列表时,可以仅使用来自覆盖当前块的MER之外的空域临近(相邻或/和非相邻)块的BV候选,或/和来自IBC HMVP表的BV候选,或/和默认BV候选。
b.在一个示例中,可以将来自IBC HMVP表的BV候选添加到BV列表。
i.或者,此外,可以不将来自空域临近块的BV候选插入到BV列表中。
ii.在一个示例中,可以以预定义的顺序将来自IBC HMVP表的BV候选添加到BV列表,或者/和当添加这样的BV候选时不进行修剪。
1)在一个示例中,该顺序基于表的条目索引的升序。
2)在一个示例中,该顺序基于表的条目索引的降序。
3)在一个示例中,可以跳过表中的前N个条目。
4)在一个示例中,可以跳过表中的最后N个条目。
5)在一个示例中,可以跳过具有(多个)无效BV的条目。
iii.或者,此外,来自IBC HMVP候选的BV候选可以在被插入BV列表之前被修改。
1)例如,可以将偏移添加到来自IBC HMVP表的BV候选的水平分量和/或垂直分量。
2)例如,可以将具有(多个)无效BV的HMVP候选修改为具有(多个)有效BV的候选。
iv.或者,此外,可以在一个或多个HMVP BV候选之后或之前添加默认BV候选。
1)在一个示例中,默认BV候选可以被定义为(BVx,BVy)。
a.在一个示例中,BVx=0,BVy=0。
b.在一个示例中,BVx=–W,BVy=–H,其中W和
H是当前块的宽度和高度。
c.在一个示例中,BV列表可以指IBC AMVP列表或/和IBC merge列表。
2.在MER之下解码视频块(例如,CU)之后,BV HMVP表(即,用于IBC编解码块的HMVP表)可能不被更新。
3.BV HMVP表在MER内只能更新一次。
a.在一个示例中,仅在当前CU不在MER内,或者其右下角与MER的右下角重合时,BVHMVP表才被更新。
运动列表构建过程(例如,BV列表,或正常(非子块)merge列表,或子块merge列表)
4.建议在运动列表构建过程期间可以使用来自MER空域临近块(例如,MER空域相邻临近块和/或MER空域非相邻临近块)的运动信息。
何时开始检查MER空域临近块或开始添加来自MER空域临近块的运动候选
a.在一个示例中,当要检查的临近块(例如,图23中的A0)不可用时(例如,在与当前块相同的MER内),替代地检查MER空域临近块。
i.或者,此外,如果MER空域临近块的运动信息可用,则可以使用它来推导候选,该候选可以作为从空域块推导的候选的替换而被直接添加到运动列表中。
b.在一个示例中,可以在检查了所有空域临近块之后,检查MER空域临近块。
i.或者,此外,可以在空域merge候选之后添加来自MER空域临近块的运动信息。
c.在一个示例中,可以在检查HMVP候选之后,检查MER空域临近块。
i.或者,此外,可以在HMVP候选之后添加来自MER空域临近块的运动信息。
要检查多少个MER空域临近块;有多少来自MER临近块的候选
d.在一个示例中,可以将来自MER空域相邻临近块和MER空域非相邻临近块的最多X(X是整数)个候选添加到运动列表,例如,X等于2。
要检查哪些MER空域临近块
e.在一个示例中,可以检查固定位置处的MER空域临近块,并且可以在运动列表构建过程中使用来自那些固定位置的运动信息。
i.对于相同MER内的两个块(例如,图24中的CU0和CU1),可以定义允许的MER空域临近块的相同集合,并且可以仅检查和使用该集合中的那些块。
1)在一个示例中,可以仅检查和使用图24中标记为C0、C1、D0、D1和D2的块中的一个或多个。
2)在一个示例中,可以仅检查和使用图24中标记为E0、E1、E0、F1和F2的块中的一个或多个。
3)在一个示例中,在当前块的临近相邻块不可用时,通过假设当前块尺寸等于MER尺寸,可以替代地使用对应的MER空域临近块。用(x0,y0)表示当前块相对于当前图片的左上样点的左上位置,用bW表示块宽度,用bH表示块高度,用mW表示MER宽度,以及用mH表示MER高度(例如在图24中表示),以下可以适用:
a.在一个示例中,如果位于(x0-1,y0+bH-1)的左块(例如,A1)不可用,则可以使用位于((x0>>Log2(mW))<<Log2(mW)-1,(y0>>Log2(mH))<<Log2(mH)+mH-1)的块(例如,C1)
b.在一个示例中,如果位于(xCb-1,yCb+cbHeight)的左下块(例如,A0)不可用,则可以使用位于((x0>>Log2(mW))<<Log2(mW)-1,(y0>>Log2(mH))<<Log2(mH)+mH)的块(例如,C0)
c.在一个示例中,如果位于(x0+bW,y0-1)的右上块(例如,B0)不可用,则可以使用位于((x0>>Log2(mW))<<Log2(mW)+mW,(y0>>Log2(mH))<<Log2(mH)-1)的块(例如,D0)
d.在一个示例中,如果位于((x0>>Log2(mW))<<Log2(mW)+mw1,y0-1)的上块(例如,B1)不可用,则可以使用位于(x0+bW-1,(y0>>Log2(mH))<<Log2(mH)-1)的块(例如,D1)
e.在一个示例中,如果位于(x0-1,y0-1)的左上块(例如,B2)不可用,则可以使用位于((x0>>Log2(mW))<<Log2(mW)-1,(y0>>Log2(mH))<<Log2(mH)-1)的块。
f.在一个示例中,可以检查自适应位置处的MER空域临近块,并且可以在运动列表构建过程中使用来自那些自适应位置的运动信息。在这种情况下,至少对于MER之下的两个块,要检查的块中的至少一个是不同的。
i.在一个示例中,在当前块的临近相邻块不可用时,通过假设当前块尺寸等于MER尺寸,可以替代地使用对应的MER空域临近块。用(x0,y0)表示当前块相对于当前图片的左上样点的左上位置,用bW表示块宽度,用bH表示块高度,用mW表示MER宽度,以及用mH表示MER高度(例如在图25中表示),以下可以适用:
1)在一个示例中,如果位于(x0-1,y0+bH-1)的左块(例如,A1)不可用,则可以使用位于((x0>>Log2(mW))<<Log2(mW)-1,y0+bH-1)的块(例如,C1)
2)在一个示例中,如果位于(xCb-1,yCb+cbHeight)的左下块(例如,A0)不可用,则可以使用位于((x0>>Log2(mW))<<Log2(mW)-1,y0+bH)的块(例如,C0)
3)在一个示例中,如果位于(x0+bW,y0-1)的右上块(例如,B0)不可用,则可以使用位于(x0+bW,(y0>>Log2(mH))<<Log2(mH)-1)的块(例如,D0)
4)在一个示例中,如果位于(x0+bW-1,y0-1)的上块(例如,B1)不可用,则可以使用位于(x0+bW-1,(y0>>Log2(mH))<<Log2(mH)-1)的块(例如,D1)
5)在一个示例中,如果位于(x0-1,y0-1)的左上块(例如,B2)不可用,则可以使用位于((x0>>Log2(mW))<<Log2(mW)-1,(y0>>Log2(mH))<<Log2(mH)-1)的块。
ii.对于相同MER内的不同块(例如,图26中的CU0和CU1),可以定义允许的MER空域临近块的不同集合,并且可以仅检查和使用该集合中的那些块。
1)在一个示例中,可在CU0的运动列表构建中仅检查和使用图26中标记为C0、C1、D0、D1和D2的块中的一个或多个。
2)在一个示例中,可在CU0的运动列表构建中仅检查和使用图26中标记为E0、E1、F0、F1和F2的块中的一个或多个。
3)在一个示例中,可在CU1的运动列表构建中仅检查和使用图26中标记为C'0、C'1、D'0、D'1和D'2的块中的一个或多个。
4)在一个示例中,可在CU1的运动列表构建中仅检查和使用图26中标记为E'0、E'1、F'0、F'1和F'2的块中的一个或多个。
g.在一个示例中,是否可以将来自MER空域临近块的运动候选添加到运动列表可以取决于MER空域临近块的位置和/或可用性。
i.在一个示例中,在运动列表构建过程期间,可以使用来自MER之外的MER空域相邻或/和非相邻临近块(例如,图22中的左下、左、右上、左上和上临近块)中的至少一个的运动候选(例如,IBC候选,或正常帧间候选,或子块候选(例如,仿射))。
1)在一个示例中,可以将位于特定位置的运动候选添加到运动列表中。
a.在一个示例中,“特定位置”可以是C1、D1(或E1、F1)。
b.在一个示例中,“特定位置”可以是D1、C1(或F1、E1)。
c.在一个示例中,“特定位置”可以是C1、D1、D2(或者E1、F1、F2)。
d.在一个示例中,“特定位置”可以是D1、D2(或F1、F2)。
e.在一个示例中,“特定位置”可以是C1、D2(或E1、F2)。
2)在一个示例中,可以将来自空域临近块的候选遵循预定义顺序插入运动列表。
a.在一个示例中,“预定义顺序”可以是C1、C0、D0、D1和D2(或者E1、E0、F0、F1和F2)。
b.在一个示例中,“预定义顺序”可以是D1、D0、C1、C0和D2(或者F1、F0、E1、E0和F2)。
c.在一个示例中,“预定义顺序”可以是D2、C1、D1、C0和D0(或者F2、E1、F1、E0和F0)。
3)在一个示例中,在运动列表构建过程中,可以使用来自MER之外的非相邻左下、左、右上、左上和上临近块中的至少一个的BV候选。
ii.在一个示例中,仅当块以特定模式编解码时,该块才被认为是可用的。
1)在一个示例中,“特定模式”可以指IBC模式。
2)在一个示例中,“特定模式”可指正常帧间模式(例如,基于平移运动的帧间模式)。
3)在一个示例中,“特定模式”可以指仿射模式。
iii.在一个示例中,如果运动列表构建中使用的临近块在MER之外,则该临近块被视为不可用。
iv.在一个示例中,可以将来自MER空域临近块的候选通过修剪操作添加到运动列表。
1)在一个示例中,当候选的运动信息存在于运动列表中时,候选可以不被添加到运动列表。
2)在一个示例中,可以比较来自MER空域临近块的两个候选,以确定它们是否相同或相似。只有当两个候选不相同或不相似时,才能将它们都放入运动列表中。
v.或者,可以将来自MER空域临近块的候选添加到运动列表,而不进行修剪。
5.在一个示例中,块的运动列表的候选的最大数量可以取决于该块是否在MER之下。
a.在一个示例中,对于处于MER之下的第一块和不处于MER之下的第二块,第一块和第二块的运动列表的候选的最大数量可以不同。
i.在一个示例中,第一块的运动列表的候选的最大数量可以小于第二块的运动列表的候选的最大数量。
ii.在一个示例中,第一块的运动列表的候选的最大数量可以大于第二块的运动列表的候选的最大数量。
iii.或者,对于第一块和第二块,运动列表的候选的最大数量可以是相同的。
b.在一个示例中,MER之下的运动列表的候选的最大数量可以以序列级别/图片级别/条带级别/片组级别信令通知,例如在序列标头/图片标头/SPS/VPS/DPS/PPS/APS/条带标头/片组标头中。
i.在一个示例中,只有当针对视频/序列/图片/条带/子图片/片组/片/CTU行等启用MER时,才可以信令通知MER之下的块的运动列表的候选的最大数量。
ii.在一个示例中,可以取决于不在MER之下的块的运动列表的候选的最大数量(例如,表示为maxBvListSizeNonMer)来信令通知MER之下的块的运动列表(例如,BV列表)的候选的最大数量(例如,表示为maxBvListSizeMer)。
1)例如,可以信令通知maxBvListSizeNonMer–maxBvListSizeMer而不是maxBvListSizeMer。
6.在一个示例中,块的运动列表构建过程可以取决于MER内的块位置。当一个块在MER内,并且它的左边界和上边界都不与MER的任何边界重合时,它就是完全在MER内。如图33所示,CU0和CU1是完全在MER内的块,而CU2和CU3不是。
a.在一个示例中,项目符号1-5中的运动列表构建过程可以仅应用于完全在MER内的块。
i.在一个示例中,可以将最多X(X是整数)个成对平均候选添加到完全在MER内的块的运动列表中,例如,X等于2或3。
b.在一个示例中,完全在MER内的块的merge索引的信令可以不同于不在MER内或不完全在MER内的块。
i.在一个示例中,用N表示VVC中merge MVP候选的最大数量。完全在MER内的块的merge MVP候选的最大数量(M)可以不同于N。
1)在一个示例中,M可以小于N,例如,M=2但N=5。
2)在一个示例中,完全在MER内的块的merge索引的截断莱斯二值化代码的最大值可以取决于M(例如,它等于M-1)。
c.在一个示例中,针对完全在MER内的块的MMVD过程可以不同于不在MER内或不完全在MER内的块。
i.在一个示例中,完全在MER内的块的MMVD基础候选的最大数量(T)可以大于2,例如T=3、4或5。
ii.在一个示例中,对于完全在MER内的块,可以修改MMVD中的预定义距离。
1)在一个示例中,修改的预定义距离可以等于d*S,其中,d表示原始预定义距离,并且S表示多尺度。
a.在一个示例中,S可以等于2或3。
b.在一个示例中,S可以等于1/2或1/3。
7.提议对BT和TT划分的规范约束以启用VVC中的MER。分别用R1、R2、W和H表示MER宽度、MER高度、块宽度和块高度。
a.在一个示例中,当W>R1且H<=R2时,可以对当前块禁用水平BT划分。
b.在一个示例中,当W<=R1且H>R2时,可以对当前块禁用垂直BT划分。
c.在一个示例中,当(W>R1||H>R2)且H<=K*R2时,可以对当前块禁用水平TT划分。
i.在一个示例中,K可以是整数,例如K=2。
d.在一个示例中,当(W>R1||H>R2)且W<=K*R1时,可以对当前块禁用垂直TT划分。
i.在一个示例中,K可以是整数,例如K=2。
e.在一个示例中,R1可能不等于R2,例如,R1=32,R2=64,或者R1=64,R2=32。
f.在一个示例中,R1可以等于R2,例如,R1=R2=32,或者R1=R2=64。
g.在一个示例中,如果一种类型的划分被禁用,则可以跳过表示该类型的划分的码字。
h.在一个示例中,如果一种类型的划分被禁用,则可以跳过表示该类型的划分的语法元素(例如标志)。
i.在一个示例中,是否和/或如何对BT和TT划分应用规范约束可以取决于条带/片组类型、和/或图片类型、和/或分割树类型(例如,双树/单树)。
i.在一个示例中,当对于当前图片/子图片/条带/片仅允许帧内编解码工具时,例如,当前图片是I帧,或者当前条带是I条带时,可以不应用对BT和TT划分的规范约束。
ii.在一个示例中,当对于当前图片/子图片/条带/片允许帧间编解码工具时,例如,当前图片是P/B帧,或者当前条带是P/B条带时,可以应用对BT和TT划分的规范约束。
j.在一个示例中,对BT和TT划分的规范约束可以应用于图片/帧内的特定区域中的块。
i.该区域可以指的是图片/帧中的子图片/条带/片,或者预定义的矩形区域(例如,感兴趣区域,ROI)。
ii.在一个示例中,对BT和TT划分的规范约束可以不应用于图片/帧之外的块的一部分。用(x0,y0)、picW和picH表示块的左上亮度样点、图片/帧宽度和图片/帧高度。
1)在一个示例中,当块的左上角在图片/帧内并且右上角或/和左下角在图片/帧之外时,块的一部分在图片/帧之外。
2)在一个示例中,当块的一部分在图片/帧之外时,BT划分约束可以不应用于块。
a.在一个示例中,当y0<=picH且y0+T>picH时,仍然可以允许块的水平BT划分。
i.在一个示例中,T可以等于块高度(T=H)。
b.在一个示例中,当x0<=picW且x0+T>picW时,仍然可以允许块的垂直BT划分。
i.在一个示例中,T可以等于块宽度(T=W)。
3)在一个示例中,当块的一部分在图片/帧之外时,TT划分约束可能不被应用于块。
a.在一个示例中,当y0<=picH且y0+T>picH时,仍然可以允许块的水平TT划分。
i.在一个示例中,T可以等于块高度(T=H)
ii.在一个示例中,T可以等于b*H,其中b=1/2或1/4。
b.在一个示例中,当x0<=picW且x0+T>picW时,仍然可以允许块的垂直TT划分。
i.在一个示例中,T可以等于块宽度(T=W)。
ii.在一个示例中,T可以等于b*W,其中b=1/2或1/4。
工具的使用
8.是否和/或如何应用上述方法可以取决于以下信息:
a.在DPS/SPS/VPS/PPS/APS/图片标头/条带标头/片组标头/最大编解码单元(LCU)/编解码单元(CU)/LCU行/LCU的组/TU/PU块/视频编解码单元中信令通知的消息
b.CU/PU/TU/块/视频编解码单元的位置
c.当前块和/或其临近块的块维度
d.当前块和/或其临近块的块形状
e.块的编解码模式,例如IBC或非IBC帧间模式或非IBC子块模式
f.颜色格式的指示(如4:2:0、4:4:4)
g.编解码树结构
h.条带/片组类型和/或图片类型
i.颜色分量(例如,可以仅应用于色度分量或亮度分量)
j.时域层ID
k.标准的配置文件/级别/层级
图24示出了在固定位置处的MER空域临近块的示例。
图25示出了在一个块的自适应位置处的MER空域临近块的示例。
图26示出了在不同块的自适应位置处的MER空域临近块的示例。
5实施例
对VVC标准的当前编解码规范的更改以
Figure BDA0003784402810000523
高亮。删除的文本用
Figure BDA0003784402810000521
Figure BDA0003784402810000522
标记。
5.1实施例1
工作草案可作如下修改。
8.6.2 IBC块的块矢量分量的推导过程
8.6.2.1概述
当IsGt4by4等于TRUE
Figure BDA0003784402810000531
Figure BDA0003784402810000532
Figure BDA0003784402810000533
时,用亮度块矢量bvL调用在条款8.6.2.6中指定的基于历史的块矢量预测符列表的更新过程。
比特流一致性的要求是亮度块矢量bvL应遵守以下约束:
8.6.2.3 IBC空域块矢量候选的推导过程
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbA1,yNbA1)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableA1
Figure BDA0003784402810000534
–变量availableFlagA1和bvA1的推导如下:
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbB1,yNbB1)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableB1
Figure BDA0003784402810000535
–变量availableFlagB1和bvB1的推导如下:
5.2实施例2
工作草案可作如下修改。
8.6.2 IBC块的块矢量分量的推导过程
8.6.2.1概述
当IsGt4by4等于TRUE
Figure BDA0003784402810000541
Figure BDA0003784402810000542
Figure BDA0003784402810000543
时,用亮度块矢量bvL调用在条款8.6.2.6中指定的基于历史的块矢量预测符列表的更新过程。
比特流一致性的要求是亮度块矢量bvL应遵守以下约束:
8.6.2.3 IBC空域块矢量候选的推导过程
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbA1,yNbA1)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableA1
Figure BDA0003784402810000544
–变量availableFlagA1和bvA1的推导如下:
–如果availableA1等于FALSE,
Figure BDA0003784402810000545
则availableFlagA1设定为等于0,并且bvA1的两个分量设定为等于0。
Figure BDA0003784402810000546
Figure BDA0003784402810000551
–否则,availableFlagA1设定为等于1,并进行以下分配:
bvA1=MvL0[xNbA1][yNbA1] (1122)
对于availableFlagB1和bvB1的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbB1,yNbB1)设定为等于(xCb+cbWidth-1,yCb-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbB1,yNbB1)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableB1
Figure BDA0003784402810000552
–变量availableFlagB1和bvB1的推导如下:
–如果以下一个或多个条件为真,则availableFlagB1设定为等于0,并且bvB1的两个分量设定为等于0:
–availableB1等于FALSE,
Figure BDA0003784402810000553
–availableA1等于TRUE,
Figure BDA0003784402810000554
,并且亮度位置(xNbA1,yNbA1)和(xNbB1,yNbB1)具有相同的块矢量。
Figure BDA0003784402810000555
Figure BDA0003784402810000561
–否则,availableFlagB1设定为等于1,并进行以下分配:
bvB1=MvL0[xNbB1][yNbB1] (1123)
5.3实施例3
工作草案可作如下修改。
8.6.2 IBC块的块矢量分量的推导过程
8.6.2.1概述
当IsGt4by4等于TRUE
Figure BDA0003784402810000562
Figure BDA0003784402810000563
Figure BDA0003784402810000564
时,用亮度块矢量bvL调用在条款8.6.2.6中指定的基于历史的块矢量预测符列表的更新过程。
比特流一致性的要求是亮度块矢量bvL应遵守以下约束:
8.6.2.3 IBC空域块矢量候选的推导过程
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbA1,yNbA1)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableA1
Figure BDA0003784402810000565
Figure BDA0003784402810000571
–变量availableFlagA1和bvA1的推导如下:
–如果availableA1等于FALSE
Figure BDA0003784402810000572
,则availableFlagA1设定为等于0,并且bvA1的两个分量设定为等于0。
Figure BDA0003784402810000573
–否则,availableFlagA1设定为等于1,并进行以下分配:
bvA1=MvL0[xNbA1][yNbA1] (1122)
对于availableFlagB1和bvB1的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbB1,yNbB1)设定为等于(xCb+cbWidth-1,yCb-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbB1,yNbB1)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableB1
Figure BDA0003784402810000574
Figure BDA0003784402810000581
–变量availableFlagB1和bvB1的推导如下:
–如果以下一个或多个条件为真,availableFlagB1设定为等于0,并且bvB1的两个分量设定为等于0:
–availableB1等于FALSE
Figure BDA0003784402810000582
–availableA1等于TRUE,
Figure BDA0003784402810000583
并且亮度位置(xNbA1,yNbA1)和(xNbB1,yNbB1)具有相同的块矢量。
Figure BDA0003784402810000584
–否则,availableFlagB1设定为等于1,并进行以下分配:
bvB1=MvL0[xNbB1][yNbB1] (1123)
5.4实施例4
工作草案可作如下修改。
8.5.2.3空域merge候选的推导过程
对于availableFlagB1、refIdxLXB1、predFlagLXB1、mvLXB1、hpelIfIdxB1和bcwIdxB1的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbB1,yNbB1)设定为等于(xCb+cbWidth-1,yCb-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbB1,yNbB1)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableB1
Figure BDA0003784402810000591
–当xCb>>Log2ParMrgLevel等于xNbB1>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbB1>>Log2ParMrgLevel时,
Figure BDA0003784402810000592
Figure BDA0003784402810000593
Figure BDA0003784402810000594
–变量availableFlagB1、refIdxLXB1、predFlagLXB1、mvLXB1、hpelIfIdxB1和bcwIdxB1的推导如下:
–如果availableB1等于FALSE
Figure BDA0003784402810000595
,则availableFlagB1设定为等于0,mvLXB1的两个分量设定为等于0,refIdxLXB1设定为等于-1,并且predFlagLXB1设定为等于0,其中X为0或1,hpelIfIdxB1设定为等于0,并且bcwIdxB1设定为等于0。
Figure BDA0003784402810000596
–否则,availableFlagB1设定为等于1,并进行以下分配:
mvLXB1=MvLX[xNbB1][yNbB1] (499)
refIdxLXB1=RefIdxLX[xNbB1][yNbB1] (500)
predFlagLXB1=PredFlagLX[xNbB1][yNbB1] (501)
hpelIfIdxB1=HpelIfIdx[xNbB1][yNbB1] (502)
bcwIdxB1=BcwIdx[xNbB1][yNbB1] (503)
对于availableFlagA1、refIdxLXA1、predFlagLXA1、mvLXA1、hpelIfIdxA1和bcwIdxA1的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbA1,yNbA1)设定为等于(xCb-1,yCb+cbHeight-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbA1、yNbA1)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并且输出分配给块可用性标志availableA1
Figure BDA0003784402810000601
–当xCb>>Log2ParMrgLevel等于xNbA1>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbA1>>Log2ParMrgLevel时,
Figure BDA0003784402810000602
Figure BDA0003784402810000604
–变量availableFlagA1、refIdxLXA1、predFlagLXA1、mvLXA1、hpelIfIdxA1和bcwIdxA1的推导如下:
–如果以下一个或多个条件为真,availableFlagA1设定为等于0,mvLXA1的两个分量设定为等于0,refIdxLXA1设定为等于-1,predFlagLXA1设定为等于0,其中X为0或1,hpelIfIdxA1设定为等于0,并且bcwIdxA1设定为等于0:
–availableA1等于FALSE
Figure BDA0003784402810000611
–availableB1等于TRUE,
Figure BDA0003784402810000612
并且亮度位置(xNbA1,yNbA1)和(xNbB1,yNbB1)具有相同的运动矢量和相同的参考索引。
Figure BDA0003784402810000613
–否则,availableFlagA1设定为等于1,并进行以下分配:
mvLXA1=MvLX[xNbA1][yNbA1] (504)
refIdxLXA1=RefIdxLX[xNbA1][yNbA1] (505)
predFlagLXA1=PredFlagLX[xNbA1][yNbA1] (506)
hpelIfIdxA1=HpelIfIdx[xNbA1][yNbA1] (507)
bcwIdxA1=BcwIdx[xNbA1][yNbA1] (508)
对于availableFlagB0、refIdxLXB0、predFlagLXB0、mvLXB0、hpelIfIdxB0和bcwIdxB0的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbB0,yNbB0)设定为等于(xCb+cbWidth,yCb-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbB0,yNbB0)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableB0
Figure BDA0003784402810000621
–当xCb>>Log2ParMrgLevel等于xNbB0>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbB0>>Log2ParMrgLevel时,
Figure BDA0003784402810000622
Figure BDA0003784402810000623
–变量availableFlagB0、refIdxLXB0、predFlagLXB0、mvLXB0、hpelIfIdxB0和bcwIdxB0的推导如下:
–如果以下一个或多个条件为真,availableFlagB0设定为等于0,mvLXB0的两个分量设定为等于0,refIdxLXB0设定为等于-1,并且predFlagLXB0设定为等于0,其中X为0或1,hpelIfIdxB0设定为等于0,并且bcwIdxB0设定为等于0:
–availableB0等于FALSE,
Figure BDA0003784402810000624
–availableB1等于TRUE,
Figure BDA0003784402810000625
,并且亮度位置(xNbB1,yNbB1)和(xNbB0,yNbB0)具有相同的运动矢量和相同的参考索引。
Figure BDA0003784402810000626
Figure BDA0003784402810000631
–否则,availableFlagB0设定为等于1,并进行以下分配:
mvLXB0=MvLX[xNbB0][yNbB0] (509)
refIdxLXB0=RefIdxLX[xNbB0][yNbB0] (510)
predFlagLXB0=PredFlagLX[xNbB0][yNbB0] (511)
hpelIfIdxB0=HpelIfIdx[xNbB0][yNbB0] (512)
bcwIdxB0=BcwIdx[xNbB0][yNbB0] (513)
对于availableFlagA0、refIdxLXA0、predFlagLXA0、mvLXA0、hpelIfIdxA0和bcwIdxA0的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbA0,yNbA0)设定为等于(xCb-1,yCb+cbWidth)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbA0、yNbA0)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并且输出分配给块可用性标志availableA0
Figure BDA0003784402810000632
–当xCb>>Log2ParMrgLevel等于xNbA0>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbA0>>Log2ParMrgLevel时,
Figure BDA0003784402810000633
Figure BDA0003784402810000641
–变量availableFlagA0、refIdxLXA0、predFlagLXA0、mvLXA0、hpelIfIdxA0和bcwIdxA0的推导如下:
–如果以下一个或多个条件为真,availableFlagA0设定为等于0,mvLXA0的两个分量设定为等于0,refIdxLXA0设定为等于-1,并且predFlagLXA0设定为等于0,其中X为0或1,hpelIfIdxA0设定为等于0,并且bcwIdxA0设定为等于0:
–availableA0等于FALSE,
Figure BDA0003784402810000642
–availableA1等于TRUE,
Figure BDA0003784402810000643
,并且亮度位置(xNbA1,yNbA1)和(xNbA0,yNbA0)具有相同的运动矢量和相同的参考索引。
Figure BDA0003784402810000644
Figure BDA0003784402810000651
–否则,availableFlagA0设定为等于1,并进行以下分配:
mvLXA0=MvLX[xNbA0][yNbA0] (514)
refIdxLXA0=RefIdxLX[xNbA0][yNbA0] (515)
predFlagLXA0=PredFlagLX[xNbA0][yNbA0] (516)
hpelIfIdxA0=HpelIfIdx[xNbA0][yNbA0] (517)
bcwIdxA0=BcwIdx[xNbA0][yNbA0] (518)
对于availableFlagB2、refIdxLXB2、predFlagLXB2、mvLXB2、hpelIfIdxB2和bcwIdxB2的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbB2,yNbB2)设定为等于(xCb-1,yCb-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbB2,yNbB2)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并且输出分配给块可用性标志availableB2
Figure BDA0003784402810000652
Figure BDA0003784402810000653
当xCb>>Log2ParMrgLevel等于xNbB2>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbB2>>Log2ParMrgLevel时,
Figure BDA0003784402810000654
Figure BDA0003784402810000655
–变量availableFlagB2、refIdxLXB2、predFlagLXB2、mvLXB2、hpelIfIdxB2和bcwIdxB2的推导如下:
–如果以下一个或多个条件为真,availableFlagB2设定为等于0,mvLXB2的两个分量设定为等于0,refIdxLXB2设定为等于-1,并且predFlagLXB2设定为等于0,其中X为0或1,hpelIfIdxB2设定为等于0,并且bcwIdxB2设定为等于0:
–availableB2等于FALSE,
Figure BDA0003784402810000661
–availableA1等于TRUE,
Figure BDA0003784402810000662
,并且亮度位置(xNbA1,yNbA1)和(xNbB2,yNbB2)具有相同的运动矢量和相同的参考索引。
Figure BDA0003784402810000663
–availableB1等于TRUE,
Figure BDA0003784402810000664
并且亮度位置(xNbB1,yNbB1)和(xNbB2,yNbB2)具有相同的运动矢量和相同的参考索引。
Figure BDA0003784402810000665
availableFlagA0+availableFlagA1+availableFlagB0+availableFlagB1等于4。
Figure BDA0003784402810000671
–否则,availableFlagB2设定为等于1,并进行以下分配:
mvLXB2=MvLX[xNbB2][yNbB2] (519)
refIdxLXB2=RefIdxLX[xNbB2][yNbB2] (520)
predFlagLXB2=PredFlagLX[xNbB2][yNbB2] (521)
hpelIfIdxB2=HpelIfIdx[xNbB2][yNbB2] (522)
bcwIdxB2=BcwIdx[xNbB2][yNbB2] (523)
5.5实施例5
工作草案可作如下修改。
8.5.2.3空域merge候选的推导过程
对于availableFlagB1、refIdxLXB1、predFlagLXB1、mvLXB1、hpelIfIdxB1和bcwIdxB1的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbB1,yNbB1)设定为等于(xCb+cbWidth-1,yCb-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbB1,yNbB1)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableB1
Figure BDA0003784402810000672
–当xCb>>Log2ParMrgLevel等于xNbB1>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbB1>>Log2ParMrgLevel时,
Figure BDA0003784402810000681
Figure BDA0003784402810000682
–变量availableFlagB1、refIdxLXB1、predFlagLXB1、mvLXB1、hpelIfIdxB1和bcwIdxB1的推导如下:
–如果availableB1等于FALSE,
Figure BDA0003784402810000683
则availableFlagB1设定为等于0,mvLXB1的两个分量设定为等于0,refIdxLXB1设定为等于-1,并且predFlagLXB1设定为等于0,其中X为0或1,hpelIfIdxB1设定为等于0,并且bcwIdxB1设定为等于0。
Figure BDA0003784402810000684
–否则,availableFlagB1设定为等于1,并进行以下分配:
mvLXB1=MvLX[xNbB1][yNbB1] (499)
refIdxLXB1=RefIdxLX[xNbB1][yNbB1] (500)
predFlagLXB1=PredFlagLX[xNbB1][yNbB1] (501)
hpelIfIdxB1=HpelIfIdx[xNbB1][yNbB1] (502)
bcwIdxB1=BcwIdx[xNbB1][yNbB1] (503)
对于availableFlagA1、refIdxLXA1、predFlagLXA1、mvLXA1、hpelIfIdxA1和bcwIdxA1的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbA1,yNbA1)设定为等于(xCb-1,yCb+cbHeight-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将当前亮度位置(xCurr,yCurr)设定为等于(xCb,yCb)、临近亮度位置(xNbA1、yNbA1)、checkPredModeY设定为等于TRUE,并且cIdx设定为等于0作为输入,并且输出分配给块可用性标志availableA1
Figure BDA0003784402810000691
–当xCb>>Log2ParMrgLevel等于xNbA1>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbA1>>Log2ParMrgLevel时,
Figure BDA0003784402810000692
Figure BDA0003784402810000693
–变量availableFlagA1、refIdxLXA1、predFlagLXA1、mvLXA1、hpelIfIdxA1和bcwIdxA1的推导如下:
–如果以下一个或多个条件为真,availableFlagA1设定为等于0,mvLXA1的两个分量设定为等于0,refIdxLXA1设定为等于-1,并且predFlagLXA1设定为等于0,其中X设定为等于0或1,hpelIfIdxA1设定为等于0,并且bcwIdxA1设定为等于0:
–availableA1等于FALSE,
Figure BDA0003784402810000694
–availableB1等于TRUE,
Figure BDA0003784402810000695
,并且亮度位置(xNbA1,yNbA1)和(xNbB1,yNbB1)具有相同的运动矢量和相同的参考索引。
Figure BDA0003784402810000696
Figure BDA0003784402810000701
–否则,availableFlagA1设定为等于1,并进行以下分配:
mvLXA1=MvLX[xNbA1][yNbA1] (504)
refIdxLXA1=RefIdxLX[xNbA1][yNbA1] (505)
predFlagLXA1=PredFlagLX[xNbA1][yNbA1] (506)
hpelIfIdxA1=HpelIfIdx[xNbA1][yNbA1] (507)
bcwIdxA1=BcwIdx[xNbA1][yNbA1] (508)
对于availableFlagB0、refIdxLXB0、predFlagLXB0、mvLXB0、hpelIfIdxB0和bcwIdxB0的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbB0,yNbB0)设定为等于(xCb+cbWidth,yCb-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbB0,yNbB0)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableB0
Figure BDA0003784402810000711
–当xCb>>Log2ParMrgLevel等于xNbB0>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbB0>>Log2ParMrgLevel时,
Figure BDA0003784402810000712
Figure BDA0003784402810000713
–变量availableFlagB0、refIdxLXB0、predFlagLXB0、mvLXB0、hpelIfIdxB0和bcwIdxB0的推导如下:
–如果以下一个或多个条件为真,availableFlagB0设定为等于0,mvLXB0的两个分量设定为等于0,refIdxLXB0设定为等于-1,并且predFlagLXB0设定为等于0,其中X为0或1,hpelIfIdxB0设定为等于0,bcwIdxB0设定为等于0:
–availableB0等于FALSE,
Figure BDA0003784402810000714
–availableB1等于TRUE,
Figure BDA0003784402810000715
,并且亮度位置(xNbB1,yNbB1)和(xNbB0,yNbB0)具有相同的运动矢量和相同的参考索引。
Figure BDA0003784402810000716
Figure BDA0003784402810000721
–否则,availableFlagB0设定为等于1,并进行以下分配:
mvLXB0=MvLX[xNbB0][yNbB0] (509)
refIdxLXB0=RefIdxLX[xNbB0][yNbB0] (510)
predFlagLXB0=PredFlagLX[xNbB0][yNbB0] (511)
hpelIfIdxB0=HpelIfIdx[xNbB0][yNbB0] (512)
bcwIdxB0=BcwIdx[xNbB0][yNbB0] (513)
对于availableFlagA0、refIdxLXA0、predFlagLXA0、mvLXA0、hpelIfIdxA0和bcwIdxA0的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbA0,yNbA0)设定为等于(xCb-1,yCb+cbWidth)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将当前亮度位置(xCurr,yCurr)设定为等于(xCb,yCb)、临近亮度位置(xNbA0、yNbA0)、checkPredModeY设定为等于TRUE,并且cIdx设定为等于0作为输入,并且输出分配给块可用性标志availableA0
Figure BDA0003784402810000722
Figure BDA0003784402810000723
当xCb>>Log2ParMrgLevel等于xNbA0>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbA0>>Log2ParMrgLevel时,
Figure BDA0003784402810000724
Figure BDA0003784402810000725
Figure BDA0003784402810000731
–变量availableFlagA0、refIdxLXA0、predFlagLXA0、mvLXA0、hpelIfIdxA0和bcwIdxA0的推导如下:
–如果以下一个或多个条件为真,availableFlagA0设定为等于0,mvLXA0的两个分量设定为等于0,refIdxLXA0设定为等于-1,并且predFlagLXA0设定为等于0,其中X为0或1,hpelIfIdxA0设定为等于0,并且bcwIdxA0设定为等于0:
–availableA0等于FALSE,
Figure BDA0003784402810000732
–availableA1等于TRUE,
Figure BDA0003784402810000733
,并且亮度位置(xNbA1,yNbA1)和(xNbA0,yNbA0)具有相同的运动矢量和相同的参考索引。
Figure BDA0003784402810000734
–否则,availableFlagA0设定为等于1,并进行以下分配:
mvLXA0=MvLX[xNbA0][yNbA0] (514)
refIdxLXA0=RefIdxLX[xNbA0][yNbA0] (515)
predFlagLXA0=PredFlagLX[xNbA0][yNbA0] (516)
hpelIfIdxA0=HpelIfIdx[xNbA0][yNbA0] (517)
bcwIdxA0=BcwIdx[xNbA0][yNbA0] (518)
对于availableFlagB2、refIdxLXB2、predFlagLXB2、mvLXB2、hpelIfIdxB2和bcwIdxB2的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbB2,yNbB2)设定为等于(xCb-1,yCb-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbB2,yNbB2)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并且输出分配给块可用性标志availableB2
Figure BDA0003784402810000741
–当xCb>>Log2ParMrgLevel等于xNbB2>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbB2>>Log2ParMrgLevel时,
Figure BDA0003784402810000742
Figure BDA0003784402810000743
–变量availableFlagB2、refIdxLXB2、predFlagLXB2、mvLXB2、hpelIfIdxB2和bcwIdxB2的推导如下:
–如果以下一个或多个条件为真,availableFlagB2设定为等于0,mvLXB2的两个分量设定为等于0,refIdxLXB2设定为等于-1,并且predFlagLXB2设定为等于0,其中X为0或1,hpelIfIdxB2设定为等于0,并且bcwIdxB2设定为等于0:
–availableB2等于FALSE,
Figure BDA0003784402810000744
–availableA1等于TRUE,
Figure BDA0003784402810000751
,并且亮度位置(xNbA1,yNbA1)和(xNbB2,yNbB2)具有相同的运动矢量和相同的参考索引。
Figure BDA0003784402810000752
–availableB1等于TRUE,
Figure BDA0003784402810000753
,并且亮度位置(xNbB1,yNbB1)和(xNbB2,yNbB2)具有相同的运动矢量和相同的参考索引。
Figure BDA0003784402810000754
–availableFlagA0+availableFlagA1+availableFlagB0+availableFlagB1等于4。
Figure BDA0003784402810000755
Figure BDA0003784402810000761
–否则,availableFlagB2设定为等于1,并进行以下分配:
mvLXB2=MvLX[xNbB2][yNbB2] (519)
refIdxLXB2=RefIdxLX[xNbB2][yNbB2] (520)
predFlagLXB2=PredFlagLX[xNbB2][yNbB2] (521)
hpelIfIdxB2=HpelIfIdx[xNbB2][yNbB2] (522)
bcwIdxB2=BcwIdx[xNbB2][yNbB2] (523)
5.6实施例6
工作草案可作如下修改。
8.5.5.2子块merge模式中运动矢量和参考索引的推导过程
变量numSbColX、numSbColY和子块merge候选列表subblockMergeCandList由以下有序步骤推导:
1.当sps_sbtmvp_enabled_flag等于1时,以下适用:
–对于availableFlagA1、refIdxLXA1、predFlagLXA1和mvLXA1的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbA1,yNbA1)设定为等于(xCb-1,yCb+cbHeight-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbA1,yNbA1)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableA1
Figure BDA0003784402810000762
–当xCb>>Log2ParMrgLevel等于xNbA1>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbA1>>Log2ParMrgLevel时,
Figure BDA0003784402810000763
Figure BDA0003784402810000771
–变量availableFlagA1、refIdxLXA1、predFlagLXA1和mvLXA1的推导如下:
–如果availableA1等于FALSE,
Figure BDA0003784402810000772
availableFlagA1设定为等于0,mvLXA1的两个分量设定为等于0,refIdxLXA1设定为等于-1,并且predFlagLXA1设定为等于0,其中X为0或1,并且bcwIdxA1设定为等于0。
Figure BDA0003784402810000773
–否则,availableFlagA1设定为等于1,并进行以下分配:
mvLXA1=MvLX[xNbA1][yNbA1] (680)
refIdxLXA1=RefIdxLX[xNbA1][yNbA1] (681)
predFlagLXA1=PredFlagLX[xNbA1][yNbA1] (682)
2.当sps_affine_enabled_flag等于1时,样点位置(xNbA0,yNbA0)、(xNbA1,yNbA1)、(xNbA2,yNbA2)、(xNbB0,yNbB0)、(xNbB1,yNbB1)、(xNbB2,yNbB2)和(xNbB3,yNbB3)的推导如下:
(xNbA0,yNbA0)=(xCb-1,yCb+cbHeight) (683)
(xNbA1,yNbA1)=(xCb-1,yCb+cbHeight-1) (684)
(xNbA2,yNbA2)=(xCb-1,yCb) (685)
(xNbB0,yNbB0)=(xCb+cbWidth,yCb-1) (686)
(xNbB1,yNbB1)=(xCb+cbWidth-1,yCb-1) (687)
(xNbB2,yNbB2)=(xCb-1,yCb-1) (688)
(xNbB3,yNbB3)=(xCb,yCb-1) (689)
Figure BDA0003784402810000781
3.当sps_affine_enabled_flag等于1时,变量availableFlagA被设定为等于FALSE,并且以下适用于从(xNbA0,yNbA0)到(xNbA1,yNbA1)的(xNbAk,yNbAk):
–调用条款6.4.4中指定的临近块可用性的推导过程,将当前亮度位置(xCurr,yCurr)设定为等于(xCb,yCb)、临近亮度位置(xNbAk,yNbAk)、checkPredModeY设定为等于TRUE,并且cIdx设定为等于0作为输入,并将输出分配给块可用性标志availableAk
Figure BDA0003784402810000782
–当xCb>>Log2ParMrgLevel等于xNbAk>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbAk>>Log2ParMrgLevel时,
Figure BDA0003784402810000783
Figure BDA0003784402810000784
Figure BDA0003784402810000791
–当availableAk等于TRUE且MotionModelIdc[xNbAk][yNbAk]大于0且availableFlagA等于FALSE时,以下适用:
–变量availableFlagA设定为等于TRUE,motionModelIdcA设定为等于MotionModelIdc[xNbAk][yNbAk],(xNb,yNb)设定为等于(CbPosX[0][xNbAk][yNbAk],CbPosY[0][xNbAk][yNbAk]),nbW设定为等于CbWidth[0][xNbAk][yNbAk],nbH设定为等于CbHeight[0][xNbAk][yNbAk],numCpMv设定为等于MotionModelIdc[xNbAk][yNbAk]+1,并且bcwIdxA设定为等于BcwIdx[xNbAk][yNbAk]。
–对于被0或1替代的X,以下适用:
–当PredFlagLX[xNbAk][yNbAk]等于1时,调用条款8.5.5.5中指定的来自临近块的亮度仿射控制点运动矢量的推导过程,将亮度编解码块位置(xCb,yCb)、亮度编解码块宽度和高度(cbWidth,cbHeight)、临近亮度编解码块位置(xNb,yNb)、临近亮度编解码块宽度和高度(nbW,nbH)以及控制点运动矢量的数量numCpMv作为输入,将控制点运动矢量预测符候选cpMvLXA[cpid]作为输出,其中cpIdx=0..numCpMv-1。
–进行以下分配:
predFlagLXA=PredFlagLX[xNbAk][yNbAk] (690)
refIdxLXA=RefIdxLX[xNbAk][yNbAk] (691)
Figure BDA0003784402810000792
Figure BDA0003784402810000801
4.当sps_affine_enabled_flag等于1时,变量availableFlagB设定为等于FALSE,并且对于从(xNbB0,yNbB0)到(xNbB2,yNbB2)的(xNbBk,yNbBk)以下适用:
–调用条款6.4.4中指定的临近块可用性的推导过程,将当前亮度位置(xCurr,yCurr)设定为等于(xCb,yCb)、临近亮度位置(xNbBk,yNbBk)、checkPredModeY设定为等于TRUE,并且cIdx设定为等于0作为输入,并将输出分配给块可用性标志availableBk
Figure BDA0003784402810000802
–当xCb>>Log2ParMrgLevel等于xNbBk>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbBk>>Log2ParMrgLevel时,
Figure BDA0003784402810000803
Figure BDA0003784402810000804
–当availableBk等于TRUE且MotionModelIdc[xNbBk][yNbBk]大于0且availableFlagB等于FALSE时,以下适用:
–变量availableFlagB设定为等于TRUE,motionModelIdcB设定为等于MotionModelIdc[xNbBk][yNbBk],(xNb,yNb)设定为等于(CbPosX[0][xNbAB][yNbBk],CbPosY[0][xNbBk][yNbBk]),nbW设定为等于CbWidth[0][xNbBk][yNbBk],nbH设定为等于CbHeight[0][xNbBk][yNbBk],numCpMv设定为等于MotionModelIdc[xNbBk][yNbBk]+1,并且bcwIdxB设定为等于BcwIdx[xNbBk][yNbBk]。
–对于被0或1替代的X,以下适用:
–当PredFlagLX[xNbBk][yNbBk]等于TRUE时,调用条款8.5.5.5中指定的来自临近块的亮度仿射控制点运动矢量的推导过程,将亮度编解码块位置(xCb,yCb)、亮度编解码块宽度和高度(cbWidth,cbHeight)、临近亮度编解码块位置(xNb,yNb)、临近亮度编解码块宽度和高度(nbW,nbH)以及控制点运动矢量的数量numCpMv作为输入,控制点运动矢量预测符候选cpMvLXB[cpIdx]作为输出,其中cpIdx=0..numCpMv-1。
–进行以下分配:
predFlagLXB=PredFlagLX[xNbBk][yNbBk] (692)
refIdxLXB=RefIdxLX[xNbBk][yNbBk] (693)
Figure BDA0003784402810000811
Figure BDA0003784402810000821
5.当sps_affine_enabled_flag等于1时,以下适用:
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbA2,yNbA2)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableA2
Figure BDA0003784402810000822
–当xCb>>Log2ParMrgLevel等于xNbA2>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbA2>>Log2ParMrgLevel时,
Figure BDA0003784402810000823
Figure BDA0003784402810000824
–调用条款6.4.4中指定的临近块可用性的推导过程,将当前亮度位置(xCurr,yCurr)设定为等于(xCb,yCb)、临近亮度位置(xNbB3,yNbB3)、checkPredModeY设定为等于TRUE,并且cIdx设定为等于0作为输入,并且输出分配给块可用性标志availableB3
Figure BDA0003784402810000825
–当xCb>>Log2ParMrgLevel等于xNbB3>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbB3>>Log2ParMrgLevel时,
Figure BDA0003784402810000826
Figure BDA0003784402810000827
Figure BDA0003784402810000831
–调用条款8.5.5.6中指定的构建仿射控制点运动矢量merge候选的推导过程,以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度和高度(cbWidth,cbHeight)、可用性标志
Figure BDA0003784402810000832
availableA0
Figure BDA0003784402810000833
Figure BDA0003784402810000834
availableA1
Figure BDA0003784402810000835
Figure BDA0003784402810000836
Figure BDA0003784402810000837
availableA2
Figure BDA0003784402810000838
Figure BDA0003784402810000839
availableB0
Figure BDA00037844028100008310
Figure BDA00037844028100008311
availableB1
Figure BDA00037844028100008312
Figure BDA00037844028100008313
availableB2
Figure BDA00037844028100008314
Figure BDA00037844028100008315
availableB3
Figure BDA00037844028100008316
Figure BDA00037844028100008317
作为输入,并且以可用性标志availableFlagConstK、参考索引refIdxLXConstK、预测列表利用标志predFlagLXConstK、运动模型索引motionModelIdcConstK、双向预测权重索引bcwIdxConstK和cpMvpLXConstK[cpIdx]作为输出,其中X为0或1,K=1..6,cpIdx=0..2。
5.7实施例7
工作草案可作如下修改。
8.5.5.2子块merge模式中运动矢量和参考索引的推导过程
变量numSbColX、numSbColY和子块merge候选列表subblockMergeCandList由以下有序步骤推导:
1.当sps_sbtmvp_enabled_flag等于1时,以下适用:
–对于availableFlagA1、refIdxLXA1、predFlagLXA1和mvLXA1的推导,以下适用:
–临近亮度编解码块内的亮度位置(xNbA1,yNbA1)设定为等于(xCb-1,yCb+cbHeight-1)。
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbA1,yNbA1)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableA1
Figure BDA00037844028100008318
Figure BDA00037844028100008319
当xCb>>Log2ParMrgLevel等于xNbA1>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbA1>>Log2ParMrgLevel时,
Figure BDA00037844028100008320
Figure BDA0003784402810000841
–变量availableFlagA1、refIdxLXA1、predFlagLXA1和mvLXA1的推导如下:
–如果availableA1等于FALSE,
Figure BDA0003784402810000842
availableFlagA1设定为等于0,mvLXA1的两个分量设定为等于0,refIdxLXA1设定为等于-1,并且predFlagLXA1设定为等于0,其中X为0或1,并且bcwIdxA1设定为等于0。
Figure BDA0003784402810000843
–否则,availableFlagA1设定为等于1,并进行以下分配:
mvLXA1=MvLX[xNbA1][yNbA1] (680)
refIdxLXA1=RefIdxLX[xNbA1][yNbA1] (681)
predFlagLXA1=PredFlagLX[xNbA1][yNbA1] (682)
2.当sps_affine_enabled_flag等于1时,样点位置(xNbA0,yNbA0)、(xNbA1,yNbA1)、(xNbA2,yNbA2)、(xNbB0,yNbB0)、(xNbB1,yNbB1)、(xNbB2,yNbB2)和(xNbB3,yNbB3)的推导如下:
(xNbA0,yNbA0)=(xCb-1,yCb+cbHeight) (683)
(xNbA1,yNbA1)=(xCb-1,yCb+cbHeight-1) (684)
(xNbA2,yNbA2)=(xCb-1,yCb) (685)
(xNbB0,yNbB0)=(xCb+cbWidth,yCb-1) (686)
(xNbB1,yNbB1)=(xCb+cbWidth-1,yCb-1) (687)
(xNbB2,yNbB2)=(xCb-1,yCb-1) (688)
(xNbB3,yNbB3)=(xCb,yCb-1) (689)
Figure BDA0003784402810000851
3.当sps_affine_enabled_flag等于1时,变量availableFlagA被设定为等于FALSE,并且以下适用于从(xNbA0,yNbA0)到(xNbA1,yNbA1)的(xNbAk,yNbAk):
–调用条款6.4.4中指定的临近块可用性的推导过程,将)设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr、临近亮度位置(xNbAk,yNbAk)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableAk
Figure BDA0003784402810000852
Figure BDA0003784402810000853
当xCb>>Log2ParMrgLevel等于xNbAk>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbAk>>Log2ParMrgLevel时,
Figure BDA0003784402810000854
Figure BDA0003784402810000855
Figure BDA0003784402810000861
–当availableAk等于TRUE且MotionModelIdc[xNbAk][yNbAk]大于0且availableFlagA等于FALSE时,以下适用:
–变量availableFlagA设定为等于TRUE,motionModelIdcA设定为等于MotionModelIdc[xNbAk][yNbAk],(xNb,yNb)设定为等于(CbPosX[0][xNbAk][yNbAk],CbPosY[0][xNbAk][yNbAk]),nbW设定为等于CbWidth[0][xNbAk][yNbAk],nbH设定为等于CbHeight[0][xNbAk][yNbAk],numCpMv设定为等于MotionModelIdc[xNbAk][yNbAk]+1,并且bcwIdxA设定为等于BcwIdx[xNbAk][yNbAk]。
–对于被0或1替代的X,以下适用:
–当PredFlagLX[xNbAk][yNbAk]等于1时,调用条款8.5.5.5中指定的来自临近块的亮度仿射控制点运动矢量的推导过程,将亮度编解码块位置(xCb,yCb)、亮度编解码块宽度和高度(cbWidth,cbHeight)、临近亮度编解码块位置(xNb,yNb)、临近亮度编解码块宽度和高度(nbW,nbH)以及控制点运动矢量的数量numCpMv作为输入,控制点运动矢量预测符候选cpMvLXA[cpIdx]作为输出,其中cpIdx=0..numCpMv-1。
–进行以下分配:
predFlagLXA=PredFlagLX[xNbAk][yNbAk] (690)
refIdxLXA=RefIdxLX[xNbAk][yNbAk] (691)
Figure BDA0003784402810000862
Figure BDA0003784402810000871
4.当sps_affine_enabled_flag等于1时,变量availableFlagB设定为等于FALSE,并且以下适用于从(xNbB0,yNbB0)到(xNbB2,yNbB2)的(xNbBk,yNbBk):
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbBk,yNbBk)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableBk
Figure BDA0003784402810000872
Figure BDA0003784402810000873
当xCb>>Log2ParMrgLevel等于xNbBk>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbBk>>Log2ParMrgLevel时,
Figure BDA0003784402810000874
Figure BDA0003784402810000875
–当availableBk等于TRUE且MotionModelIdc[xNbBk][yNbBk]大于0且availableFlagB等于FALSE时,以下适用:
–变量availableFlagB设定为等于TRUE,motionModelIdcB设定为等于MotionModelIdc[xNbBk][yNbBk],(xNb,yNb)设定为等于(CbPosX[0][xNbAB][yNbBk],CbPosY[0][xNbBk][yNbBk]),nbW设定为等于CbWidth[0][xNbBk][yNbBk],nbH设定为等于CbHeight[0][xNbBk][yNbBk],numCpMv设定为等于MotionModelIdc[xNbBk][yNbBk]+1,并且bcwIdxB设定为等于BcwIdx[xNbBk][yNbBk]。
–对于被0或1替代的X,以下适用:
–当PredFlagLX[xNbBk][yNbBk]等于TRUE时,调用条款8.5.5.5中指定的来自临近块的亮度仿射控制点运动矢量的推导过程,将亮度编解码块位置(xCb,yCb)、亮度编解码块宽度和高度(cbWidth,cbHeight)、临近亮度编解码块位置(xNb,yNb)、临近亮度编解码块宽度和高度(nbW,nbH)以及控制点运动矢量的数量numCpMv作为输入,控制点运动矢量预测符候选cpMvLXB[cpIdx]作为输出,其中cpIdx=0..numCpMv-1。
–进行以下分配:
predFlagLXB=PredFlagLX[xNbBk][yNbBk] (692)
refIdxLXB=RefIdxLX[xNbBk][yNbBk] (693)
Figure BDA0003784402810000881
Figure BDA0003784402810000891
5.当sps_affine_enabled_flag等于1时,以下适用:
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbA2,yNbA2)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并将输出分配给块可用性标志availableA2
Figure BDA0003784402810000892
–当xCb>>Log2ParMrgLevel等于xNbA2>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbA2>>Log2ParMrgLevel时,
Figure BDA0003784402810000893
Figure BDA0003784402810000894
–调用条款6.4.4中指定的临近块可用性的推导过程,将设定为等于(xCb,yCb)的当前亮度位置(xCurr,yCurr)、临近亮度位置(xNbB3,yNbB3)、设定为等于TRUE的checkPredModeY以及设定为等于0的cIdx作为输入,并且输出分配给块可用性标志availableB3
Figure BDA0003784402810000895
–当xCb>>Log2ParMrgLevel等于xNbB3>>Log2ParMrgLevel且yCb>>Log2ParMrgLevel等于yNbB3>>Log2ParMrgLevel时,
Figure BDA0003784402810000896
Figure BDA0003784402810000897
–调用条款8.5.5.6中指定的构建仿射控制点运动矢量merge候选的推导过程,以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度和高度(cbWidth,cbHeight)、可用性标志
Figure BDA0003784402810000901
availableA0
Figure BDA0003784402810000902
Figure BDA0003784402810000903
availableA1
Figure BDA0003784402810000904
Figure BDA0003784402810000905
Figure BDA0003784402810000906
availableA2
Figure BDA0003784402810000907
Figure BDA0003784402810000908
availableB0
Figure BDA0003784402810000909
Figure BDA00037844028100009010
availableB1
Figure BDA00037844028100009011
Figure BDA00037844028100009012
availableB2
Figure BDA00037844028100009013
Figure BDA00037844028100009014
availableB3
Figure BDA00037844028100009015
Figure BDA00037844028100009016
作为输入,并且可用性标志availableFlagConstK、参考索引refIdxLXConstK、预测列表利用标志predFlagLXConstK、运动模型索引motionModelIdcConstK、双向预测权重索引bcwIdxConstK和cpMvpLXConstK[cpIdx]作为输出,其中X为0或1,K=1..6,cpIdx=0..2。
5.8实施例8
工作草案可作如下修改。
6.4.2允许的二元划分过程
变量allowBtSplit的推导如下:
–如果以下一个或多个条件为真,则allowBtSplit将设定为等于FALSE:
–cbSize小于或等于MinBtSizeY
–cbWidth大于maxBtSize
–cbHeight大于maxBtSize
–mttdepth大于或等于maxMttDepth
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)*(cbHeight/SubHeightC)小于或等于16
–treeType等于DUAL_TREE_CHROMA,(cbWidth/SubWidthC)等于4,并且btSplit等于SPLIT_BT_VER
–treeType等于DUAL_TREE_CHROMA,并且modeType等于MODE_TYPE_INTRA
–cbWidth*cbHeight等于32,并且modeType等于MODE_TYPE_INTER
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–y0+CBheight大于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbHeight大于64
–x0+cbWidth大于pic_width_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbWidth小于或等于(1<<Log2ParMrgLevel)
–cbHeight大于(1<<Log2ParMrgLevel)
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbWidth大于64
–y0+cbHeight大于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbHeight小于或等于(1<<Log2ParMrgLevel)
–cbWidth大于(1<<Log2ParMrgLevel)
–否则,如果以下所有条件都为真,allowBtSplit将设定为等于FALSE
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight大于pic_height_in_luma_samples
–cbWidth大于minQtSize
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight小于或等于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE:
–mttDepth大于0
–partIdx等于1
–MttSplitMode[x0][y0][mttDepth-1]等于parallelTtSplit
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbWidth小于或等于64
–cbHeight大于64
Figure BDA0003784402810000921
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbWidth大于64
–cbHeight小于或等于64
Figure BDA0003784402810000922
–否则,allowBtSplit设定为TRUE。
6.4.3允许的三元划分过程
变量allowTtSplit的推导如下:
–如果以下一个或多个条件为真,则allowTtSplit将设定为等于FALSE:
–cbSize小于或等于2*MinTtSizeY
–cbWidth大于Min(64,maxTtSize)
–cbHeight大于Min(64,maxTtSize)
Figure BDA0003784402810000931
–mttDepth大于或等于maxMttDepth
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight大于pic_height_in_luma_samples
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)*(cbHeight/SubHeightC)小于或等于32
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)等于8,并且ttSplit等于SPLIT_TT_VER
–treeType等于DUAL_TREE_CHROMA,并且modeType等于MODE_TYPE_INTRA
–cbWidth*cbHeight等于64,并且modeType等于MODE_TYPE_INTER
–否则,allowTtSplit设定为TRUE。
5.9实施例9
工作草案可作如下修改。
6.4.2允许的二元划分过程
变量allowBtSplit的推导如下:
–如果以下一个或多个条件为真,则allowBtSplit将设定为等于FALSE:
–cbSize小于或等于MinBtSizeY
–cbWidth大于maxBtSize
–cbHeight大于maxBtSize
–mttDepth大于或等于maxMttDepth
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)*(cbHeight/SubHeightC)小于或等于16
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)等于4,并且btSplit等于SPLIT_BT_VER
–treeType等于DUAL_TREE_CHROMA,并且modeType等于MODE_TYPE_INTRA
–cbWidth*cbHeight等于32,并且modeType等于MODE_TYPE_INTER
Figure BDA0003784402810000941
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–y0+cbHeight大于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbHeight大于64
–x0+cbWidth大于pic_width_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbWidth小于或等于(1<<Log2ParMrgLevel)
–cbHeight大于(1<<Log2ParMrgLevel)
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbWidth大于64
–y0+cbHeight大于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbHeight小于或等于(1<<Log2ParMrgLevel)
–cbWidth大于(1<<Log2ParMrgLevel)
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight大于pic_height_in_luma_samples
–cbWidth大于minQtSize
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight小于或等于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE:
–mttDepth大于0
–partIdx等于1
–MttSplitMode[x0][y0][mttDepth-1]等于parallelTtSplit
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbWidth小于或等于64
–cbHeight大于64
—否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbWidth大于64
–cbHeight小于或等于64
–否则,allowBtSplit设定为等于TRUE。
6.4.3允许的三元划分过程
变量allowTtSplit的推导如下:
–如果以下一个或多个条件为真,则allowTtSplit将设定为等于FALSE:
–cbSize小于或等于2*MinTtSizeY
–cbWidth大于Min(64,maxTtSize)
–cbHeight大于Min(64,maxTtSize)
Figure BDA0003784402810000961
–mttDepth大于或等于maxMttDepth
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight大于pic_height_in_luma_samples
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)*(cbHeight/SubHeightC)小于或等于32
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)等于8,并且ttSplit等于SPLIT_TT_VER
–treeType等于DUAL_TREE_CHROMA,并且modeType等于MODE_TYPE_INTRA
–cbWidth*cbHeight等于64,并且modeType等于MODE_TYPE_INTER
–否则,allowTtSplit设定为等于TRUE。
5.10实施例10
工作草案可作如下修改。
6.4.2允许的二元划分过程
变量allowBtSplit的推导如下:
–如果以下一个或多个条件为真,则allowBtSplit将设定为等于FALSE:
–cbSize小于或等于MinBtSizeY
–cbWidth大于maxBtSize
–cbHeight大于maxBtSize
–mttDepth大于或等于maxMttDepth
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)*(cbHeight/SubHeightC)小于或等于16
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)等于4,并且btSplit等于SPLIT_BT_VER
–treeType等于DUAL_TREE_CHROMA,并且modeType等于MODE_TYPE_INTRA
–cbWidth*cbHeight等于32,并且modeType等于MODE_TYPE_INTER
Figure BDA0003784402810000971
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–y0+cbHeight大于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbHeight大于64
–x0+cbWidth大于pic_width_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbWidth小于或等于(1<<Log2ParMrgLevel)
–cbHeight大于(1<<Log2ParMrgLevel)
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbWidth大于64
–y0+cbHeight大于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbHeight小于或等于(1<<Log2ParMrgLevel)
–cbWidth大于(1<<Log2ParMrgLevel)
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight大于pic_height_in_luma_samples
–cbWidth大于minQtSize
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight小于或等于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE:
–mttDepth大于0
–partIdx等于1
–MttSplitMode[x0][y0][mttDepth-1]等于parallelTtSplit
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbWidth小于或等于64
–cbHeight大于64
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbWidth大于64
–cbHeight小于或等于64
–否则,allowBtSplit设定为等于TRUE。
6.4.3允许的三元划分过程
变量allowTtSplit的推导如下:
–如果以下一个或多个条件为真,则allowTtSplit将设定为等于FALSE:
–cbSize小于或等于2*MinTtSizeY
–cbWidth大于Min(64,maxTtSize)
–cbHeight大于Min(64,maxTtSize)
Figure BDA0003784402810000991
–mttDepth大于或等于maxMttDepth
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight大于pic_height_in_luma_samples
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)*(cbHeight/SubHeightC)小于或等于32
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)等于8,并且ttSplit等于SPLIT_TT_VER
–treeType等于DUAL_TREE_CHROMA,并且modeType等于MODE_TYPE_INTRA
–cbWidth*cbHeight等于64,并且modeType等于MODE_TYPE_INTER
–否则,allowTtSplit设定为等于TRUE。
5.11实施例11
工作草案可作如下修改。
6.4.2允许的二元划分过程
变量allowBtSplit的推导如下:
–如果以下一个或多个条件为真,则allowBtSplit将设定为等于FALSE:
–cbSize小于或等于MinBtSizeY
–cbWidth大于maxBtSize
–cbHeight大于maxBtSize
–mttDepth大于或等于maxMttDepth
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)*(cbHeight/SubHeightC)小于或等于16
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)等于4,并且btSplit等于SPLIT_BT_VER
–treeType等于DUAL_TREE_CHROMA,并且modeType等于MODE_TYPE_INTRA
–cbWidth*cbHeight等于32,并且modeType等于MODE_TYPE_INTER
Figure BDA0003784402810001001
Figure BDA0003784402810001011
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–y0+cbHeight大于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbHeight大于64
–x0+cbWidth大于pic_width_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbWidth小于或等于(1<<Log2ParMrgLevel)
–cbHeight大于(1<<Log2ParMrgLevel)
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbWidth大于64
–y0+cbHeight大于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbHeight小于或等于(1<<Log2ParMrgLevel)
–cbWidth大于(1<<Log2ParMrgLevel)
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight大于pic_height_in_luma_samples
–cbWidth大于minQtSize
—否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight小于或等于pic_height_in_luma_samples
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE:
–mttDepth大于0
–partIdx等于1
–MttSplitMode[x0][y0][mttDepth-1]等于parallelTtSplit
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_VER
–cbWidth小于或等于64
–cbHeight大于64
–否则,如果以下所有条件都为真,则allowBtSplit将设定为等于FALSE
–btSplit等于SPLIT_BT_HOR
–cbWidth大于64
–cbHeight小于或等于64
–否则,allowBtSplit设定为等于TRUE。
6.4.3允许的三元划分过程
变量allowTtSplit的推导如下:
–如果以下一个或多个条件为真,则allowTtSplit将设定为等于FALSE:
–cbSize小于或等于2*MinTtSizeY
–cbWidth大于Min(64,maxTtSize)
–cbHeight大于Min(64,maxTtSize)
Figure BDA0003784402810001021
Figure BDA0003784402810001031
–mttDepth大于或等于maxMttDepth
–x0+cbWidth大于pic_width_in_luma_samples
–y0+cbHeight大于pic_height_in_luma_samples
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)*(cbHeight/SubHeightC)小于或等于32
–treeType等于DUAL_TREE_CHROMA,并且(cbWidth/SubWidthC)等于8,并且ttSplit等于SPLIT_TT_VER
–treeType等于DUAL_TREE_CHROMA,并且modeType等于MODE_TYPE_INTRA
–cbWidth*cbHeight等于64,并且modeType等于MODE_TYPE_INTER
—否则,allowTtSplit设定为等于TRUE。
图27是可实现本文中所公开的各种技术的示例视频处理系统1900的框图。各种实施方式可以包括系统1900中的部分或全部组件。系统1900可以包括用于接收视频内容的输入1902。视频内容可以以原始或未压缩的格式(例如8或10比特多分量像素值)接收,或者可以以压缩或编码的格式接收。输入1902可以代表网络接口、外围总线接口或存储接口。网络接口的示例包括有线接口(诸如以太网、无源光网络(PON)等)和无线接口(诸如Wi-Fi或蜂窝接口)。
系统1900可以包括可以实施本文档中描述的各种编解码或编码方法的编解码组件1904。编解码组件1904可以减少从输入1902到编解码组件1904的输出的视频的平均比特率,以产生视频的编解码表示。因此,编解码技术有时称为视频压缩或视频转码技术。编解码组件1904的输出可以被存储或经由如组件1906所表示的通信连接而传输。在输入1902处接收的视频的存储或通信的比特流(或编解码)表示可以由组件1908使用,以生成被发送到显示接口1910的像素值或可显示视频。从比特流表示中生成用户可见的视频的过程有时称为视频解压缩。此外,尽管某些视频处理操作被称为“编解码”操作或工具,但是应当理解,在编码器处使用编解码工具或操作,并且将由解码器进行反演编解码的结果的对应解码工具或操作。
外围总线接口或显示接口的示例可以包括通用串行总线(USB)或高清晰度多媒体接口(HDMI)或Displayport等。存储接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文档中描述的技术可以实施在各种电子设备中,诸如移动电话、膝上型计算机、智能电话或其它能够进行数字数据处理和/或视频显示的装设备。
图28是视频处理装置3600的框图。装置3600可以用于实施本文中所述的方法中的一个或多个。装置3600可以实施在智能电话、平板电脑、计算机、物联网(IoT)接收器等中。装置3600可以包括一个或多个处理器3602、一个或多个存储器3604和视频处理硬件3606。(多个)处理器3602可以配置为实施本文档中所述的一个或多个方法。(多个)存储器3604可以用于存储数据和代码,该代码用于实现本文所描述的方法和技术。视频处理硬件3606可以用于在硬件电路中实现本文档中所描述的一些技术。
图30是图示可利用本公开的技术的示例视频编解码系统100的框图。
如图30所示,视频编解码系统100可以包括源设备110和目标设备120。源设备110生成编码的视频数据,其可以被称为视频编码设备。目标设备120可以解码由源设备110生成的编码的视频数据,该目标设备120可以被称为视频解码设备。
源设备110可以包括视频源112、视频编码器114和输入/输出(I/O)接口116。
视频源112可以包括诸如视频捕获设备的源、从视频内容提供者接收视频数据的接口、和/或生成视频数据的计算机图形系统,或这些源的组合。视频数据可以包括一个或多个图片。视频编码器114对来自视频源112的视频数据进行编码以生成比特流。比特流可以包括形成视频数据的编解码表示的比特序列。比特流可以包括编解码图片和相关联的数据。编解码图片是图片的编解码表示。相关联的数据可以包括序列参数集、图片参数集和其他语法元素。I/O接口116包括调制器/解调器(调制解调器)和/或发送器。可以将编码的视频数据经由I/O接口116通过网络130a直接发送到目标设备120。还可以将编码的视频数据存储到存储介质/服务器130b上,用于由目标设备120存取。
目标设备120可以包括I/O接口126、视频解码器124和显示设备122。
I/O接口126可以包括接收器和/或调制解调器。I/O接口126可以从源设备110或存储介质/服务器130b获取编码的视频数据。视频解码器124可以对编码的视频数据进行解码。显示设备122可以向用户显示解码的视频数据。显示设备122可以与目标设备120集成,或可以在配置为与外置显示设备相接的目标设备120外部。
视频编码器114和视频解码器124可以根据视频压缩标准(诸如,高效视频编解码(HEVC)标准、多功能视频编解码(VVC)标准和其他当前和/或其他标准)进行操作。
图31是图示视频编码器200的示例的框图,该视频编码器200可以是图30中图示的系统100中的视频编码器114。
视频编码器200可以被配置为执行本公开的任何或全部技术。在图31的示例中,视频编码器200包括多个功能组件。本公开所描述的技术可以在视频编码器200的各种组件之间共享。在一些示例中,处理器可以配置为进行本公开中描述的任何或全部技术。
视频编码器200的功能组件可以包括分割单元201、预测单元202(其可以包括模式选择单元203、运动估计单元204、运动补偿单元205和帧内预测单元206)、残差生成单元207、变换单元208、量化单元209、逆量化单元210、逆变换单元211、重建单元212、缓冲器213和熵编码单元214。
在其他示例中,视频编码器200可以包括更多、更少或不同的功能组件。在一个示例中,预测单元202可以包括帧内块复制(IBC)单元。IBC单元可以以IBC模式进行预测,其中至少一个参考图片是当前视频块所位于的图片。
此外,诸如运动估计单元204和运动补偿单元205的一些组件可以被高度集成,但是出于解释的目的在图31的示例中分开表示。
分割单元201可以将图片分割成一个或多个视频块。视频编码器200和视频解码器300可以支持各种视频块尺寸。
模式选择单元203可以例如基于错误结果选择帧内或帧间的编解码模式中的一个,并且将得到的帧内或帧间编解码块提供到残差生成单元207来生成残差块数据而且提供到重建单元212来重建编码块以用作参考图片。在一些示例中,模式选择单元203可以选择帧内和帧间预测的组合(CIIP)模式,其中预测是基于帧间预测信号和帧内预测信号。模式选择单元203还可以为帧间预测情况下的块选择运动矢量的分辨率(例如子像素或整个像素精度)。
为了对当前视频块执行帧间预测,运动估计单元204可以通过将来自缓冲器213的一个或多个参考帧与当前视频块进行比较,生成当前视频块的运动信息。运动补偿单元205可以基于来自缓冲器213的图片(而不是与当前视频块相关联的图片)的运动信息和解码样点来为当前视频块确定预测的视频块。
运动估计单元204和运动补偿单元205可以为当前视频块进行不同操作,例如执行不同操作取决于当前视频块是在I条带、P条带还是B条带中。
在一些示例中,运动估计单元204可以进行当前视频块的单向预测,并且运动估计单元204可以在列表0或列表1的参考图片中搜索当前视频块的参考视频块。运动估计单元204然后可以生成指示列表0或列表1的参考图片中含有参考视频块的参考索引以及指示在当前视频块与参考视频块之间的空域位移的运动矢量。运动估计单元204可以输出参考索引、预测方向指示符、和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前块的预测视频块。
在其他示例中,运动估计单元204可以进行当前视频块的双向预测,运动估计单元204可以在列表0的参考图片中搜索当前视频块的参考视频块并且还可以在列表1的参考图片中搜索当前视频块的另一个参考视频块。运动估计单元204然后可以生成指示列表0或列表1的参考图片中含有参考视频块的参考索引以及指示在参考视频块与当前视频块之间的空域位移的运动矢量。运动估计单元204可以输出参考索引和当前视频块的运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前视频块的预测视频块。
在一些示例中,运动估计单元204可以输出运动信息的全部集合,用于解码器的解码处理。
在一些示例中,运动估计单元204可以不输出当前视频的运动信息的全部集合。而是,运动估计单元204可以参考另一个视频块的运动信息来信令通知当前视频块的运动信息。例如,运动估计单元204可以确定当前视频块的运动信息与临近视频块的运动信息足够相似。
在一个示例中,运动估计单元204可以在与当前视频块相关联的语法结构中指示:向视频解码器300指示当前视频块具有与另一个视频块相同的运动信息的值。
在另一个示例中,运动估计单元204可以在与当前视频块相关联的语法结构中标识另一个视频块和运动矢量差(MVD)。运动矢量差指示当前视频块的运动矢量与指示视频块的运动矢量之间的差。视频解码器300可以使用指示视频块的运动矢量和运动矢量差来确定当前视频块的运动矢量。
如上所讨论的,视频编码器200可以预测性地信令通知运动矢量。可以由视频编码器200实现的预测性的信令通知技术的两个示例包括高级运动矢量预测(AMVP)和merge模式信令通知。
帧内预测单元206可以对当前视频块进行帧内预测。当帧内预测单元206对当前视频块进行帧内预测时,帧内预测单元206可以基于相同图片中其他视频块的解码样点来生成当前视频块的预测数据。当前视频块的预测数据可以包括预测视频块和各种语法元素。
残差生成单元207可以通过从当前视频块中减去(例如,由减号表示)当前视频块的(多个)预测视频块来生成当前视频块的残差数据。当前视频块的残差数据可以包括对应于当前视频块中样点的不同样点分量的残差视频块。
在其他示例中,例如在跳过模式下,对于当前视频块可能不存在当前视频块的残差数据,并且残差生成单元207可以不进行减去操作。
变换处理单元208可以通过将一个或多个变换应用于与当前视频块相关联的残差视频块来生成当前视频块的一个或多个变换系数视频块。
在变换处理单元208生成与当前视频块相关联的变换系数视频块之后,量化单元209可以基于与当前视频块相关联的一个或多个量化参数(QP)值来量化与当前视频块相关联的变换系数视频块。
逆量化单元210和逆变换单元211可以将逆量化和逆变换分别应用于变换系数视频块,来从变换系数视频块重建残差视频块。重建单元212可以将重建的残差视频块添加到来自由预测单元202生成的一个或多个预测视频块的对应样点,以产生与当前块相关联的重建视频块用于存储在缓冲器213中。
在重建单元212重建视频块之后,可以进行环路滤波操作以降低视频块中视频块化伪影。
熵编码单元214可以从视频编码器200的其他功能组件接收数据。当熵编码单元214接收数据时,熵编码单元214可以进行一个或多个熵编码操作以生成熵编码数据并且输出包括熵编码数据的比特流。
图32是图示视频解码器300的示例的框图,该视频解码器300可以是图30中图示的系统100中的视频解码器114。
视频解码器300可以被配置为进行本公开的任何或全部技术。在图32的示例中,视频解码器300包括多个功能组件。本公开所描述的技术可以在视频解码器300的各种组件之间共享。在一些示例中,处理器可以配置为进行本公开中描述的任何或全部技术。
在图32的示例中,视频解码器300包括熵解码单元301、运动补偿单元302、帧内预测单元303、逆量化单元304、逆变换单元305以及重建单元306和缓冲器307。在一些示例中,视频解码器300可以进行与关于视频编码器200(图31)所描述的编码过程总体反演的解码过程。
熵解码单元301可以检索编码的比特流。编码的比特流可以包括熵编解码的视频数据(例如,视频数据的编码块)。熵解码单元301可以对熵编解码视频进行解码,并且根据熵解码的视频数据,运动补偿单元302可以确定包括运动矢量、运动矢量精度、参考图片列表索引和其他运动信息的运动信息。运动补偿单元302例如可以通过进行AMVP和merge模式确定此类信息。
运动补偿单元302可以产生运动补偿块,可能地基于插值滤波器进行插值。要以子像素精度使用的插值滤波器的标识符可以包括在语法元素中。
运动补偿单元302可以使用由视频编码器200在编码视频块的期间所使用的插值滤波器,来计算出参考块的子整数个像素的插值的值。运动补偿单元302可以根据接收的语法信息确定由视频编码器200所使用的插值滤波器并且使用插值滤波器来产生预测块。
运动补偿单元302可以使用一些语法信息来确定:用于对编码视频序列的(多个)帧和/或(多个)条带进行编码的块的尺寸,描述编码视频序列的图片的每个宏块如何被分割的分割信息,指示如何编码每个分割的模式,每个帧间编码块的一个或多个参考帧(和参考帧列表),以及对编码视频序列进行解码的其他信息。
帧内预测单元303可以使用例如在比特流中接收的帧内预测模式来从空域相邻块形成预测块。逆量化单元303逆量化(即去量化)在比特流中提供的且由熵解码单元301解码的量化的视频块系数。逆变换单元303应用逆变换。
重建单元306可以用由运动补偿单元202或帧内预测单元303生成的对应预测块求和残差块,以形成解码块。如所期望的,去块化滤波器还可以应用于滤波解码块以便移除块化伪影。解码视频块然后存储在缓冲器307中,该缓冲器307提供用于随后的运动补偿/帧内预测的参考块,并且还产生用于在显示设备上呈现的解码视频。
接下来提供了一些实施例优选的方案的列表。
以下方案显示了上一章节中讨论的技术的示例实施例(例如,项目1)。
1.一种视频处理的方法(例如,图29中描绘的方法2900),包括:对于视频区域的视频的视频块和视频的编解码表示之间的转换,基于选择规则维护(2902)块矢量(BV)候选的列表,该选择规则基于视频块的merge估计区域(MER)选择性地指定包括的候选;以及基于BV候选的列表执行(2904)转换。
2.根据方案1所述的方法,其中,使用帧内块复制(IBC)模式对视频块进行编解码。
3.根据方案1-2中任一项所述的方法,其中,选择规则指定,从视频块的MER之下的块中排除候选。
4.根据方案1-3中任一项所述的方法,其中,选择规则指定,包括MER之外的块和/或基于块矢量历史的运动矢量预测表中的候选和/或默认块矢量候选。
以下方案显示了上一章节中讨论的技术的示例实施例(例如,项目2-3)。
5.一种视频处理的方法,包括:确定视频的视频块和视频的编解码表示之间的转换:以及处理基于块矢量历史的候选的列表,该列表遵循以下规则:当视频块在merge估计区域(MER)中的第一种情况下,或者当该列表之前已经在MER内更新过一次的第二种情况下,不更新该列表。
6.根据方案5所述的方法,其中,该规则指定仅当视频块的右下角与MER的右下角重合时,在视频块在MER内的情况下更新列表。
以下方案显示了上一章节中讨论的技术的示例实施例(例如,项目4)。
7.一种视频处理的方法,包括:对于视频的视频块和视频的编解码表示之间的转换,维护运动候选的列表,基于规则将来自视频块的merge估计区域(MER)的临近块的候选选择性地添加到该列表;以及基于运动候选的列表执行转换。
8.根据方案7所述的方法,其中,该规则指定,在视频块的临近块不可用于添加到列表的情况下检查MER的临近块。
9.根据方案7所述的方法,其中,该规则指定,在检查视频块的所有可用临近块之后检查MER的临近块。
10.根据方案7所述的方法,其中,该规则指定,在检查所有基于历史的运动矢量预测候选之后检查MER的临近块的顺序。
11.根据方案7-10中任一项所述的方法,其中,该规则指定,将来自MER的临近块的最多X个候选添加到列表中,其中X是整数。
12.根据方案11所述的方法,其中X=2。
13.根据方案7所述的方法,其中,该规则指定了MER的临近块添加到列表中的预定义顺序。
14.根据方案7所述的方法,其中,该规则指定,检查位于自适应位置的MER的临近块,以便以不同方式检查至少两个块。
15.根据方案7所述的方法,其中,该规则指定,将列表的添加限制到满足位置条件或可用性条件的MER的临近块。
16.根据方案15所述的方法,其中,该位置条件指定,使用MER之外的至少一个位置的运动候选用于添加到列表中。
以下方案显示了上一章节中讨论的技术的示例实施例(例如,项目5)。
17.一种视频处理的方法,包括:对于视频的视频块和视频的编解码表示之间的转换,维护运动候选的列表,该列表的尺寸根据尺寸规则取决于视频块是否在merge估计区域(MER)之下;以及基于运动候选的列表执行转换。
18.根据方案17所述的方法,其中,尺寸规则指定MER之下的块的列表尺寸不同于MER之下的块的列表的尺寸。
19.根据方案17-18中任一项所述的方法,其中,编解码表示中的字段对应于列表的最大尺寸。
20.根据方案19所述的方法,其中,以序列级别或图片级别或条带级别或片组级别包括该字段。
21.根据方案19-20中任一项所述的方法,其中,该字段包含在序列标头或图片标头或序列参数集或视频参数集或图片参数集或自适应参数集或条带标头或片组标头中。
以下方案显示了上一章节中讨论的技术的示例实施例(例如,项目6)。
22.一种视频处理的方法,包括:确定视频的视频块相对于对应的merge估计区域的位置,以及通过基于取决于该位置的规则选择运动列表构建过程来进行视频块和视频的编解码表示之间的转换。
23.根据方案22所述的方法,其中,该位置包括视频块完全在merge估计区域内的完全内部位置。
24.根据方案23所述的方法,其中,该规则指定,对具有完全内部位置的块和剩余块使用不同的运动列表构建过程。
以下方案显示了上一章节中讨论的技术的示例实施例(例如,项目7)。
25.一种视频处理的方法,包括:对于视频的视频块确定该视频块的merge估计区域的特性,以及执行视频块和视频的编解码表示之间的转换,其中在转换期间使用的树划分模式根据规则取决于该特性。
26.根据方案25所述的方法,其中,由于视频块的宽度W大于R1和/或视频块的高度H小于或等于R2,该规则禁用视频块的水平二叉树划分,其中R1和R2是有理数。
27.根据方案25所述的方法,其中,由于视频块的宽度W小于或等于R1和/或视频块的高度H大于R2,该规则禁用视频块的水平二叉树划分,其中R1和R2是有理数。
28.根据方案1至27中任一项所述的方法,其中,转换包括将视频编码成编解码表示。
29.根据方案1至27中任一项所述的方法,其中,转换包括解码编解码表示以生成视频的像素值。
30.一种视频解码装置,包括被配置为实施方案1至29中的一个或多个中所述的方法的处理器。
31.一种视频编码装置,包括被配置为实施方案1至29中的一个或多个中所述的方法的处理器。
32.一种其上存储有计算机代码的计算机程序产品,当由处理器执行时,该代码使处理器实施方案1至29中任一项所述的方法。
33.本文档中描述的方法、装置或系统。
图34显示了视频处理的示例方法的流程图。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,基于覆盖当前视频块的merge估计区域(MER)来确定(3402)当前视频块的一个或多个块矢量(BV)候选;将一个或多个BV候选添加(3404)到与当前视频块相关联的BV列表;以及基于BV列表进行(3406)转换。
在一些示例中,当前视频块是帧内块复制(IBC)编解码块。
在一些示例中,不将来自MER之下的空域临近相邻块或/和空域临近非相邻块的BV候选添加到BV列表。
在一些示例中,仅将来自MER之外的空域临近相邻块或/和空域临近非相邻块的BV候选、或/和来自基于IBC历史的运动矢量预测(HMVP)表的BV候选、或/和默认BV候选添加到BV列表。
在一些示例中,不将来自空域临近块的BV候选添加到BV列表。
在一些示例中,将来自IBC HMVP表的BV候选以预定义顺序添加到BV列表,或/和当添加该BV候选时不执行修剪。
在一些示例中,顺序是基于表的条目索引的升序或降序。
在一些示例中,跳过表中的前N个条目。
在一些示例中,跳过表中的最后N个条目。
在一些示例中,跳过具有(多个)无效BV的条目。
在一些示例中,来自IBC HMVP表的BV候选在被添加到BV列表之前被修改。
在一些示例中,将偏移添加到来自IBC HMVP表的BV候选的水平分量或/和垂直分量。
在一些示例中,将具有(多个)无效BV的HMVP候选修改为具有(多个)有效BV的候选。
在一些示例中,在一个或多个HMVP BV候选之后或之前添加一个或多个默认BV候选,其中,定义默认BV候选为(BVx,BVy)。
在一些示例中,BVx=0,BVy=0。
在一些示例中,BVx=–W,BVy=–H,其中,W和H是当前视频块的宽度和高度。
在一些示例中,BV列表是指与当前视频块相关联的IBC AMVP列表或/和IBC merge列表。
在一些示例中,在解码MER之下的当前视频块之后,不更新IBC HMVP表。
在一些示例中,对于MER内的视频块,仅更新一次IBC HMVP表。
在一些示例中,仅在当前视频块不在MER内,或者当前视频块的右下角与MER的右下角重合的情况下,更新IBC HMVP表。
图35显示了视频处理的示例方法的流程图。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,在运动候选列表构建过程中,基于覆盖当前视频块的merge估计区域(MER)来确定(3502)当前视频块的一个或多个运动候选;在运动候选列表构建过程中,将一个或多个运动候选添加(3504)到与当前视频块相关联的运动候选列表;以及基于运动候选列表进行(3506)转换。
在一些示例中,运动候选列表包括块矢量(BV)候选列表、正常merge列表或子块merge列表。
在一些示例中,在运动候选列表构建过程期间使用来自MER的MER空域临近块的运动候选,MER空域临近块包括MER的MER空域临近相邻块或/和MER空域临近非相邻块。
在一些示例中,在当前视频块的空域临近块不可用时,在运动候选列表构建过程期间检查MER的MER空域临近块。
在一些示例中,如果MER空域临近块的运动信息可用,则使用运动信息来推导运动候选,运动候选被直接添加到运动候选列表中,作为从空域临近块推导的运动候选的替换。
在一些示例中,在运动候选列表构建过程期间,在检查了当前视频块的所有空域临近块之后,检查MER空域临近块。
在一些示例中,将来自MER空域临近块的运动候选添加到空域merge候选之后的运动候选列表。
在一些示例中,在检查了所有基于历史的运动矢量预测(HMVP)候选之后,检查MER空域临近块。
在一些示例中,将来自MER空域临近块的运动候选添加到HMVP候选之后的运动候选列表。
在一些示例中,将来自MER临近块的最多X个候选添加到运动候选列表,其中,X是整数。
在一些示例中,X=2。
在一些示例中,在运动候选列表构建过程期间,检查固定位置处的MER空域临近块,并使用来自那些固定位置的运动信息。
在一些示例中,对于相同MER内的两个块,定义允许的MER空域临近块的相同集合,并且仅检查和使用集合中的那些块。
在一些示例中,仅检查和使用集合中的MER空域临近相邻块中的一个或多个。
在一些示例中,仅检查和使用集合中的MER空域临近非相邻块中的一个或多个。
在一些示例中,当当前视频块的临近相邻块不可用时,通过假设当前视频块的尺寸等于MER的尺寸来替代地使用对应的MER空域临近块,其中,用(x0,y0)表示当前视频块相对于当前图片的左上样点的左上位置,用bW表示块宽度,用bH表示块高度,用mW表示MER宽度,以及用mH表示MER高度。
在一些示例中,如果位于(x0-1,y0+bH-1)的左块不可用,则使用位于((x0>>Log2(mW))<<Log2(mW)-1,(y0>>Log2(mH))<<Log2(mH)+mH-1)的块。
在一些示例中,如果位于(x0-1,y0+bH)的左下块不可用,则使用位于((x0>>Log2(mW))<<Log2(mW)-1,(y0>>Log2(mH))<<Log2(mH)+mH)的块。
在一些示例中,如果位于(x0+bW,y0-1)的右上块不可用,则使用位于((x0>>Log2(mW))<<Log2(mW)+mW,(y0>>Log2(mH))<<Log2(mH)-1)的块。
在一些示例中,如果位于((x0>>Log2(mW))<<Log2(mW)+mW-1,y0-1)的上块不可用,则使用位于(x0+bW-1,(y0>>Log2(mH))<<Log2(mH)-1)的块。
在一些示例中,如果位于(x0-1,y0-1)的左上块不可用,则使用位于((x0>>Log2(mW))<<Log2(mW)-1,(y0>>Log2(mH))<<Log2(mH)-1)的块。
在一些示例中,在运动候选列表构建过程期间,检查自适应位置处的MER空域临近块,并使用来自那些自适应位置的运动信息。
在一些示例中,至少对于MER之下的两个块,要检查的块中的至少一个是不同的。
在一些示例中,当当前视频块的临近相邻块不可用时,通过假设当前视频块的尺寸等于MER的尺寸来替代地使用对应的MER空域临近块,其中,用(x0,y0)表示当前视频块相对于当前图片的左上样点的左上位置,用bW表示块宽度,用bH表示块高度,用mW表示MER宽度,以及用mH表示MER高度。
在一些示例中,如果位于(x0-1,y0+bH-1)的左块不可用,则使用位于((x0>>Log2(mW))<<Log2(mW)-1,y0+bH-1)的块。
在一些示例中,如果位于(x0-1,y0+bH)的左下块不可用,则使用位于((x0>>Log2(mW))<<Log2(mW)-1,y0+bH)的块。
在一些示例中,如果位于(x0+bW,y0-1)的右上块不可用,则使用位于(x0+bW,(y0>>Log2(mH))<<Log2(mH)-1)的块。
在一些示例中,如果位于((x0>>Log2(mW))<<Log2(mW)+mW-1,y0-1)的上块不可用,则使用位于(x0+bW-1,(y0>>Log2(mH))<<Log2(mH)-1)的块。
在一些示例中,如果位于(x0-1,y0-1)的左上块不可用,则使用位于((x0>>Log2(mW))<<Log2(mW)-1,(y0>>Log2(mH))<<Log2(mH)-1)的块。
在一些示例中,对于相同MER内的不同块,定义与不同块相关联的允许的MER空域临近块的不同集合,并且仅检查和使用相同集合中的那些块。
在一些示例中,仅检查和使用与第一块相关联的第一集合中的MER空域临近相邻块(C0、C1、D0、D1和D2)中的一个或多个。
在一些示例中,仅检查和使用与第一块相关联的第一集合中的MER空域临近非相邻块(E0、E1、F0、F1和F2)中的一个或多个。
在一些示例中,仅检查和使用与第二块相关联的第二集合中的MER空域临近相邻块(C'0、C'1、D'0、D'1和D'2)中的一个或多个。
在一些示例中,仅检查和使用与第二块相关联的第二集合中的MER空域临近非相邻块(E'0、E'1、F'0、F'1和F'2)中的一个或多个。
在一些示例中,是否将来自MER空域临近块的运动候选添加到运动候选列表取决于MER空域临近块的位置或/和可用性。
在一些示例中,在运动候选列表构建过程期间,使用来自MER之外的MER空域临近相邻块或/和MER空域临近非相邻块中的至少一个的运动候选。
在一些示例中,运动候选包括IBC候选、或正常帧间候选、或包括仿射候选的子块候选。
在一些示例中,将位于特定位置的运动候选添加到运动候选列表。
在一些示例中,特定位置包括左临近相邻块和上临近相邻块,或左临近非相邻块和上临近非相邻块。
在一些示例中,特定位置包括上临近相邻块和左临近相邻块,或上临近非相邻块和左临近非相邻块。
在一些示例中,特定位置包括左临近相邻块、上临近相邻块和左上临近相邻块,或左临近非相邻块、上临近非相邻块和左上临近非相邻块。
在一些示例中,特定位置包括上临近相邻块和左上临近相邻块,或上临近非相邻块和左上临近非相邻块。
在一些示例中,特定位置包括左临近相邻块和左上临近相邻块,或左临近非相邻块和左上临近非相邻块。
在一些示例中,将来自空域临近块的运动候选按照预定义顺序插入到运动候选列表中。
在一些示例中,预定义顺序是左临近相邻块、左下临近相邻块、右上临近相邻块、上临近相邻块和左上临近相邻块,或者左临近非相邻块、左下临近非相邻块、右上临近非相邻块、上临近非相邻块和左上临近非相邻块。
在一些示例中,预定义顺序是上临近相邻块、右上临近相邻块、左临近相邻块、左下临近相邻块和左上临近相邻块,或者上临近非相邻块、右上临近非相邻块、左临近非相邻块、左下临近非相邻块和左上临近非相邻块。
在一些示例中,预定义顺序是左上临近相邻块、左临近相邻块、上临近相邻块、左下临近相邻块和右上临近相邻块,或者左上临近非相邻块、左临近非相邻块、上临近非相邻块、左下临近非相邻块和右上临近非相邻块。
在一些示例中,在运动候选列表构建过程期间,使用来自MER之外的左下临近非相邻块、左临近非相邻块、右上临近非相邻块、左上临近非相邻块和上临近非相邻块中的至少一个的BV候选。
在一些示例中,MER空域临近块仅当块以特定模式编解码时才被确定为可用。
在一些示例中,特定模式包括IBC模式。
在一些示例中,特定模式包括正常帧间模式。
在一些示例中,正常帧间模式包括基于平移运动的帧间模式。
在一些示例中,在运动候选列表构建中使用的当前视频块的临近块如果在MER之外,则被视为不可用。
在一些示例中,通过修剪操作将来自MER空域临近块的运动候选添加到运动候选列表。
在一些示例中,当运动候选的运动信息存在于运动候选列表中时,不将运动候选添加到运动候选列表。
在一些示例中,比较来自MER空域临近块的两个运动候选以确定两个运动候选是否相同或相似,并且只有当两个运动候选不相同或不相似时,才将两个运动候选放入运动候选列表中。
在一些示例中,将来自MER空域临近块的运动候选添加到运动候选列表,而不进行修剪操作。
在一些示例中,块的运动候选列表的运动候选的最大数量取决于块是否在MER之下。
在一些示例中,对于在MER之下的第一块和不在MER之下的第二块,第一块和第二块的运动候选列表的运动候选的最大数量是不同的。
在一些示例中,第一块的运动列表的运动候选的最大数量小于第二块的运动列表的运动候选的最大数量。
在一些示例中,第一块的运动列表的运动候选的最大数量大于第二块的运动列表的运动候选的最大数量。
在一些示例中,对于在MER之下的第一块和不在MER之下的第二块,第一块和第二块的运动候选列表的运动候选的最大数量是相同的。
在一些示例中,在序列级别、图片级别、条带级别或片组级别信令通知MER之下的块的运动候选列表的运动候选的最大数量。
在一些示例中,在序列标头、图片标头、SPS、VPS、DPS、PPS、APS、条带标头或片组标头中信令通知MER之下的块的运动候选列表的运动候选的最大数量。
在一些示例中,仅当针对视频、序列、图片、条带、子图片、片组、片或CTU行启用MER时,才信令通知MER之下的块的运动候选列表的运动候选的最大数量。
在一些示例中,取决于不在根据表示为maxBvListSizeMer的MER之下的块的运动候选列表的运动候选的最大数量,信令通知表示为maxBvListSizeNonMer的MER之下的块的运动候选列表的运动候选的最大数量。
在一些示例中,信令通知maxBvListSizeNonMer–maxBvListSizeMer而不是maxBvListSizeMer。
在一些示例中,运动候选列表构建过程取决于MER内的块位置。
在一些示例中,运动候选列表构建过程仅应用于完全在MER内的块,其中,当块在MER内并且该块的左边界和上边界都不与MER的任何边界重合时,块完全在MER内。
在一些示例中,在块完全在MER内的情况下,将最多X个成对平均候选添加到运动候选列表,X是整数。
在一些示例中,X等于2或3。
在一些示例中,完全在MER内的块的merge索引的信令通知不同于不在MER内或不完全在MER内的块。
在一些示例中,完全在MER内的块的merge MVP候选的最大数量M不同于VVC中的merge MVP候选的最大数量N,M和N是整数。
在一些示例中,M小于N
在一些示例中,M=2,且N=5。
在一些示例中,完全在MER内的块的merge索引的截断莱斯二值化代码的最大值取决于M。
在一些示例中,最大值等于M-1。
在一些示例中,完全在MER内的块的带有运动矢量差的Merge(MMVD)过程不同于不在MER内或不完全在MER内的块。
在一些示例中,完全在MER内的块的MMVD基础候选的最大数量T大于2。
在一些示例中,T=3、或4、或5。
在一些示例中,对于完全在MER内的块,修改MMVD中的预定义距离。
在一些示例中,修改的预定义距离等于d*S,其中d表示原始预定义距离,S表示多尺度。
在一些示例中,S等于2或3。
在一些示例中,S等于1/2或1/3。
图36显示了视频处理的示例方法的流程图。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,基于与当前视频块相关联的merge估计区域(MER)来确定(3602)对二叉树(BT)和/或三叉树(TT)划分的一个或多个规范约束,其中当前视频块完全在MER内或与MER重叠;以及基于一个或多个规范约束来执行(3604)转换。
在一些示例中,当前视频块的MER宽度、MER高度、块宽度和块高度分别由R1、R2、W和H表示,并且对二叉树(BT)和/或三叉树(TT)划分的一个或多个规范约束取决于MER宽度、MER高度、块宽度和块高度中的至少一个。
在一些示例中,当W>R1且H<=R2时,针对当前视频块禁用水平BT划分。
在一些示例中,当W<=R1且H>R2时,针对当前视频块禁用垂直BT划分。
在一些示例中,当(W>R1||H>R2)和H<=K*R2,K是整数时,对当前视频块禁用水平TT划分。
在一些示例中,K=2。
在一些示例中,当(W>R1||H>R2)和W<=K*R1,K是整数时,对于当前视频块禁用垂直TT划分。
在一些示例中,K=2。
在一些示例中,R1不等于R2。
在一些示例中,R1=32,R2=64,或R1=64,R2=32。
在一些示例中,R1等于R2。
在一些示例中,R1=R2=32,或者R1=R2=64。
在一些示例中,如果禁用了一种类型的划分,则跳过表示该类型的划分的码字。
在一些示例中,如果禁用了一种类型的划分,则跳过表示该类型的划分的语法元素。
在一些示例中,是否和/或如何对BT和TT划分应用一个或多个规范约束取决于条带或片组类型、和/或图片类型、和/或包括视频的双树和/或单树的分割树类型。
在一些示例中,当对于当前图片、当前子图片、当前条带或当前片仅允许帧内编解码工具时,不应用对BT和TT划分的一个或多个规范约束。
在一些示例中,当前图片是I帧,或者当前条带是I条带。
在一些示例中,当对于当前图片、当前子图片、当前条带或当前片仅允许帧间编解码工具时,不应用对BT和TT划分的一个或多个规范约束。
在一些示例中,当前图片是P/B帧,或者当前条带是P/B条带。
在一些示例中,当块在视频的图片或帧之内的特定区域中的情况下,对BT和TT划分的一个或多个规范约束被应用于块。
在一些示例中,特定区域包括子图片、条带、片或预定义矩形区域中的至少一个,预定义矩形区域包括图片或视频的帧中的感兴趣区域(ROI)。
在一些示例中,当块的一部分在视频的图片或帧之外的情况下,对BT和TT划分的一个或多个规范约束不被应用于块,其中,块的左上亮度样点、图片或帧宽度以及图片或帧高度分别由(x0,y0)、picW和picH表示。
在一些示例中,当块的左上角在图片或帧内,并且块的右上角或/和左下角在图片或帧之外时,块的一部分在视频的图片或帧之外。
在一些示例中,当块的一部分在视频的图片或帧之外的情况下,对BT划分的一个或多个规范约束不被应用于块。
在一些示例中,当y0<=picH且y0+T>picH,T是整数时,仍然允许块的水平BT划分。
在一些示例中,T等于块高度。
在一些示例中,当x0<=picW且x0+T>picW,T是整数时,仍然允许块的垂直BT划分。
在一些示例中,T等于块宽度。
在一些示例中,当块的一部分在视频的图片或帧之外时,对TT划分的一个或多个规范约束不被应用于块。
在一些示例中,当y0<=picH且y0+T>picH,T为整数时,仍然允许块的水平TT划分。
在一些示例中,T等于块高度。
在一些示例中,T等于b*H,其中b=1/2或1/4。
在一些示例中,当x0<=picW且x0+T>picW,T是整数时,仍然允许块的垂直TT划分。
在一些示例中,T等于块宽度。
在一些示例中,T等于b*W,其中b=1/2或1/4。
在一些示例中,是否和/或如何执行确定操作和添加操作取决于以下信息:
a.在DPS、SPS、VPS、PPS、APS、图片标头、条带标头、片组标头、最大编解码单元(LCU)、编解码单元(CU)、LCU行、LCU组、TU、PU块、视频编解码单元中的至少一个中信令通知的消息;
b.CU、PU、TU、块、视频编解码单元中的至少一个的位置;
c.当前块和/或其临近块的块维度;
d.当前块和/或其临近块的块形状;
e.包括IBC或非IBC帧间模式或非IBC子块模式的块的编解码模式;
f.颜色格式的指示,包括4:2:0和4:4:4;
g.编解码树结构;
h.条带、片组类型和/或图片类型;
i.颜色分量,仅包括色度分量或亮度分量;
j.时域层ID;
k.标准的配置文件、级别、层级。
在一些示例中,转换包括将当前视频块编码成比特流。
在一些示例中,转换包括从比特流解码当前视频块。
在一些示例中,转换包括从当前视频块生成比特流;方法还包括:将比特流存储在非暂时性计算机可读记录介质中。
图37显示了视频处理的示例方法的流程图。该方法包括:对于视频的当前视频块和视频的比特流之间的转换,在运动候选列表构建过程中,基于覆盖当前视频块的merge估计区域(MER)来确定(3702)当前视频块的一个或多个运动候选;在运动候选列表构建过程中,将一个或多个运动候选添加(3704)到与当前视频块相关联的运动候选列表;基于运动候选列表从当前视频块生成(3706)比特流;以及将比特流存储(3708)在非暂时性计算机可读记录介质中。
在本文档中,术语“视频处理”可指视频编码、视频解码、视频压缩或视频解压缩。例如,在从视频的像素表示到对应的比特流表示的转换期间,可以应用视频压缩算法,反之亦然。如语法所定义,当前视频块的比特流表示可(例如)对应于共位或散布在比特流内不同位置的比特。例如,可以根据变换和编解码的误差残差值并且还使用头中的比特和比特流中的其他字段,对宏块进行编码。
本文档中所述的公开和其他方案、示例、实施例、模块和功能操作可以被实现在数字电子电路中或者在计算机软件、固件或硬件中,含有本文档中所公开的结构以及其结构的等同物,或者它们中的一个或多个的组合。所公开的和其他实施例可以被实现为计算机可读介质上所编码的一个或多个计算机程序产品,例如一个或多个计算机程序指令模块,用于由数据处理装置执行或者控制数据处理装置的操作。该计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读可传播信号的物质的组合,或其一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如,机器生成的电、光或电磁信号,其被生成来编码信息以传输到合适的接收器装置。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言,并且可以以任何形式来部署计算机程序,包括独立程序或适合在计算环境中使用的模块、组件、子例程或其它单元。计算机程序不必须对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的部分中(例如,在标记语言文档中存储的一个或多个脚本)、在专用于所讨论的程序的单个文件中、或在多个协同文件中(例如存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以部署为在一个计算机上或者在多个计算机上执行,该多个计算机位于一个站点处或者分布跨多个站点并由通信网络互连。
本文档中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适合于计算机程序的执行的处理器包括例如通用和专用微处理器两者,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或者该两者接收指令和数据。计算机的基本元件是用于进行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如磁、磁光盘或光盘),或者可操作地耦合以从大容量存储设备(例如磁、磁光盘或光盘)接收数据或者将数据传输到大容量存储设备(例如磁、磁光盘或光盘),或者以上两者。但是,计算机不必具有此类设备。适用于存储计算机程序指令和数据的计算机可读介质含有所有形式的非易失性存储器、介质和存储器设备,含有例如半导体存储器设备(例如EPROM、EEPROM和闪存设备);磁盘(例如内部硬盘或可移动磁盘);磁光盘;和CDROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路补充,或者合并在专用逻辑电路中。
虽然本专利文档含有许多细节,但这些细节不应被解释为对任何主题或可要求保护的范围的限制,而是作为指定于特定技术的特定实施例的特征的描述。在本专利文档中,在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反地,在单个实施例的上下文中所描述的各种特征还可以分别在多个实施例中来实现或者以各种合适的子组合来实施。此外,尽管特征可以如上文描述为以某些组合起作用并且甚至最初同样地要求,但是在某些情况下来自所要求保护的组合的一个或多个特征可以从组合中去除,并且所要求保护的组合可以针对子组合或子组合的变化。
类似地,尽管在附图中以特定顺序描绘了操作,但这不应当理解为要求按所示的特定次序或顺序次序进行此类操作或者执行所有示出的操作,以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都要求这种分离。
仅描述了几个实现方式和示例,并且可以基于本专利文档中描述和示出的内容来作出其它实施、增强和变体。

Claims (146)

1.一种视频处理方法,包括:
对于视频的当前视频块和所述视频的比特流之间的转换,基于覆盖所述当前视频块的merge估计区域(MER)来确定所述当前视频块的一个或多个块矢量(BV)候选;
将所述一个或多个BV候选添加到与所述当前视频块相关联的BV列表;以及
基于所述BV列表执行所述转换。
2.根据权利要求1所述的方法,其中,所述当前视频块是帧内块复制(IBC)编解码块。
3.根据权利要求2所述的方法,其中,不将来自所述MER之下的空域临近相邻块或/和空域临近非相邻块的BV候选添加到所述BV列表。
4.根据权利要求2所述的方法,其中,仅将来自所述MER之外的空域临近相邻块或/和空域临近非相邻块的BV候选、或/和来自基于IBC历史的运动矢量预测(HMVP)表的BV候选、或/和默认BV候选添加到所述BV列表。
5.根据权利要求2所述的方法,其中,不将来自空域临近块的BV候选添加到所述BV列表。
6.根据权利要求4所述的方法,其中,将来自所述IBC HMVP表的BV候选以预定义顺序添加到所述BV列表,或/和当添加所述BV候选时不执行修剪。
7.根据权利要求6所述的方法,其中,所述顺序是基于所述表的条目索引的升序或降序。
8.根据权利要求6所述的方法,其中,跳过所述表中的前N个条目。
9.根据权利要求6所述的方法,其中,跳过所述表中的最后N个条目。
10.根据权利要求6所述的方法,其中,跳过具有(多个)无效BV的条目。
11.根据权利要求4所述的方法,其中,来自所述IBC HMVP表的BV候选在被添加到所述BV列表之前被修改。
12.根据权利要求11所述的方法,其中,将偏移添加到来自所述IBC HMVP表的BV候选的水平分量或/和垂直分量。
13.根据权利要求11所述的方法,其中,将具有(多个)无效BV的HMVP候选修改为具有(多个)有效BV的候选。
14.根据权利要求4所述的方法,其中,在一个或多个HMVP BV候选之后或之前添加一个或多个默认BV候选,其中,定义所述默认BV候选为(BVx,BVy)。
15.根据权利要求14所述的方法,其中,BVx=0,BVy=0。
16.根据权利要求14所述的方法,其中,BVx=–W,BVy=–H,其中,W和H是所述当前视频块的宽度和高度。
17.根据权利要求1-16中任一项所述的方法,其中,所述BV列表是指与所述当前视频块相关联的IBC AMVP列表或/和IBC merge列表。
18.根据权利要求4所述的方法,其中,在解码所述MER之下的当前视频块之后,不更新所述IBC HMVP表。
19.根据权利要求4所述的方法,其中,对于所述MER内的视频块,仅更新一次所述IBCHMVP表。
20.根据权利要求4所述的方法,其中,仅在所述当前视频块不在所述MER内,或者所述当前视频块的右下角与所述MER的右下角重合的情况下,更新所述IBC HMVP表。
21.一种视频处理方法,包括:
对于视频的当前视频块和所述视频的比特流之间的转换,在运动候选列表构建过程中,基于覆盖所述当前视频块的merge估计区域(MER)来确定所述当前视频块的一个或多个运动候选;
在所述运动候选列表构建过程中,将所述一个或多个运动候选添加到与所述当前视频块相关联的运动候选列表;以及
基于所述运动候选列表执行所述转换。
22.根据权利要求21所述的方法,其中,所述运动候选列表包括块矢量(BV)候选列表、正常merge列表或子块merge列表。
23.根据权利要求22所述的方法,其中,在所述运动候选列表构建过程期间使用来自所述MER的MER空域临近块的运动候选,所述MER空域临近块包括所述MER的MER空域临近相邻块或/和MER空域临近非相邻块。
24.根据权利要求23所述的方法,其中,在所述当前视频块的空域临近块不可用时,在所述运动候选列表构建过程期间检查所述MER的MER空域临近块。
25.根据权利要求24所述的方法,其中,如果所述MER空域临近块的运动信息可用,则使用所述运动信息来推导运动候选,所述运动候选被直接添加到所述运动候选列表中,作为从所述空域临近块推导的运动候选的替换。
26.根据权利要求23所述的方法,其中,在所述运动候选列表构建过程期间,在检查了所述当前视频块的所有空域临近块之后,检查所述MER空域临近块。
27.根据权利要求26所述的方法,其中,将来自所述MER空域临近块的运动候选添加到空域merge候选之后的所述运动候选列表。
28.根据权利要求23所述的方法,其中,在检查了所有基于历史的运动矢量预测(HMVP)候选之后,检查所述MER空域临近块。
29.根据权利要求28所述的方法,其中,将来自所述MER空域临近块的运动候选添加到所述HMVP候选之后的所述运动候选列表。
30.根据权利要求23-29中任一项所述的方法,其中,将来自所述MER临近块的最多X个候选添加到所述运动候选列表,其中,X是整数。
31.根据权利要求30所述的方法,其中,X=2。
32.根据权利要求23所述的方法,其中,在所述运动候选列表构建过程期间,检查固定位置处的MER空域临近块,并使用来自所述固定位置的运动信息。
33.根据权利要求32所述的方法,其中,对于相同所述MER内的两个块,定义允许的MER空域临近块的相同集合,并且仅检查和使用所述集合中的那些块。
34.根据权利要求33所述的方法,其中,仅检查和使用所述集合中的所述MER空域临近相邻块中的一个或多个。
35.根据权利要求33所述的方法,其中,仅检查和使用所述集合中的所述MER空域临近非相邻块中的一个或多个。
36.根据权利要求33所述的方法,其中,当所述当前视频块的临近相邻块不可用时,通过假设所述当前视频块的尺寸等于所述MER的尺寸来替代地使用对应的MER空域临近块,其中,用(x0,y0)表示所述当前视频块相对于当前图片的左上样点的左上位置,用bW表示块宽度,用bH表示块高度,用mW表示MER宽度,以及用mH表示MER高度。
37.根据权利要求36所述的方法,其中,如果位于(x0-1,y0+bH-1)的左块不可用,则使用位于((x0> >Log2(mW))< <Log2(mW)-1,(y0> >Log2(mH))< <Log2(mH)+mH-1)的块。
38.根据权利要求36所述的方法,其中,如果位于(x0-1,y0+bH)的左下块不可用,则使用位于((x0> >Log2(mW))< <Log2(mW)-1,(y0>>Log2(mH))<<Log2(mH)+mH)的块。
39.根据权利要求36所述的方法,其中,如果位于(x0+bW,y0-1)的右上块不可用,则使用位于((x0>>Log2(mW))<<Log2(mW)+mW,(y0> >Log2(mH))< <Log2(mH)-1)的块。
40.根据权利要求36所述的方法,其中,如果位于((x0>>Log2(mW))<<Log2(mW)+mW-1,y0-1)的上块不可用,则使用位于(x0+bW-1,(y0>>Log2(mH))<<Log2(mH)-1)的块。
41.根据权利要求36所述的方法,其中,如果位于(x0-1,y0-1)的左上块不可用,则使用位于((x0> >Log2(mW))< <Log2(mW)-1,(y0> >Log2(mH))< <Log2(mH)-1)的块。
42.根据权利要求23所述的方法,其中,在所述运动候选列表构建过程期间,检查自适应位置处的MER空域临近块,并使用来自所述自适应位置的运动信息。
43.根据权利要求42所述的方法,其中,至少对于所述MER之下的两个块,要检查的块中的至少一个是不同的。
44.根据权利要求43所述的方法,其中,当所述当前视频块的临近相邻块不可用时,通过假设所述当前视频块的尺寸等于所述MER的尺寸来替代地使用对应的MER空域临近块,其中,用(x0,y0)表示所述当前视频块相对于当前图片的左上样点的左上位置,用bW表示块宽度,用bH表示块高度,用mW表示MER宽度,以及用mH表示MER高度。
45.根据权利要求44所述的方法,其中,如果位于(x0-1,y0+bH-1)的左块不可用,则使用位于((x0> >Log2(mW))< <Log2(mW)-1,y0+bH-1)的块。
46.根据权利要求44所述的方法,其中,如果位于(x0-1,y0+bH)的左下块不可用,则使用位于((x0> >Log2(mW))< <Log2(mW)-1,y0+bH)的块。
47.根据权利要求44所述的方法,其中,如果位于(x0+bW,y0-1)的右上块不可用,则使用位于(x0+bW,(y0> >Log2(mH))< <Log2(mH)-1)的块。
48.根据权利要求44所述的方法,其中,如果位于((x0>>Log2(mW))<<Log2(mW)+mW-1,y0-1)的上块不可用,则使用位于(x0+bW-1,(y0>>Log2(mH))<<Log2(mH)-1)的块。
49.根据权利要求44所述的方法,其中,如果位于(x0-1,y0-1)的左上块不可用,则使用位于((x0> >Log2(mW))< <Log2(mW)-1,(y0> >Log2(mH))< <Log2(mH)-1)的块。
50.根据权利要求43所述的方法,其中,对于相同MER内的不同块,定义与所述不同块相关联的允许的MER空域临近块的不同集合,并且仅检查和使用相同集合中的那些块。
51.根据权利要求50所述的方法,其中,仅检查和使用与第一块相关联的第一集合中的所述MER空域临近相邻块(C0、C1、D0、D1和D2)中的一个或多个。
52.根据权利要求50所述的方法,其中,仅检查和使用与第一块相关联的第一集合中的所述MER空域临近非相邻块(E0、E1、F0、F1和F2)中的一个或多个。
53.根据权利要求50所述的方法,其中,仅检查和使用与第二块相关联的第二集合中的所述MER空域临近相邻块(C'0、C'1、D'0、D'1和D'2)中的一个或多个。
54.根据权利要求50所述的方法,其中,仅检查和使用与第二块相关联的第二集合中的所述MER空域临近非相邻块(E'0、E'1、F'0、F'1和F'2)中的一个或多个。
55.根据权利要求23所述的方法,其中,是否将来自MER空域临近块的运动候选添加到所述运动候选列表取决于所述MER空域临近块的位置或/和可用性。
56.根据权利要求55所述的方法,其中,在所述运动候选列表构建过程期间,使用来自所述MER之外的所述MER空域临近相邻块或/和所述MER空域临近非相邻块中的至少一个的运动候选。
57.根据权利要求56所述的方法,其中,所述运动候选包括IBC候选、或正常帧间候选、或包括仿射候选的子块候选。
58.根据权利要求57所述的方法,其中,将位于特定位置的运动候选添加到所述运动候选列表。
59.根据权利要求58所述的方法,其中,所述特定位置包括左临近相邻块和上临近相邻块,或左临近非相邻块和上临近非相邻块。
60.根据权利要求58所述的方法,其中,所述特定位置包括上临近相邻块和左临近相邻块,或上临近非相邻块和左临近非相邻块。
61.根据权利要求58所述的方法,其中,所述特定位置包括左临近相邻块、上临近相邻块和左上临近相邻块,或左临近非相邻块、上临近非相邻块和左上临近非相邻块。
62.根据权利要求58所述的方法,其中,所述特定位置包括上临近相邻块和左上临近相邻块,或上临近非相邻块和左上临近非相邻块。
63.根据权利要求58所述的方法,其中,所述特定位置包括左临近相邻块和左上临近相邻块,或左临近非相邻块和左上临近非相邻块。
64.根据权利要求58所述的方法,其中,将来自所述空域临近块的运动候选按照预定义顺序插入到所述运动候选列表中。
65.根据权利要求64所述的方法,其中,所述预定义顺序是左临近相邻块、左下临近相邻块、右上临近相邻块、上临近相邻块和左上临近相邻块,或者左临近非相邻块、左下临近非相邻块、右上临近非相邻块、上临近非相邻块和左上临近非相邻块。
66.根据权利要求64所述的方法,其中,所述预定义顺序是上临近相邻块、右上临近相邻块、左临近相邻块、左下临近相邻块和左上临近相邻块,或者上临近非相邻块、右上临近非相邻块、左临近非相邻块、左下临近非相邻块和左上临近非相邻块。
67.根据权利要求64所述的方法,其中,所述预定义顺序是左上临近相邻块、左临近相邻块、上临近相邻块、左下临近相邻块和右上临近相邻块,或者左上临近非相邻块、左临近非相邻块、上临近非相邻块、左下临近非相邻块和右上临近非相邻块。
68.根据权利要求57所述的方法,其中,在所述运动候选列表构建过程期间,使用来自所述MER之外的左下临近非相邻块、左临近非相邻块、右上临近非相邻块、左上临近非相邻块和上临近非相邻块中的至少一个的BV候选。
69.根据权利要求55所述的方法,其中,所述MER空域临近块仅当所述块以特定模式编解码时才被确定为可用。
70.根据权利要求69所述的方法,其中,所述特定模式包括IBC模式。
71.根据权利要求69所述的方法,其中,所述特定模式包括正常帧间模式。
72.根据权利要求71所述的方法,其中,所述正常帧间模式包括基于平移运动的帧间模式。
73.根据权利要求56所述的方法,其中,在所述运动候选列表构建中使用的所述当前视频块的临近块如果在所述MER之外,则被视为不可用。
74.根据权利要求56所述的方法,其中,通过修剪操作将来自所述MER空域临近块的运动候选添加到所述运动候选列表。
75.根据权利要求74所述的方法,其中,当所述运动候选的运动信息存在于所述运动候选列表中时,不将运动候选添加到所述运动候选列表。
76.根据权利要求74所述的方法,其中,比较来自所述MER空域临近块的两个运动候选以确定所述两个运动候选是否相同或相似,并且只有当所述两个运动候选不相同或不相似时,才将所述两个运动候选放入所述运动候选列表中。
77.根据权利要求56所述的方法,其中,将来自所述MER空域临近块的运动候选添加到所述运动候选列表,而不进行修剪操作。
78.根据权利要求22-77中任一项所述的方法,其中,块的所述运动候选列表的运动候选的最大数量取决于所述块是否在所述MER之下。
79.根据权利要求78所述的方法,其中,对于在所述MER之下的第一块和不在所述MER之下的第二块,所述第一块和所述第二块的运动候选列表的运动候选的最大数量是不同的。
80.根据权利要求79所述的方法,其中,所述第一块的运动列表的运动候选的最大数量小于所述第二块的运动列表的运动候选的最大数量。
81.根据权利要求79所述的方法,其中,所述第一块的运动列表的运动候选的最大数量大于所述第二块的运动列表的运动候选的最大数量。
82.根据权利要求78所述的方法,其中,对于在所述MER之下的第一块和不在所述MER之下的第二块,所述第一块和所述第二块的运动候选列表的运动候选的最大数量是相同的。
83.根据权利要求78所述的方法,其中,在序列级别、图片级别、条带级别或片组级别信令通知所述MER之下的块的所述运动候选列表的运动候选的最大数量。
84.根据权利要求83所述的方法,其中,在序列标头、图片标头、SPS、VPS、DPS、PPS、APS、条带标头或片组标头中信令通知所述MER之下的所述块的运动候选列表的运动候选的最大数量。
85.根据权利要求84所述的方法,其中,仅当针对所述视频、序列、图片、条带、子图片、片组、片或CTU行启用MER时,才信令通知所述MER之下的所述块的运动候选列表的运动候选的最大数量。
86.根据权利要求84所述的方法,其中,取决于不在表示为maxBvListSizeMer的MER之下的块的运动候选列表的运动候选的最大数量,信令通知表示为maxBvListSizeNonMer的所述MER之下的所述块的运动候选列表的运动候选的最大数量。
87.根据权利要求86所述的方法,其中,信令通知maxBvListSizeNonMer–maxBvListSizeMer而不是maxBvListSizeMer。
88.根据权利要求21-87中任一项所述的方法,其中,所述运动候选列表构建过程取决于MER内的块位置。
89.根据权利要求88所述的方法,其中,所述运动候选列表构建过程仅应用于完全在所述MER内的所述块,其中,当块在MER内并且所述块的左边界和上边界都不与所述MER的任何边界重合时,所述块完全在MER内。
90.根据权利要求89所述的方法,其中,在所述块完全在所述MER内的情况下,将最多X个成对平均候选添加到所述运动候选列表,X是整数。
91.根据权利要求90所述的方法,其中,X等于2或3。
92.根据权利要求89所述的方法,其中,完全在MER内的块的merge索引的信令通知不同于不在MER内或不完全在MER内的块。
93.根据权利要求92所述的方法,其中,完全在所述MER内的块的merge MVP候选的最大数量M不同于VVC中的merge MVP候选的最大数量N,M和N是整数。
94.根据权利要求93所述的方法,其中,M小于N。
95.根据权利要求94所述的方法,其中,M=2,且N=5。
96.根据权利要求93所述的方法,其中,完全在MER内的块的merge索引的截断莱斯二值化代码的最大值取决于M。
97.根据权利要求96所述的方法,其中,所述最大值等于M-1。
98.根据权利要求89所述的方法,其中,完全在MER内的块的带有运动矢量差的Merge(MMVD)过程不同于不在MER内或不完全在MER内的块。
99.根据权利要求98所述的方法,其中,完全在所述MER内的块的MMVD基础候选的最大数量T大于2。
100.根据权利要求99所述的方法,其中,T=3、或4、或5。
101.根据权利要求98所述的方法,其中,对于完全在所述MER内的块,修改MMVD中的预定义距离。
102.根据权利要求101所述的方法,其中,所述修改的预定义距离等于d*S,其中,d表示原始预定义距离,S表示多尺度。
103.根据权利要求101所述的方法,其中,S等于2或3,或S等于1/2或1/3。
104.一种视频处理方法,包括:
对于视频的当前视频块和所述视频的比特流之间的转换,基于与所述当前视频块相关联的merge估计区域(MER)来确定对二叉树(BT)和/或三叉树(TT)划分的一个或多个规范约束,其中,所述当前视频块完全在所述MER内或与所述MER重叠;以及
基于所述一个或多个规范约束执行所述转换。
105.根据权利要求104所述的方法,其中,所述当前视频块的MER宽度、MER高度、块宽度和块高度分别由R1、R2、W和H表示,并且对二叉树(BT)和/或三叉树(TT)划分的所述一个或多个规范约束取决于所述MER宽度、所述MER高度、所述块宽度和所述块高度中的至少一个。
106.根据权利要求105所述的方法,其中,当W>R1且H<=R2时,针对当前视频块禁用水平BT划分。
107.根据权利要求105所述的方法,其中,当W<=R1且H>R2时,针对当前视频块禁用垂直BT划分。
108.根据权利要求105所述的方法,其中,当(W>R1||H>R2)和H<=K*R2,K是整数时,对当前视频块禁用水平TT划分。
109.根据权利要求108所述的方法,其中,K=2。
110.根据权利要求109所述的方法,其中,当(W>R1||H>R2)和W<=K*R1,K是整数时,对于当前视频块禁用垂直TT划分。
111.根据权利要求110所述的方法,其中,K=2。
112.根据权利要求109所述的方法,其中,R1不等于R2。
113.根据权利要求112所述的方法,其中,R1=32,R2=64,或R1=64,R2=32。
114.根据权利要求109所述的方法,其中,R1等于R2。
115.根据权利要求112所述的方法,其中,R1=R2=32,或者R1=R2=64。
116.根据权利要求104所述的方法,其中,如果禁用了一种类型的划分,则跳过表示所述类型的划分的码字。
117.根据权利要求104所述的方法,其中,如果禁用了一种类型的划分,则跳过表示所述类型的划分的语法元素。
118.根据权利要求104-117中任一项所述的方法,其中,是否和/或如何对BT和TT划分应用所述一个或多个规范约束取决于条带或片组类型、和/或图片类型、和/或包括所述视频的双树和/或单树的分割树类型。
119.根据权利要求118所述的方法,其中,当对于当前图片、当前子图片、当前条带或当前片仅允许帧内编解码工具时,不应用对BT和TT划分的所述一个或多个规范约束。
120.根据权利要求119所述的方法,其中,所述当前图片是I帧,或者所述当前条带是I条带。
121.根据权利要求118所述的方法,其中,当对于当前图片、当前子图片、当前条带或当前片仅允许帧间编解码工具时,不应用对BT和TT划分的所述一个或多个规范约束。
122.根据权利要求121所述的方法,其中,所述当前图片是P/B帧,或者所述当前条带是P/B条带。
123.根据权利要求104所述的方法,其中,当块在所述视频的图片或帧之内的特定区域中的情况下,对BT和TT划分的所述一个或多个规范约束被应用于所述块。
124.根据权利要求123所述的方法,其中,所述特定区域包括子图片、条带、片或预定义矩形区域中的至少一个,所述预定义矩形区域包括所述图片或所述视频的帧中的感兴趣区域(ROI)。
125.根据权利要求104所述的方法,其中,当块的一部分在所述视频的图片或帧之外的情况下,对BT和TT划分的所述一个或多个规范约束不被应用于所述块,其中,所述块的左上亮度样点、图片或帧宽度以及图片或帧高度分别由(x0,y0)、picW和picH表示。
126.根据权利要求125所述的方法,其中,当所述块的左上角在图片或帧之内,并且所述块的右上角或/和左下角在所述图片或帧之外时,所述块的一部分在所述视频的所述图片或帧之外。
127.根据权利要求125所述的方法,其中,当块的一部分在所述视频的图片或帧之外的情况下,对BT划分的所述一个或多个规范约束不被应用于所述块。
128.根据权利要求127所述的方法,其中,当y0<=picH且y0+T>picH,T是整数时,仍然允许块的水平BT划分。
129.根据权利要求128所述的方法,其中,T等于块高度。
130.根据权利要求127所述的方法,其中,当x0<=picW且x0+T>picW,T是整数时,仍然允许块的垂直BT划分。
131.根据权利要求128所述的方法,其中,T等于块宽度。
132.根据权利要求125所述的方法,其中,当块的一部分在所述视频的图片或帧之外时,对TT划分的所述一个或多个规范约束不被应用于所述块。
133.根据权利要求132所述的方法,其中,当y0<=picH且y0+T>picH,T为整数时,仍然允许块的水平TT划分。
134.根据权利要求133所述的方法,其中,T等于块高度。
135.根据权利要求132所述的方法,其中,T等于b*H,其中b=1/2或1/4。
136.根据权利要求132所述的方法,其中,当x0<=picW且x0+T>picW,T是整数时,仍然允许块的垂直TT划分。
137.根据权利要求136所述的方法,其中,T等于块宽度。
138.根据权利要求136所述的方法,其中,T等于b*W,其中b=1/2或1/4。
139.根据权利要求1-136中任一项所述的方法,其中,是否和/或如何执行所述确定操作和所述添加操作取决于以下信息:
a.在DPS、SPS、VPS、PPS、APS、图片标头、条带标头、片组标头、最大编解码单元(LCU)、编解码单元(CU)、LCU行、LCU组、TU、PU块、视频编解码单元中的至少一个中信令通知的消息;
b.CU、PU、TU、块、视频编解码单元中的至少一个的位置;
c.当前块和/或其临近块的块维度;
d.当前块和/或其临近块的块形状;
e.包括IBC或非IBC帧间模式或非IBC子块模式的块的编解码模式;
f.颜色格式的指示,包括4:2:0和4:4:4;
g.编解码树结构;
h.条带、片组类型和/或图片类型;
i.颜色分量,仅包括色度分量或亮度分量;
j.时域层ID;
k.标准的配置文件、级别、层级。
140.根据权利要求1-139中任一项所述的方法,其中,所述转换包括将所述当前视频块编码成所述比特流。
141.根据权利要求1-139中任一项所述的方法,其中,所述转换包括从所述比特流解码所述当前视频块。
142.根据权利要求1-39中任一项所述的方法,其中,所述转换包括从所述当前视频块生成所述比特流;
所述方法还包括:
将所述比特流存储在非暂时性计算机可读记录介质中。
143.一种用于处理视频数据的装置,包括处理器和其上带有指令的非暂时性存储器,其中,所述指令在由所述处理器执行时使所述处理器:
对于视频的当前视频块和所述视频的比特流之间的转换,在运动候选列表构建过程中,基于覆盖所述当前视频块的merge估计区域(MER)来确定所述当前视频块的一个或多个运动候选;
在所述运动候选列表构建过程中,将所述一个或多个运动候选添加到与所述当前视频块相关联的运动候选列表;以及
基于所述运动候选列表执行所述转换。
144.一种存储指令的非暂时性计算机可读介质,所述指令使得处理器:
对于视频的当前视频块和所述视频的比特流之间的转换,在运动候选列表构建过程中,基于覆盖所述当前视频块的merge估计区域(MER)来确定所述当前视频块的一个或多个运动候选;
在所述运动候选列表构建过程中,将所述一个或多个运动候选添加到与所述当前视频块相关联的运动候选列表;以及
基于所述运动候选列表执行所述转换。
145.一种存储由视频处理装置执行的方法生成的视频的比特流的非暂时性计算机可读介质,其中,所述方法包括:
对于视频的当前视频块和所述视频的比特流之间的转换,在运动候选列表构建过程中,基于覆盖所述当前视频块的merge估计区域(MER)来确定所述当前视频块的一个或多个运动候选;
在所述运动候选列表构建过程中,将所述一个或多个运动候选添加到与所述当前视频块相关联的运动候选列表;
基于所述运动候选列表从所述当前视频块生成所述比特流;以及
将所述比特流存储在非暂时性计算机可读记录介质中。
146.一种存储视频的比特流的方法,包括:
对于视频的当前视频块和所述视频的比特流之间的转换,在运动候选列表构建过程中,基于覆盖所述当前视频块的merge估计区域(MER)来确定所述当前视频块的一个或多个运动候选;
在所述运动候选列表构建过程中,将所述一个或多个运动候选添加到与所述当前视频块相关联的运动候选列表;
基于所述运动候选列表从所述当前视频块生成所述比特流;以及
将所述比特流存储在非暂时性计算机可读记录介质中。
CN202180013156.1A 2020-02-07 2021-02-07 merge估计区域下IBC块的BV列表构建过程 Pending CN115152229A (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
CNPCT/CN2020/074485 2020-02-07
CN2020074485 2020-02-07
CNPCT/CN2020/082125 2020-03-30
CN2020082125 2020-03-30
CNPCT/CN2020/084298 2020-04-10
CN2020084298 2020-04-10
PCT/CN2021/075775 WO2021155862A1 (en) 2020-02-07 2021-02-07 Bv list construction process of ibc blocks under merge estimation region

Publications (1)

Publication Number Publication Date
CN115152229A true CN115152229A (zh) 2022-10-04

Family

ID=77200753

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180013156.1A Pending CN115152229A (zh) 2020-02-07 2021-02-07 merge估计区域下IBC块的BV列表构建过程

Country Status (3)

Country Link
US (1) US20230081842A1 (zh)
CN (1) CN115152229A (zh)
WO (1) WO2021155862A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW202415072A (zh) * 2018-12-28 2024-04-01 日商Jvc建伍股份有限公司 影像編碼裝置、影像編碼方法、影像編碼程式、影像解碼裝置、影像解碼方法、影像解碼程式、儲存方法及送訊方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116866570A (zh) * 2016-10-04 2023-10-10 株式会社Kt 用于处理视频信号的方法和装置
US11012715B2 (en) * 2018-02-08 2021-05-18 Qualcomm Incorporated Intra block copy for video coding
WO2020007291A1 (en) * 2018-07-02 2020-01-09 Huawei Technologies Co., Ltd. A video encoder, a video decoder and corresponding methods
CN112567755B (zh) * 2018-08-10 2022-11-08 华为技术有限公司 使用合并模式的译码方法、设备、系统
WO2020048366A1 (en) * 2018-09-03 2020-03-12 Huawei Technologies Co., Ltd. Coding method, device, system with merge mode
US11539982B2 (en) * 2019-11-01 2022-12-27 Qualcomm Incorporated Merge estimation region for multi-type-tree block structure

Also Published As

Publication number Publication date
US20230081842A1 (en) 2023-03-16
WO2021155862A1 (en) 2021-08-12

Similar Documents

Publication Publication Date Title
US11095917B2 (en) Affine inheritance method in intra block copy mode
US20210377545A1 (en) Interaction between lut and shared merge list
US11641483B2 (en) Interaction between merge list construction and other tools
CN113853783B (zh) 对帧内块复制编解码的块的块矢量的编解码
CN114450959B (zh) 视频编解码中的几何分割模式
CN114097228B (zh) 具有几何分割模式编解码的运动候选列表
WO2020244503A1 (en) Intra block copy with triangular partitions
CN114128258B (zh) 视频编解码中的变换块尺寸的限制
WO2020244658A1 (en) Sub-block based intra block copy
CN113924783A (zh) 用于视频编解码的组合式帧内和帧内块复制预测
CN113966616B (zh) 使用临近块信息的运动候选列表构建
WO2020244660A1 (en) Motion candidate list construction for video coding
WO2020259426A1 (en) Motion candidate list construction for intra block copy mode
US12069309B2 (en) Intra block copy coding and decoding
CN115918080A (zh) 视频编解码的仿射预测改进
WO2020248925A1 (en) History-based motion vector prediction with default parameters
WO2020164543A1 (en) Motion prediction based on shared merge list
CN115152229A (zh) merge估计区域下IBC块的BV列表构建过程
WO2021000883A1 (en) Storage of motion information in history-based motion vector prediction table
CN113557720A (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