用于帧内块复制模式的解码图像缓存器管理的方法与流程

文档序号:13518733阅读:309来源:国知局
用于帧内块复制模式的解码图像缓存器管理的方法与流程

优先权声明

本申请主张2015年05月29日提出的申请号为62/168,144的美国临时专利申请、2015年06月22日提出的申请号为62/182,685的美国临时专利申请以及2015年06月24日提出的申请号为62/183,799的美国临时专利申请的优先权。本申请也与2015年05月28日提出的申请号为62/167,474的美国临时专利申请相关。上述美国临时专利申请整体以引用方式并入本文中。

本发明涉及使用包含帧内块复制(intra-blockcopy,intrabc)模式和帧间预测模式的编解码模式的视频编解码。具体而言,本发明涉及管理解码图像缓存器(decodedpicturebuffer,dpb)的技术。



背景技术:

高效视频编码(highefficiencyvideocoding,hevc)是近年来已经发展的新的编码标准。在hevc系统中,h.264/avc的固定尺寸的宏块(macroblock)由被称为编码单元(codingunit,cu)的可变块(flexibleblock)取代。cu内的像素共享相同的编解码参数以提高编解码效率。cu可能从最大cu(largestcu,lcu)开始,其也被称为hevc中的编码树单元(codedtreeunit,ctu)。除了编码单元的概念,hevc中也引进了预测单元(predictionunit,pu)的概念。一旦完成cu分层树的分割,根据预定类型和pu分割,每个叶cu则被进一步分割成一个或者多个pu。

在用于hevc标准的屏幕内容编解码的当前发展中,一些工具因其在屏幕内容的编解码效率上的改善而已被使用。对于帧内块,根据传统的方法,使用基于来自于相邻块的重构像素的预测来执行帧内预测。帧内预测可以从帧内模式集(setofintramodes)中选择一个帧内模式,该帧内模式集包括垂直模式、水平模式和各种角度预测模式。对于hevc屏幕内容编解码,被称为帧内块复制(intra-blockcopy,intrabc)的新编解码模式已被使用。

intrabc使用在环路滤波器之前的当前图像中的重构样本作为用于预测的参考图像。除了在环路滤波器之后的已滤波图像,这未滤波图像需被存储。为了存储在环路滤波器之前的重构样本,可能需要额外的存储器和存储器带宽(memorybandwidth),以分别用于读取和写入。在环路滤波器之前的所有重构样本用作用于intrabc预测的参考的情况下,位于环路滤波器之前的整个重构图像需被存储。因此,环路滤波器之前的重构当前图像和环路滤波器之后的重构当前图像需被存储,以分别用于intrabc预测和时间预测(temporalprediction)。因此,帧内块复制存储访问使得存储器带宽变大。另外,其也引起额外的解码图像缓存器。

为了存储环路滤波器之前的额外的重构样本,部分8:hevc屏幕内容编解码(screencontentcoding,scc):草案3(joshi,etal.,hevcscreencontentcodingdrafttext3,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,20thmeeting:geneva,ch,10–18feb.2015,document:jctvc-t1005)的一般解码过程被修改以使得dpb中的图像存储缓存器(picturestoragebuffer)被分配给当前图像。在hevcscc:草案3中,在curr_pic_as_ref_enabled_flag等于1的情况下,重构当前图像被标记为"用于长期参考(long-termreference)"。当curr_pic_as_ref_enabled_flag等于1时,在环路滤波之前的重构当前图像的已解码样本值被存储到分配给当前图像的图像存储缓存器。完成所有切片(slice)的解码之后,环路滤波器之后的整个当前已解码图像被存储在分配给当前图像的图像存储缓存器中,并被标记为"用于短期参考(short-termreference)"。在hevc和hevcscc:草案3中,解码图像被hevcscc:草案3的附录(annex)c.3中的解码图像缓存器的操作管理,其由包含从dpb中图像移除(即子从句c.3.2)、图像输出(即子从句c.3.3)以及当前解码图像标记和存储(即子从句c.3.4)的规则的过程集合组成。但是,dpb的操作不能适当地被修改以用于下面将讨论的重构当前图像可能用作参考图像的情景。

dpb的操作指定(specify)每个操作何时发生,使得dpb存储度(fullness)可以被适当地控制,且dpb存储度不会超过dpb最大尺寸限度。在从dpb中图像移除的子从句中,对于从dpb中被移除的每个图像而言,dpb存储度将减去1。在当前解码图像标记和存储的子从句中,当前解码图像被存储在空的图像存储缓存器中的dpb中,且dpb存储度将增加1。但是,在附录c.3中,在环路滤波器之前的当前图像的存储和dpb存储度的更新将不在dpb的操作中被指定。因此,dpb的操作不能被适当地管理。

如上述段落中所述,存在引进额外的存储器带宽以用于将位于环路之前的重构样本读取和写入到存储器中的问题。在核心实验2(coreexperiment2,ce2):jctvc-t1102(rapaka,etal.,descriptionofcoreexperiment2(ce2):intrablockcopymemoryaccess,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,20thmeeting:geneva,ch,10–18feb.2015,document:jctvc-t1102)中的帧内块复制存储器访问中,为了避免引起一个额外的图像存储器缓存器(memorybuffer)和带宽,以用于读取和写入除了环路滤波器之后的样本之外的位于环路滤波器之前的重构样本,存储器带宽降低被评估。在本发明中,位于环路滤波器之前的重构样本也被称为未滤波重构样本。在本发明中,位于环路滤波器之后的重构样本也被称为已滤波重构样本。

两种策略的工作正在进行以解决这个问题。在第一策略中,jctvc-s0145(rapaka,etal.,bandwidthreductionmethodforintrablockcopy,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,19thmeeting:strasbourg,fr,17–24oct.2014,document:jctvc-s0145)公开了一种方法,以在帧内块复制模式用于预测时降低平均带宽。jctvc-s0145是基于并不是所有当前图像的之前未滤波解码样本用于以帧内块复制模式的预测的观察。在jctvc-s0145中,该方法指示之前解码的编码树块(codedtreeblock,ctb)中的哪个用于帧内块复制预测。根据jctvc-s0145,对于片头中的每个块发送一个标志,当图像参数集(pictureparameterset,pps)层标志指示在片头中出现之前标志(formerflag)时,需要存储哪些ctb以减少平均带宽。但是,关于切片中需要多少ctb以及需要提前发送多少标志,jctvc-s0145的方法已被质疑。此外,jctvc-s0145中并没有包含dpb管理方法。位于环路滤波器之前的重构样本是否被存储到dpb内的存储器缓存器中或者dpb外部是不清楚的。

