用于帧内块复制模式的已解码图像缓存器的方法和系统与流程

文档序号:14213596阅读:168来源:国知局
用于帧内块复制模式的已解码图像缓存器的方法和系统与流程

优先权声明

本发明要求2015年09月08日提出的申请号为62/215,287的美国临时专利申请,以及2015年10月23日的提出的申请号为62/245,372的美国临时专利申请的优先权。上述美国临时专利申请整体以引用方式并入本文中。

本发明涉及用于视频数据的调色板编解码(palettecoding)。具体地,本发明涉及在编解码系统使用包括帧间预测模式和帧内块复制模式(intrablockcopymode)的编解码模式时,已解码图像缓存器管理/操作。



背景技术:

高效视频编码(highefficiencyvideocoding,hevc)是近几年发展起来的一种新的编码标准。在hevc系统中,h.264/avc中固定大小的宏块由灵活块来替换,其称为编码单元(codingunit,cu)。编码单元中的像素共享相同的编解码参数,以提高编解码效率。编码单元可以从最大编码单元(largestcodingunit,lcu)开始,其在hevc中也被称为编码树单元(codedtreeunit,ctu)。除了编码单元的概念之外,在hevc中也引入了预测单元(predictionunit,pu)。一旦编码单元分层树的分割被完成,依据预测类型和预测单元分类,每个叶编码单元被进一步分割为一个或多个预测单元。hevc还支持切片(slice)结构,其中图像被分割成多个切片,每一切片可使用其自身的编解码参数或配置。

随着hevc标准的发展,hevc扩展的发展也已开始了。hevc的扩展包括范围扩展(rangeextension,rext),其目标在于诸如4:2:2和4:4:4的非4:2:0颜色格式,以及更高位元深度的视频,例如每样本12位元,14位元和16位元。使用rext的可能应用之一是基于有线或无线连接的屏幕共享。由于屏幕内容的具体特性,编解码工具已被开发出来且在编解码效率方面取得了显著的进步。

帧内块复制预测

在用于hevc标准的屏幕内容编码的当前发展中,一些工具因其在屏幕内容的编解码效率方面的提高而已被采用。对于帧内块来说,使用基于来自相邻块的重构像素,根据传统方法的帧内预测被执行。帧内预测可以从帧内模式集(setofintramodes)中选择一个帧内模式,其包括水平模式、垂直模式和各种角度预测模式的帧内模式中选择一个帧内模式。对于hevc屏幕内容编解码,一种称为帧内块复制(intra-blockcopy,intrabc)的新的帧内编解码模式已被采用。intrabc技术最初由budagavi在ahg8中提出,即:videocodingusingintramotioncompensation,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,13thmeeting:incheon,kr,18–26apr.2013,document:jctvc-m0350(以下称作jctvc-m0350)。根据jctvc-m0350的一个例子如图1所示,其中使用帧内运动补偿(motioncompensation,mc),当前cu(即110)被编解码。预测块(即120)根据当前cu和位移矢量(即112)进行定位。在本例中,搜索区域被限定为当前编码树单元、左边ctu和左边第二ctu。预测块从已重构区域中获得。随后,用于当前cu的位移矢量,也被称为块矢量(blockvector,bv),以及残差均被编解码。众所周知,hevc采用编码树单元和编码单元块结构作为基本单元以编解码视频数据。每个图像被分割为多个编码树单元,每个编码树单元被递归地分割成多个编码单元。在预测阶段,每个编码单元可以被分割为多个块,其称为预测单元以用于执行预测处理。在预测残差被形成以用于每个编码单元之后,与每个编码单元相关的残差被分隔为多个块,其称为变换单元(transformunit,tu),以应用于变换。

在jctvc-m0350中,至少在以下方面,帧内运动补偿与用于帧间预测的运动补偿是不同的:

·运动矢量(motionvector,mv)被限制为一维的以用于帧内运动补偿(即垂直或水平),而帧间预测使用二维运动估计。

·二值化是固定长度以用于帧内运动补偿,而帧间预测使用指数哥伦布(exponential-golomb)。

·帧内运动补偿中引入了一个新的语法元素以指示运动矢量是水平的或是垂直的。

基于jctvc-m0350,一些变形由pang等在non-rce3中公开,即:intramotioncompensationwith2-dmvs,jointcollaborativeteamon你、videocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,14thmeeting:vienna,at,25july–2aug.2013,document:jctvc-n0256(以下称作jctvc-n0256)。首先,帧内运动补偿被扩展以支持二维运动矢量,使得两个运动矢量分量可以同时是非零。这为帧内运动补偿提供了比原来的方法更多的灵活性,其中运动矢量被严格限制为水平的或垂直的。

在jctvc-n0256中,公开了两种块矢量的编解码方法:

·方法1-块矢量预测。左块矢量或上方块矢量被选作为块矢量预测子(predictor),且得到的运动矢量差(motionvectordifference,bvd)被编解码。一标志用于表示块矢量差是否为0,当块矢量差不为0时,三阶指数哥伦布码用于编解码块矢量差的剩余绝对级,另一标志用于编解码这个符号。

·方法2:无块矢量预测。使用用于hevc中bvd的指数哥伦布码,bv被编解码。

jctvc-n0256中公开的另一个不同之处是二维intrabc进一步与流水线(pipeline)友好方法结合:

1.没有插值滤波器被使用。

2.块矢量搜索区域受到限制。描述两种情况:

a.搜索区域为当前ctu和左边ctu,或者

b.搜索区域为当前ctu和左边ctu的最右边4列样本。

在jctvc-n0256所提出的方法中,二维intrabc,插值滤波器的移除、对当前ctu和左边ctu的搜索区域约束已在在草案hevcrext标准的新版本中使用。

已有scc草案标准(sccdraftstandard,scm)中的intrabc

在jctv-t0227(pang,etal.,non-ce2test1:intrablockcopyandintersignallingunification,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,20thmeeting:geneva,ch,10–18feb.2015,document:jctvc-t0227)中,intrabc模式与帧间编解码模式统一。换句话说,当前图像被处理为参考图像并被插入到一个或两个参考图像列表中(即列表l0和列表l1)。块矢量预测和编解码则以与帧间运动矢量预测和编解码相同的方式被处理。这种统一简化了编解码器的设计。

自适应运动分辨率

在jctv-s0085(li,etal.,adaptivemotionvectorresolutionforscreencontent,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,19thmeeting:strasbourg,fr,17–24oct.2014,document:jctvc-s0085)中,标志“use_integer_mv_flag”用于每个切片以指示切片中运动矢量的分辨率。如hevc标准中所指定,如果标志为1,则该切片中所有已解码运动矢量使用整数像素分辨率表示,否则,这些运动矢量使用四分之一像素分辨率表示。

当前scc草案标准中存储器带宽考虑

在重构一个块时,参考块需要用于预测。如果运动矢量指向分数位置,则围绕参考块的更多像素也需要用于插值的目的。当需要从外部存储器检索参考块及其周围像素时,数据取出将依据所采用的存储器模型而被批量执行。例如,如果使用的存储器模型是4x4样本块,则即使只有一个像素被需要,用于访问数据的最小单元也是4x4像素。因此,比直接相关像素更多的数据将被检索,并被发送到片上的存储器/缓存器以供进一步处理,这些数据都涉及到存储带宽的消耗。在hevc中,最差的存储带宽消耗情况是在两个运动矢量均具有分数像素的8x8双预测模式中。在intrabc模式被使用时,除了用于帧间预测模式的当前图像的已滤波版本之外,当前图像的未滤波版本也需要存储在外部存储器中。这被认为是hevc的额外成本。

在jctvc-u0078(rapaka,etal.,ce2:test5onintrablockcopyconstraintsonprediction,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,21stmeeting:warsaw,pl,19june–26june2015,document:jctvc-u0078)中,当intrabc被使用时,一些限制被施加在8x8双预测模式的使用上。例如,当开启intrabc的序列参数集(sequenceparameterset,sps)标志且关闭切片头标志use_integer_mv_flag(指示切片中的mv分辨率)时,8x8双预测模式的使用被禁能。

当前scc草案标准中的已解码图像缓存器

在hevc中,所有参考图像被存储在称为已解码图像缓存器(decodedpicturebuffer,dpb)的缓存器中。每当解码一图像时,执行此,经由环路滤波操作之后的当前已解码图像被放入dpb(称为当前已解码图像的已滤波版本)。对于intrabc,其参考图像是在环路滤波器之前的当前已解码图像(称为当前已解码图像的未滤波版本),与hevc版本1相比,其是待存储到dpb中的额外图像。在jctvc-u0181(xu,etal.,onstorageoffilteredandunfilteredcurrentdecodedpictures,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,21stmeeting:warsaw,pl,19june–26june2015,document:jctvc-u0181)中,当前已解码图像的已滤波版本和未滤波版本均被放入dpb中以用于图像缓存器管理。为了方便起见,通过丢弃单词“已解码”,当前已解码图像的已滤波版本或未滤波版本可以被称为当前图像的已滤波版本或未滤波版本。在解码完成当前图像之后,当前图像的未滤波版本将被丢弃,且这个图像的存储缓存器将被释放。

当前已解码图像的两个版本相同的情况被考虑到。这种情况会在没有环路滤波器(去块滤波(deblocking)或样本自适应偏移)用于当前图像时发生。在jctvc-u1005(joshi,etal.,highefficiencyvideocoding(hevc)screencontentcoding:draft3,jointcollaborativeteamonvideocoding(jct-vc)ofitu-tsg16wp3andiso/iecjtc1/sc29/wg11,21stmeeting:warsaw,pl,19june–26june2015,document:jctvc-u1005)中所描述的当前hevcscc工作草案中,称为twoversionsofcurrdecpicflag的变量用于标识当前图像是否被用作参考图像。如果是,则因为图像中环路滤波器的使用,可能会有当前图像的两个不同的版本。

1)调用环路滤波器之后的当前已解码图像被存储在dpb中。一旦当前图像的解码完成,该图像被标记为“用于短期参考”。当解码完成时,该图像将被存储在dpb中以供后续使用。

2)当标志twoversionsofcurrdecpicflag等于1时,在调用环路滤波器之前的当前已解码图像被存储在dpb中,单独的缓存器中。这图像被标记为“用于长期参考”,并用于intrabc补偿。当解码完成时,该图像将从dpb中移除。

根据hevc规范,短期参考图像集被设计以对与当前图像在时间上接近的图像提供参考,例如具有相同的图像结构的图像。另一方面,长期参考图像集可用于解决所选图像以用于更长期参考目的。这些长期参考图像集独立于短期图像集而被构建。随着在当前图像为参考图像时的已解码图像缓存器管理的变化,一些约束需要施加以保证已解码图像缓存器管理的功能正常工作。



技术实现要素:

本发明公开了一种管理已解码图像缓存器的方法及系统,其用于使用包括帧间预测模式和帧内块复制模式的编解码模式的视频编解码器或者视频解码器。如果帧内块复制模式被使能且环路滤波器不用于当前图像,则步骤集合被执行以保证正确的已解码图像缓存器操作。步骤集合包括:在当前图像的解码之前和期间,将用于当前图像的当前已解码参考图像标记为长期参考图像;将当前已解码参考图像分配至参考图像列表构造中,以用于当前图像的帧内块复制参考;以及通过考虑仅存储一张参考图像的缓存器,在开始解码当前图像之前,计算已解码图像缓存器的缓存器存储度。当前已解码参考图像对应于已解码图像缓存器中的一空图像存储缓存器。另外,本方法可以包括:在当前图像的解码之后,将已解码图像缓存器中的当前已解码参考图像标记为短期参考图像;以及将当前已解码参考图像保留在已解码图像缓存器中以用于后续使用。

本发明公开了另一种管理已解码图像缓存器的方法及系统,其中如果最大已解码图像缓存器大小对应于1,则本方法包括:将变量或语法元素设置为目标值以限制仅使用已解码图像缓存器中的一个图像存储缓存器以存储用于编码或解码当前图像的参考图像。例如,如果帧内块复制模式不用于当前图像,将变量或语法元素设置为目标值对应于当前图像中多个切片的切片类型设置为i切片。又例如,将变量或语法元素设置为目标值对应于将变量twoversionsofcurrdecpicflag设置为对应于仅当前已解码图像的一种版本被使用的第一值。变量twoversionsofcurrdecpicflag表示当前已解码图像的两个版本是否被使用。在又一示例中,将变量或语法元素设置为目标值对应于将图像参数集中的帧内块复制标志设置为第二值,以指示帧内块复制模式没有用于当前图像。

本发明公开了又一种管理已解码图像缓存器的方法及系统,其中通过考虑关于当前已解码图像的两个版本是否被使用的信息,计算用于解码当前图像或切片的参考图像的总数。用于解码当前图像或切片的参考图像集包括短期参考图像和长期参考图像。例如,参考图像的总数被计算为具有图像顺序计数值小于当前图像的图像顺序计数值的短期参考图像集的第一总数,具有图像顺序计数值大于当前图像的图像顺序计数值的短期参考图像集的第二总数,长期参考图像集的第三总数,以及与关于当前已解码图像的两个版本是否被使用的信息相关的版本值之和。如果当前已解码图像的两个版本均被使用,则版本值是1,如果当前已解码图像的一个版本被使用,则版本值是0。如果参考图像的总数大于序列参数集中指定的已解码图像缓存器的最大要求大小减1,则参考图像的总数量被设置为已解码图像缓存器的最大要求大小减1或更小。

附图说明

图1示出帧内块复制模式的一示例,其中当前块由当前图像中的参考块进行预测。

图2示出根据本发明实施例的包括已解码图像缓存器管理/操作的示例性编解码系统的流程图。

图3示出根据本发明实施例的包括用于最大dpb大小等于1的已解码图像缓存器管理/操作的示例性编解码系统的流程图。

图4示出根据本发明实施例的示例性编解码系统的流程图,其中通过考虑关于当前已解码图像的两个版本是否被使用的信息,用于dpb的参考图像的总数被计算。

具体实施方式

以下描述为实施本发明的较佳方式。本描述的目的在于阐释本发明的一般原理,并非起限定意义。本发明的保护范围当视所附权利要求书所界定为准。

如上所述,在当前重构图像能够被用作依据帧内块复制模式的参考图像时,现有的已解码图像缓存器管理可能无法正常工作。为了克服在使用intrabc时关于dpb操作的问题,公开了用于操作dpb的各种方法。

方法1:最大已解码图像缓存器大小的计算

语法元素sps_max_dec_pic_buffering_minus1被标示在用于每个时间层的比特流的sps层中,以限制所允许的已解码与已存储图像的总数。该语法元素应小于或等于(maxdpbsize-1),其中,maxdpbsize用于确定标准中的最大允许dpb大小,以用于给定图像分辨率。在hevc中,dpb中的一个图像缓存器被保留以用于存储当前已解码图像的已滤波版本。dpb的其余部分用于存储其他时间参考图像或者等待输出的已解码图像。dpb中所有这些已存储图像的总和,包括时间参考图像和等待输出的图像,应该小于或等于这层的sps语法元素sps_max_dec_pic_buffering_minus1的值,其指定了dpb的最大要求大小,以用于根据jctvc-u1005的图像存储缓存器的单元中的已编码视频序列(codedvideosequence,cvs)。sps语法元素sps_max_dec_pic_buffering_minus1的值应在0到maxdpbsize–1的范围内。

在当前图像被用作参考图像时,当前图像的未滤波版本也可能需要被放置到dpb中。根据方法1的一个实施例,通过考虑当前已解码图像的未滤波版本是否与当前已解码图像的已滤波版本相同,就dpb容量而言所允许的参考图像的数量被计算。例如,当两个版本相同时,不需要创建或保留图像缓存器以用于当前图像的未滤波版本,这可能发生在没有环路滤波器用于当前已解码图像的时候。因此这个未使用的图像缓存器可被分配,以使得多一个的时间参考图像能够被存储在dpb中并用于预测当前图像。否则,在当前图像用作参考图像且当前已解码图像的两个版本不同时,当前图像的两个版本均需要被存储在dpb中。dpb的其余部分将用于存储时间参考图像和待输出可能的其他图像。在所有情况下,参考图像的数量和当前图像的数量(一个或两个版本)的总和应小于或等于dpb中已解码图像的最大允许数量。

在一个实施例中,变量twoversionsofcurrdecpicflag用于识别当前图像是否被用作参考图像以及当前图像的两个版本是否不同。当这个变量等于1时,意味着存在当前图像的两个不同版本,且当前图像被用作参考图像。当这个变量等于0时,意味着仅存在当前图像的一个版本,或者当前图像从没用作参考图像以用于解码当前图像。下面示出了根据本发明的一个实施例的示例性dpb大小计算,其中如jctvc-u1005的子从句7.4.7.1中所指定的部分“通用切片段头语义”被修改如下,且斜体格式的文本表示所添加的文本:

num_long_term_pics指定了当前图像的长期参考图像集(referencepictureset,rps)中条目的数量,其直接被标示在切片头中。当不存在时,num_long_term_pics的值被推断为等于0。当nuh_layer_id等于0时,numnegativepics[currrpsidx]、numpositivepics[currrpsidx]、num_long_term_sps、twoversionsofcurrdecpicflag以及num_long_term_pics的和将小于或等于sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1]。

numnegativepics[currrpsidx]指定了具有小于当前图像的图像顺序计数(pictureordercount,poc)值的图像顺序计数值的第currrpsidx个候选短期rps中条目的数量。numpositivepics[currrpsidx]指定了具有大于当前图像的poc值的poc值的第currrpsidx个候选短期rps中条目的数量。num_long_term_sps指定了当前图像的长期rps中条目的数量,其基于活动sps中所指定的候选长期参考图像而被推导出。sps_max_dec_pic_buffering_minus1指定了已解码图像缓存器的最大要求大小以用于已编解码视频序列。如上所示,根据本发明实施例的dpb大小被计算为短期rps(即numnegativepics和numpositivepics)、长期rps(即num_long_term_sps和num_long_term_pics)和变量twoversionsofcurrdecpicflag的和。

方法2:当最大允许dpb大小受限时对intrabc的使用的约束

当最大已解码图像缓存器大小为1时(例如,包含当前图像的一个子层的sps_max_dec_pic_buffering_minus1等于0),这意味着用于这层的仅一个可用的已解码图像缓存器用于存储当前已解码图像(即已滤波版本)。在这种情况下,如果intrabc不用于当前图像,则用于这个图像中切片的切片类型应该是i切片。当用于当前已编解码视频流的最大已解码图像缓存器大小为1时(例如,包含当前图像的子层的sps_max_dec_pic_buffering_minus1等于0),本发明的方法2不允许当前图像用作参考图像以用于对当前图像进行解码。

在一个实施例中,语法元素pps_curr_pic_ref_enabled_flag用作图像参数集(pictureparameterset,pps)标志,以指示是否将intrabc用于参考了pps的当前图像。示例性约束如下所示,其中jctvc-u1005的子从句7.4.7.1中所指定的部分“通用切片段头语义”被修改:

切片类型语义……

当nal_unit_type具有位于从bla_w_lp到rsv_irap_vcl23且包括两端点的范围内的值,即该图像为irap图像,nuh_layer_id等于0,并且pps_curr_pic_ref_enabled_flag等于0时,slice_type应等于2。

当sps_max_dec_pic_buffering_minus1[temporalid]等于0且nuh_layer_id等于0时,slice_type应等于2。

示例性约束如下所示,其中如jctvc-u1005的子从句7.4.3.3.2中所指定的部分“图像参数集范围扩展语义”被修改,其中斜体格式的文本表示所添加的文本:

pps_curr_pic_ref_enabled_flag等于1指定了参考pps的图像可以被包括在其本身的切片的参考图像列表中。

pps_curr_pic_ref_enabled_flag等于0表示参考pps的图像从没被包括在其本身的切片的参考图像列表中。当不存在时,pps_curr_pic_ref_enabled_flag的值被推断为等于0。

比特流一致性的要求是当sps_curr_pic_ref_enabled_flag等于0时,pps_curr_pic_ref_enabled_flag的值应该等于0。

比特流一致性的要求是当sps_max_dec_pic_buffering_minus1[temporalid]等于0,且nuh_layer_id等于0时,pps_curr_pic_ref_enabled_flag应为0。

在方法2的另一替代方案中,当最大已解码图像缓存器大小为1时(例如,包含当前图像的子层的sps_max_dec_pic_buffering_minus1等于0),当前图像不应被用作参考图像以用于解码当前图像。

在本方法中,变量twoversionsofcurrdecpicflag用于识别当前图像是否被用作参考图像以及当前图像的两个版本是否不同。当这个变量等于1时,意味着存在当前图像的两个不同版本,且当前图像被用作参考图像。当这个变量等于0时,意味着仅存在当前图像的一个版本,或者当前图像从没被用作参考图像以解码当前图像。在一个实施例中,对比特流一致性的要求是如果twoversionsofcurrdecpicflag等于1,则包含当前图像的子层的语法元素sps_max_dec_pic_buffering_minus1应当大于0。在另一个实施例中,对比特流一致性的要求是如果包含当前图像的子层的sps_max_dec_pic_buffering_minus1等于0,则twoversionsofcurrdecpicflag的值应为0。

