具体实施方式
本发明的技术一般来说涉及用于进行帧间预测的参考图像的管理。举例来说,视频译码器(例如,视频编码器或视频解码器)包含已解码图像缓冲器(DPB)。所述DPB存储已解码图像,包含参考图像。参考图像为可潜在地用于对图像进行帧间预测的图像。换句话说,视频译码器可在译码(编码或解码)图像期间,基于存储在DPB中的一个或一个以上参考图像而预测所述图像。
为了有效率地利用DPB,可指定DPB管理过程,例如DPB中的已解码图像的存储过程、参考图像的标记过程、来自DPB的已解码图像的输出以及去除过程,等等。一般来说,在一些当前及开发中的视频译码标准中,DPB管理可包含以下方面中的一者或一者以上:图像识别及参考图像识别、参考图像列表构造、参考图像标记、来自DPB的图像输出、到DPB中的图像插入,以及来自DPB的图像去除。
为了辅助理解,下文提供关于如何可根据一些视频译码标准发生参考图像标记及参考图像列表构造的简要描述。本发明中所描述的技术中的一些技术解决可能存在于参考图像标记、参考图像列表构造及DPB图像去除及输出中的问题,以便改善对DPB的利用效率。
对于参考图像标记,在有效序列参数集中指示用于进行帧间预测的参考图像的最大数目(被称作M(num_ref_frames))。当参考图像经解码时,将所述参考图像标记为“用于参考”。如果参考图像的解码造成将M个以上图像标记为“用于参考”,那么必须将至少一个图像标记为“不用于参考”。如果标记为“不用于参考”的图像还不需要输出,那么DPB去除过程将标记为“不用于参考”的图像从DPB中去除。
当图像经解码时,所述图像可能为非参考图像或参考图像。参考图像可能为长期参考图像或短期参考图像,且当参考图像经标记为“不用于参考”时,所述参考图像可能变得不再需要供参考。在一些视频译码标准中,可能存在改变参考图像的状态的参考图像标记操作。
可能存在用于参考图像标记的两种类型的操作:滑动窗和自适应存储器控制。用于参考图像标记的操作模式可基于图像而选择;而,滑动窗操作可通过固定数目个短期参考图像以先进先出队列的形式运作。换句话说,可以隐含式方式首先去除具有最早解码时间的短期参考图像(标记为不用于参考的图像)。
然而,自适应存储器控制显式地去除短期或长期图像。自适应存储器控制还使得能够切换短期和长期图像的状态等。举例来说,在自适应存储器控制中,视频编码器可用信号发出指定应将哪些图像标记为用于参考的语法元素。视频解码器可接收语法元素且如所指定标记图像。在滑动窗中,视频编码器可能不需要用信号发出应将哪些图像标记为用于参考。而是,视频解码器可基于哪些图像在滑动窗内而隐含式地(即,不接收语法元素)确定应将哪些图像标记为用于参考。
视频译码器还可将构造指示哪些参考图像可用于帧间预测目的的参考图像列表作为任务。这些参考图像列表中的两者分别被称作列表0和列表1。视频译码器首先使用默认构造技术来构造列表0和列表1(例如,用于构造列表0和列表1的预先配置的构造方案)。视情况,在构造初始列表0和列表1之后,视频解码器可解码语法元素,当存在语法元素时,语法元素可指导视频解码器修改初始列表0和列表1。
视频编码器可用信号发出指示DPB中的参考图像的识别符的语法元素,且视频编码器还可在列表0、列表1或列表0与列表1两者内用信号发出包含索引的语法元素,所述索引指示哪一参考图像或哪些参考图像将用以解码当前图像的经译码块。反过来,视频解码器使用所接收识别符识别列表0、列表1或列表0与列表1两者中所列出的一个或一个以上参考图像的一个或一个以上索引值。根据所述一个或一个以上参考图像的(多个)索引值以及(多个)识别符,视频解码器从DPB中检索所述一个或一个以上参考图像或所述一个或一个以上参考图像的部分,且基于所述一个或一个以上所检索的参考图像和一个或一个以上运动向量而解码当前图像的经译码块,所述一个或一个以上运动向量识别所述一个或一个以上参考图像内用于解码经译码块的块。
举例来说,用于经双向预测图像的第一参考图像列表或第二参考图像列表的参考图像列表构造包含两个步骤:参考图像列表初始化及参考图像列表修改(还被称作参考图像列表重新排序)。参考图像列表初始化可为隐含式机制,其基于图像序列号次序(PictureOrder Count,POC,与图像的显示次序对准)值将参考图像存储器(还被称为已解码图像缓冲器)中的参考图像置于列表中。参考图像列表重新排序机制可将在参考图像列表初始化期间置于列表中的图像的位置修改成任何新位置,或甚至在图像并不属于初始化的列表的情况下,将参考图像存储器中的任何参考图像置于任何位置中。在参考图像列表重新排序(修改)之后,一些图像可能置于列表中非常远的位置中。然而,如果图像的位置超过列表的有效参考图像的数目,那么所述图像将不被视为最终参考图像列表的条目。可在每一列表的切片标头中用信号发出列表的有效参考图像的数目。
本发明中所描述的技术可适用于各种视频译码标准。视频译码标准的实例包含ITU-T H.261、ISO/IEC MPEG-1视频、ITU-T H.262或ISO/IEC MPEG-2视频、ITU-TH.263、ISO/IEC MPEG-4视频以及ITU-T H.264(还被称为ISO/IEC MPEG-4AVC),包含其可调式视频译码(SVC)和多视角视频译码(MVC)扩展。另外,存在新的视频译码标准,即,高效率视频译码(HEVC),其是由ITU-T视频译码专家组(VCEG)和ISO/IEC动画专家组(MPEG)的视频译码联合协作小组(JCT-VC)开发。
仅为了说明的目的,在HEVC标准的上下文中描述技术。从2012年7月20日时起,可从http://phenix.int-evry.fr/jct/doc_end_user/documents/l0_Stockholm/wgl1/JCTVC-J1003-v8.zip得到HEVC的最新工作草案(WD)(且在下文中被称作HEVC WD8)。
如上文所描述,本发明中所描述的技术可解决可能存在于用于已解码图像缓冲器(DPB)管理的现有解决方案中的问题。作为一个实例,在本发明中所描述的一些实例技术中,可能不需要作为“不用于参考”的参考图像的标记。举例来说,本发明中所描述的技术可解决以下各问题:与无法良好地适合时间可调性的DPB管理技术有关的问题、与长期参考图像的发信号耗用有关的问题、与参考图像列表初始化及修改的效率和复杂性有关的问题。本发明中所描述的技术还可解决以下各问题:与参考图像列表初始化期间的参考图像列表中的非完成条目的“无参考图像”的标记有关的问题;与已解码图像输出、到DPB中的插入及来自DPB的去除有关的问题;以及与图像序列号(POC)值的可能值有关的问题。
根据本发明中所描述的技术,从参考图像集构造参考图像列表。参考图像集经定义为与图像相关联的参考图像集合,其由在解码次序上在相关联的图像之前的所有参考图像组成,其可用于对相关联的图像中的块或对在解码次序上在相关联的图像之后的任何图像进行帧间预测,例如,直到下一瞬时解码再新(instantaneous decoding refresh,IDR)图像或断链接入(broken link access,BLA)图像为止。换句话说,参考图像集中的参考图像可能需要以下特性:(1)其在解码次序上全部在当前图像之前,以及(2)其可用于对当前图像进行帧间预测及/或对在解码次序上在当前图像之后的任何图像进行帧间预测,且在一些实例中,直到下一IDR图像或BLA图像为止。可能存在关于参考图像集的其它替代定义,下文提供所述其它替代定义。
在本发明中所描述的实例技术中,视频译码器可导出参考图像集,且在此导出之后,视频译码器可构造参考图像列表。举例来说,仅参考图像集中的参考图像可为用以构造参考图像列表的候选参考图像。
为了构造参考图像集,视频译码器可构造多个参考图像子集。参考图像子集的组合可一起形成参考图像集。举例来说,视频编码器可在经译码位流中显式地用信号发出允许视频解码器确定用于包含在参考图像集中的参考图像的识别符的值。举例来说,参考图像的识别符可为图像序列号。每一图像与一个图像序列号(被称作PicOrderCnt)相关联。PicOrderCnt指示相对于解码次序上的先前IDR图像的对应图像的输出次序或显示次序,且,在一些其它替代例中,指示相对于相同经译码视频序列中的其它图像的输出次序位置的相关联的图像的输出次序位置。
PicOrderCnt可被称作图像序列号(POC)值。POC值可指示图像的输出或显示次序,且可用以识别图像。举例来说,在经译码视频序列内,具有较小POC值的图像比具有较大POC值的图像早输出或显示。
视频解码器可确定用于参考图像的识别符,且从这些识别符构造所述多个参考图像子集。根据这些参考图像子集,视频解码器可导出参考图像集,如下文更详细描述。在一些实例中,参考图像子集中的每一者包含不同参考图像,这是因为所述参考图像子集中的参考图像不存在重叠。以此方式,参考图像中的每一者可能仅在参考图像子集中的一者中,且不在任何其它参考图像子集中。然而,本发明的方面不应被视为受此限制。
在确定参考图像集或参考图像集的子集中的参考图像的识别符(例如,POC值)之后,视频解码器可构造参考图像子集。如下文更详细描述,视频解码器可构造六个参考图像子集,但视频解码器可能有可能构造更多或更少个参考图像子集。
这些六个参考图像子集命名为:RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr,和RefPicSetLtFoll。RefPicSetStCurr0参考图像子集可被称作RefPicSetStCurrBefore参考图像子集,且RefPicSetStCurr1参考图像子集可被称作RefPicSetStCurrAfter参考图像子集。
RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0和RefPicSetStFoll1参考图像子集可识别短期参考图像。在一些实例中,这些参考图像子集可基于以下各者而识别短期参考图像:短期参考图像是在显示次序上比正被译码的当前图像早还是在显示次序上比正被译码的当前图像迟,以及短期参考图像是否可潜在地用于对当前图像及在解码次序上在当前图像之后的图像进行帧间预测,或是否可潜在地用于仅对在解码次序上在当前图像之后的图像进行帧间预测。
举例来说,RefPicSetStCurr0参考图像子集可包含(且可仅包含)满足以下情形的所有短期参考图像的识别信息(例如,POC值):具有比当前图像的输出或显示次序早的输出或显示次序,且可潜在地用于在当前图像的帧间预测中供参考,且可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考。RefPicSetStCurr1参考图像子集可包含(且可仅包含)满足以下情形的所有短期参考图像的识别信息:具有比当前图像的输出或显示次序迟的输出或显示次序,且可潜在地用于在当前图像的帧间预测中供参考,且可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考。
RefPicSetStFoll0参考图像子集可包含(且可仅包含)满足以下情形的所有短期参考图像的识别信息:具有比当前图像的输出或显示次序早的输出或显示次序,可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考,且无法用于在当前图像的帧间预测中供参考。RefPicSetStFoll1参考图像子集可包含(且可仅包含)满足以下情形的所有短期参考图像的识别信息:具有比当前图像的输出或显示次序迟的输出或显示次序,可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考,且无法用于在当前图像的帧间预测中供参考。
RefPicSetLtCurr和RefPicSetLtFoll参考图像子集可识别长期参考图像。在一些实例中,这些参考图像子集可基于长期参考图像是在显示次序上比正被译码的当前图像早还是在显示次序上比正被译码的当前图像迟,识别长期参考图像。
举例来说,RefPicSetLtCurr参考图像子集可包含(且可仅包含)满足以下情形的所有长期参考图像的识别信息:可潜在地用于在当前图像的帧间预测中供参考,且可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考。RefPicSetLtFoll参考图像子集可包含(且可仅包含)满足以下情形的所有长期参考图像的识别信息:可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考,且无法用于在当前图像的帧间预测中供参考。
在构造参考图像子集之后,视频解码器可将所述参考图像子集以不同次序排序以导出参考图像集。作为一个实例,参考图像集的次序可为RefPicSetStCurr0、RefPicSetSetCurr1、RefPicSetFoll0、RefPicSetFoll1、RefPicSetLtCurr,及RefPicSetLtFoll。然而,所述子集的其它排序可能有可能导出参考图像集。举例来说,作为另一实例,参考图像集的次序可为RefPicSetStCurr0参考图像子集、后接续有RefPicSetStCurr1参考图像子集、后接续有RefPicSetLtCurr参考图像子集、后接续有RefPicSetStFoll0参考图像子集、后接续有RefPicSetFoll1参考图像子集,且后接续有RefPicSetLtFoll参考图像子集。
根据本发明中所描述的技术,RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr子集包含可用于当前图像中的块的帧间预测中且可用于在解码次序上在当前图像之后的图像中的一者或一者以上的帧间预测中的所有参考图像。RefPicSetStFoll0、RefPicSetStFoll1和RefPicSetLtFoll子集包含不用于当前图像中的块的帧间预测中而可用于在解码次序上在当前图像之后的图像中的一者或一者以上的帧间预测中的所有参考图像。
应理解,仅用于说明目的而描述六个参考图像子集,且所述情形不应被视为限制性的。在替代实例中,可能存在更多或更少个参考图像子集。下文更详细描述在这些替代实例中的这些参考图像子集。
在这些揭示内容中所描述的一些技术中,视频解码器可能不需要将已解码图像标记为“用于参考”、“不用于参考”、“用于短期参考”或“用于长期参考”。而是,存储在DPB中的已解码图像是否需要进行帧间预测是通过其是否包含在当前图像的参考图像集中来指示。在替代实例中,视频解码器可能有可能将已解码图像标记为“用于参考”、“不用于参考”、“用于短期参考”或“用于长期参考”。在这些实例中,在视频解码器解码图像之后,所述已解码图像为参考图像且经标记为“用于参考”。然后,在调用用于参考图像集导出的过程之后,在来自DPB的已解码图像的可能的去除之前,将存储在DPB中但不包含在当前图像的参考图像集中的所有参考图像标记为“不用于参考”。因此,存储在DPB中的已解码图像是否需要进行帧间预测可通过其是否经标记为“用于参考”来指示。
一旦视频解码器从所述多个参考图像子集导出参考图像集,视频解码器便可从参考图像集构造参考图像列表(例如,列表0和列表1)。举例来说,参考图像列表的构造可包含初始化步骤及可能的修改步骤。通过以上文所描述的方式导出参考图像集,视频解码器可能能够改善参考图像列表初始化及参考图像列表修改的效率且降低参考图像列表初始化及参考图像列表修改的复杂性。
可能存在视频解码器可借以构造参考图像列表的各种方式。本发明中所描述的技术提供一种机制,视频解码器可通过所述机制构造参考图像列表,而不需要将待包含在(初始)参考图像列表中的参考图像重新排序。举例来说,视频解码器可经配置以实施默认参考列表构造技术,其中视频解码器利用参考图像子集构造初始参考图像列表。然后,如果不需要参考图像列表修改,那么最终参考图像列表可与初始参考图像列表相同,而不需要参考图像列表的任何额外重新排序。
在一些实例中,本发明中所描述的技术可关于以不存在非完成条目的方式构造参考图像列表。举例来说,所述技术可重复地将来自参考图像子集中的一者或一者以上的参考图像添加到参考图像列表。举例来说,在视频解码器添加来自用于构造初始参考图像列表的参考图像子集中的一者或一者以上的参考图像之后,视频解码器可确定参考图像列表中的条目的数目是否小于条目的最大可允许数目。如果参考图像列表中的条目的数目小于条目的可允许数目的最大数目,那么视频解码器可在参考图像列表中重新添加来自用以构造参考图像列表的参考图像子集中的一者的参考图像中的至少一者。参考图像的此重新添加(还被称作重新列出)可发生于参考图像列表内不同于由视频解码器首先添加参考图像的位置的位置处。
如本发明中所使用,重新列出或重新添加指在初始参考图像列表中再次添加(例如,再次识别)先前已添加(例如,已识别)的参考图像。然而,当重新添加参考图像时,参考图像可位于初始参考图像列表中的两个不同条目处。换句话说,当重新添加参考图像时,可能存在识别相同参考图像的到初始参考图像列表中的两个索引值。
在一些实例中,本发明中所描述的技术可关于修改初始参考图像列表。举例来说,视频解码器可构造初始参考图像列表。视频解码器可基于由视频编码器在经译码位流中用信号发出的语法元素而确定需要参考图像列表修改。当需要参考图像列表修改时,视频解码器可识别所构造的参考图像子集中的至少一者中的参考图像。视频解码器可在初始参考图像列表的当前条目中列出(例如,添加)所识别的参考图像以构造修改的参考图像列表。视频解码器可然后基于修改的参考图像列表而解码当前图像。
在一些实例中,本发明中所描述的技术可关于从已解码图像缓冲器(DPB)输出及去除已解码图像。所述实例技术可在译码当前图像之前将已解码图像从DPB中去除。举例来说,如果所述已解码图像在当前图像的参考图像集中未加以识别且如果所述已解码图像不需要输出(即,已解码图像不希望输出或已解码图像希望输出但已经输出),那么实例技术可去除所述已解码图像。
图1为说明可利用本发明中所描述的技术的实例视频编码及解码系统10的框图。一般来说,参考图像集经定义为与图像相关联的参考图像集合,其由在解码次序上在相关联的图像之前的所有参考图像组成,其可用于对相关联的图像或对在解码次序上在相关联的图像之后的任何图像进行帧间预测。在一些实例中,在相关联的图像之前的参考图像可为直到下一瞬时解码再新(IDR)图像或断链接入(BLA)图像为止的参考图像。换句话说,参考图像集中的参考图像可能在解码次序上全部在当前图像之前。而且,参考图像集中的参考图像可用于对当前图像进行帧间预测及/或对在解码次序上在当前图像之后的任何图像进行帧间预测,直到下一IDR图像或BLA图像为止。
可能存在参考图像集的其它替代定义。举例来说,参考图像集可为与图像相关联的参考图像集合,其由满足以下情形的所有参考图像(排除相关联的图像自身)组成:可用于对相关联的图像或对在解码次序上在相关联的图像之后的任何图像进行帧间预测,且具有小于或等于相关联的图像的temporal_id的temporal_id。temporal_id可为时间识别值。时间识别值可为指示哪些图像可用于译码当前图像的阶层值。一般来说,具有特定temporal_id值的图像可能有可能为用于具有相等或较大temporal_id值的图像的参考图像,但反过来不成立。举例来说,具有temporal_id值1的图像可能有可能为用于具有temporal_id值1、2、3,……的图像的参考图像,但不可能为用于具有temporal_id值0的图像的参考图像。
最低temporal_id值还可指示最低显示率。举例来说,如果视频解码器仅解码具有temporal_id值0的图像,那么显示率可为7.5个图像/秒。如果视频解码器仅解码具有temporal_id值0和1的图像,那么显示率可为15个图像/秒,等等。
作为另一实例,参考图像集可为与图像相关联的参考图像集合,其由满足以下情形的所有参考图像(排除相关联的图像自身)组成:可用于对相关联的图像或对在解码次序上在相关联的图像之后的任何图像进行帧间预测。作为又一实例,参考图像集可经定义为与图像相关联的参考图像集合,其由满足以下情形的所有参考图像(有可能包含相关联的图像自身)组成:可用于对相关联的图像或对在解码次序上在相关联的图像之后的任何图像进行帧间预测。作为另一实例,参考图像集可经定义为与图像相关联的参考图像集合,其由满足以下情形的所有参考图像(有可能包含相关联的图像自身)组成:可用于对相关联的图像或对在解码次序上在相关联的图像之后的任何图像进行帧间预测,且具有小于或等于相关联的图像的temporal_id的temporal_id。
作为又一实例,在参考图像集的上述定义中,用“用于进行帧间预测”替换短语“可用于进行帧间预测”。尽管可能存在参考图像集的替代定义,但在本发明中,描述具有参考图像集的以下定义的实例:参考图像集为与图像相关联的参考图像集合,其由在解码次序上在相关联的图像之前的所有参考图像组成,其可用于对相关联的图像或对在解码次序上在相关联的图像之后的任何图像进行帧间预测。
举例来说,参考图像集中的参考图像中的一些参考图像为可潜在地用以对当前图像的块进行帧间预测且无法对在解码次序上在当前图像之后的图像进行帧间预测的参考图像。参考图像集中的参考图像中的一些参考图像为可潜在地用以对当前图像的块及对在解码次序上在当前图像之后的一个或一个以上图像中的块进行帧间预测的参考图像。参考图像集中的参考图像中的一些参考图像为可潜在地用以对在解码次序上在当前图像之后的一个或一个以上图像中的块进行帧间预测且无法用以对当前图像中的块进行帧间预测的参考图像。
如本发明中所使用,可潜在地用于进行帧间预测的参考图像是指可用于进行帧间预测的参考图像,但未必必须用于进行帧间预测。举例来说,参考图像集可识别可潜在地用于进行帧间预测的参考图像。然而,此情形并不意味着所有所识别的参考图像必须用于进行帧间预测。而是,这些所识别的参考图像中的一者或一者以上可用于进行帧间预测,但全部未必必须用于进行帧间预测。
如图1中所展示,系统10包含源装置12,其产生经编码视频以用于由目的地装置14解码。源装置12和目的地装置14可各自为视频译码装置的实例。源装置12可经由通信信道16将经编码视频传输到目的地装置14或可将经编码视频存储在存储媒体17或文件服务器19上,以使得经编码视频可由目的地装置14视需要存取。
源装置12和目的地装置14可包括广泛范围的装置中的任一者,包含例如所谓的“智能型”手机、所谓的“智能型”垫等无线手机,或经装备以用于无线通信的其它此类无线装置。源装置12和目的地装置14的额外实例包含(但不限于)数字电视、数字直播系统中的装置、无线广播系统中的装置、个人数字助理(PDA)、膝上型计算机、桌上型计算机、平板计算机、电子书阅读器、数字摄像机、数字记录装置、数字媒体播放器、视频游戏装置、视频游戏控制台、蜂窝式无线电电话、卫星无线电电话、视频电信会议装置,及视频流装置、无线通信装置,或其类似者。
如上文所指示,在许多情况下,源装置12和/或目的地装置14可经装备以用于无线通信。因此,通信信道16可包括无线信道、有线信道或适合于传输经编码视频数据的无线和有线信道的组合。类似地,文件服务器19可由目的地装置14通过任何标准数据连接(包含互联网连接)存取。此数据连接可包含适合于存取存储在文件服务器上的经编码视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器,等等),或无线信道与有线连接两者的组合。
然而,本发明的技术可适用于支持多种多媒体应用中的任一者的视频译码,多种多媒体应用例如空中电视广播、有线电视传输、卫星电视传输、流式视频传输(例如,经由互联网)、编码数字视频以用于存储在数据存储媒体上、解码存储在数据存储媒体上的数字视频,或其它应用。在一些实例中,系统10可经配置以支持单向或双向视频传输以支持例如视频流传输、视频播放、视频广播和/或视频电话等应用。
在图1的实例中,源装置12包含视频源18、视频编码器20、调制器/解调器(调制解调器)22和输出接口24。在源装置12中,视频源18可包含例如以下各者等源:视频俘获装置(例如,视频摄像机)、含有先前所俘获的视频的视频存档、接收来自视频内容提供者的视频的视频馈入接口,和/或用于产生计算机图形数据作为源视频的计算机图形系统,或此类源的组合。作为一个实例,如果视频源18为视频摄像机,那么源装置12与目的地装置14可形成所谓的摄像机电话或视频电话。然而,一般来说,本发明中所描述的技术可适用于视频译码,且可应用于无线和/或有线应用。
可由视频编码器20来编码所俘获的、预先俘获的或计算机产生的视频。可由调制解调器22根据通信标准(例如,无线通信协议)来调制经编码视频信息,且经由输出接口24将经编码视频信息传输到目的地装置14。调制解调器22可包含各种混频器、滤波器、放大器或经设计以用于信号调制的其它组件。输出接口24可包含经设计以用于传输数据的电路,包含放大器、滤波器,和一个或一个以上天线。
由视频编码器20编码的所俘获的、预先俘获的或计算机产生的视频还可存储到存储媒体17或文件服务器19上以供稍后消耗。存储媒体17可包含蓝光(Blu-ray)光盘、DVD、CD-ROM、快闪存储器或用于存储经编码视频的任何其它合适的数字存储媒体。存储在存储媒体17上的经编码视频可然后由目的地装置14存取以用于解码及播放。
文件服务器19可为能够存储经编码视频且将所述经编码视频传输到目的地装置14的任何类型的服务器。实例文件服务器包含网络服务器(例如,用于网站)、FTP服务器、网络附接存储器(NAS)装置、本地磁盘驱动器,或能够存储经编码视频数据且将经编码视频数据传输到目的地装置的任何其它类型的装置。来自文件服务器19的经编码视频数据的传输可为流式传输、下载传输或流式传输与下载传输两者的组合。文件服务器19可由目的地装置14通过任何标准数据连接(包含互联网连接)存取。此标准数据连接可包含适合于存取存储在文件服务器上的经编码视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器、以太网、USB等),或无线信道与有线连接的组合。
在图1的实例中,目的地装置14包含输入接口26、调制解调器28、视频解码器30,和显示装置32。目的地装置14的输入接口26经由信道16接收信息(作为一个实例),或从存储媒体17或文件服务器19接收信息(作为替代实例),且调制解调器28解调所述信息以产生用于视频解码器30的经解调的位流。经解调的位流可包含由视频编码器20产生以供视频解码器30在解码视频数据中使用的多种语法信息。此语法还可包含在存储在存储媒体17或文件服务器19上的经编码视频数据内。作为一个实例,语法可嵌入于经编码视频数据内,但本发明的方面不应被视为限于此要求。由视频编码器20定义且还供视频解码器30使用的语法信息可包含描述视频块的特性和/或处理的语法元素,视频块例如译码树单元(CTU)、译码树块(CTB)、预测单元(PU)、译码单元(CU),或经译码视频的其它单元,例如,视频切片、视频图像和视频序列或图像组(GOP)。视频编码器20和视频解码器30中的每一者可形成能够编码或解码视频数据的相应编码器-解码器(CODEC)的部分。
显示装置32可与目的地装置14集成或在目的地装置14外部。在一些实例中,目的地装置14可包含集成显示装置,且还经配置以与外部显示装置介接。在其它实例中,目的地装置14可为显示装置。一般来说,显示装置32向用户显示已解码视频数据,且可包括多种显示装置中的任一者,例如,液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类型的显示装置。
在图1的实例中,通信信道16可包括任何无线或有线通信媒体,例如,射频(RF)频谱或一个或一个以上物理传输线,或无线和有线媒体的任何组合。通信信道16可形成基于包的网络(例如,局域网、广域网,或例如互联网等全球网络)的部分。通信信道16一般表示用于将视频数据从源装置12传输到目的地装置14的任何合适的通信媒体或不同通信媒体的集合,包含有线或无线媒体的任何合适组合。通信信道16可包含路由器、交换器、基站,或可用于促进从源装置12到目的地装置14的通信的任何其它装备。
视频编码器20和视频解码器30可根据视频压缩标准操作,视频压缩标准例如包含ITU-T H.261、ISO/IEC MPEG-1视频、ITU-T H.262或ISO/IEC MPEG-2视频、ITU-TH.263、ISO/IEC MPEG-4视频和ITU-T H.264(还被称为ISO/IEC MPEG-4AVC),包含其可调式视频译码(SVC)和多视角视频译码(MVC)扩展。另外,存在新的视频译码标准,即,高效率视频译码(HEVC)标准,其目前正由ITU-T视频译码专家组(VCEG)和ISO/IEC动画专家组(MPEG)的视频译码联合协作小组(JCT-VC)开发。从2012年7月20日时起,可从http://phenix.int-evry.fr/jct/doc_end_user/documents/l0_Stockholm/wgl1/JCTVC-J1003-v8.zip得到HEVC的最新工作草案(WD)(且在下文中被称作HEVC WD8)。
然而,本发明的技术不限于任何特定译码标准。仅为了说明的目的,根据HEVC标准描述技术。
虽然图1中未展示,但在一些方面中,视频编码器20和视频解码器30可各自与一音频编码器和解码器集成,且可包含适当MUX-DEMUX单元或其它硬件和软件,以处置共同数据流或单独数据流中的音频与视频两者的编码。如果可适用,那么MUX-DEMUX单元可遵守ITUH.223多路复用器协议,或例如用户数据报协议(UDP)等其它协议。
视频编码器20和视频解码器30各自可实施为多种合适编码器电路中的任一者,合适编码器电路例如一个或一个以上处理器(包含微处理器)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当所述技术部分地在软件中实施时,装置可将用于软件的指令存储在合适的非暂时性计算机可读媒体中,且在硬件中使用一个或一个以上处理器来执行所述指令以执行本发明的技术。
视频编码器20和视频解码器30中的每一者可包含在一个或一个以上编码器或解码器中,视频编码器20和视频解码器30中的任一者可集成为相应装置中的组合式编码器/解码器(CODEC)的部分。在一些实例中,视频编码器20和视频解码器30可共同地被称作译码信息(例如,图像和语法元素)的视频译码器。当视频译码器对应于视频编码器20时,信息的译码可指编码。当视频译码器对应于视频解码器30时,信息的译码可指解码。
此外,本发明中所描述的技术可指视频编码器20用信号发出信息。当视频编码器20用信号发出信息时,本发明的技术一般指视频编码器20借以提供信息的任何方式。举例来说,当视频编码器20将语法元素用信号发出到视频解码器30时,可能意味着:视频编码器20经由输出接口24和通信信道16将语法元素传输到视频解码器30,或视频编码器20经由输出接口24将语法元素存储在存储媒体17和/或文件服务器19上以供视频解码器30最终接收。以此方式,从视频编码器20到视频解码器30的发信号不应被解释为需要来自视频编码器20的立即由视频解码器30接收的传输,但此情形可能为有可能的。而是,从视频编码器20到视频解码器30的发信号应被解释为视频编码器20借以提供用于供视频解码器30直接地或经由中间存储器(例如,在存储媒体17和/或文件服务器19中)最终接收的信息的任何技术。
视频编码器20和视频解码器30可经配置以实施本发明中所描述的用于导出参考图像集的实例技术。举例来说,视频解码器30可每一图像调用一次用以导出参考图像集的过程。视频解码器30可在解码切片标头之后但在解码任何译码单元之前且在用于切片的参考图像列表构造的解码过程之前,调用用以导出参考图像集的过程。
如上文所描述,参考图像集为关于参考图像的绝对描述,所述参考图像用于当前图像及解码次序上的未来经译码图像的解码过程中,直到下一瞬时解码再新(IDR)图像或断链接入(BLA)图像为止。在本发明中所描述的实例中,视频编码器20可显式地用信号发出值,视频解码器30可从所述值确定用于属于参考图像集的参考图像的识别符。在包含在参考图像集中的所有参考图像是显式地列出(除了特定图像,例如,IDR图像)的意义上,参考图像集发信号为显式的,无参考图像集语法元素包含在切片标头中且参考图像集经导出为空。
可能存在视频编码器20可借以在经译码位流中用信号发出语法元素的各种方式,视频解码器30可利用所述语法元素导出参考图像集。举例来说,视频编码器20可在图像参数集(PPS)、序列参数集(SPS)、图像标头(如果存在的话)、切片标头或其任何组合中用信号发出语法元素。仅为了说明的目的,视频编码器20可使用SPS、PPS和切片标头用信号发出语法元素,如更详细描述。
为了导出参考图像集,视频解码器30可实施解码过程以确定用于属于参考图像集的图像的识别符。视频解码器30可然后构造多个参考图像子集,其中所述子集中的每一者识别属于参考图像集的参考图像中的零者或多者。视频解码器30可从所构造的参考图像子集导出参考图像集。举例来说,视频解码器30可以特定次序列出所述多个参考图像子集以导出参考图像集。
可能存在视频解码器30可借以确定用于属于参考图像集的图像的识别符的各种方式。一般来说,视频编码器20可用信号发出值,视频解码器30可从所述值确定用于图像(包含属于参考图像集的图像)的识别符。图像的识别符可为PicOrderCnt(即,图像序列号(POC)值)。如上文所描述,POC值可指示图像的显示或输出次序,其中具有较小POC值的图像比具有较大POC值的图像早显示。给定图像的POC值可相对于先前瞬时解码再新(IDR)图像来说。举例来说,IDR图像的PicOrderCnt(即,POC值)可为0,在显示或输出次序上在IDR图像之后的POC值可为1,在显示或输出次序上在具有POC值1的图像之后的图像的POC值可为2,等等。
根据本发明中所描述的技术,在当前图像并不是IDR图像时,下文可适用于导出当前图像的POC值。下文希望辅助理解,且不应被视为限制性的。
举例来说,考虑列表变量listD,列表变量listD包含与包含所有以下各者的图像列表相关联的PicOrderCnt值(POC值)作为元素:(1)列表中的第一图像为解码次序上的先前IDR图像,以及(2)所有其它图像在解码次序上在列表中的第一图像之后且在解码次序上先于当前图像或者为当前图像。在此实例中,在调用用于参考图像集的导出过程之前,当前图像包含在listD中。而且,考虑列表变量listO,列表变量listO包含以POC值的递升次序排序的listD的元素。在此实例中,listO可能不含有具有等于另一图像的POC值的值的POC值。
在一些实例中,POC值可限于-2pocLen-1到2pocLen-1-1(包含-2pocLen-1和2pocLen-1-1)的范围。在此实例中,pocLen可等于long_term_ref_pic_id_len_delta+long_term_ref_pic_id_delta_len_minus4+4。long_term_ref_pic_id_len_delta和long_term_ref_pic_id_delta_len_minus4可为视频解码器30在经译码位流中接收的作为图像参数集语法的部分的语法元素,如下文更详细描述。作为另一实例,POC值可限于-231到231-l(包含-231和231-1)的范围。
作为一个实例,视频解码器30可在经译码位流(即,由视频编码器20用信号发出的位流)中接收pic_order_cnt_lsb语法元素。pic_order_cnt_lsb语法元素可指定经译码图像的图像序列号模数MaxPicOrderCntLsb。pic_order_cnt_lsb语法元素的长度可为log2_max_pic_order_cnt_lsb_minus4+4位。pic_order_cnt_lsb的值可在0到MaxPicOrderCntLsb-1(包含0和MaxPicOrderCntLsb-1)的范围内。视频解码器30可在待解码的当前图像的切片标头语法中接收pic_order_cnt_lsb语法元素。
视频解码器30还可在由视频编码器20用信号发出的经译码位流中接收log2_max_pic_order_cnt_lsb_minus4语法元素。视频解码器30可在序列参数集中接收log2_max_pic_order_cnt_lsb_minus4语法元素。log2_max_pic_order_cnt_lsb_minu4的值可在0到12(包含0和12)的范围内。log2_max_pic_order_cnt_lsb_minus4语法元素可指定变量MaxPicOrderCntLsb的值,视频解码器30在用于确定POC值的解码过程中使用变量MaxPicOrderCntLsb的值。举例来说:
MaxPicOrderCntLsb=2(log2_max_pic_order_cnt_lsb_minus4+4)。
根据这些所接收语法元素,视频解码器30可确定当前图像的POC值如下。举例来说,视频解码器30可确定用于当前图像的PicOrderCntMsb。用于当前图像的POC值可为用于当前图像的所确定的PicOrderCntMsb加上用于当前图像的所接收的pic_order_cnt_lsb。
在下文中,函数PicOrderCnt(picX)等于用于图像X的POC值。函数DiffPicOrderCnt(picA,picB)等于PicOrderCnt(picA)减去PicOrderCnt(picB)。在一些实例中,经译码位流可能不包含产生用于解码过程中的DiffPicOrderCnt(picA,picB)的超过-215到215-1(包含-215和215-1)的范围的值的数据。此外,假设:X为当前图像且Y和Z为相同序列中的两个其它图像,其中当DiffPicOrderCnt(X,Y)与DiffPicOrderCnt(X,Z)两者为正或DiffPicOrderCnt(X,Y)与DiffPicOrderCnt(X,Z)两者为负时,Y和Z被视为从X起的相同输出次序方向。而且,在一些实例中,视频编码器20可指配与相对于先前IDR图像的取样时间的对应图像的取样时间成比例的PicOrderCnt。
作为确定用于当前图像的POC值的过程的部分,视频解码器30可确定变量prevPicOrderCntMsb和prevPicOrderCntLsb。举例来说,如果当前图像为IDR图像,那么视频解码器30可将prevPicOrderCntMsb设置为等于0,且将prevPicOrderCntLsb设置为等于0。否则(即,在当前图像并不是IDR图像的情况下),视频解码器30可将prevPicOrderCntMsb设置为等于具有小于或等于当前图像的temporal_id的temporal_id的解码次序上的先前参考图像的PicOrderCntMsb,且将prevPicOrderCntLsb设置为等于具有小于或等于当前图像的temporal_id的temporal_id的解码次序上的先前参考图像的pic_order_cnt_lsb的值。
通过这些变量值和语法元素的值(例如,prevPicOrderCntMsb、prevPicOrderCntLsb、pic_order_cnt_lsb和MaxPicOrderCntLsb的值),视频解码器30可基于以下伪码中所阐述的步骤确定PicOrderCntMsb的值。应理解,视频解码器30可实施以下伪码中所阐述的步骤,以确定用以导出当前图像的POC值的用于每一当前图像的PicOrderCntMsb。
在确定用于当前图像的PicOrderCntMsb之后,视频解码器30可基于用于当前图像的PicOrderCntMsb和用于当前图像的pic_order_cnt_lsb而确定用于当前图像的POC值。视频解码器30可确定用于当前图像的POC值如下:
PicOrderCnt=PicOrderCntMsb+pic_order_cnt_lsb。
在解码图像之后,视频解码器30可将用于所述图像(包含属于参考图像集的参考图像中的每一者)的PicOrderCntMsb值、pic_order_cnt_lsb值和POC值存储在视频解码器30的已解码图像缓冲器(DPB)中。以此方式,DPB中的每一图像与一POC值、一PicOrderCntMsb值和一pic_order_cnt_lsb值相关联。
下文更详细描述用于确定包含在当前图像的参考图像集中的参考图像的POC值的方法。根据所确定的POC值,视频解码器30可实施用于参考图像集的导出过程。然而,在描述视频解码器30借以实施用于参考图像集的导出过程的方式之前,下文提供视频解码器30可在由视频编码器20用信号发出的经译码位流中接收的语法元素的表格。举例来说,视频编码器20可在视频解码器30接收的经译码位流中用信号发出以下表格中的语法元素。上文已描述了这些语法元素中的一些语法元素。根据所述语法元素,视频解码器30可确定包含在参考图像集中的参考图像的POC值且进一步导出参考图像集。
举例来说,在本发明中所描述的技术中,相对于先前视频译码标准修改以下语法结构:序列参数集(SPS)原始字节序列有效载荷(RBSP)语法seq_paramater_set_rbsq()、图像参数集(PPS)RBSP语法pic_parameter_set_rbsp()、切片标头语法slice_header(),和参考图像列表修改语法ref_pic_list_modification()。在导出参考图像集及初始化一个或一个以上参考图像列表的描述之后,更详细地描述参考图像列表修改。
而且,根据本发明中所描述的技术,将以下语法结构添加到经译码位流:短期参考图像集语法short_term_ref_pic_set(),和长期参考图像集语法long_term_ref_pic_set()。视频解码器30可利用短期参考图像集语法和长期参考图像集语法,以用于构造参考图像子集的目的,视频解码器30从所述参考图像子集导出参考图像集。
举例来说,为了供视频解码器30确定用于属于参考图像集的参考图像的POC值,视频编码器20可在图像参数集中用信号发出视频解码器30用以确定POC值的参考图像识别信息,且可在切片标头中参考到列表的索引。然而,此方式为视频编码器20可借以用信号发出此参考图像识别信息的一种实例方式。
在一个替代实例中,视频编码器20可在序列参数集中用信号发出参考图像信息且可在切片标头中参考到列表的索引,此情形可减少发信号耗用。在另一替代实例中,视频译码器可在新类型的参数集(例如,参考图像集参数集(RPSPS))中用信号发出参考图像信息,且可在切片标头中参考RPSPS id以及到参考图像识别信息列表的索引两者。此情形可减少发信号耗用以及不增加对图像参数集或序列参数集的数目的需要。在其它实例中,视频编码器20可利用这些实例技术的任何组合来用信号发出参考图像识别信息。
表1.序列参数集RBSP语法
seq_parameter_set_rbsp(){ |
描述符 |
profile_idc |
u(8) |
reserved_zero_8bits/*等于0*/ |
u(8) |
level_idc |
u(8) |
seq_parameter_set_id |
ue(v) |
max_temporal_layers_minus1 |
u(3) |
pic_width_in_luma_samples |
u(16) |
pic_height_in_luma_samples |
u(16) |
bit_depth_luma_minus8 |
ue(v) |
bit_depth_chroma_minus8 |
ue(v) |
pcm_bit_depth_luma_minus1 |
u(4) |
pcm_bit_depth_chroma_minus1 |
u(4) |
log2_max_pic_order_cnt_lsb_minus4 |
ue(v) |
max_num_ref_frames |
ue(v) |
log2_min_coding_block_size_minus3 |
ue(v) |
log2_difi_max_min_coding_block_size |
ue(v) |
log2_min_transform_block_size_minus2 |
ue(v) |
log2_difi_max_min_transform_block_size |
ue(v) |
log2_min_pcm_coding_block_size_minus3 |
ue(v) |
max_transform_hierarchy_depth_inter |
ue(v) |
max_transform_hierarchy_depth_intra |
ue(v) |
chroma_pred_from_luma_enabled_flag |
u(1) |
loop_filter_across_slice_flag |
u(1) |
sample_adaptive_offset_enabled_flag |
u(1) |
adaptive_loop_filter_enabled_flag |
u(1) |
pcm_loop_filter_disable_flag |
u(1) |
cu_qp_delta_enabled_flag |
u(1) |
temporal_id_nesting_flag |
u(1) |
inter_4x4_enabled_flag |
u(1) |
rbsp_trailing_bits() |
|
} |
|
pic_width_in_luma_samples可指定明度样本中的每一已解码图像的宽度。pic_width_in_luma_samples的值可在0到216-1(包含0和216-1)的范围内。
pic_height_in_luma_samples可指定明度样本中的每一已解码图像的高度。pic_height_in_luma_samples的值可在0到216-1(包含0和216-1)的范围内。
如表1中所指示,视频解码器30可在序列参数集(SPS)中接收log2_max_pic_order_cnt_lsb_minus4语法元素。如上文所描述,log2_max_pic_order_cnt_lsb_minu4的值可指定视频解码器30在用于确定POC值的解码过程中使用的变量MaxPicOrderCntLsb的值,其中MaxPicOrderCntLsb=2(log2_max_pic_order_cnt_lsb_minus4+4)。
表2.图像参数集RBSP语法
num_short_term_ref_pic_sets_pps指定包含在图像参数集中的short_term_ref_pic_set()语法结构的数目。num_short_term_ref_pic_sets_pps的值应在0到32(包含0和32)的范围内。
等于0的long_term_ref_pics_present_flag指定:无长期参考图像用于参考图像参数集对任何经译码图像进行帧间预测,且不存在语法元素long_term_ref_pic_id_delta_len_minu s4、long_term_ref_pic_id_len_delta和num_long_term_ref_pics_pps。等于1的long_term_ref_pics_present_fiag指定:长期参考图像可用于参考图像参数集对一个或一个以上经译码图像进行帧间预测,且存在语法元素long_term_ref_pic_id_delta_len_minu s4、long_term_ref_pic_id_len_delta和num_long_term_ref_pic s_pps。
long_term_ref_pic_id_delta_len_minus4+4指定long_term_ref_pic_id_delta_add_foll[i]语法元素的位长度。long_term_ref_pic_id_delta_len_minus4的值应在0到12(包含0和12)的范围内。
long_term_ref_pic_id_len_delta+long_term_ref_pic_id_delta_len_minus4+4指定long_term_ref_pic_id_pp s[i]语法元素的位长度。long_term_ref_pic_id_len_delta的值可在0到28-long_term_ref_pic_id_delta_len_minus4(包含0和28-long_term_ref_pic_id_delta_len_minus4)的范围内。参考一个特定序列参数集的所有图像参数集中的long_term_ref_pic_id_len_delta+long_term_ref_pic_id_delta_len_minus4+4的值可相同。
num_long_term_ref_pics_pps指定包含在图像参数集中的长期参考图像的识别的数目。num_long_term_ref_pics_pps的值可在0到32(包含0和32)的范围内。
long_term_ref_pic_id_pps[i]指定包含在图像参数集中的第i长期参考图像识别信息。用以表示long_term_ref_pic_id_pps[i]的位的数目可等于long_term_ref_pic_id_len_delta+long_term_pic_id_len_minus4+4。
表3.短期参考图像集语法
短期参考图像集语法可用于短期图像。短期图像可经定义为满足以下情形的参考图像:识别信息包含在用于经译码图像的short_term_ref_pic_set()语法结构中,short_term_ref_pic_set()语法结构包含在(多个)切片标头中或包含在所参考图像参数集中且通过(多个)切片标头中的short_term_ref_pic_set_idx语法元素来参考。在下文表4中提供切片标头语法元素。
当short_term_ref_pic_set()语法结构用于导出经译码图像的参考图像集时,num_short_term_curr0指定RefPicSetStCurr0中的短期参考图像的数目,如下文所描述。num_short_term_curr0的值可在0到max_num_ref_frames(包含0和max_num_ref_frames)的范围内。
当short_term_ref_pic_set()语法结构用于导出经译码图像的参考图像集时,num_short_term_curr1指定RefPicSetStCurr1中的短期参考图像的数目,如下文所描述。num_short_term_curr1的值可在0到max_num_ref_flames-num_short_term_curr0(包含0和max_num_ref_flames-num_short_term_curr0)的范围内。
当short_term_ref_pic_set()语法结构用于导出经译码图像的参考图像集时,num_short_term_foll0指定RefPicSetStFoll0中的短期参考图像的数目,如下文所描述。num_short_term_foll0的值可在0到max_num_ref_frames-num_short_term_curr0-num_short_term_curr1(包含0和max_num_ref_frames-num_short_term_curr0-num_short_term_curr1)的范围内。
当short_term_ref_pic_set()语法结构用于导出经译码图像的参考图像集时,num_short_term_foll1指定RefPicSetStFoll1中的短期参考图像的数目,如下文所描述。num_short_term_foll1的值应在0到max_num_ref_frames-num_short_term_curr0-num_short_term_curr1-num_short_term_foll0(包含0和max_num_ref_flames-num_short_term_curr0-num_short_term_curr1-num_short_term_foll0)的范围内。
short_term_ref_pic_id_delta_minus1[i]指定包含在short_term_ref_pic_set()语法结构中的第i短期参考图像的识别信息。
表4.切片标头语法
no_output_of_prior_pics_flag指定在解码IDR图像之后如何处理已解码图像缓冲器中的先前已解码图像。当IDR图像为位流中的第一IDR图像时,no_output_of_prior_pics_flag的值可能对解码过程无影响。当IDR图像并不是位流中的第一IDR图像且从有效序列参数集导出的pic_width_in_luma_samples或pic_height_in_luma_samples或max_dec_frame_buffering的值可能不同于从用于前一图像的有效序列参数集导出的pic_width_in_luma_samples或pic_height_in_luma_samples或max_dec_flame_buffering的值时,等于1的no_output_of_prior_pics_flag可(但未必)由解码器来推断,而不管no_output_of_prior_pics_flag的实际值。
等于1的short_term_ref_pic_set_pps_flag指定:包含在用于当前图像的参考图像集中的短期参考图像集合的识别信息存在于所参考的图像参数集中。等于0的short_term_ref_pic_set_pps_flag指定:包含在用于当前图像的参考图像集中的短期参考图像集合的识别信息不存在于所参考的图像参数集中。
short_term_ref_pic_set_idx指定包含在所参考的图像参数集中的short_term_ref_pic_set()语法结构的索引,其包含用于当前图像的参考图像集中的短期参考图像集合的识别信息。
将变量NumShortTermCurr0和NumShortTermCurr1指定为:
NumShortTermCurr0=num_short_term_curr0
NumShortTermCurr1=num_short_term_curr1
在num_short_term_curr0和num_short_term_curr0分别为short_term_ref_pic_set()语法结构中的相同名称的语法元素的情况下,存在于所参考的图像参数集中且通过short_term_ref_pic_set_idx来参考,或者直接存在于切片标头中。
num_ref_idx_l0active_minus1指定用于将用以解码切片的参考图像列表0的最大参考索引。
在当前切片为P或B切片且num_ref_idx_l0active_minus1不存在时,可推断num_ref_idx_l0active_minu s1等于num_ref_idx_l0default_active_minu s1。
num_ref_idx_l0active_minus1的值可在0到15(包含0和15)的范围内。
num_ref_idx_I1active_minus1指定用于将用以解码切片的参考图像列表1的最大参考索引。
在当前切片为P或B切片且num_ref_idx_10_active_minus1不存在时,可推断num_ref_idx_l1active_minu s1等于num_ref_idx_l1_default_active_minu s1。
num_ref_idx_l1active_minus1的值可在0到15(包含0和15)的范围内。
表5.长期参考图像集语法
long_term_refpic_set(){ |
描述符 |
num_long_term_pps_curr |
ue(v) |
num_long_term_add_curr |
ue(v) |
num_long_term_pps_foll |
ue(v) |
num_long_term_add_foll |
ue(v) |
for(i=0;i<num_long_term_pps_curr+num_long_term_pps_foll;i++) |
|
long_term_ref_pic_set_idx_pps[i] |
ue(v) |
for(i=0;i<num_long_term_add_curr+num_long_term_add_foll;i++) |
|
long_term_ref_pic_id_delta_add[i] |
i(v) |
} |
|
长期参考图像集语法可用于长期图像。长期图像可经定义为识别信息包含在用于经译码图像的long_term_ref_pic_set()语法结构中的参考图像。
num_long_term_pps_curr指定识别信息包含在所参考的图像参数集中且可用于对当前图像进行帧间预测的所有长期参考图像的数目。如果num_long_term_pps_curr不存在,那么可导出值为等于0。num_long_term_pps_curr的值可在0到max_num_ref_frames(包含0和max_num_ref_frames)的范围内。
num_long_term_add_curr指定识别信息未包含在所参考的图像参数集中且可用于对当前图像进行帧间预测的所有长期参考图像的数目。如果num_long_term_add_curr不存在,那么可导出值为等于0。num_long_term_add_curr的值可在0到max_num_ref_frames-num_long_term_pps_curr(包含0和max_num_ref_frames-num_long_term_pps_curr)的范围内。
将变量NumLongTermCurr指定为:
NumLongTermCurr=num_long_term_pps_curr+num_long_term_add_curr
num_long_term_pps_foll指定满足以下情形的所有长期参考图像的数目:识别信息包含在所参考的图像参数集中,不用于对当前图像进行帧间预测,且可用于对在解码次序上在当前图像之后的图像中的任一者进行帧间预测。如果num_long_term_pps_foll不存在,那么可导出值为等于0。num_long_term_pps_foll的值可在0到max_num_ref_frames(包含0和max_num_ref_frames)的范围内。
num_long_term_add_foll指定满足以下情形的所有长期参考图像的数目:识别信息未包含在所参考的图像参数集中,不用于对当前图像进行帧间预测,且可用于对解码次序上的随后图像中的任一者进行帧间预测。如果num_long_term_add_foll不存在,那么可导出值为等于0。num_long_term_add_foll的值可在0到max_num_ref_frames-num_long_term_pps_foll(包含0和max_num_ref_frames-num_long_term_pps_foll)的范围内。
long_term_ref_pic_set_idx_pps[i]指定从所参考的图像参数集到当前图像的参考图像集而继承的第i长期参考图像的到包含在所参考的图像参数集中的长期参考图像识别信息的列表的索引。long_term_ref_pic_set_idx_pps[i]的值可在0到31(包含0和31)的范围内。
long_term_ref_pic_id_delta_add[i]指定并不是从所参考的图像参数集而继承但包含在当前图像的参考图像集中的第i长期参考图像的长期参考图像识别信息。用以表示long_term_ref_pic_id_add_curr[i]的位的数目可等于long_term_pic_id_len_minus4+4。
通过上述用信号发出的或导出的值(即,表1到5中的值),视频解码器30可导出参考图像集。如上文所描述,所导出的参考图像集可识别可潜在地用以译码/预测当前图像(即,当前正被解码的图像)及在解码次序上在当前图像之后的图像的参考图像。根据本发明中所描述的技术,所导出的参考图像集中的所有参考图像的解码次序比当前图像的解码次序早。
导出过程可包含从多个参考图像子集构造参考图像集。可在解码切片标头之后但在解码任何译码单元之前且在用于切片的参考图像列表构造的解码过程之前,每一图像调用一次此过程。举例来说,根据所导出的值和用信号发出的语法元素,视频解码器30可确定用于属于参考图像集的参考图像的POC值。根据所确定的POC值,视频解码器30可构造一起形成参考图像集的参考图像子集。以此方式,通过构造参考图像子集,视频解码器30可构造参考图像集。举例来说,视频解码器30可以特定方式将所述参考图像子集排序以导出参考图像集。排序可指视频解码器30借以列出参考图像子集以导出参考图像集的方式。
如上文所描述,为了导出参考图像集,视频解码器30可构造多个参考图像子集。在一些实例中,视频解码器30可构造六个参考图像子集。所述六个参考图像子集可命名为:RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr,和RefPicSetLtFoll。RefPicSetStCurr0可被称作RefPicSetStCurrBefore,且RefPicSetStCurr1可被称作RefPicSetStCurrAfter。
应理解,用于说明的目的而描述六个参考图像子集,且所述情形不应被解释为限制性的。作为一个实例,视频解码器30可(例如)通过组合所述子集中的一些子集而构造比六个参考图像子集少的参考图像子集。下文描述视频解码器30构造少于六个的参考图像子集的这些实例中的一些实例。然而,为了说明的目的,通过视频解码器30构造六个参考图像子集的实例描述所述技术。
RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0和RefPicSetStFoll1参考图像子集可识别短期参考图像。在一些实例中,这些参考图像子集可基于以下各者而识别短期参考图像:短期参考图像是在显示次序上比正被译码的当前图像早还是在显示次序上比正被译码的当前图像迟,以及短期参考图像是否可潜在地用于对当前图像及在解码次序上在当前图像之后的图像进行帧间预测,或是否可潜在地用于仅对在解码次序上在当前图像之后的图像进行帧间预测。
举例来说,RefPicSetStCurr0参考图像子集可包含(且可仅包含)满足以下情形的所有短期参考图像的识别信息(例如,POC值):具有比当前图像的输出或显示次序早的输出或显示次序,且可潜在地用于在当前图像的帧间预测中供参考,且可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考。RefPicSetStCurr1参考图像子集可包含(且可仅包含)满足以下情形的所有短期参考图像的识别信息:具有比当前图像的输出或显示次序迟的输出或显示次序,且可潜在地用于在当前图像的帧间预测中供参考,且可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考。
RefPicSetStFoll0参考图像子集可包含(且可仅包含)满足以下情形的所有短期参考图像的识别信息:具有比当前图像的输出或显示次序早的输出或显示次序,可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考,且无法用于在当前图像的帧间预测中供参考。RefPicSetStFoll1参考图像子集可包含(且可仅包含)满足以下情形的所有短期参考图像的识别信息:具有比当前图像的输出或显示次序迟的输出或显示次序,可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考,且无法用于在当前图像的帧间预测中供参考。
RefPicSetLtCurr和RefPicSetLtFoll参考图像子集可识别长期参考图像。在一些实例中,这些参考图像子集可基于长期参考图像是在显示次序上比正被译码的当前图像早还是在显示次序上比正被译码的当前图像迟,识别长期参考图像。
举例来说,RefPicSetLtCurr参考图像子集可包含(且可仅包含)满足以下情形的所有长期参考图像的识别信息:可潜在地用于在当前图像的帧间预测中供参考,且可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考。RefPicSetLtFoll参考图像子集可包含(且可仅包含)满足以下情形的所有长期参考图像的识别信息:可潜在地用于在解码次序上在当前图像之后的一个或一个以上图像的帧间预测中供参考,且无法用于在当前图像的帧间预测中供参考。
如果待解码的当前图像为IDR图像,那么视频解码器30可将RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr和RefPicSetLtFoll参考图像子集设置为空。此情形可能因为:IDR图像无法进行帧间预测且在解码次序上在IDR图像之后的图像均无法在解码中使用在IDR图像之前的任何图像供参考。否则(例如,在当前图像为非IDR图像时),视频解码器30可通过实施以下伪码而构造短期参考图像子集和长期参考图像子集。
举例来说,当视频解码器30解码在切片标头中或者参考所参考的图像参数集的short_term_ref_pic_set()语法结构的实例时,视频解码器30可实施以下伪码以构造RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0和RefPicSetStFoll1参考图像子集。
如果视频解码器30确定long_term_ref_pics_present_flag等于0,那么视频解码器30可将RefPicSetLtCurr和RefPicSetLtFoll设置为空,这是因为对于此情况不存在长期参考图像。否则,如果视频解码器30解码切片标头中的long_term_ref_pic_set()语法结构的实例,那么视频解码器30可实施以下伪码以构造RefPicSetLtCurr和RefPicSetLtFoll参考图像子集。
根据本发明中所描述的技术,如果具有PicOrderCnt的特定值(POC值)的参考图像包含在经译码图像的参考图像集的六个子集中的任一者中,那么所述参考图像可被称作包含在所述经译码图像的参考图像集中。如果PicOrderCnt的特定值(POC值)等于包含在参考图像集的特定子集中的PicOrderCnt值中的一者,那么具有PicOrderCnt的特定值的参考图像被称作包含在所述子集中。
在构造参考图像子集之后,视频解码器30可导出参考图像集。举例来说,视频解码器30可将所述参考图像子集排序以导出参考图像集。作为一个实例,视频解码器30可列出RefPicSetStCurr0参考图像子集、后接续有RefPicSetStCurr1参考图像子集、后接续有RefPicSetStFoll0参考图像子集、后接续有RefPicSetStFoll1参考图像子集、后接续有RefPicSetLtCurr参考图像子集,及然后的RefPicSetLtFoll参考图像子集。作为另一实例,视频解码器30可列出RefPicSetStCurr0参考图像子集、后接续有RefPicSetStCurr1参考图像子集、后接续有RefPicSetLtCurr参考图像子集、后接续有RefPicSetStFoll0参考图像子集、后接续有RefPicSetStFoll1,及然后的RefPicSetLtFoll参考图像子集。
视频解码器30借以将参考图像子集排序的方式的其它排列可能有可能用于导出参考图像集。在一些实例中,可将参考图像子集的构造与参考图像集的导出组合在一起。举例来说,参考图像子集的构造可自动地导致视频解码器30导出参考图像集。换句话说,视频解码器30可能不需要执行不同步骤以用于构造参考图像子集及导出参考图像集,但视频解码器30可能有可能首先构造参考图像子集且然后导出参考图像集。
而且,根据本发明中所描述的技术,以上文所描述的方式构造参考图像集可导致视频解码器30满足以下限制。举例来说,具有PicOrderCnt的特定值的特定参考图像可能不包含在当前图像的参考图像集的参考图像子集中的一者以上中。换句话说,在参考图像子集中的一者中识别的参考图像可能在其它参考图像子集中的任一者中未加以识别。作为另一实例,在所导出的参考图像集中,可能不存在具有大于包含在形成参考图像集的参考图像子集中的任一者中的当前图像的temporal_id的temporal_id的参考图像。
如上文所描述,时间识别值(temporal_id)可为指示哪些图像可用于译码/预测当前图像的阶层值。一般来说,具有特定temporal_id值的图像可能有可能为用于具有相等或较大temporal_id值的图像的参考图像,但反过来不成立。举例来说,具有temporal_id值1的图像可能有可能为用于具有temporal_id值1、2、3,……的图像的参考图像,但不可能为用于具有temporal_ID值0的图像的参考图像。
最低temporal_id值还可指示最低显示率。举例来说,如果视频解码器30仅解码具有temporal_id值0的图像,那么显示率可为7.5个图像/秒。如果视频解码器30仅解码具有temporal_id值0和1的图像,那么显示率可为15个图像/秒,等等。
在一些实例中,仅具有小于或等于当前图像的temporal_id的temporal_id值的图像可包含在当前图像的参考图像集中。如上文所描述,仅具有小于或等于当前图像的temporal_id的temporal_id值的图像可用作参考图像。因此,具有较低或相等temporal_id值的所有参考图像可供当前图像使用以用于进行帧间预测且可包含在参考图像集中。而且,将满足以下情形的一些参考图像从参考图像集中排除:具有大于当前图像的temporal_id值的temporal_id值,及将供在解码次序上在当前图像之后的图像使用且具有大于当前图像的temporal_id值的temporal_id值。
通过这些技术,不需要temporal_id的发信号以及用于导出参考图像集的图像识别;因此,参考图像集发信号变得更有效率。举例来说,视频编码器20可能不用信号发出属于参考图像集的参考图像的temporal_id值,且视频解码器30可能不需要接收属于参考图像集的参考图像的temporal_id值以用于导出参考图像集的目的。
此外,以此方式,所构造的参考图像子集可能不识别具有大于当前图像的temporal_id值的temporal_id值的参考图像。举例来说,视频解码器30可能能够构造参考图像子集,且确保在参考图像子集中的任一者中识别的参考图像均不具有大于当前图像的temporal_id值的temporal_id值,这是因为位流一致性可能需要temporal_id值不包含在由视频编码器20用信号发出且由视频解码器30接收的位流中。以此方式,视频解码器30可在不接收用于属于参考图像集的参考图像的时间识别值的情况下导出参考图像集。
在上述实例中,视频解码器30可构造六个参考图像子集,其中四个参考图像子集用于短期参考图像(即,RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0和RefPicSetStFoll1),且两个参考图像子集用于长期参考图像(即,RefPicSetLtCurr和RefPicSetLtFoll)。然而,本发明的方面不应受此限制。在其它实例中,可将这些参考图像子集中的两者或两者以上组合成一个参考图像子集,从而导致视频解码器30构造较少参考图像子集。下文描述视频解码器30可构造较少参考图像子集的一些非限制性实例。可能存在视频解码器30可借以构造较少参考图像子集的其它方式。
举例来说,在一些实例中,可能不存在用于当前图像的子集与用于解码次序上的随后图像的子集的分离。因此,可能存在用于短期参考图像的两个子集(被称作RefPicSetSt0和RefPicSetSt1),且可能仅存在用于长期参考图像的一个子集(被称作RefPicSetLt)。在此实例中,RefPicSetSt0参考图像子集可为RefPicSetStCurr0与RefPicSetStFoll0的并置,其中RefPicSetStCurr0在并置结果的开始处。在此实例中,RefPicSetStl参考图像子集可为RefPicSetStCurr1与RefPicSetStFoll1的并置,其中RefPicSetStCurr1在并置结果的开始处。RefPicSetLt参考图像子集可为RefPicSetLtCurr与RefPicSetLtFoll的并置,其中RefPicSetLtCurr在并置结果的开始处。
作为另一实例,可能不存在具有比当前图像早或迟的输出次序的子集的分离。此情形可仅适用于短期参考图像。因此,可能存在用于短期参考图像的两个子集,其被称作RefPicSetStCurr和RefPicSetStFol1。RefPicSetStCurr参考图像子集可为RefPicSetStCurr0与RefPicSetStCurr1的并置,其中RefPicSetStCurr0在并置结果的开始处。RefPicSetStFoll参考图像子集可为RefPicSetStFoll0与RefPicSetStFoll1的并置,其中RefPicSetStFoll0在并置结果的开始处。
作为另一实例,可能不应用上文所叙述的两种类型的分离。因此,可能仅存在用于短期参考图像的一个子集(被称作RefPicSetSt),且仅存在用于长期参考图像的一个子集(被称作RefPicSetLt)。RefPicSetSt参考图像子集可为呈所列次序(或任何其它次序)的RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0和RefPicSetStFoll1的并置,且RefPicSetLt可与上述情形相同。
上述技术描述视频解码器30可借以导出参考图像集的实例方式。在编码过程期间,视频编码器20还可能需要解码经编码图像以用于编码后续图像的目的,此过程被称作重构造过程。因此,在一些实例中,视频编码器20还可经配置以导出参考图像集。在一些实例中,视频编码器20可实施与视频解码器30实施的用以导出参考图像集的技术相同的技术。然而,可能不需要在每个实例中由视频编码器20导出参考图像集,且视频解码器30可能为导出参考图像集的仅有的译码器。
因此,在一些实例中,视频译码器(例如,视频编码器20或视频解码器30)可译码(例如,分别为编码或解码)指示属于参考图像集的参考图像的信息。举例来说,视频编码器20可用信号发出经编码位流,所述经编码位流包含用以确定哪些参考图像属于参考图像集的值。类似地,视频解码器30可解码位流以确定哪些参考图像属于参考图像集。
视频译码器可构造多个参考图像子集,每一参考图像子集识别所述参考图像中的零者或多者。举例来说,视频译码器可构造六个参考图像子集(即,RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr和RefPicSetLtFoll参考图像子集),其中所述子集中的每一者识别零或多个参考图像。在一些实例中,视频译码器可基于所述多个参考图像子集而译码当前图像。
举例来说,视频译码器可从所述所构造的多个参考图像子集导出参考图像集。举例来说,视频译码器可以任何次序将所述参考图像子集排序以导出参考图像集,或可作为构造参考图像子集的部分导出参考图像集。在一些实例中,根据所导出的参考图像集,视频译码器可译码当前图像。因为参考图像集是从所述多个参考图像子集导出,所以视频译码器可被视为基于所述多个参考图像子集而译码当前图像。
在一些实例中,为了将参考图像子集排序,视频译码器可以参考图像子集待列于参考图像集中的次序构造参考图像子集。举例来说,视频译码器可首先构造RefPicSetLtCurr参考图像子集,然后构造RefPicSetLtFoll参考图像子集,然后构造RefPicSetStCurr0参考图像子集,然后构造RefPicSetStCurr1参考图像子集,然后构造RefPicSetStFoll0参考图像子集,且然后构造RefPicSetStFoll1参考图像子集。在此说明性实例中,参考图像集中的参考图像子集的次序可为RefPicSetLtCurr、RefPicSetLtFoll、RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0和RefPicSetStFoll1(呈所述次序),但其它次序是有可能的。
根据本发明中所描述的实例技术,在导出参考图像集之后,视频解码器30可解码当前图像内的切片。解码过程的部分涉及构造一个或两个参考图像列表。参考图像列表为用于P或B切片的预测的参考图像的列表。对于P切片的解码过程,存在一个参考图像列表(列表0)。对于B切片的解码过程,存在两个参考图像列表(列表0和列表1)。列表0(有时被称作参考图像列表0或RefPicList0)为用于对P或B切片进行帧间预测的参考图像列表。用于P切片的所有帧间预测使用列表0。参考图像列表0为用于B切片的双向预测的两个参考图像列表中的一者,其中另一参考图像列表为参考图像列表1。列表1(有时被称作参考图像列表1或RefPicList1)为用于B切片的预测的参考图像列表。参考图像列表1为用于B切片的预测的两个参考图像列表中的一者,其中另一参考图像列表为参考图像列表0。可使用列表0与列表1两者对B切片中的一些块进行双向预测,且可使用列表0或列表1对B切片中的一些块进行单向预测。
为了构造参考图像列表,视频解码器30可实施默认构造技术以构造初始列表0和(对于B切片)初始列表1。初始列表0和初始列表1的构造可被称作初始化过程。在一些实例中,经译码位流可指示:视频解码器30应修改初始列表0和/或初始列表1以产生最终列表0和最终列表1。初始列表0和/或初始列表1的修改可被称作修改过程。可能不需要在每个实例中进行修改过程,且下文更详细描述视频解码器30可借以实施修改过程的方式。根据本发明中所描述的技术,当不需要初始列表0或初始列表1的修改时,最终列表0或最终列表1(即,用以解码当前图像的切片的参考图像列表0或1)可等于初始列表0或初始列表1。以此方式,可能不需要参考图像列表重新排序。
在本发明中所描述的技术中,视频解码器30可以视频解码器30可能不需要执行待包含在初始列表0或初始列表1中的参考图像的重新排序的方式构造初始列表0或初始列表1,而不管是否需要修改过程,这是因为参考图像子集中的每一者中的参考图像已经呈适当次序。举例来说,在一些其它技术中,不管是否需要修改过程,在将参考图像添加或列入到初始列表0或初始列表1中时,需要根据参考图像的POC值将待包含在初始列表0或初始列表1中的参考图像重新排序。
在初始化过程中,视频解码器30可实施默认构造技术以构造初始列表0和初始列表1。默认构造技术可意味着:在不从视频编码器20接收关于视频解码器30应借以构造初始参考图像列表的方式或应在初始参考图像列表中识别哪些参考图像的语法元素的情况下,视频解码器30构造初始参考图像列表。
当解码P或B切片标头时,视频解码器30可调用参考图像列表构造过程。举例来说,当解码P切片时,视频解码器30可调用用于构造初始列表0的过程,而可能不调用用于构造初始列表1的过程,这是因为P切片中的块仅涉及在列表0中识别的参考图像进行单向预测。当解码B切片时,视频解码器30可调用用于构造初始列表0及构造初始列表1的过程,这是因为B切片中的块可关于在列表0和列表1中的每一者中识别的参考图像进行双向预测。
根据本发明中所描述的实例技术,视频解码器30可利用参考图像子集构造初始列表0和初始列表1。举例来说,初始列表0和初始列表1可列出在RefPicSetStCurr0、RefPicSetStCurr1或RefPicSetLtCurr中识别的零或多个参考图像。在此实例中,当调用参考图像列表构造过程时,RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr中可能存在至少一个参考图像。尽管初始列表0和初始列表1可识别来自相同参考图像子集的一个或一个以上参考图像,但视频解码器30在初始列表0中添加参考图像的次序可能不同于视频解码器30在初始列表1中添加参考图像的次序。
在本发明中,当视频解码器30在初始列表0或初始列表1中添加(例如,列出)来自参考图像子集中的一者或一者以上的参考图像时,本发明提及视频解码器30识别初始列表0或初始列表1中的参考图像。举例来说,所述多个参考图像子集可各自识别零或多个参考图像。为了构造初始列表0和初始列表1,视频解码器30可识别在参考图像子集中识别的到初始列表0或初始列表1中的参考图像中的一者或一者以上。
为了避免混淆且为了辅助清晰性,本发明可提及视频解码器30将在参考图像子集中识别的参考图像中的零者或多者列入或添加到初始列表0和初始列表1中,以构造初始列表0和初始列表1。以此方式,视频解码器30添加或列出参考图像意味着:视频解码器30添加或列出在参考图像子集中识别的参考图像的识别符。因此,所得初始列表0和初始列表1包含用于可潜在地用于译码当前图像的块或切片的参考图像的多个识别符。这些参考图像存储在视频解码器30和视频编码器20的相应已解码图像缓冲器中。
举例来说,为了构造初始列表0,视频解码器30可首先在初始列表0中列出(例如,添加)在RefPicSetStCurr0中识别的参考图像,后接续在初始列表0中列出(例如,添加)在RefPicSetStCurr1中识别的参考图像,且然后在初始列表0中列出(例如,添加)在RefPicSetLtCurr中识别的参考图像。为了构造初始列表1,视频解码器30可首先在初始列表1中列出(例如,添加)在RefPicSetStCurr1中识别的参考图像,后接续在初始列表1中列出(例如,添加)在RefPicSetStCurr0中识别的参考图像,且然后在初始列表1中列出(例如,添加)在RefPicSetLtCurr中识别的参考图像。
此外,除以不同次序添加参考图像子集中的参考图像之外,在构造列表0和列表1时,视频解码器30还可利用来自参考图像子集中的每一者的不同数目个参考图像。举例来说,列表0和列表1不需要包含来自RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr的所有参考图像。而是,从这些实例参考图像子集列出以构造初始列表0和初始列表1的参考图像的数目可基于指示初始列表0和初始列表1中的每一者内的参考图像的最大数目的语法元素。
举例来说,对于初始列表0,视频编码器20可在切片标头中用信号发出用于P和B切片的num_ref_idx_l0active_minus1语法元素,及用于经双向预测的B切片的num_ref_idx_l1active_minus1语法元素。如上文所描述,num_ref_idx_l0active_minus1可定义可处于初始列表0中的参考图像的最大数目,且num_ref_idx_l1active_minus1可定义可处于初始列表1中的参考图像的最大数目。在一些实例中,以下情形可能为有可能的:num_ref_idx_l0active_minus1的值不同于num_ref_idx_l1active_minus1的值,但此情形可能并不是每个实例中所必要的。在一些实例中,num_ref_idx_l0active_minus1的值可与num_ref_idx_l1active_minus1的值相同。
如上文所描述,视频解码器30可在经译码位流中接收用于num_short_term_curr0和num_short_term_curr1的值。视频解码器30可将变量NumShortTermCurr0定义为等于num_short_term_curr0,且将变量NumShortTermCurr1定义为等于num_short_term_curr1。NumShortTermCurr0可指示RefPicSetStCurr0参考图像子集中的参考图像的数目,且NumShortTermCurr1可指示RefPicSetStCurr1参考图像子集中的参考图像的数目。
视频解码器30还可在经译码位流中接收用于num_long_term_pps_curr和num_long_term_add_curr的值。视频解码器30可将变量NumLongTermCurr定义为等于num_long_term_pps_curr加上num_long_term_add_curr。NumLongTermCurr可指示RefPicSetLtCurr中的参考图像的数目。
为了构造初始列表0,视频解码器30可首先将RefPicSetStCurr0中的参考图像添加到初始列表0中,直到视频解码器30将RefPicSetStCurr0中的所有参考图像添加到初始列表0中为止,且只要初始列表0中的条目的数目(例如,在列表0中识别的参考图像的数目)小于或等于num_ref_idx_l0active_minus1即可。举例来说,NumShortTermCurr0可指示RefPicSetStCurr0参考图像子集中的参考图像的数目。在此实例中,视频解码器30可列出(例如,添加)来自RefPicSetStCurr0参考图像子集的参考图像,直到从RefPicSetStCurr0列出的参考图像的数目等于NumShortTermCurr0为止。然而,在将RefPicSetStCurr0的参考图像列入到初始列表0中时,如果初始列表0中的条目的总数目等于num_ref_idx_l0active_minus1,那么视频解码器30可停止添加RefPicSetStCurr0参考图像子集中的参考图像,即使RefPicSetStCurr0中存在未列于初始列表0中的额外图像也如此。在此情况下,视频解码器30可能已完成初始列表0的构造。
在视频解码器30列出RefPicSetStCurr0参考图像子集中的所有参考图像且初始列表0中的条目的总数目小于num_ref_idx_l0active_minus1之后,视频解码器30可然后添加RefPicSetStCurr1中的参考图像,直到视频解码器30识别RefPicSetStCurr1中的所有参考图像为止,且只要初始列表0中的条目的数目(例如,在列表0中识别的参考图像的数目)小于或等于num_ref_idx_l0active_minus1即可。举例来说,类似于上述情形,NumShortTermCurr1可指示RefPicSetStCurr1参考图像子集中的参考图像的数目。在此实例中,视频解码器30可列出来自RefPicSetStCurr1参考图像子集的参考图像,直到从RefPicSetStCurr1列出的参考图像的数目等于NumShortTermCurr1为止。然而,在列出来自RefPicSetStCurr1的参考图像时,如果初始列表0中的条目的总数目等于num_ref_idx_l0active_minus1,那么视频解码器30可停止添加来自RefPicSetStCurr1参考图像子集的参考图像,即使RefPicSetStCurr1中存在未列于初始列表0中的额外图像也如此。在此情况下,视频解码器30可能已完成初始列表0的构造。
在视频解码器30列出RefPicSetStCurr1参考图像子集中的所有参考图像且初始列表0中的条目的总数目小于num_ref_idx_l0active_minus1之后,视频解码器30可然后列出RefPicSetLtCurr中的参考图像,直到视频解码器30列出RefPicSetLtCurr中的所有参考图像为止,且只要初始列表0中的条目的数目(例如,在列表0中识别的参考图像的数目)小于或等于num_ref_idx_l0active_minus1即可。举例来说,类似于上述情形,NumLongTermCurr可指示RefPicSetLtCurr参考图像子集中的参考图像的数目。在此实例中,视频解码器30可列出来自RefPicSetLtCurr参考图像子集的参考图像,直到从RefPicSetLtCurr列出的参考图像的数目等于NumLongTermCurr为止。然而,在将来自RefPicSetLtCurr的参考图像列入到初始列表0中时,如果初始列表0中的条目的总数目等于num_ref_idx_l0active_minus1,那么视频解码器30可停止添加RefPicSetLtCurr参考图像子集中的参考图像,即使RefPicSetLtCurr中存在未列于初始列表0中的额外图像也如此。在此情况下,视频解码器30可能已完成初始列表0的构造。
以下伪码说明视频解码器30可借以构造初始列表0的方式。
在上述伪码中,RefPicList0可为初始列表0。在不需要列表0的修改的实例中,最终列表0可等于初始列表0。因此,在不需要列表0的修改的实例中,在上述伪码中,RefPicList0可为最终列表0。
视频解码器30可类似地构造初始列表1。然而,为了构造初始列表1,视频解码器30可首先将来自RefPicSetStCurr1参考图像子集的参考图像添加到初始列表1中,后接续将来自RefPicSetStCurr0参考图像子集的参考图像添加到初始列表1中,且后接续将来自RefPicSetLtCurr参考图像子集的参考图像添加到初始列表1中。而且,类似于上述情形,在列出来自RefPicSetStCurr1、RefPicSetStCurr0和RefPicSetLtCurr参考图像子集中的任一者的参考图像时,如果初始列表1中的条目的总数目等于num_ref_idx_l1active_minus1,那么视频解码器30可停止添加参考图像,即使这些参考图像子集中存在额外参考图像也如此。
举例来说,为了构造初始列表1,视频解码器30可首先列出来自RefPicSetStCurr1的参考图像,直到视频解码器30识别RefPicSetStCurr1中的所有参考图像为止,且只要初始列表1中的条目的数目(例如,在列表1中识别的参考图像的数目)小于或等于num_ref_idx_l1active_minus1即可。举例来说,NumShortTermCurr1的值可指示视频解码器30何时完成列出RefPicSetStCurr1参考图像子集中的所有参考图像。然而,在列出来自RefPicSetStCurr1的参考图像时,如果初始列表1中的条目的总数目等于num_ref_idx_l1active_minus1,那么视频解码器30可停止添加RefPicSetStCurr1参考图像子集中的参考图像,即使RefPicSetStCurr1中存在未列于初始列表1中的额外图像也如此。在此情况下,视频解码器30可能已完成初始列表1的构造。
在视频解码器30列出RefPicSetStCurr1参考图像子集中的所有参考图像且初始列表1中的条目的总数目小于num_ref_idx_l1active_minus1之后,视频解码器30可然后列出来自RefPicSetStCurr0的参考图像,直到视频解码器30列出RefPicSetStCurr0中的所有参考图像为止,且只要初始列表1中的条目的数目(例如,在列表1中识别的参考图像的数目)小于或等于num_ref_idx_l1active_minus1即可。举例来说,类似于上述情形,NumShortTermCurr0的值可指示视频解码器30何时完成列出RefPicSetStCurr0参考图像子集中的所有参考图像。然而,在将来自RefPicSetStCurr0的参考图像列入到初始列表1中时,如果初始列表1中的条目的总数目等于num_ref_idx_l1active_minus1,那么视频解码器30可停止添加RefPicSetStCurr0参考图像子集中的参考图像,即使RefPicSetStCurr0中存在未列于初始列表1中的额外图像也如此。在此情况下,视频解码器30可能已完成初始列表1的构造。
在视频解码器30列出RefPicSetStCurr0参考图像子集中的所有参考图像且初始列表1中的条目的总数目小于num_ref_idx_l1active_minus1之后,视频解码器30可然后列出RefPicSetLtCurr中的参考图像,直到视频解码器30列出RefPicSetLtCurr中的所有参考图像为止,且只要初始列表1中的条目的数目(例如,在列表1中识别的参考图像的数目)小于或等于num_ref_idx_l1active_minus1即可。举例来说,类似于上述情形,NumLongTermCurr的值可指示视频解码器30何时完成列出RefPicSetLtCurr参考图像子集中的所有参考图像。然而,在列出来自RefPicSetLtCurr的参考图像时,如果初始列表1中的条目的总数目等于num_ref_idx_l1active_minus1,那么视频解码器30可停止添加RefPicSetLtCurr参考图像子集中的参考图像,即使RefPicSetLtCurr中存在未列于初始列表1中的额外图像也如此。在此情况下,视频解码器30可能已完成初始列表1的构造。
以下伪码说明视频解码器30可借以构造初始列表1的方式。
在上述伪码中,RefPicList1可为初始列表1。在不需要列表1的修改的实例中,最终列表1可等于初始列表1。因此,在不需要列表1的修改的实例中,在上述伪码中,RefPicList1可为最终列表1。
前述实例方式为视频解码器30在不需要参考图像列表修改时可借以构造最终列表0和最终列表1的一种实例方式。在其它实例中,视频解码器30可以不同于上文所描述的次序的次序添加参考图像子集。在又一些其它实例中,视频解码器30可添加不同于上文所描述的参考图像子集的参考图像子集。
尽管前述实例描述用于由视频解码器30执行的参考图像列表构造的技术,但本发明的方面不受此限制,且视频编码器20可实施类似技术以用于构造参考图像列表。然而,视频编码器20可能不必要以与视频解码器30借以构造参考图像列表的方式相同的方式构造参考图像列表。
因此,视频译码器(例如,视频编码器20或视频解码器30)可经配置以译码(例如,编码或解码)指示属于参考图像集的参考图像的信息。如上文所描述,参考图像集识别可潜在地用于对当前图像进行帧间预测且可潜在地用于对在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测的参考图像。
视频译码器还可经配置以构造多个参考图像子集,每一参考图像子集识别零或多个参考图像。举例来说,视频译码器可至少构造RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集。视频译码器可构造额外参考图像子集,例如上文所描述的参考图像子集。
只要初始参考图像列表条目的数目不大于可允许参考图像列表条目的最大数目,视频译码器便可然后将以下各参考图像添加到初始参考图像列表中:来自第一参考图像子集的参考图像、后接续有来自第二参考图像子集的参考图像,及后接续有来自第三参考图像子集的参考图像。举例来说,只要初始列表0中的条目的数目不大于num_ref_idx_l0active_minus1,视频译码器便可将以下各参考图像列入到初始列表0中:来自RefPicSetStCurr0参考图像子集的参考图像、后接续有来自RefPicSetStCurr1参考图像子集的参考图像,及后接续有来自RefPicSetLtCurr子集的参考图像。此外,num_ref_idx_l0active_minus1的值可指示列表0的可允许参考图像列表条目的最大数目。
在一些实例中,视频译码器可在初始参考图像列表中添加来自第一参考图像子集的参考图像,直到在初始参考图像列表中列出第一参考图像子集中的所有参考图像或初始参考图像列表条目的数目等于可允许参考图像列表条目的最大数目为止。当初始参考图像列表条目的数目小于可允许参考图像列表条目的最大数目时,且在添加来自第一参考图像子集的参考图像之后,视频译码器可在初始参考图像列表中添加来自第二参考图像子集的参考图像,直到在初始参考图像列表中列出第二参考图像子集中的所有参考图像或初始参考图像列表条目的数目等于可允许参考图像列表条目的最大数目为止。当初始参考图像列表条目的数目小于可允许参考图像列表条目的最大数目时,且在添加来自第二参考图像子集的参考图像之后,视频译码器可在初始参考图像列表中添加来自第三参考图像子集的参考图像,直到在初始参考图像列表中列出第三参考图像子集中的所有参考图像或初始参考图像列表条目的数目等于可允许参考图像列表条目的最大数目为止。
视频译码器可类似地构造初始列表1。举例来说,只要初始列表1中的初始参考图像列表条目的数目不大于num_ref_idx11active_minus1,视频译码器便可将以下各参考图像添加到初始列表1中:来自第二参考图像子集的参考图像、后接续有来自第一参考图像子集的参考图像,及后接续有来自第三参考图像子集的参考图像。num_ref_idx_l1active_minus1语法元素可定义列表1中可允许条目的最大数目。
在一些实例中,例如,当不需要修改时,初始列表0和初始列表1可等于最终列表0和最终列表1。换句话说,在不需要修改时,视频译码器可构造最终列表0和最终列表1,而不修改初始列表0和初始列表1。在这些情况下,在构造初始列表0和初始列表1之后,视频译码器可能不需要执行额外步骤以构造最终列表0和最终列表1(即,视频译码器用以译码当前图像的块的参考图像列表)。
如上述伪码中所指示,当cIdx小于或等于num_ref_idx_l0active_minus1时,视频解码器30可构造初始列表0,且当cIdx小于或等于num_ref_idx11active_minus1时,视频解码器30可构造初始列表1。此情形可导致视频解码器30构造初始列表0和初始列表1,在参考图像列表中无任何非完成条目。举例来说,在一些其它视频译码技术中,用于这些其它视频技术的视频解码器将利用不同于本发明中所描述的技术的技术构造初始列表0和列表1。对于这些其它视频译码技术,如果初始列表0和初始列表1中的条目的数目小于条目的最大可允许数目,那么用于这些其它视频译码技术的视频解码器将用非完成条目的“无参考图像”填充列表0和列表1中的剩余条目。非完成条目指列表0和列表1中在识别参考图像的最后条目之后的且直到最后可能的条目的条目。
作为辅助理解的说明性实例,用于这些其它视频译码技术的视频解码器可构造具有五个条目的列表0,其中可允许条目的最大数目为十个条目。在此实例中,用于这些其它视频译码技术的视频解码器将第六条目到第十条目填充为“无参考图像”。在此实例中,非完成条目将为第六条目(例如,在识别参考图像的最后条目之后的条目)直到第十条目(例如,如通过可允许条目的最大数目定义的最后可能的条目)。
根据本发明的技术,视频解码器30可构造初始列表0和初始列表1,以使得不存在非完成条目。而且,在不需要参考图像列表修改的实例中,最终列表0和最终列表1可等于初始列表0和初始列表1。因此,在不需要参考图像列表修改的实例中,视频解码器30可构造最终列表0和最终列表1,以使得不存在非完成条目。甚至在需要参考图像列表修改的情况下,修改还可能不会导致任何非完成条目。因此,甚至在需要参考图像列表修改的实例中,视频解码器30也可构造最终列表0和最终列表1,以使得不存在非完成条目。
举例来说,可将列表0和列表1视为具有条目的列表,且每一条目可识别一参考图像(例如,通过参考图像的POC值)。换句话说,视频解码器30可通过列表0和列表1的每一条目中的参考图像的POC值识别参考图像。列表0和列表1中的条目的数目可分别通过num_ref_idx_l0active_minus1和num_ref_idx_l1active_minus1语法元素来定义。
为了确保不存在非完成条目,视频解码器30可重复地在初始列表0和初始列表1中列出(例如,添加或识别)来自参考图像子集的参考图像,直到视频解码器30确定应在初始列表0和初始列表1的每一可能的条目中识别哪一参考图像为止。举例来说,如上文所描述,对于构造初始列表0,在于初始列表0中添加来自RefPicSetStCurr0和RefPicSetStCurr1参考图像子集的参考图像之后,视频解码器30可在初始列表0中添加来自RefPicSetLtCurr参考图像子集的参考图像。
在一些实例中,以下情形可能为有可能的:在视频解码器30于初始列表0中添加来自RefPicSetLtCurr参考图像子集的参考图像之后,初始列表0中的条目的总数目小于列表0中的可允许条目的最大数目。举例来说,在用于构造初始列表0的伪码中,cIdx可指示列表0中的条目的数目。在一些实例中,在视频解码器30在初始列表0中识别RefPicSetLtCurr中的参考图像之后,cIdx的值可小于num_ref_idx_l0active_minus1,其中num_ref_idx_l0active_minus1指定列表0中的可允许条目的最大数目。
根据本发明中所描述的技术,在列出来自所述多个参考图像子集中的三者的参考图像之后,如果初始列表0中的条目的数目小于可允许条目的最大数目,那么视频解码器30可重复地添加来自所述三个参考图像子集的参考图像,直到列表0中的所有条目已满为止。举例来说,在视频解码器30添加来自RefPicSetLtCurr参考图像子集的参考图像且初始列表0中的条目的数目小于可允许条目的最大数目之后,视频解码器30可然后重新列出(例如,重新添加或重新识别)来自RefPicSetStCurr0参考图像子集的参考图像。
在本发明中所描述的方面中,当视频解码器30列出来自RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集的参考图像时,可将视频解码器30视为将来自这些多个参考图像子集的参考图像添加到参考图像列表(例如,列表0)中的第一条目集合中。举例来说,第一条目集合可为视频解码器30识别来自RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集的参考图像所在的参考图像列表中的条目。然后,如果参考图像列表中的条目的数目小于条目的最大可允许数目,那么视频解码器30可将来自RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集中的至少一者的一个或一个以上参考图像重新列入(例如,重新添加或重新识别)到参考图像列表中在第一条目集合之后的条目中。在第一条目集合之后(subsequent to)的条目可为在第一条目集合之后(following)的条目,在所述条目中,视频解码器30添加来自RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集中的一者或一者以上的已经列出的参考图像,如下文所描述。
在重新添加来自RefPicSetStCurr0参考图像子集的参考图像时,如果初始列表0中的条目的总数目等于num_ref_idx_l0active_minus1,那么视频解码器30可停止在初始列表0中重新添加参考图像。在此情况下,视频解码器30可能已完成初始列表0的构造,且可能不存在非完成条目。否则,视频解码器30可重新添加来自RefPicSetStCurr0参考图像子集的参考图像,直到重新列出来自RefPicSetStCurr0参考图像子集的所有参考图像为止。
如果在重新添加RefPicSetStCurr0参考图像子集中的所有参考图像之后,初始列表0中的条目的数目小于num_ref_idx_l0active_minus1,那么视频解码器30可然后以类似于视频解码器30借以重新列出来自RefPicSetStCurr0参考图像子集的参考图像的方式的方式,重新添加来自RefPicSetStCurr1参考图像子集的参考图像。如果在重新添加RefPicSetStCurr1参考图像子集中的所有参考图像之后,初始列表0中的条目的数目小于num_ref_idx_l0active_minus1,那么视频解码器30可然后以类似于视频解码器30借以重新列出来自RefPicSetStCurr0和RefPicSetStCurr1参考图像子集的参考图像的方式的方式,重新添加来自RefPicSetLtCurr参考图像子集的参考图像。视频解码器30重复地添加来自参考图像子集的参考图像,直到初始列表0中的条目的数目等于列表0的可允许条目的最大数目(即,等于num_ref_idx_l0active_minus1)为止。
举例来说,假设存在RefPicSetStCurr0中的一个参考图像、RefPicSetCurr1中的一个参考图像和RefPicSetLtCurr中的一个参考图像。而且,假设num_ref_idx_l0active_minus1等于五。在此实例中,视频解码器30可在初始列表0中的两个条目中识别RefPicSetStCurr0中的参考图像。举例来说,视频解码器30可在初始列表0的第一条目中识别RefPicSetStCurr0中的参考图像,且在初始列表0的第四条目中重新识别RefPicSetStCurr0中的参考图像。在此实例中,用于RefPicSetStCurr0中的参考图像的索引值可为用于初始列表0中的第一条目的index[0],和用于初始列表0中的第四条目的index[3]。因此,在一些实例中,可在初始参考图像列表中将来自参考图像子集中的一者的一个参考图像列出(例如,识别)一次以上。
视频解码器30可类似地构造初始列表1,以使得在初始列表1中不存在非完成条目。举例来说,视频解码器30可重复地添加来自RefPicSetStCurr1、RefPicSetStCurr0和RefPicSetLtCurr参考图像子集(以所述次序)的参考图像,直到初始列表1中的条目的数目等于列表1中的可允许条目的最大数目(即,等于num_ref_idx_l1active_minus1)为止。
以此方式,因为“for”循环嵌套于“whi1e”循环中,所以在用于构造初始列表0和初始列表1的上述伪码中,视频解码器30可构造初始列表0和初始列表1,以使得初始列表0和初始列表1中不存在非完成条目(即,在初始化过程之后无非完成条目)。在一些实例中,初始列表0和初始列表1中的条目中的每一者可识别来自参考图像子集中的一者的一参考图像。在一些实例中,以下情形可能为有可能的:在最终参考图像列表中识别来自参考图像子集中的一者的一个或一个以上参考图像一次以上,但在具有不同索引值的不同条目处加以识别。
尽管前述实例描述用于如由视频解码器30执行的无非完成条目的参考图像列表构造的技术,但本发明的方面不受此限制,且视频编码器20可实施类似技术以用于构造无非完成条目的参考图像列表。然而,视频编码器20可能不必要以与视频解码器30借以构造参考图像列表的方式相同的方式构造参考图像列表。
因此,视频译码器(例如,视频编码器20或视频解码器30)可经配置以译码(例如,编码或解码)指示属于参考图像集的参考图像的信息。如上文所描述,参考图像集识别可潜在地用于对当前图像进行帧间预测且可潜在地用于对在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测的参考图像。
视频译码器可构造多个参考图像子集,每一参考图像子集识别参考图像(例如,RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集)中的零者或多者。视频译码器可将来自所述多个参考图像子集的参考图像列入(例如,识别或添加)到参考图像列表中的第一条目集合中。视频译码器可确定参考图像列表中的条目的数目是否等于参考图像列表中的可允许条目的最大数目。
当参考图像列表中的条目的数目不等于参考图像列表中的可允许条目的最大数目时,视频译码器可重复地将来自参考图像子集中的至少一者的一个或一个以上参考图像重新添加到(例如,重新识别)参考图像列表中在第一条目集合之后的条目中,直到参考图像列表中的条目的数目等于参考图像列表中的可允许条目的最大数目为止。视频译码器可然后基于所构造的参考图像列表而译码当前图像。
如上文所描述,在一些实例中,视频编码器20可用信号发出指导视频解码器30修改一个或一个以上初始参考图像列表的语法元素。举例来说,视频解码器30可以上文所描述的方式构造一个或一个以上初始参考图像列表。然后,在一些实例中,视频解码器30可解码来自经译码位流的指导视频解码器30修改一个或一个以上初始参考图像列表的语法元素,以构造一个或一个以上最终参考图像列表。一般来说,在修改中,在初始化参考图像列表之后,视频解码器30可将在所述多个参考图像子集中的一者或一者以上中识别的所述图像中的一者或一者以上映射于参考图像列表中的一者的一条目中。
举例来说,在视频解码器30以上文所描述的方式构造一个或一个以上初始参考图像列表之后,视频解码器30可以通过经译码位流指导的方式修改初始参考图像列表中的一者中的条目中的至少一者。举例来说,视频编码器20可指示应在参考图像列表的一条目中识别来自所述多个参考图像子集中的一者的哪一图像(作为修改语法元素的部分),即使参考图像列表的所述条目可能已经识别一参考图像(作为初始化过程的部分)也如此。在一些实例中,本发明中所描述的参考图像列表修改技术可允许以灵活方式进行修改。举例来说,视频解码器30可能有可能在参考图像列表中的一者或两者中识别不在初始参考图像列表中的参考图像。
如本发明中所使用,短语“已修改参考图像列表”指在修改初始参考图像列表之后的参考图像列表。已修改参考图像列表可为最终参考图像列表。对于列表0,已修改参考图像列表中的条目的数目为num_ref_idx_l0active_minus1+1,且对于列表1,已修改参考图像列表中的条目的数目为num_ref_idx_l1active_minus1+1。一参考图像可在用于列表0和列表1的已修改参考列表中呈现于一个以上索引(例如,条目)处。
对于参考图像列表修改,视频编码器20可用信号发出表6的语法元素。
表6.参考图像列表修改语法
modification_of_ref_pic_idc、short_term_ref_pic_set_idx和long_term_ref_pic_set_idx的语法元素可指定从初始参考图像列表到待用于解码切片的参考图像列表的改变。
等于1的ref_pic_list_modification_flag_l0可指定:存在用于指定参考图像列表0的语法元素modification_of_ref_pic_idc。等于0的ref_pic_list_modification_fiag_l0指定此语法元素不存在。
当ref_pic_list_modification_fiag_l0等于1时,在ref_pic_list_modification_flag_l0之后的modification_of_ref_pic_idc不等于3的次数可能不超过num_ref_idx_l0active_minus1+1。
等于1的ref_pic_list_modification_flag_l1可指定:存在用于指定参考图像列表1的语法modification_of_ref_pic_idc。等于0的ref_pic_list_modification_flag_l1可指定此语法元素不存在。
当ref_pic_list_modification_fiag_l1等于1时,在ref_pic_1ist_modification_flag_l1之后的modification_of_ref_pic_idc不等于3的次数可能不超过num_ref_idx_l1active_minus1+1。
modification_of_ref_pic_idc与short_term_refpic_set_idx或long_term_ref_pic_set_idx一起可指定重新映射参考图像中的哪些者。在表7中指定modification_of_ref_pic_idc的值。紧接在ref_pic_list_modification_flag_l0或ref_pic_list_modification_fiag_l1之后的第一modification_of_ref_pic_idc的值可能不等于3。
ref_pic_set_idx指定移动到参考图像列表中的当前索引的参考图像的到RefPicSetStCurr0、RefPicSetStCurr1或RefPicSetLtCurr的索引。ref_pic_set_idx的值可在0到max_num_ref_frames(包含0和max_num_ref_flames)的范围内。
表7.用于参考图像列表的修改的modification_of_ref_pic_idc操作
对于参考图像列表修改,当ref_pic_list_modification_fiag_l0等于1时,视频解码器30可修改初始参考图像列表0(即,初始列表0),且当ref_pic_list_modification_fiag_l1等于1时,视频解码器30可修改初始参考图像列表1(即,初始列表1)。为了辅助理解参考图像列表修改,假设:变量refIdxL0为到初始列表0中的索引,且变量refIdxL1为到初始列表1中的索引。换句话说,refIdxL0可识别初始列表0的条目(即,到初始列表0中的索引识别初始列表0的条目),且refIdxL1可识别初始列表1的条目。最初可将变量refIdxL0和refIdxL1设置为等于0。
视频解码器30可以语法元素出现在位流中的次序来处理modification_of_ref_pic_idc的语法元素。举例来说,如果视频编码器20用信号发出初始列表0需要参考图像列表修改,那么视频解码器30可处理视频编码器20借以用信号发出modification_of_ref_pic_idc语法元素以用于修改初始列表0的次序。类似地,如果视频编码器20用信号发出初始列表1需要参考图像列表修改,那么视频解码器30可处理视频编码器20借以用信号发出modification_of_ref_pic_idc语法元素以用于修改初始列表1的次序。
modification_of_ref_pic_idc语法元素的值可为0、1、2或3,如表7中所指示。如果modification_of_ref_pic_idc语法元素的值为3,那么视频解码器30可停止初始参考图像列表的修改。否则,视频解码器30可保持修改初始参考图像列表,直到modification_of_ref_pic_idc语法元素的值为3为止。举例来说,视频编码器20可用信号发出用于modification_of_ref_pic_idc语法元素的多个值,且视频解码器30可以所述值存在于经译码位流中的次序处理所述值中的每一者。当视频解码器30处理为3的modification_of_ref_pic_idc语法元素的值时,视频解码器30可确定不需要进一步修改。
稍微不同于3的modification_of_ref_pic_idc语法元素的值(即,0、1或2)可指示视频解码器30将从哪一参考图像子集中识别待列入于(例如,添加到)参考图像列表的当前条目中的一参考图像。如上文所描述,参考图像列表的当前条目可通过refIdxLX的值来识别,其中LX为列表0或列表1。举例来说,如果视频解码器30正修改初始列表0,且modification_of_ref_pic_idc为0,那么根据表7,视频解码器30可基于ref_pic_set_idx的值而确定将在参考图像列表的当前条目中识别来自RefPicSetStCurr0的哪一参考图像。如果视频解码器30正修改初始列表1,且modification_of_ref_pic_idc为0,那么根据表7,视频解码器30可基于ref_pic_set_idx的值而确定将在参考图像列表的当前条目中识别来自RefPicSetStCurr1的哪一参考图像。举例来说,变量curRefPicSet可定义视频解码器30应使用哪一参考图像子集来修改初始列表0或初始列表1。
举例来说,如果modification_of_ref_pic_idc等于0,且视频解码器30正修改初始列表0,那么curRefPicSet等于RefPicSetStCurr0参考图像子集。如果modification_of_ref_pic_idx等于0,且视频解码器30正修改初始列表1,那么curRefPicSet等于RefPicSetStCurr1参考图像子集。
如果视频解码器30正修改初始列表0,且modification_of_ref_pic_idc为1,那么根据表7,视频解码器30可基于ref_pic_set_idx的值而确定将在参考图像列表的当前条目中识别来自RefPicSetStCurr1的哪一参考图像。如果视频解码器30正修改初始列表1,且modification_of_ref_pic_idc为1,那么根据表7,视频解码器30可基于ref_pic_set_idx的值而确定将在参考图像列表的当前条目中识别来自RefPicSetStCurr0的哪一参考图像。
在此情况下,如果modification_of_ref_pic_idc等于1,且视频解码器30正修改初始列表0,那么curRefPicSet等于RefPicSetStCurr1参考图像子集。如果modification_of_ref_pic_idx等于1,且视频解码器30正修改初始列表1,那么curRefPicSet等于RefPicSetStCurr0参考图像子集。
如果视频解码器30正修改初始列表0或初始列表1,且modification_of_ref_pic_idc为2,那么根据表7,视频解码器30可基于ref_pic_set_idx的值而确定将在参考图像列表的当前条目中识别来自RefPicSetLtCurr的哪一参考图像。在此实例中,如果modification_of_ref_pic_idc等于2,且视频解码器30正修改初始列表0或初始列表1,那么curRefPicSet等于RefPicSetLtCurr参考图像子集。
如上文所描述,ref_pic_set_idx语法元素可指示到所述多个参考图像子集中的一者中的索引。换句话说,ref_pic_set_idx语法元素可向视频解码器30指示来自所述多个参考图像子集中的一者的条目。视频解码器30可确定:在所述多个参考图像子集中的一者的条目中识别的参考图像为待于初始列表0或初始列表1的当前索引中识别的参考图像。
变量curRefPicPoc可等于PicOrderCnt(curRefPicSet[ref_pic_set_idx])。以此方式,curRefPicPoc的值可为在curRefPicSet的ref_pic_set_idx条目中识别的参考图像的POC值。如上文所描述,基于modification_of_ref_pic_idc语法元素的值及基于视频解码器30是正修改初始列表0还是正修改初始列表1,curRefPicSet可等于RefPicSetStCurr0、RefPicSetStCurr1或RefPicSetLtCurr。
视频解码器30可实施以下伪码以用于参考图像列表修改。举例来说,在以下伪码中,视频解码器30可在初始参考图像列表的条目中识别具有等于curRefPicPoc的POC值的图像。变量refIdxLX指示用于初始参考图像列表中的条目的索引位置。举例来说,当视频解码器30正修改初始列表0时,refIdxLX可为refIdxL0,且当视频解码器30正修改初始列表1时,refIdxLX可为refIdxL1。
在视频解码器30在初始参考图像列表(即,初始列表0或初始列表1)中识别具有等于curRefPicPOC的POC值的参考图像之后,视频解码器30可将其它剩余图像的位置移位到列表中的稍后位置。举例来说,视频解码器30可将在初始参考图像列表中在当前条目之后的条目中识别的参考图像移动到下一条目,以构造修改的参考图像列表。作为说明性实例,假设:初始参考图像列表中的当前条目为具有index[2]的第三条目。视频解码器30可将当前在具有index[2]的第三条目中识别的参考图像移动到下一条目(例如,具有index[3]的第四条目)中。视频解码器30可将当前在具有index[3]的第四条目中识别的参考图像移动到具有index[4]的第五条目。在一些实例中,视频解码器30可从初始参考图像列表中的最后条目开始,且将在所述条目中识别的参考图像移动到临时的新条目。然后将在倒数第二条目中识别的参考图像移动到最后条目,等等,直到视频解码器30到达当前条目为止。
视频解码器30可然后递增变量refIdxLX的值。在此伪码中,使RefPicListX(即,RefPicListO或RefPicList1)的长度在时间上比最终参考图像列表所需的长度长一个元素。举例来说,如上文所描述,视频解码器30可从初始参考图像列表中的最后条目开始,将所述最后条目移动到临时条目,将导数第二条目移动到最后条目,等等,以修改初始参考图像列表。在执行伪码之后,视频解码器30可仅保留索引0到num_ref_idx_lX_active_minus1中的条目,其中对于列表0,num_ref_idx_lX_active_minus1为num_ref_idx_l0active_minus1,且对于列表1,num_ref_idx_lX_active_minus1为num_ref_idx_l1_active_minus1。
在上述伪码中,基于视频解码器30是正修改初始列表0还是正修改初始列表1,RefPicListX指RefPicList0(即,最终列表0)或RefPicList1(即,最终列表1)。基于视频解码器30是正修改初始列表0还是正修改初始列表1,num_ref_idx_lX_active_minus1指num_ref_idx_l0active_minus1或ref_idx_l1active_minus1。
上述技术描述视频解码器30可借以修改初始参考图像列表的实例方式。在编码过程期间,视频编码器20还可能需要解码经编码图像以用于编码后续图像的目的。因此,在一些实例中,视频编码器20还可经配置以构造初始参考图像列表,且以上文所描述的方式修改初始参考图像列表。然而,视频编码器20可能不需要在每个实例中修改一个或一个以上初始参考图像列表。在一些实例中,视频解码器30可为利用上文所描述的技术修改初始参考图像列表的仅有的译码器。
因此,在一些实例中,视频译码器(例如,视频编码器20或视频解码器30)可利用上文所描述的技术构造初始参考图像列表(例如,初始列表0或初始列表1)。视频译码器可基于经译码位流中的经译码语法元素而确定是否需要参考图像列表修改。当需要参考图像列表修改时,视频译码器可修改初始参考图像列表。
举例来说,当需要参考图像列表修改时,视频译码器可识别所构造的参考图像子集中的至少一者中的参考图像。视频译码器可在初始参考图像列表的当前条目中列出(例如,添加)所识别的参考图像子集以构造修改的参考图像列表。视频译码器可然后基于所修改的参考图像列表而译码(例如,编码或解码)当前图像。
作为一个实例,视频译码器可构造RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集。为了识别这些参考图像子集中的至少一者中的参考图像,视频译码器可确定到这些参考图像子集中的至少一者中的索引。视频译码器可然后基于所确定的索引而确定在这些参考图像子集中的至少一者的条目处识别的参考图像。
举例来说,视频译码器可译码(例如,编码或解码)第一语法元素(例如,modification_of_ref_pic_idc语法元素),视频译码器可通过所述第一语法元素识别参考图像子集中的一者(例如,RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集中的一者)。视频译码器可译码第二语法元素(例如,ref_pic_set_idx语法元素),所述第二语法元素指示到所识别的参考图像子集(例如,RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集中的一者)中的索引。
在一些实例中,视频译码器可经进一步配置以移动初始参考图像列表中的参考图像。举例来说,视频译码器可在修改的参考图像列表中将在初始参考图像列表中在当前条目之后的条目中识别的参考图像移动到下一条目。
先前实例描述视频编码器20和视频解码器30可借以导出参考图像集的方式,以及在不需要修改时及在需要修改时用于构造参考图像列表的实例技术。然而,本发明中所描述的技术不应受此限制。在一些实例中,本发明中所描述的技术可针对已解码图像缓冲器(DPB)管理。DPB可为存储已解码图像的缓冲器。
视频编码器20和视频解码器30中的每一者可包含相应DPB。举例来说,作为编码过程的部分,视频编码器20可解码当前图像,将已解码图像存储在视频编码器20的DPB中,且利用存储在DPB中的已解码图像对后续图像进行帧间预测。类似地,作为解码过程的部分,视频解码器30可解码当前图像且将已解码图像存储在视频解码器30的DPB中。视频解码器30可然后利用已解码图像对后续图像进行帧间预测。
在一些实例中,用于视频编码器20或视频解码器30的DPB可存储已解码图像以用于输出重新排序或输出延迟。举例来说,视频解码器30可确定:应将已解码图像重新排序以用于输出,或应使已解码图像的输出延迟。在这些实例中,视频解码器30的DPB可存储已解码图像以用于输出重新排序或输出延迟。
本发明中所描述的DPB管理技术可关于DPB借以输出及去除已解码图像的方式。
output_flag语法元素可影响已解码图像输出及去除过程,且可经定义为网络抽象层(NAL)单元语义的部分。NAL单元可经定义为一种语法结构,其包含关于待遵循的数据类型的指示及字节,所述字节包含呈必要时穿插有防止竞争字节的原始字节序列有效载荷(RBSP)形式的所述数据。RBSP可为一种语法结构,其包含包封于一NAL单元中的整数数目个字节。RBSP可为空或具有数据位串的形式,所述数据位包含后接续有RBSP停止位且后接续有等于零的零或多个后续位的语法元素。表8定义NAL单元语法。
表8.NAL单元语法
nal_unit(NumBytesInNALunit){ |
描述符 |
forbidden_zero_bit |
f(1) |
nal_ref_idc |
u(2) |
nal_unit_type |
u(5) |
NumBytesInRBSP=0 |
|
nalUnitHeaderBytes=] |
|
if(nal_unittype==1||nal_unittype==4||nal_unittype==5){ |
|
temporal_id |
u(3) |
output_flag |
u(1) |
reserved_one_4bits |
u(4) |
nalUnitHeaderBytes+=1 |
|
} |
|
for(i=nalUnitHeaderBytes;i<NumBytesInNALunit;i++){ |
|
if(i+2<NumBytesInNALunit&&next bits(24)==0x000003){ |
|
rbsp_byte[NumBytesInRBSP++] |
b(8) |
rbsp_byte[NumBytesInRBSP++] |
b(8) |
i4-=2 |
|
emulation_prevention_three_byte/*等于0x03*/ |
f(8) |
}else |
|
rbsp_byte[NumBytesInRBSP++] |
b(8) |
} |
|
} |
|
在表8中,output_flag可影响已解码图像输出及去除过程,如下文更详细描述。对于任何图像,如果output_flag等于1,那么图像希望用于输出。否则,决不输出图像。在本发明中所描述的技术中,变量OutputFlag等于output_flag语法元素。
在一些实例中,当前存取单元的经译码图像的任何经译码切片NAL单元可能按以下方式中的一者或一者以上不同于先前存取单元的经译码图像的任何经译码切片NAL单元。举例来说,pic_parameter_set_id值可能不同,nal_ref_idc值可能不同,其中nal_ref_idc值中的一者等于0。pic_order_cnt_lsb值可能不同。IdrPicFlag值可能不同。IdrPicFlag可等于1(对于两种情形),且idr_pic_id值可能不同。
在本发明中所描述的技术中,存取单元可经定义为在解码次序上连续且含有一个经译码图像的NAL单元的集合。除经译码图像之外,一个辅助经译码图像或其它NAL单元还可能不含有经译码图像的切片。在一些实例中,存取单元的解码可产生已解码图像。经译码图像可为待供解码过程使用的图像的经译码表示。
如表4中所指示,切片标头语法可包含pic_parameter_set_id语法元素、pic_order_cnt_lsb语法元素、IdrPicFlag语法元素,和idr_pic_id语法元素。如表8中所指示,NAL单元语法可包含nal_ref_idc语法元素。
为了说明的目的,从假想参考解码器(HRD)的观点描述DPB管理技术。HRD可经定义为一种假想解码器模型,其指定对符合NAL单元流或符合编码过程可产生的字节流的可变性的约束。然而,根据本发明中所描述的技术,视频解码器30可实施DPB管理技术,且在一些实例中,视频编码器20可能有可能还实施DPB管理技术。
HDR模型可定义经译码图像缓冲器(CPB)、瞬时解码过程,和已解码图像缓冲器(DPB)。CPB可类似于在其它先前标准中定义的HDR模型的CPB(即,CPB可存储经译码图像)。本发明中所描述的技术涉及不同于其它标准中的操作的DPB操作。此外,应理解,视频解码器30及可能的视频编码器20可实施DPB操作,如下文所描述。
一般来说,本发明中所描述的技术涉及DPB中的已解码图像的输出及去除。在此上下文中,已解码图像的输出意味着输出解码图像以用于显示、存储或其它目的。然而,未必需要将输出的已解码图像从DPB中去除。举例来说,视频解码器30可能不将输出的已解码图像从DPB中去除,这是因为视频解码器30可能需要利用所述已解码图像作为用于对后续图像进行帧间预测的参考图像。在此上下文中,已解码图像的去除意味着将已解码图像从DPB中去除。
举例来说,视频解码器30可以图像经解码的次序将已解码图像存储在视频解码器30的DPB中。然而,图像的解码次序可能与图像的输出次序不相同。举例来说,可能存在在解码次序上在当前图像之后的将比当前图像早输出的图像。因此,在一些实例中,视频解码器30可执行重新排序,视频解码器30通过重新排序将DPB中的在解码次序上排序的图像重新排序成输出次序。视频解码器30可然后以已解码图像的输出次序输出已解码图像。如果图像不需要输出(即,图像已输出或图像并不希望用于输出)且不需要进行帧间预测(即,不需要用作用于进行帧间预测的参考图像),那么视频解码器30还可将图像从已解码图像中去除。
在本发明中所描述的技术中,如果已解码图像已输出或已解码图像并不希望用于输出,且如果已解码图像在所导出的参考图像集中未加以识别(所述情形等效于不再需要用于帧间预测参考(即,已解码图像不再需要用作用于进行帧间预测的参考图像)),那么视频解码器30可将已解码图像从DPB中去除。此外,如上文所描述,参考图像集可识别可潜在地用于对当前图像进行帧间预测且可潜在地用于对在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测的参考图像。根据本发明中所描述的技术,如果已解码图像在所导出的参考图像集中未加以识别,那么所述已解码图像可能不需要作为用于对当前图像及在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测(例如,解码)的参考图像。因此,如果已解码图像不需要输出,那么可将此已解码图像从DPB中去除,这是因为在给定已解码图像将不用于进行帧间预测的情况下可能不需要将此已解码图像保持在DPB中。
此外,在本发明中所描述的技术中,视频解码器30可在解码当前图像之前去除已解码图像。举例来说,如上文所描述,在解码当前图像之前,视频解码器30可导出参考图像集,且构造(多个)参考图像列表。因为视频解码器30可在解码当前图像之前导出参考图像集,所以视频解码器30可经配置以确定是否应在解码当前图像之前去除不需要输出的已解码图像。举例来说,在导出参考图像集之后且在解码当前图像之前,视频解码器30可确定输出的已解码图像或并不希望用于输出的已解码图像是否在参考图像集中未加以识别。然后,如果已解码图像在参考图像集中未加以识别,那么在解码当前图像之前,视频解码器30可去除不需要输出(即,已经输出或并不希望用于输出)的已解码图像。
在一些实例中,视频解码器30可在解码当前图像之前去除已解码图像。然而,视频解码器30可在构造(多个)参考图像列表之后去除已解码图像。举例来说,视频解码器30可导出参考图像集,且可基于参考图像集而构造参考图像列表。然后,在解码当前图像之前,视频解码器30可去除已解码图像。在一些实例中,视频解码器30还可在构造(多个)参考图像列表之后输出已解码图像。
本发明从至少两种观点描述DPB中的已解码图像的去除技术。在第一种观点中,如果图像希望用于输出,那么视频解码器30可基于输出时间而去除已解码图像。在第二种观点中,如果图像希望用于输出,那么视频解码器30可基于POC值而去除已解码图像。在任一种观点中,当已解码图像不在参考图像集中时,且在解码当前图像之前,视频解码器30可去除不需要输出(即,已经输出或并不希望用于输出)的已解码图像。
DPB可包含多个缓冲器,且每一缓冲器可存储待用作参考图像或经保持以用于未来输出的一已解码图像。最初,DPB为空的(即,将DPB充满度设置为零)。在所描述的实例技术中,将已解码图像从DPB中去除可发生在解码当前图像之前,但在视频解码器30分析当前图像的第一切片的切片标头之后。
在第一种观点中,以下技术可按以下序列瞬时在时间tr(n)发生。在此实例中,tr(n)为含有当前图像的存取单元n的CPB去除时间(即,解码时间)。如本发明中所描述,所述技术瞬时发生可意味着:在HDR模型中,假设:图像的解码为瞬时的(即,无限快速),具有等于零的用于解码图像的时间周期。
如果当前图像为IDR图像,且当IDR图像并不是第一IDR图像且从有效序列参数集导出的pic_width_in_luma_samples或pic_height_in_luma_samples或max_dec_flame_buffering的值分别不同于从前一图像的有效序列参数集导出的pic_width_in_luma_samples或pic_height_in_luma_samples或max_dec_frame_buffering的值时,视频解码器30可推断:no_output_of_prior_pics_flag语法元素等于1,而不管no_output_of_prior_pics_flag的实际值。如果当前图像为IDR图像,且当no_output_of_prior_pics_flag等于1或经推断为等于1时,视频解码器30可将DPB的所有缓冲器清空而不输出DPB中的图像,且可将DPB充满度设置为0。
如上文表1中所指示,序列参数集可包含pic_width_in_luma_samples和pic_height_in_luma_samples语法元素。序列参数集还可包含max_dec_flame_buffering语法元素。如上文表4中所指示,切片标头语法可包含no_output_of_prior_pics_flag语法元素。
在当前图像并不是IDR图像时,视频解码器30可去除DPB中对于以下条件成立的所有图像(m)。第一条件可为:图像不包含在当前图像的参考图像集中。第二条件可为:图像具有等于0的OutputFlag或图像的DPB输出时间小于或等于当前图像的CPB去除时间。在此实例中,CPB去除时间为tr(n),其为去除过程发生时的实例(例如,在解码当前图像之前的时间)。已解码图像m的DPB输出时间可通过变量to,dpb(m)来定义。因此,可将小于或等于CPB去除时间的DPB输出时间表示为to,dpb(m)<tr(n)。下文更详细定义DPB输出时间(to,dpb)的导出。
以此方式,基于已解码图像的输出时间且在已解码图像在参考图像集中未加以识别时,视频解码器30可在解码图像之前将已解码图像从DPB中去除。当视频解码器30将已解码图像从DPB中去除时,视频解码器30可将DPB充满度递减一。
下文描述视频解码器30可借以确定输出已解码图像的时间(例如,已解码图像的DPB输出时间)的方式,且还描述视频解码器30何时可将已解码图像存储在DPB中。如上文所描述,图像的DPB输出时间可为确定是否将所述图像从DPB中去除的因数。
当视频解码器30解码图像时,视频解码器30将图像存储在DPB中,且将DPB充满度递增一。当图像具有等于1的OutputFlag时,视频解码器30可基于以下等式而导出用于图像的DPB输出时间。
to,dpb(n)=tr(n)+tc *dpb_output_delay(n)
在等式中,dpb_output_delay(n)可指定于与包含图像的存取单元相关联的图像时序SEI消息中。SEI消息可定义于例如H.264/AVC标准等一些标准中。
to,dpb(n)值可定义何时输出图像。举例来说,如果OutputFlag等于1且to,dpb(n)等于tr(n),那么视频解码器30可输出图像。否则,如果OutputFlag等于0,那么视频解码器30可能不输出图像。在OutputFlag等于1且to,dpb(n)大于tr(n)的实例中,视频解码器30可在稍后时间(例如,在时间to,dpb(n))输出图像。
在一些实例中,当视频解码器30输出图像时,视频解码器30可剪辑图像。举例来说,视频解码器30可利用用于图像的有效序列参数集中指定的剪辑矩形。用于剪辑图像的技术一般地良好地建立及描述于例如H.264/AVC标准等标准中。
在一些实例中,视频解码器30可确定图像的DPB输出时间与在输出次序上在所述图像之后的图像的DPB输出时间之间的差值。举例来说,当图像(n)为视频解码器30输出的图像且并不是输出的位流的最后图像时,视频解码器30可确定将Δto,dpb(n)的值定义为:
Δto,dpb(n)=to,dpb(nn)-to,dpb(n)
在上述等式中,nn指示在输出次序上在图像(n)之后且具有等于1的OutputFlag的图像。而且,在上述等式中,Δto,dpb(n)表示图像与输出次序上的随后图像之间的DPB输出时间差。
在用于去除已解码图像的第二种观点中,HDR可在将存取单元从CPB中去除时瞬时地实施所述技术。此外,视频解码器30可实施将已解码图像从DPB中去除,且视频解码器30可能未必包含CPB。一般来说,在本发明中,已解码图像的去除是由视频解码器30来执行,且还可由视频编码器20来执行。在这些实例中,视频解码器30和视频编码器20可能不需要CPB。而是,仅用于说明的目的作为HDR模型的部分来描述CPB。
如上文,在用于去除已解码图像的第二种观点中,视频解码器30可在解码当前图像之前但在分析当前图像的第一切片的切片标头之后,将图像从DPB中去除。而且,类似于用于去除已解码图像的第一种观点,在第二种观点中,视频解码器30可执行与上文在当前图像为IDR图像时关于第一种观点所描述的功能类似的功能。
否则,如果当前图像并不是IDR图像,那么视频解码器30可将DPB的缓冲器清空而不输出,所述缓冲器存储标记为“不需要输出”的图像且存储不包含在当前图像的参考图像集中的图像。视频解码器30还可将DPB充满度递减视频解码器30清空的缓冲器的数目。当不存在空缓冲器时(即,DPB充满度等于DPB大小),视频解码器30可实施下文所描述的“冲撞”过程。在一些实例中,当不存在空缓冲器时,视频解码器30可重复地实施冲撞过程,直到存在视频解码器30可存储当前已解码图像的空缓冲器为止。
在当前图像为no_output_of_prior_pics_flag不等于1且未被推断为等于1的IDR图像时,视频解码器30可执行以下操作。视频解码器30可将DPB的缓冲器清空而不输出,所述缓冲器存储标记为“不需要输出”且不包含在当前图像的参考图像集中的图像。视频解码器30可通过重复地调用“冲撞”过程而将DPB中的所有非空缓冲器清空,且可将DPB充满度设置为0。
换句话说,在当前图像为IDR图像时,视频解码器30可实施技术以将DPB中的所有缓冲器清空。在当前图像并不是IDR图像时,视频解码器30可实施技术以将已解码图像去除到自由缓冲器以用于存储当前已解码图像。
举例来说,在视频解码器30解码当前图像之后,视频解码器30可将当前图像存储在DPB中,且将DPB充满度递增一。在一些实例中,如果当前图像的OutputFlag等于1,那么视频解码器30可将当前图像标记为“需要输出”。否则,如果当前图像的OutputFlag等于0,那么视频解码器30可将当前图像标记为“不需要输出”。
如上文所描述,在一些实例中,视频解码器30可实施冲撞过程。一般来说,冲撞过程涉及输出已解码图像。举例来说,在当前图像为IDR图像且no_output_of_prior_pics_flag不等于1且未经推断为等于1时,视频解码器30可实施冲撞过程。如果DPB中不存在空缓冲器(即,DPB充满度等于DPB的大小),且需要空缓冲器以用于存储已解码(非IDR)图像,那么视频解码器30也可实施冲撞过程。
一般来说,视频解码器30可实施以下步骤以实施冲撞过程。视频解码器30可首先确定待输出的图像。举例来说,视频解码器30可选择DPB中标记为“需要输出”的所有图像中具有较小PicOrderCnt(POC)值的图像。视频解码器30可使用用于图像的有效序列参数集中指定的剪辑矩形剪辑所选定图像。视频解码器30可输出经剪辑的图像,且可将图像标记为“不需要输出”。视频解码器30可检查存储经剪辑及输出的图像的DPB的缓冲器。如果图像不包含在参考图像集中,那么视频解码器30可将所述缓冲器清空且可将DPB充满度递减一。
尽管根据视频解码器30的上下文描述用于DPB管理的上述技术,但在一些实例中,视频编码器20可实施类似技术。然而,不需要在每个实例中视频编码器20实施类似技术。在一些实例中,视频解码器30可实施这些技术,且视频编码器20可能不实施这些技术。
以此方式,视频译码器(例如,视频编码器20或视频解码器30)可译码指示属于参考图像集的参考图像的信息。此外,参考图像集可识别可潜在地用于对当前图像进行帧间预测且可潜在地用于对在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测的参考图像。
视频译码器可以任何方式导出参考图像集,包含上文所描述的实例技术。视频译码器可确定存储在已解码图像缓冲器中的已解码图像是否不需要输出及是否在参考图像集中未加以识别。当已解码图像已经输出且在参考图像集中未加以识别时,视频译码器可将已解码图像从已解码图像缓冲器中去除。在去除已解码图像之后,视频译码器可译码当前图像。举例来说,视频译码器可如上文所描述构造(多个)参考图像列表,且基于(多个)参考图像列表而译码当前图像。
先前实例描述视频编码器20和视频解码器30可用于进行以下操作的技术:导出参考图像集,在不需要修改时及在需要修改时,从参考图像集构造参考图像列表,以及用于已解码图像缓冲器(DPB)管理的技术。然而,本发明的方面不应受此限制。在一些实例中,本发明中所描述的技术可涉及视频编码器20借以用信号发出哪些图像属于参考图像集且为长期参考图像(或换句话说,哪些图像属于长期参考图像集)的方式,及视频解码器30借以确定哪些图像属于长期参考图像集的方式。
举例来说,表2包含num_long_term_ref_pics_pp s和long_term_ref_pic_id_pps[i]语法元素,作为图像参数集的部分。然而,本发明的方面不应受此限制。在一些其它实例中,序列参数集(例如,表1)可包含num_long_term_ref_pics_pps和long_term_ref_pic_id_pps[i]语法元素。在序列参数集包含这些语法元素的实例中,本发明可提及如num_long_term_ref_pics_sps和long_term_ref_pic_id_sps[i]的语法元素以避免混淆。为了说明的目的,通过序列参数集包含这些语法元素的实例描述所述技术。
类似于num_long_term_ref_pics_pp s的定义,num_long_term_ref_pics_sp s语法元素可指定包含在序列参数集中的候选长期参考图像的数目。num_long_term_ref_pics_sps的值可在0到32(包含0和32)的范围内。类似于long_term_ref_pic_id_pps[i]语法元素的定义,long_term_ref_pic_id_sps[i]语法元素可指定包含在序列参数集中的第i长期参考图像识别信息。
在一些实例中,long_term_ref_pic_id_sps[i]语法元素可指示属于当前图像的参考图像集的候选长期参考图像。候选长期参考图像为可能为视频解码器30可用以对当前图像或在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测的长期参考图像的候选长期参考图像中的一者或一者以上。换句话说,候选长期参考图像可指示满足以下情形的图像:为长期参考图像,且可能有可能用以对当前图像进行帧间预测且用以对在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测。在一些实例中,long_term_ref_pic_id_sps[i]语法元素可包含用于候选长期参考图像的POC值。
然而,未必所有候选长期参考图像用于进行帧间预测。举例来说,并不是所有候选长期参考图像属于当前图像的参考图像集。而是,所述候选长期参考图像中的零者或多者属于参考图像集。
在本发明中所描述的技术中,视频编码器20可用信号发出参数集中的long_term_ref_pic_id语法元素(例如,序列参数集中的long_term_ref_pic_id_sps语法元素,或图像参数集中的long_term_ref_pic_id_pps语法元素)。视频解码器30可接收long_term_ref_pic_id语法元素且识别候选长期参考图像。根据本发明中所描述的技术,视频解码器30可进一步确定候选长期参考图像中的哪些者属于参考图像集。举例来说,视频解码器30可经配置以基于由视频编码器20在经译码位流中用信号发出的额外语法元素而执行此确定。
如表4中所指示,视频编码器20可在当前图像的切片标头中用信号发出long_term_ref_pic_set()语法结构。表5描述long_term_ref_pic_set()语法结构。举例来说,long_term_ref_pic_set()语法结构可包含num_long_term_pps_curr和num_long_term_pps_foll语法元素。此外,应注意,尽管num_long_term_pps_curr和num_long_term_pps_foll语法元素经定义为包含在图像参数集中的长期参考图像的数目,但在候选长期参考图像包含在序列参数集中的实例中,这些语法元素可定义包含在序列参数集中的候选长期参考图像的数目。举例来说,为了避免混淆,num_long_term_pps_curr语法元素可被称作num_long_term_sps_curr语法元素,且num_long_term_pps_foll语法元素可被称作num_long_term_sps_curr语法元素。
类似于num_long_term_pps_curr语法元素,num_long_term_sps_curr语法元素可定义满足以下情形的所有长期参考图像的数目:识别信息包含在所参考的序列参数集中,作为候选长期参考图像,且可用于对当前图像及在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测。类似于num_long_term_pps_foll语法元素,num_long_term_sps_foll语法元素可定义满足以下情形的所有长期参考图像的数目:识别信息包含在序列参数集中,作为候选长期参考图像,且不用于对当前图像进行帧间预测,且可用于对在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测。
而且,在切片标头中用信号发出的long_term_ref_pic_set()语法结构可包含long_term_ref_pic_set_idx_pps[i]语法元素。此外,在于序列参数集中用信号发出候选长期参考图像的实例中,long_term_ref_pic_set_idx_pps[i]语法元素可被视为long_term_ref_pic_set_idx_sps[i]语法元素。类似于long_term_ref_pic_set_idx_pps[i]语法元素,long_term_ref_pic_set_idx_sps[i]语法元素可定义从参考图像参数集到当前图像的参考图像集而继承的第i长期参考图像的到包含在所参考的序列参数集中的候选长期参考图像识别信息的列表的索引。换句话说,long_term_ref_pic_set_idx_sps[i]语法元素可识别到序列参数集中的候选长期参考图像的列表中的索引。根据索引,视频解码器30可识别候选长期参考图像中的长期参考图像,且可确定所识别的长期参考图像属于当前图像的参考图像集。
举例来说,视频解码器30可实施类似于表5中的伪码的以下伪码,以确定候选长期参考图像中的哪些者属于当前图像的参考图像集。
for(i=0;i<num_long_term_sps_curr+num_long_term_sps_foll;i++)
long_term_ref_pic_set_idx_sps[i]
以此方式,视频解码器30可解码指示在参数集中识别的候选长期参考图像的语法元素。举例来说,如果参数集为序列参数集,那么视频解码器30可解码指示在序列参数集中识别的候选长期参考图像的long_term_ref_pic_id_sps[i]语法元素。如果参数集为图像参数集,那么视频解码器30可解码指示在图像参数集中识别的候选长期参考图像的long_term_ref_pic_id_pps[i]语法元素。
视频解码器30还可解码指示在参数集中识别的哪些候选长期参考图像属于当前图像的参考图像集的语法元素。举例来说,如果参数集为序列参数集,那么视频解码器30司解码num_long_term_sps_curr、num_long_term_sps_foll和long_term_ref_pic_set_idx_sps[i]语法元素,且如果参数集为图像参数集,那么视频解码器30可解码num_long_term_pps_curr、num_long_term_pps_fbll和long_term_ref_pic_set_idx_pps[i]语法元素。在任一实例中,视频解码器30可解码来自当前图像的切片标头的这些语法元素。
根据本发明中所描述的技术,long_term_ref_pic_id_sps[i]和long_term_ref_pic_id_pps[i]语法元素可被视为属于参考图像集的候选长期参考图像的图像序列号(POC)值列表,且可作为参数集(例如,图像参数集和序列参数集)的部分而加以译码(即,编码或解码)。long_term_ref_pic_set_idx_sps[i]或long_term_ref_pic_set_idx_pps[i]语法元素可被视为提供到候选长期参考图像的POC值列表中的索引值(例如,到long_term_ref_pic_id_sps[i]或long_term_ref_pic_id_pps[i]中的索引)。在一些实例中,可作为当前图像的切片标头的部分译码long_term_ref_pic_set_idx_sps[i]或long_term_ref_pic_set_idx_pps[i]语法元素。
上文描述视频编码器20和视频解码器30可分别借以编码或解码用于指示哪些图像属于当前图像的长期参考图像集的语法元素的一种方式。根据语法元素,视频解码器30和视频编码器20可确定哪些图像属于当前图像的长期参考图像集。在视频解码器30和视频编码器20确定哪些图像属于长期参考图像集之后,视频编码器20和视频解码器30可构造多个参考图像子集中的至少一个参考图像子集,且以上文所描述的方式导出参考图像集。举例来说,基于关于哪些图像属于长期参考图像集的确定,视频编码器20和视频解码器30可构造视频编码器20和视频解码器30用以导出参考图像集的RefpicSetLtCurr参考图像子集。
在一些实例中,可能存在不包含在候选长期参考图像中的属于长期参考图像集的图像。因此,可能存在视频编码器20和视频解码器30可借以确定哪些图像属于当前图像的长期参考图像集的额外方式。
举例来说,如表5中所指示,切片标头的long_term_ref_pic_set()语法结构包含long_term_ref_pic_id_delta_add[i]语法元素。此语法元素可指定并不是从参考图像参数集而继承但包含在当前图像的参考图像集中的第i长期参考图像的长期参考图像识别(例如,POC值)。此外,在于序列参数集中识别候选长期参考图像的实例中,long_term_ref_pic_id_delta_add[i]语法元素可指定并不是从序列参数集而继承但包含在当前图像的参考图像集中的第i长期参考图像的长期参考图像识别。
换句话说,long_term_ref_pic_id_pp s[i]或long_term_ref_pic_id_sp s[i]语法元素可识别候选长期参考图像,但可能未必识别当前图像的参考图像集中的所有长期参考图像。举例来说,可能存在满足以下情形的长期参考图像:待用于对当前图像及在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测,不包含在候选长期参考图像的列表中。对于这些长期参考图像,视频编码器20和视频解码器30可分别编码或解码识别属于当前图像的参考图像集的长期参考图像的识别信息。
举例来说,如表5中所指示,视频编码器20和视频解码器30可分别编码或解码num_long_term_add_curr和num_long_term_add_foll语法元素。num_long_term_add_curr语法元素可定义满足以下情形的所有长期参考图像的数目:识别信息不包含在所参考的图像参数集或序列参数集(在可适用时)中,且可用于对当前图像及在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测。num_long_term_add_foll语法元素可定义满足以下情形的所有长期参考图像的数目:识别信息不包含在所参考的图像参数集或序列参数集(在可适用时)中,无法用于对当前图像进行帧间预测,且可用于对在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测。
视频解码器30可实施以下伪码以确定哪些长期参考图像属于参考图像集。在此实例中,长期参考图像可能不包含在候选长期参考图像中。
for(i=0;i<num_long_term_add_curr+num_long_term_add_foll;i++)
long_term_ref_pic_id_delta_add[i]
如上文所描述,本发明中所描述的技术可根据HEVC标准来执行。下文为辅助理解的关于HEVC标准的简要描述。此外,尽管在HEVC标准的上下文中描述技术,但所述技术可扩展到其它标准(包含专有标准)。
JCT-VC致力于HEVC标准的开发。HEVC标准化努力是基于视频译码装置的演进模型,其被称作HEVC测试模型(HM)。HM假设视频译码装置相对于根据(例如)ITU-TH.264/AVC的现有装置的若干额外能力。举例来说,H.264提供九个帧内预测编码模式,而HM可提供多达三十三个帧内预测编码模式。
一般来说,HM的工作模型描述视频帧或图像可划分成包含明度样本与色度样本两者的树块或最大译码单元(LCU)序列。树块具有与H.264标准的宏块的目的类似的目的。切片包含解码次序上连续的若干树块。可将视频帧或图像分割成一个或一个以上切片。每一树块可根据四叉树而分裂成多个译码单元(CU)。举例来说,树块(作为四叉树的根节点)可分裂成四个子节点,且每一子节点又可为一父节点且分裂成另外四个子节点。最终的未分裂的子节点(作为四叉树的叶节点)包括一译码节点(即,经译码视频块)。与经译码位流相关联的语法数据可定义树块可分裂的最大次数,且还可定义译码节点的最小大小。在一些实例中,树块可被称作LCU。
CU包含一译码节点及与所述译码节点相关联的多个预测单元(PU)和变换单元(TU)。CU的大小对应于译码节点的大小,且形状必须为正方形。CU的大小的范围可从8×8像素直到具有最大64×64像素或大于64×64像素的树块的大小。每一CU可含有一个或一个以上PU和一个或一个以上TU。与CU相关联的语法数据可描述(例如)CU到一个或一个以上PU的分割。分割模式可取决于是跳过CU还是直接模式编码、帧内预测模式编码还是帧间预测模式编码CU而不同。PU的形状可分割成非正方形。与CU相关联的语法数据还可描述(例如)CU根据四叉树到一个或一个以上TU的分割。TU的形状可为正方形或非正方形。
HEVC标准允许根据TU进行的变换,所述变换对于不同CU可不同。通常基于针对经分割LCU所定义的给定CU内的PU的大小而设置TU大小,但可能并不是始终如此情况。TU通常具有与PU相同的大小,或小于PU。在一些实例中,可使用被称为“残余四叉树”(RQT)的四叉树结构将对应于CU的残余样本再分为更小单元。RQT的叶节点可被称作变换单元(TU)。可变换与TU相关联的像素差值以产生可经量化的变换系数。
一般来说,PU包含与预测过程有关的数据。举例来说,当以帧内模式编码PU时,所述PU可包含描述所述PU的帧内预测模式的数据。作为另一实例,当以帧间模式编码PU时,所述PU可包含定义所述PU的运动向量的数据。定义PU的运动向量的数据可描述(例如)运动向量的水平分量、运动向量的垂直分量、运动向量的分辨率(例如,四分之一像素精度或八分之一像素精度)、运动向量所指向的参考图像,和/或用于运动向量的参考图像列表(例如,列表0、列表1或列表C)。
一般来说,TU是用于变换过程和量化过程。具有一个或一个以上PU的给定CU还可包含一个或一个以上变换单元(TU)。在预测之后,视频编码器20可计算对应于PU的残余值。残余值包括可变换成使用TU而量化及扫描以产生串行化变换系数以用于熵译码的变换系数的像素差值。本发明通常使用术语“视频块”来指CU的译码节点。在一些特定情况下,本发明还可使用术语“视频块”来指包含一译码节点及多个PU和TU的树块(即,LCU或CU)。
视频序列通常包含一系列视频帧或图像。图像组(GOP)通常包括一系列视频图像中的一者或一者以上。GOP可在GOP的标头、图像中的一者或一者以上的标头中或在别处包含描述包含在GOP中的图像的数目的语法数据。图像的每一切片可包含描述所述相应切片的编码模式的切片语法数据。视频编码器20通常对个别视频切片内的视频块进行操作,以便编码视频数据。视频块可对应于CU内的译码节点。视频块可具有固定或变化的大小,且可根据指定译码标准而在大小方面不同。
作为实例,HM支持以各种PU大小进行预测。假设特定CU的大小为2N×2N,那么HM支持以2N×2N或N×N的PU大小进行帧内预测,和以2N×2N、2N×N、N×2N或N×N的对称PU大小进行帧间预测。HM还支持以2N×nU、2N×nD、nL×2N和nR×2N的PU大小进行帧间预测的不对称分割。在不对称分割中,CU的一个方向未经分割,而另一方向经分割成25%和75%。CU的对应于25%分割的部分通过“n”后接续有“上”、“下”、“左”或“右”的指示来指示。因此,例如,“2N×nU”指在水平方向上以顶部2N×0.5NPU和底部2N×1.5N PU分割的2N×2N CU。
在本发明中,“N×N”与“N乘N”可互换地使用以指视频块在垂直尺寸与水平尺寸方面的像素尺寸,例如,16×16像素或16乘16像素。一般来说,16×16块在垂直方向上将具有16个像素(y=16)且在水平方向上将具有16个像素(x=16)。同样地,N×N块一般地在垂直方向上具有N个像素,且在水平方向上具有N个像素,其中N表示非负整数值。可按列和行来布置块中的像素。此外,块未必需要在水平方向上具有与在垂直方向上的像素数目相同的数目个像素。举例来说,块可包括N×M个像素,其中M未必等于N。
在使用CU的PU进行帧内预测性或帧间预测性译码之后,视频编码器20可计算CU的TU的残余数据。PU可包括空间域(还被称作像素域)中的像素数据,且TU可包括在将例如离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换的变换应用于残余视频数据之后的变换域中的系数。残余数据可对应于未经编码图像的像素与对应于PU的预测值之间的像素差。视频编码器20可形成包含CU的残余数据的TU,且然后变换所述TU以产生CU的变换系数。
在应用任何变换以产生变换系数之后,视频编码器20可执行变换系数的量化。量化一般指如下过程:将变换系数量化以可能地减少用以表示所述系数的数据的量,从而提供进一步压缩。所述量化过程可减少与所述系数中的一些系数或所有系数相关联的位深度。举例来说,可在量化期间将n位值降值舍位到m位值,其中n大于m。
在一些实例中,视频编码器20可利用预定义扫描次序来扫描经量化的变换系数,以产生可经熵编码的串行化向量。在其它实例中,视频编码器20可执行自适应扫描。在扫描所述经量化的变换系数以形成一维向量之后,视频编码器20可熵编码所述一维向量,例如,根据上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、基于语法的上下文自适应二进制算术译码(SBAC)、概率区间分割熵(PIPE)译码或另一熵编码方法。视频编码器20还可熵编码与经编码视频数据相关联的语法元素以供视频解码器30用于解码视频数据。
为了执行CABAC,视频编码器20可将上下文模型内的上下文指配给待传输的符号。所述上下文可能关于(例如)符号的相邻值是否为非零。为了执行CAVLC,视频编码器20可针对待传输的符号选择可变长度码。可以使得相对较短码对应于更有可能的符号而较长码对应于较不可能的符号的方式来构造VLC中的码字。以此方式,使用VLC可实现位节省(与(例如)针对待传输的每一符号使用等长度码字相比较)。概率确定可基于指配给符号的上下文而进行。
图2为说明包含经编码及传输的多个图像的实例视频序列33的概念图。在一些情况下,视频序列33可被称作图像组(GOP)。如所说明,视频序列33包含图像35A、36A、38A、35B、36B、38B和35C,及显示次序上的最终图像39。图像34为发生在序列33之前的序列的显示次序上的最终图像。图2一般表示用于视频序列的示范性预测结构,且仅希望说明用于预测不同切片或图像类型的视频块(例如,P图像或切片,或B图像或切片)的图像参考。实际视频序列可含有不同图像类型及呈不同显示次序的更多或更少个视频图像。视频序列33可包含数目比图2中所说明的图像数目多或少的图像,且仅为了理解及作为实例的目的而说明视频序列33中所说明的图像。
对于基于块的视频译码,可将包含在序列33中的视频图像中的每一者分割成视频块,例如译码单元(CU)或预测单元(PU)。举例来说,视频图像的每一CU可包含一个或一个以上PU。经帧内译码(I)图像中的视频块是使用关于相同图像中的相邻块的空间预测来预测。经帧间译码(P或B)图像中的视频块可使用关于相同图像中的相邻块的空间预测或关于其它参考图像的时间预测。
B图像中的视频块可使用双向预测来预测以根据两个不同参考图像列表(例如,参考图像列表0和1,其被称作列表0和列表1)计算两个运动向量。在一些情况下,B图像中的视频块可使用单向预测根据两个不同参考图像列表中的一者来预测(例如,经单向B译码)。P图像中的视频块可使用单向预测来预测以根据单个参考图像列表计算单个运动向量。根据新兴HEVC标准,可使用单向预测来编码视频块以根据两个参考图像列表中的一者计算单个运动向量,或使用双向预测来编码视频块以根据两个参考图像列表计算两个运动向量。举例来说,两个参考图像列表可含有显示或输出次序上的过去参考图像或未来参考图像或过去参考图像与未来参考图像两者,及解码次序上的始终过去参考图像。
在图2的实例中,最终图像39经指明用于作为I图像进行帧内模式译码。在其它实例中,可参考前一序列的最终图像34(其可为I图像)以帧间模式译码(例如,作为P图像)译码最终图像39。视频图像35A到35C(共同地为“视频图像35”)经指明用于作为B图像使用双向预测参考过去图像和未来图像进行译码。在所说明实例中,作为B图像参考最终图像34和图像36A编码图像35A,如通过从图像34和36A到视频图像35A的箭头指示。类似地编码图像35B和35C。
视频图像36A到36B(共同地为“视频图像36”)可经指明用于作为图像使用单向预测参考过去图像进行译码。在所说明实例中,作为B图像参考最终图像34编码图像36A,如通过从图像34到视频图像36A的箭头指示。类似地编码图像36B。
视频图像38A到38B(共同地为“视频图像38”)可经指明用于使用双向预测参考相同的过去图像进行译码。在其它实例中,可使用双向预测参考包含在参考图像列表中的实质上类似的过去图像编码视频图像38。在所说明实例中,通过对图像36A的两个参考编码图像38A,如通过从图像36A到视频图像38A的两个箭头指示。类似地编码图像38B。
根据本发明中所描述的技术,视频编码器20可用信号发出用于序列33中的图像中的每一者的参考图像集。举例来说,对于图像35A,此参考图像集可识别可用以对图像35A进行帧间预测的所有参考图像,以及可潜在地用于对在解码次序上在图像35A之后的图像进行帧间预测的所有参考图像。举例来说,图像35A的参考图像集可包含用于图像34和图像36A的POC值,以及用于额外参考图像(例如,可潜在地用于对在解码次序上在图像35A之后的图像进行帧间预测的参考图像)的POC值。在此实例中,在图像35A之后的图像可为在解码次序上在图像35A之后且在视频序列33内的所述图像。
视频解码器30可然后以上文所描述的方式导出图像35A的参考图像集。举例来说,视频解码器30可确定用于属于参考图像集的参考图像的POC值,如上文所描述。视频解码器30可进一步构造至少四个或至少五个参考图像子集,且在一些实例中,直到上文所描述的六个参考图像子集。视频解码器30可以特定次序布置所述六个参考图像子集以导出图像35A的参考图像集。
视频解码器30可以上文所描述的方式进一步构造初始参考图像列表,其中不需要将待包含在初始参考图像列表中的图像重新排序。当禁用参考图像列表修改时,视频解码器30可将最终参考图像列表设置为等于初始参考图像列表。而且,视频解码器30可以参考图像列表中不存在非完成条目的方式构造参考图像列表。举例来说,视频解码器30可重复地列出来自参考图像子集的参考图像,直到参考图像列表中的条目的数目等于参考图像列表的可允许条目的最大数目为止。在一些实例中,视频解码器30可以上文所描述的方式修改初始参考图像列表(例如,基于所构造的参考图像子集中的至少一者中的参考图像)。此外,在一些实例中,视频解码器30可利用本发明中所描述的实例技术将已解码图像从视频解码器30的DPB中去除,例如,去除在待解码的当前图像的参考图像集中未加以识别且不需要输出的已解码图像。而且,在一些实例中,视频解码器30可以上文所描述的方式确定哪些长期参考图像属于参考图像集,其中候选长期参考图像列表的识别信息可包含在参数集中。
图3为说明可实施本发明中所描述的技术的实例视频编码器20的框图。视频编码器20可执行视频切片内的视频块的帧内译码及帧间译码。帧内译码依赖于空间预测以减少或去除给定视频帧或图像内的视频的空间冗余。帧间译码依赖于时间预测以减少或去除视频序列的邻近帧或图像内的视频的时间冗余。帧内模式(I模式)可指若干基于空间的压缩模式中的任一者。例如单向预测(P模式)或双向预测(B模式)等帧间模式可指若干基于时间的压缩模式中的任一者。
在图3的实例中,视频编码器20包含分割单元35、预测模块41、已解码图像缓冲器(DPB)64、求和器50、变换模块52、量化单元54,和熵编码单元56。预测模块41包含运动估计单元42、运动补偿单元44,和帧内预测模块46。对于视频块重构造,视频编码器20还包含反量化单元58、反变换模块60,和求和器62。还可包含解块滤波器(图3中未展示)以对块边界滤波以将方块效应伪影从经重构造的视频中去除。在需要时,解块滤波器通常对求和器62的输出滤波。除解块滤波器之外,还可使用额外的环路滤波器(环路内或环路后)。
如图3中所展示,视频编码器20接收视频数据,且分割单元35将数据分割成视频块。此分割还可包含分割成切片、图块或其它较大单元,以及(例如)根据LCU和CU的四叉树结构的视频块分割。视频编码器20一般说明编码待编码的视频切片内的视频块的组件。切片可划分成多个视频块(且有可能划分成被称作图块的视频块的集合)。预测模块41可基于误差结果(例如,译码速率和失真电平)而选择用于当前视频块的多个可能译码模式中的一者,例如,多个帧内译码模式中的一者或多个帧间译码模式中的一者。预测模块41可将所得的经帧内译码或经帧间译码块提供到求和器50以产生残余块数据,且将所得的经帧内译码或经帧间译码块提供到求和器62以重构造经编码块以用作参考图像。
预测模块41内的帧内预测模块46可执行相对于与待译码的当前块相同的图像或切片中的一个或一个以上相邻块的当前视频块的帧内预测性译码以提供空间压缩。预测模块41内的运动估计单元42和运动补偿单元44执行相对于一个或一个以上参考图像中的一个或一个以上预测性块的当前视频块的帧间预测性译码以提供时间压缩。
运动估计单元42可经配置以根据视频序列的预定模式确定视频切片的帧间预测模式。预定模式可指明序列中的视频切片为P切片或B切片。运动估计单元42和运动补偿单元44可高度集成,但为了概念目的而分别加以说明。由运动估计单元42执行的运动估计为产生运动向量的过程,运动向量估计视频块的运动。运动向量(例如)可指示当前视频图像内的视频块的PU相对于参考图像内的预测性块的位移。
预测性块为被发现与待译码的视频块的PU在像素差方面紧密匹配的块,可通过绝对差总和(SAD)、平方差总和(SSD)或其它不同度量来确定像素差。在一些实例中,视频编码器20可计算存储在已解码图像缓冲器64中的参考图像的子整数像素位置的值。举例来说,视频编码器20可内插参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置的值。因此,运动估计单元42可执行相对于全像素位置和分数像素位置的运动搜索,且以分数像素精度输出运动向量。
运动估计单元42通过比较经帧间译码切片中的视频块的PU的位置与参考图像的预测性块的位置而计算所述PU的运动向量。参考图像可选自第一参考图像列表(列表0)或第二参考图像列表(列表1),第一参考图像列表(列表0)或第二参考图像列表(列表1)中的每一者识别存储在已解码图像缓冲器64中的一个或一个以上参考图像。运动估计单元42将所计算的运动向量发送到熵编码单元56和运动补偿单元44。
由运动补偿单元44执行的运动补偿可涉及基于通过运动估计确定的运动向量而获取或产生预测性块,有可能执行子像素精度的内插。在接收到当前视频块的PU的运动向量后,运动补偿单元44便可将运动向量所指向的预测性块定位于参考图像列表中的一者中。视频编码器20通过从正被译码的当前视频块的像素值减去预测性块的像素值来形成残余视频块,从而形成像素差值。像素差值形成块的残余数据,且可包含明度差分量与色度差分量两者。求和器50表示执行此减法运算的一个或一个以上组件。运动补偿单元44还可产生与视频块和视频切片相关联的语法元素以供视频解码器30用于解码视频切片的视频块。
帧内预测模块46可帧内预测当前块,而作为由运动估计单元42和运动补偿单元44执行的帧间预测(如上文所描述)的替代。明确地说,帧内预测模块46可确定使用帧内预测模式以编码当前块。在一些实例中,帧内预测模块46可使用各种帧内预测模式(例如)在单独编码遍次期间编码当前块,且帧内预测模块46(或,在一些实例中,模式选择单元40)可从所测试模式中选择适当帧内预测模式来使用。举例来说,帧内预测模块46可使用对各种所测试帧内预测模式的速率-失真分析而计算速率-失真值,且在所测试模式当中选择具有最好速率-失真特性的帧内预测模式。速率-失真分析一般确定经编码块与经编码以产生经编码块的原始的未经编码块之间的失真(或误差)的量,以及用以产生经编码块的位速率(即,位数目)。帧内预测模块46可根据各种经编码块的失真和速率计算比率以确定哪一帧内预测模式展现块的最好速率-失真值。
在选择用于块的帧内预测模式之后,帧内预测模块46可将指示用于块的选定帧内预测模式的信息提供到熵编码单元56。熵编码单元56可根据本发明的技术编码指示选定帧内预测模式的信息。视频编码器20可在经传输的位流配置数据中包含各种块的编码上下文的定义及将用于所述上下文中的每一者的最可能的帧内预测模式、帧内预测模式索引表和修改的帧内预测模式索引表的指示,所述经传输的位流配置数据可包含多个帧内预测模式索引表和多个修改的帧内预测模式索引表(也被称作码字映射表)。
在预测模块41经由帧间预测或帧内预测产生用于当前视频块的预测性块之后,视频编码器20通过从当前视频块中减去预测性块而形成残余视频块。残余块中的残余视频数据可包含在一个或一个以上TU中且应用于变换模块52。变换模块52使用例如离散余弦变换(DCT)或概念上类似的变换等变换将残余视频数据变换成残余变换系数。变换模块52可将残余视频数据从像素域转换到变换域,例如频域。
变换模块52可将所得变换系数发送到量化单元54。量化单元54将变换系数量化以进一步减小位速率。量化过程可减少与所述系数中的一些系数或所有系数相关联的位深度。可通过调整量化参数而修改量化程度。在一些实例中,量化单元54可然后执行包含经量化的变换系数的矩阵的扫描。或者,熵编码单元56可执行所述扫描。
在量化之后,熵编码单元56熵编码经量化的变换系数。举例来说,熵编码单元56可执行上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、基于语法的上下文自适应二进制算术译码(SBAC)、概率区间分割熵(PIPE)译码或另一熵编码方法或技术。在由熵编码单元56进行的熵编码之后,可将经编码位流传输到视频解码器30或加以存档以供视频解码器30稍后传输或检索。熵编码单元56还可熵编码正被译码的当前视频切片的运动向量及其它语法元素。
反量化单元58和反变换模块60分别应用反量化和反变换,以在像素域中重构造残余块以供稍后用作参考图像的参考块。运动补偿单元44可通过将残余块与参考图像列表中的一者内的参考图像中的一者的预测性块相加来计算参考块。运动补偿单元44还可将一个或一个以上内插滤波器应用于经重构造的残余块以计算子整数像素值以供用于运动估计中。求和器62将经重构造的残余块与由运动补偿单元44产生的经运动补偿的预测块相加以产生用于存储在已解码图像缓冲器64中的参考块。参考块可由运动估计单元42和运动补偿单元44作为用于对后续视频帧或图像中的块进行帧间预测的参考块使用。
根据本发明,预测模块41表示用于执行上文所描述的实例功能的一个实例单元。举例来说,预测模块41可确定哪些参考图像属于参考图像集,且致使视频编码器20译码指示属于参考图像集的参考图像的信息。而且,在重构造过程(例如,用以重构造用于用作参考图像且存储在已解码图像缓冲器64中的图像的过程)期间,预测模块41可构造多个参考图像子集,每一参考图像子集识别参考图像中的一者或一者以上。预测模块41还可从所述所构造的多个参考图像子集导出参考图像集。而且,预测模块41可实施上文所描述的实例伪码集合中的任何一者或一者以上,以实施本发明中所描述的一个或一个以上实例技术。
在一些实例中,预测模块41可以上文所描述的方式构造初始参考图像列表。在一些实例中,不需要将待包含在初始参考图像列表中的图像重新排序。而且,预测模块41可以参考图像列表中不存在非完成条目的方式构造参考图像列表。在一些实例中,预测模块41还可以上文所描述的方式修改初始参考图像列表以构造修改的参考图像列表。此外,在一些实例中,预测模块41可以上文所描述的方式实施将已解码图像从DPB64去除。此外,在一些实例中,预测模块41可经配置以按上文所描述的方式确定哪些长期参考图像属于当前图像的参考图像集。
在其它实例中,不同于预测模块41的单元可实施上文所描述的实例。在一些其它实例中,预测模块41结合视频编码器20的一个或一个以上其它单元可实施上文所描述的实例。在又一些其它实例中,视频编码器20的处理器或单元(图3中未展示)可单独地或结合视频编码器20的其它单元实施上文所描述的实例。
图4为说明可实施本发明中所描述的技术的实例视频解码器30的框图。在图4的实例中,视频解码器30包含熵解码单元80、预测模块81、反量化单元86、反变换单元88、求和器90,和已解码图像缓冲器(DPB)92。预测模块81包含运动补偿单元82和帧内预测模块84。视频解码器30在一些实例中可执行一般与关于视频编码器20(图3)所描述的编码遍次互逆的解码遍次。
在解码过程期间,视频解码器30从视频编码器20接收表示经编码视频切片的视频块及相关联的语法元素的经编码视频位流。视频解码器30的熵解码单元80熵解码所述位流以产生经量化的系数、运动向量及其它语法元素。熵解码单元80将运动向量及其它语法元素转发到预测模块81。视频解码器30可在视频切片层级和/或视频块层级接收语法元素。
当视频切片经译码为经帧内译码(I)切片时,预测模块81的帧内预测模块84可基于用信号发出的帧内预测模式和来自当前图像的先前已解码块的数据而产生用于当前视频切片的视频块的预测数据。当视频图像经译码为经帧间译码(即,B或P)切片时,预测模块81的运动补偿单元82基于从熵解码单元80所接收的运动向量及其它语法元素而产生用于当前视频切片的视频块的预测性块。预测性块可产生自参考图像列表中的一者内的参考图像中的一者。视频解码器30可使用默认构造技术基于存储在已解码图像缓冲器92中的参考图像而构造参考帧列表(列表0和列表1)。在一些实例中,视频解码器30可从在所导出的参考图像集中识别的参考图像构造列表0和列表1。
运动补偿单元82通过分析运动向量及其它语法元素而确定当前视频切片的视频块的预测信息,且使用所述预测信息产生正被解码的当前视频块的预测性块。举例来说,运动补偿单元82使用所接收语法元素中的一些所接收语法元素确定:用以译码视频切片的视频块的预测模式(例如,帧内预测或帧间预测)、帧间预测切片类型(例如,B切片或P切片)、用于切片的参考图像列表中的一者或一者以上的构造信息、用于切片的每一经帧间编码视频块的运动向量、用于切片的每一经帧间译码视频块的帧间预测状态,以及用以解码当前视频切片中的视频块的其它信息。
运动补偿单元82还可基于内插滤波器而执行内插。运动补偿单元82可使用如由视频编码器20在编码视频块期间使用的内插滤波器,以计算参考块的子整数像素的内插值。在此情况下,运动补偿单元82可根据所接收语法元素确定由视频编码器20使用的内插滤波器且使用所述内插滤波器来产生预测性块。
反量化单元86将提供于位流中且由熵解码单元80解码的经量化的变换系数反量化(即,解量化)。反量化过程可包含使用由视频编码器20计算的用于视频切片中的每一视频块的量化参数,以确定量化程度及(同样的)应应用的反量化的程度。反变换模块88将反变换(例如,反DCT、反整数变换或概念上类似的反变换过程)应用于变换系数,以便在像素域中产生残余块。
在预测模块81基于帧间预测或帧内预测而产生用于当前视频块的预测性块之后,视频解码器30通过将来自反变换模块88的残余块与由预测模块81产生的对应预测性块加总而形成已解码视频块。求和器90表示执行此加总运算的一个或一个以上组件。在需要时,还可应用解块滤波器来对已解码块滤波以便去除方块效应伪影。其它环路滤波器(译码环路中或译码环路后)还可用以使像素转变平滑,或以其它方式改善视频质量。然后将给定图像中的已解码视频块存储在已解码图像缓冲器92中,已解码图像缓冲器92存储用于后续运动补偿的参考图像。已解码图像缓冲器92还存储已解码视频以用于稍后呈现于显示装置(例如,图1的显示装置32)上。
根据本发明,预测模块81表示用于执行上文所描述的实例功能的一个实例单元。举例来说,预测模块81可确定哪些参考图像属于参考图像集。而且,预测模块81可构造多个参考图像子集,每一参考图像子集识别所述参考图像中的一者或一者以上。预测模块81还可从所述所构造的多个参考图像子集导出参考图像集。而且,预测模块81可实施上文所描述的实例伪码集合中的任何一者或一者以上,以实施本发明中所描述的一个或一个以上实例技术。
在一些实例中,预测模块81可以上文所描述的方式构造初始参考图像列表。在一些实例中,不需要将待包含在初始参考图像列表中的图像重新排序。而且,预测模块81可以参考图像列表中不存在非完成条目的方式构造参考图像列表。在一些实例中,预测模块81还可以上文所描述的方式修改初始参考图像列表以构造修改的参考图像列表。此外,在一些实例中,预测模块81可以上文所描述的方式实施将已解码图像从DPB92中去除。此外,在一些实例中,预测模块81可经配置以按上文所描述的方式确定哪些长期参考图像属于当前图像的参考图像集。
在其它实例中,不同于预测模块81的单元可实施上文所描述的实例。在一些其它实例中,预测模块81结合视频解码器30的一个或一个以上其它单元可实施上文所描述的实例。在又一些其它实例中,视频解码器30的处理器或单元(图4中未展示)可单独地或结合视频解码器30的其它单元实施上文所描述的实例。
图5为说明导出参考图像集的实例操作的流程图。仅为了说明的目的,图5的方法可由对应于视频编码器20或视频解码器30的视频译码器来执行。举例来说,视频译码器(例如,视频编码器20或视频解码器30)可译码(例如,编码或解码)指示属于参考图像集的参考图像的信息(94)。参考图像集可识别可潜在地用于对当前图像进行帧间预测且用于对在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测的参考图像。
举例来说,当视频编码器20执行步骤94时,视频编码器20可编码指示属于参考图像集的参考图像的识别符的值。举例来说,视频编码器20可在位流中用信号发出pic_order_cnt_lsb语法元素和1og2_max_pic_order_cnt_lsb_minus4语法元素。当视频解码器30执行步骤94时,视频解码器30可根据log2_max_pic_order_cm_lsb_minus4语法元素确定MaxPicOrderCntLsb的值。视频解码器30可然后确定属于参考图像集的参考图像的识别符(例如,POC值)。
视频译码器可构造多个参考图像子集,每一参考图像子集识别所述参考图像中的零者或多者(96)。举例来说,视频译码器可构造RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr和RefPicSetLtFoll参考图像子集。然而,本发明的方面不应受此限制。在一些实例中,视频译码器可构造五个参考图像子集,所述五个参考图像子集中的四者为RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr和RefPicSetLtFoll参考图像子集中的四者,且第五者可为剩余六个参考图像子集中的两者的组合(例如,RefPicSetFoll0与RefPicSetFoll1参考图像子集的组合)。
在一些实例中,视频译码器可构造以下四个参考图像子集中的至少两者。在其它实例中,视频译码器可至少构造以下四个参考图像子集。第一参考图像子集可识别满足以下情形的短期参考图像:在解码次序上在当前图像之前且在输出次序上在当前图像之前,且可潜在地用于对当前图像及在解码次序上在当前图像之后的一个或一个以上图像中的一者或一者以上进行帧间预测。第二参考图像子集可识别满足以下情形的短期参考图像:在解码次序上在当前图像之前且在输出次序上在当前图像之后,且可潜在地用于对当前图像及在解码次序上在当前图像之后的一个或一个以上图像中的一者或一者以上进行帧间预测。
第三参考图像子集可识别满足以下情形的长期参考图像:在解码次序上在当前图像之前,且可潜在地用于对当前图像及在解码次序上在当前图像之后的一个或一个以上图像中的一者或一者以上进行帧间预测。第四参考图像子集可识别满足以下情形的长期参考图像:在解码次序上在当前图像之前,且无法用于对当前图像进行帧间预测,且可潜在地用于对在解码次序上在当前图像之后的一个或一个以上图像中的一者或一者以上进行帧间预测。
视频译码器可从所述多个参考图像子集导出参考图像集(98)。举例来说,视频译码器可以特定次序将以下各者中的至少两者排序:RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr和RefPicSetLtFoll参考图像子集,以导出参考图像集。
在一些实例中,由视频译码器执行的排序可意味着:参考图像子集中的每一者中的图像可在参考图像集内顺序地加以识别。在这些实例中,视频译码器可通过到参考图像集中的索引值来参考参考图像集中的参考图像。
视频译码器可基于所导出的参考图像集而译码当前图像(100)。应理解,因为视频译码器从参考图像子集导出参考图像集,所以视频译码器可被视为基于所述多个参考图像子集而译码当前图像。举例来说,视频译码器可基于所述多个参考图像子集(例如,来自从所述多个参考图像子集导出的所导出的参考图像集)而构造第一参考图像列表和第二参考图像列表中的至少一者。视频译码器可然后基于第一参考图像列表和第二参考图像列表中的至少一者而译码当前图像。
图6为说明构造参考图像列表的实例操作的流程图。仅为了说明的目的,图6的方法可由对应于视频编码器20或视频解码器30的视频译码器来执行。类似于图5,视频译码器可译码指示参考图像的信息(102),且构造多个参考图像子集(104)。
视频译码器可然后将来自参考图像子集的参考图像添加到初始参考图像列表中,以构造初始参考图像列表(106)。在一些实例中,视频编码器20与视频解码器30两者可构造初始参考图像列表。举例来说,视频编码器20可构造初始参考图像列表以建立用于存储在DPB64中的经重构造的视频块。视频解码器30可作为其解码过程的部分构造初始参考图像列表,且可实施默认构造技术,在默认构造技术中,视频解码器30不需要从视频编码器20接收关于借以构造初始参考图像列表的方式的信息。
在一些实例中,为了构造初始参考图像列表,视频译码器可将来自所述多个参考图像子集中的第一子集的参考图像添加到初始参考图像列表中,后接续将来自第二子集的参考图像添加到初始参考图像列表中,且然后接续将来自第三子集的参考图像添加到初始参考图像列表中。只要初始参考图像列表中所列出的参考图像的总数目不大于初始参考图像列表中的可允许条目的最大数目,视频译码器便可添加来自这些参考图像子集的参考图像。举例来说,如果在于参考图像列表中添加参考图像期间的任何时间,初始参考图像列表中的条目的数目变成等于可允许初始参考列表条目的最大数目,那么视频译码器可停止在初始参考图像列表中添加任何额外图像。
视频译码器可类似地构造另一初始参考图像列表,例如在当前图像的视频块经双向预测的实例中。在此实例中,为了构造此另一初始参考图像列表,只要此另一初始参考图像列表中的条目的总数目不大于条目的可允许数目,视频译码器便可将来自第二子集的参考图像添加到所述另一初始参考图像列表中,后接续将来自第一子集的参考图像添加到所述另一初始参考图像列表中,且然后接续将来自第三子集的参考图像添加到所述另一初始参考图像列表中。在这些实例中,第一子集可为RefPicSetStCurr0参考图像子集,第二子集可为RefPicSetStCurr1参考图像子集,且第三子集可为RefPicSetLtCurr参考图像子集。
在一些实例中,为了添加在RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集中识别的参考图像,视频译码器可译码(例如,编码或解码)语法元素,视频译码器可根据所述语法元素确定这些参考图像子集中的每一者中的参考图像的数目。举例来说,视频译码器可译码num_short_term_currO语法元素和num_short_term_curr1语法元素。num_short_term_curr0语法元素和num_short_term_curr1语法元素可分别指示在RefPicSetStCurr0参考图像子集和RefPicSetStCurr1参考图像子集中识别的参考图像的数目。
视频译码器还可译码num_long_term_pp s_curr语法元素和num_long_term_add_curr语法元素。num_long_term_pps_curr语法元素可指示识别包含在图像参数集(PPS)中的长期参考图像的数目,且num_long_term_add_curr语法元素可指示识别信息不包含在PPS中的长期参考图像的数目。在此实例中,这些长期参考图像可潜在地用于对当前图像进行帧间预测且可潜在地用于对在解码次序上在当前图像之后的一个或一个以上图像进行帧间预测。
视频译码器可基于num_long_term_pp s_curr语法元素和num_long_term_add_curr语法元素而确定RefPicSetLtCurr参考图像子集中的参考图像的数目。举例来说,视频译码器可将num_long_term_pp s_curr语法元素和num_long_term_add_curr语法元素的值加总,以确定RefPicSetLtCurr参考图像子集中的参考图像的数目。
视频译码器可基于一个或一个以上参考图像列表而译码当前图像(108)。举例来说,视频译码器可基于所导出的参考图像集而构造第一参考图像列表和第二参考图像列表中的至少一者。视频译码器可然后基于第一参考图像列表和第二参考图像列表中的至少一者而译码当前图像。
图7为说明构造参考图像列表的另一实例操作的流程图。仅为了说明的目的,图7的方法可由对应于视频编码器20或视频解码器30的视频译码器来执行。类似于图5,视频译码器可译码指示参考图像的信息(110),且构造多个参考图像子集(112)。视频译码器可将参考图像添加到参考图像列表的第一条目集合中(114)。举例来说,参考图像列表中的条目的数目可等于可允许条目的最大数目,如通过num_ref_idx_l0active_minus1或num_ref_idx_l1active_minus1语法元素所定义。
在此实例中,视频译码器可将在RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集中识别的参考图像列入(例如,添加)到第一条目集合中。举例来说,对于列表0,视频译码器可按次序将在RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集中识别的参考图像添加到列表0的第一条目集合中。对于列表1,视频译码器可按次序将在RefPicSetStCnrr1、RefPicSetStCurr0和RefPicSetLtCurr参考图像子集中识别的参考图像添加到列表1的第一条目集合中。
视频译码器可然后确定参考图像列表中的条目的数目是否等于参考图像列表中的可允许条目的最大数目(116)。如果参考图像列表中的条目的数目不小于可允许条目的最大数目(116的“否”),那么视频译码器可基于参考图像列表而译码当前图像(118)。
否则,如果参考图像列表中的条目的数目小于可允许条目的最大数目(116的“是”),那么视频译码器可将来自参考图像子集中的至少一者的一个或一个以上参考图像重新列入(例如,重新识别或重新添加)到参考图像列表中在第一条目集合之后的条目中(120)。举例来说,视频译码器可将在RefPicSetStCurr0参考图像子集中识别的一个或一个以上参考图像添加到列表0中在列表0中的第一条目集合之后的条目中,或将在RefPicSetStCurr1参考图像子集中识别的一个或一个以上参考图像添加到列表1中在列表1中的第一条目集合之后的条目中。以此方式,视频译码器可识别在参考图像列表中的一个以上条目中的第一参考图像子集中的至少一个参考图像。
视频译码器可然后确定参考图像列表中的条目的数目是否等于参考图像列表中的可允许条目的最大数目(122)。如果参考图像列表中的条目的数目不小于可允许条目的最大数目(122的“否”),那么视频译码器可基于参考图像列表而译码当前图像(124)。
否则,如果参考图像列表中的条目的数目小于可允许条目的最大数目(122的“是”),那么视频译码器可将来自参考图像子集中的至少一者的一个或一个以上参考图像重新列入(例如,重新识别或重新添加)到参考图像列表中在第一条目集合之后的条目中(120)。举例来说,在此情形下,视频译码器可重新添加在第一参考图像子集中识别的额外参考图像。如果视频译码器已经重新添加第一参考图像子集中的所有参考图像,那么视频译码器可重新添加来自第二参考图像子集(例如,用于列表0的RefPicSetStCurr0参考图像子集,或用于列表1的RefPicSetStCurr1参考图像子集)的一个或一个以上参考图像。可重复此过程,直到参考图像列表中的条目的数目不小于可允许条目的最大数目(122的“否”)为止。
以此方式,当参考图像列表中的条目的数目不等于参考图像列表中的可允许条目的最大数目时,视频译码器可重复地将来自参考图像子集中的至少一者的一个或一个以上参考图像重新列入(例如,重新识别或重新添加)到参考图像列表中在第一条目集合之后的条目中,直到参考图像列表中的条目的数目等于参考图像列表中的可允许条目的最大数目为止。此情形可导致视频译码器在参考图像列表的条目中列出参考图像,以使得参考图像列表的每一条目识别所述参考图像中的一者,且使得参考图像列表中的至少两个条目识别所述参考图像中的一相同参考图像。
图8为说明修改初始参考图像列表的实例操作的流程图。仅为了说明的目的,图8的方法可由对应于视频编码器20或视频解码器30的视频译码器来执行。类似于图6,视频译码器可译码指示参考图像的信息(126),且构造多个参考图像子集(128)。所述多个参考图像子集可包含RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集。视频译码器可以上文所描述的方式基于RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr参考图像子集而构造初始参考图像列表(130)。
视频译码器可确定是否需要参考图像列表修改(132)。举例来说,视频译码器可译码语法元素,例如,指示是否需要修改初始列表0或初始列表1的ref_pic_list_modification_flag_l0及ref_pic_list_modification_flag_l1。如果不需要初始参考图像列表的修改(132的“否”),那么视频译码器可基于初始参考图像列表而译码当前图像(134)。
如果需要修改(132的“是”),那么视频译码器可识别所构造的参考图像子集中的至少一者中的参考图像(136)。举例来说,视频译码器可译码modification_of_ref_pic_idc语法元素。modification_of_ref_pic_idc语法元素的值可指示视频译码器将利用哪个参考图像子集来识别参考图像。视频译码器还可译码ref_pic_set_idx语法元素,所述ref_pic_set_idx语法元素指示到视频译码器将用以识别参考图像的参考图像子集中的索引。
视频译码器可在初始参考图像列表中在当前条目处列出(例如,添加或识别)所识别的参考图像以构造修改的参考图像列表(138)。当前条目最初可为初始参考图像列表中通过索引0定义的条目。对于经译码位流中的modification_of_ref_pic_idc语法元素的每一实例(其中modification_of_ref_pic_idc语法元素的值并不是3),视频译码器可将初始条目的值递增一(例如,通过索引1来定义条目的下一值)。视频译码器可基于修改的参考图像列表而译码当前图像(140)。
图9为说明已解码图像去除的实例操作的流程图。仅为了说明的目的,图8的方法可由对应于视频编码器20或视频解码器30的视频译码器来执行。类似于图5,视频译码器(例如,视频编码器20或视频解码器30)可译码(例如,编码或解码)指示参考图像集的参考图像的信息(142),且可从经译码(例如,经编码或经解码)信息导出参考图像集(144)。
视频译码器可确定存储在已解码图像缓冲器(DPB)中的已解码图像是否不需要输出(即,已经输出或并不希望输出)及是否在参考图像集中未加以识别(146)。如果已解码图像需要输出或在参考图像集中加以识别(146的“否”),那么视频译码器可能不将已解码图像从DPB中去除,且可保持已解码图像存储在DPB中(148)。
当已解码图像已经输出且在参考图像集中未加以识别时(146的“是”),视频译码器可将已解码图像从DPB中去除(150)。在去除已解码图像之后,视频译码器可然后译码当前图像(152)。
如上文所描述,视频译码器可基于用于译码当前图像的参考图像集而构造参考图像列表。在一些实例中,视频译码器可在构造参考图像列表之后将已解码图像从DPB中去除。此外,对于经输出的已解码图像,视频译码器可确定输出已解码图像的时间,且可基于所确定的时间且在译码当前图像之前输出已解码图像。
在一些实例中,视频译码器可将经译码(例如,已解码)图像存储在DPB中。在一些实例中,视频译码器可确定在存储之前DPB已满。在这些实例中,视频译码器可选择满足以下情形的已解码图像:当前存储在DPB中,标记为“需要输出”且具有存储在DPB中的所有已解码图像的最小图像序列号(POC)值。视频译码器可然后输出所选定图像。此外,视频译码器可确定经输出图像不包含在当前图像的参考图像集中。在此情况下,视频译码器可将DPB内存储经输出图像的缓冲器清空,且可将经译码图像存储在DPB内的所述缓冲器中。
图10为说明确定哪些长期参考图像属于当前图像的参考图像集的实例操作的流程图。仅为了说明的目的,图10的方法可由对应于视频编码器20或视频解码器30的视频译码器来执行。
视频译码器(例如,视频编码器20或视频解码器30)可译码指示在参数集中识别的候选长期参考图像的语法元素(154)。在一些实例中,所述候选长期参考图像中的一者或一者以上属于当前图像的一参考图像集。根据本发明中所描述的技术,参数集可为序列参数集或图像参数集。在一些实例中,为了译码指示候选长期参考图像的语法元素,视频译码器可在参数集中译码用于候选长期参考图像的POC值列表,且在当前图像的切片标头中译码到列表的索引值。
视频译码器可译码指示在参数集中识别的哪些候选长期参考图像属于当前图像的参考图像集的语法元素(156)。举例来说,视频译码器可在当前图像的切片标头中译码指示哪些候选长期参考图像属于参考图像集的语法元素。
在一些实例中,并不是属于参考图像集的所有长期参考图像包含在候选长期参考图像中。在这些实例中,视频译码器可进一步译码指示属于参考图像集的长期参考图像的语法元素(158)。视频译码器可然后基于关于哪些候选长期参考图像属于当前图像的参考图像集的指示而构造多个参考图像子集中的至少一者(160)。
在上述实例中,描述各种实例以及所述实例的可能的替代例。下文描述所述实例的一些额外替代例,所述额外替代例可被视为上文所描述的实例中的一者或一者以上的替代实例。此外,这些替代实例可结合上文所描述的实例使用,或与上文所描述的实例分开使用。
举例来说,上文已经描述的实例为参考图像集概念的替代实例、在参数集中用信号发出参考图像集的替代实例、参考图像集的子集的替代实例,以及参考图像标记的替代实例。下文提供额外替代实例。
举例来说,对于NAL单元标头,在上述实例中,NAL单元标头语法可包含nal_ref_idc、temporal_id和output_flag语法元素。在一个替代实例中,用nal_ref_flag(1位)替换nal_ref_idc(2位)。在此实例中,等于1的nal_ref_flag具有语义为nal_ref_idc大于0,且等于0的nal_ref_flag具有与nal_ref_idc等于0相同的语义。在一个替代实例中,去除nal_ref_idc(2位)。可将参考图像的定义改变为:含有可用于在解码次序上的后续图像的解码过程中进行帧间预测的样本的图像。在一个替代实例中,temporal_id不存在于NAL单元标头语法中,且导出:所述值对于所有图像相同。在一个替代实例中,output_flag不存在于NAL单元标头语法中,且导出:所述值对于所有图像等于1。
对于图像序列号发信号及计算,上述技术可能使用可类似于AVC中的图像序列号类型0的图像序列号的发信号及计算的一种方式。可应用分别与AVC中的图像序列号类型1和2相同的用于图像序列号的发信号及计算的两种替代方式。还可应用三种方式中的两者的任何组合,或所有三种方式的组合。
对于图像识别,上述技术可利用图像序列号(POC)值用于图像识别。在一个替代实例中,将时间参考(TR)用作图像识别。定义TR的一种方式为:当POC受限制以使得任何两个图像之间的POC差与呈现时间或取样时间差成比例时,TR与POC相同。在一个替代实例中,可将指示解码次序的frame_num(而POC指示输出或显示次序)或从frame_num导出的可为32-位无符号整数值中的任一值的变量(例如,命名为UnWrappedFrameNum)用作图像识别。基本上,UnWrappedFrameNum可为frame_num的展开版本。举例来说,如果通过8位来表示frame_num,那么frame_num的最大值为255。用于frame_num的在255之后的下一值为0。UnWrappedFrameNum的值在frame_num绕回到0的位置处继续增加。
对于在参数集中用信号发出长期参考图像,在上述实例中,视频编码器20可在图像参数集中用信号发出绝对长期参考图像识别信息的列表,可用信号发出关于以位为单位的绝对长期参考图像识别信息的长度的信息,且可在切片标头中参考到列表的索引,从而减少发信号耗用。在一个替代实例中,可在序列参数集中用信号发出差分长期参考图像识别信息的列表,且可在切片标头中参考到列表的索引,从而减少发信号耗用。在一个替代实例中,可用信号发出关于以位为单位的绝对长期参考图像识别信息的长度的信息,但可将长度视为常数(例如,32)。在各种实例中,应用上述实例中的任一者的组合。
对于短期参考图像的发信号,在上述实例中,对于经译码图像的参考图像集中的短期参考图像,或者在所参考的图像参数集中用信号发出所有短期参考图像,或者在切片标头中用信号发出所有短期参考图像。在一个替代实例中,对于经译码图像的参考图像集中的短期参考图像,在所参考的图像参数集中用信号发出一些短期参考图像,且在切片标头中用信号发出其它短期参考图像。
对于参考图像列表初始化,在一个替代实例中,在参考图像列表初始化过程中,首先可将短期参考图像添加到列表中,且其次,视情况,可将长期参考图像添加到列表中。在所述操作之后,如果参考图像列表(RefPicList0或RefPicList1)中的条目的数目仍小于num_ref_idx_lx_active_minus1+1的值(1x为l0或l1),那么可将剩余条目标记为“无参考图像”。在一个替代实例中,以下情形还可能为有可能的:如果在添加RefPicSetStCurr0和RefPicSetStCurr1中的条目及可能的长期参考图像之后,参考图像列表仍未完成,那么可添加RefPicSetStFoll0和/或RefPicSetStFoll1中的图像。在一个替代实例中,参考图像列表初始化过程可仅在参考图像列表中添加短期参考图像。在此情况下,可通过使用如在参考图像列表修改(RPLM)语法表中用信号发出的参考图像列表修改命令,仅将长期参考图像添加到参考图像列表。
对于参考图像列表修改,在一个替代实例中,参考图像列表修改还可以差分方式用信号发出ref_pic_set_idx,其中先前索引用作当前索引的预测因数。在此实例中,不同modification_of_ref_pic_idc值可对应于不同索引类别(用于RefPicListx的RefPicSetStCurrx、用于RefPicList(1-x)的RefPicSetStCurrx,或RefPicSetLtCurr),所述索引类别中的每一者维持一不同预测因数。一旦刚好分析属于相同类别的语法元素,便可更新预测因数。在一个替代实例中,参考图像列表修改可基于图像编号差。在一个替代实例中,参考图像列表修改可基于POC值差。
对于已解码图像缓冲器(DPB)操作,在上述实例中,在解码当前图像之后且在分析解码次序上的下一经译码图像的切片标头之前,将当前已解码图像存储在DPB中。在一个替代实例中,在解码当前图像之后且在分析解码次序上的下一经译码图像的切片标头之前,将当前已解码图像存储在临时存储器中(并不是存储在DPB中)。在分析解码次序上的下一经译码图像的切片标头且构造所述图像的参考图像集之后,如果当前已解码图像仍需要供参考或用于输出,那么将当前已解码图像存储到DPB中。此刻,如果已解码图像既不需要供参考也不需要输出,那么可简单地舍弃已解码图像(从临时缓冲器)。
而且,在上述实例中,将已解码图像从DPB中去除紧于分析当前图像的切片标头之后且在解码当前图像的任何切片之前发生。在一个替代实例中,已解码图像的标记(如果存在的话)及将已解码图像从DPB中去除发生在完全解码当前图像之后。
在上述实例中,针对所有已解码图像导出用于当前图像的参考图像集的子集RefPicSetStCurr0和RefPicSetStCurr1。然而,对于帧内图像,此情形可能并不是必要的。对于帧内图像参考图像集导出,在一个替代实例中,对于经帧内译码的非IDR图像(即,经译码图像的所有切片为I切片),不导出RefPicSetStCurr0和RefPicSetStCurr1,这是因为:甚至在RefPicSetStCurr0和RefPicSetStCurr1在导出之后还不为空的情况下,在经译码图像的解码中也不需要RefPicSetStCurr0和RefPicSetStCurr1。允许用于非IDR帧内图像的非空RefPicSetStCurr0或RefPicSetStCurr1可允许共享RefPicSetStCurr0和RefPicSetStCurr1可能均不为空的一个或一个以上经帧间译码图像的实例short_term_ref_pic_set()语法结构。
对于损失检测,用于检测参考图像的损失或较早检测当前图像是否可得到正确解码的以下不同方法可能为有可能的。在各种实例中,在导出参考图像集之后,视频解码器30(例如,解码器侧)可检查包含在RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr中的参考图像的存在。如果包含在RefPicSetStCurr0、RefPicSetStCurr1和RefPicSetLtCurr中的参考图像中的任一者不存在于DPB中,那么解码器侧可推断:参考图像已损失,且当前图像很可能将不会得到正确解码,且可采取一些行动以改善所述情形,例如,通过向编码器侧(例如,视频编码器20)通知所述图像损失,且编码器可重新传输所述损失的参考图像或仅使用已知在解码器侧正确用于帧间预测参考的那些参考图像编码下一(多个)图像。
在各种实例中,在导出参考图像集之后,解码器侧可检查包含在RefPicSetStFoll0、RefPicSetStFoll1和RefPicSetLtFoll中的参考图像的存在。如果包含在RefPicSetStFoll0、RefPicSetStFoll1和RefPicSetLtFoll中的参考图像中的任一者不存在于DPB中,那么解码器侧可推断:参考图像已损失,且除非采取一些行动,否则解码次序上的随后图像中的一些图像很可能将不会得到正确解码,且可采取一些行动以补救所述情形,例如,通过向编码器侧通知所述图像损失,且编码器可重新传输所述损失的参考图像或仅使用已知在解码器侧正确用于帧间预测参考的那些参考图像编码下一(多个)图像。
对于编码器侧(例如,视频编码器20)参考图像集组成,通过上述实例,用于编码器侧的参考图像集组成的以下不同方法可能为有可能的。举例来说,在各种实例中,编码器组成参考图像集有关语法结构,以使得在于解码器侧对于当前图像导出参考图像集之后:(1)RefPicSetStCurr0包含且仅包含具有比当前图像早的输出次序且用于在当前图像的帧间预测中供参考的所有短期参考图像的识别信息,(2)RefPicSetStCurr1包含且仅包含具有比当前图像迟的输出次序且用于在当前图像的帧间预测中供参考的所有短期参考图像的识别信息,且(3)RefPicSetLtCurr包含且仅包含用于在当前图像的帧间预测中供参考的所有长期参考图像的识别信息。
在各种实例中,编码器(例如,视频编码器20)可组成参考图像集有关语法结构,以使得在于解码器侧对于当前图像导出参考图像集之后:(1)RefPicSetStCurr0包含且仅包含以下各者的识别信息:1)具有比当前图像早的输出次序且用于在当前图像的帧间预测中供参考的所有短期参考图像,以及2)具有比当前图像早的输出次序且不用于在当前图像的帧间预测中供参考的一个或一个以上短期参考图像,(2)RefPicSetStCurr1包含且仅包含以下各者的识别信息:1)具有比当前图像迟的输出次序且用于在当前图像的帧间预测中供参考的所有短期参考图像,以及2)具有比当前图像迟的输出次序且不用于在当前图像的帧间预测中供参考的一个或一个以上短期参考图像,且RefPicSetLtCurr包含且仅包含以下各者的识别信息:1)用于在当前图像的帧间预测中供参考的所有长期参考图像,以及2)不用于在当前图像的帧间预测中供参考的一个或一个以上长期参考图像。
以此方式,上述个别技术或个别技术的任何组合(包含替代实例的任何组合)可提供与下文有关的技术。然而,下文列表是用于便于理解而提供且不应被视为限制性的。上述技术中的一者或一者以上可一起加以实施或单独加以实施。此外,上述技术为实例,且不应被视为限于那些特定实例技术。
限制参考图像集的temporal_id,使得DPB管理方法良好地适合于时间可调性,可减少发信号耗用,且可使得能够进行用于干净地提取的位流子集的简单位流提取过程。
在图像参数集中用信号发出的长期参考图像子集和索引可包含在切片标头中。此情形可提供长期图像的有效率发信号。
将参考图像集分成各种子集,包含用于当前图像的分离或用于解码次序上的随后图像的分离、用于具有比当前图像早或迟的输出次序的那些图像的分离。这些情形可提供用于参考列表初始化及参考图像列表修改的改善的效率和降低的复杂性。
短期图像识别发信号中的双差分译码可提供改善的效率。扩展且受限制的长期图像识别可提供改善的效率和灵活性。简化的参考图像列表初始化可去除对参考图像列表中的非完成条目的“无参考图像”标记的需要;然而,可能并不是在所有实例中需要此情形。
用于已解码图像输出、插入到DPB中及从DPB中去除的简化过程。图像序列号(POC)可为负的。此情形可实现在POC无法为负的情况下可能不允许的一些重要的使用情况。关于图像是否为解码过程中不需要的参考图像的发信号可能并不是需要的,但所述情形仍可能有可能用信号发出。可能不再需要将参考图像标记为“不用于参考”。
在一个或一个以上实例中,所描述的功能可在硬件、软件、固件或其任何结合中实施。如果在软件中实施,那么功能可作为一个或一个以上指令或代码而存储在计算机可读媒体上或经由计算机可读媒体而加以传输,且由基于硬件的处理单元来执行。计算机可读媒体可包含计算机可读存储媒体(其对应于例如数据存储媒体等有形媒体)或通信媒体,通信媒体包含(例如)根据通信协议促进计算机程序从一处传送到另一处的任何媒体。以此方式,计算机可读媒体一般可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)例如信号或载波等通信媒体。数据存储媒体可为可由一个或一个以上计算机或一个或一个以上处理器存取以检索指令、代码和/或数据结构以用于实施本发明中所描述的技术的任何可用媒体。计算机程序产品可包含计算机可读媒体。
作为实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或可用以存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。而且,任何连接可适当地称为计算机可读媒体。举例来说,如果使用同轴电缆、光缆、双绞线、数字订户线(DSL)或无线技术(例如,红外线、无线电和微波)从网站、服务器或其它远程源传输指令,那么同轴电缆、光缆、双绞线、DSL或无线技术(例如,红外线、无线电和微波)包含在媒体的定义中。然而,应理解,计算机可读存储媒体和数据存储媒体不包含连接、载波、信号或其它暂时性媒体,而是有关非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软磁盘和蓝光光盘,其中磁盘通常以磁性方式再生数据,而光盘通过激光以光学方式再生数据。以上各者的组合也应包含在计算机可读媒体的范围内。
可由例如一个或一个以上数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一个或一个以上处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,可将本文中所描述的功能性提供于经配置以用于编码及解码的专用硬件和/或软件模块内,或并入于组合式编码解码器中。而且,所述技术可完全实施于一个或一个以上电路或逻辑元件中。
本发明的技术可在广泛多种装置或设备中加以实施,所述装置或设备包含无线手机、集成电路(IC)或IC集合(例如,芯片组)。在本发明中描述各种组件、模块或单元以强调经配置以执行所揭示技术的装置的功能方面,但未必需要通过不同硬件单元来实现。而是,如上文所描述,可将各种单元组合于编码解码器硬件单元中,或通过互操作性硬件单元(包含如上文所描述的一个或一个以上处理器)的集合且结合合适软件和/或固件来提供所述单元。
已描述各种实例。这些及其它实例在以下权利要求书的范围内。