在第二种策略中,jctvc-t0045(lainema,etal.,ahg10:memorybandwidthreductionforintrablockcopy,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,20thmeeting:geneva,ch,10–18feb.2015,document:jctvc-t0045)和jctvc-t0051(laroche,etal.,ahg10:onibcmemoryreduction,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,20thmeeting:geneva,ch,10–18feb.2015,document:jctvc-t0051)公开了一种方法,其通过指示哪个ctb用于帧内块复制预测而存储位于环路滤波器之前的重构样本或者位于环路滤波器之后的重构样本,进而解决与帧内块复制相关的增加的带宽和存储的问题。总体利益是保持帧内块复制的存储器带宽符合hevc帧间模式指定的限制。意味着即便在帧内块复制的情景中,仅一个重构图像缓存器可以用于每个图像。jctvc-t0051也公开了一种方法,其存储位于环路滤波器之前的重构样本或者环路滤波器之后的重构样本到典型地位于dpb外部的图像存储缓存器中。jctvc-t0051的附录c.3中的dpb的操作可以被管理,其与下面将讨论的hevc版本1中的相似。另外,在jctvc-t0051中,当前ctb和之前ctb总是被认为是对帧内块复制预测可用。因此,在jctvc-t0051中需要额外的存储器以用于存储着两个额外的ctb。

如果位于dpb外部的存储器缓存器存储位于环路滤波器之前的重构样本,则hevcscc草案中存在比特率一致性问题,其指定在需要用于预测时所有参考图像应在dpb中存在。原因在于,位于环路滤波器之前的当前图像用作参考图像,且如hevcscc:草案3中一样被插入到参考图像列表中。

在高层语法中,在参考图像列表重构的初始化过程中,当前图像被放置在所有短期参考图像和所有其他长期参考图像之后。下面列出了用于列表0的相关描述。相似的过程可以用于列表1。

在每个切片的解码过程的开始处,如下,推导出用于p切片的参考图像列表refpiclist0,以及用于b切片的参考图像列表refpiclist0和参考图像列表refpiclist1。

表1

在表1中,curr_pic_as_ref_enabled_flag等于1指定了参考sps的图像可以被包含在图像本身的参考图像列表中。curr_pic_as_ref_enabled_flag等于0指定了参考sps的图像永不被包含在图像本身的参考图像列表中。当不存在时,curr_pic_as_ref_enabled_flag的值被推断为等于0。

初始化之后,参考图像列表refpiclist0被构造成如下所示:

for(ridx=0;ridx<=num_ref_idx_l0_active_minus1;ridx++)

refpiclist0[ridx]=ref_pic_list_modification_flag_l0?

refpiclisttemp0[list_entry_l0[ridx]]:refpiclisttemp0[ridx]

然而,当活跃的参考图像的数量(即num_ref_idx_l0_active_minus1+1)小于与存储当前图像的refpiclisttemp0队列相关的列表中参考图像的数量(即numrpscurrtemplist0)时,当前图像可以不被包含在活跃的参考图像列表中。

在基于现有的hevc的编解码系统中,存在与用于intrabc的解码图像缓存器管理相关的问题。当使用intrabc时,当前图像的重构部分可以用作参考图像,以预测当前图像。这个用于intrabc的参考图像被称为“未滤波版本的当前图像”。另一方面,最终将通过诸如去块(deblocking)和样本自适应偏移(sampleadaptiveoffset,sao)的滤波操作的当前图像的版本被称为已滤波版本的当前图像。

参考图像得在dpb中,以为了由当前图像来使用。dpb的尺寸被约束成maxdpbsize,其由表2所示而得到。

表2

在表2中,maxlumaps是最大亮度图像尺寸,maxdpbpicbuf是最大dpb尺寸,例如6。但是,当使用intrabc时,当前dpb管理操作中存在一些问题。



技术实现要素:

本发明公开一种视频解码系统的管理解码图像缓存器的方法及装置,其中视频解码系统使用包含帧间预测模式和帧内块复制模式的编解码模式。在一个实施例中,将位于环路滤波之后的一个或者多个之前重构图像存储到解码图像缓存器(decodedpicturebuffer,dpb)中。对于解码当前图像而言,在解码图像缓存器中分配第一图像缓存器和第二图像缓存器。在从视频比特流中推导出与当前图像相关的一个或者多个重构图像单元之后,将位于环路滤波之前的重构图像单元存储到第一图像缓存器中,并且将位于环路滤波之后的重构图像单元存储到第二图像缓存器中。如果以帧内块复制模式编解码当前重构图像单元,则使用第一图像缓存器中位于环路滤波之前的重构图像单元来重构当前重构图像单元,以推导出帧内块复制预测。如果以帧间预测模式编解码当前重构图像单元,则使用所述解码图像缓存器中位于环路滤波之后的之前重构图像来重构所述当前重构图像单元,以推导出帧间预测。

在当前图像被解码之前,在解码图像缓存器中分配第一图像缓存器和第二图像缓存器。每当在解码图像缓存器中分配第一图像缓存器或者第二图像缓存器时,将解码图像缓存器缓存器存储度增加1。此外,第一图像缓存器被标记以指示第一图像缓存器用于长期参考,且第二图像缓存器被标记以指示第二图像缓存器用于短期参考。

在当前图像被重构之后,所分配的第一图像缓存器自解码图像缓存器中移除。另一方面,所分配的第二图像缓存器保持在解码图像缓存器中,并用作短期参考图像以用于解码后续图像。当所分配的第一图像缓存器自解码图像缓存器中移除时,将解码图像缓存器缓存器存储度减去1。指示最大解码图像缓存器缓存器尺寸的变量可以保持与用于高效视频编码屏幕内容编解码草案3所指定的最大解码图像缓存器缓存器尺寸相同。

在另一实施例中,在解码图像缓存器或者位于解码图像缓存器外部的临时缓存器中分配第一图像缓存器和第二图像缓存器,其中第一图像缓存器和第二图像缓存器中的一个在解码图像缓存器中,另一个在解码图像缓存器外部的临时缓存器中。在当前图像被解码之前,分配第一图像缓存器和第二图像缓存器。当第一图像缓存器或者第二图像缓存器被放置在解码图像缓存器中时,将解码图像缓存器缓存器存储度增加1。如果第一图像缓存器被分配在解码图像缓存器中,则在当前图像被重构之后,所分配的第一图像缓存器自解码图像缓存器中移除,并且,当第一图像缓存器自解码图像缓存器中移除时,将解码图像缓存器缓存器存储度减去1。随后,第二图像缓存器被放置在解码图像缓存器中,且将解码图像缓存器缓存器存储度增加1。如果第一图像缓存器被分配在解码图像缓存器外部的临时缓存器中,则在当前图像被重构之后,第一图像缓存器自临时缓存器中移除。在当前图像被重构之后,第二图像缓存器保持在解码图像缓存器中。

附图说明

图1是根据本发明实施例的使用包含帧内块复制模式和帧间预测模式的编解码模式的示例性编解码系统的流程图,其中两个图像缓存器被分配在解码图像缓存器中以存储位于环路滤波之后的当前重构图像和位于环路滤波之前的当前重构图像。

图2是根据本发明实施例的使用包含帧内块复制模式和帧间预测模式的编解码模式的示例性编解码系统的流程图,其中一个图像缓存器被分配在解码图像缓存器中,一个图像缓存器被分配在位于解码图像缓存器外部的临时缓存器中,以存储位于环路滤波之后的当前重构图像和位于环路滤波之前的当前重构图像。

具体实施方式

以下描述为实施本发明的较佳方式。本文仅用来举例阐释本发明的技术特征,并非用以限定本发明。本发明的保护范围应当视权利要求书所界定为准。

如上讨论,用于帧内块复制(intrablockcopy,intrabc或ibc)的参考数据得被存储在未滤波的重构数据中。另一方面,用于帧间预测的参考数据得被存储在已滤波版本(即重构且已滤波的)中。本发明公开了帧内块复制中的dpb操作和比特流一致性的修改。

第一方法。本方法在dpb中分配一个图像缓存器以用于存储位于环路滤波之前的重构样本。在这种情况下,dpb操作被修改,使得在当前图像被包含在参考图像列表中时dpb操作被适当地管理。通常,如果当前图像被包含在参考图像列表中,则修改包括更新dpb存储度和定义更新dpb存储度的时刻。

第一实施例。本实施例可以应用到在hevcscc:草案3中所指定的系统。hevcscc:草案3(即,jctvc-t1005)中存在几个需要修改的部分。具体地,增加与位于环路滤波器之前的当前解码图像存储相关的子从句c.3.5,其中在当前图像被包含在参考图像列表中时将dpb存储度增加1。当当前图像被包含在参考图像列表中时,jctvc-t1005的子从句c.3.5中所定义的过程同时发生在访问单元n,的编码图像缓存器(codedpicturebuffer,cpb)移除时间,即cpbremovaltime[n]。在解码当前图像之前,解析当前图像的第一切片段头的头之后,该过程被每个图像调用一次。

当当前图像被包含在参考图像列表中时,如子从句c.3.4中描述的当前解码图像标记和存储,以及如hevcscc:草案3中所描述的图像解码、标记、额外的冲突(additionalbumping)和存储以这样的方式被修改:如果当前图像被包含在参考图像列表中,dpb存储度保持不变。

当当前图像被包含在参考图像列表中时,将用于解码当前解码参考图像的解码过程增加到子从句8.x中,在c.3.5的过程之后,子从句8.x需要被每个图像调用一次,c.3.5指定了位于环路滤波器之前的当前解码图像存储的处理。当子从句8.x被调用时,用于生成的图像(generatedpicture)的picordercntval被设置成等于当前图像的图像顺序计数(pictureordercount,poc)。

根据第一实施例示例性的hevcscc:草案3改变。

当前hevcscc:草案3可以被修改以支持上述的第一实施例。具体地,新子从句3.5和新子从句3.6被增加,以解决(a)当前解码图像标记和存储,以及(b)位于环路滤波器之前的当前解码图像存储。同时,被称为“图像解码、标记、额外的冲突和存储”的当前子从句5.2.3被修改。此外,被称为“nuh_layer_id等于0的编码图像的解码过程”的子从句8.1.3被修改,并且子从句8.x被增加。这些改变将在下面进行描述。

c.3.5关于当前解码图像标记和存储

该子从句中所指定的过程同时发生在访问单元n的cpb移除时间(即cpbremovaltime[n])。

如果curr_pic_as_ref_enabled_flag等于0,则当前解码图像被存储在空的图像存储缓存器中的dpb中,dpb存储度被增加1,以及当前图像被标记为“用于短期参考”。

否则,如果curr_pic_as_ref_enabled_flag等于1,则dpb存储度保持不变。另外,如子从句8.1.3中指定,当前解码图像被存储在图像存储缓存器中的dpb中,其被分配给当前图像并且被标记为“用于短期参考”。

c.3.6位于环路滤波器之前的当前解码图像存储

当curr_pic_as_ref_enabled_flag等于1时,该子从句中所指定的过程同时发生在访问单元n的cpb移除时间,即cpbremovaltime[n]。在当前图像的解码之前且当前图像的第一切片段的头的解析之后,该过程被每个图像调用一次。

dpb存储度被增加1。

来自于当前hevcscc:草案3的子从句c.5.2.3和子从句8.1.3的改变被指示,其中插入文本以斜体显示,且删除文本由括号对内的星号对封装(即[*删除文本*])。

c.5.2.3图像解码、标记、额外的冲突和存储

本子从句中所指定的过程同时发生在访问单元n的最后一个解码单元从cpb中被移除的时候。

当当前图像具有picoutputflag等于1时,对于dpb中被标记为“输出所需”且在输出顺序中位于当前图像之后的每个图像而言,相关变量piclatencycount被设置成等于piclatencycount+1。

在图像的最后一个解码单元被解码之后,当前图像被认为成被解码。如果curr_pic_as_ref_enabled_flag等于0,当前解码图像被存储在dpb中的空的图像存储缓存器中。否则,如果

curr_pic_as_ref_enabled_flag等于1,dpb存储度保持不变。另外,子从句8.1.3中所指定,当前解码图像被存储在图像存储缓存器中的dpb中,其被分配给当前图像且被标记为“用于短期参考”。并且以下适用:

–如果当前解码图像具有picoutputflag等于1,其被标记为“输出所需”,且其相关变量piclatencycount被设置成等于0。

–否则(即当前解码图像具有picoutputflag等于0),其被标记为“非输出所需”。

当前解码图像被标记为“用于短期参考”。

当下面条件中的一个或者多个为真时,从句c5.2.4中所指定的“冲突”过程被重复调用,直到下面条件中没有一个为真:

–dpb中被标记为“输出所需”的图像的数量大于sps_max_num_reorder_pics[highesttid]。

–sps_max_latency_increase_plus1[highesttid]不等于0,且dpb中存在被标记为“输出所需”的至少一个图像,以用于大于或者等于spsmaxlatencypictures[highesttid]的相关变量piclatencycount。

8.1.3用于nuh_layer_id等于0的编码图像的解码过程

解码过程操作如下以用于当前图像currpic:

1.nal单元的解码在子从句8.2中被指定。

2.使用切片段层中和切片段层上方的语法元素,子从句8.3中的过程指定下面的解码过程:

–与图像顺序计数相关的变量和函数在子从句8.3.1中被推导出。这只需要为图像的第一个切片段调用。

–子从句8.3.2中用于rps的解码过程被调用,其中参考图像可以被标记为“不用于参考”或者“用于长期参考”。这只需要为图像的第一个切片段调用。

–当curr_pic_as_ref_enabled_flag等于1时,dpb中的图像存储缓存器被分配给当前图像,且如c.3.5(位于环路滤波器之前的当前解码图像存储)中所指定的,dpb存储度被增加1,并且当前图像被标记为“用于长期参考”。

–当curr_pic_as_ref_enabled_flag等于1时,部分8.x中所指定的用于生成当前解码参考图像的一般解码过程被调用,在处理c.3.5(位于环路滤波器之前的当前解码图像存储)之后,其需要被每个图像处理一次。

–当当前图像为norasloutputflag等于1的断链访问(brokenlinkaccess,bla)图像或者干净的随机访问(cleanrandomaccess,cra)图像时,子从句8.3.3中所指定的用于生成不可用的参考图像的解码过程被调用,其只需要为图像的第一个切片段调用。

8.x用于当前解码参考图像的解码过程

当curr_pic_as_ref_enabled_flag等于1时,通过应用下面过程,在处理c.3.5之后且先于子从句8.3.4中所指定的用于参考图像列表构造的解码过程,该过程被每个编码图像调用一次:

–用于生成的图像的picordercntval的值被设置成等于当前图像的poc。

第二实施例。在第二实施例中,增加与位于环路滤波器之前的当前解码图像存储相关的新子从句c.3.5,其中当当前图像被包含在参考图像列表中时dpb存储度被增加1。

当当前图像被包含在参考图像列表中以用于解码当前图像的切片时,在子从句8.x中,增加用于解码当前解码参考图像的一般解码过程,其包括解码过程的两个步骤。

在第一步骤中,用于生成的图像的picordercntval被设置成等于当前图像的图像顺序计数(pictureordercount,poc),其需要被每个图像在处理c.3.5之后处理一次。

在处理c.3.5之后,其需要被每个图像处理一次。

在第二步骤中,用于图像的picoutputflag的值被设置成等于0,并且位于环路滤波器之前的当前图像被标记为“不用于参考”,在解码图像的最后一个解码单元之后,且先于解析下一图像的第一切片段头,其被每个图像调用一次。

由于解码过程的第二步骤,当处理自dpb中的图像移除(即子从句c.3.2)时,dpb中位于环路滤波器之前的当前图像将从dpb中被移除。当前解码图像标记和存储(即子从句c.3.4)和图像解码、标记、额外的冲突和存储(即子从句c.5.2.3)不需要被修改。

本实施例可以被应用到hevcscc:草案3中所指定的系统。hevcscc如下。来自于当前hevcscc:草案3的子从句8.13中的改变被指示,其中插入文本以斜体显示,且删除文本由括号对内的星号对封装(即[*删除文本*])。

c.3.5位于环路滤波器之前的当前解码图像存储

当curr_pic_as_ref_enabled_flag等于1时,该子从句中所指定的过程同时发生在访问单元n的cpb移除时间,即cpbremovaltime[n]。在当前图像的解码之前且当前图像的第一切片段的头的解析之后,该过程被每个图像调用一次。

dpb存储度被增加1。

8.1.3用于nuh_layer_id等于0的编码图像的解码过程

解码过程操作如下以用于当前图像currpic:

1.nal单元的解码在子从句8.2中被指定。

2.使用切片段层中和切片段层上方的语法元素,子从句8.3中的过程指定下面的解码过程:

–与图像顺序计数相关的变量和函数在子从句8.3.1中被推导出。这只需要为图像的第一个切片段调用。

–子从句8.3.2中用于rps的解码过程被调用,其中参考图像可以被标记为“不用于参考”或者“用于长期参考”。这只需要为图像的第一个切片段调用。

–当curr_pic_as_ref_enabled_flag等于1时,dpb中的图像存储缓存器被分配给当前图像,且如c.3.5中所指定的dpb存储度被增加1,并且当前图像被标记为“用于长期参考”。

–当curr_pic_as_ref_enabled_flag等于1时,部分8.x.1中所指定的用于当前解码参考图像的步骤1的解码过程被调用,其需要被每个图像在处理c.3.5(位于环路滤波器之前的当前解码图像存储)之后处理一次。

–当当前图像为norasloutputflag等于1的bla图像或者cra图像时,子从句8.3.3中所指定的用于生成不可用的参考图像的解码过程被调用,其只需要为图像的第一个切片段调用。

–picoutputflag被设置成如下:

–如果当前图像为随机访问跳过引导(randomaccessskippedleadingrasl)图像,且相关的irap图像的norasloutputflag等于1,则picoutputflag被设置成等于0。

–否则,picoutputflag被设置成等于pic_output_flag。

–在每个p切片或者b切片的解码过程的开始处,子从句8.3.4中所指定的用于参考图像列表构造的解码过程被调用,以用于推导出参考图像列表0(即refpiclist0),以及在解码b切片时的参考图像列表1(即refpiclist1),并且子从句8.3.5中所指定的用于同位图像(collocatedpicture)的解码过程和非向后预测标志(nobackwardpredictionflag)被调用,以推导出变量colpic和变量nobackwardpredflag。

3.子从句8.4到子从句8.7中的过程使用所有语法结构层中的语法元素来指定解码过程。图像的编码切片应包含用于该图像的每个编码树单元的切片段数据,这是比特流一致性的要求,以使得图像被分割成切片、切片被分割成切片段以及切片段被分割成编码树单元,每个形成图像的一个分割。当curr_pic_as_ref_enabled_flag等于1时,位于环路滤波之前的解码样本值被存储到分配给当前图像的图像存储缓存器中。

4.在当前图像的所有切片均被解码之后,且先于解析下一图像的第一切片段头,在curr_pic_as_ref_enabled_flag等于1时,8.x.2中所指定的用于当前解码参考图像的步骤2的解码过程被调用。

5.在当前图像的所有切片均被解码之后,当前解码图像[*位于环路滤波之后的整个当前解码图像被存储到分配给当前图像的图像存储缓存器中,并*]标记为“用于短期参考”。

8.x用于当前解码参考图像的一般解码过程

当curr_pic_as_ref_enabled_flag等于1时,子从句8.x.1和子从句8.x.2中所指定的过程被调用。

8.x.1用于当前解码参考图像的步骤1的解码过程

通过运用下面过程,当curr_pic_as_ref_enabled_flag等于1,在处理c.3.5之后,且先于子从句8.3.4中所指定的用于参考图像列表构造的解码过程,该过程被每个编码图像调用一次:

–用于生成的图像的picordercntval的值被设置成等于当前图像的poc。

8.x.2用于当前解码参考图像的步骤2的解码过程

当curr_pic_as_ref_enabled_flag等于1时,在解码图像的最后一个解码单元之后,且先于解码下一图像的第一切片,该过程被每个图像调用一次。如果存在其图像顺序计数等于pocstcurr的解码图像,则:

–用于该图像的picoutputflag的值被设置成等于0。

–解码图像被标记为“不用于参考”。

在第二实施例中,sps中的curr_pic_as_ref_enabled_flag用作指示当前图像是否被包含在参考图像列表中的标志。如2015年05月28日提出的申请号为62/167,474的美国临时专利申请中所描述,当前图像是否被包含在参考图像列表中的指示可以由pps层或/和切片段头层中存在的称为curr_pic_in_ref_list_flag的语法元素来表示。

第三实施例。在第三实施例中,dpb的操作以以下方式被修改:相比于sps中存在的curr_pic_as_ref_enabled_flag,pps层或/和切片段头层中存在的curr_pic_in_ref_list_flag用作调用修改操作的标志。换言之,在之前描述的修改中sps中的curr_pic_as_ref_enabled_flag可以由pps层或/和切片段头层中存在的curr_pic_in_ref_list_flag来替换。在提出的方法1的另一实施例中,例如,上述所公开的附录c.3.5可以按照如下进行修改,并且,通过用curr_pic_in_ref_list_flag来替换curr_pic_as_ref_enabled_flag,附录和部分的另一部分可以相应地被修改。

c.3.5位于环路滤波器之前的当前解码图像存储

当curr_pic_in_ref_list_flag等于1时,该子从句中所指定的过程同时发生在访问单元n的cpb移除时间,即cpbremovaltime[n]。

在当前图像的解码之前且当前图像的第一切片段的头的解析之后,该过程被每个图像调用一次。

dpb存储度被增加1。

如另一临时专利申请atdi-15-049pus中所述,切片段头中存在的语法元素curr_pic_in_ref_list_flag指示当前图像是否被包含在参考图像列表中。在如2015年05月28日提出的申请号为62/167,474的美国临时专利申请中所描述的切片段头中存在的curr_pic_in_ref_list_flag的一个语义中,编码图像的切片段头中存在的curr_pic_in_ref_list_flag应为0或者1的相同值,以用于编码图像的所有切片段头。在如2015年05月28日提出的申请号为62/167,474的美国临时专利申请中所描述的切片段头中存在的curr_pic_in_ref_list_flag的另一个语义中,编码图像的切片段头中存在的curr_pic_in_ref_list_flag可以不相同。在后一情况中,由于不相同的curr_pic_in_ref_list_flag在当前图像的解码之前且在解析当前图像的第一切片段的头之后被每个图像调用一次,其在关于dpb的操作的附录c.3.5中引起问题。考虑到一种情况,对于第一切片段而言,当前图像不包含在参考图像列表中,并且,对于一个或者多个剩余切片段而言,当前图像被包含在参考图像列表中。在这种情况下,如果图像的第一切片段头中存在的curr_pic_in_ref_list_flag用作条件以判断是否执行附录c.3.5中所定义的操作,则dpb的操作将不会以更新dpb存储度的形式适当地操作。

在本发明中,称为curr_pic_in_dpb_flag的语法元素被增加到第一切片段头中,以指示图像的至少一个切片段,当前图像被包含在参考图像列表中以解决上述讨论的问题。下表示出了切片段头中包含语法元素curr_pic_in_dpb_flag的示例。

表3

第四实施例。在本实施例中,dpb的操作以以下方式被修改:相比于sps中存在的curr_pic_as_ref_enabled_flag而言,段头的第一切片中存在的curr_pic_in_dpb_flag用作调用方法1中的修改操作的标志。换言之,在方法1的修改中sps中的curr_pic_as_ref_enabled_flag可以由段头的第一切片中存在的curr_pic_in_dpb_flag来替换。例如,附录c.3.5可以按照如下进行修改,并且,通过用curr_pic_in_dpb_flag来替换curr_pic_as_ref_enabled_flag,附录和部分的另一部分可以相应地被修改。

c.3.5位于环路滤波器之前的当前解码图像存储

当第一切片段头中存在的curr_pic_in_dpb_flag等于1时,本子从句中所指定的过程同时发生在访问单元n的cpb移除时间,即cpbremovaltime[n]。在当前图像的解码之前且当前图像的第一切片段的头的解析之后,该过程被每个图像调用一次。

dpb存储度被增加1。

可选地,相比于hevcscc:草案3,sps中存在的curr_pic_as_ref_enabled_flag的语义可以按照下面进行修改:

curr_pic_as_ref_enabled_flag等于1指定参考sps的图像被包含在参考图像列表中以用于图像本身的至少一个切片段。

curr_pic_as_ref_enabled_flag等于0指定参考sps的图像不被包含在任何参考图像列表中以用于图像本身的任一切片段。当不存在时,

curr_pic_as_ref_enabled_flag的值被推断为等于0。

与第一实施例相同,dpb操作被处理。然而,curr_pic_as_ref_enabled_flag的语义按照上述进行改变。

此外,如2015年05月28日提出的申请号为62/167,474的美国临时专利申请中所描述,切片层语法curr_pic_in_ref_list_flag被增加在图像的每个切片段头中,以指示当前图像是否被包含在用于当前切片的图像的参考图像列表中。

在另一可选实施例中,称为curr_pic_in_dpb_flag的语法元素被增加到pps中,并且,相比于hevcscc:草案3,curr_pic_as_ref_enabled_flag的语义按照下面进行修改:

curr_pic_as_ref_enabled_flag等于1指定参考pps的图像被包含在参考图像列表中以用于图像本身的至少一个切片段。

curr_pic_as_ref_enabled_flag等于0指定参考pps的图像不被包含在任何参考图像列表中以用于图像本身的任一切片段。当不存在时,

curr_pic_as_ref_enabled_flag的值被推断为等于0。

dpb操作以与提出的方法1的第一实施例相同的方式被处理,但是curr_pic_as_ref_enabled_flag的语义按照上述进行改变。

此外,如2015年05月28日提出的申请号为62/167,474的美国临时专利申请中所描述,切片层语法curr_pic_in_ref_list_flag被增加在图像的每个切片段头中,以指示当前图像是否被包含在用于当前切片的图像的参考图像列表中。

第二方法。在本方法中,如果在帧内块复制预测中使用重构样本,则位于dpb外部的图像存储器缓存器或者子图像存储器缓存器用于存储位于环路滤波器之前的重构样本。在本方法中,相比于当前hevcscc:草案3,比特流一致性被修改,使得在需要用于预测时,除了用于帧内块复制预测的当前图像之外的所有参考图像将在dpb中存在。当帧内块复制模式被使能以用于解码当前切片或者当前图像时,此处当前图像被用作参考图像。hevcscc:草案3将按照下面进行改变(增加的内容如斜体所示),并且附录c.3中的dpb的操作中不需要修改。

c.4比特流一致性

与本文一致的编码数据的比特流应满足本从句所指定的所有要求。

7.当需要用于预测时,除了用于帧内块复制预测且在curr_pic_as_ref_enabled_flag等于1时被包含在参考图像列表中的当前图像之外的所有参考图像将在dpb中存在。除非通过从句c.3中所指定的多个过程中的一个,在输出时间之前,图像从dpb中被移除,picoutputflag等于1的每个图像将在其dpb输出时间处存在于dpb中。

第一实施例。在本实施例中,如果帧内块复制预测中使用重构样本,除了位于环路滤波器之后的重构样本,位于dpb外部的额外的图像存储器缓存器或者子图像存储器缓存器被考虑用于存储位于环路滤波器之前的重构样本。位于dpb外部的图像缓存器与位于dpb内部的图像缓存器就尺寸而言是相同的。在这种情况下,相比于的当前hevcscc:草案3,用于nuh_layer_id等于0的编码图像的解码过程按照如下进行相应地修改,其中增加的文本以斜体表示,删除的文本由括号对内的星号对封装(即[*删除文本*])。

