CN114339236A - 预测模式解码方法、电子设备及机器可读存储介质 - Google Patents
预测模式解码方法、电子设备及机器可读存储介质 Download PDFInfo
- Publication number
- CN114339236A CN114339236A CN202111673156.2A CN202111673156A CN114339236A CN 114339236 A CN114339236 A CN 114339236A CN 202111673156 A CN202111673156 A CN 202111673156A CN 114339236 A CN114339236 A CN 114339236A
- Authority
- CN
- China
- Prior art keywords
- mode
- value
- flag
- current block
- decoding
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请提供一种预测模式解码方法、电子设备及机器可读存储介质,该预测模式解码方法包括:针对当前块,在对待解码模式标记位的二值化编码信息进行解码之前,根据当前块的特定信息判断当前块是否满足所述待解码模式标记位的免解码条件;若所述当前块满足所述待解码模式标记位的免解码条件,则根据所述特定信息,确定所述待解码模式标记位的二值化取值为第一取值或第二取值;若所述当前块不满足所述待解码模式标记位的免解码条件,则读取所述待解码模式标记位的二值化编码信息,对所述编码信息进行解码,确定所述待解码模式标记位的二值化取值为第一取值或第二取值。该方法可以提高编解码性能。
Description
技术领域
本申请涉及视频图像编解码技术,尤其涉及一种预测模式解码方法、电子设备及机器可读存储介质。
背景技术
预测模式是指对视频帧中的图像块进行解码或编码的模式。由于预测模式包括多种模式,因此,针对每种预测模式配置一个控制开关标记位,控制开关标记位是否开启了相应预测模式。编码端通过编码控制开关标记位以指示该图像块启用哪种预测模式。解码端可以对控制开关标记位的编码进行解码,以确定该图像块采用的预测模式。
相关技术中,在编码当前块时,对于任一预测模式,编码端判断该预测模式是否启用,若启用,则编码预测模式A的控制开关标记位取值为1;若未启用,则编码预测模式A的控制开关标记位取值为0。按照该方式编码各个预测模式的控制开关标记位之后,在解码当前块时解码端解码该预测模式的控制开关标记位,若解码出控制开关标记位取值为1,则确定当前块启用该预测模式。
在该方式中,解码端需要通过解码控制开关标记位才能确定当前块是否启用该预测模式,导致编解码预测模式的效率较低。
发明内容
有鉴于此,本申请提供一种预测模式解码方法、电子设备及机器可读存储介质。
具体地,本申请是通过如下技术方案实现的:
根据本申请实施例的第一方面,提供一种预测模式解码方法,包括:
针对当前块,在对待解码模式标记位的二值化编码信息进行解码之前,根据当前块的特定信息判断当前块是否满足所述待解码模式标记位的免解码条件;
若所述当前块满足所述待解码模式标记位的免解码条件,则根据所述特定信息,确定所述待解码模式标记位的二值化取值为第一取值或第二取值;
若所述当前块不满足所述待解码模式标记位的免解码条件,则读取所述待解码模式标记位的二值化编码信息,对所述编码信息进行解码,确定所述待解码模式标记位的二值化取值为第一取值或第二取值;
其中,所述特定信息包括至少一个已获取的模式标记位的取值和/或至少一个预测模式是否可用的解码信息。
根据本申请实施例的第二方面,提供一种预测模式编码方法,包括:
针对当前块,在将待编码模式标记位的二值化编码信息写入码流之前,判断当前块是否满足所述待编码模式标记位的免编码条件;
若所述当前块满足所述待编码模式标记位的免编码条件,则跳过将所述待编码模式标记位的二值化编码信息写入码流的步骤;
若所述当前块不满足所述待编码模式标记位的免编码条件,则将待编码模式标记位的二值化编码信息写入码流。
根据本申请实施例的第三方面,提供一种解码装置,包括:
判断单元,用于针对当前块,在对待解码模式标记位的二值化编码信息进行解码之前,根据当前块的特定信息判断当前块是否满足所述待解码模式标记位的免解码条件;
解码单元,用于若所述当前块满足所述待解码模式标记位的免解码条件,则根据所述特定信息,确定所述待解码模式标记位的二值化取值为第一取值或第二取值;
解码单元,还用于若所述当前块不满足所述待解码模式标记位的免解码条件,则读取所述待解码模式标记位的二值化编码信息,对所述编码信息进行解码,确定所述待解码模式标记位的二值化取值为第一取值或第二取值;
其中,所述特定信息包括至少一个已获取的模式标记位的取值和/或至少一个预测模式是否可用的解码信息。
根据本申请实施例的第四方面,提供一种编码装置,包括:
编码单元,用于针对当前块,在将待编码模式标记位的二值化编码信息写入码流之前,判断当前块是否满足所述待编码模式标记位的免编码条件;
编码单元,还用于若所述当前块满足所述待编码模式标记位的免编码条件,则跳过将所述待编码模式标记位的二值化编码信息写入码流的步骤;若所述当前块不满足所述待编码模式标记位的免编码条件,则将待编码模式标记位的二值化编码信息写入码流。
根据本申请实施例的第五方面,提供一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器用于执行机器可执行指令,以实现第一方面的预测模式解码方法或第二方面的预测模式编码方法。
本申请实施例的预测模式解码方法,通过在对待解码模式标记位的二值化编码信息进行解码之前,基于当前块的特定信息判断当前是否满足待解码模式标记位的免解码条件,并在当前块满足待解码模式标记位的免解码条件的情况下,不对待解码模式标记位的二值化编码信息进行解码,而是根据该特定信息,确定待解码模式标记位的二值化取值,实现了在不对待解码模式标记位的二值化编码信息进行解码的情况下确定该待解码模式标记位的二值化取值,从而,可以节省编码比特,提高编解码性能。
附图说明
图1A是本申请一示例性实施例示出的一种AWP模式的权重导出的示意图;
图1B是本申请一示例性实施例示出的一种ETMVP模式示意图;
图1C是本申请一示例性实施例示出的一种原始匹配块与空间相邻块的关系示意图;
图2A~2B是本申请示例性实施例示出的块划分的示意图;
图3是本申请一示例性实施例示出一种预测模式解码方法的流程示意图;
图4是本申请一示例性实施例示出一种预测模式编码方法的流程示意图;
图5A~图5J是本申请实施例示出的模式标记位二叉树示意图;
图6是本申请一示例性实施例示出一种电子设备的硬件结构示意图;
图7是本申请一示例性实施例示出一种解码装置的结构示意图;
图8是本申请一示例性实施例示出一种编码装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面先对现有视频编码标准中块划分技术、现有帧内子块划分方案以及本申请实施例涉及的部分技术术语进行简单说明。
为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面先对本申请实施例涉及的部分技术术语以及视频编解码的主要流程进行简单说明。
一、技术术语
1、标记位编码(Flag Coding):在视频编码中,存在很多预测模式,如skip(跳过)模式、direct(直接)模式等。对于某个块,其可能采用其中的一种预测模式。为了表示采用何种预测模式,每个块需通过编码对应的标记位进行标记。即,在编码端,通过编码端决策,确定该标记位的值,然后编码传递到解码端。而解码端通过解析标记位,确定当前块是否采用对应预测模式。
2、direct模式和skip模式:direct模式和skip模式,直接复用周围(时域或空域相邻或相近块)的运动信息来获得当前块的运动信息。skip模式是一种特殊的direct模式。skip模式下,不需要编码残差。
direct模式和skip模式通过索引(可以称为模式索引)值,确定当前块的运动信息是通过参考帧上的相邻块的运动信息获取(对应SBTMVP模式或TMVP模式),还是通过周围块运动矢量进行角度外推获取(对应MVAP模式),或者是通过历史运动信息获取(对应HMVP模式)、或者一些默认运动信息。
3、InterPF模式:该模式中,针对采用direct模式(非skip模式和非普通Inter模式)编码的帧间预测块,使用帧间预测像素、其左侧、其右侧、其上方、其下方共五处的像素值加权平均得到最后的预测值。
4、UMVE(Ultimate Motion Vector Expression,高级运动矢量表达模式)模式:该模式是在已经生成的运动候选基础上进行偏移,从而得到更优的运动候选。将一个运动候选作为起始点,从上下左右四个方向进行搜索,偏移分别为1/4、1/2、1、2、4像素,有2个起始点(2base),4个偏移方向(4direction)和5种偏移(5offset),总共生成40个运动候选。
示例性的,UMVE模式可以包括常规的UMVE模式,以及UMVE结合InterPF的模式(即InterPF模式中的帧间预测的值通过UMVE模式获得)。
5、AWP(Angular Weighted Prediction,角度加权预测模式)模式:该模式是为了提升存在两种不同运动物体的边界块的模式。该模式首先获得两个不同运动信息的预测值P0和P1,再基于类似帧内角度预测的方法获得像素级权重以实现边界精确表达。
示例性的,一个权重的例子如图1A所示。
6、ETMVP(Enhanced Temporal Motion Vector Prediction,增强时域运动矢量预测模式)模式:该模式中,在List1参考帧列表的第一帧中找到与当前编码单元对应位置的匹配块,然后在该此匹配块的基础上进行上下左右偏移,得到新的匹配块,其示意图可以如图1B所示。
7、Affine(仿射)模式:该模式中,基于4参数或6参数仿射运动模型,推导获得当前块各个子块的运动信息。基于各个子块的运动信息,通过运动补偿获得当前块的预测值。
示例性的,Affine模式可以包括常规Affine模式,以及结合UVME的Affine_UMVE模式(即affine模式复用的周围运动信息可通过类似UMVE模式的方法进行调整)。
8、帧类型(frame type):若当前帧不可参考其他帧的信息进行编码,则当前帧为I帧;若当前帧的块只允许参考其他某1帧(但不能超过1帧)的信息进行编码,则当前帧为P帧;若当前帧的块允许同时参考其他某1帧或某2帧的信息进行编码,则当前帧为B帧。
9、序列头信息(sequence header,简称sh):该序列头信息中,存在确定整个序列中是否允许某些工具开关(方法)的标记位。若该标记位为1,则该序列中,该工具(方法)允许在该序列的编码过程中启用;否则,该工具(方法)无法在该序列的编码过程中启用。
10、图像头信息(picture header,简称ph):该图像头信息中,存在确定当前图像中是否允许某些工具开关(方法)的标记位。若该标记位为1,则该图像中,该工具(方法)允许在该图像的编码过程中启用;否则,该工具(方法)无法在该图像的编码过程中启用。
11、率失真原则(Rate-Distortion Optimized,简称RDO):评价编码效率的指标包括:码率和峰值信噪比(Peak Signal to Noise Ratio,简称PSNR)。码率越小,则压缩率越大;PSNR越大,重建图像质量越好。在模式选择的时候,判别公式实质上也就是对二者的综合评价。
模式对应的代价:J(mode)=D+λ*R。其中,D表示失真(Distortion),通常使用SSE(差值均方和)指标来衡量,SSE是指重建块与源图像块的差值均方和;λ是拉格朗日乘子;R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。
在模式选择时,若使用RDO原则去对编码模式做比较决策,通常可以保证编码性能最佳。
12、串复制帧内预测(intra string copy prediction):在相同解码图像中使用已解码的样值复制至当前样本区域,作为当前样本预测值的模式。复制样值的区域的2维形状和样值数目与当前样本区域的2维形状和样值数目相同。
13、串矢量(string vector):用于串复制帧内预测模式的二维矢量,其值为当前串和参考串之间的坐标偏移量,其中,当前串与参考串均在当前图像中。
串复制帧内预测模式的编码单元按照往返扫描顺序划分为IscPartNum个部分,对各部分依次进行处理,根据IscMatchTypeFlag[i](i=0~IscPartNum-1)判断第i部分的类型。如果第i部分的类型为串,则按某一方法解码得到串矢量;如果第i部分的类型为不完全匹配串且NumMatchedPixel[i]大于0,则按另一方方法解码得到串矢量;否则,直接从码流中获得未匹配像素各分量的值。
二、下面对ETMVP模式的一种增强型运动信息导出方法进行说明
第一步,假设F是当前预测单元E的相邻预测块,导出当前预测单元的第一阶段运动矢量mvFirstStage、参考索引refFirstStage以及参考方向predFirstStage;
第二步,利用参考索引refFirstStage以及参考方向predFirstStage来从参考帧中找到匹配块;
在一种实现方式中,假设(Xpos,Ypos)当前预测单元在图像中的左上角坐标,(x_ctb_pos,y_ctb_pos)为当前CTU在图像中的左上角坐标,cu_width和cu_height为当前预测单元的宽度和高度,pic_width和pic_height为当前图像的宽度和高度,(Mx,My)为refFirstStage和predFirstStage对应的参考帧的匹配块在参考帧中的左上角坐标,则:
Mx=Clip3(((Xpos+4)>>3)<<3,x_ctb_pos,min(x_ctb_pos+128-cu_width,pic_width-cu_width))
My=Clip3(((Ypos+4)>>3)<<3,y_ctb_pos,min(y_ctb_pos+128-cu_height,pic_height-cu_height))
“>>”为右移运算,“<<”为左移运算
min(x,y)为取x和y中的较小值。
第三步,根据EtmvpCandIdx确定增强型运动矢量预测模式所对应的匹配块的左上角坐标(Px,Py);
示例性的,可以将列表EtmvpCandArray中第EtmvpCandIdx+1个候选模式匹配块的左上角坐标作为当前块对应的匹配块的左上角坐标(Px,Py)。
在一种实现方式中,列表EtmvpCandArray的构建方法的如下:
a)、将ETMVP模式0加入EtmvpCandArray中,确定(Mx,My)为匹配块的左上角坐标;
b)、若(Mx,My)所在的匹配块未超过当前CTU或者图像的下边界,则判断图1C中A1和C3位置的运动信息是否相同,以及A2和C4位置的运动信息是否相同,若至少有一组运动信息不同,则将Etmvp模式1加入EtmvpCandArray中,确定(Mx,My+8)为匹配块的左上角坐标,否则进行步骤c);
c)、若(Mx,My)所在的匹配块未超过当前CTU或者图像的右边界,则判断图1C中A1和B2位置的运动信息是否相同,以及A3和B4位置的运动信息是否相同,若至少有一组运动信息不同,则将Etmvp模式2加入EtmvpCandArray中,确定(Mx+8,My)为匹配块的左上角坐标,否则进行步骤d);
d)、若(Mx,My)所在的匹配块未超过当前CTU或者图像的上边界,则判断图1C中A3和C1位置的运动信息是否相同,以及A4和C2位置的运动信息是否相同,若至少有一组运动信息不同,则将Etmvp模式3加入EtmvpCandArray中,确定(Mx,My-8)为的匹配块的左上角坐标,否则进行步骤e);
e)、若(Mx,My)所在的匹配块未超过当前CTU或者图像的左边界,则判断图1C中A2和B1位置的运动信息是否相同,以及A4和B3位置的运动信息是否相同,若至少有一组运动信息不同,则将Etmvp模式4加入EtmvpCandArray中,确定(Mx-8,My)为的左上角坐标,否则进行步骤f);
f)、若EtmvpCandArray的长度小于阈值T,则将EtmvpCandArray中最后一个模式进行重复填充操作,直至EtmvpCandArray长度为T。
示例性的,T=5。
第四步,根据匹配块的左上角坐标(Px,Py)确定当前预测单元的每个子块的运动信息。
在一种实现方式中,第四步的实现方法如下:
a)、对于当前解码单元,i=0~(cu_width>>3)-1,j=0~(cu_height>>3)-1),(i,j)为当前解码单元内的8*8子块的索引,cu_width的当前解码单元的宽,cu_height为当前解码单元的高。MotionArrayLX为当前解码单元内部子块的运动信息(包括运动矢量MvArrayLX[i][j]、参考索引RefArrayLX[i][j]和预测方向PredDirArrayLX[i][j]),若当前块所在图像是P图像,则X为0;如果当前块所在图像是B图像,则X为0或1。
b)、判断匹配块中(Px+(i<<3),Py+(j<<3))坐标对应的8*8子块的运动信息是否可用,若可用,则将该运动信息伸缩到List0和List1中的第一帧,并赋给MotionArrayLX[i][j];如果不可用,则用第一阶段的运动信息mvFirstStage伸缩到List0和List1中的第一帧,并赋给MotionArrayLX[i][j]。
三、视频编码标准中块划分技术
在HEVC中,一个编码树单元(Coding Tree Unit,简称CTU)使用四叉树递归划分成CU。在叶子节点CU级确定是否使用帧内编码或者帧间编码。CU可以进一步划分成两个或者四个预测单元(Prediction Unit,简称PU),同一个PU内使用相同的预测信息。在预测完成后得到残差信息后,一个CU可进一步四叉划分成多个变换单元(Transform Units,简称TU)。例如,本申请中的当前图像块即为一个PU。
但是在最新提出的通用视频编码(Versatile Video Coding,简称VVC)中的块划分技术有了较大变化。一种混合了二叉树/三叉树/四叉树的划分结构取代了原先的划分模式,取消了原先CU,PU,TU的概念的区分,支持了CU的更灵活的划分方式。其中,CU可以是正方形也可以是矩形划分。CTU首先进行四叉树的划分,然后四叉树划分的叶子节点可以进一步进行二叉树和三叉树的划分。图2A所示,CU共有五种划分类型,分别为四叉树划分,水平二叉树划分,垂直二叉树划分,水平三叉树划分和垂直三叉树划分,如图2B所示,一种CTU内的CU划分可以是上述五种划分类型的任意组合由上可知不同的划分方式,使得各个PU的形状有所不同,如不同尺寸的矩形,正方形。本申请中涉及的块划分可以采用VVC中的块划分技术,也可以采用HEVC中的块划分技术,也可以采用其他标准中规定的块划分技术。
由于每个模式的标记位的编码存在限制条件,只有所有条件满足时某个模式才可能启用,即其标记位才需要编码。而这些条件在编码第一个模式(即regular merge模式)时即可知道。在编码前面的标记位时,则可根据这些条件跳过当前模式标记位的编码,以节省码率开销。
例如,当编码direct模式时,若基于当前条件可知UVME、AFFINE等剩余所有模式均无法启用,则其实可不编码当前direc模式的标记位。在这种情况下,解码端也只需要通过判断这些已知条件,即可确定UVME、AFFINE等剩余所有模式均无法启用,因此只能启用direct模式,即不需要解码direct模式的标记位即可确定其为1。
请参见图3,为本申请实施例提供的一种预测模式解码方法的流程示意图,如图3所示,该预测模式解码方法可以包括以下步骤:
步骤S300、针对当前块,在对待解码模式标记位的二值化编码信息进行解码之前,根据当前块的特定信息判断当前块是否满足待解码模式标记位的免解码条件。若是,则转至步骤S310;否则,转至步骤S320。
示例性的,该特定信息可以包括至少一个已获取的模式标记位的取值和/或至少一个预测模式是否可用的解码信息。
本申请实施例中,为了避免必须通过解码模式标记位的二值化编码信息才能确定该模式标记位的取值,在对待解码模式标记位的二值化编码信息进行解码之前,可以根据当前块的特定信息判断当前块是否满足待解码模式标记位的免解码条件。
需要说明的是,在本申请实施例中,所提及的免解码是指不需要从码流中解析编码信息,例如,满足待解码模式标志位的免解码条件是指不需要从码流中解析待解码模式标记位的编码信息。
待解码模式标记是指当前时间需要确定其取值的模式标记位,该待解码模式标记位是在确定当前块启用的预测模式过程中,需要确定其取值的模式标记位。当前块是指当前待解码的图像块。
举例来说,假设当前块的候选预测模式包括预测模式A~预测模式D,模式标记位1用于指示是否启用预测模式A和预测模式B中的一个;模式标记位2用于指示是否启用模式A;模式标记位3用于指示是否启用模式C。为了确定当前块启用的预测模式,需要先确定模式标记位1的取值,以及模式标记位2或模式标记位3的取值。上述待解码标记位可以为模式标记位1、模式标记位2或模式标记位3。
待解码模式标记位的免解码条件是指可以在不对待解码模式标记位的二值化编码信息解码的情况下,确定待解码模式标记位的取值的条件。
例如,待解码模式标记位的免解码条件可以为待解码模式标记位的其中一个取值下的候选预测模式均不可用。
仍以上一示例为例,对于模式标记位1,该模式标记位的免解码条件可以为预测模式A和预测模式B均不可用,或,预测模式C和预测模式D均不可用。
示例性的,待解码模式标记位的免解码条件还可以包括待解码模式标记位之前的模式标记位的取值未指向该待解码模式标记位(即当前块启用的预测模式不是该待解码模式标记位的任一取值下的候选预测模式),或,待解码模式标记位之前的模式标记位的取值指向该待解码模式标记位(即当前块启用的预测模式是该待解码模式标记位的其中一个取值下的候选预测模式),且待解码模式标记位的其中一个取值下的候选预测模式均不可用。
仍以上一示例为例,假设模式标记位1的取值为第一取值时,指示预测模式A和预测模式B均不启用,即此时,需要基于模式标记位3的取值确定当前块是否启用预测模式C;则对于模式标记位3,该模式标记位3的免解码条件可以包括模式标记位1的取值为第二取值(此时模式标记位3的取值为用于指示不启用预测模式C的取值),或,模式标记位1的取值为第一取值,且预测模式C或预测模式D其中一个不可用。
例如,若预测模式D不可用,则模式标记位3的取值为用于指示启用预测模式C的取值。
步骤S310、根据该特定信息,确定待解码模式标记位的二值化取值为第一取值或第二取值。
本申请实施例中,若当前块满足待解码模式标记位的免解码条件,则可以跳过对待解码模式标记位的二值化编码信息进行解码的步骤,即不对待解码模式标记位的二值化编码信息进行解码,而是根据当前块的特定信息确定待解码模式标记位的二值化取值为第一取值或第二取值。
示例性的,当根据该特定信息,确定待解码模式标记位的二值化取值为第一取值下的候选预测模式均不可用时,可以确定该待解码模式标记位的二值化取值为第二取值。
示例性的,第一取值为0,第二取值为1;或,第一取值为1,第二取值为0。
为便于理解和描述,下文中以第一取值为0,第二取值为1为例。
步骤S320、读取待解码模式标记位的二值化编码信息,对该编码信息进行解码,确定待解码模式标记位的二值化取值为第一取值或第二取值。
本申请实施例中,若当前块不满足待解码模式标记位的免解码条件,则可以通过对待解码模式标记位的二值化编码信息进行解码的方式,确定待解码模式标记位的二值化取值为第一取值或第二取值。
示例性的,待解码模式标记位的编解码方式可以包括基于上下文的算术二进制编解码或无上下文的二进制编解码。
需要说明的是,在本申请实施例中,图3所示流程中是通过判断当前块是否满足待解码模式标记位的免解码条件的方式来确定是否需要对待解码模式的二值化编码信息进行解码的。但实施中,也可以通过设置解码条件,并判断当前块是否满足待解码模式标记位的解码条件的方式来确定需要对待解码模式二值化编码信息解码。
示例性的,图3所示流程也可以描述为:针对当前块,在对待解码模式标记位的二值化编码信息进行解码之前,根据当前块的特定信息判断当前块是否满足待解码模式标记位的解码条件,若当前块满足待解码模式标记位的解码条件,则读取待解码模式标记位的二值化编码信息,对编码信息进行解码,确定待解码模式标记位的二值化取值为第一取值或第二取值;若当前块不满足待解码模式标记位的解码条件,则根据特定信息,确定待解码模式标记位的取值为第一取值或第二取值。该特定信息包括至少一个已获取模式标记位的取值和/或至少一个预测模式是否可用的解码信息。
示例性的,针对当前块,若当前块满足待解码模式标记位的免解码条件也可以描述为不满足待解码模式标记位的解码条件;
若当前块不满足待解码模式标记位的免解码条件也可以描述为满足待解码模式标记位的解码条件。
因而,本申请实施例中,当前块是否满足待解码模式标记位的免解码条件的描述均可以替代为当前块是否满足待解码标记位的解码条件,二者的区别在于前者判断结果为是的分支的执行流程为后者判断结果为否的分支的执行流程;前者判断结果为否的分支的执行流程为后者判断结果为是的分支的执行流程。
可见,在图3所示流程中,通过在对待解码模式标记位的二值化编码信息进行解码之前,基于当前块的特定信息判断当前是否满足待解码模式标记位的免解码条件,并在当前块满足待解码模式标记位的免解码条件的情况下,不对待解码模式标记位的二值化编码信息进行解码,而是根据该特定信息,确定待解码模式标记位的二值化取值,实现了在不对待解码模式标记位的二值化编码信息进行解码的情况下确定该待解码模式标记位的二值化取值,从而,可以节省编码比特,提高编解码性能。
在一些实施例中,步骤S300中,根据当前块的特定信息判断是否当前块是否满足待解码模式标记位的免解码条件之前,还可以包括:
在对第一目标预测模式的控制开关标记位的二值化编码信息进行解码之前,获取并根据当前块的解码信息判断当前块是否满足第一目标预测模式的免解码条件;
若当前块满足第一目标预测模式的免解码条件,则跳过执行对第一目标预测模式的控制开关标记位的二值化编码信息进行解码的步骤,并确定第一目标预测模式的控制开关标志记的二值化取值为第一取值;
若当前块不满足第一目标预测模式的免解码条件,则执行上述对第一目标预测模式的控制开关标记位的二值化编码信息进行解码的步骤;
若解码出第一目标预测模式的控制开关标记位的二值化取值为第一取值,则执行上述根据当前块的特定信息判断是否当前块是否满足待解码模式标记位的免解码条件的步骤。
示例性的,考虑到编解码流程中,在确定一个预测模式启用的情况,或在确定该预测模式不启用的情况下,当前块的候选预测模式通常是不同的。
举例来说,以skip模式为例,在skip模式启用的情况下,候选预测模式可以包括常规skip模式;在skip模式不启用的情况下,候选预测模式不包括常规skip模式。
示例性的,在根据当前块的特定信息判断是否当前块是否满足待解码模式标记位的免解码条件之前,还可以确定当前块是否启用第一目标预测模式。
示例性的,若第一目标预测模式不启用,则不需要对步骤S300中的待解码模式标记位的二值化编码信息进行解码。
为了避免必须通过解码第一目标预测模式的控制开关标记位的二值化编码信息才能确定当前块是否启用第一目标预测模式,在对第一目标预测模式的控制开关标记位的二值化编码信息进行解码之前,可以获取并根据当前块的解码信息判断当前块是否满足第一目标预测模式的免解码条件。
若当前块满足第一目标预测模式的模式标记位的免解码条件,则可以不需要对第一目标预测模式的控制开关标记位的二值化编码信息进行解码,并确定第一目标预测模式的控制开关标记位的二值化取值为第一取值。
本申请中任意一个模式标志位的免解码或免解码,其含义是无需通过读取模式标记位的二值化编码信息,以及无需通过解码获得该模式标记位的取值,而是直接推导该模式标记位的取值。本申请中任意一个模式标志位需要解码或解码,其含义是通过从码流中读取出模式标记位的二值化编码信息并通过解码来获得该模式标记位的取值。
示例性的,第一目标预测模式的免解码条件可以包括不启用第一目标预测模式的条件,该第一取值为用于指示不启用第一目标预测模式的取值。
需要说明的是,在该情况下,不需要对步骤S300中的待解码模式标记位的二值化编码信息进行解码。
若当前块不满足第一目标预测模式的免解码条件,则对第一目标预测模式的控制开关标记位的二值化编码信息进行解码,以确定第一目标预测模式的控制开关标记位的二值化取值。
若解码出第一目标预测模式的控制开关标记位的二值化取值为第二取值,则确定启用第一目标预测模式,此时,可以按照图3所示流程确定待解码模式标记位的二值化取值。
需要说明的是,若未解码出第一目标预测模式的控制开关标记位的二值化取值,例如码流中不存在第一目标预测模式的控制开关标记位的二值化编码信息,或,解码出第一目标预测模式的控制开关标记位的二值化取值为第二取值,则确定不启用第一目标预测模式,在该情况下,不需要对步骤S300中的待解码模式标记位的二值化编码信息进行解码。
在一个示例中,上述获取并根据当前块的解码信息判断当前块是否满足第一目标预测模式的免解码条件之前,还可以包括:
在对第二目标预测模式的控制开关标记位的二值化编码信息进行解码之前,获取并根据当前块的解码信息判断当前块是否满足第二目标预测模式的免解码条件;
若当前块满足第二目标预测模式的免解码条件,则跳过执行对第二目标预测模式的控制开关标记位的二值化编码信息进行解码的步骤,并确定第二目标预测模式的控制开关标记位的二值化取值为第一取值;
若当前块不满足第二目标预测模式的免解码条件,则执行上述对第二目标预测模式的控制开关标记位的二值化编码信息进行解码的步骤;
若解码出第二目标预测模式的控制开关标记位的二值化取值为第二取值,则执行获取并根据当前块的解码信息判断当前块是否满足第一目标预测模式的免解码条件的步骤。
示例性的,不同的预测模式是否启用是存在一定的顺序的。
例如,对于skip模式和direct模式,当skip模式启用时,direct模式是不会启用的;在skip模式不启用的情况下,才需要考虑direct模式是否启用。
示例性的,第一目标预测模式是在第二目标预测模式不启用的情况下,才需要确定是否启用的预测模式。
为了避免必须通过解码第二目标预测模式的控制开关标记位的二值化编码信息才能确定当前块是否启用第二目标预测模式,在对第二目标预测模式的控制开关标记位的二值化编码信息进行解码之前,可以获取并根据当前块的解码信息判断当前块是否满足第二目标预测模式的免解码条件。
若当前块满足第二目标预测模式的免解码条件,则可以不需要对第二目标预测模式的控制开关标记位的二值化编码信息进行解码,并确定第二目标预测模式的控制开关标记位的二值化取值为用于指示不启用第二目标预测模式的取值(即上述第一取值),此时,可以按照上述实施例中描述的方式确定是否启用第一目标预测模式。
若当前块不满足第二目标预测模式的免解码条件,则对第二目标预测模式的控制开关标记位的二值化编码信息进行解码,以确定第二目标预测模式的控制开关标记位的二值化取值。
若解码出第二目标预测模式的控制开关标记位的二值化取值为第二取值,则确定启用第二目标预测模式,此时,可以确定不启用第一目标预测模式。
需要说明的是,若未解码出第二目标预测模式的控制开关标记位的二值化取值,例如码流中不存在第二目标预测模式的控制开关标记位的二值化编码信息,或,解码出第二目标预测模式的控制开关标记位的二值化取值为第二取值,则确定不启用第二目标预测模式,在该情况下,按照上述实施例中描述的方式确定是否启用第一目标预测模式。
在一个示例中,上述第一目标预测模式为skip模式。
上述至少一个预测模式包括skip模式启用时的候选预测模式中一个或多个预测模式。
示例性的,以第一目标预测模式为skip模式为例,skip模式启用时的候选预测模式至少可以包括常规skip模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式中的一个或多个。
图3所示流程中的至少一个预测模式可以包括skip模式启用时的候选预测模式中一个或多个预测模式。
在一个示例中,当第一目标预测模式为skip模式时,第一目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第一阈值。
示例性的,考虑到若当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式,则当前块无法使用包括skip模式的帧间预测模式。
此外,考虑到启用skip模式的块通常在尺寸上也会有一定的限制。
示例性的,可以依据当前块使用的模式和/或当前块的尺寸确定当前块是否满足skip模式的免解码条件。
若当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式,和/或,当前块的宽和高之和小于第一阈值(可以根据实际需求设置)时,确定当前块满足skip模式的免解码条件。
在一个示例中,第一阈值为16。
需要说明的是,在本申请实施例中,若当前块不满足第一目标预测模式的免解码条件,也可以确定当前块满足第一目标预测模式解码条件,此时,可以根据其他策略确定第一目标预测模式是否启用,例如,通过对第一目标预测模式的控制开关标记位的二值化编码信息进行解码。
在一个示例中,第一目标预测模式为direct模式,第二目标预测模式为skip模式。
上述至少一个预测模式为direct模式启用时的候选预测模式中的一个或多个预测模式。
示例性的,以第一目标预测模式为direct模式,第二目标预测模式为skip模式为例,direct模式启用时的候选预测模式至少包括常规direct模式、InterPF模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式中的一个或多个。
图3所示流程中的至少一个预测模式可以包括direct模式启用时的候选预测模式中一个或多个预测模式。
在一个示例中,当第一目标预测模式为direct模式时,第一目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第二阈值;
当第二目标预测模式为skip模式时,第二目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第三阈值。
示例性的,考虑到若当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式,则当前块无法使用包括direct模式的帧间预测模式。
此外,考虑到启用direct模式的块通常在尺寸上也会有一定的限制。
示例性的,可以依据当前块使用的模式和/或当前块的尺寸确定当前块是否满足direct模式的免解码条件。
若当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式,和/或,当前块的宽和高之和小于第二阈值(可以根据实际需求设置)时,确定当前块满足direct模式的免解码条件。
在一个示例中,第二阈值为16。
示例性的,考虑到若当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式,则当前块无法使用包括skip模式的帧间预测模式。
此外,考虑到启用skip模式的块通常在尺寸上也会有一定的限制。
示例性的,可以依据当前块使用的模式和/或当前块的尺寸确定当前块是否满足skip模式的免解码条件。
若当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式,和/或,当前块的宽和高之和小于第三阈值(可以根据实际需求设置)时,确定当前块满足skip模式的免解码条件。
在一个示例中,第三阈值为16。
在一些实施例中,对于上述至少一个预测模式中的任一预测模式,其是否可用的解码信息包括开关状态信息、当前块的尺寸信息、帧类型信息中的一个或多个。
示例性的,考虑到预测模式是否可用通常会受开关(如序列级开关、图像级开关等上层开关)、块尺寸以及帧类型等条件中的一个或多个的限制,在确定一个预测模式是否可用时,可以根据对应模式的尺寸限制条件、帧类型限制条件以及开关限制条件中的一个或多个来确定。
因而,对于任一预测模式,可以基于对应的开关状态信息、当前块的尺寸信息以及帧类型信息中的一个或多个确定其是否可用。
在一个示例中,对于至少一个预测模式中的任一预测模式,基于该预测模式是否可用的解码信息确定是否可用包括:
基于该预测模式是否可用的解码信息,确定当前块是否满足该预测模式允许启用的限制条件;
若满足,则确定该预测模式可用;否则,确定该预测模式不可用。
示例一、当该预测模式为UMVE模式时,其允许启用的限制条件包括UMVE模式的序列级开关为打开状态。
示例性的,对于UMVE模式,可以根据开关限制条件确定其是否满足允许启用的限制条件。
若UMVE模式的序列级开关为打开状态时,确定满足UMVE模式允许启用的限制条件,即UMVE模式可用;否则,确定不满足UMVE模式允许启用的限制条件,即UMVE模式不可用。
示例二、当该预测模式为AWP模式时,其允许启用的限制条件包括以下之一或多个:
AWP模式的序列级开关为打开状态、当前块的宽与高之积大于或等于第一尺寸阈值、当前块的宽小于或等于第一宽度阈值、当前块的高小于或等于第一高度阈值以及当前块所属帧的帧类型为B帧。
示例性,对于AWP模式,可以根据开关限制条件、尺寸限制条件以及帧类型限制条件确定其是否满足允许启用的限制条件。
若AWP模式的序列级开关为打开状态、且当前块的宽与高之积大于或等于第一尺寸阈值、当前块的宽小于或等于第一宽度阈值、当前块的高小于或等于第一高度阈值以及当前块所属帧的类型为B帧,则确定满足AWP模式允许启用的限制条件,即AWP模式可用;否则,即上述任一条件不满足,如AWP模式的序列级开关为关闭状态,或当前块的宽与高之积小于第一尺寸阈值等,确定不满足AWP模式允许启用的限制条件,即AWP模式不可用。
需要说明的是,在一些示例中,上述允许启用的限制条件中的“所属帧类型为B帧”也可以替代为“所属slice(片)的类型为SLICE_B”。
示例三、当该预测模式为ETMVP模式时,其允许启用的限制条件包括以下之一或多个:
ETMVP模式的序列级开关为打开状态、当前块的宽大于或等于第二宽度阈值以及当前块的高大于或等于第二高度阈值。
示例性,对于ETMVP模式,可以根据开关限制条件以及尺寸限制条件确定其是否满足允许启用的限制条件。
若ETMVP模式的序列级开关为打开状态、且当前块的宽大于或等于第二宽度阈值,且当前块的高大于或等于第二高度阈值,则确定满足ETMVP模式允许启用的限制条件,即ETMVP模式可用;否则,即上述任一条件不满足,如ETMVP模式的序列级开关为关闭状态,或当前块的宽小于第二宽度阈值等,确定不满足ETMVP模式允许启用的限制条件,即ETMVP模式不可用。
示例四、当该预测模式为Affine模式时,其允许启用的限制条件包括以下之一或多个:
Affine模式的序列级开关为打开状态、当前块的宽大于或等于第三宽度阈值以及当前块的高大于或等于第三高度阈值。
示例性,对于Affine模式,可以根据开关限制条件以及尺寸限制条件确定其是否满足允许启用的限制条件。
若Affine模式的序列级开关为打开状态、且当前块的宽大于或等于第三宽度阈值,且当前块的高大于或等于第三高度阈值,则确定满足Affine模式允许启用的限制条件,即Affine模式可用;否则,即上述任一条件不满足,如Affine模式的序列级开关为关闭状态,或当前块的宽小于第三宽度阈值等,确定不满足Affine模式允许启用的限制条件,即Affine模式不可用。
示例五、当该预测模式为InterPF模式时,其允许启用的限制条件包括以下之一或多个;
InterPF模式的序列级开关为打开状态、当前块的宽与高之积大于或等于第二尺寸阈值、当前块的宽小于或等于第四宽度阈值以及当前块的高小于或等于第四高度阈值。
示例性,对于InterPF模式,可以根据开关限制条件以及尺寸限制条件确定其是否满足允许启用的限制条件。
若InterPF模式的序列级开关为打开状态、且当前块的宽与高之积大于或等于第二尺寸阈值、当前块的小于或等于第四宽度阈值,且当前块的高小于或等于第四高度阈值,则确定满足InterPF模式允许启用的限制条件,即InterPF模式可用;否则,即上述任一条件不满足,如InterPF模式的序列级开关为关闭状态,或当前块的宽大于第四宽度阈值等,确定不满足Affine模式允许启用的限制条件,即InterPF模式不可用。
需要说明的是,若一个预测模式(如AWP模式)允许启用的限制条件包括多个条件时,该多个条件中任一条件不满足时,可以理解为满足该预测模式的禁用条件,即在该多个条件中任一条件不满足时,确定满足该预测模式的禁用条件,该预测模式不可用。
此外,上述条件中“等于”的情况,如当前块的宽与高之积等于第一尺寸阈值,可以按照上述实施例中描述的作为允许启用的限制条件,在实际应用中,也可以作为禁用条件,例如,在当前块的宽与高之积等于第一尺寸阈值情况下,也可以确定满足AWP模式的禁用条件,确定不启用AWP模式。
请参见图4,为本申请实施例提供的一种预测模式编码方法的流程示意图,如图4所示,该预测模式编码方法可以包括以下步骤:
步骤S400、针对当前块,在将待编码模式标记位的二值化编码信息写入码流之前,判断当前块是否满足待编码模式标记位的免编码条件。若是,转至步骤S410;否则,转至步骤S420。
步骤S410、跳过将待编码模式标记位的二值化编码信息写入码流的步骤。
步骤S420、将待编码模式标记位的二值化编码信息写入码流。
示例性的,图4所示流程的实现可以参见图3所示流程中的相关描述,本申请实施例在此不做赘述。
与解码端流程同理的,在编码端流程中,当前块是否满足待编码模式标记位的免编码条件,也可以替换为当前块是否满足待编码模式标记位的编码条件,二者的区别在于前者判断结果为是的分支的执行流程为后者判断结果为否的分支的执行流程;前者判断结果为否的分支的执行流程为后者判断结果为是的分支的执行流程。
示例性的,图4所示流程可以描述为:针对当前块,在将待编码模式标记位的二值化编码信息写入码流之前,判断当前块是否满足所述待编码模式标记位的编码条件。若当前块满足待编码模式标记位的编码条件,将待编码模式标记位的二值化编码信息写入码流;若当前块不满足待编码模式标记位的编码条件,跳过将待编码模式标记位的二值化编码信息写入码流的步骤。
在一种可能的实现方式中,步骤S400中,判断当前块是否满足待编码模式标记位的免编码条件之前,还可以包括:
在将第一目标预测模式的控制开关标记位的二值化编码信息写入码流之前,判断当前块是否满足第一目标预测模式的免解码条件;
若当前块满足第一目标预测模式的免解码条件,则跳过执行将第一目标预测模式的控制开关标记位的二值化编码信息写入码流的步骤,并确定第一目标预测模式的控制开关标记位的二值化取值为第一取值;
若当前块不满足第一目标预测模式的免解码条件,则执行将第一目标预测模式的控制开关标记位的二值化编码信息写入码流的步骤;
若所述第一目标预测模式的控制开关标记位的二值化取值为第二取值,则确定执行判断当前块是否满足待编码模式标记位的免编码条件的步骤。
在一种可能的实现方式中,上述判断当前块是否满足第一目标预测模式的免解码条件之前,还包括:
在将第二目标预测模式的控制开关标记位的二值化编码信息写入码流之前,判断当前块是否满足第二目标预测模式的免解码条件;
若当前块满足第二目标预测模式的免解码条件,则跳过执行将第二目标预测模式的控制开关标记位的二值化编码信息写入码流的步骤,并确定第二目标预测模式的控制开关标记位的二值化取值为第一取值;
若当前块不满足第二目标预测模式的免解码条件,则执行将第二目标预测模式的控制开关标记位的二值化编码信息写入码流的步骤;
若第二目标预测模式的控制开关标记位的二值化取值为第二取值,则确定执行判断当前块是否满足第一目标预测模式的禁用条件的步骤。
在一种可能的实现方式中,第一目标预测模式为跳过skip模式;
上述至少一个预测模式包括skip模式启用时的候选预测模式中一个或多个预测模式;
skip模式启用时的候选预测模式至少包括常规skip模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式中的一个或多个。
在一种可能的实现方式中,第一目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第一阈值。
在一种可能的实现方式中,第一阈值为16。
在一种可能的实现方式中,第一目标预测模式为直接direct模式,第二目标预测模式为skip模式;
上述至少一个预测模式为direct模式启用时的候选预测模式中的一个或多个预测模式;
direct模式启用时的候选预测模式至少包括常规direct模式、InterPF模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式中的一个或多个。
在一种可能的实现方式中,第一目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第二阈值;
第二目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第三阈值。
在一种可能的实现方式中,第二阈值为16,和/或,第三阈值为16。
在一种可能的实现方式中,对于所述至少一个预测模式中的任一预测模式,其是否可用的解码信息包括开关状态信息、当前块的尺寸信息、帧类型信息中的一个或多个。
在一种可能的实现方式中,对于上述至少一个预测模式中的任一预测模式,基于该预测模式是否可用的解码信息确定是否可用包括:
基于该预测模式是否可用的解码信息,确定当前块是否满足该预测模式允许启用的限制条件;
若满足,则确定该预测模式可用;否则,确定该预测模式不可用;
当该预测模式为UMVE模式时,其允许启用的限制条件包括UMVE模式的序列级开关为打开状态;
当该预测模式为AWP模式时,其允许启用的限制条件包括以下之一或多个:
AWP模式的序列级开关为打开状态、当前块的宽与高之积大于或等于第一尺寸阈值、当前块的宽小于或等于第一宽度阈值、当前块的高小于或等于第一高度阈值以及当前块所属片slice的类型为SLICE_B;
当该预测模式为ETMVP模式时,其允许启用的限制条件包括以下之一或多个:
ETMVP模式的序列级开关为打开状态、当前块的宽大于或等于第二宽度阈值以及当前块的高大于或等于第二高度阈值;
当该预测模式为Affine模式时,其允许启用的限制条件包括以下之一或多个:
包括Affine模式的序列级开关为打开状态、当前块的宽大于或等于第三宽度阈值以及当前块的高大于或等于第三高度阈值;
当该预测模式为InterPF模式时,其允许启用的限制条件包括以下之一或多个;
InterPF模式的序列级开关为打开状态、当前块的宽与高之积大于或等于第二尺寸阈值、当前块的宽小于或等于第四宽度阈值以及当前块的高小于或等于第四高度阈值。
需要说明的是,编码流程与解码流程是相对应的,上述编码流程中的各实施方式的具体实现可以参见上述解码流程中的相关说明,本申请实施例在此不做赘述。
为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面结合具体实施例对本申请实施例提供的技术方案进行说明。
为了节省编码标记位的开销,目前每个标记位的编码往往存在一些限制条件,只有当某些限制条件满足时才进行对应标记位的编码。如对于merge(融合)/skip模式,其5个模式的标记位编码的限制如下:
表1、各模式在当前块中可用的限制条件
分析发现,上述方法仍存在冗余:由于每个预测模式的标记位(即上述控制开关标记位)的编码存在限制条件,只有所有限制条件均满足时某个预测模式才可能启用,即其标记位才需要编码。而这些限制条件在编码第一个预测模式(即regular merge(常规融合模式))时即可确定。在编码在前的标记位时,则可根据这些限制条件跳过当前预测模式的标记位的编码,以节省码率开销。
例如,当编码direct模式时,若基于当前条件可知UVME模式、Affine模式等剩余所有预测模式均无法启用,则可不编码当前direc模式的标记位。在这种情况下,解码端也只需要通过判断这些已知条件,即可确定UVME模式、Affine模式等剩余所有预测模式均无法启用,因此只能启用direct模式,即不需要解码direct模式的标记位即可确定其为direct模式的标记位的值1。
本申请实施例的目的就在于提出新的二值化方法来减少平均码长,同时结合下述去冗余的方法来节省这些模式标记位的编码比特开销:
若当前预测模式存在N个子预测模式,当前预测模式只允许一种子模式存在,且模式标记位的编码按照约定顺序依次进行编码。则当编码当前子模式的标记位时,基于当前条件确定后续可启用的子模式数量,若该数量为0,则无需编码当前子模式标记位(当前子模式一定开启)。
示例性的,对于使用概率较大的预测模式,其模式标记位采用较短的码字,对于使用概率较小的预测模式,其模式标记位采用较长的码字。
此外,在进行当前预测模式解析时,基于预测模式允许启用的限制条件或禁用条件确实需要读取码流进行该模式标记位解析,或直接通过推导获得该模式标记为的取值。
下面结合具体实施例对预测模式编解码实现进行说明。
实施例一
预测模式解码流程:
针对当前块,判断是否需要进行当前模式标记位解码,若不需要,则推导获得当前模式标记位的取值,如1或0;若需要,则读取码流,解码出当前模式标记位取值为1或0。
实施例二
预测模式编码流程:
针对当前块,判断是否需要进行当前模式标记位码流编码,若不需要,则跳过将当前模式标记位的编码信息写入码流的步骤;若需要,则通过对当前模式标记位进行编码,并将编码信息写入码流。
示例性的,上述对模式标记位的编解码方法包括基于上下文的算术二进制编解码或无上下文的二进制编解码。
实施例三
skip模式的模式标记位(skip_flag)的解码流程:
跳过模式标记位skip_flag:二值变量。值为‘1’表示当前编码单元启用跳过模式;值为‘0’表示不启用跳过模式。
示例性的,若位流不存在skip_flag,则skip_flag的值等于0。
示例性的,跳过模式指跳过残差编解码,即当skip_flag为1时,不需要进行残差的编解码(如,解码端包括残差的反变换、反量化、解码等过程均不需要进行,只需要获得预测值即可)。
若skip_flag为1,则无法启用InterPF模式。
方式3.1、
若当前块使用普通帧内预测或块复制帧内预测或串复制帧内预测(即满足skip模式禁用条件),则无需对skip_flag的编码信息进行解码,并确定skip_flag的值等于0(即上述第一取值)。
否则,对skip_flag的编码信息进行解码,以确定skip_flag的取值。
方式3.2、
若当前块使用普通帧内预测或块复制帧内预测或串复制帧内预测,或,当前块的宽加高小于阈值WH1(即上述第一阈值)(即满足skip模式的禁用条件),则无需对skip_flag的编码信息进行解码,并确定skip_flag的值等于0(即上述第一取值)。
否则,对skip_flag的编码信息进行解码,以确定skip_flag的取值。
示例性的,方式3.2中WH1为16。
下面结合实施例对skip_flag的取值为1的情况的预测模式解码流程进行说明。
实施例四
假设待确定取值的模式标记位(也可以称为模式索引信息)包括umve_awp_etmvp_flag、affine_flag、etmvp_flag、awp_flag为例,各模式标记位的取值与预测模式的启用的对应关系如表4.1所示:
表4.1
其对应的二叉树图可以如图5A所示。
示例性的,对于umve_awp_etmvp_flag、affine_flag、etmvp_flag、awp_flag,在满足表4.2所示条件的情况下,需要对对应的模式标记位的编码信息进行解码;否则,可以跳过对对应的模式标记位的编码信息进行解码的过程,推导得到对应的模式标记位的取值。
示例性的,表4.2中所描述的“满足条件”即为对应模式标记位的解码条件,当不满足该条件时,可以称为当前块满足对应模式标记位的免解码条件。
例如,当条件UMVEAvailable||AWPAvailable||ETMVPAvailable不满足时,即UMVEAvailable为0,且AWPAvailable为0,且ETMVPAvailable为0,则确定当前块满足标记位umve_awp_etmvp_flag的免解码条件,此时,无需对umve_awp_flag的编码信息进行解码,并可以确定umve_awp_flag的取值为0。
示例性的,“||”表示条件“或”;“&&”表示条件“与”(也可以称为“且”);UMVEAvailable为0表示UMVE模式不可用,UMVEAvailable为1表示UMVE模式可用,其他模式同理。
表4.2
示例性的,各预测模式允许启用的限制条件如下:
4.1、UMVEAvailable=sh_UmveEnableFlag
sh_UmveEnableFlag为UMVE模式的序列级开关。当UMVE模式的序列级开关为打开状态时,sh_UmveEnableFlag取值为1;当UMVE模式的序列级开关为关闭状态时,sh_UmveEnableFlag取值为0。
当sh_UmveEnableFlag取值为1时,即满足UMVE模式允许启用的限制条件时,UMVEAvailable取值为1,UMVE模式可用;
当sh_UmveEnableFlag取值为为0时,即不满足UMVE模式允许启用的限制条件时,UMVEAvailable取值为0,UMVE模式不可用。
4.2、AWPAvailable=sh_AwpEnableFlag&&(width*height>=TH_SIZE1)&&(width<=TH_W1)&&(height<=TH_H1)&&当前帧类型为B帧
sh_AwpEnableFlag为AWP模式的序列级开关,当AWP模式的序列级开关为打开状态时,sh_AwpEnableFlag取值为1;当AWP模式的序列级开关为关闭状态时,sh_AwpEnableFlag取值为0;
当当前块的宽与高之积大于或等于TH_SIZE1(即上述第一尺寸阈值)时,(width*height>=TH_SIZE1)取值为1;当当前块的宽与高之积小于TH_SIZE1时,(width*height>=TH_SIZE1)取值为0;
当当前块的宽小于或等于TH_W1(即上述第一宽度阈值)时,(width<=TH_W1)取值为1;当当前块的宽大于TH_W1时,(width<=TH_W1)取值为0;
当当前块的高小于或等于TH_H1(即上述第一高度阈值)时,(height<=TH_H1)取值为1;当当前块的高大于TH_H1时,(height<=TH_H1)取值为0;
当当前块所属帧为B帧时,当前帧类型为B帧取值为1;当当前块所属帧的帧类型不是B帧时,当前帧类型为B帧取值为0。
当sh_AwpEnableFlag、(width*height>=TH_SIZE1)、(width<=TH_W1)、(height<=TH_H1)以及当前块所属slice的类型不是SLICE_B取值均为1时,即满足AWP模式允许启用的限制条件时,AWPAvailable取值为1,AWP模式可用;
当sh_AwpEnableFlag、(width*height>=TH_SIZE1)、(width<=TH_W1)、(height<=TH_H1)以及当前块所属slice的类型不是SLICE_B任一取值为0时,即不满足AWP模式允许启用的限制条件时,AWPAvailable取值为0,AWP模式不可用。
示例性的,TH_SIZE1取值为64、TH_W1取值为64、TH_H1取值为64。
4.3、ETMVPAvailable=sh_EtmvpEnableFlag&&(width>=TH_W2)&&(height>=TH_H2)
sh_EtmvpEnableFlag为ETMVP模式的序列级开关,当ETMVP模式的序列级开关为打开状态时,sh_EtmvpEnableFlag取值为1;当ETMVP模式的序列级开关为关闭状态时,sh_EtmvpEnableFlag取值为0;
当当前块的宽大于或等于TH_W2(即上述第二宽度阈值)时,(width>=TH_W2)取值为1;当当前块的宽小于TH_W2时,(width>=TH_W2)取值为0;
当当前块的高大于或等于TH_H2(即上述第二高度阈值)时,(height>=TH_H2)取值为1;当当前块的高小于TH_H2时,(height>=TH_H2)取值为0。
当sh_EtmvpEnableFlag、(width>=TH_W2)以及(height>=TH_H2)取值均为1时,即满足ETMVP模式允许启用的限制条件时,ETMVPAvailable取值为1,ETMVP模式可用;
当sh_EtmvpEnableFlag、(width>=TH_W2)以及(height>=TH_H2)任一取值为0时,即不满足ETMVP模式允许启用的限制条件时,ETMVPAvailable取值为0,ETMVP模式不可用。
示例性的,TH_W2取值为8、TH_H2取值为8。
4.4、AffineAvailable=sh_AffineEnableFlag&&(width>=TH_W3)&&(height>=TH_H3)
sh_AffineEnableFlag为Affine模式的序列级开关,当Affine模式的序列级开关为打开状态时,sh_AffineEnableFlag取值为1;当Affine模式的序列级开关为关闭状态时,sh_AffineEnableFlag取值为0;
当当前块的宽大于或等于TH_W3(即上述第三宽度阈值)时,(width>=TH_W3)取值为1;当当前块的宽小于TH_W3时,(width>=TH_W3)取值为0;
当当前块的高大于或等于TH_H3(即上述第三高度阈值)时,(height>=TH_H3)取值为1;当当前块的高小于TH_H3时,(height>=TH_H3)取值为0。
当sh_AffineEnableFlag、(width>=TH_W3)以及(height>=TH_H3)取值均为1时,即满足Affine模式允许启用的限制条件时,AffineAvailable取值为1,Affine模式可用;
当sh_AffineEnableFlag、(width>=TH_W3)以及(height>=TH_H3)任一取值为0时,即不满足Affine模式允许启用的限制条件时,AffineAvailable取值为0,Affine模式不可用。
示例性的,TH_W3取值为16、TH_H3取值为16。
针对图5A所示二叉树图,以第一取值为0,第二取值为1为例。
当确定umve_awp_etmvp_flag的取值时,至少一个预测模式可以为常规Skip、Affine模式、UMVE模式、AWP模式以及ETMVP模式。在对umve_awp_etmvp_flag的编码信息进行解码(即待解码标记位为umve_awp_etmvp_flag)之前,可以获取当前块的一些解码信息,并根据获取到的一些解码信息,以及上述UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件,确定当前块是否均不满足UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件(即满足umve_awp_etmvp_flag的免解码条件),也可理解成获取当前块的一些特定信息,用来判断UMVE模式、AWP模式以及ETMVP模式中是否在当前块可用。若UMVE模式、AWP模式以及ETMVP模式中在当前块都不可用,则跳过对umve_awp_etmvp_flag的编码信息进行解码的步骤,并直接推导得到umve_awp_etmvp_flag取值为0;若UMVE模式、AWP模式以及ETMVP模式中任一预测模式可用,则对umve_awp_etmvp_flag的编码信息进行解码,以确定umve_awp_etmvp_flag的取值是0还是1。
若umve_awp_etmvp_flag取值为0,则确定需要启用常规skip模式或Affine模式,接下来需要再确定affine_flag的取值。
当确定affine_flag的取值(即待解码模式标记为affine_flag)时,至少一个预测模式为常规skip模式,和Affine模式,在对affine_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及Affine模式允许启用的限制条件,确定当前块是否不满足Affine模式允许启用的限制条件;若是,则跳过对affine_flag的编码信息进行解码的步骤,直接推导得到affine_flag的取值为0;否则,对affine_flag的编码信息进行解码,以确定affine_flag的取值是0还是1。
若affine_flag的取值为0,则确定当前块启用常规skip模式;若affine_flag的取值为1,则确定当前块启用Affine模式。
若umve_awp_etmvp_flag取值为1,则需要再确定etmvp_flag的取值。
当确定etmvp_flag的取值时,至少一个预测模式可以为UMVE模式、AWP模式和ETMVP模式。在对etmvp_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述ETMVP模式允许启用的限制条件,确定当前块是否不满足ETMVP模式允许启用的限制条件;若是,则跳过对etmvp_flag的编码信息进行解码的步骤,直接推导得到etmvp_flag的取值为0;否则,对etmvp_flag的编码信息进行解码,以确定etmvp_flag的取值是0还是1。
若etmvp_flag的取值为1,则确定当前块启用ETMVP模式。
若etmvp_flag的取值为0,则确定当前块启用UMVE模式或AWP模式,此时,需要确定awp_flag的取值。
当确定awp_flag的取值时,至少一个预测模式为UMVE模式和AWP模式。在对awp_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述AWP模式允许启用的限制条件,确定当前块是否不满足AWP模式允许启用的限制条件;若是,则跳过对awp_flag的编码信息进行解码的步骤,直接推导得到awp_flag取值为0;否则,对awp_flag的编码信息进行解码,以确定awp_flag的取值是0还是1。
若awp_flag的取值为0,则确定当前块启用UMVE模式;若awp_flag的取值为1,则确定当前块启用AWP模式。
示例性的,上述模式标记位解码的语法逻辑示例如下:
基于上述语法逻辑可知,当skip_flag值为1时,若sh_UmveEnableFlag、sh_AwpEnableFlag&&(width>=8)&&(height>=8)&&(width<=64)&&(height<=64)&&(PictureType==2),以及sh_EtmvpEnableFlag&&(width>=8)&&(height>=8)中至少一个取值为1,即当前块满足UMVE模式、AWP模式以及ETMVP模式中任一预测模式允许启用的限制条件,则需要对umve_awp_etmvp_flag的编码信息进行解码。
示例性的,PictureType==2表明当前块所属图像帧的帧类型为B帧。
若umve_awp_etmvp_flag、sh_EtmvpEnableFlag&&(width>=8)&&(height>=8)、sh_UmveEnableFlag||(sh_AwpEnableFlag&&(width*height>=64)&&(width<=64)&&(height<=64)&&(PictureType==2))均取值为1,即umve_awp_etmvp_flag的值为1,且当前块满足ETMVP模式允许启用的限制条件,以及当前块满足UMVE模式和AWP模式中任一模式的启用条件,则需要对etmvp_flag的编码信息进行解码。
若umve_awp_etmvp_flag、!etmvp_flag、以及(sh_UmveEnableFlag||(sh_AwpEnableFlag&&(width>=8)&&(height>=8)&&(width<=64)&&(height<=64)&&(PictureType==2))取值均为1,即umve_awp_etmvp_flag取值为1,etmvp_flag取值为0,且当前块满足UMVE模式和AWP模式中任一预测模式允许启用的限制条件,则需要对awp_flag的编码信息进行解码。
若!umve_awp_etmvp_flag以及sh_AffineEnableFlag&&(width>=16)&&(height>=16)的取值均为1,即umve_awp_etmvp_flag取值为0,且当前块满足Affine模式允许启用的限制条件,则需要对affine_flag的编码信息进行解码。
示例性的,上述语法逻辑中,各模式标记位上方相邻“if()”中的内容即为该模式标记位的解码条件,若当前块不满足该条件,即可以确定当前块满足该模式标记位的免解码条件。
实施例五
假设待确定取值的模式标记位包括umve_awp_etmvp_flag、affine_flag、umve_flag、awp_flag为例,各模式标记位的取值与预测模式的启用的对应关系如表5.1所示:
表5.1
其对应的二叉树图可以如图5B所示。
示例性的,对于umve_awp_etmvp_flag、affine_flag、umve_flag、awp_flag,在满足表5.2所示条件的情况下,需要对对应的模式标记位的编码信息进行解码;否则,可以跳过对对应的模式标记位的编码信息进行解码的过程,推导得到对应的模式标记位的取值。
表5.2
示例性的,各预测模式允许启用的限制条件可以参见实施例四中的相关说明。
示例性的,上述模式标记位解码的语法逻辑可以与实施例四中的实现类似,本申请实施例在此不做赘述。
针对图5B所示二叉树图,以第一取值为0,第二取值为1为例。
当确定umve_awp_etmvp_flag的取值时,至少一个预测模式可以为常规Skip、Affine模式、UMVE模式、AWP模式以及ETMVP模式。在对umve_awp_etmvp_flag的编码信息进行解码之前,可以获取当前块的一些解码信息,并根据获取到的一些解码信息,以及上述UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件,确定当前块是否均不满足UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件,也可理解成获取当前块的一些特定信息,用来判断UMVE模式、AWP模式以及ETMVP模式中是否在当前块可用。若UMVE模式、AWP模式以及ETMVP模式均不可用,则跳过对umve_awp_etmvp_flag的编码信息进行解码的步骤,并直接推导得到umve_awp_etmvp_flag取值为0;若UMVE模式、AWP模式以及ETMVP模式中任一预测模式可用,则对umve_awp_etmvp_flag的编码信息进行解码,以确定umve_awp_etmvp_flag的取值是0还是1。
若umve_awp_etmvp_flag取值为0,则确定需要启用常规skip模式或Affine模式,接下来,需要再确定affine_flag的取值。
当确定affine_flag的取值时,至少一个预测模式可以为常规skip模式、Affine模式,在对affine_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及Affine模式允许启用的限制条件,确定当前块是否不满足Affine模式允许启用的限制条件;若是,则跳过对affine_flag的编码信息进行解码的步骤,直接推导得到affine_flag的取值为0;否则,对affine_flag的编码信息进行解码,以确定affine_flag的取值是0还是1。
若affine_flag的取值为0,则确定当前块启用常规skip模式;若affine_flag的取值为1,则确定当前块启用Affine模式。
若umve_awp_etmvp_flag取值为1,则需要再确定umve_flag的取值。
当确定umve_flag的取值时,至少一个预测模式可以为ETMVP模式、AWP模式以及UMVE模式。在对umve_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述UMVE模式允许启用的限制条件,确定当前块是否不满足UMVE模式允许启用的限制条件;若是,则跳过对umve_flag的编码信息进行解码的步骤,直接推导得到umve_flag的取值为0;否则,对umve_flag的编码信息进行解码,以确定umve_flag的取值是0还是1。
若umve_flag的取值为1,则确定当前块启用UMVE模式。
若umve_flag的取值为0,则确定当前块启用ETMVP模式或AWP模式,此时,需要确定awp_flag的取值。
当确定awp_flag的取值时,至少一个预测模式为ETMVP模式和AWP模式。在对awp_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述AWP模式允许启用的限制条件,确定当前块是否不满足AWP模式允许启用的限制条件;若是,则跳过对awp_flag的编码信息进行解码的步骤,直接推导得到awp_flag取值为0;否则,对awp_flag的编码信息进行解码,以确定awp_flag的取值是0还是1。
若awp_flag的取值为0,则确定当前块启用ETMVP模式;若awp_flag的取值为1,则确定当前块启用AWP模式。
实施例六
假设待确定取值的模式标记位包括regular_skip_flag、umve_flag、awp_flag以及affine_flag为例,各模式标记位的取值与预测模式的启用的对应关系如表6.1所示:
表6.1
其对应的二叉树图可以如图5C所示。
示例性的,对于umve_awp_etmvp_flag、affine_flag、etmvp_flag、awp_flag,在满足表6.2所示条件的情况下,需要对对应的模式标记位的编码信息进行解码;否则,可以跳过对对应的模式标记位的编码信息进行解码的过程,推导得到对应的模式标记位的取值。
示例性的,表6.2中所描述的“满足条件”即为对应模式标记位的解码条件,当不满足该条件时,可以称为当前块满足对应模式标记位的免解码条件。
表6.2
示例性的,各预测模式允许启用的限制条件可以参见实施例四中的相关说明。
示例性的,上述模式标记位解码的语法逻辑可以与实施例四中的实现类似,本申请实施例在此不做赘述。
针对图5C所示二叉树图,以第一取值为0,第二取值为1为例。
当确定regular_skip_flag的取值时,待解码模式标志位为regular_skip_flag,待解码模式标志位的解码条件为“UMVEAvailable||AWPAvailable||ETMVPAvailable||AffineAvailable”,即UMVE模式、AWP模式、ETMVP模式以及Affine模式中任一模式可用时,确定当前块满足待解码模式标志位的解码条件,即当前块不满足待解码模式标志位的免解码条件;当UMVE模式、AWP模式、ETMVP模式以及Affine模式均不可用时,确定当前块不满足待解码模式标志位的解码条件,即当前块满足待解码模式标志位的免解码条件。
在对regular_skip_flag的编码信息进行解码之前,可以获取解码信息,根据获取到的解码信息,以及上述UMVE模式、AWP模式、ETMVP模式以及Affine模式允许启用的限制条件,确定当前块是否满足待解码模式标记位的解码条件,若满足解码条件(即不满足免解码条件,下同),则对regular_skip_flag的二值化编码信息进行解码,以确定regular_skip_flag的取值;若不满足解码条件(即满足免解码条件,下同),则跳过对regular_skip_flag的编码信息进行解码的步骤,确定regular_skip_flag的取值为1。
若regular_skip_flag的取值为0,则需要确定umve_flag的取值。
当确定umve_flag的取值时,待解码模式标记位为umve_flag,待解码模式标志位的解码条件为“regular_skip_flag为0&&UMVEAvailable&&(AWPAvailable||ETMVPAvailable||AffineAvailable)”,即若umve_flag取值为0,UMVE模式可用,且AWP模式、ETMVP模式以及Affine模式中任一模式可用,则确定满足umve_flag的解码条件,需要对umve_flag的编码信息进行解码;否则,确定不满足umve_flag的解码条件。
在对umve_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述AWP模式、ETMVP模式以及Affine模式允许启用的限制条件,确定当前块是否满足待解码模式标记位的解码条件,若满足解码条件,则对umve_flag的编码信息进行解码,以确定umve_flag的取值;若不满足解码条件,则跳过对umve_flag的编码信息进行解码的步骤,直接推导得到umve_flag的取值为1。
若umve_flag取值为0,则需要确定awp_flag的取值。
当确定awp_flag的取值时,待解码模式标记位为awp_flag,待解码模式标记位的解码条件为“regular_skip_flag为0&&umve_flag为0&&AWPAvailable&&(ETMVPAvailable||AffineAvailable)”,即若regular_skip_flag取值为0,umve_flag取值为0,AWP模式可用,且ETMVP模式和Affine模式任一模式可用,则确定满足待解码模式标记位的解码条件;否则,确定不满足待解码模式标记位的解码条件。
在对awp_flag的编码进行解码之前,可以根据获取到的解码信息,以及上述AWP模式、ETMVP模式以及Affine模式允许启用的限制条件,确定当前块是否满足待解码模式标记位的解码条件,若满足解码条件,则对awp_flag的编码信息进行解码,以确定awp_flag的取值;若不满足解码条件,则跳过对awp_flag的编码信息进行解码的步骤,直接推导得到awp_flag的取值为1。
若awp_flag取值为0,则需要确定affine_flag的取值。
当确定affine_flag的取值时,待解码模式标记位为affine_flag,待解码模式标记位的解码条件为“regular_skip_flag为0&&umve_flag为0&&awp_flag为0&&ETMVPAvailable&&AffineAvailable”,即若regular_skip_flag取值为0,umve_flag取值为0,awp_flag取值为0,ETMVP模式可用,且Affine模式可用,则确定满足待解码模式标记位的解码条件;否则,确定不满足待解码模式标记位的解码条件。
在对affine_flag的编码进行解码之前,可以根据获取到的解码信息,以及上述ETMVP模式以及Affine模式允许启用的限制条件,确定当前块是否满足待解码模式标记位的解码条件,若满足解码条件,则对affine_flag的编码信息进行解码,以确定affine_flag的取值;若不满足解码条件,则跳过对affine_flag的编码信息进行解码的步骤,根据Affine模式的可用情况确定affine_flag的取值为0或1。
示例性的,若Affine模式可用,确定affine_flag的取值为1;否则,Affine模式不可用,确定affine_flag的取值为0。
实施例七
假设待确定取值的模式标记位包括regular_skip_flag、umve_flag、affine_flag以及awp_flag为例,各模式标记位的取值与预测模式的启用的对应关系如表7.1所示:
表7.1
其对应的二叉树图可以如图5D所示。
示例性的,对于regular_skip_flag、umve_flag、affine_flag以及awp_flag,在满足表7.2所示条件的情况下,需要对对应的模式标记位的编码信息进行解码;否则,可以跳过对对应的模式标记位的编码信息进行解码的过程,推导得到对应的模式标记位的取值。
示例性的,表7.2中所描述的“满足条件”即为对应模式标记位的解码条件,当不满足该条件时,可以称为当前块满足对应模式标记位的免解码条件。
表7.2
示例性的,各预测模式允许启用的限制条件可以参见实施例四中的相关说明。
示例性的,上述模式标记位解码的语法逻辑可以与实施例四中的实现类似,本申请实施例在此不做赘述。
针对图5D所示二叉树图,以第一取值为0,第二取值为1为例。
当确定regular_skip_flag的取值时,待解码模式标志位为regular_skip_flag,待解码模式标志位的解码条件为“UMVEAvailable||AWPAvailable||ETMVPAvailable||AffineAvailable”,即UMVE模式、AWP模式、ETMVP模式以及Affine模式中任一模式可用时,确定当前块满足待解码模式标志位的解码条件,即当前块不满足待解码模式标志位的免解码条件;当UMVE模式、AWP模式、ETMVP模式以及Affine模式均不可用时,确定当前块不满足待解码模式标志位的解码条件,即当前块满足待解码模式标志位的免解码条件。
在对regular_skip_flag的编码信息进行解码之前,可以获取解码信息,根据获取到的解码信息,以及上述UMVE模式、AWP模式、ETMVP模式以及Affine模式允许启用的限制条件,确定当前块是否满足待解码模式标记位的解码条件,若满足解码条件(即不满足免解码条件,下同),则对regular_skip_flag的二值化编码信息进行解码,以确定regular_skip_flag的取值;若不满足解码条件(即满足免解码条件,下同),则跳过对regular_skip_flag的编码信息进行解码的步骤,直接推导得到regular_skip_flag的取值为1。
若regular_skip_flag的取值为0,则需要确定umve_flag的取值。
当确定umve_flag的取值时,待解码模式标记位为umve_flag,待解码模式标志位的解码条件为“regular_skip_flag为0&&UMVEAvailable&&(AWPAvailable||ETMVPAvailable||AffineAvailable)”,即若umve_flag取值为0,UMVE模式可用,且AWP模式、ETMVP模式以及Affine模式中任一模式可用,则确定满足umve_flag的解码条件,需要对umve_flag的编码信息进行解码;否则,确定不满足umve_flag的解码条件。
在对umve_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述AWP模式、ETMVP模式以及Affine模式允许启用的限制条件,确定当前块是否满足待解码模式标记位的解码条件,若满足解码条件,则对umve_flag的编码信息进行解码,以确定umve_flag的取值;若不满足解码条件,则跳过对umve_flag的编码信息进行解码的步骤,直接推导得到umve_flag的取值为1。
若umve_flag取值为0,则需要确定affine_flag的取值。
当确定awp_flag的取值时,待解码模式标记位为affine_flag,待解码模式标记位的解码条件为“regular_skip_flag为0&&umve_flag为0&&AffineAvailable&&(ETMVPAvailable||AWPAvailable)”,即若regular_skip_flag取值为0,umve_flag取值为0,Affine模式可用,且ETMVP模式和AWP模式任一模式可用,则确定满足待解码模式标记位的解码条件;否则,确定不满足待解码模式标记位的解码条件。
在对affine_flag的编码进行解码之前,可以根据获取到的解码信息,以及上述ETMVP模式、AWP模式以及Affine模式允许启用的限制条件,确定当前块是否满足待解码模式标记位的解码条件,若满足解码条件,则对affine_flag的编码信息进行解码,以确定affine_flag的取值;若不满足解码条件,则跳过对affine_flag的编码信息进行解码的步骤,直接推导得到affine_flag的取值为1。
若affine_flag取值为0,则需要确定awp_flag的取值。
当确定awp_flag的取值时,待解码模式标记位为awp_flag,待解码模式标记位的解码条件为“regular_skip_flag为0&&umve_flag为0&&affine_flag为0&&ETMVPAvailable&&AWPAvailable”,即若regular_skip_flag取值为0,umve_flag取值为0,affine_flag取值为0,ETMVP模式可用,且AWP模式可用,则确定满足待解码模式标记位的解码条件;否则,确定不满足待解码模式标记位的解码条件。
在对awp_flag的编码进行解码之前,可以根据获取到的解码信息,以及上述ETMVP模式以及AWP模式允许启用的限制条件,确定当前块是否满足待解码模式标记位的解码条件,若满足解码条件,则对awp_flag的编码信息进行解码,以确定awp_flag的取值;若不满足解码条件,则跳过对awp_flag的编码信息进行解码的步骤,根据Affine模式的可用情况确定awp_flag的取值为0或1。
示例性的,若AWP模式可用,确定awp_flag的取值为1;否则,AWP模式不可用,确定awp_flag的取值为0。
下面结合实施例对skip_flag的取值为0的情况的预测模式解码流程进行说明。
实施例八
当skip_flag为0时,需要根据direct模式的模式标记位(direct_flag)的取值,确定当前预测模式是否为direct模式。
direct_flag的解码流程:
方式8.1、
若当前块使用普通帧内预测或块复制帧内预测或串复制帧内预测(即满足direct模式禁用条件),则无需对direct_flag的编码信息进行解码,并确定direct_flag的值等于0(即上述第一取值)。
方式8.2、
若当前块使用普通帧内预测或块复制帧内预测或串复制帧内预测,或,当前块的宽加高小于阈值WH2(即上述第二阈值)(即满足direct模式的禁用条件),则无需对direct_flag的编码信息进行解码,并确定direct_flag的值等于0(即上述第一取值)。
否则,对direct_flag的编码信息进行解码,以确定direct_flag的取值。
示例性的,方式8.2中WH2为16。
示例性的,direct_flag值为1表示,当前编码单元直接复用相邻块的运动信息,而不需要解析详细的运动矢量差信息。
下面结合实施例对direct_flag的取值为1(InterPF模式允许启用)的情况的预测模式解码流程进行说明。
实施例九
假设待确定取值的模式标记位包括umve_awp_etmvp_flag、interpf_flag、affine_flag、etmvp_flag、awp_flag为例,各模式标记位的取值与预测模式的启用的对应关系如表9.1所示:
表9.1
其对应的二叉树图可以如图5E所示。
示例性的,对于umve_awp_etmvp_flag、interpf_flag、affine_flag、etmvp_flag、awp_flag,在满足表9.2所示条件的情况下,需要对对应的模式标记位的编码信息进行解码;否则,可以跳过对对应的模式标记位的编码信息进行解码的过程,推导得到对应的模式标记位的取值。
表9.2
示例性的,常规direct模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件可以参见实施例四中的相关说明。
InterPF模式允许启用的限制条件如下:
InterPFAvailable=sh_InterpfEnableFlag&&(width*height>=TH_SIZE2)&&(width<=TH_W4)&&(height<=TH_H4)
sh_InterpfEnableFlag为InterPF模式的序列级开关,当InterPF模式的序列级开关为打开状态时,sh_InterpfEnableFlag取值为1;当InterPF模式的序列级开关为关闭状态时,sh_InterpfEnableFlag取值为0;
当当前块的宽与高之积大于或等于TH_SIZE2(即上述第二尺寸阈值)时,(width*height>=TH_SIZE2)取值为1;当当前块的宽与高之积小于TH_SIZE2时,(width*height>=TH_SIZE2)取值为0;
当当前块的宽小于或等于TH_W4(即上述第四宽度阈值)时,(width<=TH_W4)取值为1;当当前块的宽大于TH_W4时,(width<=TH_W4)取值为0;
当当前块的高小于或等于TH_H4(即上述第四高度阈值)时,(height<=TH_H4)取值为1;当当前块的高大于TH_H4时,(height<=TH_H4)取值为0。
当sh_InterpfEnableFlag、(width*height>=TH_SIZE2)、(width<=TH_W4)以及(height<=TH_H4)均取值为1时,即满足InterPF模式允许启用的限制条件时,InterPFAvailable取值为1,InterPF模式可用;
当sh_InterpfEnableFlag、(width*height>=TH_SIZE2)、(width<=TH_W4)以及(height<=TH_H4)任一取值为0时,即不满足InterPF模式允许启用的限制条件时,InterPFAvailable取值为0,InterPF模式不可用。
示例性的,TH_SIZE2取值为64、TH_W4取值为64、TH_H4取值为64。
示例性的,上述模式标记位解码的语法逻辑示例如下:
基于上述语法逻辑可知,当direct_flag值为1时,若sh_UmveEnableFlag、sh_AwpEnableFlag&&(width>=8)&&(height>=8)&&(width<=64)&&(height<=64)&&(PictureType==2),以及sh_EtmvpEnableFlag&&(width>=8)&&(height>=8)中至少一个取值为1,即当前块满足UMVE模式、AWP模式以及ETMVP模式中任一预测模式允许启用的限制条件,则需要对umve_awp_etmvp_flag的编码信息进行解码。
若umve_awp_etmvp_flag、sh_EtmvpEnableFlag&&(width>=8)&&(height>=8)、sh_UmveEnableFlag||(sh_AwpEnableFlag&&(width*height>=64&&(width<=64)&&(height<=64)&&(PictureType==2))均取值为1,即umve_awp_etmvp_flag的值为1,且当前块满足ETMVP模式允许启用的限制条件,以及当前块满足UMVE模式和AWP模式中任一模式的启用条件,则需要对etmvp_flag的编码信息进行解码。
若umve_awp_etmvp_flag、!etmvp_flag、以及sh_UmveEnableFlag||(sh_AwpEnableFlag&&(width*height>=64)&&(width<=64)&&(height<=64))&&(PictureType==2))取值均为1,即umve_awp_etmvp_flag取值为1,etmvp_flag取值为0,且当前块满足UMVE模式和AWP模式中任一预测模式允许启用的限制条件,则需要对awp_flag的编码信息进行解码。
若!umve_awp_etmvp_flag以及sh_AffineEnableFlag&&(width>=16)&&(height>=16)的取值均为1,即umve_awp_etmvp_flag取值为0,且当前块满足Affine模式允许启用的限制条件,则需要对affine_flag的编码信息进行解码。
若!umve_awp_etmvp_flag、!affine_flag以及sh_InterpfEnableFlag&&(width*height>=64)&&(width<=64)&&(height<=64)的取值均为1,即umve_awp_etmvp_flag取值为0,affine_flag取值为0,且当前块满足InterPF模式允许启用的条件,则需要对interpf_flag进行解码。
针对图5E所示二叉树图,以第一取值为0,第二取值为1为例。
当确定umve_awp_etmvp_flag的取值时,至少一个预测模式可以为常规direct模式、InterPF模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式。在对umve_awp_etmvp_flag的编码信息进行解码之前,可以获取当前块的一些解码信息,并根据获取到的一些解码信息,以及上述UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件,确定当前块是否均不满足UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件。若UMVE模式、AWP模式以及ETMVP均不可用,则跳过对umve_awp_etmvp_flag的编码信息进行解码的步骤,并直接推导得到umve_awp_etmvp_flag取值为0;若UMVE模式、AWP模式以及ETMVP模式中任一预测模式可用,则对umve_awp_etmvp_flag的编码信息进行解码,以确定umve_awp_etmvp_flag的取值是0还是1。
若umve_awp_etmvp_flag取值为0,则确定需要启用常规direct模式、InterPF模式或Affine模式,此时,需要再确定affine_flag的取值。
当确定affine_flag的取值时,至少一个预测模式可以为常规direct模式、或InterPF模式、Affine模式,在对affine_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及Affine模式允许启用的限制条件,确定当前块是否不满足Affine模式允许启用的限制条件;若是,则跳过对affine_flag的编码信息进行解码的步骤,直接推导得到affine_flag的取值为0;否则,对affine_flag的编码信息进行解码,以确定affine_flag的取值是0还是1。
若affine_flag的取值为0,则确定当前块启用常规direct模式或InterPF模式,此时,需要再确定interpf_flag的取值;若affine_flag的取值为1,则确定当前块启用Affine模式。
当确定interpf_flag的取值时,至少一个预测模式为常规direct模式和InterPF模式,在对interpf_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述InterPF模式允许启用的限制条件,确定当前块是否不满足InterPF模式允许启用的限制条件,若是,则跳过对interpf_flag的编码信息进行解码的步骤,直接推导得到interpf_flag的取值为0;否则,对interpf_flag的编码信息进行解码,以确定interpf_flag的取值是0还是1。
若interpf_flag取值为0,则确定当前块启用常规direct模式;若interpf_flag取值为1,则确定当前块启用InterPF模式。
若umve_awp_etmvp_flag取值为1,则需要再确定etmvp_flag的取值。
当确定etmvp_flag的取值时,至少一个预测模式可以为UMVE模式、AWP模式以及ETMVP模式。在对etmvp_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述ETMVP模式允许启用的限制条件,确定当前块是否不满足ETMVP模式允许启用的限制条件;若是,则跳过对etmvp_flag的编码信息进行解码的步骤,直接推导得到etmvp_flag的取值为0;否则,对etmvp_flag的编码信息进行解码,以确定etmvp_flag的取值是0还是1。
若etmvp_flag的取值为1,则确定当前块启用ETMVP模式。
若etmvp_flag的取值为0,则确定当前块启用UMVE模式或AWP模式,此时,需要确定awp_flag的取值。
当确定awp_flag的取值时,至少一个预测模式为UMVE模式和AWP模式。在对awp_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述AWP模式允许启用的限制条件,确定当前块是否不满足AWP模式允许启用的限制条件;若是,则跳过对awp_flag的编码信息进行解码的步骤,直接推导得到awp_flag取值为0;否则,对awp_flag的编码信息进行解码,以确定awp_flag的取值是0还是1。
若awp_flag的取值为0,则确定当前块启用UMVE模式;若awp_flag的取值为1,则确定当前块启用AWP模式。
实施例十
假设待确定取值的模式标记位包括umve_awp_etmvp_flag、interpf_flag、affine_flag、umve_flag、awp_flag为例,各模式标记位的取值与预测模式的启用的对应关系如表10.1所示:
表10.1
其对应的二叉树图可以如图5F所示。
示例性的,对于umve_awp_etmvp_flag、interpf_flag、affine_flag、umve_flag、awp_flag,在满足表10.2所示条件的情况下,需要对对应的模式标记位的编码信息进行解码;否则,可以跳过对对应的模式标记位的编码信息进行解码的过程,推导得到对应的模式标记位的取值。
表10.2
示例性的,常规direct模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件可以参见实施例四中的相关说明。
InterPF模式允许启用的限制条件可以参见实施例九中的相关说明。
示例性的,上述模式标记位解码的语法逻辑可以与实施例九中的实现类似,本申请实施例在此不做赘述。
针对图5F所示二叉树图,以第一取值为0,第二取值为1为例。
当确定umve_awp_etmvp_flag的取值时,至少一个预测模式可以为常规direct模式、InterPF模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式。在对umve_awp_etmvp_flag的编码信息进行解码之前,可以获取当前块的一些解码信息,并根据获取到的一些解码信息,以及上述UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件,确定当前块是否均不满足UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件。若UMVE模式、AWP模式以及ETMVP模式均不可用,则跳过对umve_awp_etmvp_flag的编码信息进行解码的步骤,并直接推导得到umve_awp_etmvp_flag取值为0;若UMVE模式、AWP模式以及ETMVP模式中任一预测模式可用,则对umve_awp_etmvp_flag的编码信息进行解码,以确定umve_awp_etmvp_flag的取值是0还是1。
若umve_awp_etmvp_flag取值为0,则确定需要启用常规direct模式、InterPF模式或Affine模式,此时,需要再确定affine_flag的取值。
当确定affine_flag的取值时,至少一个预测模式可以为常规direct模式、InterPF模式以及Affine模式,在对affine_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及Affine模式允许启用的限制条件,确定当前块是否不满足Affine模式允许启用的限制条件;若是,则跳过对affine_flag的编码信息进行解码的步骤,直接推导得到affine_flag的取值为0;否则,对affine_flag的编码信息进行解码,以确定affine_flag的取值是0还是1。
若affine_flag的取值为0,则确定当前块启用常规direct模式或InterPF模式,此时,需要再确定interpf_flag的取值;若affine_flag的取值为1,则确定当前块启用Affine模式。
当确定interpf_flag的取值时,至少一个预测模式为常规direct模式和InterPF模式,在对interpf_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述InterPF模式允许启用的限制条件,确定当前块是否不满足InterPF模式允许启用的限制条件,若是,则跳过对interpf_flag的编码信息进行解码的步骤,直接推导得到interpf_flag的取值为0;否则,对interpf_flag的编码信息进行解码,以确定interpf_flag的取值是0还是1。
若interpf_flag取值为0,则确定当前块启用常规direct模式;若interpf_flag取值为1,则确定当前块启用InterPF模式。
若umve_awp_etmvp_flag取值为1,则需要再确定umve_flag的取值。
当确定umve_flag的取值时,至少一个预测模式可以为ETMVP模式、AWP模式以及UVME模式。在对umve_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述UMVE模式允许启用的限制条件,确定当前块是否不满足UMVE模式允许启用的限制条件;若是,则跳过对umve_flag的编码信息进行解码的步骤,直接推导得到umve_flag的取值为0;否则,对umve_flag的编码信息进行解码,以确定umve_flag的取值是0还是1。
若umve_flag的取值为1,则确定当前块启用UMVE模式。
若umve_flag的取值为0,则确定当前块启用ETMVP模式或AWP模式,此时,需要确定awp_flag的取值。
当确定awp_flag的取值时,至少一个预测模式为ETMVP模式和AWP模式。在对awp_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述AWP模式允许启用的限制条件,确定当前块是否不满足AWP模式允许启用的限制条件;若是,则跳过对awp_flag的编码信息进行解码的步骤,直接推导得到awp_flag取值为0;否则,对awp_flag的编码信息进行解码,以确定awp_flag的取值是0还是1。
若awp_flag的取值为0,则确定当前块启用ETMVP模式;若awp_flag的取值为1,则确定当前块启用AWP模式。
实施例十一
假设待确定取值的模式标记位包括umve_awp_etmvp_flag、affine_flag、etmvp_interpf_flag、awp_flag、interpf_flag为例,各模式标记位的取值与预测模式的启用的对应关系如表11.1所示:
表11.1
其对应的二叉树图可以如图5G所示。
示例性的,对于umve_awp_etmvp_flag、affine_flag、etmvp_interpf_flag、awp_flag、interpf_flag,在满足表11.2所示条件的情况下,需要对对应的模式标记位的编码信息进行解码;否则,可以跳过对对应的模式标记位的编码信息进行解码的过程,推导得到对应的模式标记位的取值。
表11.2
示例性的,常规direct模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件可以参见实施例四中的相关说明。
InterPF模式允许启用的限制条件可以参见实施例九中的相关说明。
示例性的,上述模式标记位解码的语法逻辑可以与实施例九中的实现类似,本申请实施例在此不做赘述。
针对图5G所示二叉树图,以第一取值为0,第二取值为1为例。
当确定umve_awp_etmvp_flag的取值时,至少一个预测模式可以为常规direct模式、Affine模式、UMVE模式、AWP模式、ETMVP模式以及InterPF模式。在对umve_awp_etmvp_flag的编码信息进行解码之前,可以获取当前块的一些解码信息,并根据获取到的一些解码信息,以及上述UMVE模式、AWP模式、ETMVP模式以及InterPF模式允许启用的限制条件,确定当前块是否均不满足UMVE模式、AWP模式、ETMVP模式以及InterPF模式允许启用的限制条件。若UMVE模式、AWP模式、ETMVP模式以及InterPF模式均不可用,则跳过对umve_awp_etmvp_flag的编码信息进行解码的步骤,并直接推导得到umve_awp_etmvp_flag取值为0;若UMVE模式、AWP模式、ETMVP模式以及InterPF模式中任一预测模式可用,则对umve_awp_etmvp_flag的编码信息进行解码,以确定umve_awp_etmvp_flag的取值是0还是1。
若umve_awp_etmvp_flag取值为0,则确定需要启用常规direct模式或Affine模式,此时,需要再确定affine_flag的取值。
当确定affine_flag的取值时,至少一个预测模式可以为常规direct模式和Affine模式,在对affine_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及Affine模式允许启用的限制条件,确定当前块是否不满足Affine模式允许启用的限制条件;若是,则跳过对affine_flag的编码信息进行解码的步骤,直接推导得到affine_flag的取值为0;否则,对affine_flag的编码信息进行解码,以确定affine_flag的取值是0还是1。
若affine_flag的取值为0,则确定当前块启用常规direct模式;若affine_flag的取值为1,则确定当前块启用Affine模式。
若umve_awp_etmvp_flag取值为1,则需要再确定etmvp_interpf_flag的取值。
当确定etmvp_interpf_flag的取值时,至少一个预测模式可以为UMVE模式、AWP模式ETMVP模式以及InterPF模式。在对etmvp_interpf_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述ETMVP模式和InterPF模式允许启用的限制条件,确定当前块是否均不满足ETMVP模式和InterPF模式允许启用的限制条件;若是,则跳过对etmvp_interpf_flag的编码信息进行解码的步骤,直接推导得到etmvp_interpf_flag的取值为0;否则,对etmvp_interpf_flag的编码信息进行解码,以确定etmvp_interpf_flag的取值是0还是1。
若etmvp_interpf_flag的取值为0,则确定当前块启用UMVE模式或AWP模式,此时,需要确定awp_flag的取值。
当确定awp_flag的取值时,至少一个预测模式为UMVE模式和AWP模式。在对awp_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述AWP模式允许启用的限制条件,确定当前块是否不满足AWP模式允许启用的限制条件;若是,则跳过对awp_flag的编码信息进行解码的步骤,直接推导得到awp_flag取值为0;否则,对awp_flag的编码信息进行解码,以确定awp_flag的取值是0还是1。
若awp_flag的取值为0,则确定当前块启用UMVE模式;若awp_flag的取值为1,则确定当前块启用AWP模式。
若etmvp_interpf_flag的取值为1,则确定当前块启用ETMVP模式或InterPF模式,此时,需要确定interpf_flag的取值。
当确定interpf_flag的取值时,至少一个预测模式为ETMVP模式和InterPF模式,在对interpf_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述InterPF模式允许启用的限制条件,确定当前块是否不满足InterPF模式允许启用的限制条件;若是,则跳过对interpf_flag的编码信息进行解码的步骤,直接推导得到interpf_flag取值为0;否则,对interpf_flag的编码信息进行解码,以确定interpf_flag的取值是0还是1。
若interpf_flag的取值为0,则确定当前块启用ETMVP模式;若interpf_flag的取值为1,则确定当前块启用InterPF模式。
实施例十二
假设待确定取值的模式标记位包括umve_awp_awp_flag、affine_flag、umve_interpf_flag、awp_flag、interpf_flag为例,各模式标记位的取值与预测模式的启用的对应关系如表12.1所示:
表12.1
其对应的二叉树图可以如图5H所示。
示例性的,对于umve_awp_awp_flag、affine_flag、umve_interpf_flag、awp_flag、interpf_flag,在满足表12.2所示条件的情况下,需要对对应的模式标记位的编码信息进行解码;否则,可以跳过对对应的模式标记位的编码信息进行解码的过程,推导得到对应的模式标记位的取值。
表12.2
示例性的,常规direct模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件可以参见实施例四中的相关说明。
InterPF模式允许启用的限制条件可以参见实施例九中的相关说明。
示例性的,上述模式标记位解码的语法逻辑可以与实施例九中的实现类似,本申请实施例在此不做赘述。
针对图5H所示二叉树图,以第一取值为0,第二取值为1为例。
当确定umve_awp_etmvp_flag的取值时,至少一个预测模式可以为常规direct模式、Affine模式ETMVP模式、AWP模式、UMVE模式以及InterPF模式。在对umve_awp_etmvp_flag的编码信息进行解码之前,可以获取当前块的一些解码信息,并根据获取到的一些解码信息,以及上述ETMVP模式、AWP模式、UMVE模式以及InterPF模式允许启用的限制条件,确定当前块是否均不满足ETMVP模式、AWP模式、UMVE模式以及InterPF模式允许启用的限制条件。若是,则跳过对umve_awp_etmvp_flag的编码信息进行解码的步骤,并直接推导得到umve_awp_etmvp_flag取值为0;若ETMVP模式、AWP模式、UMVE模式以及InterPF模式中任一预测模式可用,则对umve_awp_etmvp_flag的编码信息进行解码,以确定umve_awp_etmvp_flag的取值是0还是1。
若umve_awp_etmvp_flag取值为0,则确定需要启用常规direct模式或Affine模式,此时,需要再确定affine_flag的取值。
当确定affine_flag的取值时,至少一个预测模式为常规direct模式和Affine模式,在对affine_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及Affine模式允许启用的限制条件,确定当前块是否不满足Affine模式允许启用的限制条件;若是,则跳过对affine_flag的编码信息进行解码的步骤,直接推导得到affine_flag的取值为0;否则,对affine_flag的编码信息进行解码,以确定affine_flag的取值是0还是1。
若affine_flag的取值为0,则确定当前块启用常规direct模式;若affine_flag的取值为1,则确定当前块启用Affine模式。
若umve_awp_etmvp_flag取值为1,则需要再确定umve_interpf_flag的取值。
当确定umve_interpf_flag的取值时,至少一个预测模式可以为ETMVP模式、AWP模式、UMVE模式以及InterPF模式。在对umve_interpf_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述UMVE模式和InterPF模式允许启用的限制条件,确定当前块是否均不满足UMVE模式和InterPF模式允许启用的限制条件;若是,则跳过对umve_interpf_flag的编码信息进行解码的步骤,直接推导得到umve_interpf_flag的取值为0;否则,对umve_interpf_flag的编码信息进行解码,以确定umve_interpf_flag的取值是0还是1。
若umve_interpf_flag的取值为0,则确定当前块启用ETMVP模式或AWP模式,此时,需要确定awp_flag的取值。
当确定awp_flag的取值时,至少一个预测模式为ETMVP模式和AWP模式。在对awp_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述AWP模式允许启用的限制条件,确定当前块是否不满足AWP模式允许启用的限制条件;若是,则跳过对awp_flag的编码信息进行解码的步骤,直接推导得到awp_flag取值为0;否则,对awp_flag的编码信息进行解码,以确定awp_flag的取值是0还是1。
若awp_flag的取值为0,则确定当前块启用ETMVP模式;若awp_flag的取值为1,则确定当前块启用AWP模式。
若umve_interpf_flag的取值为1,则确定当前块启用UMVE模式或InterPF模式,此时,需要确定interpf_flag的取值。
当确定interpf_flag的取值时,至少一个预测模式为UMVE模式,待遍历模式为InterPF模式,在对interpf_flag的编码信息进行解码之前,可以根据获取到的解码信息,以及上述InterPF模式允许启用的限制条件,确定当前块是否不满足InterPF模式允许启用的限制条件;若是,则跳过对interpf_flag的编码信息进行解码的步骤,直接推导得到interpf_flag取值为0;否则,对interpf_flag的编码信息进行解码,以确定interpf_flag的取值是0还是1。
若interpf_flag的取值为0,则确定当前块启用UMVE模式;若interpf_flag的取值为1,则确定当前块启用InterPF模式。
实施例十三
假设待确定取值的模式标记位包括umve_awp_etmvp_flag、interpf_flag、umve_flag、awp_flag、affine_flag为例,各模式标记位的取值与预测模式的启用的对应关系如表13.1所示:
表13.1
其对应的二叉树图可以如图5I所示。
示例性的,对于umve_awp_etmvp_flag、interpf_flag、umve_flag、awp_flag、affine_flag,在满足表13.2所示条件的情况下,确定满足待解码模式标记位的解码条件,需要对对应的模式标记位的编码信息进行解码;否则,确定不满足待解码模式标记位的解码条件,可以跳过对对应的模式标记位的编码信息进行解码的过程,推导得到对应的模式标记位的取值。
表13.2
示例性的,常规direct模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件可以参见实施例四中的相关说明。
InterPF模式允许启用的限制条件可以参见实施例九。
示例性的,上述模式标记位解码的语法逻辑可以与实施例九中的实现类似,本申请实施例在此不做赘述。
针对图5I所示二叉树图,以第一取值为0,第二取值为1为例。
当确定umve_awp_etmvp_flag的取值时,待解码模式标记位为umve_awp_etmvp_flag,待解码模式标记位的解码条件为“UMVEAvailable||AWPAvailable||ETMVPAvailable||AffineAvailable”,当不满足该条件时,确定满足待解码模式标记位的免解码条件;当确定满足该条件时,确定不满足待解码模式标记位的免解码条件。
在对umve_awp_etmvp_flag的编码信息进行解码之前,可以获取当前块的一些解码信息,根据获取到的一些解码信息,以及上述UMVE模式、AWP模式、ETMVP模式以及Affine模式允许启用的限制条件,确定当前块是否满足待解码模式标记位的解码条件,若满足,则确定不满足待解码模式标记位的免解码条件,对umve_awp_etmvp_flag的编码信息进行解码;若不满足,则确定满足待解码模式标记位的免解码条件,跳过对umve_awp_etmvp_flag的编码信息进行解码的步骤,直接推导得到umve_awp_etmvp_flag取值为0。
若umve_awp_etmvp_flag取值为0,则需要确定interpf_flag的取值;若umve_awp_etmvp_flag取值为1,则需要确定umve_flag的取值。
当确定interpf_flag的取值时,待解码模式标记位为interpf_flag,其解码条件为“umve_awp_etmvp_affine_flag为0,且InterPFAvailable”,若满足该条件,则确定不满足待解码模式标记位的免解码条件;否则,确定满足待解码模式标记位的免解码条件。
示例性的,当umve_awp_etmvp_affine_flag取值为0,且InterPF模式可用时,确定不满足interpf_flag的免解码条件,对interpf_flag的编码信息进行解码,确定interpf_flag的取值;当umve_awp_etmvp_affine_flag取值为1,和/或,InterPF模式不可用时,跳过对interpf_flag的编码信息进行解码的步骤,直接推导得到interpf_flag取值为0。
当确定umve_flag的取值时,待解码模式标记位umve_flag,其解码条件为“umve_awp_etmvp_affine_flag为1&&UMVEAvailable&&(AWPAvailable||ETMVPAvailable||AffineAvailable)”。
当umve_awp_etmvp_affine_flag取值为1,UMVE模式可用,且AWP模式、ETMVP模式以及Affine模式中任一模式可用时,确定不满足umve_flag的免解码条件;否则,确定满足umve_flag的免解码条件,跳过对umve_flag的编码信息的解码,在umve_awp_etmvp_affine_flag取值为1,且UMVE模式可用时,直接推导得到umve_flag取值为1时1;在umve_awp_etmvp_affine_flag取值为0,和/或,UMVE模式不可用时,直接推导得到umve_flag取值为0。
当umve_flag取值为0时,需要确定awp_flag的取值。
当确定awp_flag的取值时,待解码模式标记位为awp_flag,其解码条件为“umve_awp_etmvp_affine_flag为1&&umve_flag为0&&AWPAvailable&&(ETMVPAvailable||AffineAvailable)”。
若umve_awp_etmvp_affine_flag取值为1,umve_flag取值为0,AWP模式可用,且ETMVP模式和Affine模式任一模式可用,则确定不满足awp_flag的免解码条件;否则,确定满足awp_flag的免解码条件,跳过对awp_flag编码信息的解码,在umve_awp_etmvp_affine_flag取值为1,umve_flag取值为0,且AWP模式可用时,直接推导得到awp_flag取值为1;umve_awp_etmvp_affine_flag取值为0,umve_flag取值为1,以及AWP模式不可用任一条件成立时,则确定awp_flag取值为0。
当确定awp_flag取值为0时,需要确定affine_flag的取值。
当确定affine_flag的取值时,待解码模式标记位为affine_flag,其解码条件为“umve_awp_etmvp_affine_flag为1&&umve_flag为0&&awp_flag为0&&(ETMVPAvailable||AffineAvailable)”。
若umve_awp_etmvp_affine_flag取值为1,umve_flag取值为0,awp_flag取值为0,且ETMVP模式和Affine模式任一模式可用时,则确定不满足affine_flag的免解码条件;否则,确定满足affine_flag的免解码条件,跳过对affine_flag的编码信息的解码,在umve_awp_etmvp_affine_flag取值为1,umve_flag取值为0,awp_flag取值为0,且Affine模式可用时,直接推导得到affine_flag的值为1;在umve_awp_etmvp_affine_flag取值为0,umve_flag取值为1,awp_flag取值为1,以及Affine模式不可用任一条件成立时,直接推导得到affine_flag取值为0。
实施例十四
假设待确定取值的模式标记位包括umve_awp_etmvp_flag、interpf_flag、umve_flag、affine_flag、awp_flag为例,各模式标记位的取值与预测模式的启用的对应关系如表14.1所示:
表14.1
其对应的二叉树图可以如图5J所示。
示例性的,对于umve_awp_etmvp_flag、interpf_flag、umve_flag、affine_flag、awp_flag,在满足表14.2所示条件的情况下,确定满足待解码模式标记位的解码条件,需要对对应的模式标记位的编码信息进行解码;否则,确定不满足待解码模式标记位的解码条件,可以跳过对对应的模式标记位的编码信息进行解码的过程,推导得到对应的模式标记位的取值。
表14.2
示例性的,常规direct模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件可以参见实施例四中的相关说明。
InterPF模式允许启用的限制条件可以参见实施例九。
示例性的,上述模式标记位解码的语法逻辑可以与实施例九中的实现类似,本申请实施例在此不做赘述。
针对图5J所示二叉树图,以第一取值为0,第二取值为1为例。
当确定umve_awp_etmvp_flag的取值时,待解码模式标记位为umve_awp_etmvp_flag,待解码模式标记位的解码条件为“UMVEAvailable||AWPAvailable||ETMVPAvailable||AffineAvailable”,当不满足该条件时,确定满足待解码模式标记位的免解码条件;当确定满足该条件时,确定不满足待解码模式标记位的免解码条件。
在对umve_awp_etmvp_flag的编码信息进行解码之前,可以获取当前块的一些解码信息,根据获取到的一些解码信息,以及上述UMVE模式、AWP模式、ETMVP模式以及Affine模式允许启用的限制条件,确定当前块是否满足待解码模式标记位的解码条件,若满足,则确定不满足待解码模式标记位的免解码条件,对umve_awp_etmvp_flag的编码信息进行解码;若不满足,则确定满足待解码模式标记位的免解码条件,跳过对umve_awp_etmvp_flag的编码信息进行解码的步骤,直接推导得到umve_awp_etmvp_flag取值为0。
若umve_awp_etmvp_flag取值为0,则需要确定interpf_flag的取值;若umve_awp_etmvp_flag取值为1,则需要确定umve_flag的取值。
当确定interpf_flag的取值时,待解码模式标记位为interpf_flag,其解码条件为“umve_awp_etmvp_affine_flag为0,且InterPFAvailable”,若满足该条件,则确定不满足待解码模式标记位的免解码条件;否则,确定满足待解码模式标记位的免解码条件。
示例性的,当umve_awp_etmvp_affine_flag取值为0,且InterPF模式可用时,确定不满足interpf_flag的免解码条件,对interpf_flag的编码信息进行解码,确定interpf_flag的取值;当umve_awp_etmvp_affine_flag取值为1,和/或,InterPF模式不可用时,跳过对interpf_flag的编码信息进行解码的步骤,直接推导得到interpf_flag取值为0。
当确定umve_flag的取值时,待解码模式标记位umve_flag,其解码条件为“umve_awp_etmvp_affine_flag为1&&UMVEAvailable&&(AWPAvailable||ETMVPAvailable||AffineAvailable)”。
当umve_awp_etmvp_affine_flag取值为1,UMVE模式可用,且AWP模式、ETMVP模式以及Affine模式中任一模式可用时,确定不满足umve_flag的免解码条件;否则,确定满足umve_flag的免解码条件,跳过对umve_flag的编码信息的解码,在umve_awp_etmvp_affine_flag取值为1,且UMVE模式可用时,直接推导得到umve_flag取值为1时1;在umve_awp_etmvp_affine_flag取值为0,和/或,UMVE模式不可用时,直接推导得到umve_flag取值为0。
当umve_flag取值为0时,需要确定affine_flag的取值。
当确定affine_flag的取值时,待解码模式标记位为affine_flag,其解码条件为“umve_awp_etmvp_affine_flag为1&&umve_flag为0&&AffineAvailable&&(ETMVPAvailable||AWPAvailable)”。
若umve_awp_etmvp_affine_flag取值为1,umve_flag取值为0,Affine模式可用,且ETMVP模式和AWP模式任一模式可用,则确定不满足affine_flag的免解码条件;否则,确定满足affine_flag的免解码条件,跳过对affine_flag编码信息的解码,在umve_awp_etmvp_affine_flag取值为1,umve_flag取值为0,且Affine模式可用时,直接推导得到affine_flag取值为1;umve_awp_etmvp_affine_flag取值为0,umve_flag取值为1,以及Affine模式不可用任一条件成立时,直接推导得到affine_flag取值为0。
当确定affine_flag取值为0时,需要确定awp_flag的取值。
当确定awp_flag的取值时,待解码模式标记位为awp_flag,其解码条件为“umve_awp_etmvp_affine_flag为1&&umve_flag为0&&affine_flag为0&&(ETMVPAvailable||AwpAvailable)”。
若umve_awp_etmvp_affine_flag取值为1,umve_flag取值为0,affine_flag取值为0,且ETMVP模式和AWP模式任一模式可用时,则确定不满足awp_flag的免解码条件;否则,确定满足awp_flag的免解码条件,跳过对awp_flag的编码信息的解码,在umve_awp_etmvp_affine_flag取值为1,umve_flag取值为0,affine_flag取值为0,且AWP模式可用时,直接推导得到awp_flag的值为1;在umve_awp_etmvp_affine_flag取值为0,umve_flag取值为1,affine_flag取值为1,以及AWP模式不可用任一条件成立时,直接推导得到awp_flag取值为0。
需要说明的是,上述实施例中模式标记位的设置仅仅是对本申请实施例中模式标记位设置方式的举例说明,而并不是对本申请实施例保护范围的限定,在本申请实施例中,模式标记位的设置也可以包括其他实现方式,其可以根据各模式的使用概率,按照“对于使用概率较大的预测模式,模式标记位采用较短的码字;对于使用概率较大的模式,模式标记位采用较长的码字”的原则进行设置,例如,对于概率较大的模式,模式标记位可以更靠近二叉树的根节点;对于概率较小的模式,模式标记位可以更远离二叉树的根节点;或者,还可以通过对上述任意多个实施例进行组合的方式得到新的实施例,其具体实现在此不做赘述。
此外,对于任一模式标记位,其不同取值的情况下的候选预测模式也不限于上述示例,例如,以图5A所示二叉树图为例,对于umve_awp_etmvp_flag,也可以在umve_awp_etmvp_flag取值为1的情况下,确定启用常规skip模式或Affine模式;对于affine_flag,也可以在affine_flag取值为0的情况下,确定启用Affine模式,其具体实现在此不做赘述。
再者,上述各实施例是以解码端的解码流程进行说明的,编码端的实现可以参照解码端流程的相关说明。
以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:
请参见图6,为本申请实施例提供的一种电子设备的硬件结构示意图。该电子设备可包括处理器601、存储有机器可执行指令的机器可读存储介质602。处理器601与机器可读存储介质602可经由系统总线603通信。并且,通过读取并执行机器可读存储介质602中与解码控制或编码控制逻辑对应的机器可执行指令,处理器601可执行上文描述的预测模式解码方法或预测模式编码方法。
本文中提到的机器可读存储介质602可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
在一些实施例中,还提供了一种机器可读存储介质,该机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上文描述的预测模式解码方法或预测模式编码方法。例如,所述机器可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
在这一些实施例中,如图7所示,当上述电子设备作为解码端设备时,上述解码控制逻辑可以包括:
判断单元710,用于针对当前块,在对待解码模式标记位的二值化编码信息进行解码之前,根据当前块的特定信息判断当前块是否满足所述待解码模式标记位的免解码条件;
解码单元720,用于若所述当前块满足所述待解码模式标记位的免解码条件,则根据所述特定信息,确定所述待解码模式标记位的二值化取值为第一取值或第二取值;
所述解码单元720,还用于若所述当前块不满足所述待解码模式标记位的免解码条件,则读取所述待解码模式标记位的二值化编码信息,对所述编码信息进行解码,确定所述待解码模式标记位的二值化取值为第一取值或第二取值;
其中,所述特定信息包括至少一个已获取的模式标记位的取值和/或至少一个预测模式是否可用的解码信息。
作为一种示例,所述判断单元710,还用于在对第一目标预测模式的控制开关标记位的二值化编码信息进行解码之前,获取并根据当前块的解码信息判断当前块是否满足所述第一目标预测模式的免解码条件;
所述解码单元720,还用于若当前块满足所述第一目标预测模式的免解码条件,则跳过执行对第一目标预测模式的控制开关标记位的二值化编码信息进行解码的步骤,并确定所述第一目标预测模式的控制开关标记位的二值化取值为所述第一取值;
若当前块不满足所述第一目标预测模式的免解码条件,则执行所述对所述第一目标预测模式的控制开关标记位的二值化编码信息进行解码的步骤;
若解码出所述第一目标预测模式的控制开关标记位的二值化取值为所述第二取值,则执行所述根据当前块的特定信息判断是否当前块是否满足所述待解码模式标记位的免解码条件的步骤。
作为一种示例,所述判断单元710,还用于在对第二目标预测模式的控制开关标记位的二值化编码信息进行解码之前,获取并根据当前块的解码信息判断当前块是否满足所述第二目标预测模式的免解码条件;
所述解码单元720,还用于若当前块满足所述第二目标预测模式的免解码条件,则跳过执行对第二目标预测模式的控制开关标记位的二值化编码信息进行解码的步骤,并确定所述第二目标预测模式的控制开关标记位的二值化取值为所述第一取值;
若当前块不满足所述第二目标预测模式的免解码条件,则执行所述对所述第二目标预测模式的控制开关标记位的二值化编码信息进行解码的步骤;
若解码出所述第二目标预测模式的控制开关标记位的二值化取值为所述第二取值,则执行所述获取并根据当前块的解码信息判断当前块是否满足所述第一目标预测模式的免解码条件的步骤。
作为一种示例,所述skip模式启用时所述至少一个预测模式包括常规skip模式、仿射Affine模式、高级运动矢量表达模式UMVE模式、角度加权预测模式AWP模式以及增强时域运动矢量预测模式ETMVP模式中的一个或多个。
作为一种示例,所述第一目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第一阈值。
作为一种示例,所述第一目标预测模式为直接direct模式,所述第二目标预测模式为skip模式;
所述direct模式启用时,所述至少一个预测模式包括常规direct模式、InterPF模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式中的一个或多个。
作为一种示例,所述第一目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第二阈值;
所述第二目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第三阈值。
作为一种示例,对于所述至少一个预测模式中的任一预测模式,其是否可用的解码信息包括开关状态信息、当前块的尺寸信息、帧类型信息中的一个或多个。
作为一种示例,对于所述至少一个预测模式中的任一预测模式,基于该预测模式是否可用的解码信息确定是否可用包括:
基于该预测模式是否可用的解码信息,确定当前块是否满足该预测模式允许启用的限制条件;
若满足,则确定该预测模式可用;否则,确定该预测模式不可用;
当该预测模式为UMVE模式时,其允许启用的限制条件包括UMVE模式的序列级开关为打开状态;
当该预测模式为AWP模式时,其允许启用的限制条件包括以下之一或多个:
AWP模式的序列级开关为打开状态、当前块的宽与高之积大于或等于第一尺寸阈值、当前块的宽小于或等于第一宽度阈值、当前块的高小于或等于第一高度阈值以及当前块所属帧的帧类型为B帧;
当该预测模式为ETMVP模式时,其允许启用的限制条件包括以下之一或多个:
ETMVP模式的序列级开关为打开状态、当前块的宽大于或等于第二宽度阈值以及当前块的高大于或等于第二高度阈值;
当该预测模式为Affine模式时,其允许启用的限制条件包括以下之一或多个:
Affine模式的序列级开关为打开状态、当前块的宽大于或等于第三宽度阈值以及当前块的高大于或等于第三高度阈值;
当该预测模式为InterPF模式时,其允许启用的限制条件包括以下之一或多个;
InterPF模式的序列级开关为打开状态、当前块的宽与高之积大于或等于第二尺寸阈值、当前块的宽小于或等于第四宽度阈值以及当前块的高小于或等于第四高度阈值。
在这一些实施例中,如图8所示,当上述电子设备作为编码端设备时,上述编码控制逻辑可以包括:
判断单元810,用于针对当前块,在将待编码模式标记位的二值化编码信息写入码流之前,判断当前块是否满足所述待编码模式标记位的免编码条件;
编码单元820,用于若所述当前块满足所述待编码模式标记位的免编码条件,则跳过将所述待编码模式标记位的二值化编码信息写入码流的步骤;
所述编码单元820,还用于若所述当前块不满足所述待编码模式标记位的免编码条件,则将待编码模式标记位的二值化编码信息写入码流。
作为一种示例,所述判断单元810,还用于在所述编码单元将第一目标预测模式的控制开关标记位的二值化编码信息写入码流之前,判断当前块是否满足第一目标预测模式的免解码条件;
所述编码单元820,还用于若当前块满足第一目标预测模式的免解码条件,则跳过执行将第一目标预测模式的控制开关标记位的二值化编码信息写入码流的步骤,并确定第一目标预测模式的控制开关标记位的二值化取值为第一取值;
若当前块不满足第一目标预测模式的免解码条件,则执行将第一目标预测模式的控制开关标记位的二值化编码信息写入码流的步骤;
若所述第一目标预测模式的控制开关标记位的二值化取值为第二取值,则确定执行判断当前块是否满足待编码模式标记位的免编码条件的步骤。
作为一种示例,所述判断单元,还用于在编码单元将第二目标预测模式的控制开关标记位的二值化编码信息写入码流之前,判断当前块是否满足第二目标预测模式的免解码条件;
若当前块满足第二目标预测模式的免解码条件,则跳过执行将第二目标预测模式的控制开关标记位的二值化编码信息写入码流的步骤,并确定第二目标预测模式的控制开关标记位的二值化取值为第一取值;
若当前块不满足第二目标预测模式的免解码条件,则执行将第二目标预测模式的控制开关标记位的二值化编码信息写入码流的步骤;
若第二目标预测模式的控制开关标记位的二值化取值为第二取值,则确定执行判断当前块是否满足第一目标预测模式的禁用条件的步骤。
作为一种示例,第一目标预测模式为跳过skip模式;
上述至少一个预测模式包括skip模式启用时的候选预测模式中一个或多个预测模式;
skip模式启用时,上述至少一个预测模包括常规skip模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式中的一个或多个。
作为一种示例,第一目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第一阈值。
作为一种示例,第一阈值为16。
作为一种示例,第一目标预测模式为直接direct模式,第二目标预测模式为skip模式;
direct模式启用时,所述至少一个预测模式包括常规direct模式、InterPF模式、Affine模式、UMVE模式、AWP模式以及ETMVP模式中的一个或多个。
作为一种示例,第一目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第二阈值;
第二目标预测模式的免解码条件包括以下之一或多个:
当前块使用普通帧内预测模式、块复制帧内预测模式或串复制帧内预测模式;
当前块的宽和高之和小于第三阈值。
作为一种示例,第二阈值为16,和/或,第三阈值为16。
作为一种示例,对于所述至少一个预测模式中的任一预测模式,其是否可用的解码信息包括开关状态信息、当前块的尺寸信息、帧类型信息中的一个或多个。
作为一种示例,对于上述至少一个预测模式中的任一预测模式,基于该预测模式是否可用的解码信息确定是否可用包括:
基于该预测模式是否可用的解码信息,确定当前块是否满足该预测模式允许启用的限制条件;
若满足,则确定该预测模式可用;否则,确定该预测模式不可用;
当该预测模式为UMVE模式时,其允许启用的限制条件包括UMVE模式的序列级开关为打开状态;
当该预测模式为AWP模式时,其允许启用的限制条件包括以下之一或多个:
AWP模式的序列级开关为打开状态、当前块的宽与高之积大于或等于第一尺寸阈值、当前块的宽小于或等于第一宽度阈值、当前块的高小于或等于第一高度阈值以及当前块所属片slice的类型为SLICE_B;
当该预测模式为ETMVP模式时,其允许启用的限制条件包括以下之一或多个:
ETMVP模式的序列级开关为打开状态、当前块的宽大于或等于第二宽度阈值以及当前块的高大于或等于第二高度阈值;
当该预测模式为Affine模式时,其允许启用的限制条件包括以下之一或多个:
包括Affine模式的序列级开关为打开状态、当前块的宽大于或等于第三宽度阈值以及当前块的高大于或等于第三高度阈值;
当该预测模式为InterPF模式时,其允许启用的限制条件包括以下之一或多个;
InterPF模式的序列级开关为打开状态、当前块的宽与高之积大于或等于第二尺寸阈值、当前块的宽小于或等于第四宽度阈值以及当前块的高小于或等于第四高度阈值。
在一些实施例中,还提供了一种摄像机设备,包括上述实施例中的预测模式解码装置或预测模式编码装置。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (9)
1.一种预测模式解码方法,其特征在于,包括:
针对当前块,在对待解码模式标记位的二值化编码信息进行解码之前,根据当前块的特定信息判断当前块是否满足所述待解码模式标记位的免解码条件;
若所述当前块满足所述待解码模式标记位的免解码条件,则根据所述特定信息,确定所述待解码模式标记位的二值化取值为第一取值或第二取值;
若所述当前块不满足所述待解码模式标记位的免解码条件,则读取所述待解码模式标记位的二值化编码信息,对所述编码信息进行解码,确定所述待解码模式标记位的二值化取值为第一取值或第二取值;
其中,所述特定信息包括至少一个已获取的模式标记位的取值和/或至少一个预测模式是否可用的解码信息;
其中,所述待解码模式标记位包括第一标志位;所述第一标志位用于指示当前编码单元是否使用高级运动矢量表达模式UMVE模式或角加权预测模式AWP模式或增强运动矢量预测模式ETMVP模式;当所述第一标志位取值为0,指示当前编码单元不使用UMVE模式、AWP模式以及ETMVP模式中任一预测模式;当所述第一标志位取值为1,指示当前编码单元使用UMVE模式、AWP模式或ETMVP模式;
根据当前块的特定信息判断当前块是否满足第一标志位的免解码条件,包括:
若所述当前块均不满足UMVE模式、AWP模式以及ETMVP模式允许启用的限制条件,则确定所述当前块满足第一标志位的免解码条件;
若所述当前块满足UMVE模式、AWP模式以及ETMVP模式中任一预测模式允许启用的限制条件,则确定所述当前块不满足第一标志位的免解码条件。
2.根据权利要求1所述的方法,其特征在于,所述若所述当前块满足所述待解码模式标记位的免解码条件,则根据所述特定信息,确定所述待解码模式标记位的二值化取值为第一取值或第二取值,包括:
若所述当前块满足第一标志位的免解码条件,则确定第一标志位的取值为0。
3.根据权利要求2所述的方法,其特征在于,若第一标志位的取值为0,则所述待解码模式标记位还包括仿射模式标志位;所述仿射模式标志位用于指示当前编码单元是否使用仿射模式,所述仿射模式标志位的取值为0,指示当前编码单元没有使用仿射模式,所述仿射模式标志位的取值为1,指示当前编码单元使用仿射模式;
所述根据当前块的特定信息判断当前块是否满足仿射模式标志位的免解码条件,包括:
若所述当前块不满足仿射Affine模式允许启用的限制条件,则确定所述当前块满足仿射模式标志位的免解码条件;
若所述当前块满足Affine模式允许启用的限制条件,则确定所述当前块不满足仿射模式标志位的免解码条件
所述若所述当前块满足所述待解码模式标记位的免解码条件,则根据所述特定信息,确定所述待解码模式标记位的二值化取值为第一取值或第二取值,还包括:
若所述当前块满足仿射模式标志位的免解码条件,则确定仿射模式标志位的取值为0。
4.根据权利要求3所述的方法,其特征在于,在第一标志位取值为0,仿射模式标志位的取值为0,且直接direct模式启用时,所述待解码模式标记位还包括帧间预测滤波标志位;所述帧间预测滤波标志位用于指示当前编码单元是否使用帧间预测滤波,帧间预测滤波标志位的取值为0,指示当前编码单元不使用帧间预测滤波,帧间预测滤波标志位的取值为1,当前编码单元使用帧间预测滤波;
所述根据当前块的特定信息判断当前块是否满足帧间预测滤波标志位的免解码条件,包括:
若所述当前块不满足InterPF模式允许启用的限制条件,则确定所述当前块满足帧间预测滤波标志位的免解码条件;
若所述当前块满足InterPF模式允许启用的限制条件,则确定所述当前块不满足帧间预测滤波标志位的免解码条件;
所述若所述当前块满足所述待解码模式标记位的免解码条件,则根据所述特定信息,确定所述待解码模式标记位的二值化取值为第一取值或第二取值,还包括:
若所述当前块满足interpf_flag的免解码条件,则确定interpf_flag的取值为0。
5.根据权利要求1所述的方法,其特征在于,若第一标志位的取值为1,且UMVE模式允许启用或AWP模式允许启用,则所述待解码模式标记位还包括增强运动矢量预测模式标志位;
所述根据当前块的特定信息判断当前块是否满足增强运动矢量预测模式标志位的免解码条件,包括:
若所述当前块不满足ETMVP模式允许启用的限制条件,则确定所述当前块满足增强运动矢量预测模式标志位的免解码条件;
若所述当前块满足ETMVP模式允许启用的限制条件,则确定所述当前块不满足增强运动矢量预测模式标志位的免解码条件;
所述若所述当前块满足所述待解码模式标记位的免解码条件,则根据所述特定信息,确定所述待解码模式标记位的二值化取值为第一取值或第二取值,还包括:
若所述当前块满足增强运动矢量预测模式标志位的免解码条件,则确定增强运动矢量预测模式标志位的取值为0。
6.根据权利要求5所述的方法,其特征在于,若第一标志位的取值为1,且增强运动矢量预测模式标志位的取值为0,则所述待解码模式标记位还包括角加权预测模式标志位;
所述根据当前块的特定信息判断当前块是否满足角加权预测模式标志位的免解码条件,包括:
若所述当前块不满足AWP模式允许启用的限制条件,则确定所述当前块满足角加权预测模式标志位的免解码条件;
若所述当前块满足AWP模式允许启用的限制条件,则确定所述当前块不满足角加权预测模式标志位的免解码条件;
所述若所述当前块满足所述待解码模式标记位的免解码条件,则根据所述特定信息,确定所述待解码模式标记位的二值化取值为第一取值或第二取值,还包括:
若所述当前块满足角加权预测模式标志位的免解码条件,则确定角加权预测模式标志位的取值为0。
7.根据权利要求1-6任一项所述的方法,其特征在于,
UMVE模式允许启用的限制条件包括UMVE模式的序列级开关为打开状态;
AWP模式允许启用的限制条件包括:
AWP模式的序列级开关为打开状态、当前块的宽与高之积大于或等于64、当前块的宽小于或等于64、当前块的高小于或等于64以及当前块所属帧的帧类型为B帧;
ETMVP模式允许启用的限制条件包括:
ETMVP模式的序列级开关为打开状态、当前块的宽大于或等于8以及当前块的高大于或等于8;
Affine模式允许启用的限制条件包括:
Affine模式的序列级开关为打开状态、当前块的宽大于或等于16以及当前块的高大于或等于16;
InterPF模式允许启用的限制条件包括;
InterPF模式的序列级开关为打开状态、当前块的宽与高之积大于或等于64、当前块的宽小于或等于64以及当前块的高小于或等于64。
8.一种电子设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器用于执行机器可执行指令,以实现如权利要求1-7任一项所述的预测模式解码方法。
9.一种机器可读存储介质,其特征在于,所述存储介质内存储有能够被处理器执行的机器可执行指令,所述机器可执行指令被处理器执行时实现如权利要求1-7任一项所述的预测模式解码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111673156.2A CN114339236B (zh) | 2020-12-04 | 2020-12-04 | 预测模式解码方法、电子设备及机器可读存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111673156.2A CN114339236B (zh) | 2020-12-04 | 2020-12-04 | 预测模式解码方法、电子设备及机器可读存储介质 |
CN202011410497.6A CN114598878A (zh) | 2020-12-04 | 2020-12-04 | 预测模式解码、编码方法及装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011410497.6A Division CN114598878A (zh) | 2020-12-04 | 2020-12-04 | 预测模式解码、编码方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114339236A true CN114339236A (zh) | 2022-04-12 |
CN114339236B CN114339236B (zh) | 2022-12-23 |
Family
ID=81073885
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111673156.2A Active CN114339236B (zh) | 2020-12-04 | 2020-12-04 | 预测模式解码方法、电子设备及机器可读存储介质 |
CN202011410497.6A Pending CN114598878A (zh) | 2020-12-04 | 2020-12-04 | 预测模式解码、编码方法及装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011410497.6A Pending CN114598878A (zh) | 2020-12-04 | 2020-12-04 | 预测模式解码、编码方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN114339236B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114745600B (zh) * | 2022-06-10 | 2022-09-27 | 中国传媒大学 | 一种基于sei的视频标签标注方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110312128A (zh) * | 2014-03-31 | 2019-10-08 | 英迪股份有限公司 | 视频编解码方法和非暂时性计算机可读记录介质 |
CN110933408A (zh) * | 2019-06-21 | 2020-03-27 | 杭州海康威视数字技术股份有限公司 | 预测模式的解码、编码方法及装置 |
CN111385572A (zh) * | 2018-12-27 | 2020-07-07 | 华为技术有限公司 | 预测模式确定方法、装置及编码设备和解码设备 |
CN111698500A (zh) * | 2019-03-11 | 2020-09-22 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置及其设备 |
-
2020
- 2020-12-04 CN CN202111673156.2A patent/CN114339236B/zh active Active
- 2020-12-04 CN CN202011410497.6A patent/CN114598878A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110312128A (zh) * | 2014-03-31 | 2019-10-08 | 英迪股份有限公司 | 视频编解码方法和非暂时性计算机可读记录介质 |
CN111385572A (zh) * | 2018-12-27 | 2020-07-07 | 华为技术有限公司 | 预测模式确定方法、装置及编码设备和解码设备 |
CN111698500A (zh) * | 2019-03-11 | 2020-09-22 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置及其设备 |
CN110933408A (zh) * | 2019-06-21 | 2020-03-27 | 杭州海康威视数字技术股份有限公司 | 预测模式的解码、编码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114598878A (zh) | 2022-06-07 |
CN114339236B (zh) | 2022-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7469437B2 (ja) | イントラ予測モードを有するルックアップテーブルおよび非隣接ブロックからのイントラモード予測 | |
CN111698506B (zh) | 运动信息候选者列表构建方法、三角预测解码方法及装置 | |
JP6728249B2 (ja) | ブロック分割及びブロック統合をサポートする画像符号化 | |
CN109644271A (zh) | 用于二叉树分割块的确定候选集的方法及装置 | |
CN118741095A (zh) | 使用运动补偿的视频信号处理方法及设备 | |
CN115152227A (zh) | 并行处理的选择性切换 | |
TW202017369A (zh) | 擴充參考圖像內預測技術 | |
US20060039476A1 (en) | Methods for efficient implementation of skip/direct modes in digital video compression algorithms | |
KR20130129452A (ko) | 모션 벡터 저장 방법 및 장치, 인코딩 및 디코딩 방법, 인코딩 및 디코딩 장치, 및 기록 매체 | |
JP7311635B2 (ja) | コーデック方法、デバイス及びその機器 | |
US20230300326A1 (en) | Prediction methods | |
KR20210100123A (ko) | 타일 독립성 제약을 이용하는 인터 예측 개념 | |
CN110024397B (zh) | 用于编码视频的方法和装置 | |
CN113615195A (zh) | 用于屏幕内容编解码的帧内块复制 | |
CN110832854B (zh) | 利用插值进行帧内预测的方法和装置 | |
CN113906740A (zh) | 帧间预测信息编码/解码方法和装置 | |
CN110677679A (zh) | 依赖形状的帧内编码 | |
CN115052161A (zh) | 帧间预测方法、编码器、解码器以及计算机存储介质 | |
EP3469793A1 (en) | Devices and methods for video coding using segmentation based partitioning of video coding blocks | |
CN114339236B (zh) | 预测模式解码方法、电子设备及机器可读存储介质 | |
CN113709502B (zh) | 解码方法、编码方法、装置、设备及机器可读存储介质 | |
CN112073733A (zh) | 基于运动矢量角度预测的视频编解码方法和装置 | |
CN113841404A (zh) | 视频编码/解码方法和设备以及存储比特流的记录介质 | |
CN113453005B (zh) | 解码方法、编码方法、装置及设备 | |
CN114339224B (zh) | 图像增强方法、装置及机器可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40064088 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |