CN114868391B - 编解码块或子块边界处的去方块滤波 - Google Patents

编解码块或子块边界处的去方块滤波 Download PDF

Info

Publication number
CN114868391B
CN114868391B CN202080059765.6A CN202080059765A CN114868391B CN 114868391 B CN114868391 B CN 114868391B CN 202080059765 A CN202080059765 A CN 202080059765A CN 114868391 B CN114868391 B CN 114868391B
Authority
CN
China
Prior art keywords
block
equal
boundary
sub
deblocking filter
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.)
Active
Application number
CN202080059765.6A
Other languages
English (en)
Other versions
CN114868391A (zh
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.)
Beijing ByteDance Network Technology Co Ltd
ByteDance Inc
Original Assignee
Beijing ByteDance Network Technology 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 Beijing ByteDance Network Technology Co Ltd, ByteDance Inc filed Critical Beijing ByteDance Network Technology Co Ltd
Priority claimed from PCT/CN2020/110784 external-priority patent/WO2021036981A1/en
Publication of CN114868391A publication Critical patent/CN114868391A/zh
Application granted granted Critical
Publication of CN114868391B publication Critical patent/CN114868391B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

描述了一种视频处理方法。该方法包括:对于视频的当前视频块的子块,根据规则确定要应用去方块滤波器的子块边界;以及使用所述去方块滤波器执行所述视频和所述视频的编解码表示之间的转换,其中所述规则规定,在不检查i)所述当前视频块的子块的位置与预定义值的总和与ii)所述当前视频块的宽度或高度之间的关系的情况下,确定去方块滤波器长度。

Description

编解码块或子块边界处的去方块滤波
相关申请的交叉引用
根据适用专利法和/或适用于巴黎公约的规则,本申请及时要求2019年8月23日提交的国际专利申请No.PCT/CN2019/102217的优先权和权益。出于法律的所有目的,通过引用将上述申请的全部公开并入,作为本申请公开的一部分。
技术领域
本专利文档涉及视频编码和解码。
背景技术
尽管在视频压缩方面取得了进步,但数字视频仍然是互联网和其他数字通信网络中使用带宽最多的部分。随着能够接收和显示视频的连接用户设备的数量增加,预计数字视频使用的带宽需求将继续增长。
发明内容
与数字视频处理相关的设备、***和方法,特别是与使用环路滤波(例如去方块滤波器)的视频和图像编码和解码有关。
在一个示例方面,公开了一种视频处理方法。所述方法包括:对于视频的当前视频块的子块,根据规则确定要应用去方块滤波器的子块边界;以及使用所述去方块滤波器执行所述视频和所述视频的编解码表示之间的转换,其中所述规则规定,在不检查i)所述当前视频块的子块的位置与预定义值的总和与ii)所述当前视频块的宽度或高度之间的关系的情况下,确定去方块滤波器长度。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于当前视频块和视频的编解码表示之间的转换,基于规则做出关于是否将去方块滤波器应用于所述当前视频块的子块之间的边界、和/或在应用所述去方块滤波器时要使用的去方块参数的确定;以及基于所述确定执行所述转换,其中所述规则基于所述边界是否落在子块的NxM样点网格上,和/或所述边界是否是所述当前视频块的自然边界,其中N和M是整数。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:做出将去方块滤波器应用于使用几何预测模式编解码的当前视频块的NxN样点网格的确定,其中所述当前视频块被划分成多个子分割进行预测,其中N等于4或8;以及基于所述确定执行包括所述当前视频块的视频和所述视频的编解码表示之间的转换。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于视频的当前视频块的子块,根据规则确定要应用去方块滤波器的子块边界;以及使用所述去方块滤波器在所述视频和所述视频的编解码表示之间执行转换。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于视频的当前视频块和所述视频的编解码表示之间的转换,基于规则确定应用于使用去方块滤波器的所述当前视频块的子块边界的边界强度;以及基于所述确定执行所述转换,其中所述规则规定,无论所述子块边界是否为变换块边界,所述边界强度都被设置为等于2。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:根据规则在视频的当前视频块和所述视频的编解码表示之间执行转换,其中,所述转换使用子块变换(SBT)工具,所述转换包括:在编码期间,将所述当前视频块分割为变换块(TB)并对所述TB应用TB级变换,或者在解码期间,对所述视频的所述编解码表示中的编解码样点应用TB级逆变换,其中,所述规则规定,在水平方向和/或垂直方向上跨越至少三个TB边界启用自适应滤波器。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于视频的当前视频块和所述视频的编解码表示之间的转换,做出位于所述当前视频块边缘两侧的两个临近样点属于不具有非零变换系数水平的两个变换块的确定;基于所述第一确定,做出将所述当前块边缘的去方块滤波器强度设置为0的第二确定;以及使用所述第一确定和所述第二确定执行所述转换。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:使用解码器侧运动矢量细化(DMVR)工具在视频的当前视频块和所述视频的编解码表示之间执行转换;以及对在所述转换期间生成的重构视频块应用去方块滤波器;其中,所述DMVR工具包括:使用通过细化所述编解码表示中的编解码的运动矢量而生成的细化的运动矢量、通过运动补偿生成所述重构视频块;其中,所述去方块滤波器的参数基于所述细化的运动矢量。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于视频的当前视频块和所述视频的编解码表示之间的转换,基于规则确定用于去方块滤波处理的去方块滤波器强度;以及基于所述确定执行所述转换,并且其中,所述规则规定,所述去方块滤波器强度不取决于所述当前视频块的相邻块的预测模式。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于视频的当前视频块和所述视频的编解码表示之间的转换,基于取决于或独立于边界的类型的规则,确定是否将去方块滤波器应用于所述当前视频块的所述边界和/或在应用所述去方块滤波器的情况下要使用的去方块参数;以及基于上述确定执行所述转换。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于视频的视频区域和所述视频的编解码表示之间的转换,确定在距离水平边界的N个样点的虚拟边界上不应用一个方向的去方块滤波器,其中N是大于0的整数;以及基于所述确定执行所述转换。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于视频的视频区域和所述视频的编解码表示之间的转换,基于规则确定是否以及如何使用去方块滤波器在去方块处理期间剪裁样点的值,所述规则取决于要由所述去方块滤波器滤波的边界是否与距离所述视频区域的水平边界N个样点的虚拟边界重合,其中N是大于0的整数;以及基于所述确定执行所述转换。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:根据规则确定用于视频的当前视频块和所述视频的编解码表示之间的转换的编解码工具;以及根据所述编解码工具执行所述转换,其中,所述规则规定,子块变换(SBT)工具与基于子块的编解码模式互斥地使用。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于根据帧内子块分割(ISP)模式的使用而被划分成子分割的当前视频块,确定对所述当前视频块的两个子分割之间的边界应用去方块滤波器;以及基于所述确定,执行视频的所述当前视频块和所述视频的编解码表示之间的转换。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于使用几何预测模式编解码的当前视频块,确定将去方块滤波器应用于所述当前视频块的两个MxN区域之间的边界,其中所述当前视频块被划分为子分割,其中M和N是整数;以及基于所述确定执行视频的所述当前视频块和所述视频的编解码表示之间的转换。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于包括视频块的视频和所述视频的编解码表示之间的转换,确定由于两个相邻视频块中的至少一个使用几何预测模式编解码,将去方块滤波器应用于所述两个相邻视频块之间的边界,其中所述两个相邻视频块中的至少一个被划分为子分割;以及基于所述确定执行所述转换。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:对于视频的当前视频块和所述视频的编解码表示之间的转换,基于所述规则确定在滤波处理中使用的滤波参数;以及基于所述确定执行所述转换,其中,所述规则规定,所述滤波参数取决于i)在运动补偿处理中使用的运动信息,ii)存储在运动存储器中的运动信息,或者iii)在运动矢量预测处理中使用的运动信息。
在另一个示例方面,公开了另一种视频处理方法。所述方法包括:执行视频和所述视频的编解码表示之间的转换,并且其中,所述编解码表示符合格式规则,其中,所述格式规则规定是否基于色度格式、与色度分量相关联的编解码模式或色度信息语法元素在所述编解码表示中包括指示色度分量的色度语法元素。
在又一代表性方面,上述方法以处理器可执行代码的形式实施,并且存储在计算机可读的程序介质中。
在又一代表性方面,公开了一种设备,其被配置为或可操作以执行上述方法。该设备可以包括被编程以实现该方法的处理器。
在又一代表性方面,一种视频解码器装置,其可以实现如本文所述的方法。
在附图、说明书和权利要求书中更详细地描述了所公开技术的上述方面、以及其他方面和特征。
附图说明
图1示出了样点位置的示例pi,k和qi,k
图2示出了在8x8网格上去方块的示例。
图3示出了对4xN、Nx4和8xN、Nx8块进行一个样点修改的弱滤波器的示例。
图4示出在虚拟边界处的修改的块分类的示例。
图5示出了虚拟边界处的亮度分量的修改的ALF滤波的示例。
图6A和6B是用于视频处理的硬件平台的示例实现的框图。
图7是视频处理的示例方法的流程图。
图8A-8D示出了视频处理的示例方法的流程图。
图9A-9I示出了视频处理的示例方法的流程图。
图10A-10C示出了视频处理的示例方法的流程图。
具体实施方式
所公开技术的实施例可应用于现有视频编解码标准(例如HEVC、H.265)和未来的标准,以改进压缩性能。在本文档中,章节标题用于提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实现)仅限于相应的章节。
1.简介
本文涉及视频编解码技术。具体地说,涉及视频编解码中的去方块滤波和相关技术。它可以应用于现有的视频编解码标准如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增强视频编解码(AVC)和H.265/HEVC标准。从H.262开始,视频编解码标准基于混合视频编解码结构,其中利用了时域预测和变换编解码。为了探索HEVC之外的未来视频编解码技术,VCEG和MPEG于2015年联合成立了联合视频探索小组(JVET)。此后,JVET采纳了许多新方法并将其引入到名为“联合探索模型”(JEM)的参考软件中。JVET会议每季度同时举行一次,新的编解码标准的目标是比HEVC降低50%的比特率。新的视频编解码标准在2018年4月的JVET会议上正式命名为多功能视频编解码(VVC),并且当时发布了VVC测试模型(VTM)的第一版。随着对VVC标准化的不断努力,在每次JVET会议上,VVC标准都采纳新的编解码技术。VVC工作草案和测试模型VTM在每次会议后都会更新。目前,VVC项目的目标是在2020年7月的会议上实现技术完备(FDIS)。
2.1VVC中的去方块滤波器
VTM6共有三个环路滤波器。VTM5除了采用去方块滤波器和SAO(HEVC中的两个环路滤波器)外,还采用了自适应环路滤波器(ALF)。VTM6中滤波处理的顺序是去方块滤波器、SAO和ALF。在VTM6中,去方块滤波处理与HEVC中的基本相同。但是,添加了以下修改。
a)去方块滤波器的滤波强度取决于重构样点的平均亮度水平。
b)去方块tC表扩展。
c)4x4样点网格上的亮度去方块和8x8样点网格上的色度去方块。
d)更强的亮度去方块滤波器。
e)更强的色度去方块滤波器。
2.1.1滤波强度取决于重构的平均亮度水平
在HEVC中,去方块滤波器的滤波器强度由从平均量化参数qPL导出的变量β和tC控制。在VTM5中,去方块滤波器根据重构样点的亮度水平,通过向qPL添加偏移量来控制去方块滤波器的强度。重构的亮度水平LL推导如下:
LL=((p0,0+p0,3+q0,0+q0,3)>>2)/(1<<bitDepth)
其中,如图1所示导出i=0..3和k=0和3的样点值pi,k和qi,k
变量qPL推导如下:
qPL=((QpQ+QpP+1)>>1)+qpOffset
其中QpQ和QpP分别表示包含样点q0,0和p0,0的编解码单元的量化参数。偏移量qpOffset取决于变换函数,值在SPS中信令通知。
2.1.2去方块tC表扩展
在VVC中,最大QP从51变为63,并且需要向去方块表反映相应的变化,其基于块QP导出去方块参数tC的值。表1是更新的tC′表,以适应QP范围的扩展。变量tC推导如下:
tC=BitDepthY<10?(tC′+2)>>(10-BitDepthY):tC′*(1<<(BitDepthY-10))
表1–从输入Q导出阈值变量β′和tC
Q 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
β′ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
tC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Q 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
β′ 7 8 9 10 11 12 13 14 15 16 17 18 20 22 24 26 28
tC 0 3 4 4 4 4 5 5 5 5 7 7 8 9 10 10 11
Q 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
β′ 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62
tC 13 14 15 17 19 21 24 25 29 33 36 41 45 51 57 64 71
Q 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
β′ 64 66 68 70 72 74 76 78 80 82 84 86 88 - -
tC 80 89 100 112 125 141 157 177 198 222 250 280 314 352 395
2.1.3更强的亮度去方块滤波器
当边界任意一侧的样点属于大块时,使用双线性滤波器(更强的去方块滤波器)。属于大块的样点定义为:对于垂直边缘,宽度大于或等于32时;对于水平边缘,高度大于或等于32时。然后用线性插值代替i=0到Sp-1的块边界样点pi和j=0到Sq-1的qi,如下所示:
pi′=(fi*Middles,t+(64-fi)*Ps+32)>>6),clipped to pi±tcPDi
qj′=(gj*Middles,t+(64-gj)*Qs+32)>>6),clipped to qj±tcPDj其中术语tcPDi和tcPDj是位置相关的剪切,并且gj,fi,Middles,t,Ps和Qs如下所示:
表2–更强的亮度去方块滤波参数的推导
只有当条件1(Condition1)、条件2(Condition2)和条件3(Condition3)都为真时,才使用上述更强的亮度滤波器。条件1是“大块条件”。该条件检测P侧和Q侧的样点是否属于大块。条件2和条件3由以下确定:
Condition2=(d<β)?TRUE:FALSE
Condition3=StrongFilterCondition=(dpq小于(β>>2),sp3+sq3
小于(3*β>>5),并且Abs(p0-q0)小于(5*tC+1)>>1)?
TRUE:FALSE
2.1.4色度的强去方块滤波器
定义了以下色度的强去方块滤波器:
p2′=(3*p3+2*p2+p1+p0+q0+4)>>3
p1′=(2*p3+p2+2*p1+p0+q0+q1+4)>>3
p0′=(p3+p2+p1+2*p0+q0+q1+q2+4)>>3
上述色度滤波器在8x8色度样点网格上执行去方块。在块边界的两侧使用色度强滤波器。这里,当色度边缘的两侧都大于或等于8(以色度样点为单位)时选择色度滤波器,并且满足以下具有三个条件的决策。第一个是确定边界强度和大块。第二个和第三个与HEVC的亮度决策基本相同,分别是开/关决策和强滤波决策。在第一个决策中,修改了用于色度滤波的边界强度(bS),如表2所示。按顺序检查表3中的条件。如果满足条件,则跳过优先级较低的其余条件。
表3—修改后的边界强度(注意,P和Q是去方块边缘的左侧/右侧或上方/底部的两个相邻块)
当bS等于2时执行色度去方块,或者当检测到大块边界时bS等于1。第二和第三个条件与HEVC的亮度强滤波决策基本相同。
2.1.5 4x4样点网格上的亮度去方块和8x8样点网格上的色度去方块
VTM5.0在8x8样点网格上执行去方块。因此,仅对与8x8样点网格重叠的所有块边缘执行去方块。由于VTM5.0分割方案(二叉树(BT)、三叉树(TT)、帧内子分割、子块变换),一些长的CU边缘可能不会与8x8样点网格重叠,但仍然有足够的方块效应。图2中描绘了该场景。以灰色显示的边缘属于4x16块,并且VTM5.0去方块不会对该边缘执行去方块,因为它不与8x8样点网格重叠。
在VTM6.0中,采用了在4x4样点网格上应用亮度去方块,在8x8样点网格上应用色度去方块。当共享边缘的任何块的尺寸为4个样点时(即宽度=垂直边缘的4个样点,高度=水平边缘的4个样点),它通过一个样点修改或不修改样点来实施亮度弱滤波。
对垂直边缘执行的不同步骤如下所示:
检查各边缘的滤波器开/关条件(即d<Beta,其中d=dpq0+dpq3和dpq0=dp0+dq0和dpq3=dp3+dq3)是否为真。如果为真,则:
-检查其中一个块的块宽度是否为4个样点。如果为真,则
-使用最多的一个样点修改强制执行弱滤波器。因此,检查以下条件,|δ|<10(tC)其中δ=(9*(q0-p0)-(3*(q1-p1)+8)>>4,并且如果评估条件为真,则修改样点p0和q0,否则不应用滤波。
图3示出了对4xN、Nx4和8xN、Nx8块进行一个样点修改的弱滤波器的示例。
2.1.6边界决策(可被滤波的边缘)
对于亮度,将滤波应用于4x4网格,并且对于色度,将滤波应用于8x8网格。另外,它必须是变换块边界或编解码子块边界(例如,由于使用仿射运动预测,ATMVP)。对于那些不是这样的边界,滤波器被禁用。maxFilterLengthPs和maxFilterLengthQs分别表示P和Q侧要滤波的样点数。
2.1.6.1 TU边界
对于水平边缘的每4列(或水平边缘的4行),检查以下内容以分别确定P和Q块的滤波器长度。以水平边为例:
–如果行是变换块边缘(即位置(xCb+x,yCb+y)位于变换块边缘),则edgeFlags[x][y]设置为1。
–如果edgeFlags[x][y]设置为1,则以下适用:
–设置maxFilterLengthQs[x][y]:
-如果P或Q的变换块高度小于或等于4,
则将maxFilterLengthQs[x][y]设置为1;
-如果Q的变换块高度等于或大于32,
则将maxFilterLengthQs[x][y]设置为7;
-否则,将maxFilterLengthQs[x][y]设置为3。
–设置maxFilterLengthPs[x][y]:
-如果P或Q的变换块宽度小于或等于4,
则将maxFilterLengthPs[x][y]设置为1;
-如果P的变换块宽度等于或大于32,
则将maxFilterLengthPs[x][y]设置为7;
-否则,将maxFilterLengthPs[x][y]设置为3。
2.1.6.2子块边界
将用于子块边界检测的去方块滤波处理中使用的子块高度设置为Max(8,nCbH/numSbY)。
–阵列edgeTbFlags被设置为等于edgeFlags。
–对于yEdge=0..min((nCbH/8)-1,numSbY-1),x=0..nCbW-1:
–当前编解码块内的垂直位置y被设置为等于yEdge*sbH。
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果y等于0(第一个子块)并且edgeFlags[x][y]
等于1,则以下适用:
–当numSbY大于1(Q是编解码的子块)时,以下适用:maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1039)
–当inter_affine_flag[xCb][yCb-1]等于1或merge_subblock_flag[xCb][yCb-1]等于1(P是编解码的子块)时,以下适用:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1040)
–否则,如果edgeTbFlags[x][y]等于1(不是第一个子块和TB边界),则以下适用:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1041)
maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1042)
–否则,如果以下条件中的一个或多个为真:
–(y+4)大于或等于nCbH,(最后的子块)
–edgeTbFlags[x][y-4]等于1,(上方4样点阵列是TU边界)
–edgeTbFlags[x][y+4]等于1,(下方4样点阵列是TU边界)
则以下适用:
maxFilterLengthPs[x][y]=maxFilterLengthQs[x][y]=1
–否则,如果以下条件中的一个或多个为真:
–yEdge等于1,(第二子块)
–yEdge等于(nCbH/8)-1,(最后的子块)
–edgeTbFlags[x][y-sbH]等于1,(上方的sbH个样点阵列是TU边界)
–edgeTbFlags[x][y+sbH]
等于1时,则(上方的sbH个样点阵列是TU边界)
则以下适用:
maxFilterLengthPs[x][y]=maxFilterLengthQs[x][y]=2
–否则,以下适用:
maxFilterLengthPs[x][y]=maxFilterLengthQs[x][y]=3
可以看出,在变换边缘的4x4亮度网格上启用了去方块滤波器,但在子块边界处的8x8亮度网格上启用了去方块滤波器。子块边界包括STMVP和仿射模式引入的预测单元边界。对于8x8网格上的SbTMVP和仿射子块,HEVC去方块滤波器中PU中的逻辑相同。对于PU边界,考虑到临近子块的运动矢量和参考图片之间的差异,在8x8网格上应用去方块滤波器。
2.2 VVC规范WD6中的去方块滤波处理
以下去方块滤波处理的规范摘自最新的VVC工作草案JVET-O2001-vE。
2.2.1去方块滤波处理
2.2.1.1概述
该处理的输入是去方块之前的重构图片,即阵列recPictureL,以及当ChromaArrayType不等于0时的阵列recPictureCb和recPictureCr
该处理的输出是去方块后修改的重构图片,即阵列recPictureL,以及当ChromaArrayType不等于0时的阵列recPictureCb和recPictureCr
首先滤波图片中的垂直边缘。然后用垂直边缘滤波处理修改的样点作为输入,对图片中的水平边缘进行滤波。每个CTU的CTB中的垂直和水平边缘以编解码单元为基础分别处理。从编解码块左侧的边缘开始对编解码单元中的编解码块的垂直边缘进行滤波,按照其几何顺序穿过这些边缘,朝向编解码块的右侧。从编解码块上方的边缘开始对编解码单元中的编解码块的水平边缘进行滤波,按照其几何顺序穿过这些边缘,直至编解码块的底部。
注释-尽管在本规范中以图片为基础来指定滤波处理,但是只要解码器正确地解释处理依赖顺序以产生相同的输出值,则可以在编解码单元的基础上实现滤波处理,并获得等效的结果。
去方块滤波处理应用于图片的所有编解码子块边缘和变换块边缘,以下类型的边缘除外:
–图片边界处的边缘,
–与子图片边界重合的边,其中loop_filter_across_subpic_enabled_flag[SubPicIdx]等于0,
–当pps_loop_filter_across_virtual_boundaries_disabled_flag等于1时,与图片的虚拟边界重合的边,
–当loop_filter_across_bricks_enabled_flag等于0时,与砖块边界重合的边,
–当loop_filter_across_slices_enabled_flag等于0时,与条带边界重合的边,
–与条带的上边界或左侧界重合的边,其中slice_deblocking_filter_disabled_flag等于1,
–条带内的边,其中slice_deblocking_filter_disabled_flag等于1,
–与亮度分量的4x4样点网格边界不对应的边,
–与色度分量的8x8样点网格边界不对应的边,
–亮度分量内的边,其中边两侧的intra_bdpcm_flag都等于1,
–不是相关变换单元边缘的色度子块的边。
边缘类型(垂直或水平)由表8-17中指定的变量edgeType表示。
表8-17–与edgeType关联的名称
当当前条带的slice_deblocking_filter_disabled_flag等于0时,以下适用:
–变量treeType设置为DUAL_TREE_LUMA。
–以变量treeType、去方块之前的重构的图片(即阵列recPictureL)、以及设置为EDGE_VER的变量edgeType作为输入,通过调用第8.8.3.2条中规定的一个方向的去方块滤波处理来滤波垂直边缘,并且将去方块后的修改后的重构图片(即阵列recPictureL)作为输出。
–以变量treeType、去方块之前的重构的图片(即阵列recPictureL)、以及设置为EDGE_HOR的变量edgeType作为输入,通过调用第8.8.3.2条中规定的一个方向的去方块滤波处理来滤波水平边缘,并且将去方块后的修改后的重构图片(即阵列recPictureL)作为输出。
–当ChromaArrayType不等于0时,以下适用:
–变量treeType设置为DUAL_TREE_CHROMA
–以变量treeType、去方块之前的重构的图片(即阵列recPictureCb和recPictureCr)、以及设置为EDGE_VER的变量edgeType作为输入,通过调用第8.8.3.2条中规定的一个方向的去方块滤波处理来滤波垂直边缘,并且将去方块后的修改后的重构图片(即阵列recPictureCb和recPictureCr)作为输出。
–以变量treeType、去方块之前的重构的图片(即阵列recPictureCb和recPictureCr)、以及设置为EDGE_HOR的变量edgeType作为输入,通过调用第8.8.3.2条中规定的一个方向的去方块滤波处理来滤波水平边缘,并且将去方块后的修改后的重构图片(即阵列recPictureCb和recPictureCr)作为输出。
2.2.1.2一个方向的去方块滤波处理
该处理的输入是:
–变量treeType,指定当前处理的是亮度(DUAL_TREE_LUMA)还是色度分量(DUAL_TREE_CHROMA),
–当treeType等于DUAL_TREE_LUMA时的去方块之前的重构图片(即阵列recPictureL),
–当ChromaArrayType不等于0并且treeType等于DUAL_TREE_CHROMA时的阵列recPictureCb和recPictureCr
–变量edgeType,其指定滤波的是垂直(EDGE_VER)还是水平(EDGE_HOR)。
该处理的输出是去方块后的修改的重构图片,即:
–当treeType等于DUAL_TREE_LUMA时的阵列recPictureL
–当ChromaArrayType不等于0且treeType等于DUAL_TREE_CHROMA时的阵列recPictureCb和recPictureCr
变量firstCompIdx和lastCompIdx导出如下:
firstCompIdx=(treeType==DUAL_TREE_CHROMA)?1:0 (8-1022)
lastCompIdx=(treeType==DUAL_TREE_LUMA||ChromaArrayType==0)?0:2(8-1023)
对于每个编解码单元和每个编解码块,对于由颜色分量索引cIdx(从firstCompIdx到lastCompIdx,包括firstCompIdx和lastCompIdx)指示的编解码单元的每个颜色分量,编解码块宽度nCbW、编解码块高度nCbH和编解码块左上样点的位置(xCb、yCb),当cIdx等于0时,或者当cIdx不等于0且edgeType等于EDGE_VER且xCb%8等于0,或者当cIdx不等于0且edgeType等于EDGE_HOR且yCb%8等于0时,按以下顺序步骤滤波边缘:
1.变量filterEdgeFlag导出如下:
–如果edgeType等于EDGE_VER,并且满足以下一个或多个条件,则filterEdgeFlag设置为0:
–当前编解码块的左侧界是图片的左侧界。
–当前编解码块的左侧界是子图片的左侧界或右边界,并且loop_filter_across_subpic_enabled_flag[SubPicIdx]等于0。
–当前编解码块的左侧界是砖块的左侧界,并且loop_filter_across_bricks_enabled_flag等于0。
–当前编解码块的左侧界是条带的左侧界,并且loop_filter_across_slices_enabled_flag等于0。
–当前编解码块的左侧界是图片的垂直虚拟边界之一,并且pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。
–否则,如果edgeType等于EDGE_HOR并且满足以下一个或多个条件,则变量filterEdgeFlag设置为0:
–当前亮度编解码块的上方边界是图片的上方边界。
–当前编解码块的上边界是子图片的上边界或下边界,并且loop_filter_across_subpic_enabled_flag[SubPicIdx]等于0。
–当前编解码块的上边界是砖块的上边界,并且loop_filter_across_bricks_enabled_flag等于0。
–当前编解码块的上边界是条带的上边界,并且loop_filter_across_slices_enabled_flag等于0。
–当前编解码块的上边界是图片的水平虚拟边界之一,pps_loop_filter_across_virtual_boundaries_disabled_flag等于1。
–否则,filterEdgeFlag设置为1。
2.二维(nCbW)x(nCbH)阵列edgeFlags、maxFilterLengthQs和maxFilterlengthPs的所有元素都初始化为零。
3.以位置(xCb,yCb)、编解码块宽度nCbW、编解码块高度nCbH、变量cIdx、变量filterEdgeFlag、阵列edgeFlags、最大滤波器长度阵列maxFilterLengthPs和maxFilterLengthQs以及变量edgeType作为输入,调用第8.8.3.3条规定的变换块边界的推导处理,以修改后的阵列edgeFlags,修改后的最大滤波器长度阵列maxFilterLengthPs和maxFilterLengthQs作为输出。
4.当cIdx等于0时,以位置(xCb,yCb)、编解码块宽度nCbW、编解码块高度nCbH、阵列edgeFlags、最大滤波器长度阵列maxFilterLengthPs和maxFilterLengthQs、变量edgeType作为输入,调用第8.8.3.4条规定的编解码子块边界的推导处理,以修改后的阵列edgeFlags、修改后的最大滤波器长度阵列maxFilterLengthPs和maxFilterLengthQs作为输出。
5.图片样点阵列recPicture导出如下:
–如果cIdx等于0,则将recPicture设置为去方块之前的重构的亮度样点阵列recPictureL
–否则,如果cIdx等于1,则将recPicture设置为去方块之前的重构的色度图片样点阵列recPictureCb
–否则(cIdx等于2),则将recPicture设置为去方块之前的重构的色度图片样点阵列recPictureCr
6.以图片样点阵列recPicture、亮度位置(xCb,yCb)、编解码块宽度nCbW、编解码块高度nCbH、变量edgeType、变量cIdx和阵列edgeFlags作为输入,调用第8.8.3.5条规定的边界滤波强度的推导处理,以(nCbW)x(nCbH)阵列bS作为输出。
7.以变量edgeType、变量cIdx、去方块之前的重构图片recPicture、位置(xCb,yCb)、编解码块宽度nCbW、编解码块高度nCbH以及阵列bS、maxFilterLengthPs和maxFilterLengthQs作为输入,调用第8.8.3.6条中规定的编解码块的一个方向的边缘滤波处理,并且将修改后的重构图片recPicture作为输出。
2.2.1.3变换块边界的推导处理
该处理的输入是:
–位置(xCb,yCb),指定当前编解码块的左上样点相对于当前图片的左上样点,
–变量nCbW,指定当前编解码块宽度,
–变量nCbH,指定当前编解码块高度,
–变量cIdx,指定当前编解码块的颜色分量,
–变量filterEdgeFlag,
–二维(nCbW)x(nCbH)阵列edgeFlags,
–二维(nCbW)x(nCbH)阵列maxFilterLengthQs和maxFilterLengthPs,
–变量edgeType,指定滤波的是垂直(EDGE_VER)还是水平(EDGE_HOR)。
该处理的输出是:
–修改的二维(nCbW)x(nCbH)阵列edgeFlags,
–修改的二维(nCbW)x(nCbH)阵列maxFilterLengthQs、maxFilterLengthPs。
取决于edgeType,阵列edgeFlags、maxFilterLengthPs和maxFilterLengthQs导出如下:
–变量gridSize设置如下:
gridSize=cIdx==0?4:8 (8-1024)
–如果edgeType等于EDGE_VER,则以下适用
–变量numEdges设置为等于Max(1,nCbW/gridSize)。
–对于xEdge=0..numEdges-1和y=0..nCbH-1,以下适用:
–当前编解码块内的水平位置x设置为等于xEdge*gridSize。
–edgeFlags[x][y]的值推导如下:
-如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且(xCb+x)等于PpsVirtualBoundariesPosX[n](对于n=0..pps_num_ver_virtual_boundaries–1中任一个),则edgeFlags[x][y]设置为等于0。
-否则,如果x等于0,则edgeFlags[x][y]设置为等于filterEdgeFlag。
-否则,如果位置(xCb+x,yCb+y)位于变换块边缘,则edgeFlags[x][y]
设置为等于1。
–当edgeFlags[x][y]等于1时,以下适用:
-如果cIdx等于0,则以下适用:
-maxFilterLengthQs[x][y]的值推导如下:
-如果亮度位置(xCb+x,yCb+y)处的变换块的以亮度样点为单位的宽度等于或小于4,或者亮度位置(xCb+x-1,yCb+y)处的变换块的以亮度样点为单位的宽度等于或小于4,则maxFilterLengthQs[x][y]设置为等于1。
-否则,如果亮度位置(xCb+x,yCb+y)处的变换块的以亮度样点为单位的宽度等于或大于32,则maxFilterLengthQs[x][y]设置为等于7。
-否则,maxFilterLengthQs[x][y]设置为等于3。
-maxFilterLengthPs[x][y]的值导出如下:
-如果亮度位置(xCb+x,yCb+y)处的变换块的以亮度样点为单位的宽度等于或小于4,或者亮度位置(xCb+x-1,yCb+y)处的变换块的以亮度样点为单位的宽度等于或小于4,则maxFilterLengthPs[x][y]设置为等于1。
-否则,如果亮度位置(xCb+x-1,yCb+y)处的变换块的以亮度样点为单位的宽度等于或大于32,maxFilterLengthPs[x][y]设置为等于7。
-否则,maxFilterLengthPs[x][y]设置为等于3。
-否则(cIdx不等于0),maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值导出如下:
-如果色度位置(xCb+x,yCb+y)处的变换块的以色度样点为单位的宽度和色度位置(xCb+x-1,yCb+y)处的变换块的以色度样点为单位的宽度都等于或大于8,则maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]设置为等于3。
-否则,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]设置为等于1。
–否则(edgeType等于EDGE_HOR),则以下适用:
–变量numEdges设置为等于Max(1,nCbH/gridSize)。
–对于yEdge=0..numEdges-1和x=0..nCbW-1,以下适用:
–当前编解码块内的垂直位置y设置为等于yEdge*gridSize。
–edgeFlags[x][y]的值推导如下:
-如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且(yCb+y)等于PpsVirtualBoundariesPosY[n](对于n=0..pps_num_ver_virtual_boundaries–1中任一个),则edgeFlags[x][y]设置为等于0。
-否则,如果y等于0,则edgeFlags[x][y]设置为等于filterEdgeFlag。
-否则,如果位置(xCb+x,yCb+y)位于变换块边缘,则edgeFlags[x][y]设置为等于1。
–当edgeFlags[x][y]等于1时,以下适用:
-如果cIdx等于0,则以下适用:
-maxFilterLengthQs[x][y]的值推导如下:
-如果亮度位置(xCb+x,yCb+y)处的变换块的以亮度样点为单位的高度等于或小于4,或者亮度位置(xCb+x,yCb+y-1)处的变换块的以亮度样点为单位高度等于或小于4,则maxFilterLengthQs[x][y]设置为等于1。
-否则,如果亮度位置(xCb+x,yCb+y)处的变换块的以亮度样点为单位高度等于或大于32,则maxFilterLengthQs[x][y]设置为等于7。
-否则,maxFilterLengthQs[x][y]设置为等于3。
-maxFilterLengthPs[x][y]的值导出如下:
-如果亮度位置(xCb+x,yCb+y)处的变换块的以亮度样点为单位高度等于或小于4,或者亮度位置(xCb+x,yCb+y-1)处的变换块的以亮度样点为单位高度等于或小于4,则maxFilterLengthPs[x][y]设置为等于1。
-否则,如果亮度位置(xCb+x,yCb+y-1)处的变换块的以亮度样点为单位高度等于或大于32,maxFilterLengthPs[x][y]设置为等于7。
-否则,maxFilterLengthPs[x][y]设置为等于3。
-否则(cIdx不等于0),maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值导出如下:
-如果以下条件全部为真,则maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]设置为等于3:
-色度位置(xCb+x,yCb+y)处的变换块的以色度样点为单位的宽度和色度位置(xCb+x,yCb+y-1)处的变换块的以色度样点为单位的宽度都等于或大于8。
-(yCb+y)%CtbHeightC大于0,即水平边缘不与上色度CTB边界重合。
-否则,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]设置为等于1。
2.2.1.4编解码子块边界的推导处理
该处理的输入是:
–位置(xCb,yCb),其指定当前编解码块的左上样点相对于当前图片的左上样点,
–变量nCbW,其指定当前编解码块的宽度,
–变量nCbH,其指定当前编解码块的高度,
–二维(nCbW)x(nCbH)阵列edgeFlags,
–二维(nCbW)x(nCbH)阵列maxFilterLengthQs和maxFilterLengthPs,
–变量edgeType,其指定是滤波垂直(EDGE_VER)还是水平(EDGE_HOR)边缘。
该处理的输出是:
–修改后的二维(nCbW)x(nCbH)阵列edgeFlags,
–修改后的二维(nCbW)x(nCbH)阵列maxFilterLengthQs和maxFilterLengthPs。
水平方向上的编解码子块的数量numSbX和垂直方向上的编解码子块的数量numSbY导出如下:
–如果inter_affine_flag[xCb][yCb]等于1或merge_subblock_flag[xCb][yCb]等于1,则numSbX和numSbY分别被设置为等于NumSbX[xCb][yCb]和NumSbY[xCb][yCb]。
–否则,numSbX和numSbY都被设置为等于1。
取决于edgeType的值,以下适用:
–如果edgeType等于EDGE_VER,则以下适用:
–变量sbW设置为等于Max(8,nCbW/numSbX)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于xEdge=0..min((nCbW/8)-1,numSbX-1),y=0..nCbH-1:
–当前编解码块内的水平位置x设置为等于xEdge*sbW。
–edgeFlags[x][y]的值导出如下:
–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且x等于PpsVirtualBoundariesPosX[n](对于任一n=0..pps_num_ver_virtual_boundaries–1),则以下适用:
edgeFlags[x][y]=0 (8-1025)
–否则,以下适用:
edgeFlags[x][y]=1 (8-1026)
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果x等于0,则以下适用:
–当numSbX大于1时,以下适用:
maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1027)
–当inter_affine_flag[xCb-1][yCb]等于1或merge_subblock_flag[xCb-1][yCb]等于1时,以下适用:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1028)
–否则,如果edgeTbFlags[x][y]等于1,则以下适用:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1029)
maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1030)
–否则,如果以下条件中的一个或多个为真:
–(x+4)大于或等于nCbW,
–edgeTbFlags[x-4][y]等于1,
–edgeTbFlags[x+4][y]等于1,
则以下适用:
maxFilterLengthPs[x][y]=1 (8-1031)
maxFilterLengthQs[x][y]=1 (8-1032)
–否则,如果以下条件中的一个或多个为真:
–xEdge等于1,
–xEdge等于(nCbW/8)-1,
–edgeTbFlags[x-sbW][y]等于1,
–edgeTbFlags[x+sbW][y]等于1,
则以下适用:
maxFilterLengthPs[x][y]=2 (8-1033)
maxFilterLengthQs[x][y]=2 (8-1034)
–否则,以下适用:
maxFilterLengthPs[x][y]=3 (8-1035)
maxFilterLengthQs[x][y]=3 (8-1036)
–否则,如果edgeType等于EDGE_HOR,则以下适用:
–变量sbH设置为等于Max(8,nCbH/numSbY)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于yEdge=0..min((nCbH/8)-1,numSbY-1),x=0..nCbW-1:
–当前编解码块内的垂直位置y设置为等于yEdge*sbH。
–edgeFlags[x][y]的值导出如下:
–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且y等于PpsVirtualBoundariesPosY[n](对于任何n=0..pps_num_hor_virtual_boundaries-1),则以下适用:
edgeFlags[x][y]=0 (8-1037)
–否则,以下适用:
edgeFlags[x][y]=1 (8-1038)
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果y等于0和edgeFlags[x][y]等于1时,则以下适用:
–当numSbY大于1,以下适用:
maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1039)
–当inter_affine_flag[xCb][yCb-1]等于1或merge_subblock_flag[xCb][yCb-1]等于1时,以下适用:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1040)
–否则,如果edgeTbFlags[x][y]等于1,则以下适用:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1041)
maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1042)
–否则,如果以下条件中的一个或多个为真:
–(y+4)大于或等于nCbH,
–edgeTbFlags[x][y-4]等于1,
–edgeTbFlags[x][y+4]等于1,
则以下适用:
maxFilterLengthPs[x][y]=1 (8-1045)
maxFilterLengthQs[x][y]=1 (8-1046)
–否则,如果以下条件中的一个或多个为真:
–yEdge等于1,
–yEdge等于(nCbH/8)-1,
–edgeTbFlags[x][y-sbH]等于1,
–edgeTbFlags[x][y+sbH]等于1,
则以下适用:
maxFilterLengthPs[x][y]=2 (8-1043)
maxFilterLengthQs[x][y]=2 (8-1044)
–否则,以下适用:
maxFilterLengthPs[x][y]=3 (8-1047)
maxFilterLengthQs[x][y]=3 (8-1048)
2.2.1.5边界滤波强度的推导处理
该处理的输入是:
–图片样点阵列recPicture,
–位置(xCb,yCb),其指定当前编解码块的左上样点相对于当前图片的左上样点,
–变量nCbW,其指定当前编解码块的宽度,
–变量nCbH,其指定当前编解码块的高度,
–变量edgeType,其指定是滤波垂直(EDGE_VER)还是水平(EDGE_HOR)边缘。
–变量cIdx,其指定当前编解码块的颜色分量,
–二维(nCbW)x(nCbH)阵列edgeFlags。
该处理的输出是二维(nCbW)x(nCbH)阵列BS,其指定边界滤波强度。变量xDi、yDj、xN和yN导出如下:
–变量gridSize设置如下:
gridSize=cIdx==0?4:8 (8-1049)
–如果edgeType等于EDGE_VER,则
xDi=(i*gridSize) (8-1050)
yDj=cIdx==0?(j<<2):(j<<1) (8-1051)
xN设置为等于Max(0,(nCbW/gridSize)-1) (8-1052)
yN=cIdx==0?(nCbH/4)-1:(nCbH/2)-1 (8-1053)
–否则(edgeType等于EDGE_HOR),
xDi=cIdx==0?(i<<2):(i<<1) (8-1054)
yDj=(j*gridSize) (8-1055)
xN=cIdx==0?(nCbW/4)-1:(nCbW/2)-1 (8-1056)
yN=Max(0,(nCbH/gridSize)-1) (8-1057)
对于xDi和yDj,其中i=0..xN,其中j=0..yN,以下适用:
–如果edgeFlags[xDi][yDj]等于0,则变量bS[xDi][yDj]设置为等于0。
–否则,以下适用:
–样点值p0和q0导出如下:
–如果edgeType等于EDGE_VER,则p0设置为等于recPicture[xCb+xDi-1][yCb+yDj]并且q0设置为等于recPicture[xCb+xDi][yCb+yDj]。
–否则(edgeType等于EDGE_HOR),p0设置为等于recPicture[xCb+xDi][yCb+yDj-1]并且q0设置为等于recPicture[xCb+xDi][yCb+yDj]。
–变量bS[xDi][yDj]导出如下:
–如果cIdx等于0并且两个样点p0和q0都在intra_bdpcm_flag等于1的编解码块中,则bS[xDi][yDj]设置为等于0。
–否则,如果样点p0或q0在以帧内预测模式编解码的编解码单元的编解码块中,则bS[xDi][yDj]设置为等于2。
–否则,如果块边缘也是变换块边缘并且样点p0或q0在ciip_flag等于1的编解码块中,则bS[xDi][yDj]设置为等于2。
–否则,如果块边缘也是变换块边缘并且样点p0或q0在包含一个或多个非零变换系数水平的变换块中,则bS[xDi][yDj]设置为等于1。
–否则,如果块边缘也是变换块边缘,cIdx大于0,并且样点p0或q0在tu_joint_cbcr_residual_flag等于1的变换单元中,则bS[xDi][yDj]设置为等于1。
–否则,如果包含样点p0的编解码子块的预测模式不同于包含样点q0的编解码子块的预测模式(即其中一个编解码子块用IBC预测模式编解码,并且另一个用帧间预测模式编解码),则bS[xDi][yDj]设置为等于1。
–否则,如果cIdx等于0并且以下条件中的一个或多个为真,则bS[xDi][yDj]设置为等于1:
–包含样点p0的编解码子块和包含样点q0的编解码子块都以IBC预测模式编解码
并且两个编解码子块的预测中使用的块矢量的水平和垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–对于包含样点p0的编解码子块的预测,使用与包含样点q0的编解码子块预测不同的参考图片或不用数量的运动矢量。
注释1–用于两个编解码子块的参考图片是相同还是不同的确定仅基于其参考的图片,而与使用指向参考图片列表0的索引还是指向参考图片列表1的索引无关,也与参考图片列表中的索引位置是否不同无关。
注释2–用于左上样点覆盖(xSb,ySb)的编解码子块的预测的运动矢量的数量等于PredFlagL0[xSb][ySb]+
PredFlagL1[xSb][ySb]。
–一个矢量用于预测包含样点p0的编解码子块,并且一个矢量用于预测包含样点q0的编解码子块,
并且使用的矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–两个运动矢量和两个不同的参考图片被用于预测包含样点p0的编解码子块,相同的两个参考图片的两个运动矢量被用于预测包含样点q0的编解码子块,并且相同参考图片的两个编解码子块的预测所使用的两个运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–相同参考图片的两个运动矢量被用于预测包含样点p0的编解码子块,相同参考图片的两个运动矢量被用于预测包含样点q0的编解码子块并且以下两个条件都为真:
–用于两个编解码子块的预测的列表0运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位),或用于两个编解码子块的预测的列表1运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–用于包含样点p0的编解码子块的预测的列表0运动矢量和用于包含样点q0的编解码子块的预测的列表1运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位),或用于包含样点p0的编解码子块的预测的列表1运动矢量和用于包含样点q0的编解码子块的预测的列表0运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–否则,变量bS[xDi][yDj]设置为等于0。
2.2.1.6一个方向的边缘滤波处理
该处理的输入是:
–变量edgeType,其指定当前处理的是垂直边缘(EDGE_VER)还是水平边缘(EDGE_HOR),
–变量cIdx,其指定当前的颜色分量,
–去方块之前的重构图片recPicture,
–位置(xCb,yCb),其指定当前编解码块的左上样点相对于当前图片的左上样点,
–变量nCbW,其指定当前编解码块的宽度,
–变量nCbH,其指定当前编解码块的高度,
–阵列bS,其指定边界强度,
–阵列maxFilterLengthPs和maxFilterLengthQs。
该处理的输出是去方块之后的修改后的重构图片recPicture。
对于边缘滤波处理,以下适用:
–变量gridSize设置如下:
gridSize=cIdx==0?4:8 (8-1058)
–变量subW,subH,xN,yN导出如下:
subW=cIdx==0?1:SubWidthC (8-1059)
subH=cIdx==0?1:SubHeightC (8-1060)
xN=edgeType==EDGE_VER?Max(0,(nCbW/gridSize)-1):(nCbW/4/subW)-1(8-1061)
yN=edgeType==EDGE_VER?(nCbH/4/subH)-1:Max(0,(nCbH/gridSize)-1)(8-1062)
–变量xDk和yDm(其中k=0..xN并且m=0..yN)导出如下:
xDk=edgeType==EDGE_VER?(k*gridSize):(k<<(2/subW)) (8-1063)
yDm=edgeType==EDGE_VER?(m<<(2/subH)):(m*gridSize) (8-1064)
–对于xDk和yDm(其中k=0..xN,其中m=0..yN),以下适用:
–当bS[xDk][yDm]大于0时,以下顺序步骤适用:
–如果cIdx等于0,则当前编解码单元的亮度编解码块中的边缘的滤波处理包含以下顺序步骤:
1.以亮度图片样点阵列recPicture、亮度编解码块的位置(xCb,yCb),块的亮度位置(xBl,yBl)设置为等于(xDk,yDm)、边缘方向edgeType、边界滤波强度bS[xDk][yDm]、最大滤波器长度maxFilterLengthP设置为等于maxFilterLengthPs[xDk][yDm]和maxFilterLengthQ设置为等于maxFilterLengthQs[xDk][yDm]作为输入,调用第8.8.3.6.1条中规定的亮度块边缘的决策处理,并且将决策dE、dEp和dEq、修改后的最大滤波器长度maxFilterLengthP和maxFilterLengthQ、以及变量tC作为输出。
2.以亮度图片样点阵列recPicture、亮度编解码块的位置(xCb,yCb)、块的亮度位置(xBl,yBl)设置为等于(xDk,yDm)、边缘方向edgeType、决策dE、dEp和dEq、最大滤波器长度maxFilterLengthP和maxFilterLengthQ、以及变量tC作为输入,调用第8.8.3.6.2条中规定的块边缘的滤波处理,并且将修改后的亮度图片样点阵列recPicture作为输出。
–否则(cIdx不等于0),由cIdx指定的当前编解码单元的色度编解码块中的边缘的滤波处理包括以下顺序步骤:
1.变量cQpPicOffset导出如下:
cQpPicOffset=cIdx==1?pps_cb_qp_offset:pps_cr_qp_offset (8-1065)
2.以色度图片样点阵列recPicture、色度编解码块的位置(xCb,yCb)、色度块的位置(xBl,yBl)设置为等于(xDk,yDm)、边缘方向edgeType、变量cIdx、变量cQpPicOffset、边界滤波强度bS[xDk][yDm]、和变量maxFilterLengthCbCr设置为等于maxFilterLengthPs[xDk][yDm]作为输入,调用第8.8.3.6.3中规定的色度块边缘的决策处理,并将修改后的变量maxFilterLengthCbCr、和变量tC作为输出。
3.当maxFilterLengthCbCr大于0时,以色度图片样点阵列recPicture、色度编解码块的位置(xCb,yCb)、块的色度位置(xBl,yBl)设置为等于(xDk,yDm)、边缘方向edgeType、变量maxFilterLengthCbCr、和变量tC作为输入,调用第8.8.3.6.4中规定的色度块边缘的滤波处理,并将修改后的色度图片样点阵列recPicture作为输出。
2.2.1.6.1亮度块边缘的决策处理
该处理的输入是:
–图片样点阵列recPicture,
–位置(xCb,yCb),其指定当前编解码块的左上样点相对于当前图片的左上样点,
–位置
(xBl,yBl),其指定当前块相对于当前编解码块的左上样点的左上样点,
–变量edgeType,其指定是滤波垂直(EDGE_VER)还是水平(EDGE_HOR)边缘。
–变量bS,其指定边界滤波强度,
–变量maxFilterLengthP,其指定最大滤波器长度,
–变量maxFilterLengthQ,其指定最大滤波器长度。
该处理的输出是:
–变量dE,dEp和dEq,其包含决策,
–修改后的滤波器长度变量maxFilterLengthP和maxFilterLengthQ,
–变量tC
样点值pi,k和qj,k(其中i=0..maxFilterLengthP,j=0..maxFilterLengthQ并且k=0和3)导出如下:
–如果edgeType等于EDGE_VER,则以下适用:
qj,k=recPictureL[xCb+xBl+j][yCb+yBl+k] (8-1066)
pi,k=recPictureL[xCb+xBl-i-1][yCb+yBl+k] (8-1067)
–否则(edgeType等于EDGE_HOR),以下适用:
qj,k=recPicture[xCb+xBl+k][yCb+yBl+j] (8-1068)
pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1] (8-1069)
变量qpOffset导出如下:
–如果sps_ladf_enabled_flag等于1,则以下适用:
–重构亮度样点的变量lumaLevel导出如下:
lumaLevel=((p0,0+p0,3+q0,0+q0,3)>>2), (8-1070)
–变量qpOffset设置为等于sps_ladf_lowest_interval_qp_offset且修改如下:
for(i=0;i<sps_num_ladf_intervals_minus2+1;i++){if(lumaLevel>SpsLadfIntervalLowerBound[i+1])
qpOffset=sps_ladf_qp_offset[i] (8-1071)
else
break
}
–否则,qpOffset设置为等于0。
变量QpQ和QpP分别被设置为等于包括包含样点q0,0和p0,0的编解码块的编解码单元的QpY值。
变量qP导出如下:
qP=((QpQ+QpP+1)>>1)+qpOffset (8-1072)
基于如下导出的量化参数Q,按照表8-18中规定的来确定变量β′的值:
Q=Clip3(0,63,qP+(slice_beta_offset_div2<<1)) (8-1073)
其中slice_beta_offset_div2是包含样点q0,0的条带的语法元素slice_beta_offset_div2的值。
变量β导出如下:
β=β′*(1<<(BitDepthY-8)) (8-1074)
基于如下导出的量化参数Q,按照表8-18所规定的来确定变量tC′的值:
Q=Clip3(0,65,qP+2*(bS-1)+(slice_tc_offset_div2<<1)) (8-1075)
其中slice_tc_offset_div2是包含样点q0,0的条带的语法元素slice_tc_offset_div2的值。
变量tC导出如下:
tC=BitDepthY<10?(tC′+2)>>(10-BitDepthY):tC′*(1<<(BitDepthY-10)) (8-1076)
以下顺序步骤适用:
1.变量dp0,dp3,dq0和dq3导出如下:
dp0=Abs(p2,0-2*p1,0+p0,0) (8-1077)
dp3=Abs(p2,3-2*p1,3+p0,3) (8-1078)
dq0=Abs(q2,0-2*q1,0+q0,0) (8-1079)
dq3=Abs(q2,3-2*q1,3+q0,3) (8-1080)
2.当maxFilterLengthP和maxFilterLengthQ都等于或或大于3时,变量sp0,sq0,spq0,sp3,sq3和spq3导出如下:
sp0=Abs(p3,0-p0,0) (8-1081)
sq0=Abs(q0,0-q3,0) (8-1082)
spq0=Abs(p0,0-q0,0) (8-1083)
sp3=Abs(p3,3-p0,3) (8-1084)
sq3=Abs(q0,3-q3,3) (8-1085)
spq3=Abs(p0,3-q0,3) (8-1086)
3.变量sidePisLargeBlk和sideQisLargeBlk被设置为等于0。
4.当maxFilterLengthP大于3时,sidePisLargeBlk设置为等于1。
5.当maxFilterLengthQ大于3时,sideQisLargeBlk设置为等于1。
6.当edgeType等于EDGE_HOR并且(yCb+yBl)%CtbSizeY等于0时,sidePisLargeBlk设置为等于0。
7.变量dSam0和dSam3被初始化为0。
8.当sidePisLargeBlk或sideQisLargeBlk大于0,以下适用:
a.导出变量dp0L,dp3L并且maxFilterLengthP修改如下:
–如果sidePisLargeBlk等于1,则以下适用:
dp0L=(dp0+Abs(p5,0-2*p4,0+p3,0)+1)>>1 (8-1087)
dp3L=dp3+Abs(p5,3-2*p4,3+p3,3)+1)>>1 (8-1088)
–否则,以下适用:
dp0L=dp0 (8-1089)
dp3L=dp3 (8-1090)
maxFilterLengthP=3 (8-1091)
b.变量dq0L和dq3L导出如下:
–如果sideQisLargeBlk等于1,则以下适用:
dq0L=(dq0+Abs(q5,0-2*q4,0+q3,0)+1)>>1 (8-1092)
dq3L=(dq3+Abs(q5,3-2*q4,3+q3,3)+1)>>1 (8-1093)
–否则,以下适用:
dq0L=dq0 (8-1094)
dq3L=dq3 (8-1095)
c.变量dpq0L,dpq3L,和dL导出如下:
dpq0L=dp0L+dq0L (8-1096)
dpq3L=dp3L+dq3L (8-1097)
dL=dpq0L+dpq3L (8-1098)
d.当dL小于β时,以下顺序步骤适用:
i.变量dpq设置为等于2*dpq0L。
ii.变量sp设置为等于sp0,变量sq设置为等于sq0并且变量spq设置为等于spq0。
iii.变量p0,p3,qo和q3首先被初始化到0然后根据sidePisLargeBlk和sideQisLargeBlk修改如下:
–当sidePisLargeBlk等于1时,以下适用:
p3=p3,0 (8-1099)
p0=pmaxFilterLengthP,0 (8-1100)
–当sideQisLargeBlk等于1时,以下适用:
q3=q3,0 (8-1101)
q0=qmaxFilterLengthQ,0 (8-1102)
iv.对于样点位置(xCb+xBl,yCb+yBl),以样点值p0、p3、q0、q3、变量dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β和tC作为输入,调用8.8.3.6.5条中规定的亮度样点的决策处理,并将输出分配给决策dSam0。
v.变量dpq设置为等于2*dpq3L。
vi.变量sp设置为等于sp3,变量sq设置为等于sq3并且变量spq设置为等于spq3。
vii.变量p0、p3、q0和q3首先被初始化到0和然后根据sidePisLargeBlk和sideQisLargeBlk修改如下:
–当sidePisLargeBlk等于1时,以下适用:
p3=p3,3 (8-1103)
p0=pmaxFilterLengthP,3 (8-1104)
–当sideQisLargeBlk等于1时,以下适用:
q3=q3,3 (8-1105)
q0=qmaxFilterLengthQ,3 (8-1106)
viii.当edgeType等于EDGE_VER时
对于样点位置(xCb+xBl,yCb+yBl+3),
或当edgeType等于EDGE_HOR时
对于样点位置(xCb+xBl+3,yCb+yBl),以样点值p0、p3、q0、q3、变量dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β和tC作为输入,调用8.8.3.6.5条中规定的亮度样点的决策处理,并将输出分配给决策dSam3。
9.变量dE,dEp和dEq导出如下:
–如果dSam0和dSam3都等于1,则变量dE设置为等于3,dEp设置为等于1,并且dEq设置为等于1。
–否则,以下顺序步骤适用:
a.变量dpq0,dpq3,dp,dq和d导出如下:
dpq0=dp0+dq0 (8-1107)
dpq3=dp3+dq3 (8-1108)
dp=dp0+dp3 (8-1109)
dq=dq0+dq3 (8-1110)
d=dpq0+dpq3 (8-1111)
b.变量dE,dEp,dEq,sidePisLargeBlk和sideQisLargeBlk被设置为等于0。
c.当d小于β并且maxFilterLengthP和maxFilterLengthQ都大于2时,以下顺序步骤适用:
i.变量dpq设置为等于2*dpq0。
ii.变量sp设置为等于sp0,变量sq设置为等于sq0并且变量spq设置为等于spq0。
iii.对于样点位置(xCb+xBl,yCb+yBl),以变量p0、p3、q0、q3都设置为等于0,变量dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β和tC作为输入,调用8.8.3.6.5条中规定的亮度样点的决策处理,并将输出分配给决策dSam0。
iv.变量dpq设置为等于2*dpq3。
v.变量sp设置为等于sp3,变量sq设置为等于sq3并且变量spq设置为等于spq3。
vi.当edgeType等于EDGE_VER时对于样点位置(xCb+xBl,yCb+yBl+3),或者当edgeType等于EDGE_HOR时对于样点位置(xCb+xBl+3,yCb+yBl),以变量p0、p3、q0、q3都设置为等于0,变量dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β和tC作为输入,调用8.8.3.6.5条中规定的样点的决策处理,并将输出分配给决策dSam3。
d.当d小于β时,以下顺序步骤适用:
i.变量dE设置为等于1。
ii.当dSam0等于1并且dSam3等于1时,变量dE设置为等于2。
iii.当maxFilterLengthP大于1并且maxFilterLengthQ大于1,并且dp小于(β+(β>>1))>>3时,变量dEp设置为等于1。
iv.当maxFilterLengthP大于1并且maxFilterLengthQ大于1,并且dq小于(β+(β>>1))>>3时,变量dEq设置为等于1。
表8-18–从输入Q到阈值变量β′和tC′的推导
Q 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
β′ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
tC 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Q 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
β′ 7 8 9 10 11 12 13 14 15 16 17 18 20 22 24 26 28
tC 0 3 4 4 4 4 5 5 5 5 7 7 8 9 10 10 11
Q 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
β′ 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62
tC 13 14 15 17 19 21 24 25 29 33 36 41 45 51 57 64 71
Q 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
β′ 64 66 68 70 72 74 76 78 80 82 84 86 88 - -
tC 80 89 100 112 125 141 157 177 198 222 250 280 314 352 395
2.2.1.6.2亮度块边缘的滤波处理
该处理的输入是:
–图片样点阵列recPicture,
–位置(xCb,yCb),其指定当前编解码块的左上样点相对于当前图片的左上样点,
–位置
(xBl,yBl),其指定当前块相对于当前编解码块的左上样点的左上样点,
–变量edgeType,其指定是滤波垂直(EDGE_VER)还是水平(EDGE_HOR)边缘。
–变量dE,dEp和dEq,其包含决策,
–变量maxFilterLengthP和maxFilterLengthQ,其包含最大滤波器长度,
–变量tC
该处理的输出是修改后的图片样点阵列recPicture。
取决于edgeType的值,以下适用:
–如果edgeType等于EDGE_VER,则以下顺序步骤适用:
1.样点值pi,k和qi,k(其中i=0..maxFilterLengthP,j=0..maxFilterLengthQ和k=0..3)导出如下:
qj,k=recPictureL[xCb+xBl+j][yCb+yBl+k] (8-1112)
pi,k=recPictureL[xCb+xBl-i-1][yCb+yBl+k] (8-1113)
2.当dE不等于0并且dE不等于3时,对于每个样点位置(xCb+xBl,yCb+yBl+k),k=0..3,以下顺序步骤适用:
a.以样点值pi,k,qi,k(其中i=0..3)、位置(xPi,yPi)设置为等于(xCb+xBl-i-1,yCb+yBl+k)和(xQi,yQi)设置为等于(xCb+xBl+i,yCb+yBl+k)(其中i=0..2)、决策dE、变量dEp和dEq、以及变量tC作为输入,调用8.8.3.6.6条中规定的使用短滤波器的亮度样点的滤波处理,并将块的每侧的滤波后的样点的数目nDp和nDq、以及滤波后的样点值pi′和qj′作为输出。
b.当nDp大于0时,滤波后的样点值pi′(其中i=0..nDp-1)
如下替换样点阵列recPicture内的对应样点:
recPicture[xCb+xBl-i-1][yCb+yBl+k]=pi′ (8-1114)
c.当nDq大于0时,滤波后的样点值qj′(其中j=0..nDq-1)
如下替换样点阵列recPicture内的对应样点:
recPicture[xCb+xBl+j][yCb+yBl+k]=qj′ (8-1115)
3.当dE等于3时,对于每个样点位置(xCb+xBl,yCb+yBl+k),k=0..3,以下顺序步骤适用:
a.以样点值pi,k,qj,k(其中i=0..maxFilterLengthP并且j=0..maxFilterLengthQ)、位置(xPi,yPi)设置为等于(xCb+xBl-i-1,yCb+yBl+k)
(其中i=0..maxFilterLengthP–1)和(xQj,yQj)设置为等于(xCb+xBl+j,yCb+yBl+k)
(其中j=0..maxFilterLengthQ–1)、变量maxFilterLengthP、maxFilterLengthQ和tC作为输入,调用8.8.3.6.7条中规定的使用长滤波器的亮度样点的滤波处理,并将滤波后的样点值pi′和qj′作为输出。
b.滤波后的样点值pi′(其中i=0..maxFilterLengthP-1)
如下替换样点阵列recPicture内的对应样点:
recPicture[xCb+xBl-i-1][yCb+yBl+k]=pi′ (8-1116)
c.滤波后的样点值qj′(其中j=0..maxFilterLengthQ–1)
如下替换样点阵列recPicture内的对应样点:
recPicture[xCb+xBl+j][yCb+yBl+k]=qj′ (8-1117)
–否则(edgeType等于EDGE_HOR),以下顺序步骤适用:
1.样点值pi,k和qi,k(其中i=0..maxFilterLengthP,j=0..maxFilterLengthQ和k=0..3)导出如下:
qj,k=recPictureL[xCb+xBl+k][yCb+yBl+j] (8-1118)
pi,k=recPictureL[xCb+xBl+k][yCb+yBl-i-1] (8-1119)
2.当dE不等于0并且dE不等于3时,对于每个样点位置(xCb+xBl+k,yCb+yBl),k=0..3,以下顺序步骤适用:
a.以样点值pi,k,qi,k(其中i=0..3)、位置(xPi,yPi)设置为等于(xCb+xBl+k,yCb+yBl-i-1)和(xQi,yQi)设置为等于(xCb+xBl+k,yCb+yBl+i)(其中i=0..2)、决策dE、变量dEp和dEq、和变量tC作为输入,调用8.8.3.6.6条中规定的使用短滤波器的亮度样点的滤波处理,并将块的每侧的滤波后的样点的数目nDp和nDq、以及滤波后的样点值pi′和qj′作为输出。
b.当nDp大于0时,滤波后的样点值pi′(其中i=0..nDp-1)
如下替换样点阵列recPicture内的对应样点:
recPicture[xCb+xBl+k][yCb+yBl-i-1]=pi′ (8-1120)
c.当nDq大于0时,滤波后的样点值qj′(其中j=0..nDq–1)
如下替换样点阵列recPicture内的对应样点:
recPicture[xCb+xBl+k][yCb+yBl+j]=qj′ (8-1121)
3.当dE等于3时,对于每个样点位置(xCb+xBl+k,yCb+yBl),k=0..3,以下顺序步骤适用:
a.以样点值pi,k,qj,k(其中i=0..maxFilterLengthP和j=0..maxFilterLengthQ)、位置(xPi,yPi)设置为等于(xCb+xBl+k,yCb+yBl-i-1)
(其中i=0..maxFilterLengthP–1)和(xQj,yQj)设置为等于(xCb+xBl+k,yCb+yBl+j)
(其中j=0..maxFilterLengthQ–1)、变量maxFilterLengthP、maxFilterLengthQ、和变量tC作为输入,调用8.8.3.6.7条中规定的使用长滤波器的亮度样点的滤波处理,并将滤波后的样点值pi′和qj′作为输出。
b.滤波后的样点值pi′(其中i=0..maxFilterLengthP-1)
如下替换样点阵列recPicture内的对应样点:
recPicture[xCb+xBl+k][yCb+yBl-i-1]=pi′ (8-1122)
c.滤波后的样点值qj′(其中j=0..maxFilterLengthQ-1)
如下替换样点阵列recPicture内的对应样点:
recPicture[xCb+xBl+k][yCb+yBl+j]=qj′ (8-1123)
2.2.1.6.3色度块边缘决策处理
仅当ChromaArrayType不等于0时调用该处理
该处理的输入是:
–色度图片样点阵列recPicture,
–色度位置(xCb,yCb),指定当前色度编解码块的左上样点相对于当前图片的左上角色度样点,
–色度位置(xBl,yBl),指定当前色度块的左上样点相对于当前色度编解码块的左上样点,
–变量edgeType,指定滤波的是垂直(EDGE_VER)还是水平(EDGE_HOR),
–变量cIdx,其指定颜色成分索引,
–变量cQpPicOffset,其指定图片级色度量化参数偏移,
–变量bS,其指定边界滤波强度,
–变量maxFilterLengthCbCr。
该处理的输出是:
–修改后的变量maxFilterLengthCbCr,
–变量tC
变量maxK导出如下:
–如果edgeType等于EDGE_VER,则以下适用:
maxK=(SubHeightC==1)?3:1 (8-1124)
–否则(edgeType等于EDGE_HOR),以下适用:
maxK=(SubWidthC==1)?3:1 (8-1125)
pi和qi(其中i=0..maxFilterLengthCbCr并且k=0..maxK)的值导出如下:–如果edgeType等于EDGE_VER,则以下适用::
qi,k=recPicture[xCb+xBl+i][yCb+yBl+k] (8-1126)
pi,k=recPicture[xCb+xBl-i-1][yCb+yBl+k] (8-1127)
subSampleC=SubHeightC (8-1128)
–否则(edgeType等于EDGE_HOR),以下适用:
qi,k=recPicture[xCb+xBl+k][yCb+yBl+i] (8-1129)
pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1] (8-1130)
subSampleC=SubWidthC (8-1131)
变量QpQ和QpP分别被设置为等于包括包含样点q0,0和p0,0的编解码块的编解码单元的QpY值。
变量QpC导出如下:
qPi=Clip3(0,63,((QpQ+QpP+1)>>1)+cQpPicOffset) (8-1132)
QpC=ChromaQpTable[cIdx-1][qPi] (8-1133)
注释–变量cQpPicOffset根据滤波的色度分量是cb还是cr分量,为
pps_cb_qp_offset或pps_cr_qp_offset的值提供调整。然而,为了避免改变图片内的调整量的需要,滤波处理不包括对slice_cb_qp_offset或
slice_cr_qp_offset的值的调整,也不包括对CuQpOffsetCb,CuQpOffsetCr,或CuQpOffsetCbCr的值的调整(当cu_chroma_qp_offset_enabled_flag等于1时)。
基于如下导出的量化参数Q,根据表8-18所规定的来确定变量β′的值:
Q=Clip3(0,63,QpC+(slice_beta_offset_div2<<1)) (8-1134)
其中slice_beta_offset_div2是包含样点q0,0的条带的语法元素slice_beta_offset_div2的值。
变量β导出如下:
β=β′*(1<<(BitDepthC-8)) (8-1135)
基于如下导出的色度量化参数Q,根据表8-18所规定的来确定变量变量tC′的值:
Q=Clip3(0,65,QpC+2*(bS-1)+(slice_tc_offset_div2<<1)) (8-1136)
其中slice_tc_offset_div2是包含样点q0,0的条带的语法元素slice_tc_offset_div2的值。
变量tC导出如下:
tC=(BitDepthC<10)?(tC′+2)>>(10-BitDepthC):tC′*(1<<(BitDepthC-8)) (8-1137)
当maxFilterLengthCbCr等于1并且bS不等于2时,maxFilterLengthCbCr设置为等于0。
当maxFilterLengthCbCr等于3时,以下顺序步骤适用:
1.变量n1,dpq0,dpq1,dp,dq和d导出如下:
n1=(subSampleC==2)?1:3 (8-1138)
dp0=Abs(p2,0-2*p1,0+p0,0) (8-1139)
dp1=bs(p2,n1-2*p1,n1+p0,n1) (8-1140)
dq0=Abs(q2,0-2*q1,0+q0,0) (8-1141)
dq1=bs(q2,n1-2*q1,n1+q0,n1) (8-1142)
dpq0=dp0+dq0 (8-1143)
dpq1=dp1+dq1 (8-1144)
dp=dp0+dp1 (8-1145)
dq=dq0+dq1 (8-1146)
d=dpq0+dpq1 (8-1147)
2.变量dSam0和dSam1都被设置为等于0。
3.当d小于β时,以下顺序步骤适用:
a.变量dpq设置为等于2*dpq0。
b.对于样点位置(xCb+xBl,yCb+yBl),以样点值p0,0,p3,0,q0,0,和q3,0,变量dpq,β和tC作为输入,通过调用第8.8.3.6.8条中规定的色度样点的决策处理导出变量dSam0,并将输出分配给决策dSam0。
c.变量dpq设置为等于2*dpq1。
d.变量dSam1修改如下:
–如果edgeType等于EDGE_VER,则对于样点位置(xCb+xBl,yCb+yBl+n1),以样点值p0,n1,p3,n1,q0,n1,和q3,n1,变量dpq,β和tC作为输入,调用第8.8.3.6.8条中规定的色度样点的决策处理,并将输出分配给决策dSam1。
–否则(edgeType等于EDGE_HOR),对于样点位置(xCb+xBl+n1,yCb+yBl),以样点值p0,n1,p3,n1,q0,n1和q3,n1,变量dpq,β和tC作为输入,调用第8.8.3.6.8条中规定的色度样点的决策处理,并将输出分配给决策dSam1。
4.变量maxFilterLengthCbCr修改如下:
–如果dSam0等于1并且dSam1等于1,则maxFilterLengthCbCr设置为等于3。
–否则,maxFilterLengthCbCr设置为等于1。
2.2.1.6.4色度块边缘滤波处理
仅当ChromaArrayType不等于0时调用该处理。
该处理的输入是:
–色度图片样点阵列recPicture,
–色度位置(xCb,yCb),其指定当前色度编解码块的左上样点相对于当前图片的左上角色度样点,
–色度位置(xBl,yBl),其指定当前色度块的左上样点相对于当前色度编解码块的左上样点,
–变量edgeType,其指定滤波的是垂直(EDGE_VER)还是水平(EDGE_HOR),
–变量maxFilterLengthCbCr,其包含最大色度滤波器长度,
–变量tC。
该处理的输出是修改后的色度图片样点阵列recPicture。
变量maxK导出如下:
–如果edgeType等于EDGE_VER,则以下适用:
maxK=(SubHeightC==1)?3:1 (8-1148)
–否则(edgeType等于EDGE_HOR),以下适用:
maxK=(SubWidthC==1)?3:1 (8-1149)
pi和qi(其中i=0..maxFilterLengthCbCr和k=0..maxK)的值导出如下:
–如果edgeType等于EDGE_VER,则以下适用:
qi,k=recPicture[xCb+xBl+i][yCb+yBl+k] (8-1150)
pi,k=recPicture[xCb+xBl-i-1][yCb+yBl+k] (8-1151)
–否则(edgeType等于EDGE_HOR),以下适用:
qi,k=recPicture[xCb+xBl+k][yCb+yBl+i] (8-1152)
pi,k=recPicture[xCb+xBl+k][yCb+yBl-i-1] (8-1153)
取决于edgeType的值,以下适用:
–如果edgeType等于EDGE_VER,则对于每个样点位置(xCb+xBl,yCb+yBl+k),k=0..maxK,以下顺序步骤适用:
1.以变量maxFilterLengthCbCr、样点值pi,k,qi,k(其中i=0..maxFilterLengthCbCr)、位置(xCb+xBl-i-1,yCb+yBl+k)和(xCb+xBl+i,yCb+yBl+k)
(其中i=0..maxFilterLengthCbCr–1)、以及变量tC作为输入,调用第8.8.3.6.9条中规定的色度样点的滤波处理,并将滤波后的样点值pi′和qi′(其中i=0..maxFilterLengthCbCr-1)作为输出。
2.滤波后的样点值pi′和qi′(其中i=0..maxFilterLengthCbCr-1)
如下替换样点阵列recPicture内的对应样点:
recPicture[xCb+xBl+i][yCb+yBl+k]=qi′ (8-1154)
recPicture[xCb+xBl-i-1][yCb+yBl+k]=pi′ (8-1155)
–否则(edgeType等于EDGE_HOR),对于每个样点位置(xCb+xBl+k,yCb+yBl),k=0..maxK,以下顺序步骤适用:
1.以变量maxFilterLengthCbCr、样点值pi,k,qi,k(其中i=0..maxFilterLengthCbCr)、位置(xCb+xBl+k,yCb+yBl-i-1)和(xCb+xBl+k,yCb+yBl+i)、以及变量tC作为输入,调用第8.8.3.6.9条中规定的色度样点的滤波处理,并将滤波后的样点值pi′和qi′作为输出。
2.滤波后的样点值pi′和qi′如下替换样点阵列recPicture内的对应样点:
recPicture[xCb+xBl+k][yCb+yBl+i]=qi′ (8-1156)
recPicture[xCb+xBl+k][yCb+yBl-i-1]=pi′ (8-1157)
2.2.1.6.5亮度样点的决策处理
该处理的输入是:
–样点值p0、p3、q0和q3,
–变量dpq、sp、sq、spq、sidePisLargeBlk、sideQisLargeBlk、β和tC
该处理的输出是包含决策的变量dSam。
变量sp和sq修改如下:
–当sidePisLargeBlk等于1时,以下适用:
sp=(sp+Abs(p3-p0)+1)>>1 (8-1158)
–当sideQisLargeBlk等于1时,以下适用:
sq=(sq+Abs(q3-q0)+1)>>1 (8-1159)
变量sThr推导如下:
–如果sidePisLargeBlk等于1或sideQisLargeBlk等于1,则以下适用:
sThr=3*β>>5 (8-1160)
否则,则以下适用:
sThr=β>>3 (8-1161)
变量dSam指定如下:
–如果满足以下所有条件,则dSam设置为等于1:
–dpq小于(β>>2),
–sp+sq小于sTr,
–spq小于(5*tC+1)>>1。
–否则,dSam设置为等于0。
2.2.1.6.6使用短滤波器的亮度样点的滤波处理
该处理的输入是:
–样点值pi和qi,i=0..3,
–pi和qi的位置,(xPi,yPi)和(xQi,yQi)(其中i=0..2),
–变量dE,
–变量dEp和dEq,分别包含滤波样点p1和q1的决策,
–变量tC
该处理的输出是:
–滤波样点数nDp和nDq,
–滤波后的样点值pi′和qj′,i=0..nDp-1,j=0..nDq-1。
取决于dE的值,以下适用:
–如果变量dE等于2,则nDp和nDq都设置为等于3,并应用以下强滤波:
p0′=
Clip3(p0-3*tC,p0+3*tC,(p2+2*p1+2*p0+2*q0+q1+4)>>3) (8-1162)
p1′=Clip3(p1-2*tC,p1+2*tC,(p2+p1+p0+q0+2)>>2) (8-1163)
p2′=Clip3(p2-1*tC,p2+1*tC,(2*p3+3*p2+p1+p0+q0+4)>>3) (8-1164)
q0′=Clip3(q0-3*tC,q0+3*tC,(p1+2*p0+2*q0+2*q1+q2+4)>>3) (8-1165)
q1′=Clip3(q1-2*tC,q1+2*tC,(p0+q0+q1+q2+2)>>2) (8-1166)
q2′=Clip3(q2-1*tC,q2+1*tC,(p0+q0+q1+3*q2+2*q3+4)>>3) (8-1167)
–否则,nDp和nDq均设置为等于0,并应用以下弱滤波:
–以下适用:
Δ=(9*(q0-p0)-3*(q1-p1)+8)>>4 (8-1168)
–当Abs(Δ)小于tC*10时,以下顺序步骤适用:
–滤波后的样点值p0′和q0′规定如下:
Δ=Clip3(-tC,tC,Δ) (8-1169)
p0′=Clip1Y(p0+Δ) (8-1170)
q0′=Clip1Y(q0-Δ) (8-1171)
–当dEp等于1时,滤波样点值p1′规定如下:
Δp=Clip3(-(tC>>1),tC>>1,(((p2+p0+1)>>1)-p1+Δ)>>1) (8-1172)
p1′=Clip1Y(p1+Δp) (8-1173)
–当dEq等于1时,滤波样点值q1′规定如下:
Δq=Clip3(-(tC>>1),tC>>1,(((q2+q0+1)>>1)-q1-Δ)>>1) (8-1174)
q1′=Clip1Y(q1+Δq) (8-1175)
–nDp设置为等于dEp+1,并且nDq设置为等于dEq+1。
当nDp大于0且满足以下一个或多个条件时,nDp设置为等于0:
–包含包含样点p0的编解码块的编解码单元的cu_transquant_bypass_flag等于1。
–包括包含样点p0的编解码块的编解码单元的pred_mode_plt_flag等于1。
当nDq大于0且满足以下一个或多个条件时,nDq设置为等于0:
–包含包含样点q0的编解码块的编解码单元的cu_transquant_bypass_flag等于1。
–包括包含样点q0的编解码块的编解码单元的pred_mode_plt_flag等于1。
2.2.1.6.7使用长滤波器的亮度样点的滤波处理
该处理的输入是:
–变量maxFilterLengthP和maxFilterLengthQ,
–样点值pi和qj(其中i=0..maxFilterLengthP和j=0..maxFilterLengthQ),
–pi和qj的位置(xPi,yPi)和(xQj,yQj)(其中i=0..maxFilterLengthP-1和j=0..maxFilterLengthQ–1),
–变量tC
该处理的输出是:
–滤波后的样点值pi′和qj′(其中i=0..maxFilterLengthP-1,j=0..maxFilterLenghtQ–1)。
变量refMiddle导出如下:
–如果maxFilterLengthP等于maxFilterLengthQ并且maxFilterLengthP等于5,则以下适用:
refMiddle=(p4+p3+2*(p2+p1+p0+q0+q1+q2)+q3+q4+8)>>4 (8-1176)
–否则,如果maxFilterLengthP等于maxFilterLengthQ并且maxFilterLengthP不等于5,则以下适用:
refMiddle=(p6+p5+p4+p3+p2+p1+2*(p0+q0)+q1+q2+q3+q4+q5+q6+8)>>4 (8-1177)
–否则,如果以下条件中的一个为真,
–maxFilterLengthQ等于7并且maxFilterLengthP等于5,
–maxFilterLengthQ等于5并且maxFilterLengthP等于7,
则以下适用:
refMiddle=(p4+p3+2*(p2+p1+p0+q0+q1+q2)+q3+q4+8)>>4 (8-1178)
–否则,如果以下条件中的一个为真,
–maxFilterLengthQ等于5并且maxFilterLengthP等于3,
–maxFilterLengthQ等于3并且maxFilterLengthP等于5,
则以下适用:
refMiddle=(p3+p2+p1+p0+q0+q1+q2+q3+4)>>3 (8-1179)
–否则,如果maxFilterLengthQ等于7并且maxFilterLengthP等于3,
则以下适用:
refMiddle=(2*(p2+p1+p0+q0)+p0+p1+q1+q2+q3+q4+q5+q6+8)>>4 (8-1180)
–否则,以下适用:
refMiddle=(p6+p5+p4+p3+p2+p1+2*(q2+q1+q0+p0)+q0+q1+8)>>4 (8-1181)
变量refP和refQ导出如下:
refP=(pmaxFilterLengtP+pmaxFilterLengthP-1+1)>>1 (8-1182)
refQ=(qmaxFilterLengtQ+qmaxFilterLengthQ-1+1)>>1 (8-1183)
变量fi和tCPDi定义如下:
–如果maxFilterLengthP等于7,则以下适用:
f0..6={59,50,41,32,23,14,5} (8-1184)
tCPD0..6={6,5,4,3,2,1,1} (8-1185)
–否则,如果maxFilterLengthP等于5,则以下适用:
f0..4={58,45,32,19,6} (8-1186)
tCPD0..4={6,5,4,3,2} (8-1187)
–否则,以下适用:
f0..2={53,32,11} (8-1188)
tCPD0..2={6,4,2} (8-1189)
变量gj和tCQDj定义如下:
–如果maxFilterLengthQ等于7,则以下适用:
g0..6={59,50,41,32,23,14,5} (8-1190)
tCQD0..6={6,5,4,3,2,1,1} (8-1191)
–否则,如果maxFilterLengthQ等于5,则以下适用:
g0..4={58,45,32,19,6} (8-1192)
tCQD0..4={6,5,4,3,2} (8-1193)
–否则,以下适用:
g0..2={53,32,11} (8-1194)
tCQD0..2={6,4,2} (8-1195)
滤波后的样点值pi′和qj′(其中i=0..maxFilterLengthP-1和j=0..maxFilterLengthQ-1)导出如下:
pi′=Clip3(pi-(tC*tCPDi)>>1,pi+(tC*tCPDi)>>1,(refMiddle*fi+refP*(64-fi)+32)>>6) (8-1196)
qj′=Clip3(qj-(tC*tCQDj)>>1,qj+(tC*tCQDj)>>1,(refMiddle*gj+refQ*(64-gj)+32)>>6) (8-1197)
当以下一个或多个条件为真时,滤波后的样点值pi′由相应的输入样点值pi代替,其中i=0..maxFilterLengthP-1:
–包括包含样点pi的编解码块的编解码单元的cu_transquant_bypass_flag等于1。
–包括包含样点pi的编解码块的编解码单元的pred_mode_plt_flag等于1。
当以下一个或多个条件为真时,滤波后的样点值q i′由相应的输入样点值qj代替,j=0..maxFilterLengthQ-1:
–包括包含样点qi的编解码块的编解码单元的cu_transquant_bypass_flag等于1。
–包括包含样点qi的编解码块的编解码单元的pred_mode_plt_flag等于1。
2.2.1.6.8色度样点的决策处理
该处理的输入是:
–样点值p0,p3,q0和q3
–变量dpq,β和tC
该处理的输出是包含决策的变量dSam。
变量dSam规定如下:
–如果满足以下所有条件,则dSam设置为等于1:
–dpq小于(β>>2),
–Abs(p3-p0)+Abs(q0-q3)小于(β>>3),
–Abs(p0-q0)小于(5*tC+1)>>1.
–否则,dSam设置为等于0。
2.2.1.6.9色度样点的滤波处理
仅当ChromaArrayType不等于0时调用该处理。
该处理的输入是:
–变量maxFilterLength,
–色度样点值pi和qi,i=0..maxFilterLengthCbCr,
–pi和qi的色度位置,(xPi,yPi)和(xQi,yQi),i=0..maxFilterLengthCbCr-1,
–变量tC
该处理的输出是滤波后的样点值pi′和qi′,i=0..maxFilterLengthCbCr-1。
滤波后的样点值pi′和qi′(i=0..maxFilterLengthCbCr-1)的推导如下:
–如果maxFilterLengthCbCr等于3,则应用以下强滤波:
p0′=Clip3(p0-tC,p0+tC,(p3+p2+p1+2*p0+q0+q1+q2+4)>>3) (8-1198)
p1′=Clip3(p1-tC,p1+tC,(2*p3+p2+2*p1+p0+q0+q1+4)>>3) (8-1199)
p2′=Clip3(p2-tC,p2+tC,(3*p3+2*p2+p1+p0+q0+4)>>3) (8-1200)
q0′=Clip3(q0-tC,q0+tC,(p2+p1+p0+2*q0+q1+q2+q3+4)>>3) (8-1201)
q1′=Clip3(q1-tC,q1+tC,(p1+p0+q0+2*q1+q2+2*q3+4)>>3) (8-1202)
q2′=Clip3(q2-tC,q2+tC,(p0+q0+q1+2*q2+3*q3+4)>>3) (8-1203)
–否则,以下弱滤波适用:
Δ=Clip3(-tC,tC,((((q0-p0)<<2)+p1-q1+4)>>3)) (8-1204)
p0′=Clip1C(p0+Δ) (8-1205)
q0′=Clip1C(q0-Δ) (8-1206)
当以下一个或多个条件为真时,滤波后的样点值pi′被相应的输入样点值pi替换,i=0..maxFilterLengthCbCr-1:
–包括包含样点pi的编解码块的编解码单元的cu_transquant_bypass_flag等于1。
–包括包含样点pi的编解码块的编解码单元的pred_mode_plt_flag等于1。
当以下一个或多个条件为真时,滤波后的样点值qi′由相应的输入样点值qi替换,i=0..maxFilterLengthCbCr-1:
–包括包含样点qi的编解码块的编解码单元的cu_transquant_bypass_flag等于1。
–包括包含样点qi的编解码块的编解码单元的pred_mode_plt_flag等于1。
2.4用于减少行缓冲区的虚拟边界滤波处理
在VTM6中,为了降低ALF的缓冲区要求,对靠近水平CTU边界的样点采用了修改的块分类和滤波方法。为此,通过使用图4所示的“N”样点移动水平CTU边界,将虚拟边界定义为线,其中对于亮度分量N等于4,对于色度分量N等于2。
图4示出在虚拟边界处修改的块分类的示例。
如图5所示,对亮度分量应用修改的块分类。对于虚拟边界上方4x4块的一维拉普拉斯梯度计算,仅使用虚拟边界上方的样点。同样,对于虚拟边界下方4x4块的一维拉普拉斯梯度计算,仅使用虚拟边界下方的样点。通过考虑在一维拉普拉斯梯度计算中使用的减少的样点数量,相应地缩放活动值A的量化。
针对滤波处理,对亮度分量和色度分量都使用虚拟边界处的对称填充操作。如图5所示,当被滤波的样点位于虚拟边界下方时,填充位于虚拟边界上方的临近样点。同时,另一侧的相应样点也被对称地填充。
图5示出了用于虚拟边界处的亮度分量的修改的ALF滤波的示例。
3.通过公开的实施例和技术解决的示例性技术问题
最新的VVC工作草案JVET-O2001-v14中存在几个问题,如下所述。
(1)将4x4样点网格亮度去方块滤波应用于虚拟边界,增加了用于实际的基于CTU的环路滤波所需的行缓冲区。可以使用改进的方法来减少额外的行缓冲区。
(2)在WD6中,亮度去方块被应用于4x4网格变换块边界,但对于子块边界,亮度去方块被应用于8x8网格。然而,基于子块的仿射预测是基于4x4的,这可能导致相邻的两个4x4块之间的大的运动矢量差。因此,方块效应可能在4x4子块边界处发生,这需要将亮度去方块滤波器扩展到4x4网格子块边界。
(3)在WD6中,对Merge三角预测模式(TPM)编解码块的内部子块边缘不应用去方块滤波器。然而,TPM块的运动矢量是以4x4块粒度存储的,这可能会导致相邻两个4x4块之间的大的运动矢量差。因此,可能需要对TPM块的内部边缘应用去方块滤波器。
(4)在WD6中,并非所有的色度标志都取决于色度格式来被信令通知,这可能是不可取的。
(5)在WD6中,PPS语法元素log2_transform_skip_max_size_minus2是以SPS语法元素为条件而被信令通知的,这可能导致SPS和PPS之间的解析依赖。
(6)在WD6中,maxFilterLengthPs的设置取决于当前编解码块是否包含多个8x8块。例如,对于8x8仿射或sbTMVP编解码的块,maxFilterLengthPs保持不变,这是从变换块边界导出的。然而,对于其他子块边界,maxFilterLengthQs被重置为Min(5,maxFilterLengthQs)。
(7)在WD6中,maxFilterLengthQs的设置取决于边缘是否位于第一个子块边界(最左侧或者最上方)。对于以下两种情况:
a)如果垂直边缘左侧的块不是子块编解码的。
b)如果水平边缘上方的块不是子块编解码的。
对于上述情况,maxFilterLengthPs保持不变,这是从变换块边界导出的。但是,对于其他子块边界,maxFilterLengthPs被重置为Min(5,maxFilterLengthPs)。
(8)在WD6中,子块边缘的maxFilterLengthPs和maxFilterLengthQs的设置取决于边缘的位置加4是否大于或等于当前编解码块宽度,这可能是不必要的。
(9)在WD6中,对于距离变换块边缘4个样点的内部子块边缘,maxFilterLengthPs和maxFilterLengthQs被设置为1;否则,对于内部第一个/最后一个子块边缘以及距离TU边缘8个样点的子块边缘,maxFilterLengthPs和maxFilterLengthQs被设置为2;否则,对于其他内部子块边缘,maxFilterLengthPs和maxFilterLengthQs被设置为3。这些条件可以进一步完善。
(10)在WD6中,去方块滤波器强度bS的设置取决于相邻块的预测模式(例如,如果包含样点p0的编解码子块的预测模式不同于包含样点q0的编解码子块的预测模式),则bS被设置为等于1。
(11)在WD6中,当它是变换块边缘并且位于边缘的任意一侧的一个相邻块使用CIIP模式编解码时,该边缘的去方块滤波器强度bS被设置为2。
4.实施例和技术的列表
下面的详细发明应被视为解释一般概念的示例。这些发明不应狭隘地加以解释。此外,这些发明可以以任何方式结合。
在下面的公开中,术语“自然边界”可以是指两个编解码块(例如,两个CU)、或两个预测块(例如,两个PU)、或两个变换块(两个TU)、或两个子块之间的边界。
去方块处理从自然边界导出一些考虑去方块处理的“边界”(例如,子块边界或变换块边界)。在以下公开中,这些边界也称为“去方块边界”。
在一个示例中,去方块边界必须是自然边界,但是自然边界可能不是去方块边界。如果边界不是去方块边界,则在去方块处理中可能不考虑它。
在以下公开中,术语“边缘”等同于“边界”。
编解码块和子块边界处的去方块滤波器
1.可将亮度去方块滤波处理应用于子块自然边界上的4x4网格。
a.在一个示例中,当前子块自然边界是否需要进行亮度去方块滤波的决策(例如edgeFlags的值)可以在4x4网格上执行。
i.在一个示例中,当前子块自然边界是否需要进行亮度去方块滤波的决策(例如edgeFlags的值)可以不在8x8网格上执行。
b.在一个示例中,亮度去方块滤波器长度的决策(例如maxFilterLengthPs和maxFilterLengthQs)可以应用于4x4网格。
i.在一个示例中,亮度去方块滤波器长度的决策(例如maxFilterLengthPs和maxFilterLengthQs)可以不应用于8x8网格。
c.在一个示例中,用于子块编解码块中的子块边界/滤波器长度/滤波器强度确定的网格单元(例如,4x4或8x8)可以取决于子块编解码方法。
i.在一个示例中,用于子块编解码块中的子块边界/滤波器长度/滤波器强度确定的网格单元(例如,4x4或8x8)可以与运动补偿/运动推导中使用的子块尺寸保持一致。
ii.在一个示例中,如果当前块是仿射编解码的,则可以在仿射子块边界上的4x4网格处应用亮度去方块滤波器。
1)例如,对于仿射编解码块的子块边界,可以应用上方的项目1.a和项目2.a。
iii.在一个示例中,如果当前块是SbTMVP编解码的,则可以在SbTMVP子块边界上的8x8网格处应用去方块滤波器。
2.色度去方块滤波处理可应用于子块自然边界处。
a.在一个示例中,可在NxM(例如,8x8或4x4或4x8或8x4)网格子块边界处应用色度去方块滤波器。
b.在一个示例中,可以在NxN(N=8或4)网格处执行当前色度去方块边缘是否是子块边界的决策(例如edgeFlags的值)。
c.在一个示例中,色度去方块滤波器长度(例如maxFilterLengthPs和maxFilterLengthQs)的决策可以应用于NxM(例如8x8或4x4或4x8或8x4)。
d.在一个示例中,色度去方块滤波器长度的值(例如maxFilterLengthPs和maxFilterLengthQs)可以小于或等于L(例如L=3或2或1)。
e.在一个示例中,用于色度子块边界的边界滤波强度(例如bS)的值可以取决于运动矢量的数目、参考图片、位于当前边界两侧的两个临近像素之间的绝对BV/MV差。
f.是否应用上述方法可取决于当前块使用基于子块的技术(例如,SbTMVP、仿射、DMVR、双树情况下的色度IBC模式)进行编解码。
g.是否应用上述方法可取决于颜色子采样格式(例如,是否等于4:4:4)。
h.去方块网格NxM可以取决于颜色格式。
3.对于使用三角形预测模式(TPM)(也称为几何预测模式)编解码的块,可以应用NxN(N=4或8)网格去方块滤波器。
a.在一个示例中,TPM编解码块的内部边缘推导可以与SbTMVP和/或仿射编解码块的子块边界推导处理相同。
b.在一个示例中,TPM编解码块可被视为子块编解码块,并且子块边界/滤波器长度/滤波器强度的确定可以在4x4或8x8网格处确定。
4.对于所有子块去方块边界,无论它是不是第一个子块去方块边界(例如,最左侧的垂直边界或最上方的水平边界),可以以相同的方式处理去方块滤波器长度的设置。
a.对于当前编解码块的最左侧的垂直边界(和/或最上方的水平边界),去方块滤波器长度的值可以取决于它是否与变换块边缘重合(例如edgeTbFlags)。
i.在一个示例中,对于当前编解码块的最左侧的垂直边界(或最上方的水平边界),如果该边界的edgeTbFlags等于1,则无论边界左侧(或上方)的临近编解码块是SbTMVP编解码还是仿射编解码,当前块的去方块滤波器长度maxFilterLengthPs都可以设置为等于Min(5,maxFilterLengthPs)。
ii.在一个示例中,对于当前编解码块的最左侧的垂直边界(或最上方的水平边界),如果该边界的edgeTbFlags等于1,则无论当前编解码块中的子块数是多少,当前块的去方块滤波器长度maxFilterLengthPs都被设置为等于Min(5,maxFilterLengthPs)。
5.当推导子块去方块边界时,去方块滤波器长度的决策可以取决于子块边缘位置(例如,当前编解码块的子块边缘索引(例如,xEdge))。假设xEdge的范围是[0,M],其中M是不小于0的整数。
a.在一个示例中,对于范围为[a,b]的xEdge,maxFilterLengthPs和/maxFilterLengthQs可以设置为等于固定的整数值L(例如,L=1,2,3)。
i.在一个示例中,a=0或1。
ii.在一个示例中,b=M或M–1。
iii.在一个示例中,a=b=0或1或M或M-1。
6.假设x表示当前编解码块内的水平/垂直子块位置,去方块滤波器长度的决策取决于x+delta(例如delta可以等于4或8)与编解码块宽度/高度之间的关系。
a.在一个示例中,当推导SbTMVP和仿射子块边界时,可以在不检查x+delta是否大于或等于块宽度/高度的情况下确定去方块滤波器长度(例如maxFilterLengthPs和/或maxFilterLengthQs)。
b.在一个示例中,当涂掉SbTMVP和仿射子块边界时,可以通过检查x+delta是否大于或等于块宽度/高度来确定去方块滤波器长度(例如maxFilterLengthPs和/或maxFilterLengthQs)。
7.当推导子块去方块边界时,块中x列处的垂直边界或y行处的水平边界的去方块滤波器长度的决策可取决于x+dx列处的垂直边界或y+dy行处的水平边界是否是变换块边界。dx和dy是整数,如4或8。
a.在一个示例中,当推导块(例如,用SbTMVP和/或仿射编解码的)的子块去方块边界时,块中第x列处的垂直边界或y行处的水平边界的去方块滤波器长度(例如maxFilterLengthPs和maxFilterLengthQs)的决策可以取决于以下情况之一:
i.x+dx列处的垂直边界或y+dy行处的水平边界是否为变换块边界,而不检查是否满足x+dx>=块宽度和/或是否满足y+dy>=块高度。
ii.x+dx列处的垂直边界或y+dy行处的水平边界是否为变换块边界,以及是否满足x+dx>=块宽度和/或是否满足y+dy>=块高度。
b.或者,当推导块(例如,用SbTMVP和/或仿射编解码的)的子块去方块边界时,块中x列处的垂直边界或y行处的水平边界的去方块滤波器长度(例如maxFilterLengthPs和maxFilterLengthQs)的确定可能不取决于x+dx列处的垂直边界或y+dy行处的水平边界是否是变换块边界。
去方块滤波器的一般问题
8.对于SBT编解码的块,代替在变换块(比块更小)之间标记两个去方块边界,提出标记一个方向(水平或垂直)上的三个变换块边界。
a.在一个示例中,对于一个方向(水平或垂直),两个变换块边界加上编解码块边界都被视为可以在去方块滤波处理中滤波的去方块边界。
b.可选地,此外,是否滤波编解码块边界可以进一步取决于它是否是子块边界等。
9.如果位于当前块边缘两侧的两个临近样点属于没有非零变换系数水平的两个变换,则该边缘的去方块滤波器强度(如bS)可以设置为等于0。
a.在一个示例中,如果位于当前变换块边缘两侧的两个相邻样点属于没有非零变换系数水平的两个变换块,并且其中一个临近样点被编解码为Merge三角形预测模式(TPM),则bS可以被设置为等于0。
b.在一个示例中,如果位于当前变换块边缘两侧的两个临近样点属于没有非零变换系数水平的两个变换块,并且两个临近样点之间的运动矢量差大于阈值T(例如T=8,以1/16亮度样点为单位),则bS可以被设置为等于0。
c.在一个示例中,变换块边界处的去方块滤波器强度的决策可以从与运动矢量相关的准则解耦。
10.DMVR中导出的MVD可用于去方块。
a.在一个示例中,对于由DMVR处理的CU,可以使用子块的导出MVD而不是信令通知的MV在CU内的子块边界处执行去方块。
b.在一个示例中,对于由DMVR处理的CU,可以使用CU的信令通知的MV在CU边界处执行去方块。
c.或者,对于由DMVR处理的CU,可以使用信令通知的MV和CU边界处的子块的导出MVD在CU边界处执行去方块。
i.例如,对于CU边界处的块,可以通过将相关联的子块的导出MVD加到信令通知的MV来生成MV,然后可以用于去方块。
11.去方块滤波器强度bS的设置可以不取决于相邻块的预测模式。
a.在一个示例中,去方块滤波器强度bS的设置可以取决于相邻块中的一个是否被编解码为MODE_INTRA,而不是取决于MODE_IBC和/或MODE_INTER。
12.是否和/或如何滤波边缘可取决于边缘类型(例如,变换块边界或子块边界)。
a.在一个示例中,可以分别确定变换块边界处的去方块滤波器强度和编解码子块边界处的去方块滤波器强度。
i.在一个示例中,变换块边界标志可存储在(nCbW)x(nCbH)阵列A中,而编解码子块边界可存储在(nCbW)x(nCbH)阵列B中,其中A和B是不同的阵列缓冲器。
ii.在一个示例中,可以根据变换系数(例如非零系数)来设置变换块边界的去方块滤波器强度(例如bS)。
1)在一个示例中,如果位于当前变换块边缘两侧的两个临近样点都具有零变换系数水平,则bS可被设置为等于0。
iii.在一个示例中,可根据位于当前边界两侧的两个临近像素之间的运动矢量和/或参考图片来设置编解码子块边界的去方块滤波器强度(例如bS)。
iv.在一个示例中,如果块边缘也是(变换块边缘而不是子块边界),并且沿着该边缘的两个临近样点中的至少一个在CIIP模式的编解码块中,则将边界强度(BS)设置为等于X(X=1或2)。
b.或者,对于不同的边缘类型,滤波器强度/滤波器长度/边界强度的决策可以相同。
i.在一个示例中,如果块边缘也是(变换块边缘或子块边界),并且沿着该边缘的两个临近样点中的至少一个在CIIP模式的编解码块中,则将边界强度(BS)设置为等于X(X=1或2)。
与虚拟边界的交互
13.在水平CTU边界上方的N个样点(例如,对于亮度N=4,对于色度N=2)的虚拟边界处,可以不应用去方块滤波器。
a.在一个示例中,对于与虚拟边界重合的TU/CU/PU/子块边缘,可以不应用水平边缘去方块滤波。
b.或者,此外,对于与虚拟边界重合的TU/CU/PU/子块边缘,仍然可以应用垂直边缘去方块滤波。
14.在一个示例中,在去方块处理中是否和/或如何剪裁值可以取决于要由去方块滤波器滤波的边界是否与虚拟边界重合。
a.在一个示例中,值为p的样点在去方块处理之后被修改为值p’,p导出为p’=p+d’,并且d’=Clip3(t1,t2,d),其中d是在去方块处理中导出的,并且[t1,t2]是剪裁范围。t1和/或t2可取决于将由去方块滤波器滤波的边界是否与虚拟边界重合。
i.在一个示例中,t1=-2N并且t2=2N-1,其中N是整数。
1)例如,N可取决于颜色分量。
2)例如,N可以从编码器发送到解码器。
3)例如,N可以取决于样点比特深度。
与其他编解码工具的交互
15.可以专门使用SBT和基于子块的编解码方法(例如,SbTMVP和/或仿射)。
a.SBT可不允许用于基于子块的编解码块,例如SbTMVP和仿射预测块。
b.在一个示例中,如果用SbTMVP对编解码块进行编解码,则可以不应用SBT。
c.在一个示例中,如果使用仿射预测对编解码块进行编解码,则可以不应用SBT
d.在一个示例中,如果使用SbTMVP或仿射预测对编解码块进行编解码,则可以不应用SBT。
i.例如,当inter_affine_flag等于1或merge_subblock_flag等于1时,可以不信令通知cu_sbt_flag并将其推断为0。
16.对于上述示例,当不允许使用编解码工具时,跳过该工具的使用指示的信令。
a.或者,如果在应用第二工具时不允许第一工具,则第一工具的使用的信令可以是在第二工具未被应用的条件下。
17.去方块滤波器可以应用于以帧内子块分割(ISP)模式编解码的块的两个子分割之间的边界上。
a.在一个示例中,如果x满足x=M*P+offset和/或x<W,其中offset、M和P是正整数,则通过去方块来滤波块的两个子分割之间的列x处的垂直边界。在一个示例中,M=1,2,3…,P=1。在另一个示例中,M=1,2,3…,P=2。W是块的宽度。例如,offset=0。
b.在一个示例中,如果y满足y=M*P+offset和/或y<H,其中offset、M和P是正整数,则通过去方块来滤波块的两个子分割之间的行y处的水平边界。在一个示例中,M=1,2,3…,P=1。在另一个示例中,M=1,2,3…,P=2。H是块的高度。例如,offset=0。
c.可选地,去方块滤波器不应用于以帧内子块分割(ISP)模式编解码的块的两个子分割之间的边界上。
18.去方块滤波器可应用于用TPM编解码的块的两个MxN(例如4x4或8x8)区域之间的边界上。
a.例如,如果两个相邻的编解码块中的一个用TPM编解码,则两个块之间的边界可以被去方块滤波。
19.滤波处理(例如,去方块滤波器、SAO、ALF)可以取决于在运动补偿处理中使用的TPM编解码块的运动信息,而不是在用于后续编解码块的运动存储/运动矢量预测中使用的运动信息。
a.在一个示例中,在去方块滤波器强度(例如bS)推导处理期间,TPM编解码块的运动矢量可以是运动补偿处理中使用的矢量。
b.在一个示例中,TPM编解码块的存储的HxH(例如4x4)运动矢量可不用于去方块边界滤波强度设置。
c.在一个示例中,用于TPM运动补偿的运动矢量可用于去方块边界滤波强度设置。
d.或者,可以自适应地改变是否使用运动补偿处理、运动存储或运动矢量预测处理中的运动信息。
e.或者,可以基于解码的信息和/或块维度等来确定是否使用运动补偿处理或运动存储或运动矢量预测处理中的运动信息。
色度标志信号
20.色度语法元素信令可以取决于色度格式采样结构(例如,chroma_format_idc)和/或编解码方法(例如,separate_colour_plane_flag,和/或ChromaArrayType等)。
a.在一个示例中,可以根据色度格式采样结构来信令通知PPS Cb/Cr标志。
i.在一个示例中,如果ChromaArrayType等于真,则可以信令通知语法元素X。否则,可以不信令通知语法元素X。
ii.在一个示例中,如果色度格式是单色的(例如4:0:0),则可以信令通知语法元素X。否则,可以不信令通知语法元素X。
iii.在一个示例中,如果色度格式是4:4:4并且separate_colour_plane_flag等于1,则可以信令通知语法元素X。否则,可以不信令通知语法元素X。
iv.例如,X可以是上述项目中的pps_cb_qp_offset和pps_cr_qp_offset。
v.例如,X可以是上述项目中的pps_joint_cbcr_qp_offset。
vi.例如,X可以是上述项目中的cu_chroma_qp_offset_enabled_flag。
vii.例如,X可以是以上项目中的pps_slice_chroma_qp_offsets_present_flag。
SPS-PPS语法相关性
21.PPS语法元素可以不取决于SPS语法元素。
a.在一个示例中,可以不以SPS语法元素(例如,sps_transform_skip_enabled_flag)为条件而信令通知PPS语法元素log2_transform_skip_max_size_minus。
5.实施例
以下是可应用于VVC规范的示例实施例。修改基于最新的VVC工作草案(JVET-O2001-v14)。新增部分以粗体和斜体突出显示,并且从VVC工作草案中删除的部分用双括号标记(例如,[[a]]表示删除字符“a”)。
实施例1关于在子块边界的4x4网格处应用亮度去方块滤波
8.8.3.4编解码子块边界的推导处理
–如果edgeType等于EDGE_VER,则以下适用:
–变量sbW设置为等于Max([[8]]4,nCbW/numSbX)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于xEdge=0..min((nCbW/[[8]]4)-1,numSbX-1),y=0..nCbH-1:
–当前编解码块内的水平位置x设置为等于xEdge*sbW。
–edgeFlags[x][y]的值导出如下:
–当edgeFlags[x][y]等于1时,则maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果x等于0,则以下适用:
–否则,如果edgeTbFlags[x][y]等于1,则以下适用:
–否则,如果以下条件中的一个或多个为真:
–注释:可以增加一个或多个条件为:xEdge等于1,或添加为:(x-4)等于0
–(x+4)大于或等于nCbW,
–edgeTbFlags[x-4][y]等于1,则
–edgeTbFlags[x+4][y]等于1,则
以下适用:
maxFilterLengthPs[x][y]=1 (8-1031)
maxFilterLengthQs[x][y]=1 (8-1032)
–[[否则,如果以下条件中的一个或多个为真:
–xEdge等于1,
–xEdge等于(nCbW/8)-1,
–edgeTbFlags[x-sbW][y]等于1,
–edgeTbFlags[x+sbW][y]等于1,
则以下适用:
maxFilterLengthPs[x][y]=2 (8-1033)
maxFilterLengthQs[x][y]=2 (8-1034)]]
–否则,以下适用:
maxFilterLengthPs[x][y]=3 (8-1035)
maxFilterLengthQs[x][y]=3 (8-1036)
–否则,如果edgeType等于EDGE_HOR,则以下适用:
–变量sbH设置为等于Max([[8]]4,nCbH/numSbY)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于yEdge=0..min((nCbH/[[8]]4)-1,numSbY-1),x=0..nCbW-1:
–当前编解码块内的垂直位置y设置为等于yEdge*sbH。
–edgeFlags[x][y]的值导出如下:
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果y等于0和edgeFlags[x][y]等于1,则以下适用:
–否则,如果edgeTbFlags[x][y]等于1,则以下适用:
–否则,如果以下条件中的一个或多个为真:
–注释:可以增加一个或多个条件:yEdge等于1,或增加:(y-4)等于0
–(y+4)大于或等于nCbH,
–edgeTbFlags[x][y-4]等于1,
–edgeTbFlags[x][y+4]等于1,
以下适用:
maxFilterLengthPs[x][y]=1 (8-1045)
maxFilterLengthQs[x][y]=1 (8-1046)
–[[否则,如果以下条件中的一个或多个为真:
–yEdge等于1,
–yEdge等于(nCbH/8)-1,
–edgeTbFlags[x][y-sbH]等于1,
–edgeTbFlags[x][y+sbH]等于1,
则以下适用:
maxFilterLengthPs[x][y]=2 (8-1043)
maxFilterLengthQs[x][y]=2 (8-1044)]]
–否则,以下适用:
maxFilterLengthPs[x][y]=3 (8-1047)
maxFilterLengthQs[x][y]=3 (8-1048)
5.1实施例2关于在4x4网格仿射编解码子块边界和8x8网格sbTMVP编解码子块边界应用亮度去方块滤波器,在8x8网格子块边界应用色度去方块滤波器
8.8.3.2一个方向的去方块滤波处理
1.变量filterEdgeFlag导出如下:
–…
2.二维(nCbW)x(nCbH)阵列edgeFlags、maxFilterLengthQs和maxFilterlengthPs的所有元素都初始化为零。
3.以位置(xCb,yCb)、编解码块宽度nCbW、编解码块高度nCbH、变量cIdx、变量filterEdgeFlag、阵列edgeFlags、最大滤波器长度阵列maxFilterLengthPs和maxFilterLengthQs、以及变量edgeType作为输入,调用第8.8.3.3条规定的变换块边界的推导处理,并将修改后的阵列edgeFlags,修改后的最大滤波器长度阵列maxFilterLengthPs和maxFilterLengthQs作为输出。
4.[[当cIdx等于0时,]]以位置(xCb,yCb),编解码块宽度nCbW,编解码块高度nCbH,阵列edgeFlags,最大滤波器长度阵列maxFilterLengthPs和maxFilterLengthQs,变量edgeType作为输入,调用第8.8.3.4条中规定的编解码子块边界的推导处理,并将修改后的阵列edgeFlags,修改后的最大滤波器长度阵列maxFilterLengthPs和maxFilterLengthQs作为输出。
5…
6…
7…
(注释:如果子块边界的色度去方块滤波器仅应用于亮度分量,则不需要对第8.8.3.2条进行上述修改。)
8.8.3.4编解码子块边界的推导处理
–变量gridSize设置如下:
gridSize=(cIdx==0||inter_affine_flag[xCb][yCb])?4:8
(注:如果子块边界的色度去方块滤波仅应用于亮度分量,则上述gridSize应设置为等于:gridSize=(inter_affine_flag[xCb][yCb])?4:8)
–如果edgeType等于EDGE_VER,则以下适用:
–变量sbW设置为等于Max([[8]]gridSize,nCbW/numSbX)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于xEdge=0..min((nCbW/[[8]]gridSize)-1,numSbX-1),y=0..nCbH-1:
–当前编解码块内的水平位置x设置为等于xEdge*sbW。
–edgeFlags[x][y]的值导出如下:
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果x等于0,则以下适用:
–否则,如果edgeTbFlags[x][y]等于1,则以下适用:
–否则,如果以下条件中的一个或多个为真:
–注释:可以增加一个或多个条件为:xEdge等于1,或增加:(x-gridSize)等于0
–(x+4gridSize)大于或等于nCbW,
–edgeTbFlags[x-4gridSize][y]等于1,
–edgeTbFlags[x+4gridSize][y]等于1,
以下适用:
maxFilterLengthPs[x][y]=1(注释:1可修改为2) (8-1031)
maxFilterLengthQs[x][y]=1(注释:1可修改为2) (8-1032)
–[[否则,如果以下条件中的一个或多个为真:
–xEdge等于1,
–xEdge等于(nCbW/8)-1,
–edgeTbFlags[x-sbW][y]等于1,
–edgeTbFlags[x+sbW][y]等于1,
则以下适用:
maxFilterLengthPs[x][y]=2 (8-1033)
maxFilterLengthQs[x][y]=2 (8-1034)]]
–否则,以下适用:
–否则,如果edgeType等于EDGE_HOR,则以下适用:
–变量sbH设置为等于Max([[8]]gridSize,nCbH/numSbY).
–阵列edgeTbFlags设置为等于edgeFlags。
–对于yEdge=0..min((nCbH/[[8]]gridSize)-1,numSbY-1),x=0..nCbW-1:
–当前编解码块内的垂直位置y设置为等于yEdge*sbH。
–edgeFlags[x][y]的值导出如下:
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果y等于0和edgeFlags[x][y]等于1,则以下适用:
–否则,如果edgeTbFlags[x][y]等于1,则以下适用:
–否则,如果以下条件中的一个或多个为真:
–注释:可以增加一个或多个条件为:yEdge等于1,
或增加:(y-gridSize)等于0
–(y+4gridSize)大于或等于nCbH,
–edgeTbFlags[x][y-4gridSize]等于1,
–edgeTbFlags[x][y+4gridSize]等于1,
则以下适用:
maxFilterLengthPs[x][y]=1 (8-1045)
maxFilterLengthQs[x][y]=1 (8-1046)
–[[否则,如果以下条件中的一个或多个为真:
–yEdge等于1,
–yEdge等于(nCbH/8)-1,
–edgeTbFlags[x][y-sbH]等于1,
–edgeTbFlags[x][y+sbH]等于1,
则以下适用:
maxFilterLengthPs[x][y]=2 (8-1043)
maxFilterLengthQs[x][y]=2 (8-1044)]]
–否则,以下适用:
8.8.3.5边界滤波强度的推导处理
对于i=0..xN的xDi和j=0..yN的yDj,以下适用:
–如果edgeFlags[xDi][yDj]等于0,则变量bS[xDi][yDj]设置为等于0。
–否则,以下适用:
-…
-否则,如果[[cIdx等于0且]]以下一个或多个条件为真,则bS[xDi][yDj]设置为等于1:
–K=(cIdx==0)?8:16
–L=(cIdx==0)?1/16:1/32
–包含样点p0的编解码子块和包含样点q0的编解码子块都以IBC预测模式编解码并且两个编解码子块的预测中使用的块矢量的水平和垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–对于包含样点p0的编解码子块的预测,使用与包含样点q0的编解码子块预测不同的参考图片或不用数量的运动矢量。
–一个矢量用于预测包含样点p0的编解码子块,并且一个矢量用于预测包含样点q0的编解码子块,并且使用的矢量的水平或垂直分量之间的绝对差大于或等于[[8]]K(以[[1/16]]L亮度样点为单位)。
–两个运动矢量和两个不同的参考图片被用于预测包含样点p0的编解码子块,相同的两个参考图片的两个运动矢量被用于预测包含样点q0的编解码子块,并且相同参考图片的两个编解码子块的预测所使用的两个运动矢量的水平或垂直分量之间的绝对差大于或等于[[8]]K(以[[1/16]]L亮度样点为单位)。
–相同参考图片的两个运动矢量被用于预测包含样点p0的编解码子块,相同参考图片的两个运动矢量被用于预测包含样点q0的编解码子块并且以下两个条件都为真:
–用于两个编解码子块的预测的列表0运动矢量的水平或垂直分量之间的绝对差大于或等于[[8]]K(以[[1/16]]L亮度样点为单位)。或用于两个编解码子块的预测的列表1运动矢量的水平或垂直分量之间的绝对差大于或等于[[8]]K(以[[1/16]]L亮度样点为单位)。
-用于包含样点p0的编解码子块的预测的列表0运动矢量和用于包含样点q0的编解码子块的预测的列表1运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位),或用于包含样点p0的编解码子块的预测的列表1运动矢量和用于包含样点q0的编解码子块的预测的列表0运动矢量的水平或垂直分量之间的绝对差大于或等于[[8]]K(以[[1/16]]L亮度样点为单位)。
-否则,变量bS[xDi][yDj]设置为等于0。
(注:如果子块边界的色度去方块滤波器仅应用于亮度分量,则不需要对第8.8.3.5款进行上述修改。)
5.2实施例3关于从运动矢量解耦变换块边缘的去方块滤波器强度设置
8.8.3.5边界滤波强度的推导处理
对于xDi(其中i=0..xN)和yDj(其中j=0..yN),以下适用:
–如果edgeFlags[xDi][yDj]等于0,则变量bS[xDi][yDj]设置为等于0。
–否则,以下适用:
–样点值p0和q0导出如下:
–如果edgeType等于EDGE_VER,在p0设置为等于recPicture[xCb+xDi-1][yCb+yDj]并且q0设置为等于recPicture[xCb+xDi][yCb+yDj]。
–否则(edgeType等于EDGE_HOR),p0设置为等于recPicture[xCb+xDi][yCb+yDj-1]并且q0设置为等于recPicture[xCb+xDi][yCb+yDj]。
–变量bS[xDi][yDj]导出如下:
–如果cIdx等于0并且两个样点p0和q0都在intra_bdpcm_flag等于1的编解码块中,则bS[xDi][yDj]设置为等于0。
–否则,如果样点p0或q0在以帧内预测模式编解码的编解码单元的编解码块中,则bS[xDi][yDj]设置为等于2。
–否则,如果块边缘也是变换块边缘并且样点p0或q0在ciip_flag等于1的编解码块中,则bS[xDi][yDj]设置为等于2。
–[[否则,如果块边缘也是变换块边缘并且样点p0或q0在包含一个或多个非零变换系数水平的变换块中,则bS[xDi][yDj]设置为等于1。]]
–否则,如果块边缘也是变换块边缘,cIdx大于0,并且样点p0或q0在tu_joint_cbcr_residual_flag等于1的变换单元中,则bS[xDi][yDj]设置为等于1。
–否则,如果包含样点p0的编解码子块的预测模式不同于包含样点q0的编解码子块的预测模式(即其中一个编解码子块用IBC预测模式编解码
并且另一个用帧间预测模式编解码),则bS[xDi][yDj]设置为等于1。
–否则,如果cIdx等于0并且以下条件中的一个或多个为真,则bS[xDi][yDj]设置为等于1:
–包含样点p0的编解码子块和包含样点q0的编解码子块都以IBC预测模式编解码并且两个编解码子块的预测中使用的块矢量的水平和垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–对于包含样点p0的编解码子块的预测,使用与包含样点q0的编解码子块预测不同的参考图片或不用数量的运动矢量。
注释1–用于两个编解码子块的参考图片是相同还是不同的确定仅基于其参考的图片,而与使用指向参考图片列表0的索引还是指向参考图片列表1的索引无关,也与参考图片列表中的索引位置是否不同无关。
注释2–用于左上样点覆盖(xSb,ySb)的编解码子块的预测的运动矢量的数量等于PredFlagL0[xSb][ySb]+PredFlagL1[xSb][ySb]。
–一个矢量用于预测包含样点p0的编解码子块,并且一个矢量用于预测包含样点q0的编解码子块,并且使用的矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–两个运动矢量和两个不同的参考图片被用于预测包含样点p0的编解码子块,相同的两个参考图片的两个运动矢量被用于预测包含样点q0的编解码子块,并且相同参考图片的两个编解码子块的预测所使用的两个运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–相同参考图片的两个运动矢量被用于预测包含样点p0的编解码子块,相同参考图片的两个运动矢量被用于预测包含样点q0的编解码子块并且以下两个条件都为真:
–用于两个编解码子块的预测的列表0运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位),或用于两个编解码子块的预测的列表1运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–用于包含样点p0的编解码子块的预测的列表0运动矢量和用于包含样点q0的编解码子块的预测的列表1运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位),或用于包含样点p0的编解码子块的预测的列表1运动矢量和用于包含样点q0的编解码子块的预测的列表0运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–否则,如果块边缘也是变换块边缘并且样点p0或q0在包含一个或多个非零变换系数水平的变换块中,则bS[xDi][yDj
]设置为等于1。
–否则,变量bS[xDi][yDj]设置为等于0。
5.3实施例4关于确定第一子块边界的去方块滤波器长度
8.8.3.4编解码子块边界的推导处理
–如果edgeType等于EDGE_VER,则以下适用:
–变量sbW设置为等于Max(8,nCbW/numSbX)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于xEdge=0..min((nCbW/8)-1,numSbX-1),
y=0..nCbH-1:
–当前编解码块内的水平位置x设置为等于xEdge*sbW。
–edgeFlags[x][y]的值导出如下:
–如果pps_loop_filter_across_virtual_boundaries_disabled_flag等于1并且x等于PpsVirtualBoundariesPosX[n]对于任何n=0..pps_num_ver_virtual_boundaries-1,以下适用:
edgeFlags[x][y]=0 (8-1025)
–否则,以下适用:
edgeFlags[x][y]=1 (8-1026)
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–[[如果x等于0,则以下适用:
–当numSbX大于1时,以下适用:
maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1027)
–当inter_affine_flag[xCb-1][yCb]等于1或merge_subblock_flag[xCb-1][yCb]等于1时,以下适用:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1028)
–否则,]]如果edgeTbFlags[x][y]等于1,则以下适用:
maxFilterLengthPs[x][y]=Min(5,maxFilterLengthPs[x][y]) (8-1029)
maxFilterLengthQs[x][y]=Min(5,maxFilterLengthQs[x][y]) (8-1030)
注释:如果对子块边缘应用色度去方块滤波,以上两行可修改如下:
maxFilterLengthPs[x][y]=Min(L,maxFilterLengthPs[x][y]),
maxFilterLengthQs[x][y]=Min(L,maxFilterLengthQs[x][y]),
其中L=(cIdx==0)?5:X,并且X可以等于1或2或3。
–否则,如果以下条件中的一个或多个为真:
5.4实施例5在不检查编解码块维度的情况下确定去方块滤波器长度
8.8.3.4编解码子块边界的推导处理
–如果edgeType等于EDGE_VER,则以下适用:
–变量sbW设置为等于Max(8,nCbW/numSbX)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于xEdge=0..min((nCbW/8)-1,numSbX-1),y=0..nCbH-1:
–当前编解码块内的水平位置x设置为等于xEdge*sbW。
–edgeFlags[x][y]的值导出如下:
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果x等于0,则以下适用:
–否则,如果edgeTbFlags[x][y]等于1,则以下适用:
–否则,如果以下条件中的一个或多个为真:
–[[(x+4)大于或等于nCbW,]]
–edgeTbFlags[x-4][y]等于1,
–edgeTbFlags[x+4][y]等于1,
则以下适用:
maxFilterLengthPs[x][y]=1 (8-1031)
maxFilterLengthQs[x][y]=1 (8-1032)
–否则,如果以下条件中的一个或多个为真:
..
–否则,以下适用:
..
–否则,如果edgeType等于EDGE_HOR,以下适用:
–变量sbH设置为等于Max(8,nCbH/numSbY)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于yEdge=0..min((nCbH/8)-1,numSbY-1),x=0..nCbW-1:
–当前编解码块内的垂直位置y设置为等于yEdge*sbH。
–edgeFlags[x][y]的值导出如下:
–当edgeFlags[x][y]等于1,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果y等于0和edgeFlags[x][y]等于1,则以下适用:
–否则,如果edgeTbFlags[x][y]等于1,则以下适用:
–否则,如果以下条件中的一个或多个为真:
–[[(y+4)大于或等于nCbH,]]
–edgeTbFlags[x][y-4]等于1,
–edgeTbFlags[x][y+4]等于1,
以下适用:
maxFilterLengthPs[x][y]=1 (8-1045)
maxFilterLengthQs[x][y]=1 (8-1046)
–否则,如果以下条件中的一个或多个为真:
..
–否则,以下适用:
..
5.5实施例6关于通过子块边界的索引确定去方块滤波器长度
8.8.3.4编解码子块边界的推导处理
–如果edgeType等于EDGE_VER,则以下适用:
–变量sbW设置为等于Max(8,nCbW/numSbX)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于xEdge=0..min((nCbW/8)-1,numSbX-1),
y=0..nCbH-1:
–当前编解码块内的水平位置x设置为等于xEdge*sbW。
–edgeFlags[x][y]的值导出如下:
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果x等于0,以下适用:
–否则,如果edgeTbFlags[x][y]等于1,以下适用:
–否则,如果以下条件中的一个或多个为真:
–注释:可以增加一个或多个条件为:xEdge等于1,或增加:(x-4)等于0
–(x+4)大于或等于nCbW,
–edgeTbFlags[x-4][y]等于1,
–edgeTbFlags[x+4][y]等于1,
以下适用:
maxFilterLengthPs[x][y]=1 (8-1031)
maxFilterLengthQs[x][y]=1 (8-1032)
–否则,如果以下条件中的一个或多个为真:
–[[xEdge等于1,]]
–xEdge等于(nCbW/8)-1,
–edgeTbFlags[x-sbW][y]等于1,
–edgeTbFlags[x+sbW][y]等于1,
以下适用:
maxFilterLengthPs[x][y]=2 (8-1033)
maxFilterLengthQs[x][y]=2 (8-1034)
–否则,以下适用:
–否则,如果edgeType等于EDGE_HOR,以下适用:
–变量sbH设置为等于Max(8,nCbH/numSbY)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于yEdge=0..min((nCbH/8)-1,numSbY-1),x=0..nCbW-1:
–当前编解码块内的垂直位置y设置为等于yEdge*sbH。
–edgeFlags[x][y]的值导出如下:
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果y等于0和edgeFlags[x][y]等于1,则以下适用:
–否则,如果edgeTbFlags[x][y]等于1,以下适用:
–否则,如果以下条件中的一个或多个为真:
–注释:可以增加一个或多个条件为:yEdge等于1,或增加:(y-4)等于0
–(y+4)大于或等于nCbH,
–edgeTbFlags[x][y-4]等于1,
–edgeTbFlags[x][y+4]等于1,
以下适用:
–否则,如果以下条件中的一个或多个为真:
–[[yEdge等于1,]]
–yEdge等于(nCbH/8)-1,
–edgeTbFlags[x][y-sbH]等于1,
–edgeTbFlags[x][y+sbH]等于1,
以下适用:
maxFilterLengthPs[x][y]=2 (8-1043)
maxFilterLengthQs[x][y]=2 (8-1044)
–否则,以下适用:
5.6实施例7关于利用临近的TU边缘确定去方块滤波器长度
8.8.3.4编解码子块边界的推导处理
–如果edgeType等于EDGE_VER,以下适用:
–变量sbW设置为等于Max(8,nCbW/numSbX)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于xEdge=0..min((nCbW/8)-1,numSbX-1),y=0..nCbH-1:
–当前编解码块内的水平位置x设置为等于xEdge*sbW。
–edgeFlags[x][y]的值导出如下:
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果x等于0,则以下适用:
–否则,如果edgeTbFlags[x][y]等于1,则以下适用:
–[[否则,如果以下条件中的一个或多个为真:
–(x+4)大于或等于nCbW,
–edgeTbFlags[x-4][y]等于1,
–edgeTbFlags[x+4][y]等于1,
以下适用:
maxFilterLengthPs[x][y]=1 (8-1031)
maxFilterLengthQs[x][y]=1 (8-1032)]]
–否则,如果以下条件中的一个或多个为真:
–xEdge等于1,
–xEdge等于(nCbW/8)-1,
–edgeTbFlags[x-sbW][y]等于1,
–edgeTbFlags[x+sbW][y]等于1,
以下适用:
maxFilterLengthPs[x][y]=2 (8-1033)
maxFilterLengthQs[x][y]=2 (8-1034)
–否则,以下适用:
maxFilterLengthPs[x][y]=3 (8-1035)
maxFilterLengthQs[x][y]=3 (8-1036)
–否则,如果edgeType等于EDGE_HOR,以下适用:
–变量sbH设置为等于Max(8,nCbH/numSbY)。
–阵列edgeTbFlags设置为等于edgeFlags。
–对于yEdge=0..min((nCbH/8)-1,numSbY-1),x=0..nCbW-1:
–当前编解码块内的垂直位置y设置为等于yEdge*sbH。
–edgeFlags[x][y]的值导出如下:
–当edgeFlags[x][y]等于1时,maxFilterLengthPs[x][y]和maxFilterLengthQs[x][y]的值修改如下:
–如果y等于0并且edgeFlags[x][y]等于1,则以下适用:
–否则,如果edgeTbFlags[x][y]等于1,以下适用:
–[[否则,如果以下条件中的一个或多个为真:
–(y+4)大于或等于nCbH,
–edgeTbFlags[x][y-4]等于1,
–edgeTbFlags[x][y+4]等于1,
以下适用:
maxFilterLengthPs[x][y]=1 (8-1045)
maxFilterLengthQs[x][y]=1 (8-1046)]]
–否则,如果以下条件中的一个或多个为真:
–否则,以下适用:
5.7实施例8关于针对SbTMVP/仿射预测块不允许SBT
7.3.8.5编解码单元语法
5.8实施例9关于在ALF虚拟边界处不允许水平边缘去方块
8.8.3.6.1亮度块边缘的决策处理
以下顺序步骤适用:
1.变量dp0,dp3,dq0和dq3导出如下:
2.当maxFilterLengthP和maxFilterLengthQ都等于或大于3时,变量sp0,sq0,spq0,sp3,sq3和spq3导出如下:
3.变量sidePisLargeBlk和sideQisLargeBlk被设置为等于0。
4.当maxFilterLengthP大于3时,sidePisLargeBlk设置为等于1:
5.当maxFilterLengthQ大于3时,sideQisLargeBlk设置为等于1:
6.当edgeType等于EDGE_HOR并且(yCb+yBl)%CtbSizeY等于0时,sidePisLargeBlk设置为等于0。
7.当edgeType等于EDGE_HOR并且(yCb+yBl)%CtbSizeY等于(CtbSizeY-N)时,sidePisLargeBlk设置为等于0。(注释:N是固定的整数,例如N=4)
8.变量dSam0和dSam3被初始化为0。
9.当sidePisLargeBlk或sideQisLargeBlk大于0时,以下适用:
10.变量dE,dEp和dEq导出如下:
5.9实施例10色度标志信令
7.3.2.4图片参数集RBSP语法
5.10实施例11关于BS设置
8.8.3.5边界滤波强度推导处理
该处理的输入是:
-图片样点阵列recPicture,
-位置(xCb,yCb),其指定当前编解码块的左上样点相对于当前图片的左上样点,
-变量nCbW,其指定当前编解码块的宽度,
-变量nCbH,其指定当前编解码块的高度,
-变量edgeType,其指定是滤波垂直(EDGE_VER)还是水平(EDGE_HOR)边缘。
-变量cIdx,其指定当前编解码块的颜色分量,
-二维(nCbW)x(nCbH)阵列edgeFlags。
该处理的输出是二维(nCbW)x(nCbH)阵列bS,其指定边界滤波强度。
变量xDi,yDj,xN和yN导出如下:
–变量gridSize设置如下:
gridSize=cIdx==0?4:8 (8-1049)
–如果edgeType等于EDGE_VER,则
xDi=(i*gridSize) (8-1050)
yDj=cIdx==0?(j<<2):(j<<1) (8-1051)
xN设置为等于Max(0,(nCbW/gridSize)-1) (8-1052)
yN=cIdx==0?(nCbH/4)-1:(nCbH/2)-1 (8-1053)
–否则(edgeType等于EDGE_HOR),
xDi=cIdx==0?(i<<2):(i<<1) (8-1054)
yDj=(j*gridSize) (8-1055)
xN=cIdx==0?(nCbW/4)-1:(nCbW/2)-1 (8-1056)
yN=Max(0,(nCbH/gridSize)-1) (8-1057)
对于xDi(其中i=0..xN)和yDj(其中j=0..yN),以下适用:
–如果edgeFlags[xDi][yDj]等于0,变量bS[xDi][yDj]设置为等于0。
–否则,以下适用:
–样点值p0和q0导出如下:
–如果edgeType等于EDGE_VER,则p0设置为等于recPicture[xCb+xDi-1][yCb+yDj]并且q0设置为等于recPicture[xCb+xDi][yCb+yDj]。
–否则(edgeType等于EDGE_HOR),p0设置为等于recPicture[xCb+xDi][yCb+yDj-1]并且q0设置为等于recPicture[xCb+xDi][yCb+yDj]。
–变量bS[xDi][yDj]导出如下:
–如果cIdx等于0并且两个样点p0和q0都在intra_bdpcm_flag等于1的编解码块中,则bS[xDi][yDj]设置为等于0。
–否则,如果样点p0或q0在以帧内预测模式编解码的编解码单元的编解码块中,则bS[xDi][yDj]设置为等于2。
–否则,如果块边缘也是(变换块边缘或子块边界)并且样点p0或q0在ciip_flag等于1的编解码块中,则bS[xDi][yDj]设置为等于2。
–否则,如果块边缘也是变换块边缘并且样点p0或q0在包含一个或多个非零变换系数水平的变换块中,则bS[xDi][yDj]设置为等于1。
–否则,如果块边缘也是变换块边缘,cIdx大于0,并且样点p0或q0在tu_joint_cbcr_residual_flag等于1的变换单元中,则bS[xDi][yDj]设置为等于1。
–否则,如果包含样点p0的编解码子块的预测模式不同于包含样点q0的编解码子块的预测模式(即其中一个编解码子块用IBC预测模式编解码
并且另一个用帧间预测模式编解码),则bS[xDi][yDj]设置为等于1。
–否则,如果cIdx等于0并且以下条件中的一个或多个为真,则bS[xDi][yDj]设置为等于1:
–包含样点p0的编解码子块和包含样点q0的编解码子块都以IBC预测模式编解码并且两个编解码子块的预测中使用的块矢量的水平和垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–对于包含样点p0的编解码子块的预测,使用与包含样点q0的编解码子块预测不同的参考图片或不用数量的运动矢量。
注释1–用于两个编解码子块的参考图片是相同还是不同的确定仅基于其参考的图片,而与使用指向参考图片列表0的索引还是指向参考图片列表1的索引无关,也与参考图片列表中的索引位置是否不同无关。
注释2–用于左上样点覆盖(xSb,ySb)的编解码子块的预测的运动矢量的数量等于PredFlagL0[xSb][ySb]+PredFlagL1[xSb][ySb]。
–一个矢量用于预测包含样点p0的编解码子块,并且一个矢量用于预测包含样点q0的编解码子块,并且使用的矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–两个运动矢量和两个不同的参考图片被用于预测包含样点p0的编解码子块,相同的两个参考图片的两个运动矢量被用于预测包含样点q0的编解码子块,并且相同参考图片的两个编解码子块的预测所使用的两个运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–相同参考图片的两个运动矢量被用于预测包含样点p0的编解码子块,相同参考图片的两个运动矢量被用于预测包含样点q0的编解码子块并且以下两个条件都为真:
–用于两个编解码子块的预测的列表0运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位),或用于两个编解码子块的预测的列表1运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–用于包含样点p0的编解码子块的预测的列表0运动矢量和用于包含样点q0的编解码子块的预测的列表1运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位),或用于包含样点p0的编解码子块的预测的列表1运动矢量和用于包含样点q0的编解码子块的预测的列表0运动矢量的水平或垂直分量之间的绝对差大于或等于8(以1/16亮度样点为单位)。
–否则,变量bS[xDi][yDj]设置为等于0。
或者,上述句子
–否则,如果块边缘也是(变换块边缘或子块边界)并且样点p0或q0在ciip_flag等于1的编解码块中,则bS[xDi][yDj]设置为等于2。
可替换为:
–否则,如果块边缘也是(变换块边缘但不是子块边界)并且样点p0或q0在ciip_flag等于1的编解码块中,则bS[xDi][yDj]设置为等于2。
5.11实施例12关于BS设置
8.8.3.5边界滤波强度推导处理
对于xDi(其中i=0..xN)和yDj(其中j=0..yN),以下适用:
–如果edgeFlags[xDi][yDj]等于0,则变量bS[xDi][yDj]设置为等于0。
–否则,以下适用:
–样点值p0和q0导出如下:
–如果edgeType等于EDGE_VER,则p0设置为等于recPicture[xCb+xDi-1][yCb+yDj]并且q0设置为等于recPicture[xCb+xDi][yCb+yDj]。
–否则(edgeType等于EDGE_HOR),p0设置为等于recPicture[xCb+xDi][yCb+yDj-1]并且q0设置为等于recPicture[xCb+xDi][yCb+yDj]。
–变量bS[xDi][yDj]导出如下:
–如果cIdx等于0并且两个样点p0和q0都在intra_bdpcm_flag等于1的编解码块中,则bS[xDi][yDj]设置为等于0。
–否则,如果样点p0或q0在以帧内预测模式编解码的编解码单元的编解码块中,则bS[xDi][yDj]设置为等于2。
–否则,如果块边缘也是变换块边缘并且样点p0或q0在ciip_flag等于1的编解码块中,则bS[xDi][yDj]设置为等于2。
–否则,如果块边缘也是变换块边缘并且样点p0或q0在包含一个或多个非零变换系数水平的变换块中,则bS[xDi][yDj]设置为等于1。
–否则,如果块边缘也是变换块边缘,cIdx大于0,并且样点p0或q0在tu_joint_cbcr_residual_flag等于1的变换单元中,则bS[xDi][yDj]设置为等于1。
–[[否则,如果包含样点p0的编解码子块的预测模式不同于包含样点q0的编解码子块的预测模式(即其中一个编解码子块用IBC预测模式编解码并且另一个用帧间预测模式编解码),则bS[xDi][yDj]设置为等于1。]]
–否则,如果cIdx等于0并且以下条件中的一个或多个为真,则bS[xDi][yDj]
设置为等于1:
-…
–否则,变量bS[xDi][yDj]设置为等于0。
图6A是视频处理装置600的框图。装置600可用于实现本文所述的一种或多种方法。装置600可以体现在智能手机、平板电脑、计算机、物联网(IoT)接收器等中。装置600可以包括一个或多个处理器602、一个或多个存储器604和视频处理硬件606。处理器602可以被配置成实现本文中描述的一个或多个方法。存储器(多个存储器)604可用于存储用于实现本文所述的方法和技术的数据和代码。视频处理硬件606可用于在硬件电路中实现本文档中描述的一些技术。
图6B是其中可以实现所公开的技术的视频处理***的框图的另一个示例。图6B是示出其中可以实现本文公开的各种技术的示例性视频处理***610的框图。各种实现可以包括***610的部分或全部组件。***610可以包括用于接收视频内容的输入612。视频内容可以原始或未压缩格式(例如,8位或10位多分量像素值)接收,或者可以压缩或编解码格式接收。输入612可以表示网络接口、***总线接口或存储接口。网络接口的示例包括有线接口(例如以太网、无源光网络(PON))和无线接口(例如Wi-Fi或蜂窝接口)。
***610可以包括编解码组件614,其可以实现在本文中描述的各种译码或编码方法。编解码组件614可以降低从输入612到编解码组件614的输入的平均比特率。因此,编解码技术有时被称为视频压缩或视频转码技术。编解码组件614的输出可以被存储,或者通过由组件616表示的连接的通信发送。分量618可以使用在输入612处接收的视频的存储或通信的比特流(或编解码)表示来生成发送到显示接口620的像素值或可显示视频。从比特流表示生成用户可见视频的处理有时称为视频解压缩。此外,虽然某些视频处理操作被称为“编解码”操作或工具,但是应当理解的是,在编码器处使用编解码工具或操作,并且将由解码器执行与编码结果相反的相应解码工具或操作。
***总线接口或显示接口的示例可以包括通用串行总线(USB)或高清多媒体接口(HDMI)或显示端口等。存储接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文中描述的技术可以体现在各种电子设备中,例如移动电话、笔记本电脑、智能手机或能够执行数字数据处理和/或视频显示的其他设备。
所公开技术的一些实施例包括作出决策或确定以启用视频处理工具或模式。在一个示例中,当视频处理工具或模式被启用时,编码器将在视频块的处理中使用或实现该工具或模式,但不一定基于工具或模式的使用来修改所得比特流。也就是说,当它基于该决策或确定被启用时,从视频块到视频的比特流表示的转换将使用该视频处理工具或模式。在另一示例中,当视频处理工具或模式被启用时,解码器将在知道比特流已基于视频处理工具或模式被修改的情况下处理比特流。也就是说,将使用基于该决策或确定而启用的视频处理工具或模式来执行从视频的比特流表示到视频块的转换。
所公开技术的一些实施例包括作出禁用视频处理工具或模式的决策或确定。在示例中,当视频处理工具或模式被禁用时,编码器将不在将视频块转换为视频的比特流表示时使用该工具或模式。在另一示例中,当视频处理工具或模式被禁用时,解码器将在知道比特流没有使用基于该决策或确定而被禁用的视频处理工具或模式修改的情况下处理比特流。
在本文档中,术语“视频处理”可以指视频编码、视频解码、视频压缩或视频解压缩。例如,视频压缩算法可以在从视频的像素表示转换为相应的比特流表示期间应用,或反之亦然。例如,当前视频块的比特流表示可以对应于在比特流内的共同位置或不同位置处传播的比特,如由语法定义的那样。例如,可以根据经过变换和编码的残差来编码宏块,并且还可以使用比特流中的标头和其他字段中的比特。
在一些实施例中,以下第一组条款可以实现为优选条款。
以下条款可与上一节所列项目(如项目1)中所述的附加技术一起实施。
1.一种视频处理方法(例如,图7中所示的方法700),包括:对于视频和视频的比特流表示之间的转换,基于取决于当前子块的尺寸的尺寸规则和/或位置规则和/或编解码模式规则,做出关于是否或如何将去方块滤波器应用于当前子块的自然边界的确定(702);以及根据所述确定执行(704)转换;其中,尺寸规则规定,将去方块滤波器应用于4x4子块。
2.根据条款1所述的方法,其中做出关于如何应用去方块滤波器的确定包括确定滤波器长度。
3.根据条款1所述的方法,其中,尺寸规则还指定不将去方块滤波器应用于8x8块,或者尺寸规则还指定对于8x8子块不执行关于如何应用去方块滤波器的确定。
4.根据条款1-3中任一项所述的方法,其中编解码模式规则规定,在与当前子块的运动补偿或运动推导边缘对齐的自然边界处启用去方块滤波器。
以下条款可与上一节所列项目(如项目4)中所述的附加技术一起实施。
5.根据条款1-4中任一项所述的方法,其中位置规则规定,对当前子块使用与视频区域中其他子块相同的滤波器长度。
6.根据条款5所述的方法,其中视频区域是包含当前子块的当前块。
以下条款可与上一节所列项目(如项目4)中所述的附加技术一起实施。
7.一种视频处理方法,包括:对于视频和视频的比特流表示之间的转换,做出在视频的视频区域上使用去方块滤波器的确定;根据所述确定执行转换,其中,根据取决于与视频区域相关联的虚拟边界的位置的规则,将所述去方块滤波器选择性地应用于所述视频区域的样点。
8.根据条款7所述的方法,其中视频区域对应于编解码树单元,并且其中,虚拟边界是水平编解码树单元边界上方的N个样点,并且其中,规则规定,在虚拟边界处禁用去方块滤波器。
9.根据条款7所述的方法,其中视频区域是变换单元,并且其中,规则规定,在与虚拟边界重合的视频区域的水平边缘禁用去方块滤波器。
10.根据条款7所述的方法,其中视频区域是预测单元,并且其中,规则规定,在与虚拟边界重合的视频区域的水平边缘禁用去方块滤波器。
11.根据条款7或9-10中任一项所述的方法,其中规则规定在与虚拟边界重合的视频区域的垂直边缘处禁用去方块滤波器。
以下条款可与上一节所列项目(如项目14)中所述的附加技术一起实施。
12.一种视频处理方法,包括:对于视频和视频的比特流表示之间的转换,做出对视频的视频区域使用去方块滤波器的确定;以及根据确定执行转换,使得根据取决于与视频区域相关联的虚拟边界的位置的规则来执行去方块滤波器的计算。
13.根据条款12所述的方法,其中规则规定,通过使用去方块滤波器将样点p修改为样点p’,其中p’=p+d’,并且d’=Clip3(t1,t2,d),其中d是在转换中导出的,并且其中[t1,t2]是剪裁范围,其中t1和t2是整数。
14.根据条款13所述的方法,其中t1或t2取决于是否对虚拟边界应用去方块滤波器。
15.根据条款13-14中任一项所述的方法,其中t1=-2N和t2=2N-1,其中N是整数。
以下条款可与上一节所列项目(如项目15)中所述的附加技术一起实施。
16.一种视频处理方法,包括:基于排除规则,在包含多个视频块(其中至少一些视频块包括多个子块)的视频和视频的编解码表示之间执行转换,该排除规则规定,在转换期间互斥地使用子块变换模式和子块编解码模式。
17.根据条款16所述的方法,其中子块编解码模式对应于仿射编解码模式。
18.根据条款16或17所述的方法,其中子块编解码模式包括SbTMVP(子块时域运动矢量预测器)模式。
以下条款可与上一节所列项目(例如项目16)中所述的附加技术一起实施。
19.根据条款16-18中任一项所述的方法,其中编解码表示不包括由于排除规则而被排除的编解码模式的语法元素。
以下条款可与上一节所列项目(例如项目20)中所述的附加技术一起实施。
20.一种视频处理方法,包括:基于色度格式或与视频的色度分量相关联的编解码方法,对于视频和视频的编解码表示之间的转换,做出在所述编解码表示中是否信令通知语法元素的确定;以及基于所述确定执行转换。
21.根据条款20所述的方法,其中所述色度格式包括色度格式采样结构。
22.根据条款20-21中任一项所述的方法,其中语法元素是Cb/Cr标志,根据色度格式采样结构在图片参数集中有条件地信令通知所述Cb/Cr标志。
23.根据条款20所述的方法,其中仅针对单色格式的色度格式信令通知称为X的语法元素。
24.根据条款20所述的方法,其中仅在色度格式为4:4:4时信令通知称为X的语法元素,其中将单独的颜色标志设置为等于1。
25.根据条款23或24所述的方法,其中X是pps_cb_qp_offset或pps_cr_qp_offset或pps_joint_cbcr_qp_offset或cu_chroma_qp_offset_enabled_flag或pps_slice_chroma_qp_offsets_present_flag。
以下条款可与上一节所列项目(例如项目21)中所述的附加技术一起实施。
26.一种视频处理方法,包括:视频的编解码表示中解析第一语法元素,所述视频包含多个图片的序列,其中所述第一语法元素在图片参数集级别包含在所述编解码表示中,并且其中,解析是在没有隐式规则的情况下执行的,该隐式规则取决于第二语法元素在序列参数集级别的存在而排除使用第一语法元素;以及基于解析生成视频。
27.一种视频处理方法,包括:在视频的编解码表示中、在图片参数集级别包括第一语法元素,所述视频包含多个图片的序列,其中所述包括是在没有隐式规则的情况下执行的,该隐式规则取决于第二语法元素在序列参数集级别的存在而排除包括第一语法元素;以及基于包括生成编解码表示。
28.根据条款26-27中任一项所述的方法,其中,第一语法元素是log2_transform_skip_max_size_minus2,并且其中,第二语法元素是sps_transform_skip_enabled_flag。
29.根据条款1-28中任一项所述的方法,其中转换包括将视频编码为编解码表示。
30.根据条款1-28中任一项所述的方法,其中转换包括对编解码表示进行解码以生成视频的像素值。
31.一种视频解码装置,其包括处理器,所述处理器被配置为实现条款1-30中一项或多项所述的方法。
32.一种视频编码装置,其包括处理器,所述处理器被配置为实现条款1-30中一项或多项所述的方法。
33.一种存储有计算机代码的计算机程序产品,当由处理器执行时,该代码使处理器实现条款1-30中任一项所述的方法。
34.本文中描述的方法、装置或***。
以下条款描述一些实施例和技术。第二组条款描述了上一节中公开的技术的某些特征和方面(例如,项目1至7)。
1.一种视频处理方法(例如,图8A所示的方法810),包括:对于视频的当前视频块的子块,根据规则确定(812)要应用去方块滤波器的子块边界;以及使用所述去方块滤波器执行(814)所述视频和所述视频的编解码表示之间的转换,其中所述规则规定,在不检查i)所述当前视频块的子块的位置与预定义值的总和与ii)所述当前视频块的宽度或高度之间的关系的情况下,确定去方块滤波器长度。
2.根据条款1所述的方法,其中所述规则规定,在不检查x+dx的值是否大于或等于所述当前视频块的宽度的情况下,确定垂直方向上的所述去方块滤波器长度。
3.根据条款1所述的方法,其中x是所述子块在所述当前视频块中的水平位置。
4.根据条款3所述的方法,其中dx设置为4。
5.根据条款1所述的方法,其中所述规则规定,在不检查y+dy的值是否大于或等于所述当前视频块的高度的情况下,确定水平方向上的所述去方块滤波器长度。
6.根据条款5所述的方法,其中y是所述子块在所述当前视频块中的垂直位置。
7.根据条款6所述的方法,其中dy设置为4。
8.一种视频处理方法(例如,图8B所示的方法820),包括:对于当前视频块和视频的编解码表示之间的转换,基于规则做出关于是否将去方块滤波器应用于所述当前视频块的子块之间的边界、和/或在应用所述去方块滤波器时要使用的去方块参数的确定(822);以及基于所述确定执行(824)所述转换,其中所述规则基于所述边界是否落在子块的NxM样点网格上,和/或所述边界是否是所述当前视频块的自然边界,其中N和M是整数。
9.根据条款8所述的方法,其中所述去方块参数包括去方块滤波器长度和/或去方块滤波器强度。
10.根据条款8或9所述的方法,其中,所述去方块滤波器对应于亮度去方块滤波器,所述亮度去方块滤波器对包括所述视频的亮度信息的视频信息进行去方块滤波,并且其中,所述确定的做出基于规则应用所述亮度去方块滤波器,所述规则规定,将所述亮度去方块滤波器应用于4x4样点网格。
11.根据条款10所述的方法,其中所述规则还规定,在所述边界落在8x8样点网格上的情况下,不将所述亮度去方块滤波器应用于作为所述自然边界的所述边界。
12.根据条款8所述的方法,其中做出所述确定包括确定滤波器长度。
13.根据条款12所述的方法,其中,在所述去方块滤波器对应于对包括所述视频的亮度信息的视频信息进行去方块滤波的所述亮度去方块滤波器的情况下,将所述滤波器长度的确定应用于4x4样点网格,而不应用于8x8样点网格。
14.根据条款8所述的方法,其中基于所述子块的编解码模式确定所述NxM样点网格。
15.根据条款14所述的方法,其中所述NxM样点网格与所述子块的运动补偿或运动导数边缘对齐。
16.根据条款8所述的方法,其中所述去方块滤波器对应于对包括所述视频的色度信息的视频信息进行去方块滤波的色度去方块滤波器。
17.根据条款16所述的方法,其中所述规则还规定,将所述色度去方块滤波器应用于所述NxM样点网格,N和M中的每一个为4或8。
18.根据条款16所述的方法,其中,做出所述确定包括确定当前色度去方块边缘是否为所述子块的边界,并且其中,针对NxN样点网格执行所述确定,N为4或8。
19.根据条款12所述的方法,其中,在所述去方块滤波器对应于对包括所述视频的色度信息的视频信息进行去方块滤波的色度去方块滤波器的情况下,将所述滤波器长度的确定应用于所述NxM样点网格,N和M中的每一个为4或8。
20.根据条款12所述的方法,其中为色度去方块滤波器确定的所述滤波器长度小于或等于L。
21.根据条款16所述的方法,其中所述色度去方块滤波器的强度取决于以下的至少一个:i)运动矢量的数量,ii)参考图片,或iii)位于所述边界两侧的两个临近像素之间的绝对块矢量(BV)或运动矢量(MV)差。
22.根据条款8所述的方法,其中做出所述确定的执行还取决于是否使用基于所述子块的方法对所述子块进行编解码。
23.根据条款22所述的方法,其中所述当前子块用仿射编解码模式、SbTMVP(子块时域运动矢量预测器)模式、DMVR(解码器侧运动矢量细化)模式、色度IBC(帧内块复制)模式进行编解码。
24.根据条款8所述的方法,其中做出所述确定取决于所述视频的颜色子采样格式。
25.根据条款8-24中任一项所述的方法,其中N和M取决于所述视频的颜色格式。
26.一种视频处理方法(例如,图8C中描绘的方法830),包括:做出将去方块滤波器应用于使用几何预测模式编解码的当前视频块的NxN样点网格的确定(832),其中所述当前视频块被划分成多个子分割进行预测,其中N等于4或8;以及基于所述确定执行(834)包括所述当前视频块的视频和所述视频的编解码表示之间的转换。
27.根据条款26所述的方法,其中,基于规则执行所述当前视频块的内部边缘推导,将所述规则应用于使用SbTMVP(子块时域运动矢量预测器)模式和/或仿射模式编解码的视频块的子块边界推导处理。
28.根据条款26所述的方法,其中基于4x4样点网格或8x8样点网格确定所述去方块滤波器的边界、滤波器长度和/或滤波器强度。
29.一种视频处理方法(例如,图8D中描绘的方法840),包括:对于视频的当前视频块的子块,根据规则确定(842)要应用去方块滤波器的子块边界;以及使用所述去方块滤波器在所述视频和所述视频的编解码表示之间执行(844)转换。
30.根据条款29所述的方法,其中所述规则规定,用于最左侧垂直边界或最上方水平边界的去方块滤波器长度与用于其他子块的去方块滤波器长度相同。
31.根据条款30所述的方法,其中所述规则还规定,基于所述最左侧垂直边界或所述最上方水平边界是否与变换块边缘重合来确定所述去方块滤波器长度。
32.根据条款30所述的方法,其中,对于所述最左侧垂直边界或所述最上方的水平边界,将所述去方块滤波器长度(maxFilterLengthPs)设置为Min(5,maxFilterLengthPs),而不考虑1)在所述最左侧垂直边界左边或最上方水平边界上方的临近块是否是SbTMVP编解码或仿射编解码的,和/或2)所述当前视频块中的子块数目。
33.根据条款29所述的方法,其中所述规则规定,基于对应子块的子块边缘位置来确定所述去方块滤波器长度。
34.根据条款33所述的方法,其中所述子块边缘位置具有范围在[0,M]中的对应子块边缘索引(xEdge),M是不小于0的整数。
35.根据条款34所述的方法,其中,对于在范围[a,b]中的xEdge,所述去方块滤波器长度被设置为固定的整数值(L),并且其中,a和b是不小于0的整数。
36.根据条款35所述的方法,其中a=0或1,或b=M或M-1,或a=b=0、1、M或M-1。
37.根据条款26所述的方法,其中所述规则规定,基于所述当前视频块的尺寸和x+delta值之间的关系来确定所述去方块滤波器长度,其中x表示所述当前视频块内的水平或垂直子块位置,并且delta是整数。
38.根据条款37所述的方法,其中通过检查所述x+delta的值是否大于或等于所述当前视频块的宽度或高度来确定所述去方块滤波器长度。
39.根据条款29所述的方法,其中所述规则规定,基于x+dx列处的垂直边界或y+dy行处的水平边界是否是变换块边界,确定所述当前视频块中x列处的垂直边界或y行处的水平边界的所述去方块滤波器长度,并且其中dx和dx是整数。
40.根据条款39所述的方法,其中使用SbTMVP(子块时域运动矢量预测器)模式和/或仿射模式对所述当前视频块进行编解码。
41.根据条款39所述的方法,其中,在不检查是否满足x+dx等于或大于所述当前视频块的宽度的第一条件和/或是否满足y+dy等于或大于所述当前视频块的高度的第二条件的情况下,确定所述去方块滤波器长度。
42.根据条款39所述的方法,其中,还基于是否满足x+dx等于或大于所述当前视频块的宽度的第一条件和/或是否满足y+dy等于或大于所述当前视频块的高度的第二条件,确定所述去方块滤波器长度。
43.根据条款1-42中任一项所述的方法,其中所述转换的执行包括从所述当前视频块生成所述编解码表示。
44.根据条款1-42中任一项所述的方法,其中所述转换的执行包括从所述编解码表示生成所述当前视频块。
45.一种视频处理装置,包括处理器,所述处理器被配置为实现条款1-44中任一项或多项所述的方法。
46.一种存储程序代码的计算机可读介质,当执行所述程序代码时,使处理器实现条款1-44中任一项或多项所述的方法。
第三组条款描述了上一节中公开的技术的某些特征和方面(例如,项目8至20)。
1.一种视频处理方法(例如,图9A所示的方法910),包括:对于视频的当前视频块和所述视频的编解码表示之间的转换,基于规则确定(912)应用于使用去方块滤波器的所述当前视频块的子块边界的边界强度;以及基于所述确定执行(914)所述转换,其中所述规则规定,无论所述子块边界是否为变换块边界,所述边界强度都被设置为等于2。
2.根据条款1所述的方法,其中所述规则规定,对于不是所述变换块边界的所述子块边界,将所述边界强度设置为等于2。
3.根据条款1或2所述的方法,其中所述规则规定,使用组合帧间帧内预测(CIIP)模式对沿所述边界的两个临近样点中的至少一个进行编解码。
4.根据条款3所述的方法,其中基于帧间预测样点和帧内预测样点的加权和,使用所述CIIP模式来导出预测样点。
5.一种视频处理方法(例如,图9B所示的方法920),包括:根据规则在视频的当前视频块和所述视频的编解码表示之间执行(922)转换,其中,所述转换使用子块变换(SBT)工具,所述转换包括:在编码期间,将所述当前视频块分割为变换块(TB)并对所述TB应用TB级变换,或者在解码期间,对所述视频的所述编解码表示中的编解码样点应用TB级逆变换,其中,所述规则规定,在水平方向和/或垂直方向上跨越至少三个TB边界启用自适应滤波器。
6.根据条款5所述的方法,其中所述至少三个TB边界包括所述变换块和所述当前视频块的编解码块边界之间的两个TB边界。
7.根据条款6所述的方法,其中变换块的尺寸小于所述当前视频块的尺寸。
8.根据条款6所述的方法,其中是否滤波所述编解码块边界取决于所述编解码块边界是否是所述当前视频块的子块之间的子块边界。
9.一种视频处理方法(例如,图9C所示的方法930),包括:对于视频的当前视频块和所述视频的编解码表示之间的转换,做出位于所述当前视频块边缘两侧的两个临近样点属于不具有非零变换系数水平的两个变换块的确定(932);基于所述第一确定,做出将所述当前块边缘的去方块滤波器强度设置为0的第二确定(934);以及使用所述第一确定和所述第二确定执行(936)所述转换。
10.根据条款9所述的方法,其中所述两个临近样点中的一个被编解码为几何预测模式,其中所述当前视频块被划分成子分割。
11.根据条款9所述的方法,其中所述两个临近样点之间的运动矢量差大于阈值T,其中T是整数。
12.根据条款9所述的方法,其中独立于与运动矢量相关的规则做出关于变换块边界处的所述滤波器强度的所述第二确定。
13.一种视频处理方法,包括:使用解码器侧运动矢量细化(DMVR)工具在视频的当前视频块和所述视频的编解码表示之间执行转换;以及对在所述转换期间生成的重构视频块应用去方块滤波器;其中,所述DMVR工具包括:使用通过细化所述编解码表示中的编解码的运动矢量而生成的细化的运动矢量、通过运动补偿生成所述重构视频块;其中,所述去方块滤波器的参数基于所述细化的运动矢量。
14.根据条款13所述的方法,其中,所述当前视频块对应于由所述DMVR处理的编解码单元(CU),并且使用所述当前视频块的子块的所述细化的运动矢量,在所述编解码单元内的子块边界处执行所述去方块处理。
15.根据条款13所述的方法,其中,所述当前视频块对应于由所述DMVR处理的编解码单元(CU),并且使用所述CU的信令通知的运动矢量,在CU边界处执行所述去方块处理。
16.根据条款13所述的方法,其中,所述当前视频块对应于由所述DMVR处理的编解码单元(CU),并且使用所述CU的信令通知的运动矢量和所述当前视频块的子块的所述细化的运动矢量,在CU边界处执行所述去方块处理。
17.一种视频处理方法(例如,图9D中所示的方法940),包括:对于视频的当前视频块和所述视频的编解码表示之间的转换,基于规则确定(942)用于去方块滤波处理的去方块滤波器强度;以及基于所述确定执行(944)所述转换,并且其中,所述规则规定,所述去方块滤波器强度不取决于所述当前视频块的相邻块的预测模式。
18.根据条款17所述的方法,其中所述特定编解码模式是帧内块复制(IBC)模式或帧间编解码模式,所述IBC模式使用指向包含所述当前视频块的视频帧的至少一个块矢量来生成预测块,所述帧间编解码模式包括使用时域相关性来表示或重构所述视频。
19.根据条款17或18所述的方法,其中所述规则还规定,所述去方块滤波器强度取决于所述相邻块中的一个是否使用帧内模式编解码,所述帧内模式包括基于先前处理的视频块表示或重构所述视频。
20.一种视频处理方法(例如,图9E所示的方法950),包括:对于视频的当前视频块和所述视频的编解码表示之间的转换,基于取决于或独立于边界的类型的规则,确定(952)是否将去方块滤波器应用于所述当前视频块的所述边界和/或在应用所述去方块滤波器的情况下要使用的去方块参数;以及基于所述确定执行(954)所述转换。
21.根据条款20所述的方法,其中所述边界的类型与所述边界是变换块边界或子块边界有关。
22.根据条款20或21所述的方法,其中所述规则规定,针对所述变换块边界和所述子块边界,将所述去方块滤波器强度确定为不同的值。
23.根据条款22所述的方法,其中变换块边界标志存储在第一阵列缓冲器中,并且子块边界标志存储在与所述第一阵列缓冲器不同的第二阵列缓冲器中。
24.根据条款22所述的方法,其中基于变换系数确定所述变换块边界的所述去方块滤波器强度。
25.根据条款22所述的方法,其中基于运动矢量、和/或位于所述边界两侧的两个临近像素之间的参考图片来确定所述子块边界的所述去方块滤波器强度。
26.根据条款22所述的方法,其中所述规则规定,在以下情况下将所述边界强度设置为等于1或2:1)所述边界是变换块边界,但不是所述子块边界;2)使用组合帧间帧内预测(CIIP)模式编解码沿所述边界的两个临近样点中的至少一个,其中X为1或2。
27.根据条款20所述的方法,其中所述去方块参数包括滤波器强度、滤波器长度或边界强度中的至少一个,并且其中,所述规则规定,对不同类型的所述边界使用相同的参数。
28.一种视频处理方法(例如,图9F中所示的方法960),包括:对于视频的视频区域和所述视频的编解码表示之间的转换,确定(962)在距离水平边界的N个样点的虚拟边界上不应用一个方向的去方块滤波器,其中N是大于0的整数;以及基于所述确定执行(964)所述转换。
29.根据条款28所述的方法,其中对于对应于亮度分量的所述视频区域,N是4,并且对于对应于色度分量的所述视频区域,N是2。
30.根据条款28或29所述的方法,其中,所述确定确定不将水平方向的所述去方块滤波器应用于所述当前视频块的变换单元、编解码单元、预测单元或子块的边界、与所述虚拟边界重合的边界。
31.根据条款28或29所述的方法,其中,所述确定确定将垂直方向的所述去方块滤波器应用于所述当前视频块的变换单元、编解码单元、预测单元或子块的边界、与所述虚拟边界重合的边界。
32.一种视频处理方法(例如,图9G中所示的方法970),包括:对于视频的视频区域和所述视频的编解码表示之间的转换,基于规则确定(972)是否以及如何使用去方块滤波器在去方块处理期间剪裁样点的值,所述规则取决于要由所述去方块滤波器滤波的边界是否与距离所述视频区域的水平边界N个样点的虚拟边界重合,其中N是大于0的整数;以及基于所述确定执行(974)所述转换。
33.根据条款32所述的方法,其中所述规则规定,通过使用所述去方块滤波器将值为(p)的所述样点修改为不同的值(p’),其中p’=p+d’,并且d’=Clip3(t1,t2,d),其中是d在所述转换期间中导出的,并且其中[t1,t2]是剪裁范围,其中t1和t2是整数。
34.根据条款33所述的方法,其中t1或t2取决于是否将所述去方块滤波器应用于所述虚拟边界。
35.根据条款33或34所述的方法,其中t1=-2N并且t2=2N-1,其中N是整数。
36.根据条款35所述的方法,其中N取决于颜色分量和/或样点比特深度。
37.一种视频处理方法(例如,图9H中描绘的方法980),包括:根据规则确定(982)用于视频的当前视频块和所述视频的编解码表示之间的转换的编解码工具;以及根据所述编解码工具执行(984)所述转换,其中,所述规则规定,子块变换(SBT)工具与基于子块的编解码模式互斥地使用。
38.根据条款37所述的方法,其中,所述基于子块的编解码模式包括仿射编解码模式或SbTMVP(子块时域运动矢量预测器)模式。
39.根据条款37或38所述的方法,其中,所述编解码表示不包括由于所述规则而排除的所述基于子块的编解码模式的语法元素。
40.一种视频处理方法(例如,图9I所示的方法990),包括:对于根据帧内子块分割(ISP)模式的使用而被划分成子分割的当前视频块,确定(992)对所述当前视频块的两个子分割之间的边界应用去方块滤波器;以及基于所述确定,执行(994)视频的所述当前视频块和所述视频的编解码表示之间的转换。
41.根据条款40所述的方法,其中在x满足x=M*P+offset和/或x<W的情况下,用所述去方块滤波器滤波所述当前视频块的所述两个子分割之间的列x处的垂直边界,其中offset、M和P是正整数,并且W是所述当前视频块的宽度。
42.根据条款40所述的方法,其中在y满足y=M*P+offset和/或y<H的情况下,用所述去方块滤波器滤波所述当前视频块的所述两个子分割之间的y行处的水平边界,其中offset、M和P是正整数,并且H是所述当前视频块的高度。
43.一种视频处理方法(例如,图10A所示的方法1010),包括:对于使用几何预测模式编解码的当前视频块,确定(1012)将去方块滤波器应用于所述当前视频块的两个MxN区域之间的边界,其中所述当前视频块被划分为子分割,其中M和N是整数;以及基于所述确定执行(1014)视频的所述当前视频块和所述视频的编解码表示之间的转换。
44.根据条款43所述的方法,其中MxN等于4x4或8x8。
45.一种视频处理方法(例如,图10B所示的方法1020),包括:对于包括视频块的视频和所述视频的编解码表示之间的转换,确定(1022)由于两个相邻视频块中的至少一个使用几何预测模式编解码,将去方块滤波器应用于所述两个相邻视频块之间的边界,其中所述两个相邻视频块中的至少一个被划分为子分割;以及基于所述确定执行(1024)所述转换。
46.一种视频处理方法(例如,图10C所示的方法1030),包括:对于视频的当前视频块和所述视频的编解码表示之间的转换,基于所述规则确定(1032)在滤波处理中使用的滤波参数;以及基于所述确定执行(1034)所述转换,其中,所述规则规定,所述滤波参数取决于i)在运动补偿处理中使用的运动信息,ii)存储在运动存储器中的运动信息,或者iii)在运动矢量预测处理中使用的运动信息。
47.根据条款46所述的方法,其中,所述规则规定,所述滤波处理基于用几何预测模式编解码的所述当前视频块的所述运动补偿处理中使用的所述运动信息,其中,所述两个相邻视频块中的至少一个被划分成子分割。
48.根据条款47所述的方法,其中,所述规则还规定,使用在去方块滤波器强度推导处理和/或去方块边界滤波强度设置期间在所述运动补偿处理中使用的运动矢量。
49.根据条款47所述的方法,其中所述规则还规定,所述当前视频块的存储HxH运动矢量不用于去方块边界滤波强度设置,其中H是大于0的整数。
50.根据条款47所述的方法,其中所述规则取决于解码信息和/或块维度。
51.一种视频处理方法,包括:执行视频和所述视频的编解码表示之间的转换,并且其中,所述编解码表示符合格式规则,其中,所述格式规则规定是否基于色度格式、与色度分量相关联的编解码模式或色度信息语法元素在所述编解码表示中包括指示色度分量的色度语法元素。
52.根据条款51所述的方法,其中所述色度语法元素是在根据色度格式采样结构或色度信息语法元素在图片参数集中有条件地信令通知的Cb/Cr标志。
53.根据条款51所述的方法,其中,如果ChromaArrayType等于真,则信令通知称为X的所述色度语法元素。
54.根据条款51或52所述的方法,其中,仅针对单色格式的所述色度格式信令通知称为X的所述色度语法元素。
55.根据条款51或52所述的方法,其中,仅针对4:4:4的所述色度格式、且当单独的颜色标志设置为1时才信令通知称为X的所述色度语法元素。
56.根据条款51或52所述的方法,其中,仅针对设置为1的所述色度信息语法元素信令通知称为X的所述色度语法元素。
57.根据条款52-56中任一项所述的方法,其中X是i)pps_cb_qp_offset或ii)pps_cr_qp_offset或iii)pps_joint_cbcr_qp_offset或iv)cu_chroma_qp_offset_enabled_flag或v)pps_slice_chroma_qp_offsets_present_flag。
58.根据条款1-57中任一项所述的方法,其中所述转换的执行包括从所述当前视频块生成所述编解码表示。
59.根据条款1-57中任一项所述的方法,其中所述转换的执行包括从所述编解码表示生成所述当前视频块。
60.一种视频处理装置,其包括处理器,所述处理器被配置为实现条款1-59中任一项或多项所述的方法。
61.一种存储程序代码的计算机可读介质,当执行时,所述程序代码使处理器实现条款1-59中任一项或多项所述的方法。在一些实施例中,一种计算机可读介质,其存储根据本文中描述的技术生成的编解码表示或比特流。
本文档中描述公开和其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路、或计算机软件、固件或硬件中实现,包括本文档中所公开的结构及其结构等效体,或其中一个或多个的组合。本说明中描述的主题的实现可以实现为一个或多个计算机程序产品,即一个或多个编码在有形的且非易失的计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或其中多个的组合。术语“数据处理单元”或“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理***、操作***或其中一个或多个的组合。传播的信号是人为生成的信号,例如,机器生成的电、光或电磁信号,其被生成以编码信息以传输到合适的接收器设备。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件***中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如,内部硬盘或可移动硬盘;磁光盘;以及CD ROM和DVD ROM盘。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
虽然本专利文件包含许多细节,但不应将其解释为对任何主题或权利要求范围的限制,而应解释为对特定技术的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中移除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。
同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种***组件的分离不应理解为在所有实施例中都需要这样的分离。
仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。

Claims (21)

1.一种处理视频数据的方法,包括:
对于用子块时域运动矢量预测器模式或仿射预测模式编解码的视频的当前视频块的子块,根据规则确定要应用去方块滤波器的子块边界;以及
基于所述确定,执行所述当前视频块和所述视频的比特流之间的转换,
其中,所述规则规定:当确定所述子块边界时,基于检查i)水平位置(x1 + dx)和第一垂直位置(y1)处的边界是否是变换块边界;ii)水平位置(x1-dx)和所述第一垂直位置(y1)处的边界是否是变换块边界中的一个或两者,确定所述当前视频块内的第一水平位置(x1)和第一垂直位置(y1)处的所述子块边界的第一去方块滤波器长度,其中dx是大于或等于0的整数;
其中,通过省略检查x1 + dx和所述当前视频块的宽度之间的第一关系,确定所述第一去方块滤波器长度。
2.根据权利要求1所述的方法,其中,响应于满足i)所述水平位置(x1 + dx)和所述第一垂直位置(y1)处的边界是变换块边界,或者ii)所述水平位置(x1-dx)和所述第一垂直位置(y1)处的边界是变换块边界中的至少一个,所述第一去方块滤波器长度等于1,其中,所述第一去方块滤波器长度包括P侧的去方块滤波器长度或者Q侧的去方块滤波器长度。
3.根据权利要求1所述的方法,其中x1 + dx和所述当前视频块的所述宽度之间的所述第一关系包括x1 + dx是否大于或等于所述当前视频块的所述宽度。
4.根据权利要求1所述的方法,其中dx等于4或8。
5.根据权利要求1所述的方法,其中,所述规则规定:当确定所述子块边界时,基于检查i)垂直位置(y2 + dy)和第二水平位置(x2)处的边界是否是变换块边界,ii)垂直位置(y2- dy)和所述第二水平位置(x2)处的边界是否是变换块边界中的一个或两者,确定所述当前视频块内的第二垂直位置(y2)和所述第二水平位置(x2)处的所述子块边界的第二水平子块边界的第二去方块滤波器长度,其中dy是大于或等于0的整数。
6.根据权利要求5所述的方法,其中,响应于满足i)所述垂直位置(y2 + dy)和所述第二水平位置(x2)处的所述边界是变换块边界,或ii)所述垂直位置(y2 - dy)和所述第二水平位置(x2)处的所述边界是变换块边界中的至少一个,所述第二去方块滤波器长度等于1,其中,所述第二去方块滤波器长度包括P侧的去方块滤波器长度或Q侧的去方块滤波器长度。
7.根据权利要求5所述的方法,其中,通过省略检查y2 + dy和所述当前视频块的高度之间的第二关系来确定所述第二去方块滤波器长度。
8.根据权利要求7所述的方法,其中,y2 + dy和所述当前视频块的所述高度之间的第二关系包括y2 + dy是否大于或等于所述当前视频块的所述高度。
9.根据权利要求5所述的方法,其中dy等于4或8。
10.根据权利要求1所述的方法,还包括:
在所述当前视频块的块边缘是第三子块边界并且使用组合帧间帧内预测(CIIP)模式对沿着所述第三子块边界的两个相邻样本中的至少一个进行编解码的情况下,在所述转换期间确定应用于所述子块边界的所述第三子块边界的边界强度等于2。
11.根据权利要求1所述的方法,其中,所述比特流符合格式化规则,并且其中,所述格式化规则基于色度格式采样语法元素指定是否在所述比特流中包括一个或多个量化相关色度语法元素。
12.根据权利要求11所述的方法,其中,所述一个或多个色度语法元素包含在图片参数集合中,并且包括以下各项中的至少一个: i)第一语法元素,其指示用于导出Cb量化参数的亮度量化参数的偏移,ii)第二语法元素,其指示用于导出Cr量化参数的亮度量化参数的偏移,iii)第三语法元素,其指示用于导出CbCr联合量化参数的亮度量化参数的偏移;或iv)第四语法元素,其指示用于指示用于导出色度分量量化参数的亮度量化参数的偏移的标记被允许存在于编解码单元级或变换单元级中;或v)第五语法元素,其指示用于指示指示用于导出色度分量量化参数的亮度量化参数的偏移的标记被允许存在于条带级中。
13.根据权利要求1到12的任一项所述的方法,其中,所述转换包括将所述当前视频块编码成所述比特流。
14.根据权利要求1到12的任一项所述的方法,其中,所述转换包括从所述比特流解码所述当前视频块。
15.一种用于处理视频数据的装置,包括处理器和其上具有指令的非暂时性存储器,其中在由所述处理器执行所述指令时,使得所述处理器:
对于用子块时域运动矢量预测器模式或仿射预测模式编解码的视频的当前视频块的子块,根据规则确定要应用去方块滤波器的子块边界;以及
基于所述确定,执行所述当前视频块和所述视频的比特流之间的转换,
其中,所述规则规定:当确定所述子块边界时,基于检查i)水平位置(x1 + dx)和第一垂直位置(y1)处的边界是否是变换块边界;ii)水平位置(x1-dx)和所述第一垂直位置(y1)处的边界是否是变换块边界中的一个或两者,确定所述当前视频块内的第一水平位置(x1)和第一垂直位置(y1)处的所述子块边界的第一去方块滤波器长度,其中dx是大于或等于0的整数;
其中,通过省略检查x1 + dx和所述当前视频块的宽度之间的第一关系,确定所述第一去方块滤波器长度。
16.根据权利要求15所述的装置,其中,响应于满足i)所述水平位置(x1 + dx)和所述第一垂直位置(y1)处的边界是变换块边界,或者ii)所述水平位置(x1-dx)和所述第一垂直位置(y1)处的边界是变换块边界中的至少一个,所述第一去方块滤波器长度等于1,其中,所述第一去方块滤波器长度包括P侧的去方块滤波器长度或者Q侧的去方块滤波器长度;
其中,x1 + dx和所述当前视频块的所述宽度之间的所述第一关系包括x1 + dx是否大于或等于所述当前视频块的所述宽度;以及
其中,dx等于4或8。
17.一种存储指令的非暂时性计算机可读存储介质,所述指令使得处理器:
对于用子块时域运动矢量预测器模式或仿射预测模式编解码的视频的当前视频块的子块,根据规则确定要应用去方块滤波器的子块边界;以及
基于所述确定,执行所述当前视频块和所述视频的比特流之间的转换,
其中,所述规则规定:当确定所述子块边界时,基于检查i)水平位置(x1 + dx)和第一垂直位置(y1)处的边界是否是变换块边界;ii)水平位置(x1-dx)和所述第一垂直位置(y1)处的边界是否是变换块边界中的一个或两者,确定所述当前视频块内的第一水平位置(x1)和第一垂直位置(y1)处的所述子块边界的第一去方块滤波器长度,其中dx是大于或等于0的整数;
其中,通过省略检查x1 + dx和所述当前视频块的宽度之间的第一关系,确定所述第一去方块滤波器长度。
18.根据权利要求17所述的非暂时性计算机可读存储介质,其中,响应于满足i)所述水平位置(x1 + dx)和所述第一垂直位置(y1)处的边界是变换块边界,或者ii)所述水平位置(x1-dx)和所述第一垂直位置(y1)处的边界是变换块边界中的至少一个,所述第一去方块滤波器长度等于1,其中,所述第一去方块滤波器长度包括P侧的去方块滤波器长度或者Q侧的去方块滤波器长度;
其中,x1 + dx和所述当前视频块的所述宽度之间的所述第一关系包括x1 + dx是否大于或等于所述当前视频块的所述宽度;以及
其中,dx等于4或8。
19.一种用于存储视频的比特流的方法,包括:
对于用子块时域运动矢量预测器模式或仿射预测模式编解码的视频的当前视频块的子块,根据规则确定要应用去方块滤波器的子块边界;
基于所述确定,生成所述比特流;以及
将所述比特流存储在非暂时性计算机可读存储介质中;
其中,所述规则规定:当确定所述子块边界时,基于检查i)水平位置(x1 + dx)和第一垂直位置(y1)处的边界是否是变换块边界;ii)水平位置(x1-dx)和所述第一垂直位置(y1)处的边界是否是变换块边界中的一个或两者,确定所述当前视频块内的第一水平位置(x1)和第一垂直位置(y1)处的所述子块边界的第一去方块滤波器长度,其中dx是大于或等于0的整数;
其中,通过省略检查x1 + dx和所述当前视频块的宽度之间的第一关系,确定所述第一去方块滤波器长度。
20.一种视频处理装置,包括处理器,所述处理器被配置为实现权利要求2-14中任一项所述的方法。
21.一种存储程序代码的计算机可读介质,当执行所述程序代码时,使处理器实现权利要求2-14中任一项所述的方法。
CN202080059765.6A 2019-08-23 2020-08-24 编解码块或子块边界处的去方块滤波 Active CN114868391B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2019/102217 2019-08-23
CN2019102217 2019-08-23
PCT/CN2020/110784 WO2021036981A1 (en) 2019-08-23 2020-08-24 Deblocking filtering at coding block or subblock boundary

