[0180] (2)该8×8块内的每个4x4块的MV分量被如下剪裁:
[0181] MVxi=max(MVminx,min(MVmaxx,MVxi))
[0182] MVyi=max(MVminy,min(MVmaxy,MVyi))
[0183] 此处,(MVxi,MVyi)为一个8×8块内第i个子块的MV,其中i为0, 1,2,3;(MV1x,MV1y)为右上控制点的MV;MV_precision等于4,对应于1/16运动向量分数精度。由于MVminx和MVmaxx的整数部分(MVminy 和MVmaxy)之间的差为1像素,所以四个4×4子块MV的整数部分之间的最大差不超过1像素。
[0184] 13.仿射模式的示例实施例
[0185] 在一些实施例中,对于最坏情况下的带宽减少可能存在对于仿射模式的限制。为确保最坏情况下仿射块的带宽不差于INTER_4x8/INTER_8x4块或甚至是INTER_9x9块,仿射控制点之间的运动向量差用于决定仿射块的子块尺寸是4x4还是8x8。
[0186] 13.1最坏情况下带宽的通用仿射限制
[0187] 通过限制仿射控制点之间的运动向量差(也称为控制点差)来控制仿射模式的存储器体积减少。通常,如果控制点差满足以下限制,则仿射运动使用4×4子块(即4x4仿射模式)。否则,仿射运动使用8×8子块(8×8仿射模式)。对6-参数和4-参数模型的限制如下。
[0188] 为了导出不同的块尺寸(wxh)的限制,将控制点的运动向量差归一化为:
[0189] Norm(v1x-v0x)=(v1x-v0x)*128/w
[0190] Norm(v1y-v0y)=(v1y-v0y)*128/w
[0191] Norm(v2x-v0x)=(v2x-v0x)*128/h
[0192] Norm(v2x-v0x)=(v2x-v0x)*128/h 等式(8)
[0193] 在4-参数仿射模型中,(v2x-v0x)和(v2y-v0y)设置如下:
[0194] (v2x-v0x)=-(v1y-v0y)
[0195] (v2y-v0y)=-(v1x-v0x) 等式(9)
[0196] 因此,(v2x-v0x)和(v2y-v0y)的范数为:
[0197] Norm(v2x-v0x)=-Norm(v1y-v0y)
[0198] Norm(v2y-v0y)=Norm(v1x-v0x) 等式(10)
[0199] 13.2限制以确保INTER_4x8或INTER_8x4的最坏情况带宽
[0200] |Norm(v1x-v0x)+Norm(v2x-v0x)+128|+
[0201] |Norm(v1y-v0y)+Norm(u2y-v0y)+128|+
[0202] |Norm(v1x-v0x)-Norm(v2x-v0x)|+
[0203] |Norm(v1y-v0y)-Norm(v2y-v0y)|
[0204] <128*3.25 等式(11)
[0205] 在此,上述等式的左侧表示子仿射块的收缩或跨度
水平,而(3.25)表示 3.25像素位移。
[0206] 13.3限制以确保INTER_9x9的最坏情况带宽
[0207] (4*Norm(v1x-v0x)>-4*pel&&+4*Norm(v1x-v0x)
[0208] <pel)&&
[0209] (4*Norm(v1y-v0y)>-pel&&4*Norm(v1y-v0y)<pel)&&
[0210] (4*Norm(v2x-v0x)>-pel&&4*Norm(v2x-v0x)<pel)&&
[0211] (4*Norm(v2y-v0y)>-4*pel&&4*Norm(v2y-v0y)<pel)&&
[0212] ((4*Norm(v1x-v0x)+4*Norm(v2x-v0x)>-4*pel)&&
[0213] (4*Norm(v1x-v0x)+4*Norm(v2x-v0x)<pel))&&
[0214] ((4*Norm(v1y-v0y)+4*Norm(v2y-v0y)>-4*pel)&&
[0215] (4*Norm(v1y-v0y)+4*Norm(v2y-v0y)<pel))
[0216] 等式(12)
[0217] 在此,pel=128*16(128和16分别指示归一化因子和运动向量精度)。
[0218] 14.组合仿射merge候选的现有方法的缺点
[0219] 在一些现有的实现方式中,CPMV被单独存储,因此,需要额外的存储器。
[0220] 除了单独存储的CPMV之外,还必须知道相邻CU的宽度、高度和左上位置以从相邻的仿射编码的CU继承merge模型。这些侧面信息将增加线缓冲器尺寸。
[0221] 试图限制仿射带宽的其它现有实现方式在解码器上增加了额外的计算负担。
[0222] 15.用于仿射运动数据的表示的示例性方法
[0223] 所公开技术的实施例存储仿射模型参数而不是存储控制点运动向量 (CPMV)在用于各种实现方式所描述的下列示例中阐明,其解决了仿射预测的带宽和线-缓冲器问题,并且可以提高视频编码效率,并同时增强现有的以及未来的视频编码标准。在以下示例中,其不应认为是限制性的,仿射编码的上方或左方相邻CU的左上角/右上角/左下角/右下角的坐标分别为((LTNx, LTNy)/(RTNx,RTNy)/(LBNx,LBNy)/(RBNx,RBNy);当前CU的左上角/右上角/左下角/右下角的坐标分别为(LTCx,LTCy)/(RTCx,RTCy) /(LBCx,LBCy)/(RBCx,RBCy);仿射编码的上方或左方相邻CU的宽度和高度分别为w′和h′;仿射编码的当前CU的宽度和高度分别为w和h。
[0224] 此外,MV是二维标记为(MVx,MVy)的2维向量。MV1+MV2=MV3 意味着MV1x+MV2x=MV3x和MV1y+MV2y=MV3y。k×MV1=MV2意味着k×MV1x=MV2x和k×MV1y=MV2y。平均(MV1,MV2)= ((MV1x+MV2x)>>1,(MV1y+MV2y)>>1)或平均(MV1,MV2)= ((MV1x+MV2x+1)>>1,(MV1y+MV2y+1)>>1)。
[0225] 在以下示例中,SatShift(x,n)被定义为
[0226]
[0227] 在一个示例中,offset0和offset1被设置为(1<<(n-1))。
[0228] 在以下示例中,Clip3(min,max,x)被定义为
[0229]
[0230] 尽管以下示例在“仿射merge候选列表”的上下文中进行了描述,但它们同样适用于其它merge候选列表,例如“子块merge候选列表”以及当诸如 ATMVP候选的其它类型的子块merge候选也被放入merge候选列表中时。
[0231] 将被存储的仿射运动信息的示例
[0232] 示例1.如果块用仿射模式编码,可以存储等式(2)中定义的参数a、 b、c、d、e和f以用于该块。
[0233] (a)替代地,如果块用仿射模式编码,则可以存储等式(2)中定义的 a、b、c和d以用于该块。在该情况中,不再存储e和f。
[0234] (b)替代地,如果块用4-参数仿射模式编码,则可以存储等式(1) 中定义的a和b以用于该块。
[0235] (c)替代地,如果块用4-参数仿射模式编码,则可以存储等式(1) 中定义的a、b、e和f以用于该块。
[0236] (d)如果块用4-参数仿射模式编码,则等式(2)中定义的参数a、b、 c、d、e和f总是被存储以用于仿射编码的块,但是限制c=-b,d=a。
[0237] (e)如果块用4-参数仿射模式编码,则等式(2)中定义的参数a、b、 c和d总是被存储以用于仿射编码的块,但是限制c=-b,d=a。
[0238] (f)哪些参数将被存储可以取决于仿射模式、帧间或merge模式、块尺寸、图片类型等。
[0239] 示例2.在一个示例中,要存储的参数可以如下计算:
[0240] (a)
[0241] (b)
[0242] (c)
[0243] (d)
[0244] (e)c=-b用于4-参数仿射预测
[0245] (f)d=a用于4-参数仿射预测
[0246] (g)
[0247] (h)
[0248] (i)(e,f)=(mvx,mvy),其中(mvx,mvy)可以是任何MV。
[0249] 示例3.建议计算仿射模型参数而不进行除法运算。假设标注为w和h 的当前块的宽度和高度等于2WB和2HB。P是定义计算精度的整数,例如,P 设置为7。
[0250] (a)
[0251] (b)
[0252] (c)
[0253] (d)
[0254] 示例4.仿射模型参数可以在被存储前被进一步裁剪。
[0255] (a)在一个示例中,假设参数x(例如x=a或b或c或d)以K比特存储,则x=Clip3(-2K-1,2K-1-1,x)。
[0256] (b)例如,a=Clip(-128,127,a),然后将a存储为8比特带符号整数。
[0257] 示例5.可以为每个M×N区域存储仿射模型参数。M×N区域内的所有子块(例如,subM×subN子块)共享相同的存储参数。
[0258] (a)例如,M=N=4或M=N=8,或M=N=16或M=N=32,subM=subN=4。
[0259] (b)可以选择区域内的子块之一,并且可以存储其对应的仿射模型参数以用于整个M×N区域。替代地,将要存储的仿射模型参数可以从多个子块的仿射模型参数生成。
[0260] (c)在编码/解码一个片/图片之后,可以进一步调整区域尺寸,其中可以利用M'xN'区域以具有相同的仿射模型参数,并且不可能同时出现M'=M 和N'=N。
[0261] (d)在一个示例中,存储在区域中的参数被设置为在区域的右下角处的子M x子N块的参数,例如,图11中的B33。
[0262] (e)在一个示例中,存储在区域中的参数被设置为在区域的左下角处的子M x子N块的参数,例如,图11中的B03。
[0263] (f)在一个示例中,存储在区域中的参数被设置为在区域的左上角处的子M x子N块的参数,例如,图11中的B00。
[0264] (g)在一个示例中,存储在区域中的参数被设置为在区域的右上角处的子M x子N块的参数,例如,图11中的B30。
[0265] (h)在一个示例中,存储在区域中的参数被设置为在区域的中间处的子M x子N块的参数,例如,图11中的B11或B21或B12或B22。
[0266] (i)在一个示例中,存储在区域中的参数被设置为在区域的中间和底线处的子M x子N块的参数,例如,图11中的B13或B23。
[0267] (j)在一个示例中,存储在区域中的参数被设置为在区域的中间和左方线处的子M x子N块的参数,例如,图11中的B01或B02。
[0268] (k)在一个示例中,存储在区域中的参数被设置为在区域的中间和右侧线处的子M x子N块的参数,例如,图11中的B31或B32。
[0269] (l)在一个示例中,存储在区域中的参数被设置为在区域的中间和顶线处的子M x子N块的参数,例如,图11中的B10或B20。
[0270] 存储的仿射模型参数的使用示例
[0271] 示例6.相邻块中存储的仿射模型参数可以被用于导出当前块的仿射预测。
[0272] (a)在一个示例中,存储在相邻块中的参数可以被用于当前块的运动向量预测或运动向量编码。
[0273] (b)在一个示例中,存储在相邻块中的参数可以被用于导出当前仿射编码的块的控制点MV(CPMV)。
[0274] (c)在一个示例中,存储在相邻块中的参数可以被用于导出用于当前仿射编码的块的子块的运动补偿中的MV。
[0275] (d)在一个示例中,存储在相邻块中的参数可以被用于导出当前仿射编码的块的CPMV的预测。CPMV的该预测可以被用于当需要编码CPMV时预测当前块的CPMV。
[0276] 示例7.如果当前块利用从相邻块合并的仿射merge模式,则相邻块中存储的仿射模型参数可以由当前块继承。替代地,当前块的仿射模型可以从存储在一个或多个相邻块中的仿射模型参数中导出。
[0277] 示例8.可以从
编码器向解码器信令通知当前块的仿射模型参数。
[0278] (a)存储在相邻块中的参数可以用于预测当前块的参数。
[0279] 示例9.可以在对图片进行编码/解码之后存储仿射模型参数。可以使用存储的参数来预测要在将被编码/解码的另一图片中编码的块的仿射参数。
[0280] 示例10.两个参考列表(List0和List1)的参数均被存储。
[0281] (a)在一个示例中,两个参考列表的参数被独立存储。
[0282] (b)替代地,两个参考列表的参数可以与从一个到另一个的预测一起存储。
[0283] 示例11.提出对于亮度分量的仿射模型参数也可被存储以用于色度分量。当对色度分量进行编码时,相关联的仿射模型参数可从与亮度分量有关的那些中继承或导出。
[0284] (a)替代地,可以存储亮度分量的仿射模型参数,并且两个色度分量的仿射模型参数可以被一起存储或仅为一个色度分量存储或单独存储。
[0285] (b)在一个示例中,是否为不同的
颜色分量存储单独的仿射模型参数可以取决于颜色格式。
[0286] 可以利用仿射模型参数的时域预测的示例
[0287] 示例12.在一个示例中,一个或多个图片中存储的一个或多个块(例如,并置块)的仿射模型参数可被视为具有仿射merge模式的当前编码块的仿射参数。
[0288] (a)在一个示例中,在被用作以仿射merge模式的当前编码块的仿射参数之前,一个或多个图片中的一个或多个块(例如,并置块)的存储的参数可以被缩放(如果需要)。
[0289] (b)在一个示例中,可以检查多个时域相邻块以便于选择一组仿射模型参数。例如,CU的右下相邻4x4/8x8块的并置块,以及CU的中心4x4 /8x8块的并置块。
[0290] (c)在一个示例中,时域相邻块可以由相邻运动信息识别。
[0291] (d)在一个示例中,时域相邻块来自于所谓的并置图片。在一个示例中,该并置图片可以与TMVP/ATMVP中所使用的相同。
[0292] (e)在一个示例中,并置图片可以在VPS/SPS/PPS/条带报头/片组报头中信令通知。
[0293] (f)在一个示例中,与继承或直接从时间块中导出不同,不同的图片中的一个或多个块的相关联的仿射模型参数可以被用于预测当前块的仿射模型参数的编码,或预测当前块的CPMV编码。
[0294] 示例13.一个或多个其它图片中的一个或多个块(例如,并置块)的存储的参数可以被用作以仿射帧间模式的当前编码块的仿射参数的预测。
[0295] (a)在一个示例中,在被用作以仿射帧间模式的当前编码块的仿射参数的预测之前,另一图片中并置块的存储的参数可以被缩放(如果需要)。
[0296] (b)在一个示例中,可以检查多个时域相邻块。例如,CU的右下相邻4x4/8x8块的并置块,以及CU的中心4x4/8x8块的并置块。
[0297] (c)在一个示例中,时域相邻块可以由相邻运动信息识别。
[0298] (d)在一个示例中,并置图片可以与TMVP/ATMVP中所使用的相同。
[0299] (e)在一个示例中,并置图片可以在VPS/SPS/PPS/条带报头/片组报头中信令通知。
[0300] 示例14.存储在相邻M×N单元块(例如VTM中的4×4块)中的运动信息和该单元块中存储的仿射参数可以一起使用以导出在运动补偿中使用的 CPMV或子块的MV。
[0301] (a)假设单元块的左上位置的坐标为(x0,y0),则单元块的中心位置的坐标(xm,ym)可以计算为:
[0302] (i)xm=x0+M/2,ym=y0+N/2;
[0303] (ii)xm=x0+M/2-1,ym=y0+N/2-1;
[0304] (iii)xm=x0+M/2-1,ym=y0+N/2;
[0305] (iv)xm=x0+M/2,ym=y0+N/2-1;
[0306] (b)假设存储在单元块中的MV为(mvh0,mvv0),导出MV(mvh(x, y),mvv(x,y))的位置(x,y)的坐标。假设当前块左上角的坐标为(x0’, y0’),当前块的宽度和高度为w和h,则[0307] (i)为了导出CPMV,(x,y)可以是(x0’,y0’)或(x0’+w,y0’) 或(x0’,y0’+h)或(x0’+w,y0’+h)。
[0308] (ii)为了导出当前块的子块的MV,(x,y)可以是子块的中心。假设(x00,y00)是子块的左上位置,子块尺寸为M×N,则
[0309] (1)xm=x00+M/2,ym=y00+N/2;
[0310] (2)xm=x00+M/2-1,ym=y00+N/2-1;
[0311] (3)xm=x00+M/2-1,ym=y00+N/2;
[0312] (4)xm=x00+M/2,ym=y00+N/2-1;
[0313] (iii)在一个示例中,
[0314]
[0315] 如果相邻块以4-参数仿射模式编码。
[0316] (iv)在一个示例中,
[0317]
[0318] 如果相邻块以6-参数仿射模式编码。
[0319] (v)在一个示例中,
[0320]
[0321] 无论相邻块以4-参数仿射模式还是6-参数仿射模式编码。
[0322] (c)在一个示例中,当前块的CPMV从相邻块中存储的运动向量和参数导出,并且这些CPMV充当MVP以用于当前块的信令通知的CPMV。
[0323] (d)在一个示例中,当前块的CPMV从相邻块中存储的运动向量和参数导出,并且这些CPMV被用于导出用于运动补偿的每个子块的MV。
[0324] (e)在一个示例中,如果当前块用仿射merge编码,则用于运动补偿的每个子块的MV从相邻块中存储的运动向量和参数导出。
[0325] 示例15.在被用于仿射模型参数的继承/导出/预测之前,可以对来自多个相邻块(空域和/或时域相邻块)的仿射模型参数应用修剪(pruning)。
[0326] (a)可以比较不同的相邻块的仿射模型参数来决定来自一个相邻块的参数是否与来自已经在仿射merge或仿射AMVP候选列表中的另一个相邻块的参数不同或类似,以及来自相邻块的参数是否应放入候选列表中。假设{a, b,c,d,e,f}是来自相邻块的参数,并且{a’,b’,c’,d’,e’,f’}是来自相邻块的参数。当且仅当满足以下条件时,当具有参数{a’,b’,c’,d’,e’,f’} 的仿射模型已经在候选列表中时,具有参数{a,b,c,d,e,f}的仿射模型被认为是冗余的,并且不会被放入候选列表中:
[0327] (b)在一个示例中,a==a’。
[0328] (c)在一个示例中,b==b’。
[0329] (d)在一个示例中,c==c’。
[0330] (e)在一个示例中,d==d’。
[0331] (f)在一个示例中,a==a’且b==b’。
[0332] (g)在一个示例中,c==c’且d==d’。
[0333] (h)在一个示例中,a==a’且b==b’且c==c’。
[0334] (i)在一个示例中,a==a’且b==b’且c==c’且d==d’。
[0335] 示例16.是否以及如何应用所提出的方法可以取决于当前块和相邻块的位置。
[0336] (a)在一个示例中,仅当当前块处于CTU中的底部,或处于M×N区域(例如M=N=64)中的底部时,才应用一个或多个所提出的方法。
[0337] (b)在一个示例中,仅当当前块处于CTU中的顶部,或处于M×N区域(例如M=N=64)中的顶部时,才应用一个或多个所提出的方法。
[0338] (c)在一个示例中,仅当当前块处于CTU中的左侧,或处于M×N区域(例如M=N=64)中的左侧时,才应用一个或多个所提出的方法。
[0339] (d)在一个示例中,仅当当前块处于CTU中的右侧,或处于M×N区域(例如M=N=64)中的右侧时,才应用一个或多个所提出的方法。
[0340] 上面描述的示例可以结合到下面描述的方法的上下文中,例如,方法 1200,其可以实现在视频解码器/编码器处。
[0341] 图12示出了视频编码的示例性方法的流程图。方法1200包括,在步骤 1210处,在当前视频块和当前视频块的比特流表示之间的转换中的当前仿射计算步骤期间,选择第一组仿射模型参数的一个或多个参数,其中第一组仿射模型参数基于一个或多个先前的仿射计算步骤。
[0342] 在一些实施例中,并且在示例1的上下文中,第一组仿射模型参数包括对应于等式(1)中定义的6-参数仿射模型的6个变量(a,b,c,d,e,f)。在示例中,一个或多个参数包括(a,b,c,d,e,f)。在另一示例中,一个或多个参数包括(a,b,c,d)。
[0343] 在一些实施例中,并且在示例1的上下文中,第一组仿射模型参数包括对应于等式(2)中定义的4-参数仿射模型的4个变量(a,b,e,f)。在一个示例中,一个或多个参数包括(a,b,e,f)。在另一示例中,一个或多个参数包括(a,b)。
[0344] 在一些实施例中,并且在示例11的上下文中,当前视频块包括亮度分量和色度分量,并且第一组仿射模型参数与亮度分量和色度分量两者相关联。
[0345] 在一些实施例中,并且在示例12的上下文中,第一组仿射模型参数与一个或多个并置块相关联。在其它实施例中,第一组仿射模型参数与多个时域相邻块中的一个时域相邻块相关联。例如,一个时域相邻块基于相邻运动信息来标识。例如,一个时域相邻块来自并置图片。例如,当前视频块的TMVP 或ATMVP基于并置图片。例如,并置图片在视频参数集(VPS)、序列参数集(SPS)、图片参数集(PPS)、条带报头或图块组报头中信令通知。
[0346] 在一些实施例中,并且在示例14的上下文中,第一组仿射模型参数与相邻的M×N单元块相关联,并且进行转换进一步基于对应于相邻的M×N单元块的运动信息。此外,方法1200还包括导出用于运动补偿的当前视频块的子块的CPMV或运动向量的步骤。
[0347] 方法1200包括,在步骤1220处,基于一个或多个参数并通过克制使用一个或多个先前的仿射计算步骤的控制点运动向量(CPMV),进行当前视频块和比特流表示之间的转换。在一些实施例中,该转换从比特流表示(例如,可以在视频解码器中实现)生成当前块。在其它实施例中,该转换从当前块 (例如,可以在视频编码器中实现)生成比特流表示。
[0348] 在一些实施例中,并且在示例6的上下文中,第一组仿射模型参数与当前视频块的相邻块相关联。在示例中,进行该转换包括当前视频块的运动向量预测或运动向量编码。在另一示例中,进行该转换包括导出当前视频块的一个或多个CPMV。在又一示例中,进行该转换包括导出用于当前视频块的子块的运动补偿的一个或多个运动向量。在另一示例中,进行该转换包括导出当前视频块的一个或多个CPMV的预测。
[0349] 在一些实施例中,并且在示例10的上下文中,第一组仿射模型参数与第一参考列表相关联,并且进行该转换进一步基于,与第二参考列表相关联的第二组仿射模型参数的一个或多个参数。
[0350] 在一些实施例中,并且在示例13的上下文中,方法1200还包括以下步骤:在进行该转换之前,缩放第一组仿射模型参数的一个或多个参数。
[0351] 在一些实施例中,并且在示例4的上下文中,方法1200还包括以下步骤:在进行该转换之前,剪裁第一组仿射模型参数的一个或多个参数。
[0352] 在一些实施例中,并且在示例15的上下文中,方法1200还包括以下步骤:在进行该转换之前,修剪与多个时域相邻块相关联的多组仿射模型参数。
[0353] 在一些实施例中,并且在示例16的上下文中,进行转换进一步基于当前视频块的位置。
[0354] 16.所公开的技术的示例实现方式
[0355] 图13是视频处理装置1300的框图。装置1300可以用于实现本文描述的一种或多种方法。装置1300可以实施在智能手机、平板计算机、计算机、
物联网(IoT)接收器等中。装置1300可以包括一个或多个处理器1302、一个或多个存储器1304和视频处理硬件1306。(一个或多个)处理器1302可以被配置为实现本文件中描述的一种或多种方法(包括但不限于方法1200)。 (一个或多个)存储器1304可以用于存储用于实现本文描述的方法和技术的数据和代码。视频处理硬件1306可以用于在硬件电路中实现本文件中描述的一些技术。
[0356] 图14示出了根据公开的技术的视频处理方法的示例的流程图。方法1400 包括,在步骤1410处,在当前块和当前块的比特流表示之间的转换中的当前仿射计算步骤期间,选择一组仿射模型参数的一个或多个参数;在步骤1420 处,存储当前块的所述一个或多个参数;以及在步骤1430处,基于一个或多个参数,进行当前块和当前块的比特流表示之间的转换。
[0357] 图15示出了根据公开的技术的视频处理方法的另一示例的流程图。方法 1500包括,在步骤1510处,在当前块和当前块的比特流表示之间的转换期间,获取当前块的运动信息,其中当前块的运动信息基于当前块的相邻块的至少一个仿射模型参数;以及在步骤1520处,基于运动信息,进行当前块和当前块的比特流表示之间的转换。
[0358] 在本文件中,术语“视频处理”可以指视频编码、视频解码、视频压缩或视频解压缩。例如,视频压缩算法可以在视频的像素表示转换到相应的比特流表示或相反过程期间应用。
[0359] 从前述内容可以理解,本文已经出于说明的目的描述了本公开技术的具体实施例,但是在不脱离本发明的范围的情况下可以进行各种
修改。因此,除了所附权利要求之外,本发明所公开的技术不受限制。
[0360] 本专利文件描述的主题和功能操作的实现方式可以以各种系统实现,以数字
电子电路实现,或者以计算机软件、
固件或
硬件实现,包括本说明书中公开的结构及其结构等同物,或者以它们中的一个或多个的组合实现。本说明书所描述的主题的实现方式可以实现为一个或多个
计算机程序产品,即,在有形和非暂时性计算机可读介质上编码的一个或多个计算机程序指令模块,用于由
数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储
基板、存储器设备、影响机器可读传播
信号的物质组合、或者它们中的一个或多个的组合。术语“数据处理单元”或“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建
执行环境的代码,例如,构成处理器固件、协议栈、
数据库管理系统、
操作系统、或者它们中的一个或多个的组合的代码。
[0361] 计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言,并且可以以任何形式来部署计算机程序,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其它单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其它程序或数据的文件的一部分中(例如,存储在
标记语言文件中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。可以部署计算机程序以在一个计算机上或在位于一个
站点上或分布在多个站点上并由通信网络互连的多个计算机上执行。
[0362] 本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由
专用逻辑电路执行,并且装置也可以实现为专用
逻辑电路,例如FPGA(现场可编程
门阵列)或ASIC(
专用集成电路)。
[0363] 举例来说,适合于执行计算机程序的处理器包括通用和专用
微处理器、以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从
只读存储器或
随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合到用于存储数据的一个或多个
大容量存储设备,例如磁盘、磁光盘或光盘,以从该一个或多个大容量存储设备接收数据,或将数据传递到该一个或多个大容量存储设备,或者既接收又传递数据。然而,计算机不需要具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的
非易失性存储器、介质和存储器设备,举例来说,包括
半导体存储器设备,例如EPROM、EEPROM和闪存设备。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0364] 旨在将说明书与附图一起仅视为示例性的,其中示例性意味着示例。此外,除非上下文另有明确指示,否则“或”的使用旨在包括“和/或”。
[0365] 虽然本专利文件包含许多细节,但这些细节不应被解释为对任何发明或可要求保护的范围的限制,而是作为特定于特定发明的特定实施例的特征的描述。在本专利文件中,在分开的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以分开地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下,可以从所要求保护的组合中去除来自该组合的一个或多个特征,并且所要求保护的组合可以指向子组合或子组合的变型。
[0366] 类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为要求以所示的特定顺序或按顺序执行这样的操作,或者执行所有示出的操作,以实现期望的结果。此外,在本专利文件中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都要求这样的分离。
[0367] 仅描述了几个实现方式和示例,并且可以基于本专利文件中描述和示出的内容来做出其它实现方式、增强和变型。