8.1.3用于nuh_layer_id等于0的编码图像的解码过程

解码过程操作如下以用于当前图像currpic:

1.nal单元的解码在子从句8.2中被指定。

2.使用切片段层中和切片段层上方的语法元素,子从句8.3中的过程指定下面的解码过程:

–与图像顺序计数相关的变量和函数在子从句8.3.1中被推导出。这需要被调用以仅用于图像的第一切片段。

–子从句8.3.2中用于rps的解码过程被调用,其中参考图像可以被标记为“不用于参考”或者“用于长期参考”。这只需要为图像的第一个切片段调用。

–当curr_pic_as_ref_enabled_flag等于1时,dpb外部[*中*]的图像存储缓存器或者子图像存储缓存器被分配给当前图像,并且当前图像被标记为“用于长期参考”。

–当当前图像为norasloutputflag等于1的bla图像或者cra图像时,子从句8.3.3中所指定的用于生成不可用的参考图像的解码过程被调用,其需要被调用以仅用于图像的第一切片段。

3.子从句8.4、子从句8.5、子从句8.6和子从句8.7中的过程使用所有语法结构层中的语法元素来指定解码过程。图像的编码切片应包含用于该图像的每个编码树单元的切片段数据,这是比特流一致性的要求,以使得图像被分割成切片、切片被分割成切片段以及切片段被分割成编码树单元,每个形成图像的一个分割。当curr_pic_as_ref_enabled_flag等于1时,如果帧内块复制预测中使用重构样本,则位于环路滤波之前的解码样本值被存储到分配给当前图像的图像存储缓存器中。

4.在当前图像的所有切片均被解码之后,位于环路滤波之后的整个当前解码图像被存储到dpb中[*分配给当前图像*]的图像存储缓存器,并被标记为“用于短期参考”。

在上述实施例中,sps中的curr_pic_as_ref_enabled_flag可以由指示当前图像是否被包含在参考图像列表的标志来替换。如2015年05月28日提出的申请号为62/167,474的美国临时专利申请中所描述,可以由pps层或/和切片段头层中存在的称为curr_pic_in_ref_list_flag的语法元素来指示当前图像是否被包含在参考图像列表中。

在第二方法的另一实施例中,相比于sps中存在的curr_pic_as_ref_enabled_flag而言,比特流一致性以这样方式被修改:ps层或/和切片段头层中存在的curr_pic_in_ref_list_flag用作调用第二方法中的修改操作的标志。换言之,在方法2的修改中sps中的curr_pic_as_ref_enabled_flag可以由pps层或/和切片段头层中存在的curr_pic_in_ref_list_flag来替换。在第二方法的另一实施例中,附录c.4比特流一致性可以按照如下进行修改,并且附录和部分的另一部分可以相应地被修改。

c.4比特流一致性

与本文一致的编码数据的比特流应满足本从句所指定的所有要求。

7.需要用于预测时,除了用于帧内块复制预测且在curr_pic_in_ref_list_flag[*curr_pic_as_ref_enabled_flag*]等于1时被包含在参考图像列表中的当前图像之外的所有参考图像将在dpb中存在。除非通过从句c.3中所指定的多个过程中的一个,在输出时间之前,图像从dpb中被移除,picoutputflag等于1的每个图像将在其dpb输出时间处存在于dpb中。

参考图像列表(即refpiclisttemp0队列)构造初始化过程

在一个实施例中,该过程被修改,以使得当前图像(位于环形滤波之前)用作参考,并被放置到参考图像列表的第n个位置(即列表中索引n-1)。该列表可以为列表0或者列表1。下面示例被提供用于列表0。n可以是包含两端点的(1,num_ref_idx_l0_active_minus1+1)的范围中的正整数。例如,n可以等于1(即列表中的第二位置,位于一个时间参考图像之后),或者n可以等于num_ref_idx_l0_active_minus1+1(即列表中的最后位置)。

如下表所示,是一种示例性处理,其中currpic表示位于环路滤波之前的当前图像。

表4

在另一实施例中,未滤波(去块滤波器和sao滤波器)版本的当前图像用作用于当前切片的可能的参考图像,并且当下面条件中的一个或者两个为真时,其被放置在参考图像列表x(x=0或者1)的最后位置处:

–序列层标志/图像层标志/切片层标志发信当前未滤波图像用于参考图像,

–没有使用该列表的参考列表变形。

如下表所示,是一种示例性处理,其中currpic表示位于环形滤波之前的当前图像。

表5

列表refpiclist0被构造成如下:

for(ridx=0;ridx<=num_ref_idx_l0_active_minus1;ridx++)

refpiclist0[ridx]=ref_pic_list_modification_flag_l0?

refpiclisttemp0[list_entry_l0[ridx]]:refpiclisttemp0[ridx]

if(curr_pic_as_ref_enabled_flag&&!ref_pic_list_modification_flag_l0)

refpiclist0[num_ref_idx_l0_active_minus1]=currpic

用作参考图像的未滤波版本的当前图像的dpb管理

第一实施例。在如上所公开的参考图像列表构造初始化过程中,当curr_pic_as_ref_enabled_flag等于1时,在开始当前图像的解码过程之前,已滤波版本和未滤波版本的当前图像可以被放置在dpb中。当curr_pic_as_ref_enabled_flag等于0时,未滤波版本的当前图像将不被放入在dpb中。提出了下面几个方面:

–将两个图像放入到dpb中的时间可以由该过程发生在(当前图像的)访问单元n的cpb移除时间,即cpbremovaltime[n]的同时的情况来表示。

–当前已解码图像(未滤波)被存储到空的图像存储缓存器中的dpb中,dpb存储度被增加1,并且当前图像(未滤波)被标记为“用于长期参考”。

–当前已解码图像(已滤波)被存储到空的图像存储缓存器中的dpb中,dpb存储度被增加1,并且当前图像(已滤波)被标记为“用于短期参考”。

在当前图像(已滤波)的解码之后,当curr_pic_as_ref_enabled_flag等于1时,未滤波版本的当前图像将从dpb中移除,而已滤波版本的当前图像将保持在dpb中。在当前图像被处理之后,已滤波版本/未滤波版本的当前图像分别被作为已滤波版本/未滤波版本的之前图像(pastpicture)。下一待解码图像被作为下一当前图像。提出了下面几个方面:

–将未滤波版本的之前图像移除的时间可以由这个图像自dpb中移除的情况来表示,其发生在当前图像的解码之后的任何时间,但得在下一当前图像的解码之前(可以是在解析下一当前图像的第一切片的切片头之后)。移除时间的一个示例为当前图像的解码之后立即,在访问单元n(包含当前图像)的最后一个解码单元的cpb移除时间。

–当未滤波版本的之前图像自dpb中移除时,dpb存储度被减去1。

–已滤波版本的之前图像保持在dpb中。

在第一实施例的变形中,在解码当前图像之前(但在解析当前图像的第一切片的切片头之后),如果已知环路滤波器(去块和sao)对整个图像被禁能,已滤波版本的当前图像和未滤波版本的当前图像相同。与未滤波版本的当前图像相关的操作是不必要的,例如,将其放入到dpb中并将dpb存储度增加1,以及将其自dpb中移除并将dpb存储度减去1。

第二实施例。当curr_pic_as_ref_enabled_flag等于1时,在开始当前图像的解码过程之前,已滤波版本的当前图像被放入到空的图像存储缓存器中的dpb中。而未滤波版本的当前图像可以被放入到不作为dpb一部分的空的图像存储缓存器中。提出了下面几个方面:

–将已滤波版本的当前图像放入到dpb中的时间可以由该过程发生在(当前图像的)访问单元n的cpb移除时间,即cpbremovaltime[n]的同时的情况来表示。

–将未滤波版本的当前图像放入到空的图像存储缓存器中(而不是被存储在dpb)的时间可以由下面来表示:这个过程发生在(当前图像的)访问单元n的cpb移除时间的同时,即cpbremovaltime[n]。dpb存储度保持不变,并且当前图像(未滤波)被标记为“用于长期参考”。

–当前已解码图像(已滤波)被存储到空的图像存储缓存器中的dpb中,dpb存储度被增加1,且当前图像(已滤波)被标记为“用于短期参考”。

在当前图像(已滤波)的解码之后,当curr_pic_as_ref_enabled_flag等于1时,未滤波版本的当前图像将从图像存储缓存器(而非dpb)中移除,而已滤波版本的当前图像将保持在dpb中。当该过程移动至下一图像时,未滤波版本的当前图像被作为未滤波版本的之前图像。相似地,已滤波版本的当前图像被作为已滤波版本的之前图像。下一待解码图像被作为下一当前图像。提出了下面几个方面:

–将未滤波版本的之前图像移除的时间可以由这个图像自图像存储缓存器(而非dpb)中移除的情况来表示,其发生在当前图像的解码之后的任何时间,但得在下一当前图像的解码之前(可以是在解析下一当前图像的第一切片的切片头之后)。移除时间的一个示例为当前图像的解码之后,在访问单元n(包含当前图像)的最后一个解码单元的cpb移除时间。

–当未滤波版本的之前图像自图像存储缓存器(而非dpb)中移除时,dpb存储度保持不变。

第三实施例。当curr_pic_as_ref_enabled_flag等于1时,在开始当前图像的解码过程之前,未滤波版本的当前图像被放入到dpb中的空的图像存储缓存器中。而已滤波版本的当前图像可以被放入到不作为dpb一部分的空的图像存储缓存器中。提出了下面几个方面:

–将未滤波版本的当前图像放入到dpb中的时间可以由该过程发生在(当前图像的)访问单元n的cpb移除时间的同时的情况来表示,即cpbremovaltime[n]。

–当前已解码图像(未滤波)被存储到空的图像存储缓存器中的dpb中,dpb存储度被增加1,且当前图像(未滤波)被标记为“用于长期参考”。

–当前已解码图像(已滤波)位于空的图像存储缓存器中(而不是被存储到dpb中),dpb存储度保持不变,并且当前图像(已滤波的)被标记为“用于短期参考”。

在当前图像(已滤波和未滤波)的解码之后,当curr_pic_as_ref_enabled_flag等于1时,未滤波版本的当前图像将从dpb中移除,而已滤波版本的当前图像将保持在dpb中。在当前图像被处理之后,已滤波版本/未滤波版本的当前图像分别用作已滤波版本/未滤波版本的之前图像。下一待解码图像被作为下一当前图像。提出了下面几个方面:

方法a:

–将未滤波版本的之前图像移除的时间可以由这个图像自dpb中移除的情况来表示,其发生在当前图像的解码之后的任何时间,但得在下一当前图像的解码之前(可以是在解析下一当前图像的第一切片的切片头之后)。移除时间的一个示例为当前图像的解码之后,在访问单元n(包含当前图像)的最后一个解码单元的cpb移除时间。

–当未滤波版本的之前图像自dpb中移除时,dpb存储度被减去1。

–在未滤波版本的之前图像自dpb中移除之后,已滤波版本的之前图像被放入到dpb中,dpb存储度被增加1。

方法b:

–将已滤波版本的当前图像放入到dpb中未滤波版本的当前图像的位置处,替代未滤波版本的当前图像。

–将未滤波版本的之前图像移动至dpb中的时间可以由下面来表示:其发生在当前图像的解码之后的任何时间,但得在下一当前图像的解码之前(可以是在解析下一当前图像的第一切片的切片头之后)。替代时间的一个示例为当前图像的解码之后,在访问单元n(包含当前图像)的最后一个解码单元的cpb移除时间。

–dpb存储度保持不变。

在第三实施例的变形中,在解码当前图像之前(但在解析当前图像的第一切片的切片头之后),如果已知环路滤波器(去块滤波器和sao滤波器)对于整个图像被禁能,已滤波版本的当前图像和未滤波版本的当前图像相同。与未滤波版本的当前图像相关的操作是不必要的,例如,将其放入到dpb中并将dpb存储度增加1,以及将其自dpb中移除并将dpb存储度减去1。在这种情况下,用于已滤波版本的当前图像的操作可以与第三实施例中指定的相同,或者用于已滤波版本的当前图像的操作是不必要的,是因为其在这种情况下与未滤波版本相同。

在上述的三个实施例中,标志curr_pic_as_ref_enabled_flag可以是序列层标志、图像层标志或者切片层标志,其表示对于整个序列/图像/切片而言,当前图像可以用作参考图像。

对于不存在环路滤波器用于整个图像的情况(即去块和sao被禁能用于图像)的识别可以以下面的条件来表示:

如果下面三种情况中的一个为真,则sao滤波器不用于当前图像:

情况1:当序列层sao使能标志sample_adaptive_offset_enabled_flag为假时。

情况2:当序列层sao使能标志sample_adaptive_offset_enabled_flag为真时,图像中仅存在一个切片,并且切片头标志slice_sao_luma_flag和切片头标志slice_sao_chroma_flag(如果色度分量存在)为假。

情况3:当序列层sao使能标志sample_adaptive_offset_enabled_flag为真时,图像中存在多个切片,并且,用于所有切片的切片头标志slice_sao_luma_flag和切片头标志slice_sao_chroma_flag(如果色度分量存在)为假。

如果下面三种情况中的一个为真,则去块滤波器不用于当前图像:

情况1:图像中仅存在一个切片,并且切片头标志slice_deblocking_filter_disabled_flag存在且为真。

情况2:图像中仅存在一个切片,切片头标志slice_deblocking_filter_disabled_flag不存在,并且图像层pps_deblocking_filter_disabled_flag为真。

情况3:图像中存在多个切片,当存在时,所有的切片头标志slice_deblocking_filter_disabled_flag为真;或者当不存在时,图像层pps_deblocking_filter_disabled_flag为真。

用于帧内块复制编码块的dpb尺寸管理

在第一实施例中,在当前图像的解码之前,当已滤波版本和未滤波版本的当前图像被放置在dpb中时,dpb尺寸(即maxdpbpicbuf)被保持不变。

在第二实施例中,在当前图像的解码之前,已滤波版本的当前图像被放入到dpb中,而另一方面,未滤波图像不被放入到dpb中。可选地,在当前图像的解码之前,未滤波版本的当前图像可以被放入到dpb中,而已滤波图像不被放入到dpb中。在这两种情况中,maxdpbpicbuf被修改为maxdpbpicbuf–curr_pic_as_ref_enabled_flag。如果curr_pic_as_ref_enabled_flag等于1,则一个缓存器被保留以用于不位于dpb中的一个版本。

在第二实施例的变形中,在使用maxdpbpicbuf–curr_pic_as_ref_enabled_flag计算dpb尺寸的过程中,通过当前图像中环路滤波器的使用的识别也来约束curr_pic_as_ref_enabled_flag。该过程可以由下面陈述来表示:

–如果不存在滤波器用于当前图像,则dpb尺寸为maxdpbpicbuf;

–否则,如果curr_pic_as_ref_enabled_flag为真,dpb尺寸为maxdpbpicbuf–1

–否则,dpb尺寸为maxdpbpicbuf

标志curr_pic_as_ref_enabled_flag可以被合并到序列层标志、图像层标志或者切片层标志中,其表示当前图像可以用作整个相应的序列/图像/切片的参考图像。

在第三实施例中,在当前图像的解码之前,已滤波版本的当前图像被放入到dpb中,而未滤波图像不被放入到dpb中。可选地,在当前图像的解码之前,未滤波版本的当前图像可以被放入到dpb中,而已滤波图像不被放入到dpb中。在这两种情况中,maxdpbpicbuf被修改为maxdpbpicbuf–1。一个缓存器被保留以用于不位于dpb中的一个版本。

图1示出了根据本发明实施例的使用包含帧内块复制模式和帧间预测模式的编解码模式的示例性编解码系统的流程图,其中两个图像缓存器被分配在解码图像缓存器中以存储位于环路滤波之后的重构当前图像和位于环路滤波之前的重构当前图像。在步骤110中,该系统将位于环路滤波之后的一个或者多个之前重构图像存储到dpb中。在步骤120中,接收包含与当前图像相关的压缩数据的视频比特流。如步骤130中所示,在dpb中分配第一图像缓存器,且如步骤140中所示,在dpb中分配第二图像缓存器。在步骤150中,从视频比特流中推导出与当前图像相关的一个或者多个重构图像单元。在步骤160中,将位于环路滤波之前的重构图像单元存储到第一图像缓存器中。在步骤170中,将位于环路滤波之后的重构图像单元存储到第二图像缓存器中。如步骤180中所示,如果以帧内块复制模式来编解码当前重构图像单元,则使用第一图像缓存器中位于环路滤波之前的重构图像单元来重构当前重构图像单元,以推导出帧内块复制预测。如步骤190中所示,如果以帧间预测模式来编解码当前重构图像单元,则使用dpb中位于环路滤波之后的之前重构图像来重构当前重构图像单元,以推导出帧间预测。

图2示出了根据本发明实施例的使用包含帧内块复制模式和帧间预测模式的编解码模式的示例性编解码系统的流程图,其中一个图像缓存器被分配在解码图像缓存器中,一个图像缓存器被分配在位于解码图像缓存器外部的临时缓存器中,以存储位于环路滤波之后的重构当前图像和位于环路滤波之前的重构当前图像。在步骤210中,该系统将位于环路滤波之后的一个或者多个之前重构图像存储到dpb中。在步骤220中,接收包含与当前图像相关的压缩数据的视频比特流。如步骤230中所示,在dpb或者dpb外部的临时缓存器中分配第一图像缓存器和第二图像缓存器,其中第一图像缓存器和第二图像缓存器中的一个位于dpb中,并且第一图像缓存器和第二图像缓存器中的一个位于dpb外部的临时缓存器中。在步骤240中,从视频比特流中推导出与当前图像相关的一个或者多个重构图像单元。在步骤250中,将位于环路滤波之前的重构图像单元存储到第一图像缓存器中。如步骤260中所示,将位于环路滤波之后的重构图像单元存储到第二图像缓存器中。如步骤270中所示,如果以帧内块复制模式来编解码当前重构图像单元,则使用第一图像缓存器中位于环路滤波之前的重构图像单元来重构当前重构图像单元,以推导出帧内块复制预测。如步骤280中所示,如果以帧间预测模式来编解码当前重构图像单元,则使用dpb中位于环路滤波之后的之前重构图像来重构当前重构图像单元,以推导出帧间预测。

上述的流程图用于示出根据本发明的帧内块复制编解码和帧间编解码的示例。在不脱离本发明的精神的情况下,本领域的技术人员可以修改每个步骤、重组这些步骤、将一个步骤进行分离或者组合这些步骤而实施本发明。在本发明中,具体的语法和语义已被使用以示出实现本发明实施例的示例。在不脱离本发明的精神的情况下,通过用等同的语法和语义来替换该语法和语义,技术人员可以实施本发明。

上述说明,使得本领域的普通技术人员能够在特定应用程序的内容及其需求中实施本发明。对本领域技术人员来说,所描述的实施例的各种变形将是显而易见的,并且本文定义的一般原则可以应用于其他实施例中。因此,本发明不限于所示和描述的特定实施例,而是将被赋予与本文所公开的原理和新颖特征相一致的最大范围。在上述详细说明中,说明了各种具体细节,以便透彻理解本发明。尽管如此,将被本领域的技术人员理解的是,本发明能够被实践。

如上所述的本发明的实施例可以在各种硬件、软件代码或两者的结合中实现。例如,本发明的实施例可以是集成在视频压缩芯片内的电路,或者是集成到视频压缩软件中的程序代码,以执行本文所述的处理。本发明的一个实施例也可以是在数字信号处理器(digitalsignalprocessor,dsp)上执行的程序代码,以执行本文所描述的处理。本发明还可以包括由计算机处理器、数字信号处理器、微处理器或现场可编程门阵列(fpga)所执行的若干函数。根据本发明,通过执行定义了本发明所实施的特定方法的机器可读软件代码或者固件代码,这些处理器可以被配置为执行特定任务。软件代码或固件代码可以由不同的编程语言和不同的格式或样式开发。软件代码也可以编译为不同的目标平台。然而,执行本发明的任务的不同的代码格式、软件代码的样式和语言以及其他形式的配置代码,不会背离本发明的精神和范围。

本发明以不脱离其精神或本质特征的其他具体形式来实施。所描述的例子在所有方面仅是说明性的,而非限制性的。因此,本发明的范围由附加的权利要求来表示,而不是前述的描述来表示。权利要求的含义以及相同范围内的所有变化都应纳入其范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1