在方法2的又一替代方案中,如果没有环路滤波器应用于当前图像,则当最大已解码图像缓存器大小为1时(包含当前画面的子层的sps_max_dec_pic_buffering_minus1等于0),当前图像可以被用作参考图像以用于解码当前图像。并且这个当前图像应该是唯一参考图像,其可以用于解码当前图像。

方法3:在没有环路滤波器用于当前图像时将用于intrabc的参考图像存储在图像缓存器中

当intrabc应用于当前图像时,用于intrabc的参考图像是当前图像的未滤波版本。如果没有环路滤波器用于当前图像,则当前已解码图像的两个版本是相同的。不存在dpb中所创建的图像缓存器,以存储当前已解码图像额外版本(未过滤版本),其是用于当前图像的参考图像。在这种情况下,本发明的方法3修改参考图像缓存器的分配,使得intrabc可以参用正确图像缓存器,其将当前已解码图像存储为用于当前图像的参考图像。

当intrabc被使用且没有环路滤波器被使用时,仅存在当前图像的一个版本。因此,根据方法3,在dpb中,仅一个图像缓存器将被创建以存储当前已解码图像。此图像将用作用于intrabc的参考图像。在一个实施例中,被称为当前图像的已滤波版本的此图像将被用作供intrabc使用的参考图像。在另一个实施例中,在使用intrabc并且不使用环路滤波器的情况下,当仅存在当前图像的一个版本时,在当前图像解码流程的开始和期间,当前图像被标记为“用于长期参考”。在完成解码当前图像之后,此图像被标记为“用于短期参考”。在又一个实施例中,在当前图像解码流程的开始和期间,当前图像的已滤波版本被标记为“用于长期参考”。在完成解码当前图像之后,当前图像的已滤波版本被标记为“用于短期参考”。

在一个实施例中,变量twoversionsofcurrdecpicflag用于识别当前图像是否被用作参考图像以及当前图像的两个版本是否不同。当这个变量等于1时,意味着存在当前图像的两个不同的版本,且当前图像被用作参考图像。当这个变量等于0时,意味着仅存在当前图像的一个版本,或者当前图像从没被用作参考图像以用于解码当前图像。通过修改现有视频编解码标准的解码流程,本发明的实施例可以被应用于现有的视频编解码标准(例如hevc)。例如,jctvc-u1005的子从句8.1.3中的部分可以进行如下修改,其中括号对和星号对所包含的文本(即[*删除文本*])表示删除的文本,斜体格式的文本表示所添加的文本:

8.1.3具有等于0的nuh_layer_id的已解码图像的解码流程;

3.从句8.4,从句8.5,从句8.6和从句8.7中的流程指定了使用所有语法结构层中语法元素的解码流程。比特流一致性的要求是图像的已编解码切片应该包括图像的每个编码树单元的切片段数据,使得将图像分割为切片的分割,将切片分割成切片段的分割以及将切片段分割成编码树单元的分割形成了图像的分割。如从句8.7所指定的在环路滤波器流程的调用之后的当前图像的已解码样本值被存储在当前图像的图像存储缓存器中[*且未被标记为“用于长期参考”*]。当twoversionsofcurrdecpicflag等于0时,如从句8.7所指定的在环路滤波器流程的调用之后的当前图像被标记为“用于长期参考”。当twoversionsofcurrdecpicflag等于1时,如从句8.7中指定的在环路滤波器流程的调用之前的当前图像的已解码样本值被存储在当前图像的图像存储缓存器中,并被标记为“用于长期参考”。

jctvc-u1005中的子从句8.3.4可以被修改成如下,其中括号对和星号对所包含的文本(即[*删除文本*])表示删除的文本,斜体格式的文本表示添加的文本:

8.3.4参考图像列表构造的解码过程;

[*假设变量currpic为被标记为“用于长期参考”的当前已解码图像*]。当twoversionsofcurrdecpicflag等于1时,假设变量currpic为如从句8.7中所指定的在调用环路滤波器流程之前的当前已解码图像;否则(即twoversionsofcurrdecpicflag等于0),假设变量currpic为如从句8.7中所指定的调用环路滤波器流程之后的当前已解码图像。

jctvc-u1005中的附录c3.4可以被修改成如下,其中斜体格式的文本表示添加的文本:

附录c3.4当前已解码图像的标记和存储;

当twoversionsofcurrdecpicflag等于1时,

–如从句8.7中指定的调用环路滤波器流程之后的当前已解码图像被存储在空图像存储缓存器中的dpb中,dpb的存储度(fullness)增加1,并且这个图像被标记为“用于短期参考”。

否则,

–如从句8.7中所指定的调用环路滤波器流程之后的当前已解码图像被存储在空图像存储缓存器中的dpb,dpb的存储度增加1,并且这个图像被标记为“用于长期参考”。在当前图像的所有切片已被解码之后,如从句8.7中所指定的调用环路滤波器流程之后的当前已解码图像被标记为“用于短期参考”。

用于intrabc的图像缓存器的使用和标记

在环路滤波之后的当前已解码图像需要被存储在dpb中,以用于后续使用(即输出或者用作未来图像的参考图像)。当intrabc用于当前图像时,用于intrabc的参考图像是当前图像的未滤波版本(即在环路滤波之前的已解码图像)。如果没有环路滤波器用于当前图像,则当前已解码图像的这两个版本是相同的。在这种情况下,没有必要在dpb中使用一个额外的图像缓存器来存储当前已解码图像的复制版本。因此,仅当前已解码图像的一个版本需要被存储在dpb中。根据本方法的一个实施例,参考图像缓存器的分配被修改,使得intrabc可以参用正确图像缓存器,其将当前已解码图像存储为用于当前图像的参考图像。

具体地说,当intrabc被使能且不使用环路滤波器时,根据本方法的一个实施例,仅当前图像的一个版本被用作参考图像。在解码当前图像之前以及期间,这个当前图像被标记为“用于长期参考”,并用于intrabc操作的参考图像。在完成解码当前图像之后,当前图像被标记为“用于短期参考”。

基于现有hevcscc标准草案(即jctvc-u1005)的语法和语义可以被修改以实现上述缓存器管理。对语法和语义的示例性修改如下所示。

子从句8.1.3的一些部分,即“具有等于0的nuh_layer_id的已编解码图像的解码流程”被修改。具体地,子从句8.1.3的项目3被修改成如下,其中斜体格式的文本表示添加的文本。

3.从句8.4,从句8.5,从句8.6和从句8.7中的流程指定了使用所有语法结构层中语法元素的解码流程。比特流一致性的要求是图像的已编解码切片应该包括图像的每个编码树单元的切片段数据,使得将图像分割为切片的分割、将切片分割成切片段的分割以及将切片段分割成编码树单元的分割形成了图像的分割。当twoversionsofcurrdecpicflag等于1时,如从句8.7中所指定的在调用环路滤波器流程之后的当前图像的已解码样本值被存储在用于当前图像的图像存储缓存器中。如从句8.7中所指定的在调用环路滤波器流程之前的当前图像的已解码样本值被存储在用于当前图像的另一图像存储缓存器中,并被标记为“用于长期参考”。当twoversionsofcurrdecpicflag等于0且pps_curr_pic_as_ref_enabled_flag等于0时,如从句8.7中所指定的在调用环路滤波器流程之后的当前图像的已解码样本值被存储在用于当前图像的存储缓存器中。当twoversionsofcurrdecpicflag等于0且pps_curr_pic_as_ref_enabled_flag等于1时,如从句8.7中指定的在调用环路滤波器流程之前的当前图像的已解码样本值被存储在用于当前图像的图像存储缓存器中,并被标记为“用于长期参考”。

在另一个实施例中,子从句的项目3中最后一句话可以被更改为“如从句8.7中指定的在调用环路滤波器流程之后的当前图像的已解码样本值被存储在用于当前图像的图像存储缓存器中,并被标记为‘用于长期参考’”。

子从句8.3.4的一些部分,即“参考图像列表构造的解码流程”被修改如下,其中括号对和星号对所包含的文本(即[*删除文本*])表示删除的文本,斜体格式的文本表示添加的文本。

[*假设变量currpic为被标记为“用于长期参考”的当前已解码图像。*]当twoversionsofcurrdecpicflag等于1时,假设变量currpic为如从句8.7中所指定的在调用环路滤波器流程之前的当前已解码图像;否则(即twoversionsofcurrdecpicflag等于0),假设变量currpic为如从句8.7指定的在调用环路滤波器流程之后的当前已解码图像。

在另一个实施例中,上面实施例的最后一个句子可以被修改为“否则(即twoversionsofcurrdecpicflag等于0),假设变量currpic为如从句8.7指定的在调用环路滤波器流程之前(immediatelybefore)的当前已解码图像。”

同样,子从句附录c3.4的一些部分,即“当前已解码图像的标记和存储”也需要被修改如下,其中括号对和星号对所包含的文本(即[*删除文本*])表示删除的文本,斜体格式的文本表示添加的文本。

如果twoversionsofcurrdecpicflag等于1,则

–如从句8.7中指定的在调用环路滤波器流程之后的当前已解码图像被存储在空图像存储缓存器中的dpb中,dpb的存储度增加1,并且这个图像被标记为“用于短期参考”。

–[*当twoversionsofcurrdecpicflag等于1时,*]如从句8.7中指定的在调用环路滤波器流程调之前的当前已解码图像被存储在空图像存储缓存器中的dpb中,dpb的存储度增加1,并且这个图像被标记为“用于长期参考”。

……

否则如果twoversionsofcurrdecpicflag等于0且pps_curr_pic_ref_enabled_flag等于0,则

–如从句8.7中指定的在调用环路滤波器流程之后的当前已解码图像被存储在空图像存储缓存器中的dpb中,dpb的存储度增加1,并且这个图像被标记为“用于短期参考”。

否则(即twoversionsofcurrdecpicflag等于0且pps_curr_pic_ref_enabled_flag等于1),

–如从句8.7中指定的在调用环路滤波器流程之后的当前已解码图像被存储在空图像存储缓存器中的dpb中,dpb的存储度增加1,并且这个图像被标记为“用于长期参考”。在当前图像的所有切片均已被解码之后,如从句8.7中指定的在调用环路滤波器流程之后的当前已解码图像被标记为“用于短期参考”。

在另一个实施例中,上述段落的最后一个句子可以被修改为“如从句8.7中指定的在调用环路滤波器流程之前(immediatelybefore)的当前已解码图像被标记为‘用于短期参考’”。

图2示出了根据本发明实施例的包括已解码图像缓存器管理/操作的示例性编解码系统的流程图。在步骤210中,本流程在解码当前图像之前,确定intrabc模式是否被使能以及是否存在任何环路滤波器用于当前图像。在步骤220中,检查intrabc模式是否被使能,并且环路滤波器不用于当前图像。如果结果为“是”,则执行步骤230到步骤250。如果结果是“否”,则本流程终止。在步骤230中,在解码当前图像之前及期间,将用于当前图像的当前已解码参考图像标记为长期参考图像,其中当前已解码参考图像对应于dpb中的空图像存储缓存器。在步骤240中,将当前已解码参考图像分配至参考图像列表构造中以用于当前图像的intrabc参考。在步骤250中,通过考虑仅存储一张参考图像的缓存器,在开始解码当前图像之前,计算dpb的缓存器存储度。

图3示出了根据本发明实施例包括用于最大dpb大小等于1的已解码图像缓存器管理/操作的示例性编解码系统的流程图。在步骤310中,本流程确定最大dpb大小。在步骤320中,如果最大dpb大小对应于1,则将一变量或语法元素设置为目标值,以限制仅使用dpb中的一个图像存储缓存器来存储用于编码或者解码当前图像的参考图像。

图4示出了根据本发明实施例的示例性编解码系统的流程图,其中通过考虑当前已解码图像的两个版本是否被使用的信息,用于dpb的参考图像的总数被计算。在步骤410中,通过考虑关于当前已解码图像的两个版本是否被使用的信息,本流程计算用于dpb的参考图像的总数。dpb包括短期参考图像和长期参考图像。如步骤420所示,在dpb中分配最多总数个参考图像。如步骤430所示,随后,使用存储在dpb中的参考图像,对当前图像进行编码或解码。

所示的流程图旨在说明根据本发明的视频编码的示例。在不脱离本发明的精神的情况下,本领域的技术人员可以修改每个步骤、重组这些步骤、将一个步骤进行分离或者组合这些步骤而实施本发明。在本发明中,已经使用特定语法和语义来示出不同示例,以实施本发明的实施例。在不脱离本发明的精神的情况下,通过用等价的语法和语义来替换该语法和语义,本领域的技术人员可以实施本发明。

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

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

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

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