帧内块复制缓冲区和调板预测值更新的制作方法

阅读: 评论:0


帧内块复制缓冲区和调板预测值更新
1.相关申请的交叉引用
2.根据适用的专利法和/或依据巴黎公约的规则,本技术适时要求于2020年3月18日提交的国际专利申请no.pct/cn2020/079858的优先权和权益。出于根据法律的所有目的,前述申请的全部公开通过引用而并入作为本技术的公开的一部分。
技术领域
3.本专利文档涉及图像和视频编码和解码。


背景技术:



4.数字视频占了互联网和其他数字通信网络上的最大带宽使用。随着能够接收和显示视频的连接用户设备的数量增加,预计对数字视频使用的带宽需求将继续增长。


技术实现要素:



5.本文档公开了可以由视频编码器和解码器用于使用对编解码表示的解码有用的控制信息来处理视频的编解码表示的技术。
6.在一个示例方面,公开了一种视频处理方法。该方法包括:为视频的视频块和视频的编解码表示之间的转换确定视频块满足条件,其中视频块使用帧内块复制模式在编解码表示中被编解码;以及基于该确定来执行转换。在转换期间,由于视频块满足条件,帧内块复制缓冲区的一部分被重置。
7.在另一个示例方面,公开了另一种视频处理方法。该方法包括执行视频的一个或多个视频块和视频的编解码表示之间的转换。一个或多个视频块使用代表性样点的调板进行编解码。调板使用调板预测值在编解码表示中被预测编解码,并且调板预测值在用于处理一个或多个视频块中的每一个之前被更新。
8.在又一个示例方面,公开了一种视频编码器装置。视频编码器包括被配置为实施上述方法的处理器。
9.在又一个示例方面,公开了一种视频解码器装置。视频解码器包括被配置为实施上述方法的处理器。
10.在又一个示例方面,公开了一种存储有代码的计算机可读介质。该代码在由处理器执行时使得处理器实施上述方法。
11.在又一个示例方面,描述了一种根据上述方法生成比特流的方法。比特流可以在生成之后被存储在计算机可读介质上。
12.这些以及其他特征将在本文档中描述。
附图说明
13.图1是示例视频处理系统的框图。
14.图2是视频处理装置的框图。
15.图3是视频处理的示例方法的流程图。
16.图4是示出根据本公开的一些实施例的视频编解码系统的框图。
17.图5是示出根据本公开的一些实施例的编码器的框图。
18.图6是示出根据本公开的一些实施例的解码器的框图。
19.图7示出了当前图片参考的示例说明。
20.图8示出了jvet-m0407中示出的动态参考区域的示例。
21.图9示出了在调板模式下编解码的块的示例。
22.图10示出了调板的基于子块的索引图扫描的示例,左边是水平扫描,并且右边是垂直扫描。
23.图11是视频处理的示例方法的流程图。
24.图12是视频处理的示例方法的流程图。
具体实施方式
25.在本文档中使用章节标题以易于理解,并且不将每个章节中公开的技术和实施例的应用性仅限制于该章节。此外,在一些描述中使用h.266技术术语仅仅是为了易于理解,而不是为了限制所公开的技术的范围。因此,本文描述的技术也适用于其他视频编解码器协议和设计。
26.1.初步讨论
27.本专利文档涉及视频编解码技术。具体地,它涉及视频编解码中的帧内块复制。它可以被应用于正在开发的标准,例如多功能视频编解码。它也可以适用于未来的视频编解码标准或视频编解码器。
28.2.视频编解码介绍
29.视频编解码标准主要是通过开发公知的itu-t和iso/iec标准而演变的。itu-t开发了h.261和h.263,iso/iec开发了mpeg-1和mpeg-4 visual,并且两个组织联合开发了h.262/mpeg-2视频、h.264/mpeg-4高级视频编解码(advanced video coding,avc)和h.265/hevc标准。自h.262以来,视频编解码标准基于混合视频编解码结构,其中采用了时域预测加变换编解码。为探索hevc之外的未来视频编解码技术,vceg和mpeg于2015年联合成立了联合视频探索团队(joint video exploration team,jvet)。从那时起,jvet已经采用了许多新的方法,并将其放入了名为联合探索模型(joint exploration model,jem)的参考软件中。在2018年4月,创立了vceg(q6/16)和iso/iec jtc1 sc29/wg11(mpeg)之间的联合视频专家小组(jvet),以致力于vvc标准,其目标是与hevc相比降低50%的比特率。
30.vvc草案的最新版本,即多功能视频编解码(草案8)可以在以下处到:
31.phenix.int-evry.fr/jvet/doc_end_user/documents/17_brussels/wg11/jvet-32.q2001-v15.zip。
33.vvc的最新参考软件(名为vtm)可以在以下处到:
34.vcgit.hhi.fraunhofer.de/jvet/vvcsoftware_vtm/tags/vtm-8.0。
35.2.1.hevc/h.265中的帧间预测
36.每个帧间预测pu具有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。也可以使用inter_pred_idc来信令通知对两个参考图片列表之一的使
用。运动矢量可以被显式地编解码为相对于预测值的增量(delta)。
37.当以跳过模式对cu进行编解码时,一个pu与cu相关联,并且没有显著的残差系数,没有编解码的运动矢量增量或参考图片索引。指定了merge模式,由此从包括空域和时域候选的邻近pu获得当前pu的运动参数。merge模式可以被应用于任何帧间预测pu,而不仅是针对跳过模式。merge模式的替代方案是运动参数的显式传输,其中,运动矢量(更确切地说,与运动矢量预测值相比的运动矢量差(motion vector difference,mvd))、每个参考图片列表的对应参考图片索引和参考图片列表使用按每pu被显式地信令通知。这样的模式在本公开中被称为高级运动矢量预测(advanced motion vector prediction,amvp)。
38.当信令指示将使用两个参考图片列表之一时,从一个样点块产生pu。这被称为“单向预测”。单向预测适用于p条带和b条带两者。
39.当信令指示要使用两个参考图片列表时,从两个样点块产生pu。这被称为“双向预测”。双向预测仅适用于b条带。
40.下文提供了关于在hevc中指定的帧间预测模式的细节。描述将以merge模式开始。
41.2.2.当前图片参考
42.已经在hevc屏幕内容编解码扩展(hevc screen content coding extension,hevc-scc)[1]和当前的vvc测试模型(vtm-3.0)[2]中采用了当前图片参考(current picture referencing,cpr),或一度命名为帧内块复制(intra block copy,ibc)。ibc将运动补偿的概念从帧间编解码扩展到帧内编解码。如图7所示范的,当应用cpr时,当前块通过相同图片中的参考块进行预测。在对当前块进行编解码或解码之前,参考块中的样点必须已经被重构。尽管cpr对大多数相机捕捉的序列来说效率不高,但它示出了对屏幕内容的显著编解码增益。原因是屏幕内容图片中有许多重复图案,诸如图标和文本字符。cpr可以有效地移除这些重复图案之间的冗余。在hevc-scc中,如果帧间编解码的编解码单元(coding unit,cu)选择当前图片作为其参考图片,则它可以应用cpr。在这种情况下,mv被重命名为块矢量(block vector,bv),并且bv总是具有整数像素精确度。为了与主要简表(profile)hevc兼容,当前图片在解码图片缓冲区(decoded picture buffer,dpb)中被标记为“长期”参考图片。应当注意,类似地,在多视图/3d视频编解码标准中,视图间参考图片也被标记为“长期”参考图片。
[0043]
在bv到其参考块之后,可以通过复制参考块来生成预测。残差可以通过从原始信令中减去参考像素而得到。那么变换和量化可以如在其它编解码模式中被应用。
[0044]
然而,当参考块在图片之外、或与当前块重叠、或在重构区域之外、或在受某些约束限制的有效区域之外时,部分或全部像素值未被定义。基本上,有两种解决方案解决这样的问题。一种是不允许这种情况,例如,在比特流一致性中。另一种是对那些未定义的像素值应用填充。以下子段详细描述了解决方案。
[0045]
2.3.hevc屏幕内容编解码扩展中的cpr
[0046]
在hevc的屏幕内容编解码扩展中,当块使用当前图片作为参考时,它应该保证整个参考块在可用的重构区域内,如以下规范文本所指示的:
[0047]
变量offsetx和offsety被推导如下:
[0048]
offsetx=(chromaarraytype==0)?0:(mvclz[0]&0x7?2:0)
ꢀꢀꢀꢀꢀ
(8-104)
[0049]
offsety=(chromaarraytype==0)?0:(mvclx[1]&0x7?2:0)
ꢀꢀꢀꢀꢀ
(8-105)
[0050]
比特流一致性的要求是,当参考图片是当前图片时,亮度运动矢量mvlx应当遵守以下约束:
[0051]

当以设置为等于(xcb,ycb)的(xcurr,ycurr)和设置为等于(xpb+(mvlx[0]》》2)

offsetx,ypb+(mvlx[1]》》2)

offsety)的邻近亮度位置(xnby,ynby)作为输入来调用如条款6.4.1所指定的z扫描顺序块可用性的推导过程时,输出应当等于true(真)。
[0052]

当以设置为等于(xcb,ycb)的(xcurr,ycurr)和设置为等于(xpb+(mvlx[0]》》2)+npbw

1+offsetx,ypb+(mvlx[1]》》2)+npbh

1+offsety)的邻近亮度位置(xnby,ynby)作为输入来调用如条款6.4.1所指定的z扫描顺序块可用性的推导过程时,输出应当等于true。
[0053]

以下条件中的一个或两个应当为真:
[0054]

(mvlx[0]》》2)+npbw+xb1+offsetx的值小于或等于0。
[0055]

(mvlx[1]》》2)+npbh+yb1+offsety的值小于或等于0。
[0056]

以下条件应当为真:
[0057]
(xpb+(mvlx[0]》》2)+npbsw

1+offsetx)/ctbsizey

xcb/ctbsizey《=ycb/ctbsizey

(ypb+(mvlx[1]》》2)+npbsh

1+offsety)/ctbsizey
ꢀꢀ
(8-106)
[0058]
因此,不会发生参考块与当前块重叠或者参考块在图片之外的情况。不需要填充参考或预测块。
[0059]
2.4.vvc测试模型中的cpr/ibc
[0060]
在当前的vvc测试模型(即,vtm-3.0设计)中,整个参考块应该具有当前编解码树单元(coding tree unit,ctu),并且不与当前块重叠。因此,不需要填充参考或预测块。
[0061]
当启用双树(dual tree)时,从亮度ctu到度ctu,分割结构可以不同。因此,对于4:2:0彩格式,一个度块(例如,cu)可以对应于已经被划分为多个亮度cu的一个共位亮度区域。
[0062]
当以下条件应当为真时,度块只能以cpr模式进行编解码:
[0063]
1)共位亮度块内的每个亮度cu都应当以cpr模式进行编解码
[0064]
2)亮度4
×
4块的bv中的每一个首先被转换为度块的bv,并且度块的bv是有效bv。
[0065]
如果两个条件中的任何一个为假(false),度块不应以cpr模式进行编解码。
[0066]
注意,“有效bv”的定义具有以下约束:
[0067]
1)由bv标识的参考块内的所有样点应当在受限的搜索范围内(例如,在当前vvc设计中,应当在相同ctu内)。
[0068]
2)由bv标识的参考块内的所有样点都已经被重构。
[0069]
2.5.jvet-l0297/jvet-m0407/jvet-m0408中的cpr/ibc
[0070]
在vtm3.0中,用于cpr/ibc的参考区域被限制到当前ctu,其多达128
×
128。jvet-l0297/jvet-m0407/jvet-m0408呈现了方法来动态改变参考区域,以重用存储器来存储用于cpr/ibc的参考样点,使得cpr/ibc块可以具有更多的参考候选,而用于cpr/ibc的参考缓冲区可以保持或从一个ctu减少。
[0071]
图8示出了一种方法,其中块为64
×
64,并且ctu包含4个64
×
64块。当对64
×
64块进行编解码时,先前的3个64
×
64块可以被用作参考。通过这样做,解码器只需要存储4个64
×
64块来支持cpr/ibc。vtm4.0中采用了以上方法。
[0072]
假设当前亮度cu相对于图片的左上角的位置为(x,y),并且块矢量为(bvx,bvy)。在当前设计中,bv是否有效可以通过亮度位置((x+bvx)》》6《《6+(1《《7),(y+bvy)》》6《《6)还未被重构并且((x+bvx)》》6《《6+(1《《7),(y+bvy)》》6《《6)不等于(x》》6《《6,y》》6《《6)进行判断。
[0073]
2.6.jvet-o1170中提出的虚拟ibc缓冲区
[0074]
引入了虚拟缓冲区概念来帮助描述ibc预测模式的参考区域。对于ctu尺寸为ctbsize,表示wibcbuf=128*128/ctbsize,并且定义虚拟ibc缓冲区ibcbuf,其中宽度为wibcbuf,且高度为ctbsize。因此,
[0075]

对于ctu尺寸为128x128,ibcbuf的尺寸也为128x128。
[0076]

对于ctu尺寸为64x64,ibcbuf的尺寸为256x64。
[0077]

对于ctu尺寸为32x32,ibcbuf的尺寸为512x32。
[0078]
注意,vpdu宽度和高度为min(ctbsize,64)。表示wv=min(ctbsize,64)。
[0079]
虚拟ibc缓冲区ibcbuf被维护如下。
[0080]
1)在解码每个ctu行的开始,用值(-1)刷新整个ibcbuf。
[0081]
2)在解码相对于图片的左上角的vpdu(xvpdu,yvpdu)的开始,设置ibcbuf[x][y]=-1,其中x=xvpdu%wibcbuf,

,xvpdu%wibcbuf+wv–
1;y=yvpdu%ctbsize,

,yvpdu%ctbsize+wv–
1。
[0082]
3)在解码包含相对于图片的左上角的(x,y)的cu之后,设置
[0083]
ibcbuf[x%wibcbuf][y%ctbsize]=recsample[x][y]
[0084]
因此比特流约束可以简单地描述为
[0085]
比特流一致性的要求是,对于bv,ibcbuf[(x+bv[0])%wibcbuf][(y+bv[1])%ctbsize]不应当等于-1。
[0086]
利用ibc参考缓冲区的概念,它还通过避免参考帧间插值和运动补偿过程(包括子块过程),简化了解码过程的文本。
[0087]
2.7.vpdu
[0088]
虚拟流水线数据单元(vpdu)被定义为图片中的非重叠单元。在硬件解码器中,由多个流水线级同时处理连续的vpdu。在大多数流水线级中,vpdu尺寸大致与缓冲区尺寸成比例,因此保持vpdu尺寸较小是很重要的。在大多数硬件解码器中,vpdu尺寸可以被设置为最大变换块(tb)尺寸。然而,在vvc中,三叉树(tt)和二叉树(bt)分割可能导致vpdu尺寸的增加。
[0089]
为了将vpdu尺寸保持为64x64个亮度样点,在vtm5中应用了以下标准分割限制(带有语法信令修改):
[0090]

对于宽度或高度、或宽度和高度等于128的cu,不允许tt划分。
[0091]

对于n≤64的128xn cu(即,宽度等于128,并且高度小于128),不允许水平bt。
[0092]

对于n≤64的nx128 cu(即,高度等于128,并且宽度小于128),不允许垂直bt。
[0093]
在vvc中,通常约定在亮度样点中,vpdu的宽度和高度为min(64,ctbsizey)。因此,对于ctb/ctu尺寸为64x64、128x128或256x256,vpdu尺寸为64x64。对于ctb/ctu尺寸为32x32,vpdu尺寸为32x32。
[0094]
2.8.idf p1809118901h和p1907355701h中用于帧内块复制的缓冲区管理和块矢
量编解码
[0095]
在那些idf中,描述了各种ibc缓冲区和对应的管理。
[0096]
2.9.jvet-q2001-ve中关于ibc的当前文本
[0097]
8.6.2在ibc预测模式下编解码的编解码单元的解码过程
[0098]
8.6.2.1在ibc预测模式下编解码的编解码单元的通用解码过程
[0099]
该过程的输入为:
[0100]

亮度位置(xcb,ycb),指定当前编解码块相对于当前图片的左上亮度样点的左上样点,
[0101]

变量cbwidth,指定亮度样点中的当前编解码块的宽度,
[0102]

变量cbheight,指定亮度样点中的当前编解码块的高度,
[0103]

变量treetype,指定使用单树还是双树,并且如果使用双树,则指定当前树对应于亮度分量还是度分量。
[0104]
该过程的输出为环路滤波之前的修改的重构图片。
[0105]
调用如条款8.7.1所指定的量化参数的推导过程,其中以亮度位置(xcb,ycb)、亮度样点中的当前编解码块的宽度cbwidth、亮度样点中的当前编解码块的高度cbheight、以及变量treetype作为输入。
[0106]
变量isgt4by4被推导如下:
[0107]
isgt4by4=(cbwidth*cbheight)》16
ꢀꢀꢀꢀꢀꢀꢀꢀ
(1111)
[0108]
在ibc预测模式下编解码的编解码单元的解码过程由以下有序步骤组成:
[0109]
1.当前编解码单元的块矢量分量被推导如下:
[0110]

调用如条款8.6.2.1所指定的块矢量分量的推导过程,其中以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth和亮度编解码块高度cbheight作为输入,并且以亮度块矢量bvl作为输出。
[0111]

当treetype等于single_tree时,调用如条款8.6.2.5所指定的度块矢量的推导过程,其中以亮度块矢量bvl作为输入,并且以度块矢量bvc作为输出。
[0112]
2.当前编解码单元的预测样点被推导如下:
[0113]

调用如条款8.6.3.1所指定的ibc块的解码过程,其中以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth和亮度编解码块高度cbheight、亮度块矢量bvl、设置为等于0的变量cidx作为输入,并且以作为预测亮度样点的(cbwidth)x(cbheight)阵列predsamples
l
的ibc预测样点(predsamples)作为输出。
[0114]

当treetype等于single_tree时,当前编解码单元的预测样点被推导如下:
[0115]

调用如条款8.6.3.1所指定的ibc块的解码过程,其中以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth和亮度编解码块高度cbheight、度块矢量bvc、以及设置为等于1的变量cidx作为输入,并且以作为度分量cb的预测度样点的(cbwidth/subwidthc)x(cbheight/subheightc)阵列predsamples
cb
的ibc预测样点(predsamples)作为输出。
[0116]

调用如条款8.6.3.1所指定的ibc块的解码过程,其中以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth和亮度编解码块高度cbheight、度块矢量bvc、以及设置为等于2的变量cidx作为输入,并且以作为度分量cr的预测度样点的(cbwidth/
subwidthc)x(cbheight/subheightc)阵列predsamples
cr
的ibc预测样点(predsamples)作为输出。
[0117]
3.当前编解码单元的残差样点被推导如下:
[0118]

调用如条款8.5.8所指定的在帧间预测模式下编解码的编解码块的残差信号的解码过程,其中以设置为等于亮度位置(xcb,ycb)的位置(xtb0,ytb0)、设置为等于亮度编解码块宽度cbwidth的宽度ntbw、设置为等于亮度编解码块高度cbheight的高度ntbh、以及设置为等于0的变量cidx作为输入,并且以阵列ressamples
l
作为输出。
[0119]

当treetype等于single_tree时,调用如条款8.5.8所指定的在帧间预测模式下编解码的编解码块的残差信号的解码过程,其中以设置为等于度位置(xcb/subwidthc,ycb/subheightc)的位置(xtb0,ytb0)、设置为等于度编解码块宽度cbwidth/subwidthc的宽度ntbw、设置为等于度编解码块高度cbheight/subheightc的高度ntbh、以及设置为等于1的变量cidx作为输入,并且以阵列ressamples
cb
作为输出。
[0120]

当treetype等于single_tree时,调用如条款8.5.8所指定的在帧间预测模式下编解码的编解码块的残差信号的解码过程,其中以设置为等于度位置(xcb/subwidthc,ycb/subheightc)的位置(xtb0,ytb0)、设置为等于度编解码块宽度cbwidth/subwidthc的宽度ntbw、设置为等于度编解码块高度cbheight/subheightc的高度ntbh、以及设置为等于2的变量cidx作为输入,并且以阵列ressamples
cr
作为输出。
[0121]
4.当前编解码单元的重构样点被推导如下:
[0122]

调用如条款8.7.5所指定的彩分量的图片重构过程,其中以设置为等于(xcb,ycb)的块位置(xcurr,ycurr)、设置为等于cbwidth的块宽度ncurrsw、设置为等于cbheight的块高度ncurrsh、设置为等于0的变量cidx、设置为等于predsamples
l
的(cbwidth)x(cbheight)阵列predsamples、以及设置为等于ressamples
l
的(cbwidth)x(cbheight)阵列ressamples作为输入,并且输出为环路滤波之前的修改的重构图片。
[0123]

当treetype等于single_tree时,调用如条款8.7.5所指定的彩分量的图片重构过程,其中以设置为等于(xcb/subwidthc,ycb/subheightc)的块位置(xcurr,ycurr)、设置为等于cbwidth/subwidthc的块宽度ncurrsw、设置为等于cbheight/subheightc的块高度ncurrsh、设置为等于1的变量cidx、设置为等于predsamples
cb
的(cbwidth/subwidthc)x(cbheight/subheightc)阵列predsamples、以及设置为等于ressamples
cb
的(cbwidth/subwidthc)x(cbheight/subheightc)阵列ressamples作为输入,并且输出为环路滤波之前的修改的重构图片。
[0124]

当treetype等于single_tree时,调用如条款8.7.5所指定的彩分量的图片重构过程,调用如条款8.7.5所指定的彩分量的图片重构过程,其中以设置为等于(xcb/subwidthc,ycb/subheightc)的块位置(xcurr,ycurr)、设置为等于cbwidth/subwidthc的块宽度ncurrsw、设置为等于cbheight/subheightc的块高度ncurrsh、设置为等于2的变量cidx、设置为等于predsamples
cr
的(cbwidth/subwidthc)x(cbheight/subheightc)阵列predsamples、以及设置为等于ressamples
cr
的(cbwidth/subwidthc)x(cbheight/subheightc)阵列ressamples作为输入,并且输出为环路滤波之前的修改的重构图片。
[0125]
8.6.3 ibc块的块矢量分量的推导过程
[0126]
8.6.3.1通用
[0127]
该过程的输入为:
[0128]

当前亮度编解码块相对于当前图片的左上亮度样点的左上样点的亮度位置(xcb,ycb),
[0129]

变量cbwidth,指定亮度样点中的当前编解码块的宽度,
[0130]

变量cbheight,指定亮度样点中的当前编解码块的高度。
[0131]
该过程的输出为:
[0132]

1/16分数样点精度的亮度块矢量bvl。
[0133]
亮度块矢量mvl被推导如下:
[0134]

调用如条款8.6.2.2所指定的ibc亮度块矢量预测的推导过程,其中以亮度位置(xcb,ycb)、变量cbwidth和cbheight作为输入,并且输出为亮度块矢量bvl。
[0135]

当general_merge_flag[xcb][ycb]等于0时,以下适用:
[0136]
1.变量bvd被推导如下:
[0137]
bvd[0]=mvdl0[xcb][ycb][0]
ꢀꢀꢀꢀꢀꢀ
(1112)
[0138]
bvd[1]=mvdl0[xcb][ycb]1.ꢀꢀꢀꢀꢀꢀꢀꢀ
(1113)
[0139]
2.调用如条款8.5.2.14所指定的运动矢量的取整过程,其中以设置为等于bvl的mvx、设置为等于amvrshift的rightshift、以及设置为等于amvrshift的leftshift作为输入,并且以取整的bvl作为输出。
[0140]
3.亮度块矢量bvl被修改如下:
[0141]
u[0]=(bvl[0]+bvd[0]+2
18
)%2
18
ꢀꢀꢀꢀꢀ
(1114)
[0142]
bvl[0]=(u[0]》=2
17
)?(u[0]-2
18
):u[0]
ꢀꢀ
(1115)
[0143]
u[1]=(bvl[1]+bvd[1]+2
18
)%2
18
ꢀꢀꢀꢀ
(1116)
[0144]
bvl[1]=(u[1]》=2
17
)?(u[1]-2
18
):u1.ꢀꢀ
(1117)
[0145]
注1

如上指定的bvl[0]和bvl[1]的结果值将始终在-2
17
到2
17-1的范围(包括-2
17
和2
17-1)内。
[0146]
当isgt4by4等于true时,用亮度块矢量bvl调用如条款8.6.2.6所指定的基于历史的块矢量预测值列表的更新过程。
[0147]
比特流一致性的要求是亮度块矢量bvl应当遵守以下约束:
[0148]

ctbsizey大于或等于((ycb+(bvl[1]》》4))&(ctbsizey-1))+cbheight。
[0149]

对于x=xcb..xcb+cbwidth-1并且y=ycb..ycb+cbheight-1,ibcvirbuf[0][(x+(bvl[0]》》4))&(ibcbufwidthy-1)][(y+(bvl[1]》》4))&(ctbsizey-1)]不应当等于-1。
[0150]
8.6.3.2 ibc亮度块矢量预测的推导过程
[0151]
仅当cupredmode[0][xcb][ycb]等于mode_ibc时,才调用该过程,其中(xcb,ycb)指定当前亮度编解码块相对于当前图片的左上亮度样点的左上样点。
[0152]
该过程的输入为:
[0153]

当前亮度编解码块相对于当前图片的左上亮度样点的左上样点的亮度位置(xcb,ycb),
[0154]

变量cbwidth,指定亮度样点中的当前编解码块的宽度,
[0155]

变量cbheight,指定亮度样点中的当前编解码块的高度。
[0156]
该过程的输出为:
[0157]

1/16分数样点精度的亮度块矢量bvl。
[0158]
亮度块矢量bvl通过以下有序步骤来推导:
[0159]
1.当isgt4by4等于true时,调用如条款8.6.2.3所指定的从邻近编解码单元的、空域块矢量候选的推导过程,其中以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth和高度cbheight作为输入,并且输出为可用性标志availableflaga1、availableflagb1、以及块矢量bva1和bvb1。
[0160]
2.当isgt4by4等于true时,块矢量候选列表bvcandlist被构建如下:
[0161]
i=0
[0162]
if(availableflaga1)
[0163]
bvcandlist[i++]=bva1ꢀꢀꢀꢀ
(1118)
[0164]
if(availableflagb1)
[0165]
bvcandlist[i++]=bvb1[0166]
3.变量numcurrcand被推导如下:
[0167]

isgt4by4等于true,numcurrcand被设置为等于bvcandlist中的merge候选的数量。
[0168]

否则(isgt4by4等于false),numcurrcand被设置为等于0。
[0169]
4.当numcurrcand小于maxnumibcmergecand并且numhmvpibccand大于0时,调用如条款8.6.2.4所指定的ibc基于历史的块矢量候选的推导过程,其中以bvcandlist和numcurrcand作为输入,并且以修改的bvcandlist和numcurrcand作为输出。
[0170]
5.当numcurrcand小于maxnumibmergecand时,以下适用,直到numcurrcand等于maxnumibcmergecand:
[0171]

bvcandlist[numcurrcand][0]被设置为等于0。
[0172]

bvcandlist[numcurrcand][1]被设置为等于0。
[0173]

numcurrcand增加1。
[0174]
6.变量bvidx被推导如下:
[0175]
bvidx=general_merge_flag[xcb][ycb]?merge_idx[xcb][ycb]:mvp_l0_flag[xcb][ycb]
ꢀꢀꢀꢀ
(1119)
[0176]
7.进行以下赋值:
[0177]
bvl[0]=bvcandlist[mvidx][0]
ꢀꢀꢀꢀ
(1120)
[0178]
bvl[1]=bvcandlist[mvidx]1.ꢀꢀꢀꢀ
(1121)
[0179]
8.6.3.3 ibc空域块矢量候选的推导过程
[0180]
该过程的输入为:
[0181]

当前亮度编解码块相对于当前图片的左上亮度样点的左上样点的亮度位置(xcb,ycb),
[0182]

变量cbwidth,指定亮度样点中的当前编解码块的宽度,
[0183]

变量cbheight,指定亮度样点中的当前编解码块的高度。
[0184]
该过程的输出如下:
[0185]

邻近编解码单元的可用性标志availableflaga1和availableflagb1,
[0186]

邻近编解码单元的1/16分数样点精度的块矢量bva1和bvb1,对于
availableflaga1和mva1的推导,以下适用:
[0187]

邻近亮度编解码块内的亮度位置(xnba1,ynba1)被设置为等于(xcb-1,ycb+cbheight-1)。
[0188]

调用如条款6.4.4所指定的邻近块可用性的推导过程,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、邻近亮度位置(xnba1,ynba1)、设置为等于true的checkpredmodey、以及设置为等于0的cidx作为输入,并且输出被赋值给块可用性标志availablea1。
[0189]

变量availableflaga1和bva1被推导如下:
[0190]

如果availablea1等于false,则availableflaga1被设置为等于0,并且bva1的两个分量都被设置为等于0。
[0191]

否则,availableflaga1被设置为等于1,并进行以下赋值:
[0192]
bva1=mvl0[xnba1][ynba1]
ꢀꢀꢀꢀ
(1122)
[0193]
对于availableflagb1和bvb1的推导,以下适用:
[0194]

邻近亮度编解码块内的亮度位置(xnbb1,ynbb1)被设置为等于(xcb+cbwidth-1,ycb-1)。
[0195]

调用如条款6.4.4所指定的邻近块可用性的推导过程,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、邻近亮度位置(xnbb1,ynbb1)、设置为等于true的checkpredmodey、以及设置为等于0的cidx作为输入,并且输出被赋值给块可用性标志availableb1。
[0196]

变量availableflagb1和bvb1被推导如下:
[0197]

如果以下条件中的一个或多个为真,则availableflagb1被设置为等于0,并且bvb1的两个分量都被设置为等于0:
[0198]

availableb1等于false。
[0199]

availablea1等于true,并且亮度位置(xnba1,ynba1)和(xnbb1,ynbb1)具有相同的块矢量。
[0200]

否则,availableflagb1被设置为等于1,并进行以下赋值:
[0201]
bvb1=mvl0[xnbb1][ynbb1]
ꢀꢀꢀꢀ
(1123)
[0202]
8.6.3.4 ibc基于历史的块矢量候选的推导过程
[0203]
该过程的输入为:
[0204]

块矢量候选列表bvcandlist,
[0205]

列表中的可用块矢量候选的数量numcurrcand。
[0206]
该过程的输出为:
[0207]

修改的块矢量候选列表bvcandlist,
[0208]

列表中的运动矢量候选的修改数量numcurrcand。
[0209]
变量ispruneda1和isprunedb1都被设置为等于false。
[0210]
对于hmvpibccandlist[hmvpidx]中的每个候选(其中索引hmvpidx=1..numhmvpibccand),重复以下有序步骤,直到numcurrcand等于maxnumibcmergecand:
[0211]
1.变量samemotion被推导如下:
[0212]

如果对于任何块矢量候选n(其中n为a1或b1),所有以下条件都为真,则
samemotion和isprunedn都被设置为等于true:
[0213]

isgt4by4等于true。
[0214]

hmvpidx等于1。
[0215]

候选hmvpibccandlist[numhmvpibccand-hmvpidx]等于块矢量候选n。
[0216]

isprunedn等于false。
[0217]

否则,samemotion被设置为等于false。
[0218]
2.当samemotion等于false时,候选hmvpibccandlist[numhmvpibccand-hmvpidx]被添加到块矢量候选列表,如下:
[0219]
bvcandlist[numcurrcand++]=
[0220]
hmvpibccandlist[numhmvpibccand-hmvpidx]
ꢀꢀꢀꢀ
(1124)
[0221]
8.6.3.5度块矢量的推导过程
[0222]
该过程的输入为:
[0223]

1/16分数样点精度的亮度块矢量bvl。
[0224]
该过程的输出为1/32分数样点精度的度块矢量bvc。
[0225]
从对应的亮度块矢量推导度块矢量。
[0226]
度块矢量bvc被推导如下:
[0227]
bvc[0]=((bvl[0]》》(3+subwidthc))*32
ꢀꢀꢀꢀ
(1125)
[0228]
bvc[1]=((bvl[1]》》(3+subheightc))*32
ꢀꢀꢀꢀ
(1126)
[0229]
8.6.3.6基于历史的块矢量预测值候选列表的更新过程
[0230]
该过程的输入为:
[0231]

1/16分数样点精度的亮度块矢量bvl。
[0232]
候选列表hmvpibccandlist通过以下有序步骤来修改:
[0233]
1.变量identicalcandexist被设置为等于false,并且变量removeidx被设置为等于0。
[0234]
2.当numhmvpibccand大于0时,对于每个索引(其中hmvpidx=0..numhmvpibccand-1),以下步骤适用,直到identicalcandexist等于true:
[0235]

当bvl等于hmvpibccandlist[hmvpidx]时,identicalcandexist被设置为等于true,并且removeidx被设置为等于hmvpidx。
[0236]
3.候选列表hmvpibccandlist被更新如下:
[0237]

如果identicalcandexist等于true或者numhmvpibccand等于5,则以下适用:
[0238]

对于每个索引i(其中i=(removeidx+1)..(numhmvpibccand-1)),hmvpibccandlist[i-1]被设置为等于hmvpibccandlist[i]。
[0239]

hmvpibccandlist[numhmvpibccand-1]被设置为等于bvl。
[0240]

否则(identicalcandexist等于false,并且numhmvpibccand小于5),以下适用:
[0241]

hmvpibccandlist[numhmvpibccand++]被设置为等于bvl。
[0242]
8.6.4 ibc块的解码过程
[0243]
8.6.4.1通用
[0244]
当对在ibc预测模式下编解码的编解码单元进行解码时,调用该过程。
[0245]
该过程的输入为:
[0246]

亮度位置(xcb,ycb),指定当前编解码块相对于当前图片的左上亮度样点的左上样点,
[0247]

变量cbwidth,指定亮度样点中的当前编解码块的宽度,
[0248]

变量cbheight,指定亮度样点中的当前编解码块的高度,
[0249]

块矢量bv,
[0250]

变量cidx,指定当前块的彩分量索引。
[0251]
该过程的输出为:
[0252]

预测样点的阵列predsamples。
[0253]
当cidx等于0时,对于x=xcb..xcb+cbwidth-1并且y=ycb..ycb+cbheight-1,以下适用:
[0254]
xvb=(x+(bv[0]》》4))&(ibcbufwidthy-1)
ꢀꢀꢀꢀ
(1127)
[0255]
yvb=(y+(bv[1]》》4))&(ctbsizey-1)
ꢀꢀꢀꢀ
(1128)
[0256]
predsamples[x][y]=ibcvirbuf[0][xvb][yvb]
ꢀꢀꢀꢀ
(1129)
[0257]
当cidx不等于0时,对于x=xcb/subwidthc..xcb/subwidthc+cbwidth/subwidthc-1并且y=ycb/subheightc..ycb/subheightc+cbheight/subheightc-1,以下适用:
[0258]
xvb=(x+(bv[0]》》5))&(ibcbufwidthc-1)
ꢀꢀꢀꢀ
(1130)
[0259]
yvb=(y+(bv[1]》》5))&((ctbsizey/subheightc)-1)
ꢀꢀ
(1131)
[0260]
predsamples[x][y]=ibcvirbuf[cidx][xvb][yvb]
ꢀꢀꢀꢀ
(1132)
[0261]
当cidx等于0时,对于x=0..cbwidth-1并且y=0..cbheight-1,进行以下赋值:
[0262]
mvl0[xcb+x][ycb+y]=bv
ꢀꢀꢀꢀ
(1133)
[0263]
mvl1[xcb+x][ycb+y]=0
ꢀꢀꢀꢀ
(1134)
[0264]
refidxl0[xcb+x][ycb+y]=-1
ꢀꢀꢀꢀ
(1135)
[0265]
refidxl1[xcb+x][ycb+y]=-1
ꢀꢀꢀꢀ
(1136)
[0266]
predflagl0[xcb+x][ycb+y]=0
ꢀꢀꢀꢀ
(1137)
[0267]
predflagl1[xcb+x][ycb+y]=0
ꢀꢀꢀꢀ
(1138)
[0268]
bcwidx[xcb+x][ycb+y]=0
ꢀꢀꢀꢀ
(1139)
[0269]
2.10.调板模式
[0270]
在vvc中,调板模式用于4:4:4简表中支持的所有度格式(即,4:4:4、4:2:0、4:2:2和单)中的屏幕内容编解码。当启用调板模式时,如果cu尺寸小于或等于64x64,则在cu级别发送标志,指示是否使用调板模式。调板编解码的编解码单元(cu)被视为除了帧内预测、帧间预测和帧内块复制(ibc)模式之外的预测模式。
[0271]
如果利用调板模式,cu中的样点值由代表性彩值集合表示。该集合被称为调板。对于样点值接近调板彩的位置,信令通知调板索引。也可以通过信令通知逸出(escape)符号来指定调板之外的样点。对于cu内使用逸出符号编解码的样点,使用(可能)量化分量值直接信令通知它们的分量值。这在图9中示出。
[0272]
对于调板的编解码,维护调板预测值。对于非波前情况,预测值在每个条带的开始被初始化为0,并且对于波前情况,在每个ctu行的开始被初始化为0。对于调板预测值中的每个条目,信令通知重用标志,以指示它是否是cu中的当前调板的一部分。使用零
的游程长度编解码传送重用标志。此后,信令通知新调板条目的数量和新调板条目的分量值。在对调板编解码cu进行编码之后,将使用当前调板来更新调板预测值,并且将在新调板预测值的结尾添加来自先前调板预测值的在当前调板中没有被重用的条目,直到达到允许的最大尺寸。针对每个cu信令通知逸出标志,以指示逸出符号是否存在于当前cu中。如果存在逸出符号,则调板表增加1,并且最后一个索引被指定为逸出符号。
[0273]
以与变换系数编解码中使用的系数组(cg)类似的方式,以调板模式编解码的cu被划分为多个基于线的系数组,每个系数组由m个样点(即,m=16)组成,其中逸出模式的索引游程、调板索引值和量化彩针对每个cg被顺序编码/解析。与hevc相同,可以应用水平或垂直遍历扫描来扫描样点,如图10所示。
[0274]
每个段中的调板游程编解码的编码顺序如下:对于每个样点位置,信令通知1个上下文编解码的二进制位run_copy_flag=0,以指示像素是否与先前的样点位置具有相同的模式,即,先前扫描的样点和当前样点是否都具有游程类型copy_above,或者先前扫描的样点和当前样点是否都具有游程类型index和相同的索引值。否则,信令通知run_copy_flag=1。如果当前样点和先前样点具有不同的模式,则信令通知一个上下文编解码的二进制位copy_above_palette_indices_flag,以指示当前样点的游程类型,即index或copy_above。这里,如果样点在第一行(水平遍历扫描)或第一列(垂直遍历扫描)中,则解码器不必解析游程类型,因为默认使用index模式。用相同的方式,如果先前解析的游程类型为copy_above,则解码器不必解析游程类型。在一次编解码通过中对样点的调板游程编解码之后,索引值(对于index模式)和量化的逸出彩被分组,并在另一次编解码通过中使用cabac旁路编解码进行编解码。上下文编解码二进制位和旁路编解码二进制位的这样的分离可以提高每个线cg内的吞吐量。
[0275]
对于具有双亮度/度树的条带,调板被单独应用于亮度(y分量)和度(cb和cr分量),其中亮度调板条目仅包含y值,并且度调板条目包含cb值和cr值。对于单树的条带,调板将被联合应用于y、cb、cr分量,即调板中的每个条目包含y、cb、cr值,除非当使用局部双树对cu进行编解码时,在这种情况下,对亮度和度的编解码被单独处理。在这种情况下,如果使用调板模式对对应的亮度或度块进行编解码,则其调板以与双树情况类似的方式被应用(这与非4:4:4编解码有关)。
[0276]
对于用双树编解码的条带,最大调板预测值尺寸为63,并且用于编解码当前cu的最大调板表尺寸为31。对于用双树编解码的条带,对于亮度调板和度调板中的每一个,最大预测值和调板表尺寸被减半,即,最大预测值尺寸为31,并且最大表尺寸为15。对于去方块,块边界侧上的调板编解码块不去方块。
[0277]
2.10.1非4:4:4内容的调板模式
[0278]
以与hevc scc中的调板模式类似的方式,针对所有度格式支持vvc中的调板模式。对于非4:4:4内容,应用以下定制:
[0279]
1.当信令通知给定样点位置的逸出值时,如果由于度子采样,该样点位置只有亮度分量而没有度分量,则仅信令通知亮度逸出值。这与hevc scc中相同。
[0280]
2.对于局部双树块,调板模式以与应用于单树块的调板模式相同的方式被应用于块,但有两个例外:
[0281]
a.调板预测值更新的过程稍微修改如下。由于局部双树块仅包含亮度(或度)
分量,因此预测值更新过程使用信令通知的亮度(或度)分量的值,并通过将其设置为默认值(1《《(分量比特深度-1))来填充“丢失的”度(或亮度)分量。
[0282]
b.最大调板预测值尺寸被保持为63(因为条带是使用单树进行编解码的),但是亮度/度块的最大调板表尺寸被保持为15(因为该块是使用单独的调板进行编解码的)。
[0283]
对于单格式的调板模式,调板编解码块中的彩分量的数量被设置为1而不是3。
[0284]
2.11.jvet-q2001-ve中关于调板编解码模式的当前文本
[0285]
2.11.1关于调板编解码模式的语法
[0286]
[0287]
[0288]
[0289][0290]
2.11.2调板编解码模式语义
[0291]
在以下语义中,阵列索引x0、y0指定所考虑的编解码块相对于图片的左上亮度样点的左上亮度样点的位置(x0,y0)。当treetype等于single_tree或dual_tree_luma时,阵列索引xc、yc指定相对于图片的左上亮度样点的样点的位置(xc,yc);以及当treetype等于dual_tree_chroma时,阵列索引xc、yc指定相对于图片的左上度样点的样点的位置(xc,yc)。阵列索引startcomp指定当前调板表的第一个彩分量。startcomp等于0指示y分量;startcomp等于1指示cb分量;startcomp等于2指示cr分量。numcomps指定当前调板表中的彩分量的数量。
[0292]
预测值调板由来自用于预测当前调板中的条目的先前编解码单元的调板条目组成。
[0293]
predictorpalettesize[startcomp]指定当前调板表的第一个彩分量startcomp的预测值调板的尺寸。predictorpalettesize[startcomp]如条款8.4.5.3所指定的来推导。
[0294]
palettepredictorentryreuseflags[i]等于1指定预测值调板中的第i个条目在当前调板中被重用。palettepredictorentryreuseflags[i]等于0指定预测值调板中的第i个条目不是当前调板中的条目。阵列palettepredictorentryreuseflags[i]的所有元素都被初始化为0。
[0295]
palette_predictor_run用于确定阵列palettepredictorentryreuseflags中非零条目前面的零的数量。
[0296]
比特流一致性的要求是palette_predictor_run的值应当在0到(predictorpalettesize[startcomp]-predictorentryidx)的范围(包括0和(predictorpalettesize[startcomp]-predictorentryidx))内,其中predictorentryidx对应于阵列palettepredictorentryreuseflags中的当前位置。变量numpredictedpaletteentries指定当前调板中从预测值调板中重用的条目的数量。numpredictedpaletteentries的值应当在0到maxnumpaletteentries的范围(包括0和maxnumpaletteentries)内。
[0297]
num_signalled_palette_entries指定当前调板中针对当前调板表的第一个彩分量startcomp显式地信令通知的条目的数量。
[0298]
当不存在num_signalled_palette_entries时,其被推断为等于0。
[0299]
变量currentpalettesize[startcomp]指定当前调板表的第一个彩分量startcomp的当前调板的尺寸,并且被推导如下:
[0300]
currentpalettesize[startcomp]=numpredictedpaletteentries+num_signalled_palette_entries (180)
[0301]
currentpalettesize[startcomp]的值应当在0到maxnumpaletteentries的范围(包括0和maxnumpaletteentries)内。
[0302]
new_palette_entries[cidx][i]指定彩分量cidx的第i个信令通知的调板条目的值。
[0303]
变量predictorpaletteentries[cidx][i]指定彩分量cidx的预测值调板中的第i个元素。
[0304]
变量currentpaletteentries[cidx][i]指定彩分量cidx的当前调板中的第i个元素,并且被推导如下:
[0305][0306]
palette_escape_val_present_flag等于1指定当前编解码单元包含至少一个逸出编解码样点。palette_escape_val_present_flag等于0指定在当前编解码单元中没有逸出编解码样点。当不存在时,palette_escape_val_present_flag的值被推断为等于1。
[0307]
变量maxpaletteindex指定当前编解码单元的调板索引的最大可能值。maxpaletteindex的值被设置为等于currentpalettesize[startcomp]-1+palette_escape_val_present_flag。
[0308]
palette_idx_idc是调板表currentpaletteentries的索引的指示。对于块中的第一个索引,palette_idx_idc的值应当在0到maxpaletteindex的范围(包括0和maxpaletteindex)内,并且对于该块中的剩余索引,palette_idx_idc的值应当在0到(maxpaletteindex-1)的范围(包括0和(maxpaletteindex-1))内。
[0309]
当不存在palette_idx_idc时,其被推断为等于0。
[0310]
palette_transpose_flag等于1指定应用垂直遍历扫描来扫描当前编解码单元中的样点的索引。palette_transpose_flag等于0指定应用水平遍历扫描来扫描当前编解码单元中的样点的索引。当不存在时,palette_transpose_flag的值被推断为等于0。
[0311]
阵列traversescanorder指定调板编解码的扫描顺序阵列。如果palette_transpose_flag等于0,则traversescanorder被赋值水平扫描顺序hortravscanorder,并且如果palette_transpose_flag等于1,则traversescanorder被赋值垂直扫描顺序vertravscanorder。
[0312]
run_copy_flag等于1指定如果copy_above_palette_indices_flag等于0,则调板游程类型与先前扫描位置处的游程类型相同,并且调板游程索引与先前扫描位置处的索引相同。否则,run_copy_flag等于0指定调板游程类型不同于先前扫描位置处的游程类型。
[0313]
copy_above_palette_indices_flag等于1指定如果使用水平遍历扫描,则调板索引等于上一行中的相同位置处的调板索引,或者如果使用垂直遍历扫描,则调板索
引等于左列中的相同位置处的调板索引。copy_above_palette_indices_flag等于0指定样点的调板索引的指示在比特流中被编解码或者被推断。
[0314]
变量copyaboveindicesflag[xc][yc]等于1指定调板索引从上一行(水平扫描)或左列(垂直扫描)中的调板索引复制。copyaboveindicesflag[xc][yc]等于0指定调板索引在比特流中被显式地编解码或者被推断。
[0315]
变量paletteindexmap[xc][yc]指定调板索引,其为由currentpaletteentries表示的阵列的索引。paletteindexmap[xc][yc]的值应当在0到maxpaletteindex的范围(包括0和maxpaletteindex)内。
[0316]
变量adjustedrefpaletteindex被推导如下:
[0317][0318][0319]
当copyaboveindicesflag[xc][yc]等于0时,变量currpaletteindex被推导如下:
[0320]
if(currpaletteindex》=adjustedrefpaletteindex)
[0321]
currpaletteindex++
ꢀꢀꢀꢀ
(183)
[0322]
palette_escape_val指定分量的量化的逸出编解码样点值。
[0323]
变量paletteescapeval[cidx][xc][yc]指定样点的逸出值,其paletteindexmap[xc][yc]等于maxpaletteindex,并且palette_escape_val_present_flag等于1。阵列索引
cidx指定彩分量。
[0324]
比特流一致性的要求是,对于cidx等于0,paletteescapeval[cidx][xc][yc]应当在0到(1《《(bitdepth+1))-1的范围(包括0和(1《《(bitdepth+1))-1)内,并且对于cidx不等于0,paletteescapeval[cidx][xc][yc]应当在0到(1《《(bitdepth+1))-1的范围(包括0和(1《《(bitdepth+1))-1)内。
[0325]
2.11.3调板模式的解码过程
[0326]
该过程的输入为:
[0327]

位置(xcbcomp,ycbcomp),指定当前编解码块相对于当前图片的左上样点的左上样点,
[0328]

变量treetype,指定使用单树还是双树,并且如果使用双树,则指定当前树对应于亮度分量还是度分量,
[0329]

变量cidx,指定当前块的彩分量,
[0330]

两个变量ncbw和ncbh,分别指定当前编解码块的宽度和高度。
[0331]
该过程的输出为阵列recsamples[x][y](其中x=0..ncbw-1,y=0..ncbh-1),指定块的重构样点值。
[0332]
根据treetype的值,变量startcomp、numcomps和maxnumpalettepredictorsize被推导如下:
[0333]

如果treetype等于single_tree:
[0334]
startcomp=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(430)
[0335]
numcomps=chromaarraytype==0?1:3
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(431)
[0336]
maxnumpalettepredictorsize=63
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(432)
[0337]

否则,treetype等于dual_tree_luma:
[0338]
startcomp=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(433)
[0339]
numcomps=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(434)
[0340]
maxnumpalettepredictorsize=31
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(435)
[0341]

否则,treetype等于dual_tree_chroma:
[0342]
startcomp=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(436)
[0343]
numcomps=2
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(437)
[0344]
maxnumpalettepredictorsize=31
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(438)
[0345]
根据cidx的值,变量nsubwidth和nsubheight被推导如下:
[0346]

如果cidx大于0并且startcomp等于0,则nsubwidth被设置为subwidthc,并且nsubheight被设置为subheightc。
[0347]

否则,nsubwidth被设置为1,并且nsubheight被设置为1。
[0348]
位置(xcbcomp,ycbcomp)处的重构样点阵列recsamples的(ncbw x ncbh)块由recsamples[x][y](x=0..nctbw-1,并且y=0..ncbh-1)表示,并且对于在0到ncbw-1的范围(包括0和ncbw-1)内的每个x和在0到ncbh-1的范围(包括0和ncbh-1)内的每个y,recsamples[x][y]的值被推导如下:
[0349]

变量xl、yl、xcbl和ycbl被推导如下:
[0350]
xl=x*nsubwidth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(439)
1)
ꢀꢀ
(452)
[0383]

变量currentpalettesize[0]、startcomp、numcomps和maxnumpalettepredictorsize被推导如下:
[0384]
currentpalettesize[0]=currentpalettesize[startcomp]
ꢀꢀ
(453)
[0385]
startcomp=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(454)
[0386]
numcomps=3
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(455)
[0387]
maxnumpalettepredictorsize=63
ꢀꢀꢀꢀꢀꢀꢀꢀ
(456)
[0388]
当以下条件中的一个为真时:
[0389]

cidx等于0,并且numcomps等于1;
[0390]

cidx等于2;
[0391]
值predictorpalettesize[startcomp]和阵列predictorpaletteentries被推导或修改如下:
[0392][0393][0394]
当qtbtt_dual_tree_intra_flag等于0或者slice_type不等于i时,以下适用:
[0395]
predictorpalettesize[1]=newpredictorpalettesize
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(458)
[0396]
比特流一致性的要求是,predictorpalettesize[startcomp]的值应当在0到
maxnumpalettepredictorsize的范围(包括0和maxnumpalettepredictorsize)内。
[0397]
3.由各种实施例解决的问题的示例
[0398]
在ibc虚拟缓冲区的当前设计中,存在一些问题。
[0399]
1)当当前cu大于一个vpdu时,即当前cu包括多个vpdu时,ibc虚拟缓冲区中的仅一个vpdu被重置。
[0400]
2)调板模式可以被进一步改进。
[0401]
4.实施例和技术的列表
[0402]
通过vsize表示vpdu的宽度和高度,例如vsize=min(64,ctbsizey),其中ctbsizey是亮度ctb/ctu宽度/高度。
[0403]
ibc缓冲区相关
[0404]
1.当块(cu/cb)尺寸大于vpdu尺寸时,ibc缓冲区中的所有对应的vpdu可以被重置。
[0405]
a.在一个示例中,对应的vpdu被定义为与映射到ibc缓冲区的cu重叠的vpdu。
[0406]
b.在一个示例中,所有对应的vpdu都被重置为-1。
[0407]
c.在一个示例中,ibc缓冲区内的区域的宽度被推导为max(vsize,块宽度)而不是vsize,其中该区域是需要被重置的区域。
[0408]
d.在一个示例中,ibc缓冲区内的区域的高度被推导为max(vsize,块高度)而不是vsize,其中该区域是需要被重置的区域。
[0409]
调板模式相关
[0410]
2.预测值调板中的调板预测值可以在编解码新块之前被更新
[0411]
a.在一个示例中,调板预测值可以使用在先前的调板编解码块中编解码的信息来更新。
[0412]
b.在一个示例中,调板预测值可以使用先前与相同条目一起使用的调板预测值来更新。
[0413]
c.在一个示例中,可以在比特流中指示调板预测值与其更新值之间的差。
[0414]
5.实施例示例
[0415]
5.1.实施例#1
[0416]
用粗体下划线标记的改变基于jvet-q2001-vd。
[0417]
7.4.11.5编解码单元语义
[0418]
当resetibcbuf等于1时,以下适用:
[0419]

对于x=0..ibcbufwidthy-1并且y=0..ctbsizey-1,进行以下赋值:
[0420]
ibcvirbuf[0][x][y]=-1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(178)
[0421]

变量resetibcbuf被设置为等于0。
[0422]
当x0%vsize等于0并且y0%vsize等于0时,对于并且并且进行以下赋值:
[0423]
ibcvirbuf[0][(x+(ibcbufwidthy》》1))%ibcbufwidthy][y%ctbsizey]=-1
ꢀꢀ
(179)
[0424]
图1是示出可以在其中实施本文公开的各种技术的示例视频处理系统1900的框图。各种实施方式可以包括系统1900的一些或所有组件。系统1900可以包括用于接收视频
内容的输入1902。视频内容可以以例如8或10比特多分量像素值的原始或未压缩格式而接收,或者可以是压缩或编码格式。输入1902可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(pon)等的有线接口和诸如wi-fi或蜂窝接口的无线接口。
[0425]
系统1900可以包括可以实施本文档中描述的各种编解码或编码方法的编解码组件1904。编解码组件1904可以将来自输入1902的视频的平均比特率减小到编解码组件1904的输出,以产生视频的编解码表示。编解码技术因此有时被称为视频压缩或视频转码技术。编解码组件1904的输出可以被存储,或者经由如由组件1906表示的通信连接而发送。在输入1902处接收的视频的存储或通信传送的比特流(或编解码)表示可以由组件1908用于生成像素值或传送到显示接口1910的可显示视频。从比特流表示生成用户可视视频的过程有时被称为视频解压缩。此外,虽然某些视频处理操作被称为“编解码”操作或工具,但是将理解,编解码工具或操作在编码器处被使用,并且反转编解码结果的对应的解码工具或操作将由解码器执行。
[0426]
外围总线接口或显示接口的示例可以包括通用串行总线(usb)、或高清晰度多媒体接口(hdmi)、或显示端口(displayport)等。存储接口的示例包括sata(串行高级技术附件)、pci、ide接口等。本文档中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型电脑、智能电话、或能够执行数字数据处理和/或视频显示的其他设备。
[0427]
图2是视频处理装置3600的框图。装置3600可以用于实施本文描述的一种或多种方法。装置3600可以体现在智能手机、平板电脑、计算机、物联网(iot)接收器等中。装置3600可以包括一个或多个处理器3602、一个或多个存储器3604和视频处理硬件3606。(多个)处理器3602可以被配置为实施本文档中描述的一种或多种方法。存储器(多个存储器)3604可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件3606可以用于在硬件电路系统中实施本文档中描述的一些技术。
[0428]
图4是示出可以利用本公开的技术的示例视频编解码系统100的框图。
[0429]
如图4所示,视频编解码系统100可以包括源设备110和目标设备120。源设备110生成编码视频数据,其中该源设备110可以被称为视频编码设备。目标设备120可以解码由源设备110生成的编码视频数据,其中该目标设备120可以被称为视频解码设备。
[0430]
源设备110可以包括视频源112、视频编码器114和输入/输出(i/o)接口116。
[0431]
视频源112可以包括源,诸如视频捕捉设备、从视频内容提供器接收视频数据的接口、和/或用于生成视频数据的计算机图形系统、或这些源的组合。视频数据可以包括一个或多个图片。视频编码器114对来自视频源112的视频数据进行编码,以生成比特流。比特流可以包括形成视频数据的编解码表示的比特序列。比特流可以包括编解码图片和相关数据。编解码图片是图片的编解码表示。相关数据可以包括序列参数集、图片参数集和其他语法结构。i/o接口116可以包括调制器/解调器(调制解调器)和/或发射器。编码视频数据可以通过网络130a经由i/o接口116直接发送到目标设备120。编码视频数据也可以存储在存储介质/服务器130b上,以供目标设备120访问。
[0432]
目标设备120可以包括i/o接口126、视频解码器124和显示设备122。
[0433]
i/o接口126可以包括接收器和/或调制解调器。i/o接口126可以从源设备110或存储介质/服务器130b获取编码视频数据。视频解码器124可以对编码视频数据进行解码。显
示设备122可以向用户显示解码视频数据。显示设备122可以与目标设备120集成,或者可以在被配置为与外部显示设备接口的目标设备120的外部。
[0434]
视频编码器114和视频解码器124可以根据视频压缩标准进行操作,例如高效视频编解码(hevc)标准、通用视频编解码(vvc)标准和其他当前和/或另外的标准。
[0435]
图5是示出视频编码器200的示例的框图,该视频编码器200可以是图4所示的系统100中的视频编码器114。
[0436]
视频编码器200可以被配置为执行本公开的任何或所有技术。在图5的示例中,视频编码器200包括多个功能组件。本公开中描述的技术可以在视频编码器200的各种组件之间共享。在一些示例中,处理器可以被配置为执行本公开中描述的任何或所有技术。
[0437]
视频编码器200的功能组件可以包括分割单元201、预测单元202(其可以包括模式选择单元203、运动估计单元204、运动补偿单元205和帧内预测单元206)、残差生成单元207、变换单元208、量化单元209、逆量化单元210、逆变换单元211、重构单元212、缓冲区213和熵编码单元214。
[0438]
在其他示例中,视频编码器200可以包括更多、更少或不同的功能组件。在示例中,预测单元202可以包括帧内块复制(ibc)单元。ibc单元可以执行ibc模式下的预测,其中至少一个参考图片是当前视频块所在的图片。
[0439]
此外,诸如运动估计单元204和运动补偿单元205的一些组件可以高度集成,但是出于解释的目的,在图5的示例中单独表示。
[0440]
分割单元201可以将图片分割为一个或多个视频块。视频编码器200和视频解码器300可以支持各种视频块尺寸。
[0441]
模式选择单元203可以基于误差结果选择编解码模式(例如,帧内或帧间)之一,并且将作为结果的帧内编解码块或帧间编解码块提供给残差生成单元207以生成残差块数据,以及提供给重构单元212以重构编码块以用作参考图片。在一些示例中,模式选择单元203可以选择帧内和帧间预测模式的组合(ciip),其中预测基于帧间预测信号和帧内预测信号。在帧间预测的情况下,模式选择单元203还可以选择块的运动矢量的分辨率(例如,子像素或整数像素精度)。
[0442]
为了对当前视频块执行帧间预测,运动估计单元204可以通过将来自缓冲区213的一个或多个参考帧与当前视频块进行比较,来生成当前视频块的运动信息。运动补偿单元205可以基于运动信息和来自缓冲区213的除了与当前视频块相关联的图片之外的图片的解码样点,来确定当前视频块的预测视频块。
[0443]
运动估计单元204和运动补偿单元205可以对当前视频块执行不同的操作,例如,依赖于当前视频块是在i条带、p条带还是b条带中。
[0444]
在一些示例中,运动估计单元204可以对当前视频块执行单向预测,并且运动估计单元204可以为当前视频块的参考视频块搜索列表0或列表1的参考图片。运动估计单元204然后可以生成指示列表0或列表1中的参考图片的参考索引,该参考索引包含参考视频块和指示当前视频块和参考视频块之间的空域位移的运动矢量。运动估计单元204可以输出参考索引、预测方向指示符和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前块的预测视频块。
[0445]
在其他示例中,运动估计单元204可以对当前视频块执行双向预测,运动估计单元
204可以在列表0中的参考图片中搜索当前视频块的参考视频块,并且还可以在列表1中搜索当前视频块的另一个参考视频块。运动估计单元204然后可以生成参考索引,该参考索引指示包含参考视频块的列表0和列表1中的参考图片以及指示参考视频块和当前视频块之间的空域位移的运动矢量。运动估计单元204可以输出当前视频块的参考索引和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前视频块的预测视频块。
[0446]
在一些示例中,运动估计单元204可以输出完整的运动信息集,以用于解码器的解码处理。
[0447]
在一些示例中,运动估计单元204可以不输出当前视频的完整的运动信息集。而是运动估计单元204可以参考另一个视频块的运动信息信令通知当前视频块的运动信息。例如,运动估计单元204可以确定当前视频块的运动信息与邻近视频块的运动信息足够相似。
[0448]
在一个示例中,运动估计单元204可以在与当前视频块相关联的语法结构中指示值,该值向视频解码器300指示当前视频块具有与另一个视频块相同的运动信息。
[0449]
在另一个示例中,运动估计单元204可以在与当前视频块相关联的语法结构中标识另一视频块和运动矢量差(mvd)。运动矢量差指示当前视频块的运动矢量和所指示的视频块的运动矢量之间的差。视频解码器300可以使用所指示的视频块的运动矢量和运动矢量差来确定当前视频块的运动矢量。
[0450]
如上所讨论的,视频编码器200可以预测性地信令通知运动矢量。可以由视频编码器200实施的预测信令通知技术的两个示例包括高级运动矢量预测(amvp)和merge模式信令通知。
[0451]
帧内预测单元206可以对当前视频块执行帧内预测。当帧内预测单元206对当前视频块执行帧内预测时,帧内预测单元206可以基于同一图片中的其他视频块的解码样点来生成当前视频块的预测数据。当前视频块的预测数据可以包括预测视频块和各种语法元素。
[0452]
残差生成单元207可以通过从当前视频块中减去(例如,由减号指示)当前视频块的(多个)预测视频块来生成当前视频块的残差数据。当前视频块的残差数据可以包括与当前视频块中样点的不同样点分量相对应的残差视频块。
[0453]
在其他示例中,例如在跳过模式下,对于当前视频块可能没有残差数据,并且残差生成单元207可能不执行减去操作。
[0454]
变换处理单元208可以通过将一个或多个变换应用于与当前视频块相关联的残差视频块来为当前视频块生成一个或多个变换系数视频块。
[0455]
在变换处理单元208生成与当前视频块相关联的变换系数视频块之后,量化单元209可以基于与当前视频块相关联的一个或多个量化参数(qp)值来量化与当前视频块相关联的变换系数视频块。
[0456]
逆量化单元210和逆变换单元211可以分别对变换系数视频块应用逆量化和逆变换,以从变换系数视频块重构残差视频块。重构单元212可以将重构后的残差视频块添加到来自预测单元202生成的一个或多个预测视频块的对应样点,以产生与当前块相关联的重构视频块,用于存储在缓冲区213中。
[0457]
在重构单元212重构视频块之后,可以执行环路滤波操作,以减少视频块中的视频
块效应。
[0458]
熵编码单元214可以从视频编码器200的其他功能组件接收数据。当熵编码单元214接收到数据时,熵编码单元214可以执行一个或多个熵编码操作,以生成熵编码数据,并输出包括该熵编码数据的比特流。
[0459]
图6是示出视频解码器300的示例的框图,该视频解码器300可以是图4所示的系统100中的视频解码器114。
[0460]
视频解码器300可以被配置为执行本公开的任何或所有技术。在图6的示例中,视频解码器300包括多个功能组件。本公开中描述的技术可以在视频解码器300的各种组件之间共享。在一些示例中,处理器可以被配置为执行本公开中描述的任何或所有技术。
[0461]
在图6的示例中,视频解码器300包括熵解码单元301、运动补偿单元302、帧内预测单元303、逆量化单元304、逆变换单元305、重构单元306和缓冲区307。在一些示例中,视频解码器300可以执行通常与针对视频编码器200(图5)描述的编码过程相反的解码过程。
[0462]
熵解码单元301可以检索编码比特流。编码比特流可以包括熵编解码的视频数据(例如,视频数据的编码块)。熵解码单元301可以对熵编解码的视频数据进行解码,并且从熵解码的视频数据中,运动补偿单元302可以确定包括运动矢量、运动矢量精度、参考图片列表索引和其他运动信息的运动信息。运动补偿单元302可以例如通过执行amvp和merge模式来确定这样的信息。
[0463]
运动补偿单元302可以产生运动补偿块,可以基于插值滤波器执行插值。要以子像素精度使用的插值滤波器的标识符可以包括在语法元素中。
[0464]
运动补偿单元302可以使用如视频编码器200在视频块的编码期间所使用的插值滤波器来计算参考块的子整数像素的插值。运动补偿单元302可以根据所接收的语法信息确定视频编码器200使用的插值滤波器,并使用该插值滤波器来产生预测块。
[0465]
运动补偿单元302可以使用一些语法信息来确定用于对编码视频序列的(多个)帧和/或(多个)条带进行编码的块的尺寸、描述编码视频序列的图片的每个宏块如何被分割的分割信息、指示每个分割如何被编码的模式、每个帧间编码块的一个或多个参考帧(和参考帧列表)、以及用于对编码视频序列进行解码的其他信息。
[0466]
帧内预测单元303可以使用例如在比特流中接收的帧内预测模式来从空域上相邻的块形成预测块。逆量化单元303对在比特流中提供并由熵解码单元301解码的量化后的视频块系数进行逆量化,即,解量化。逆变换单元303应用逆变换。
[0467]
重构单元306可以将残差块与由运动补偿单元202或帧内预测单元303生成的对应预测块相加,以形成解码块。如果需要,还可以应用去方块滤波器来滤波解码块,以便移除块效应。解码的视频块然后被存储在缓冲区307中,为随后的运动补偿/帧内预测提供参考块,并且还产生解码的视频以在显示设备上呈现。
[0468]
接下来提供一些实施例优选的第一解决方案集合的列表。
[0469]
以下解决方案示出了在前一节(例如,第1项)中讨论的技术的示例实施例。
[0470]
1.一种视频处理方法(例如,图3中的方法3000),包括:为视频的视频块和视频的编解码表示之间的转换确定视频块满足条件(3002),其中视频块使用帧内块复制模式在编解码表示中被编解码,其中在帧内块复制模式下,来自与视频块相同的图片的参考样点用于预测视频块;以及基于该确定来执行转换(3004);其中由于视频块满足条件,帧内块复制
缓冲区的一部分在转换期间被重置。
[0471]
2.根据解决方案1所述的方法,其中,该一部分包括帧内块复制缓冲区中的所有对应的虚拟流水线数据单元(vpdu)。
[0472]
3.根据解决方案2所述的方法,其中,对应的vpdu与帧内块复制缓冲区中的视频块重叠。
[0473]
4.根据解决方案2-3中任一项所述的方法,其中,vpdu被重置为等于-1的值。
[0474]
5.根据解决方案1所述的方法,其中,该一部分对应于具有等于vsize和视频块的宽度中的最大值的宽度的区域,其中vsize表示虚拟流水线数据单元的尺寸。
[0475]
6.根据解决方案1所述的方法,其中,该一部分对应于具有等于vsize和视频块的高度中的最大值的高度的区域,其中vsize表示虚拟流水线数据单元的尺寸。
[0476]
以下解决方案示出了在前一节(例如,第2项)中讨论的技术的示例实施例。
[0477]
7.一种视频处理的方法,包括:执行视频的一个或多个视频块和视频的编解码表示之间的转换,其中一个或多个视频块使用代表性样点的调板进行编解码,其中调板使用调板预测值在编解码表示中被预测编解码,并且其中调板预测值在用于处理一个或多个视频块中的每一个之前被更新。
[0478]
8.根据解决方案7所述的方法,其中,调板预测值使用来自一个或多个视频块的先前视频块的信息来更新。
[0479]
9.根据解决方案7所述的方法,其中,调板预测值使用具有相同条目的先前调板预测值来更新。
[0480]
10.根据解决方案7-9中任一项所述的方法,其中,编解码表示包括指示调板预测值和调板预测值的更新值之间的差的字段。
[0481]
11.根据解决方案1至17中任一项所述的方法,其中,该转换包括将视频编码为编解码表示。
[0482]
12.根据解决方案1至17中任一项所述的方法,其中,该转换包括对编解码表示进行解码以生成视频的像素值。
[0483]
13.一种视频解码装置,包括被配置为实施根据解决方案1至19中的一项或多项所述的方法的处理器。
[0484]
14.一种视频编码装置,包括被配置为实施根据解决方案1至19中的一项或多项所述的方法的处理器。
[0485]
15.一种存储有计算机代码的计算机程序产品,该代码在由处理器执行时使得处理器实施根据解决方案1至19中任一项所述的方法。
[0486]
16.一种本文档中描述的方法、装置或系统。
[0487]
在以下示例中列出了一些实施例优选实施的第二解决方案集合的列表。
[0488]
1.一种视频处理方法(例如,图12中的方法1200),包括:为视频的视频块和视频的比特流之间的转换确定视频块满足条件(1202),其中视频块使用帧内块复制模式在比特流中被编解码;以及基于该确定来执行转换(1204);其中由于视频块满足条件,帧内块复制缓冲区的一部分在转换期间被重置。
[0489]
2.根据示例1所述的方法,其中,该一部分包括帧内块复制缓冲区中的所有对应的虚拟流水线数据单元(vpdu)。
[0490]
3.根据示例2所述的方法,其中,对应的vpdu与帧内块复制缓冲区中的视频块重叠。
[0491]
4.根据示例2-3中任一项所述的方法,其中,vpdu被重置为等于-1的值。
[0492]
5.根据示例1所述的方法,其中,该一部分对应于具有等于vsize和视频块的宽度中的最大值的宽度的区域,其中vsize表示虚拟流水线数据单元的尺寸。
[0493]
6.根据示例1所述的方法,其中,该一部分对应于具有等于vsize和视频块的高度中的最大值的高度的区域,其中vsize表示虚拟流水线数据单元的尺寸。
[0494]
7.根据示例1-6中任一项所述的方法,其中,使用帧内块复制模式,预测从与由对应于视频块的块矢量确定的相同的解码条带的样点值的块推导。
[0495]
8.一种视频处理的方法(例如,图11中的方法1100),包括:执行视频的一个或多个视频块和视频的比特流之间的转换(1102),其中一个或多个视频块使用代表性样点的调板进行编解码,其中调板使用调板预测值在比特流中被预测编解码,并且其中调板预测值在用于处理一个或多个视频块中的每一个之前被更新。
[0496]
9.根据示例8所述的方法,其中,调板预测值使用来自在一个或多个视频块之前被编解码的先前视频块的信息来更新。
[0497]
10.根据示例8的方法,其中,调板预测值使用具有相同条目的先前调板预测值来更新。
[0498]
11.根据示例8-10中任一项所述的方法,其中,比特流包括指示调板预测值和调板预测值的更新值之间的差的字段。
[0499]
12.根据示例1至11中任一项所述的方法,其中,执行转换包括将视频块编码为比特流。
[0500]
13.根据示例1至11中任一项所述的方法,其中,执行转换包括基于视频来生成比特流,并且该方法还包括将比特流存储在非暂时性计算机可读记录介质中。
[0501]
14.根据示例1至11中任一项所述的方法,其中,执行转换包括从比特流解码视频。
[0502]
15.一种视频解码装置,包括被配置为实施根据示例1至11中的一项或多项所述的方法的处理器。
[0503]
16.一种视频编码装置,包括被配置为实施根据示例1至11中的一项或多项所述的方法的处理器。
[0504]
17.一种存储有计算机指令的计算机程序产品,该指令在由处理器执行时使得处理器实施根据示例1至14中任一项所述的方法。
[0505]
18.一种非暂时性计算机可读存储介质,存储根据示例1至11中任一项所述的方法而生成的比特流。
[0506]
19.一种存储指令的非暂时性计算机可读存储介质,该指令使得处理器实施根据示例1至14中任一项所述的方法。
[0507]
20.一种比特流生成的方法,包括:根据示例1至11中任一项所述的方法来生成视频的比特流,以及将比特流存储在计算机可读程序介质上。
[0508]
21.一种方法、一种装置、一种根据本文档中描述的所公开的方法或系统生成的比特流。
[0509]
在本文档中,术语“视频处理”可以指视频编码、视频解码、视频压缩或视频解压
缩。例如,在从视频的像素表示到对应的比特流表示的转换期间,可以应用视频压缩算法,反之亦然。如语法所定义的,当前视频块的比特流表示可以例如对应于共位或者散布在比特流内的不同地方的比特。例如,可以按照变换和编解码的误差残差值并且还使用比特流中的头和其他字段中的比特对宏块进行编码。此外,在转换期间,解码器可以基于该确定,在知道一些字段可能存在或不存在的情况下解析比特流,如以上解决方案所描述的。类似地,编码器可以确定包括或不包括特定语法字段,并通过包括语法字段或从编解码表示中排除语法字段来相应地生成编解码表示。
[0510]
本文档中描述的所公开的以及其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路中、或者在计算机软件、固件或硬件(包括本文档中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中被实施。所公开的以及其他实施例可以被实施为一个或多个计算机程序产品,即在计算机可读介质上编码的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。传播信号是被生成以对信息进行编码以用于发送到合适的接收器装置的人工生成的信号,例如机器生成的电信号、光学信号或电磁信号。
[0511]
计算机程序(也已知为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)编写,并且其可以以任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在一个计算机上或在位于一个站点上或跨多个站点分布并通过通信网络互连的多个计算机上执行。
[0512]
本文档书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实施为专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[0513]
适合于执行计算机程序的处理器包括例如通用和专用微处理器、以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),或可操作地耦合以从该一个或多个大容量存储设备接收数据或向该一个或多个大容量存储设备传递数据、或者从其接收数据并向其传递数据。然而,计算机不需要这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、
eeprom和闪存设备;磁盘,例如内部硬盘或可换式盘;磁光盘;以及cd rom和dvd-rom盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0514]
虽然本专利文档包含许多细节,但这些细节不应被解释为对任何主题或可能要求保护的范围的限制,而是作为指定于特定技术的特定实施例的特征的描述。在本专利文档中在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以单独在多个实施例中或以任何合适的子组合实施。此外,尽管特征可以在上面描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。
[0515]
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定顺序或以先后顺序执行这样的操作或者执行所有示出的操作以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离。
[0516]
仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容来进行其他实施方式、增强和变化。

技术特征:


1.一种视频处理方法,包括:为视频的视频块和所述视频的比特流之间的转换确定所述视频块满足条件,其中所述视频块使用帧内块复制模式在所述比特流中被编解码;以及基于所述确定来执行所述转换;其中,由于所述视频块满足所述条件,帧内块复制缓冲区的一部分在所述转换期间被重置。2.根据权利要求1所述的方法,其中,所述一部分包括所述帧内块复制缓冲区中的所有对应的虚拟流水线数据单元(vpdu)。3.根据权利要求2所述的方法,其中,所述对应的vpdu与所述帧内块复制缓冲区中的所述视频块重叠。4.根据权利要求2-3中任一项所述的方法,其中,所述vpdu被重置为等于-1的值。5.根据权利要求1所述的方法,其中,所述一部分对应于具有等于vsize和所述视频块的宽度中的最大值的宽度的区域,其中vsize表示虚拟流水线数据单元的尺寸。6.根据权利要求1所述的方法,其中,所述一部分对应于具有等于vsize和所述视频块的高度中的最大值的高度的区域,其中vsize表示虚拟流水线数据单元的尺寸。7.根据权利要求1-6中任一项所述的方法,其中,使用所述帧内块复制模式,预测从与由对应于所述视频块的块矢量确定的相同的解码条带的样点值的块推导。8.一种视频处理的方法,包括:执行视频的一个或多个视频块和所述视频的比特流之间的转换,其中,所述一个或多个视频块使用代表性样点的调板进行编解码,其中,所述调板使用调板预测值在所述比特流中被预测编解码,并且其中,所述调板预测值在用于处理所述一个或多个视频块中的每一个之前被更新。9.根据权利要求8所述的方法,其中,所述调板预测值使用来自在所述一个或多个视频块之前被编解码的先前视频块的信息来更新。10.根据权利要求8所述的方法,其中,所述调板预测值使用具有相同条目的先前调板预测值来更新。11.根据权利要求8-10中任一项所述的方法,其中,所述比特流包括指示所述调板预测值和所述调板预测值的更新值之间的差的字段。12.根据权利要求1至11中任一项所述的方法,其中,执行所述转换包括将所述视频块编码为所述比特流。13.根据权利要求1至11中任一项所述的方法,其中,执行所述转换包括基于所述视频来生成所述比特流,并且所述方法还包括将所述比特流存储在非暂时性计算机可读记录介质中。14.根据权利要求1至11中任一项所述的方法,其中,执行所述转换包括从所述比特流解码所述视频。15.一种视频解码装置,包括被配置为实施根据权利要求1至11中的一项或多项所述的方法的处理器。16.一种视频编码装置,包括被配置为实施根据权利要求1至11中的一项或多项所述的方法的处理器。
17.一种存储有计算机指令的计算机程序产品,所述指令在由处理器执行时使得所述处理器实施根据权利要求1至14中任一项所述的方法。18.一种非暂时性计算机可读存储介质,存储根据权利要求1至11中任一项所述的方法而生成的比特流。19.一种存储指令的非暂时性计算机可读存储介质,所述指令使得处理器实施根据权利要求1至14中任一项所述的方法。20.一种比特流生成的方法,包括:根据权利要求1至11中任一项所述的方法来生成视频的比特流,以及将所述比特流存储在计算机可读程序介质上。21.一种方法、一种装置、一种根据本文档中描述的所公开的方法或系统生成的比特流。

技术总结


描述了用于视频处理的方法和装置。一个示例方法包括为视频的视频块和视频的比特流之间的转换确定视频块满足条件,其中视频块使用帧内块复制模式在比特流中被编解码,以及基于该确定来执行转换。这里,由于视频块满足条件,帧内块复制缓冲区的一部分在转换期间被重置。帧内块复制缓冲区的一部分在转换期间被重置。帧内块复制缓冲区的一部分在转换期间被重置。


技术研发人员:

许继征 张莉 张凯 刘鸿彬

受保护的技术使用者:

字节跳动有限公司

技术研发日:

2021.03.18

技术公布日:

2022/11/18

本文发布于:2022-11-29 16:07:39,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/13403.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:调色板   视频   编解码   亮度
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图