Publications (2)

Publication Number Publication Date
CN114868391A CN114868391A (zh) 2022-08-05
CN114868391B true CN114868391B (zh) 2024-06-25

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106464866A (zh) * 2014-05-29 2017-02-22 佳能株式会社 用于对视频样本的块进行去块的方法、设备和***
CN108989806A (zh) * 2011-09-20 2018-12-11 Lg 电子株式会社 用于编码/解码图像信息的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108989806A (zh) * 2011-09-20 2018-12-11 Lg 电子株式会社 用于编码/解码图像信息的方法和装置
CN106464866A (zh) * 2014-05-29 2017-02-22 佳能株式会社 用于对视频样本的块进行去块的方法、设备和***

Similar Documents

Publication Publication Date Title
CN114586370B (zh) 在视频编解码中使用色度量化参数的方法、装置及介质
KR102601022B1 (ko) 색상 포맷에 기초한 비디오 영역 분할
CN114402601B (zh) 色度去块滤波的量化参数偏移的方法及装置
CN114902657A (zh) 视频编解码中的自适应颜色变换
US12003714B2 (en) Deblocking filtering at coding block or subblock boundary
CN114651442A (zh) 视频编解码中的跨分量适应性回路滤波
CN117544777A (zh) 用于视频编解码的跨分量自适应环路滤波
US20220070455A1 (en) Boundary strength determination for deblocking filters in video processing
CN114868391B (zh) 编解码块或子块边界处的去方块滤波
CN114503597B (zh) 视频编解码中的色度去方块方法
CN113812163B (zh) 用于视频编解码的去方块滤波器
CN113906763B (zh) 用于视频编解码的色度去方块协调
CN114598882A (zh) 对称帧内块复制模式
CN116250239A (zh) 去方块滤波改进

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant