[0294] 应当注意,对于输入参数cRiceParam=0,TR二值化恰好是截断一元码二值化,并且总是使用等于被解码的语法元素的最大可能值的cMax值来调用它。
[0295] 4.4示例性固定长度(FL)二值化处理
[0296] 该处理的输入是对FL二值化和cMax的请求。
[0297] 该处理的输出是将每个值symbolVal与对应的二进制位串关联的FL二值化。
[0298] 通过使用符号值symbolVal的fixedLength位无符号整数二进制位串来构建FL二值化,其中fixedLength=Ceil(Log2(cMax+1))。FL二值化的二进制位的索引使得binIdx=0与最高有效位相关,其中binIdx的值朝向最低有效位增加。
[0299] 表8:FL二值化的二进制位串(cMax=7)
[0300]
[0301] 4.5merge_idx的示例性编码
[0302] 如HEVC规范中所指定的,如果允许的Merge候选的总数大于1,则首先将Merge索引二值化为二进制位串。
[0303] 表9:merge_idx的二值化和编码二进制位的方式
[0304]
[0305] 使用cRiceParam等于0的TR,即TU。merge_idx的第一二进制位用一个上下文编码,剩余的二进制位(如果存在)用旁路编码。
[0306] 5JEM中的帧内预测的示例性实施例
[0307] 5.1具有67个帧内预测模式的帧内模式编码的示例
[0308] 为了捕获在自然视频中呈现的任意边缘方向,定向帧内模式的数量从HEVC中使用的33扩展到65。附加定向模式在图27中被描绘为浅灰色虚线箭头,并且平面和DC模式保持不变。这些更密集的定向帧内预测模式适用于所有块尺寸以及亮度和色度帧内预测两者。
[0309] 5.2亮度帧内模式编码的示例
[0310] 在JEM中,帧内预测模式的总数已从HEVC中的35增加到67。图27描绘了67个帧内预测模式的示例。
[0311] 为了适应增加数量的定向帧内模式,使用具有6个最可能模式(MPM)的帧内模式编码方法。涉及两个主要技术方面:1)6个MPM的推导,以及2)6个MPM和非MPM模式的熵编码。
[0312] 在JEM中,MPM列表中包括的模式被分为三组:
[0313] --相邻帧内模式
[0314] --导出帧内模式
[0315] --默认帧内模式
[0316] 使用五个相邻帧内预测模式来形成MPM列表。5个相邻块的那些位置与Merge模式中使用的那些位置相同,即左(L),上(A),左下(BL),右上(AR)和左上(AL),如图28中所示。通过将5个相邻帧内模式以及平面和DC模式插入MPM列表来形成初始MPM列表。修剪处理用于去除重复模式,使得只有唯一模式可以包括在MPM列表中。包括初始模式的顺序是:左,上,平面,DC,左下,右上,然后左上。例如,修剪可以包括以下操作:(a)与现有条目进行比较以获得唯一性,然后(b)如果唯一,则添加到列表,以及(c)如果不唯一,则(c1)不添加或(c2)添加和删除匹配的现有条目,使得添加后,条目数不会增加。
[0317] 如果MPM列表未满(即,列表中有少于6个MPM候选),则添加导出模式;通过将-1或+1加到已经包括在MPM列表中的
角度模式来获得这些帧内模式。这样的附加导出模式不从非角度模式(DC或平面)生成。
[0318] 最后,如果MPM列表仍未完成,则按以下顺序添加默认模式:垂直,水平,模式2和对角模式。作为该处理的结果,生成6个MPM模式的唯一列表。
[0319] 对于使用6个MPM对所选模式进行熵编码,使用截断一元码二值化。前三个二进制位用上下文编码,所述上下文取决于与当前信令通知的二进制位相关的MPM模式。MPM模式分为三类:(a)主要为水平的模式(即,MPM模式数小于或等于对角方向的模式数),(b)主要为垂直的模式(即,MPM模式大于对角方向的模式数,以及(c)非角度(DC和平面)类。因此,基于该分类,使用三个上下文对MPM索引信令通知。
[0320] 用于选择剩余的61个非MPM的编码如下完成。61个非MPM首先分为两组:选择模式组和非选择模式组。选择模式组包含16个模式,并且剩余模式(45个模式)分配给非选择模式组。当前模式所属的模式组在比特流中用标志指示。如果要指示的模式在选择模式组内,则使用4位固定长度代码对选择模式信令通知,如果要指示的模式来自非选择组,则使用截断二进制代码对选择模式信令通知。通过对61个非MPM模式进行子采样生成选择模式组,如下:
[0321] --选择模式组={0,4,8,12,16,20...60}
[0322] --非选择模式组={1,2,3,5,6,7,9,10...59}
[0323] 在编码器侧,使用HM的类似两阶段帧内模式决策处理。在第一阶段中,即帧内模式预选阶段,使用较低复杂度的绝对变换差和(SATD)成本从所有可用帧内模式预选N个帧内预测模式。在第二阶段中,进一步应用更高复杂度的R-D成本选择以从N个候选选择一个帧内预测模式。然而,当应用67个帧内预测模式时,由于可用模式的总数大致加倍,如果直接使用HM的相同编码器模式决策处理,则帧内模式预选阶段的复杂度也将增加。为了最小化编码器复杂度增加,执行两步帧内模式预选处理。在第一步中,基于绝对变换差和(SATD)度量从原始的35个帧内预测模式(图27中的黑色实线箭头所示)选择N(N取决于帧内预测块尺寸)个模式;在第二步中,通过SATD进一步检查所选N个模式的直接邻域(如图27中的浅灰色虚线箭头指示的附加帧内预测方向),并且更新所选N个模式的列表。最后,如果尚未包括,则将前M个MPM添加到N个模式,并且为第二阶段R-D成本检查生成候选帧内预测模式的最终列表,其以与HM相同的方式完成。基于HM中的原始设置,M的值增加1,并且N稍微减小,如下表10中所示。
[0324] 表10:帧内模式预选步骤的模式候选的数量
[0325]
[0326] 5.3色度帧内模式编码的示例
[0327] 在JEM中,允许总共11个帧内模式用于色度CB编码。那些模式包括5个传统的帧内模式和6个跨分量线性模型模式。色度模式候选列表包括以下三个部分:
[0328] ●CCLM模式
[0329] ●DM模式,从覆盖当前色度块的共位的五个位置的亮度CB导出的帧内预测模式[0330] ○按顺序检查的五个位置是:I条带的当前色度块的相应亮度块内的中心(CR),左上(TL),右上(TR),左下(BL)和右下(BR)4×4块。对于P和B条带,仅检查这五个子块中的一个,因为它们具有相同的模式索引。图29A和29B中示出了五个共位的亮度位置的示例。
[0331] ●来自空间相邻块的色度预测模式:
[0332] ○5个色度预测模式:从左,上,左下,右上和左上空间相邻块
[0333] ○平面和DC模式
[0334] ○添加导出模式,通过将-1或+1添加到已经包括在列表中的角度模式来获得这些帧内模式。
[0335] ○垂直,水平,模式2
[0336] 每当将新的色度帧内模式添加到候选列表时应用修剪处理。然后将非CCLM色度帧内模式候选列表尺寸修整为5。对于模式信令,首先对标志信令通知以指示是使用CCLM模式之一还是使用传统色度帧内预测模式之一。然后可以遵循几个标志以指定用于当前色度CB的精确色度预测模式。
[0337] 6.现有实现方式的示例
[0338] 当前HEVC设计可以采用当前块与其相邻块(紧邻当前块)的相关性来更好地编码运动信息。然而,相邻块可能对应于具有不同运动轨迹的不同对象。在该情况下,来自其相邻块的预测效率不高。
[0339] 来自非相邻块的运动信息的预测可以带来额外的编码增益,具有将所有运动信息(通常在4×4级别上)存储到高速缓存中的成本,这显着增加了
硬件实现方式的复杂性。
[0340] 一元码二值化方法适用于较少数量的允许Merge候选。然而,当允许候选的总数变大时,一元码二值化可能是次优的。
[0341] AMVP候选列表构建处理的HEVC设计仅调用两个空间AMVP候选中的修剪。不使用完全修剪(每个可用候选与所有其他候选相比),因为由于有限的修剪而导致编码损失可忽略不计。然而,如果有更多的AMVP候选可用,则修剪变得很重要。此外,当启用LAMVR时,应当研究如何构建AMVP候选列表。
[0342] 7.用于基于LUT的运动矢量预测的示例性方法
[0343] 为了克服现有实现方式的缺点,可以在各种实施例中实现使用存储有至少一个运动候选以预测块的运动信息的一个或多个查找表的基于LUT的运动矢量预测技术,以提供具有更高编码效率的视频编码。每个LUT可以包括一个或多个运动候选,每个运动候选与对应的运动信息关联。运动候选的运动信息可以包括部分或全部预测方向,参考索引/图片,运动矢量,LIC标志,仿射标志,运动矢量推导(MVD)精度和/或MVD值。运动信息还可以包括块位置信息以指示运动信息来自何处。
[0344] 可以增强现有和未来的视频编码标准的基于公开技术的基于LUT的运动矢量预测在针对各种实现方式描述的以下示例中阐明。由于LUT允许基于历史数据(例如,已经处理的块)执行编码/解码处理,因此基于LUT的运动矢量预测也可以称为基于历史的运动矢量预测(HMVP)方法。在基于LUT的运动矢量预测方法中,在编码/解码处理期间保持具有来自先前编码的块的运动信息的一个或多个表。在一个块的编码/解码期间,取决于块的编码特性,可以使用LUT中的关联运动信息(例如,通过添加到运动候选列表)。在对块进行编码/解码之后,可以基于块的编码特性来更新LUT。也就是说,LUT的更新基于编码/解码顺序。以下提供的公开技术的示例解释了一般概念,并不意味着被解释为限制。在示例中,除非明确地相反指示,否则可以组合这些示例中描述的各种特征。
[0345] 关于术语,以下示例LUT的条目是运动候选。术语运动候选用于指示存储在查找表中的一组运动信息。对于传统的AMVP或Merge模式,AMVP或Merge候选用于存储运动信息。例如,在一些实施例中,可以通过将运动矢量差添加到AMVP候选来导出运动信息。如下面将描述的,并且在非限制性示例中,具有用于运动矢量预测的运动候选的LUT的概念被扩展到具有用于帧内模式编码的帧内预测模式的LUT,或者扩展到具有用于IC参数编码的照明补偿参数的LUT,或者扩展到具有滤波器参数LUT。用于运动候选的基于LUT的方法可以扩展到其他类型的编码信息,如本专利文献,现有和未来视频编码标准中所述。
[0346] 示例1和2有利地限定了如公开技术中使用的LUT。
[0347] 示例1.在一个示例中,表尺寸(例如,运动候选的最大允许条目的数量)和/或表的数量可以取决于序列分辨率,最大编码单元尺寸,Merge候选列表的尺寸。
[0348] (a)在一个示例中,没有表尺寸的附加信令。
[0349] (b)推断表尺寸与信令通知的最大Merge候选相同。
[0350] (c)替代地,推断表尺寸与信令通知的最大Merge候选减去特定值相同。特定值可以被定义为在Merge候选列表构建处理中可以访问多少空间/时间相邻块,例如,在HEVC中为5。
[0351] 示例2.可以构建具有不同作用的多个LUT。
[0352] (a)在一个示例中,一个LUT(第一LUT)可以包括具有来自AMVP编码块的纯运动信息的运动候选;并且另一个LUT(第二LUT)可以包括来自AMVP和Merge编码块的运动信息。
[0353] (b)在一个示例中,一个LUT(第一LUT)可以包括具有纯单向预测的运动候选;并且另一个LUT(第二LUT)可以包括具有双向预测的运动候选。
[0354] (c)当对块进行编码时,可以定义LUT的检查顺序。对于每个LUT,可以在访问第二LUT之前首先检查多个运动候选。在一个示例中,对于上述情况,当对块进行编码时,首先检查来自第二LUT的运动候选,然后检查来自第一LUT的运动候选,反之亦然。
[0355] 示例3-5有利地描述了在公开技术的实施例中使用的更新程序。
[0356] 示例3.可以基于块的编码特性用与块关联的运动信息来更新LUT。例如,可以用Merge或AMVP模式对块进行编码。
[0357] (a)在一个示例中,在用帧内模式对块进行编码/解码之后不更新LUT。在另一示例中,在用帧内块复
制模式对块进行编码/解码之后不更新LUT。也就是说,在一些实施例中,可以仅在对帧间编码块进行编码/解码之后更新LUT。
[0358] (b)在又一示例中,在用仿射模式(例如,仿射Merge或仿射AMVP模式)对块进行编码/解码之后不更新LUT。也就是说,可以在对非仿射编码块进行编码/解码之后更新LUT。
[0359] 示例4.在通过添加从编码块获得的运动候选来更新LUT之前,可以应用修剪。
[0360] (a)在一个示例中,要添加的新运动候选需与选择表中的所有现有运动候选进行修剪。也就是说,将新运动候选与选择表中的所有现有运动候选进行比较以确保不存在重复候选。
[0361] (b)替代地,可以仅将新运动候选与特定数量的现有运动候选进行修剪。例如,在选择性地将其添加为LUT的最后条目之前,可以将其与LUT中的最后m个运动候选(m是整数)进行比较。
[0362] (c)在一些实施例中,选择表是用于为从其获得运动候选的编码块构建运动候选列表的表。在一些实施例中,运动候选可以用于更新部分或全部可用LUT。
[0363] 示例5.可以周期性地更新LUT。
[0364] (a)可以在对给定区域尺寸进行编码/解码之后更新LUT。这意味着区域内的所有块都将使用相同的LUT。
[0365] (b)在一个示例中,在对每N个LCU进行编码/解码之后更新LUT,N是诸如1或2的整数。
[0366] (c)在一个示例中,在对每N个CU进行编码/解码之后更新LUT,N是诸如4或8的整数。替代地,在对每N个帧间编码的CU进行编码/解码之后更新LUT,N是诸如4或8的整数。
[0367] (d)当存在具有可以用于更新LUT的运动信息的多个块时,可以仅使用编码/解码顺序中的最后块来更新LUT。
[0368] (i)替代地,可以仅利用用运动信息编码并且允许更新LUT的编码/解码顺序中的最后块来更新LUT。
[0369] (ii)替代地,可以利用用运动信息编码并且允许更新LUT的所有块来更新LUT。
[0370] 示例6-11有利地描述了在公开技术的实施例中使用LUT。
[0371] 示例6.当用Merge或AMVP模式对块进行编码时可以使用LUT。
[0372] (a)在一个示例中,当用帧内模式对块进行编码时可以不使用LUT。
[0373] (b)在一个示例中,当用帧内块复制模式对块进行编码时可以不使用LUT。
[0374] (c)在一个示例中,当用仿射Merge或仿射AMVP模式对块进行编码时可以不使用LUT。
[0375] (d)要针对AMVP编码块和Merge编码块检查的LUT中的运动候选的数量可以不同。
[0376] (i)在一个示例中,两个数量设置为相同(例如,16、44)。
[0377] (ii)替代地,两个数量可以不同。
[0378] (iii)替代地,要针对AMVP编码块检查的运动候选的数量应当小于针对Merge编码块检查的运动候选的数量(例如,对于AMVP和Merge编码块分别为4和16)。
[0379] (iv)在一个示例中,两个数量可以取决于LUT尺寸和最大允许的AMVP和/或Merge候选数量。
[0380] 示例7.当不允许具有特定信息(例如,块模式)的块使用来自LUT的信息(如子块编码块)时,不允许与块关联的编码运动信息更新LUT。也就是说,在对这样的块进行编码或解码之后,跳过更新LUT的处理。
[0381] (a)替代地,满足某些条件(例如块模式等于例如仿射,或块尺寸等于例如4×4,或其他条件)的块不允许使用来自LUT的信息,但是允许编码运动信息更新LUT。(仅写入模式,仅允许写入LUT)
[0382] (b)替代地,如果满足具有某些条件(例如,块是编码的三角预测模式)的块的编码运动信息不允许更新LUT,但是编码/解码处理仍然可以使用来自LUT的运动候选。(仅读取模式,仅允许从LUT读取)。
[0383] (c)在一个示例中,不允许仿射编码块使用来自LUT的运动候选。同时,不允许仿射运动更新LUT,即,运动候选不能是仿射运动。
[0384] (i)替代地,允许一些子块(在当前块内)的导出运动(通过仿射模型)更新LUT。也就是说,运动候选包括从当前块的运动信息导出的运动信息。
[0385] (ii)替代地,允许LUT用于导出仿射模型参数。在该情况下,块的位置也存储在LUT中。
[0386] 示例8.当存在多个查找表时,可以应用多个表中的运动候选的不同检查顺序。
[0387] (a)对于某些块,使用来自第一LUT的前m个运动候选,并且然后检查来自第二LUT的最后n个运动候选(最近添加的)。m和n都是正整数(>0)。
[0388] (b)对于新LCU行中的第一LCU,它使用来自第一LUT的最后m个运动候选,并且然后检查来自第二LUT的前n个运动候选(最近)。m和n都是正整数(>0)。
[0389] (c)某些块可以被定义为新LCU行中的第一LCU或新LCU行中的第一编码块,或者用于编码覆盖条带的第一列中的样本的块。
[0390] 示例9.基于LUT的运动矢量编码方法可以与非相邻候选(例如,Merge候选或AMVP候选)组合。
[0391] (a)在一个示例中,可以添加m个非相邻候选和来自LUT的n个运动候选。m和n都是正整数(>0)。
[0392] (b)在一个示例中,可以检查m个非相邻块,并且可以检查来自LUT的n个运动候选。应当注意,当检查块或检查运动候选时,可能不会将任何一个添加到(例如,Merge)候选列表。
[0393] (c)在一个示例中,可以以交织方式添加非相邻候选和来自LUT的运动候选。
[0394] (i)检查非相邻块的顺序保持不变。来自一个非相邻块的一个候选之后是来自LUT的运动候选。
[0395] (ii)检查非相邻块的顺序保持不变。然而,如果一个非相邻块位于某个范围之外(例如,在当前LCU行之外),则它将由LUT中的运动候选替换。
[0396] (iii)在一个示例中,检查非相邻块的顺序保持不变。然而,如果一个非相邻块用帧内模式或帧内块复制模式编码,则它将由LUT中的运动候选替换。
[0397] (iv)在图30中给出了Merge候选列表重建的检查顺序的示例。
[0398] (d)在一个示例中,与来自LUT的运动候选相比,非相邻候选具有更高的优先级。
[0399] (i)在该情况下,首先检查所有非相邻块。如果候选的总数仍然小于最大允许数量,则通过检查来自LUT的运动候选进一步应用基于LUT的方法。
[0400] (ii)替代地,与非相邻候选相比,来自LUT的运动候选具有更高的优先级。首先通过检查来自LUT的运动候选应用基于LUT的方法。如果候选的总数仍然小于最大允许数量,则检查非相邻块以将非相邻候选添加到Merge候选列表。
[0401] (iii)类似地,当在AMVP编码处理中允许非相邻方法和基于LUT的方法时,可以以与上述示例中描述的类似方式处理优先级。
[0402] (iv)在图31中示出了示例。
[0403] (e)在一个示例中,可以不是一个接一个地调用两种方法(例如,非相邻方法和基于LUT的方法)。而是,可以应用一种方法,然后添加一些其他类型的候选,并且然后可以应用第二种方法。在图32中示出了示例,其中在TMVP处理之前检查非相邻候选,并且然后检查来自LUT的运动候选。
[0404] (f)可以执行用于插入非相邻候选和来自LUT的运动候选的自适应顺序。
[0405] (i)在一个示例中,首先检查来自非相邻候选的所有双向预测Merge候选,接着检查来自LUT的运动候选,并且然后检查单向预测的非相邻候选。
[0406] (ii)在一个示例中,对于一个块,可以在来自LUT的运动候选之前检查非相邻候选,而对于另一个块,可以在非相邻候选之前检查来自LUT的运动候选。
[0407] 示例10.默认运动候选可以包括在LUT中。
[0408] (a)在一个示例中,零运动矢量候选(具有一个或多个参考图片)被视为默认运动候选。
[0409] (b)在一个示例中,默认运动候选可以从当前条带/片中的先前编码运动信息或从来自不同图片的先前编码运动导出。
[0410] (c)可以在比特流中,例如在序列参数集(SPS),图片参数集(PPS),条带报头等中对默认运动候选信令通知。
[0411] 示例11.可以应用LUT中的运动候选的重新排序。
[0412] (a)在一个示例中,在对一个块进行编码之后,可以从该块获得新运动候选。可以首先将其添加到LUT并且然后可以应用重新排序。在该情况下,对于子序列块,它将使用重新排序的LUT。例如,在完成对某个单元(例如,一个LCU,一个LCU行,多个LCU等)的编码之后发生重新排序。
[0413] (b)在一个示例中,不重新排序LUT中的运动候选。然而,当对块进行编码时,可以首先应用运动候选的重新排序,接着检查并插入到Merge/AMVP/或其他种类的运动信息候选列表。
[0414] 示例12有利地描述了局部自适应运动矢量分辨率(LAMVR)改善。
[0415] 示例12.当启用多个运动矢量精度时(例如,当使用整数运动矢量(IMV)精确工具来支持1像素,2像素,4像素或子像素MV精度时),并且对于具有较低MV精度(例如,整数精度或更低)的块,以下可以应用:
[0416] (a)将取整应用于来自LUT的运动候选。在一些实施例中,针对其他AMVP候选进一步应用运动候选的修剪。
[0417] (b)替代地,对于要添加到AMVP候选列表的每个AMVP候选(例如,从空间和/或时间相邻块导出),首先对其进行取整并且然后与其他可用的AMVP候选进行修剪。
[0418] (c)替代地,将所有AMVP候选(例如,从空间和/或时间相邻块导出)插入到AMVP候选列表而不进行取整和修剪。之后,候选可以进行取整。在一个示例中,在取整之后,进一步在取整的AMVP候选中应用修剪。如果可用AMVP候选的总数小于最大允许数量,则可以进一步应用基于LUT的方法来添加更多AMVP候选。
[0419] 示例13有利地提供Merge索引编码实施例。
[0420] 示例13.代替使用cRiceParam等于0的TR(或TU),Merge索引可以被划分为两个部分,并且每个部分可以调用不同的二值化方法。
[0421] (a)第一部分用一元码二值化方法编码。
[0422] (b)在一个示例中,第二部分可以使用FL二值化方法。
[0423] (c)替代地,第二部分可以使用EGk二值化方法(其中k等于0、1...)。
[0424] (d)这两个部分可以被定义为(Merge候选的总数减去N,N),其中N是给定值。表11示出了一些示例。在表11示出的示例中,Merge候选的总数是14,并且N=7。当Merge索引的值在[0,Merge候选的总数-(N+1)=6]的范围内时,应用第一部分的一元码二值化方法。当Merge索引的值在[Merge候选总数-N=7,Merge候选总数-1=13]的范围内时,应用第一部分的一元码二值化方法和第二部分的FL二值化方法。
[0425] (e)仅当Merge索引大于预定或信令阈值时,才可以调用所提出的方法。
[0426] 表11:Merge索引的二进制位串(Merge总数为15,N=8)
[0427]
[0428] 示例14-16有利地提供了具有帧内预测模式的LUT和从非相邻块进行帧内模式预测的实施例。
[0429] 示例14.类似于具有运动候选的LUT用于运动矢量预测,提出可以构建和/或更新一个或多个LUT以存储来自先前编码的块的帧内预测模式,并且LUT可以用于编码/解码帧内编码块。
[0430] (a)当应用基于LUT的方法时,每个LUT的条目数相同,例如,等于允许的帧内预测的总数。
[0431] (b)当应用基于LUT的方法时,可以为每个帧内预测模式进一步分配变量(即,cnt)以记录在先前编码的块中已经使用帧内预测模式的次数。
[0432] (c)当用选择帧内预测模式更新LUT时,将修改关联的cnt,例如增加1。
[0433] 示例15.非相邻块的帧内预测模式可以用作用于编码帧内编码块的帧内预测模式预测器。
[0434] 示例16.替代地,可以联合使用LUT和基于非相邻的方法。
[0435] (a)在一个示例中,LUT或非相邻块中的帧内预测模式可以在MPM列表构建处理中使用。
[0436] (b)替代地,LUT或非相邻块中的帧内预测模式可以用于重新排序非MPM帧内预测模式。
[0437] 示例17-19有利地提供了具有IC参数的LUT和从非相邻块进行IC参数推导的实施例。
[0438] 示例17.类似于具有运动候选的LUT用于运动矢量预测,提出可以构建和/或更新一个或多个LUT以存储来自先前编码的块的照明参数,并且LUT可以用于编码/解码IC编码块。
[0439] (a)在对块/区域进行编码之后,如果用IC模式对一个或多个块进行编码,则可以使用对应的IC参数来更新LUT。
[0440] (b)在编码新图片/条带/LCU行之前,可以用信令通知的IC参数(例如,基于整个图片/条带/LCU行导出)来初始化LUT。
[0441] 示例18.可以应用基于非相邻的方法,其中当导出当前块的IC参数时,代替使用空间邻域作为模板,如图25中所示,可以利用非相邻块的空间邻域来避免降低编解码器的并行性。
[0442] (c)在一个示例中,为每个IC编码块存储IC参数。
[0443] 示例19.可以联合使用LUT和基于非相邻的方法。
[0444] (d)在一个示例中,可以类似于Merge/AMVP候选列表构建IC参数的参数列表。可以对IC参数的索引信令通知。
[0445] (e)添加来自非相邻块和LUT的IC参数的规则可以类似于在AMVP或Merge模式中的运动矢量编码的规则。
[0446] 8.用于基于LUT的运动矢量预测的附加实施例
[0447] 在图33中描绘了用于基于LUT的预测方法的编码流程的示例。在示例5的上下文中,在解码区域之后完成更新处理。在图34中描绘了示例以避免频繁更新LUT。
[0448] 以上描述的示例可以包含在下面描述的方法(例如方法3500)的上下文中,所述方法可以在视频解码器和/或视频编码器处实现。
[0449] 图35示出了用于视频编码的示例性方法的流程图,其可以在视频编码器中实现。在步骤3510,方法3500包括接收视频数据的第一块的比特流表示。
[0450] 在步骤3520,方法3500包括基于包括编码候选的一组查找表(LUT)处理比特流表示以生成视频数据的第一块。
[0451] 在一些实施例中,编码候选包括运动候选。在其他实施例中,LUT组中的LUT的数量或LUT组中的LUT的尺寸基于序列分辨率、最大编码单元(LCU)尺寸、或Merge或高级运动矢量预测(AMVP)候选列表的尺寸。在示例中,未对LUT的尺寸信令通知。在另一示例中,LUT的尺寸等于Merge候选的最大数量。在又一示例中,LUT的尺寸比Merge候选的最大数量小固定值,其中固定值基于可以在Merge或AMVP候选列表中访问的时间或空间相邻块的数量。
[0452] 在一些实施例中,该组LUT的第一LUT包括具有仅来自高级运动矢量预测(AMVP)编码块的运动信息的运动候选,并且该组LUT中的第二LUT包括具有来自AMVP和Merge编码块的运动信息的运动候选。在其他实施例中,该组LUT的第一LUT包括仅具有单向预测的运动候选,并且该组LUT的第二LUT包括仅具有双向预测的运动候选。在示例中,在检查第一LUT中的运动候选之前检查第二LUT中的运动候选。在另一示例中,在检查第一LUT中的运动候选之后检查第二LUT中的运动候选。
[0453] 在一些实施例中,方法3500还包括基于视频数据的第一块的编码特性更新该组LUT的子组,其中该子组排除该组LUT中的至少一个LUT。
[0454] 在一些实施例中,方法3500还包括基于视频数据的第一块的编码特性阻止使用该组LUT中的至少一个LUT。
[0455] 以上示例可以应用于用于其他编码信息的基于LUT的方法,例如在达到区域尺寸之后更新LUT。
[0456] 在示例中,编码特性指示视频数据的第一块被帧内编码。在另一示例中,编码特性指示视频数据的第一块被帧内块复制(IBC)编码。在又一示例中,编码特性指示视频数据的第一块被仿射Merge编码或仿射高级运动矢量预测(AMVP)编码。
[0457] 在一些实施例中,方法3500还包括从编码块获得新运动候选,并且在将新运动候选添加到该组LUT之前修剪该组LUT。可以实现修剪的各种示例。在示例中,将新运动候选与该组LUT的子组中的每个运动候选进行修剪。在另一示例中,将新运动候选与单个LUT中的每个运动候选进行修剪。在又一示例中,将新运动候选与该组LUT中的运动候选的子组进行修剪。
[0458] 在一些实施例中,方法3500还包括周期性地更新该组LUT中的至少一个LUT。
[0459] 在一些实施例中,方法3500还包括接收视频数据的第二块的比特流表示,并且基于视频数据的第二块的编码特性阻止使用或更新该组LUT。在示例中,编码特性指示视频数据的第二块具有预定尺寸或被仿射编码。
[0460] 在一些实施例中,编码候选包括帧内预测模式候选。在其他实施例中,编码候选包括候选照明补偿(IC)参数。在另外的其他实施例中,编码候选包括候选滤波参数。
[0461] 在一些实施例中,公开技术可以用于提供另一种用于视频编码的方法。该方法包括接收视频数据块的比特流表示,以及基于来自非相邻块的编码候选处理比特流表示,其中编码候选是非运动候选。
[0462] 在一些实施例中,公开技术可以用于提供另一种用于视频编码的方法。该方法包括接收视频数据块的比特流表示,以及使用多个运动矢量(MV)精度并且基于高级运动矢量预测(AMVP)候选列表处理比特流表示以生成视频数据块,其中视频数据块包括低MV精度,并且其中每个AMVP候选在插入AMVP候选列表中之前被取整,并与可用AMVP候选进行修剪。
[0463] 在一些实施例中,公开技术可以用于提供另一种用于视频编码的方法。该方法包括接收视频数据块的比特流表示,以及使用Merge索引编码处理比特流表示以生成视频数据块,其中比特流表示包括被划分为第一部分和第二部分的Merge索引,其中第一部分通过第一二值化方法处理,并且其中第二部分通过与第一二值化方法不同的第二二值化方法处理。
[0464] 例如,第一二值化方法是一元码二值化方法。例如,第二二值化方法是固定长度(FL)二值化方法。例如,第二二值化方法是k阶Exp-Golomb(EGk)二值化方法。
[0465] 9.公开技术的示例性实现方式
[0466] 图36是视频处理装置3600的框图。装置3600可以用于实现本文描述的一个或多个方法。装置3600可以体现在智能手机,
平板电脑,计算机,
物联网(IoT)接收器等中。装置3600可以包括一个或多个处理器3602,一个或多个存储器3604和视频处理硬件3606。处理器3602可以配置成实现本专利中描述的一个或多个方法(包括但不限于方法3500)。存储器(多个存储器)3604可以用于存储用于实现本文描述的方法和技术的数据和代码。视频处理硬件3606可以用于在硬件电路中实现本文件中描述的一些技术。
[0467] 在一些实施例中,视频编码方法可以使用在如关于图36所述的硬件平台上实现的装置来实现。
[0468] 图37是根据本公开技术的用于视频处理的示例性方法3700的流程图。方法3700包括执行视频的视频数据的第一块和包括第一块的视频的比特流表示之间的转换(3702),并且基于视频数据的第一块的编码特性,使用与第一块关联的运动信息更新运动候选表(3704)。
[0469] 在一些实施例中,编码特性指示使用Merge模式对视频数据的第一块进行编码。在一些实施例中,编码特性指示使用高级运动矢量预测(AMVP)模式对视频数据的第一块进行编码。在一些实施例中,编码特性指示视频数据的第一块未被帧内编码。在一些实施例中,编码特性指示视频数据的第一块未被帧内块复制(IBC)编码。在一些实施例中,编码特性指示视频数据的第一块被帧间编码。在一些实施例中,编码特性指示视频数据的第一块未被仿射编码。
[0470] 在一些实施例中,该方法包括基于运动候选表执行视频的视频数据的第二块和视频的比特流表示之间的第二转换。在一些实施例中,该方法还包括基于视频数据的第二块的第二编码特性,使用与第二块关联的运动信息阻止更新运动候选表。
[0471] 在一些实施例中,第二编码特性指示视频数据的第二块被仿射AMVP编码。在一些实施例中,第二编码特性指示视频数据的第二块被仿射Merge编码。在一些实施例中,第二编码特性指示视频数据的第二块被帧内编码。
[0472] 在一些实施例中,该方法包括执行视频的视频数据的第三块和视频的比特流表示之间的第三转换而不使用运动候选表。在一些实施例中,该方法包括基于视频数据的第三块的第三编码特性,使用与第三块关联的运动信息更新运动候选表。第三编码特性可以指示使用Merge模式或高级运动矢量预测(AMVP)模式对视频数据的第三块进行编码。
[0473] 在一些实施例中,更新包括周期性地更新运动候选表。在一些实施例中,更新包括每次在处理视频帧的给定区域之后更新运动候选表。在一些实施例中,给定区域包括条带。在一些实施例中,给定区域包括N个最大编码单元(LCU),N是整数。N可以是1或2。在一些实施例中,给定区域包括N个编码单元(CU)或N个帧间编码的编码单元(CU),N是整数。N可以是
4或8。
[0474] 在一些实施例中,第一块是与用于更新表的运动信息关联的给定区域中的多个块中的最后块。该方法还包括使用多个块中的其他块的运动信息阻止更新表。在一些实施例中,该方法包括使用与给定区域中的多个块关联的运动信息更新运动候选表。
[0475] 在一些实施例中,与块关联的运动信息包括用于帧内模式编码的一个或多个帧内预测模式。在一些实施例中,与块关联的运动信息包括用于IC参数编码的一个或多个照明补偿(IC)参数。在一些实施例中,与块关联的运动信息包括一个或多个滤波器参数。
[0476] 图38是根据当前公开技术的用于视频处理的示例性方法3800的流程图。在操作3802,方法3800包括在当前视频块和视频的比特流表示之间的转换期间保持一个或多个运动候选表。在操作3804,方法3800包括将与当前视频块关联的运动候选与一个或多个表中的多个条目进行比较。在操作3806,方法3800包括基于比较更新一个或多个表。
[0477] 在一些实施例中,多个条目对应于一个或多个表中的所有条目。在一些实施例中,条目的数量是m,m是整数。在一些实施例中,m个条目是一个或多个表中的一个中的最后m个条目。
[0478] 在一些实施例中,更新包括将运动候选添加到一个或多个表中的一个。在一些实施例中,更新包括将运动候选添加作为一个或多个表中的一个的最后条目。
[0479] 在一些实施例中,一个或多个表不包括重复条目。在一些实施例中,该方法还包括使用更新的一个或多个表执行当前视频块之后的第二视频块和视频的比特流表示的转换。
[0480] 图39是根据当前公开技术的用于视频处理的示例性方法3900的流程图。在操作3902,方法3900包括执行视频的视频块和视频的比特流表示之间的转换,同时在转换中保持一个或多个运动候选表。在操作3904,方法3900包括基于视频块中的当前视频块的编码特性,确定使用一个或多个运动候选表来执行当前视频块和视频的比特流表示之间的转换的适合性。在操作3906,方法3900包括根据适合性执行当前视频块和视频的比特流表示之间的转换。在操作3908,该方法还包括使用与当前视频块关联的运动候选来选择性地更新一个或多个运动候选表。
[0481] 在一些实施例中,适合性指示一个或多个运动候选表不适合用于执行当前视频块和视频的比特流表示之间的转换。编码特性可以指示当前视频块被子块编码,仿射编码,或具有预定块尺寸。在一些实施例中,根据编码特性跳过更新。在一些实施例中,根据编码特性执行更新。例如,更新可以包括使用当前视频块内的一组子块的运动信息来更新一个或多个运动候选表。
[0482] 在一些实施例中,适合性指示一个或多个运动候选表适合用于执行当前视频块和视频的比特流表示之间的转换。在一些实施例中,根据编码特性跳过更新。例如,编码特性可以指示当前视频块被三角预测模式编码。在一些实施例中,根据编码特性执行更新。例如,编码特性可以指示当前视频块被仿射编码。更新可以包括将当前视频块的位置存储在一个或多个表中以用于导出仿射参数。
[0483] 在一些实施例中,运动候选包括当前视频块的运动信息。在一些实施例中,运动候选包括从当前视频块的运动信息导出的信息。在一些实施例中,运动候选与运动信息关联,所述运动信息包括以下的至少一种:预测方向,参考图片索引,运动矢量值,强度补偿标志,仿射标志,运动矢量差精度或运动矢量差值。在一些实施例中,运动候选包括用于Merge编码块的多个Merge候选。在一些实施例中,运动候选包括用于帧内编码块的帧内预测模式。在一些实施例中,运动候选包括用于IC编码块的多个照明补偿(IC)参数。在一些实施例中,运动候选包括在滤波处理中使用的滤波器参数。
[0484] 图40是根据当前公开技术的用于视频处理的示例性方法4000的流程图。在操作4002,方法4000包括在当前视频块和包括当前视频块的视频的比特流表示之间的转换期间保持一个或多个运动候选表。在操作4004,方法4000包括确定使用Merge模式或高级运动矢量预测(AMVP)模式对当前视频块进行编码。在操作4006,方法4000包括基于确定,使用一个或多个运动候选表执行当前视频块和视频的比特流表示之间的转换。
[0485] 在一些实施例中,该方法包括在确定当前视频块被帧内编码时阻止使用一个或多个运动候选表。在一些实施例中,该方法包括在确定当前视频块被帧内块复制(IBC)编码时阻止使用一个或多个运动候选表。在一些实施例中,该方法包括在确定当前视频块被仿射Merge编码或仿射高级运动矢量预测(AMVP)编码时阻止使用一个或多个运动候选表。
[0486] 在一些实施例中,使用一个或多个运动候选表包括按顺序检查一个或多个表中的运动候选。在一些实施例中,检查包括检查一个或多个表的第一表中的一组前m个运动候选,并且检查一个或多个表的第二表中的一组最后n个运动候选。m和n都是正整数。在一些实施例中,一组最后n个运动候选是最近添加到第二表的一组运动候选。在一些实施例中,检查包括检查一个或多个表的第一表中的一组最后m个运动候选,并且检查一个或多个表的第二表中的一组前n个运动候选。m和n都是正整数。在一些实施例中,一组前n个运动候选是最近添加到第二表的一组运动候选。
[0487] 在一些实施例中,一个或多个运动候选表包括一个或多个默认运动候选。在一些实施例中,一个或多个默认运动候选包括对应于一个或多个参考图片的一个或多个零运动矢量候选。在一些实施例中,一个或多个默认运动候选从先前编码的运动信息导出。在一些实施例中,在比特流表示中的序列参数集(SPS),图片参数集(PPS)或条带报头中对一个或多个默认运动候选信令通知。在一些实施例中,运动候选与运动信息关联,所述运动信息包括以下的至少一种:预测方向,参考图片索引,运动矢量值,强度补偿标志,仿射标志,运动矢量差精度或运动矢量差值。在一些实施例中,运动候选包括用于Merge编码块的多个Merge候选。在一些实施例中,运动候选包括用于帧内编码块的帧内预测模式。在一些实施例中,运动候选包括用于IC编码块的多个照明补偿(IC)参数。在一些实施例中,运动候选包括在滤波处理中使用的滤波器参数。
[0488] 在一些实施例中,该方法包括在执行转换之后基于当前视频块的运动信息更新一个或多个表。在一些实施例中,该方法还包括基于更新表执行视频的后续视频块和视频的比特流表示之间的转换。
[0489] 图41是根据当前公开技术的用于视频处理的示例性方法4100的流程图。在操作4102,方法4100包括通过组合一个或多个运动候选表和来自一个或多个非相邻块的非相邻候选集确定视频的视频数据块的运动候选列表。在操作4104,方法4100包括使用运动候选列表执行视频数据块和视频的比特流表示之间的转换。
[0490] 在一些实施例中,组合包括检查来自非相邻候选集的m个候选并且检查来自一个或多个运动候选表的n个运动候选。在一些实施例中,组合包括将来自非相邻候选集的m个候选中的至少一个添加到运动候选列表。在一些实施例中,组合包括将来自一个或多个运动候选表的n个运动候选中的至少一个添加到运动候选列表。
[0491] 在一些实施例中,组合包括以交织方式检查来自非相邻候选集和一个或多个运动候选表的候选。在一些实施例中,检查包括在检查来自一个或多个表的运动候选之前检查来自非相邻候选集的非相邻候选。在一些实施例中,检查包括检查来自非相邻候选集的双向预测运动候选,检查来自一个或多个运动候选表的运动候选,并且检查来自非相邻候选集的单向预测运动候选。
[0492] 在一些实施例中,检查包括检查来自非相邻候选集的非相邻候选,并且基于与非相邻候选关联的非相邻块的编码特性,用来自一个或多个运动候选表的运动候选替换非相邻候选。在一些实施例中,非相邻块的编码特性指示非相邻块位于预定范围之外。预定范围可以包括最大编码单元的当前行。在一些实施例中,非相邻块的编码特性指示非相邻块被帧内编码或帧内块复制编码。
[0493] 在一些实施例中,非相邻候选集具有比一个或多个运动候选表更高的优先级。组合可以包括在检查该组运动候选表之前检查来自非相邻候选集的所有候选。在一些实施例中,一个或多个运动候选表具有比该非相邻候选集更高的优先级。组合可以包括在检查非相邻候选集之前检查来自该组运动候选表的所有候选。
[0494] 在一些实施例中,通过进一步组合从指定运动预测方法生成的候选来获得运动候选列表。指定运动预测方法可以包括时间运动矢量预测器(TMVP)方法。
[0495] 在一些实施例中,运动候选与运动信息关联,所述运动信息包括以下的至少一种:预测方向,参考图片索引,运动矢量值,强度补偿标志,仿射标志,运动矢量差精度或运动矢量差值。在一些实施例中,运动候选列表包括用于Merge编码块的多个Merge候选。在一些实施例中,运动候选列表包括用于帧内编码块的帧内预测模式。在一些实施例中,运动候选列表包括用于IC编码块的多个照明补偿(IC)参数。在一些实施例中,运动候选列表包括在滤波处理中使用的滤波器参数。
[0496] 在一些实施例中,使用Merge模式对视频数据块进行编码,并且非相邻候选集包括多个Merge候选。在一些实施例中,使用高级运动矢量预测(AMVP)模式对视频数据块进行编码,并且非相邻候选集包括多个AMVP候选。
[0497] 图42是根据当前公开技术的用于视频处理的示例性方法4200的流程图。在操作4202,方法4200包括以从多个可用运动矢量精度选择的M像素或子像素的运动矢量精度,保持用于视频的视频块和视频的比特流表示之间的转换的高级运动矢量预测(AMVP)候选列表。M是正整数。在操作4204,方法4200包括对于与视频块关联的每个可用高级运动矢量预测(AMVP)候选执行:取整AMVP候选,将取整的AMVP候选与AMVP候选列表中的现有候选进行比较,并且在确定取整的AMVP候选与现有候选不同时,将AMVP候选添加到AMVP候选列表。在操作4206,方法4200包括将AMVP候选列表与来自一个或多个运动候选表的一个或多个运动候选组合以获得组合列表。在操作4208,方法4200还包括基于组合列表执行转换。
[0498] 在一些实施例中,从视频块的空间或时间相邻块导出每个可用AMVP候选。在一些实施例中,在AMVP候选列表中的候选的数量小于预定阈值的情况下执行组合。
[0499] 在一些实施例中,该方法包括在组合之前取整一个或多个运动候选的每一个。在一些实施例中,对于一个或多个运动候选的每一个,组合包括将运动候选与AMVP候选列表中的现有AMVP候选进行比较,并且在确定运动候选与现有AMVP候选不同时将运动候选添加到组合列表。
[0500] 在一些实施例中,运动候选与运动信息关联,所述运动信息包括以下的至少一种:预测方向,参考图片索引,运动矢量值,强度补偿标志,仿射标志,运动矢量差精度或运动矢量差值。在一些实施例中,运动候选包括用于Merge编码块的多个Merge候选。在一些实施例中,运动候选包括用于帧内编码块的帧内预测模式。在一些实施例中,运动候选包括用于IC编码块的多个照明补偿(IC)参数。在一些实施例中,运动候选包括在滤波处理中使用的滤波器参数。在一些实施例中,该方法包括在执行转换之后基于视频块的运动信息更新一个或多个表。在一些实施例中,该方法还包括基于更新表执行视频的后续视频块和视频的比特流表示之间的转换。
[0501] 图43是根据当前公开技术的用于视频处理的示例性方法4300的流程图。在操作4302,方法4300包括以从多个可用运动矢量精度选择的M像素或子像素的运动矢量精度保持用于视频的视频块和视频的比特流表示之间的转换的高级运动矢量预测(AMVP)候选列表。M是正整数。在操作4304,方法4300包括将与视频块关联的AMVP候选与AMVP候选列表中的现有AMVP候选进行比较。在操作4306,方法4300包括在确定AMVP候选与现有候选不同时,将AMVP候选添加到AMVP候选列表。在操作4308,方法4300还包括基于AMVP候选列表执行转换。
[0502] 在一些实施例中,该方法包括在将AMVP候选与现有AMVP候选进行比较之前对AMVP候选进行取整。在一些实施例中,该方法包括在将AMVP候选添加到列表之后取整AMVP候选列表中的所有候选。在一些实施例中,该方法包括修剪AMVP候选列表中的所有候选以去除任何重复条目。
[0503] 图44是根据当前公开技术的用于视频处理的示例性方法4400的流程图。在操作4402,方法4400包括使用Merge索引执行视频的视频数据块和视频的比特流表示之间的转换。比特流表示包括指示用于转换的Merge候选的Merge索引。Merge索引被划分为第一部分和第二部分。第一部分使用第一二值化方法编码,并且第二部分使用与第一二值化方法不同的第二二值化方法编码。
[0504] 在一些实施例中,第一二值化方法是一元码二值化方法。在一些实施例中,第二二值化方法是固定长度(FL)二值化方法。替代地,第二二值化方法可以是k阶Exp-Golomb(EGk)二值化方法。在一些实施例中,由于Merge索引大于预定或信令阈值,Merge索引被划分为第一部分和第二部分。
[0505] 图45是根据当前公开技术的用于视频处理的示例性方法4500的流程图。在操作4502,方法4500包括基于视频的一个或多个先前视频块保持一个或多个帧内预测模式候选表。在操作4504,方法4500包括使用一个或多个帧内预测模式候选表执行视频的当前视频块和视频的比特流表示之间的转换。
[0506] 在一些实施例中,一个或多个帧内预测模式候选表中的每个表的尺寸是相同的。在一些实施例中,每个表的尺寸等于帧内预测模式候选的支持类型的总数。
[0507] 在一些实施例中,该方法包括将计数器分配给每种类型的帧内预测模式候选。计数器指示在先前编码块中使用对应类型的次数。在一些实施例中,该方法包括在用对应类型的帧内预测模式候选更新一个或多个表中的一个的情况下修改计数器。
[0508] 在一些实施例中,该方法包括基于当前视频块更新一个或多个帧内预测模式候选表。在一些实施例中,该方法还包括使用更新的一个或多个帧内预测模式候选表来执行视频的后续视频块和视频的比特流表示之间的第二转换。
[0509] 图46是根据当前公开技术的用于视频处理的示例性方法4600的流程图。在操作4602,方法4600包括基于视频的视频块的非相邻块的帧内预测模式确定一组帧内预测模式预测器。在操作4604,方法4600包括使用一组帧内预测模式预测器执行视频块和视频的比特流表示之间的转换。
[0510] 在一些实施例中,上述方法4500和4600包括基于以下的至少一种构建最可能模式(MPM)列表:一个或多个预测模式候选表或非相邻块的帧内预测模式。在一些实施例中,该方法包括基于以下的至少一种重新排序非最可能模式(MPM)帧内预测模式:一个或多个预测模式候选表或非相邻块的帧内预测模式。
[0511] 图47是根据当前公开技术的用于视频处理的示例性方法4700的流程图。在操作4702,方法4700包括基于视频的一个或多个先前视频块保持一个或多个照明补偿(IC)参数表。在操作4702,方法4700包括使用一个或多个IC参数表执行视频的当前视频块和视频的比特流表示之间的转换。
[0512] 在一些实施例中,当前视频块被IC编码。在一些实施例中,该方法包括在执行视频数据的编码区域的转换之前初始化一个或多个IC参数表。编码区域可以包括图片,条带或最大编码单元行。
[0513] 在一些实施例中,该方法包括基于当前视频块的IC参数更新一个或多个IC参数表。在一些实施例中,该方法包括使用更新的一个或多个IC参数表执行视频的后续视频块和视频的比特流表示之间的第二转换。后续视频数据块可以被照明补偿IC编码。
[0514] 图48是根据当前公开技术的用于视频处理的示例性方法4800的流程图。在操作4802,方法4800包括基于当前视频块的非相邻块的IC参数导出视频的当前视频块的照明补偿(IC)参数。在操作4804,方法4800包括使用导出的IC参数执行当前视频块和视频的比特流表示之间的转换。
[0515] 在一些实施例中,上述方法4700和4800包括构建IC候选列表,其中每个IC候选与对应的IC参数关联。可以为IC候选分配索引。可以针对比特流表示中的视频块对IC候选的索引信令通知。
[0516] 从前述内容将理解,为了便于说明,本公开技术的具体实施例已经在本文中进行了描述,但是可以在不偏离本发明范围的情况下进行各种修改。因此,除了所附权利要求之外,本公开的技术不受限制。
[0517] 本专利文件中描述的主题和功能操作的实现方式可以在各种系统、数字
电子电路、或计算机软件、
固件或硬件中实现,包括本说明书中公开的结构及其结构等效体,或其中一个或多个的组合。本说明书中描述的主题的实现方式可以实现为一个或多个
计算机程序产品,即编码在有形和非暂时计算机可读介质上的计算机程序指令的一个或多个模块,以供
数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储
基板、存储设备、影响机器可读传播信号的物质组成或其中一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除硬件外,该装置还可以包括为所述计算机程序创建
执行环境的代码,例如,构成处理器固件、协议栈、
数据库管理系统、
操作系统或其中一个或多个的组合的代码。
[0518] 计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或适合在计算环境中使用的其他单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在
标记语言文档中的一个或多个脚本)中、专用于所述程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署成在一台或多台计算机上执行,所述计算机位于一个
站点上或分布在多个站点上,并通过通信网络互连。
[0519] 本说明书描述的处理和逻辑流可以通过一个或多个可编程处理器执行,所述处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的
逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,FPGA(现场可编程
门阵列)或ASIC(
专用集成电路)。
[0520] 例如,适于执行计算机程序的处理器包括通用和专用
微处理器,以及任何类型数字计算机的任何一个或多个处理器。通常,处理器将从
只读存储器或
随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括用于存储数据的一个或多个
大容量存储设备,例如,磁盘、磁光盘或光盘,或可操作联接到一个或多个大容量存储设备以从其接收数据或向其传输数据,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的
非易失性存储器、介质和存储器设备,包括例如
半导体存储器设备,例如EPROM、EEPROM和闪存设备。处理器和存储器可以由
专用逻辑电路来补充,或Merge到专用逻辑电路中。
[0521] 本说明书和附图仅意在被视为示例性的,其中示例性是指示例。如本文所用,除非上下文另有明确说明,否则单数形式“a”、“an”和“the”也应包括复数形式。此外,“或”的使用旨在包括“和/或”,除非上下文另有明确说明。
[0522] 虽然本专利文件包含许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实现,或在任何合适的子组合中实现。而且,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中删除权利要求组合中的一个或多个特征,并且权利要求的组合可以涉及子组合或子组合的变型。
[0523] 类似地,尽管图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或按照先后顺序执行这样的操作,或执行所有示出的操作。而且,本专利文件所述实施例中各种系统部件的分离不应理解为在所有实施例中都需要这样的分离。
[0524] 仅描述了一些实现方式和示例,其他实现方式、增强和变型可以基于本专利文件中描述和示出的内容做出。