具体实施方式
本发明中所描述的技术通常与视频译码有关,例如发信号通知参考图片的信息以及管理存储经解码图片的图片缓冲器,称为经解码图片缓冲器(DPB)。各种视频译码标准界定执行视频译码的方式。视频译码标准的实例包含ITU-T H.261、ISO/IEC MPEG-1视觉、ITU-T H.262或ISO/IEC MPEG-2视觉、ITU-T H.263、ISO/IEC MPEG-4视觉和ITU-TH.264(也称为ISO/IEC MPEG-4AVC),包含其可缩放视频译码(SVC)和多视图视频译码(MVC)扩展。
另外,存在新的视频译码标准,即正由ITU-T视频译码专家组(VCEG)和ISO-IEC运动图片专家组(MPEG)的视频译码联合协作团队(JCT-VC)开发的高效视频译码(HEVC)。HEVC的最新工作草案(WD)且在下文称为HEVC WD8自2012年7月20日起从http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip可用。
本发明中所描述的技术可适用于任何视频译码技术,包含这些实例标准的任一者中所描述的技术。出于说明的目的,本发明中所描述的技术是在HEVC标准的情境中描述;然而,本发明的范围并不受此限制。举例来说,如HEVC标准中所定义,在参考图片组的情境中描述本发明中所描述的技术,应理解,本发明中所描述的技术也可扩展到其它标准,且通常可扩展到任何视频译码技术。
本发明中所描述的视频译码技术可利用参考图片组中所识别的参考图片来对当前图片块进行帧间预测。参考图片是可用于对当前图片内的块进行帧间预测的图片。举例来说,视频数据对应于以相对较高的帧速率重放的个别图片序列。视频译码器(例如视频编码器和视频解码器)通常利用基于块的视频译码技术。就是说,视频译码器可将图片中的每一者分成一组个别视频数据块,接着对图片的每一个别块进行译码。
基于块的视频译码通常涉及两个一股步骤。第一步骤包含预测当前视频数据块。此预测可通过使用帧内预测(即,基于同一图片的相邻、先前经译码块的空间预测)或帧间预测(即,基于一个或一个以上先前经译码图片的时间预测)来实现。这些可用于帧间预测的先前经译码图片可称为参考图片。此预测过程的执行产生当前块的预测性块。另一步骤涉及残余块的译码。一股来说,残余块表示当前块的原始、未经译码版本与预测性块之间的逐像素差异。视频编码器通过计算逐像素差异来形成残余块,而视频解码器将残余块加到预测性块以再现原始块。
举例来说,视频编码器和视频解码器各自包含相应的经解码图片缓冲器。相应的经解码图片缓冲器存储经解码图片。举例来说,作为视频解码的一部分,视频解码器可在解码之后将图片存储在其DPB中。视频解码器可接着随后输出经解码图片以供显示,且/或可利用经解码图片作为用于解码后续经帧间预测图片的参考图片。
视频编码器还可存储经解码图片,作为编码过程的一部分。举例来说,在编码图片之后,视频编码器可执行重构过程,其中视频编码器解码经编码图片。视频编码器可将经解码图片存储在其DPB中,以用于帧间预测后续图片。
换句话说,视频编码器和视频解码器可缓冲用于预测后续经译码图片的经解码图片,且用于将来在DPB中输出。为了高效地利用缓冲存储器(即,DPB),当前和正在开发的视频译码标准可指定DPB管理过程包含将经解码图片存储到DPB中的过程、参考图片的标记过程,以及经解码图片从DPB的输出和移除过程。一股来说,在一些当前和正在开发的视频译码标准中,DPB管理可包含以下方面中的一者或一者以上:图片识别和参考图片识别、参考图片列表构造、参考图片标记、从DPB的图片输出、到DPB中的图片插入,以及从DPB的图片移除。
如上文所述,视频解码器可将图片存储在DPB中,且一个或一个以上这些图片可潜在地为参考图片。根据本发明中所描述的技术,视频编码器可发信号通知指示视频解码器的DPB中的哪些图片可用于对当前图片和/或在解码次序中跟在当前图片之后的图片进行帧间预测的信息。换句话说,视频编码器可发信号通知视频解码器用来得出参考图片组的当前图片的参考图片信息,其中所述参考图片组识别可用于对当前图片和/或在解码次序中跟在当前图片之后的图片进行帧间预测的参考图片。应理解,可用于帧间预测的参考图片不一定用于帧间预测。
视频编码器可发信号通知指示哪些参考图片属于每一图片的参考图片组。举例来说,对于每一图片,视频解码器可接收指示哪些参考图片可用于对所述图片进行帧间预测和/或对在解码次序中跟在所述图片之后的图片进行帧间预测的信息。
一股来说,视频编码器使用图片次序计数(POC)值来识别参考图片。POC值描述对应图片的相对输出次序(即,显示次序)。举例来说,具有较低POC值的图片比具有较高POC值的图片早显示。图片的显示次序和图片的解码次序不应混淆。具有较低POC值的图片不一定比具有较高POC值的图片早解码。类似地,具有较高POC值的图片不一定比具有较低POC值的图片晚解码。在一些实例中,具有较低POC值的图片也比具有较高POC值的图片早解码是可能的。
在一些实例中,为了减少需要发信号通知以识别参考图片的POC值所需的位的数目,视频编码器可发信号通知某些类型的参考图片的全POC值,以及其它类型的参考图片的局部POC值。举例来说,视频编码器可发信号通知全POC值,其包含瞬时可解码刷新(IDR)图片的最高有效位(MSB)和最低有效位(LSB)。IDR图片可为图片序列中的第一图片。对于序列中的其它图片,视频编码器可发信号通知局部POC值,其可仅为LSB。视频解码器可基于非IDR图片和先前IDR图片的所接收LSB来确定非IDR图片的全POC值。
虽然这可在减少为POC值发信号通知所需的位的数目中很好地发挥作用,但可存在随机存取从非IDR图片开始的问题。在随机存取中,视频解码器可从任意随机存取点开始解码经译码视频序列。随机存取点的一个实例为经译码视频序列中不是顺序第一译码的图片(其为IDR图片)的经译码图片。换句话说,在随机存取的一些实例中,视频解码器可从非IDR图片开始解码视频序列。
在此情况下,视频解码器可接收图片的局部POC值,但可能不能够重构所述图片的全POC值,因为IDR图片可能不可用,且因此,IDR图片的全POC值可能不可用。接着,视频解码器可接收将为参考图片的图片的全POC值。然而,因为视频解码器可能不能够重构经解码图片的全POC值,所以在此实例中,视频解码器可能不能够确定所存储的DPB中的哪一图片将为参考图片。换句话说,视频解码器可能不能够将参考图片的POC值映射到存储在DPB中的任何图片,这消极地影响了视频解码器实施随机存取的能力。
本发明中所描述的技术可提供较稳健的随机存取机制。举例来说,视频编码器可发信号通知视频序列中的某些非IDR随机存取点(RAP)图片的全POC值(例如,包含MSB和LSB)。这可允许视频解码器更稳健地实施随机存取,因为视频序列中存在POC值可由视频解码器用来重构经解码图片的全POC值的其它图片。以此方式,本发明中所描述的技术解决可从视频序列中的非IDR图片开始执行随机存取时可存在的问题,且允许将其它非IDR图片用作RAP,从而允许视频序列中的其它图片处的随机存取。
此外,参考图片组中的参考图片可通常分类为长期参考图片和短期参考图片,其中长期参考图片可比短期参考图片存储在DPB中较长。用于长期参考图片的信令开销可潜在较高且复杂。
在一些其它技术(例如,不同于本发明中所描述技术的技术)中,即使视频解码器不需要利用长期参考图片来对当前图片进行帧间预测,视频编码器仍可发信号通知长期参考图片的信息,因为视频解码器可需要使用长期参考图片来对在解码次序中在当前图片之后的图片进行帧间预测。并且,视频编码器可发信号通知指示那些参考图片可用于对当前图片和/或在解码次序中跟在当前图片之后的图片进行帧间预测的信息。
因此,如果视频解码器不需要长期参考图片来对当前图片进行帧间预测,且视频编码器未发信号通知长期参考图片的信息,那么视频解码器可确定在解码次序中在当前图片之后无图片需要使用长期参考图片来进行帧间预测,这可不为真。在此情况下,在这些其它技术中,视频解码器将长期参考图片从其DPB移除可为可能的,这导致视频解码器不能够随后解码不需要利用所移除的长期参考图片来进行帧间预测的图片。
本发明中所描述的技术可提供用以减少在视频解码器不需要使用长期参考图片来对当前图片进行帧间预测但可需要长期参考图片来对在解码次序中在当前图片之后的图片进行帧间预测时发信号通知的信息量的机制。举例来说,视频编码器可在当前图片的片标头中发信号通知第一值,其指示视频解码器是否需要任何长期参考图片来对当前图片进行帧间预测。视频编码器还可在当前图片的片标头中发信号通知第二值,其指示视频解码器是否可潜在地利用长期参考图片中的任一者来对当前图片进行帧间预测(例如,所有长期参考图片是否均可用于对当前图片进行帧间预测)。基于这些值,视频编码器可在长期参考图片的片标头中发信号通知不同量的信息。并且,视频解码器可基于这些值来确定长期参考图片的片标头中预期多少信息。
在一些实例中,本发明中所描述的技术可与DPB管理有关,例如确定可将哪些图片从DPB移除。图片移除和图片输出或显示不应混淆。图片输出或显示是指当显示存储在DPB中的图片时;然而,图片仍可保留在DPB内,因为视频编码器或视频解码器可利用所述图片来对其它图片进行帧间预测。图片移除是指图片从DPB的移除,使得图片不再可用于预测目的。
一些当前技术依靠参考图片标记来确定应将哪些图片从DPB移除。对于参考图片标记,在活动序列参数组中指示用于帧间预测的参考图片的最大数目,称为M(num_ref_frames)。当解码参考图片时,将其标记为“用于参考”。如果参考图片的解码导致M个以上图片被标记为“用于参考”,那么至少一个图片必须标记为“未用于参考”。DPB移除过程接着将标记为“未用于参考”的图片从DPB移除,如果其也不为输出所需要的话。
当解码图片时,其可为非参考图片或参考图片。参考图片可为长期参考图片或短期参考图片,且当标记为“未用于参考”时,其可变为不再为参考所需要。在一些视频译码标准中,可存在改变参考图片的状态的参考图片标记操作。
可存在两种类型的用于参考图片标记的操作:滑动窗和自适应存储器控制。可在图片基础上选择参考图片标记的操作模式;而滑动窗操作可作为具有固定数目的短期参考图片的先入先出队列而起作用。换句话说,以隐含方式,可首先移除具有最早解码时间的短期参考图片(标记为未用于参考的图片)。
然而,自适应存储器控制明确地移除短期或长期图片。自适应存储器控制还实现短期和长期图片等的状态的切换。举例来说,在自适应存储器控制中,视频编码器可发信号通知指定应将哪些图片标记为用于参考的语法元素。视频解码器可接收所述语法元素,且将所述图片标记为被指定。在滑动窗中,视频编码器可无需发信号通知应将哪些图片标记为用于参考。相反,视频解码器可基于哪些图片在滑动窗内而隐含地(即,不接收语法元素)确定应将哪些图片标记为用于参考。
本发明中所描述的技术可依靠存储在DPB中的图片以及当前图片的时间识别值来确定可移除DPB中的哪些图片。在一些实例中,除时间识别值之外,可存在视频编码器和视频解码器可用来确定可移除DBP中的哪一图片的其它因素。
时间识别值(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值的图片的方式界定当前图片的参考图片组。举例来说,如果表示为图片A的图片的temporal_id值大于当前图片的temporal_id值,那么当前图片的参考图片组可不包含图片A。在这些其它技术中,当不需要图片A输出时,视频编码器或视频解码器可将图片A从其相应DPB中移除。然而,视频编码器和视频解码器可需要图片A来对在解码次序中在当前图片之后的temporal_id值大于当前图片的temporal_id值的图片进行帧间预测。
本发明中所描述的技术提供藉此不一定将具有比当前图片的temporal_id值高的temporal_id值的图片从DPB移除的机制。举例来说,如果(1)图片未包含在当前图片的参考图片组中,(2)不需要所述图片输出,且(3)图片的temporal_id值小于或等于当前图片的temporal_id值,那么视频编码器和视频解码器可经配置以将所述图片从其相应DPB移除。通过利用这三个准则,所述技术可确保视频编码器和视频解码器不会出于无心而移除DPB的对在解码次序中在当前图片之后的temporal_id值大于当前图片的temporal_id值的图片进行帧间预测潜在可需要的图片。
在一些实例中,在视频解码器得出参考图片组之后,视频解码器可构造一参考图片列表或若干参考图片列表。视频解码器可接着基于参考图片列表中所识别的参考图片对当前图片进行帧间预测。下文提供参考图片列表构造的简要描述。此外,作为解码经编码图片以存储在DPB中所需的重构过程的一部分,视频编码器可类似地构造参考图片列表。
在一些实例中,视频编码器和视频解码器可构造单个参考图片列表(称为列表0或参考图片列表0),且在其它实例中,视频编码器和视频解码器可构造两个参考图片列表(列表0和列表1)。列表1可称为参考图片列表1。举例来说,对于经单向预测的片,例如P片以及B片的一些实例,视频编码器和视频解码器可构造一个参考图片列表(列表0或列表1)。经单向预测的片指代图片的其中块是从一个参考图片预测的片。对于经双预测的片(例如,块是用两个参考图片预测的片)来说,视频编码器和视频解码器可构造列表0和列表1,其中列表0识别参考图片中的一者,且列表1识别另一者。
通常,第一或第二参考图片列表的参考图片列表构造包含两个步骤:参考图片列表初始化以及参考图片列表重排序(修改)。参考图片列表初始化是基于POC(图片次序计数,与图片的显示次序对准)值的次序将参考图片存储器(例如,DPB)中的参考图片放入列表中的机制。参考图片列表重排序机制可将在参考图片列表初始化期间放入列表中的图片的位置修改为任何新位置,或将DPB中的任何参考图片放入任何位置中,即使所述图片不术语经初始化的列表。可将参考图片列表重排序(修改)之后的一些图片放入列表中的非常远位置中。然而,如果图片的位置超过列表的活动参考图片的数目,那么不将所述图片视为最终参考图片列表的条目。可在每一列表的片标头中发信号通知活动参考图片的数目。
图1是说明可利用本发明中所描述的技术的实例视频编码和解码系统10的框图。如图1中所示,系统10包含源装置12,其产生经编码视频以供目的地装置14解码。源装置12和目的地装置14可各自为视频译码装置的实例。源装置12可经由通信信道16将经编码视频发射到目的地装置14,或可将经编码视频存储在存储媒体17或文件服务器19上,使得经编码视频可由目的地装置14在需要时存取。
源装置12和目的地装置14可包括较宽范围的装置中的任一者,包含无线手持机(例如所谓的“智能”电话)、所谓的“平板”计算装置,或为无线通信而配备的其它此类无线装置。源装置12和目的地装置14的额外实例包含(但不限于)数字电视机、数字直播系统中的装置、无线广播系统中的装置、个人数字助理(PDA)、膝上型计算机、桌上型计算机、平板计算机、e书籍阅读器、数字相机、数字记录装置、数字媒体播放器、视频游戏装置、视频游戏控制台、蜂窝式无线电电话、卫星无线电电话、视频电话会议装置以及视频流式传输装置、无线通信装置等。
在一些实例中,源装置12和目的地装置14可为无线通信而配备。因此,通信信道16可包括适合传输经编码视频数据的无线信道、有线信道或无线与有线信道的组合。类似地,由目的地装置14可经由任何标准数据连接(包含因特网连接)存取文件服务器19。这可包含无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等),或两者的组合,其适合存取存储在文件服务器上的经编码视频数据。
然而,本发明的技术可应用于支持多种多媒体应用(例如空中电视广播、有线电视发射、卫星电视发射、流式视频发射(例如经由因特网))中的任一者的视频译码,编码数字视频以供存储在数据存储媒体上、解码存储在数据存储媒体上的数字视频,或其它应用。在一些实例中,源装置10可经配置以支持单向或双向视频发射以支持例如视频流式传输、视频重放、视频广播和/或视频电话等应用。
在图1的实例中,源装置12包含视频源18、视频编码器20、调制器/解调器(MODEM)22以及输出接口24。在源装置12中,视频源18可包含例如视频捕获装置等来源,例如视频相机、含有先前所捕获视频的视频存档、用以接收来自视频内容提供者的视频的视频馈送接口,和/或用于产生计算机图形数据作为源视频的计算机图形系统,或此些来源的组合。作为一个实例,如果视频源18为视频相机,那么源装置12及目的地装置14可形成所谓的相机电话或视频电话。然而,本发明中所描述的技术一股可适用于视频译码,且可应用于无线和/或有线应用。
所捕获、预捕获或计算机产生的视频可由视频编码器20编码。经编码的视频信息可由调制解调器22根据通信标准(例如无线通信协议)来调制,且经由输出接口24发射到目的地装置14。调制解调器22可包含经设计以用于信号调制的各种混频器、滤波器、放大器或其它组件。输出接口24可包含经设计以用于发射数据的电路,包含放大器、滤波器及一个或一个以上天线。
由视频编码器20编码的所捕获、预捕获或计算机产生的视频还可存储到存储媒体17或文件服务器19上以供以后消耗。存储媒体17可包含蓝光光盘、DVD、CD-ROM、快闪存储器,或任何其它用于存储经编码视频的合适数字存储媒体。存储在存储媒体17上的经编码视频可接着由目的地装置14存取,以用于解码和重放。
文件服务器19可为能够存储经编码视频且将所述经编码视频发射到目的地装置14的任何类型的服务器。实例文件服务器包含网络服务器(例如,用于网站)、FTP服务器、网络附接存储(NAS)装置、本地磁盘驱动器,或能够存储经编码视频数据并将其发射到目的地装置的任何其它类型的装置。经编码视频数据从文件服务器19的发射可为流式发射、下载发射或两者的组合。由目的地装置14可经由任何标准数据连接(包含因特网连接)存取文件服务器19。这可包含无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器、以太网、USB等),或两者的组合,其适合存取存储在文件服务器上的经编码视频数据。
在图1的实例中,目的地装置14包含输入接口26、调制解调器28、视频解码器30以及显示装置32。目的地装置14的输入接口26经由信道16接收信息(作为一个实例),或从存储媒体17或文件服务器17接收信息(作为替代实例),且调制解调器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-TH.261、ISO/IEC MPEG-1视觉、ITU-T H.262或ISO/IEC MPEG-2视觉、ITU-T H.263、ISO/IEC MPEG-4视觉和ITU-T H.264(也称为ISO/IEC MPEG-4AVC),包含其可缩放视频译码(SVC)和多视图视频译码(MVC)扩展。另外,存在新的视频译码标准,即目前正由ITU-T视频译码专家组(VCEG)和ISO-IEC运动图片专家组(MPEG)的视频译码联合协作团队(JCT-VC)开发的高效视频译码(HEVC)标准。HEVC的最新工作草案(WD)且在下文称为HEVC WD8自2012年7月20日起从http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip可用。
然而,本发明的技术不限于任何特定译码标准。仅出于说明目的,根据HEVC标准描述所述技术。
尽管图1中未展示,但在一些方面中,视频编码器20和视频解码器30可各自与音频编码器和解码器集成,且可包含适当的多路复用器-多路分用器(MUX-DEMUX)单元或其它硬件及软件,以处置对共同数据流或单独数据流中的音频与视频两者的编码。如果适用,MUX-DEMUX单元可符合ITU H.223多路复用器协议或例如用户数据报协议(UDP)等其它协议。
视频编码器20和视频解码器30各自可实施为多种合适编码器电路中的任一者,例如一个或一个以上处理器,包含微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当所述技术部分以软件来实施时,装置可将用于所述软件的指令存储在合适的非暂时计算机可读媒体中,且使用一个或一个以上处理器来在硬件中执行所述指令以实施本发明的技术。
视频编码器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可经配置以实施本发明中所描述的实例技术。举例来说,视频编码器20和视频解码器30可允许随机存取。并且,视频编码器20可实施当前图片的每一片的长期参考图片的轻量级信令。这可允许视频编码器20实施复杂性相对较小的发信号通知长期参考图片的信息的方式,其允许视频解码器30实施复杂性相对较小的用于确定需要哪些长期参考图片来进行帧间预测的过程。此外,视频编码器20和视频解码器30可通过基于存储在相应经解码图片缓冲器(DPB)中的图片的时间识别值确定应移除哪些图片来管理相应的DPB。
下文更详细地描述这些技术中的每一者。此外,这些技术可单独或彼此组合实施。然而,在描述这些技术之前,下文描述视频编码器20可在经译码视频数据位流中发信号通知且视频解码器30可在经译码视频数据位流中接收的语法元素。
表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_diff_max_min_coding_block_size |
ue(v) |
log2_min_transform_block_size_minus2 |
ue(v) |
log2_diff_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_minus4、long_term_ref_pic_id_len_delta和num_long_term_ref_pics_pps不存在的任何经译码图片的帧间预测。long_term_ref_pics_present_flag等于1指定非长期参考图片可用于指代图片参数组以及语法元素long_term_ref_pic_id_delta_len_minus4、long_term_ref_pic_id_len_delta和num_long_term_ref_pics_pps存在的一个或一个以上经译码图片的帧间预测。
long_term_ref_pic_id_delta_len_minus4加4指定以long_term_ref_pic_id_delta_add_foll[i]语法元素的位来计的长度。long_term_ref_pic_id_deltaf_en_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_pps[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_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_frames-num_short_term_curr0的范围内,包含0和max_num_ref_frames-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_frames-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.片标头语法
slice_header(){ |
描述符 |
lightweight_slice_flag |
u(1) |
if(!lightweight_slice_flag){ |
|
slice_type |
ue(v) |
pic_parameter_set_id |
ue(v) |
if(IdrPicFlag){ |
|
idr_pic_id |
ue(v) |
no_output_of_prior_pics_flag |
u(1) |
} |
|
if(CraPicFlag) |
|
pic_order_cnt |
i(v) |
Else |
|
pic_order_cnt_lsb |
u(v) |
if(!IdrPicFlag){ |
|
short_term_ref_pic_set_pps_flag |
u(1) |
if(short_term_ref_pic_set_pps_flag) |
|
short_term_ref_pic_set_idx |
ue(v) |
Else |
|
short_term_ref_pic_set() |
|
if(long_term_ref_pics_present_flag) |
|
long_term_ref_pic_set() |
|
} |
|
if(slice_type==PII slice_type==B){ |
|
num_ref_idx_active_override_flag |
u(1) |
if(num_ref_idx_active_override_flag){ |
|
num_ref_idx_l0active_minus1 |
ue(v) |
if(slice_type==B) |
|
num_ref_idx_l1active_minus1 |
ue(v) |
} |
|
} |
|
ref_pic_list_modification() |
|
ref_pic_list_combination() |
|
} |
|
if(entropy_coding_mode_flag&&slice_type!=I) |
|
cabac_init_idc |
ue(v) |
first_slice_in_pic_flag |
u(1) |
if(first_slice_in_pic_flag==0) |
|
slice_address |
u(v) |
if(!lightweight_slice_flag){ |
|
slice_qp_delta |
se(v) |
if(sample_adaptive_offset_enabled_flag) |
|
sao_param() |
|
if(deblocking_filter_control_present_flag){ |
|
disable_deblocking_filter_idc |
|
if(disable_deblocking_filter_idc!=1){ |
|
slice_alpha_c0_offset_div2 |
|
slice_beta_offset_div2 |
|
} |
|
} |
|
if(slice_type==B) |
|
collocated_from_l0flag |
u(1) |
if(adaptive_loop_filter_enabled_flag){ |
|
if(!shared_pps_info_enabled_flag) |
|
alf_param() |
|
alf_cu_control_param() |
|
} |
|
} |
|
} |
|
idr_pic_id识别瞬时解码器刷新(IDR)图片。
pic_parameter_set_id指示图片参数组,且用以指代图片参数组。
如果片属于清晰随机存取(CRA)图片,那么将变量CraPicFlag设定为等于1。
pic_order_cnt可指定当前图片的图片次序计数(POC)值。如果所参考的图片参数组中存在long_term_ref_pic_id_len_delta和long_term_pic_id_len_minus4,那么用以表示此值的位的数目可等于long_term_ref_pic_id_len_delta+long_term_pic_id_len_minus4+4。否则,用来表示此值的位的数目可等于32。
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_frame_buffering的值时,解码器可(但不一定)推断no_output_of_prior_pics_flag等于1,不管no_output_of_prior_pics_flag的实际值如何。
short_term_ref_pic_set_pps_flag等于1指定包含于当前图片的参考图片组中的短期参考图片组的识别信息存在于所参考的图片参数组中。short_term_ref_pic_set_pps_flag等于0指定包含于当前图片的参考图片组中的短期参考图片组的识别信息不存在于所参考的图片参数组中。
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_l0_active_minus1不存在时,可推断num_ref_idx_l0_active_minus1等于num_ref_idx_l0_default_active_minus1。
num_ref_idx_l0active_minus1的值可在0到15的范围内,包含0和15。
num_ref_idx I1active_minus1指定将用来解码所述片的参考图片列表1的最大参考索引。
当当前片为P或B片且num_ref_idx_l1_active_minus1不存在时,可推断num_ref_idx_l1_active_minus1等于num_ref_idx_l1_default_active_minus1。
num_ref_idx_l1_active_minus1的值可在0到15的范围内,包含0和15。
表5.长期参考图片组语法
long_term_ref_pic_set(){ |
描述符 |
long_term_not_used_flag |
u(1) |
if(!long_term_not_used_flag) |
|
long_term_reuse_pps_flag |
u(1) |
if(!long_term_not_used_flag&&!long_term_reuse_pps_flag){ |
|
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()语法结构中的参考图片。一股来说,与短期参考图片相比,长期参考图片可存储在DPB中较长时间。
long_term_not_used_flag等于1可指示无长期参考图片用于当前图片以及在解码次序中跟在当前图片之后的图片的帧间预测。此旗标等于0可指示长期参考图片的使用是通过长期参考图片组语法表的其余语法元素来发信号通知。
当long_term_not_used_flag等于1时,可分别推断num_long_term_pps_curr、num_long_term_add_curr、num_long_term_pps_foll和num_long_term_add_foll为0、0、num_long_term_ref_pics_pps和0。
long_term_reuse_pps_flag等于1可指示如所参考的图片参数组中所指定的所有长期参考图片可用于预测当前图片,且所参考的PPS中未指示且在解码次序中在当前图片之前的长期参考图片可不用于当前图片或在解码次序中在当前图片之后的图片的帧间预测。此旗标等于0可指示长期参考图片的使用是通过长期参考图片组语法表的其余语法元素来发信号通知。
当long_term_reuse_pps_flag等于1时,可分别推断num_long_term_pps_curr、num_long_term_add_curr、num_long_term_pps_foll和num_long_term_add_foll为num_long_term_ref_pics_pps、0、0和0。
当不存在时,可推断此旗标等于0。
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_pp s_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_pps_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_rf_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可允许较多图片取得随机存取点(RAP)的资格。随机存取点可指代视频序列中视频解码器30可从此开始解码图片的图片。举例来说,RAP图片可为不相对于任何其它图片来预测的图片(即,RAP图片的所有片均经帧内预测),且可不相对于在解码次序中在RAP图片之前的任何图片来预测在解码次序中在RAP图片之后的图片。因此,视频解码器30可能够解码RAP图片以及在解码次序中跟在RAP图片之后的图片,而无需在解码次序中比RAP图片早的任何图片。
RAP图片的一个实例是瞬时解码器刷新(IDR)图片,其为视频数据的视频序列中的第一图片。可存在RAP图片的其它实例,如更详细地描述,且所述技术可允许随机存取也从这些RAP图片发生,而不仅限于IDR RAP图片。
在本发明中所描述的技术中,对于非RAP图片(例如,视频解码器30无法从其开始解码的图片),视频编码器20可在片标头中发信号通知形成当前图片的全POC值的一部分的局部识别符值(例如,局部POC值)。举例来说,如表4中所说明,视频编码器20可发信号通知当前图片的pic_order_cnt_lsb值,其中pic_order_cnt_lsb值为当前图片的全POC值的最低有效位(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。
从pic_order_cnt_lsb值,视频解码器30可确定当前图片的全POC值。举例来说,视频解码器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语法元素可指定视频解码器30在用于确定POC值的解码过程中所使用的变量MaxPicOrderCntLsb的值。举例来说:
MaxPicOrderCntLsb=2(log2_max_pic_order_cnt_lsb_minus4+(4)。
从这些所接收语法元素,视频解码器30可如下确定当前图片的POC值。举例来说,视频解码器30可确定当前图片的PicOrderCntMsb。当前图片的POC值可为当前图片的所确定PicOrderCntMsb加当前图片的所接收pic_order_cnt_lsb。
作为确定当前图片的POC值的过程的一部分,视频解码器30可确定变量prevPicOrderCntMsb和prevPicOrderCntLsb。举例来说,如果当前图片为IDR图片,那么视频解码器30可将prevPicOrderCntMsb设定为等于0,且将prevPicOrderCntLsb设定为等于0。否则(即,在当前图片不是IDR图片的情况下),视频解码器30可将prevPicOrderCntMsb设定为等于解码次序中具有比当前图片小或相等的temporal_id的先前参考图片的PicOrderCntMsb,且将prevPicOrderCntLsb设定为等于解码次序中具有比当前图片小或相等的temporal_id的先前参考图片的pic_order_cnt_lsb的值。
使用这些变量值以及语法元素的值(例如,prevPicOrderCntMsb、prevPicOrderCntLsb、pic_order_cnt_lsb和MaxPicOrderCntLsb的值),视频解码器30可基于以下伪码中所陈述的步骤来确定PicOrderCntMsb的值。应理解,视频解码器30可实施以下伪码中所陈述的步骤,以确定每一当前图片的PicOrderCntMsb,其用来得出当前图片的POC值。
在确定当前图片的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值相关联。
在一些例子中,视频解码器30可需要确定是否将此经解码图片用作后续图片的参考图片。举例来说,对于此后续图片,视频解码器30可在参数组(例如,图片参数组)中接收视频解码器30可用于对此后续图片进行帧间预测的长期参考图片的全POC值。在此实例中,假定长期参考图片的POC值等于当前图片的所确定POC值。因此,视频解码器30可基于长期参考图片的所接收POC值以及当前经解码图片的所确定POC值(即,视频解码器30可将长期参考图片的所接收POC值映射到当前经解码图片的POC值)来确定可用于对后续图片进行帧间预测的长期参考图片为当前经解码图片。视频解码器30可接着将当前经解码图片识别为可用于对后续图片进行帧间预测的图片。
通过发信号通知当前图片的局部识别符值(例如,当前图片的POC值的LSB),视频编码器20可减少需要发信号通知的位的量,且视频解码器30可需要接收较少的位。然而,如果视频解码器30开始在非IDR RAP图片处解码,那么可存在某些问题。
举例来说,如上文所述,视频解码器30可基于IDR图片(例如,上文所描述的用来确定全POC值从IDR图片开始递增的prevPicOrderCntLsb和prevPicOrderCntMsb变量)来确定当前图片的全POC值。如果视频解码器30将在非IDR RAP图片处开始解码,那么IDR图片可为不可用,且视频解码器30可能不能够确定非IDR RAP图片的全POC值。在此情况下,如果视频解码器30接收到将用于对在非IDR RAP图片之后的图片进行帧间预测的参考图片的全POC值。举例来说,参考图片可为长期参考图片,且视频编码器20可发信号通知图片参数组中的长期参考图片的全POC值。在此情况下,视频解码器30可能不能够将参考图片的POC值映射到DPB中的图片,因为视频解码器30可能已经不能够确定DPB中的图片的全POC值。
举例来说,在用于对图片进行帧间预测的一些实例中,视频解码器30可构造一起形成参考图片组的多个参考图片子组,如下文更详细地描述。这些参考图片子组识别可用于对图片进行帧间预测且不一定必须用于对图片进行帧间预测的参考图片。
在一些实例中,视频编码器20可发信号通知可用于对图片参数组中的图片进行帧间预测的长期参考图片的全POC值。然而,如果视频解码器30不能够确定图片的全POC值,例如如果视频解码器30开始在非IDR RAP图片处解码,那么视频解码器30可能不能够确定图片参数组中发信号通知的长期参考图片的全POC值指代DPB中所存储的哪一图片。
这可限制随机存取的选择。如更详细地描述,本发明中所描述的技术允许视频解码器30解决利用非IDR RAP图片进行随机存取时可存在的问题。
举例来说,根据本发明中所描述的技术,视频解码器30可能够从非IDR RAP图片解码。非IDR RAP图片可为满足以下准则的图片。在此实例中,将非IDR RAP图片表示为picR。
非IDR RAP图片picR的第一准则是picR不是IDR图片。非IDR RAP图片picR的第二准则是输出次序和解码次序中在picR之后的所有图片可正确地解码。举例来说,令picR的POC值为rPOC,且令picA为同一经译码视频序列中在解码次序和输出次序中在picR之后的图片,且令pica的POC值为aPOC。当在picR处执行随机存取时,在同一经译码视频序列中且在输出次序中跟在picA之后的所有图片可正确地解码。
对于非IDR RAP图片picR,如果当在picR处执行随机存取时,在同一经译码视频序列中且在输出次序中跟在picR之后的所有图片可正确地解码,那么将所述非IDR RAP图片picR称为清晰随机存取(CRA)图片。如果此条件对于非IDR RAP图片picR不为真,那么将其称为逐渐解码刷新(GDR)图片。
非IDR RAP图片的额外实例为断链存取(BLA)图片。BLA图片在预测结构方面(例如,跟在BLA图片的哪些图片可用于帧间预测)可类似于CRA图片。
本发明中所描述的技术可允许视频解码器30从非IDR RAP图片开始执行随机存取,非IDR RAP图片的实例包含CRA图片、GDR图片和BLA图片,但所述技术可扩展到其它类型的非IDR RAP图片。举例来说,表4定义CraPicFlag语法元素。如果当前图片为CRA图片,那么根据表4,视频编码器20可将CraPicFlag设定为真(即,值1)。如表4中所指示,如果CraPicFlag为真,那么视频编码器20可发信号通知当前图片的全POC值。举例来说,如果CraPicFlag为真,那么视频编码器20可发信号通知包含当前图片的POC值的最高有效位(MSB)和LSB的POC值。
以此方式,如果视频解码器30从CRA图片(即,非IDR RAP图片)开始执行随机存取,那么视频解码器30可能够将非IDR RAP图片的全POC值存储在DPB中,即使IDR图片不可用也是如此。接着,视频解码器30可能够基于CRA图片的全POC值确定CRA图片之后的图片的全POC值。
举例来说,对于在CRA图片之后的非RAP图片,视频解码器30可接收局部识别符值(例如,POC值的LSB)。从CRA图片的POC值和全POC值的LSB,视频解码器30可能够确定后续图片的全POC值。这可允许视频解码器30利用CRA图片以及CRA图片之后的图片来进行帧间预测。举例来说,如果视频编码器20发信号通知可用于对后面图片进行帧间预测的参考图片(例如,短期参考图片或长期参考图片)的全POC值,那么视频解码器30可能够识别DPB中的哪一图片为可用于对后续图片进行帧间预测的参考图片。
以此方式,对于在解码次序中在非IDR RAP图片之后的非RAP图片,视频解码器30可基于非IDR RAP图片的全POC值来识别可用于对非RAP图片进行帧间预测的参考图片。举例来说,视频解码器30可能够通过将DPB中视频解码器30确定为在图片参数组中发信号通知的长期图片的图片包含在参考图片子组中来构造参考图片子组。
以此方式,视频解码器30可从CRA图片开始执行随机存取,CRA图片是非IDR RAP图片的一个实例。然而,本发明的方面不受此限制。在其它实例中,如果当前图片为GDR图片,那么视频编码器20可将GdrPicFlag设定为真,且可发信号通知GDR图片的全POC值。类似地,如果当前图片为BLA图片,那么视频编码器20可将BlaPicFlag设定为真,且可发信号通知BLA图片的全POC值。举例来说,在以上实例中,视频编码器20可用“if(GdrPicFlag)”或“if(BlaPicFlag)”来代替表4中的“if(CraPicFlag)”。
或者,视频编码器20用“if(CraPicFlag II GdrPicFlag II BlaPicFlag)”来代替表4的“if(CraPicFlag)”。在此情况下,如果当前图片为CRA图片、GDR图片或BLA图片中的任一者,那么视频编码器20可发信号通知所述图片的全POC值。在每个实例中,对于视频解码器30来说,不一定对所有可能的非IDR RAP图片执行随机存取,且视频编码器20可限制视频解码器30可利用哪些非IDR RAP图片来进行随机存取。举例来说,视频编码器20可用“if(CraPicFlag II GdrPicFlag)”来代替表4中的“if(CraPicFlag)”,从而限制对CRA和GDR图片的随机存取,且不允许对BLA图片的随机存取。对于视频解码器30可利用哪些图片来进行随机存取,其它排列和组合可为可能的。
此外,视频编码器20不一定发信号通知RAP图片的全POC值。举例来说,在一些例子中,视频编码器20可单独地发信号通知RAP图片的POC值的MSB以及POC值的LSB。举例来说,视频编码器20可在片标头中发信号通知pic_order_cnt_msb值。
pic_order_cnt_msb指定当前图片的图片次序计数的MSB部分。如果所参考的图片参数组中存在long_term_ref_pic_id_len_delta和long_term_pic_id_len_minus4,那么用以表示此值的位的数目可等于long_term_ref_pic_id_len_delta+long_term_pic_id_len_minus4-log2_max_pic_order_cnt_lsb_minus4。否则,用来表示此值的位的数目可等于32-log2_max_pic_order_cnt_lsb_minus4。
在此实例中,视频解码器30可如下确定当前图片的全POC值:
PicOrderCnt=pic_order_cnt_msb<<(log2_max_pic_order_cnt_lsb_minus4+4)+pic_order_cnt_lsb。
在此实例中,视频编码器20可发信号通知非IDR RAP图片的pic_order_cnt_msb,且单独发信号通知pic_order_cnt_lsb,而不是发信号通知非IDR RAP图片的所有位(例如,MSB与LSB的组合)。视频解码器30可单独地解码非IDR RAP图片的全POC值的MSB部分和LSB部分。视频解码器30可接着利用以上计数来确定非IDR RAP图片的全POC值。
此外,在一些其它实例中,视频编码器20可不发信号通知非IDR RAP图片的全POC值。举例来说,视频编码器20可发信号通知CRA、GDR或BLA图片的MSB部分。在此实例中,视频解码器30可以与用于从POC值的MSB部分确定全POC值的先前等式类似的方式确定这些图片的全POC值。
上文描述视频编码器20和视频解码器30允许从非IDR RAP图片的随机存取的实例方式。因此,在一些实例中,视频译码器(例如,视频编码器20或视频解码器30)可译码(例如,编码或解码)不是瞬时解码器刷新(IDR)图片的随机存取点(RAP)图片的全识别符值。RAP图片可为用于开始位流的解码的图片类型,其中不相对于在解码次序中在RAP图片之前的任何图片来对在解码次序中跟在RAP图片之后的至少一些图片进行帧间预测。如上文所述,非IDR RAP图片的实例包含CRA、BLA和GDR图片。
在一些实例中,视频译码器可译码非IDR RAP图片的全识别符值的所有位(例如,MSB部分和LSB部分)。在一些其它实例中,视频译码器可单独译码非IDR RAP图片的全识别符值的MSB部分和LSB部分。非IDR RAP图片的识别符值的一个实例为非IDR RAP图片的POC值。
视频译码器可对第一非RAP图片的局部识别符值进行译码。在此实例中,局部识别符值可为第一非RAP图片的全POC值的一部分。此第一非RAP图片在解码次序中可跟在非IDR RAP图片之后。
视频译码器还可基于第一非RAP图片的全识别符值对第二非RAP图片进行帧间预测。举例来说,视频译码器可基于第一非RAP图片的全识别符值来确定视频译码器将使用第一非RAP图片来对第二非RAP图片进行帧间预测。在此情况下,视频译码器基于第一非RAP图片对第二非RAP图片进行帧间预测。第二非RAP图片在解码次序中跟在非IDR RAP图片和第一非RAP图片两者之后。
在一些实例中,视频译码器可进一步在参数组(例如图片参数组)中译码可用于对第二非RAP图片进行帧间预测的一个或一个以上参考图片(例如,长期参考图片)的全识别符值。在此实例中,视频译码器(例如,视频解码器30)可基于非IDR RAP图片的全识别符值以及第一非RAP图片的局部识别符值来确定第一非RAP图片的全识别符值。
视频译码器可确定一个或一个以上参考图片中的至少一者的全识别符值是否与第一非RAP图片的全识别符值相同。如果一个或一个以上参考图片中的至少一者的全识别符值与第一非RAP图片的全识别符值相同,那么视频译码器可将第一非RAP图片包含在识别可用于对第二非RAP图片进行帧间预测的参考图片的参考图片子组中。
在一些实例中,本发明中所描述的技术可与在片标头中发信号通知长期参考图片有关。一股来说,可将参考图片分类为短期参考图片或长期参考图片。根据本发明中所描述的技术,视频编码器20可发信号通知指示当前图片的参考图片组的信息。当前图片的参考图片组可识别可用于对当前图片进行帧间预测且/或可用于对在解码次序中在当前图片之后的图片进行帧间预测的参考图片。参考图片组中的参考图片可为短期参考图片和长期参考图片。
举例来说,视频编码器20可发信号通知指示哪些短期参考图片属于所述参考图片组以及哪些长期参考图片属于所述参考图片组的信息。从此信息,视频解码器30可构造多个参考图片子组,其中每一参考图片子组识别属于参考图片组的零个或零个以上参考图片。从所构造的参考图片子组,视频解码器30可得出参考图片组。
视频解码器30可实施用于每图片得出一个参考图片组的得出过程。举例来说,视频解码器30可在对片标头进行解码之后,但在解码当前图片内的任何块之前且在构造识别用于对当前图片内的片进行帧间预测的参考图片的参考图片列表之前,得出参考图片组。
参考图片子组可包含识别属于参考图片组的短期参考图片以及属于所述参考图片组的长期参考图片的子组。在一些实例中,视频解码器30可构造六个参考图片子组,其中四个参考图片子组包含零个或零个以上短期参考图片,且两个参考图片子组包含零个或零个以上长期参考图片。用于短期参考图片的四个参考图片子组可称为RefPicSetStCurr0、RefPicSetStCurrl、RefPicSetStFoll0和RefPicSetStFol11。用于长期参考图片的两个参考图片子组可称为RefPicSetLtCurr和RefPicSetLtFoll。
应理解,所述六个参考图片子组是出于说明的目的而描述,且不应解释为具有限制性。作为一个实例,视频解码器30可例如通过组合所述子组中的一些来构造比六个参考图片子组少的参考图片子组。下文描述这些实例中的一些,其中视频解码器30构造少于六个参考图片子组。然而,出于说明的目的,结合其中视频解码器30构造六个参考图片子组的实例来描述所述技术。
在一些实例中,RefPicSetStCurr0参考图片子组可包含且可仅包含具有比当前图片早的输出或显示次序且可用于在当前图片的帧间预测中参考且可用于在解码次序中跟在当前图片之后的一个或一个以上图片的帧间预测中参考的所有短期参考图片的识别信息,例如POC值。RefPicSetStCurr1参考图片子组可包含且可仅包含具有比当前图片晚的输出或显示次序且可用于在当前图片的帧间预测中参考且可用于在解码次序中跟在当前图片之后的一个或一个以上图片的帧间预测中参考的所有短期参考图片的识别信息。
RefPicSetStFoll0参考图片子组可包含且可仅包含具有比当前图片早的输出或显示次序、可用于在解码次序中跟在当前图片之后的一个或一个以上图片的帧间预测中参考且无法用于在当前图片的帧间预测中参考的所有短期参考图片的识别信息。RefPicSetStFoll1参考图片子组可包含且可仅包含具有比当前图片晚的输出或显示次序、可用于在解码次序中跟在当前图片之后的一个或一个以上图片的帧间预测中参考且无法用于在当前图片的帧间预测中参考的所有短期参考图片的识别信息。
RefPicSetLtCurr参考图片子组可包含且可仅包含可用于在当前图片的帧间预测中参考且可用于在解码次序中跟在当前图片之后的一个或一个以上图片的帧间预测中参考的所有长期参考图片的识别信息。RefPicSetLtFoll参考图片子组可包含且可仅包含可用于在解码次序中跟在当前图片之后的一个或一个以上图片的帧间预测中参考且无法用于在当前图片的帧间预测中参考的所有长期参考图片的识别信息。
如果当前图片为IDR图片,那么视频解码器30可将RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0、RefPicSetStFoll1、RefPicSetLtCurr和RefPicSetLtFoll参考图片子组设定为空。如上文所述,不对IDR图片进行帧间预测,且因此,不存在用于IDR图片的参考图片。
如表4中所指示,片标头指代short_term_ref_pic_set()语法结构,其在表3中进一步界定。表3界定num_short_term_curr0、num_short_term_curr1、num_short_term_foll0和num_short_term_foll1语法元素。这些语法元素可分别界定RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0和RefPicSetStFoll1参考图片子组中的图片的数目。
基于这些语法元素和short_term_ref_pic_id_delta_minus1语法元素,视频解码器30可构造RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0和RefPicSetStFoll1参考图片子组。一股来说,视频解码器30构造识别短期参考图片的这些参考图片子组的特定方式可为不重要的。以下伪码描述视频解码器30可构造用于短期参考图片的参考图片子组的一种实例方式。
对于长期参考图片,视频编码器20可在图片参数组中发信号通知候选长期参考图片列表的识别符(例如,全POC值)。候选长期参考图片指代可潜在地属于参考图片组但不一定必须属于所述参考图片组的长期参考图片。候选长期参考图片列表的一个实例为图片参数组中的long_term_ref_pic_id_pps[i]语法元素。
应理解,视频编码器20也可任选地在序列参数组中发信号通知候选长期参考图片的全POC值。出于说明的目的,结合视频编码器20在图片参数组中发信号通知候选长期参考图片的全POC值的实例来描述所述技术。
视频编码器20可发信号通知到候选长期参考图片列表中的索引,其指示哪些长期参考图片属于参考图片组。举例来说,表5包含long_term_ref_pic_set_idx_pps语法元素,其指定到候选长期参考图片列表中的索引,视频解码器30将继承所述索引,以用于得出参考图片组的目的。
此外,可存在不在候选长期参考图片列表中且属于参考图片组的长期参考图片。举例来说,表5包含long_term_ref_pic_id_delta_add语法元素。此语法元素指示将包含于当前图片的参考图片组中但图片参数组中未指定的长期参考图片。
表5还包含num_long_term_pps_curr、num_long_term_add_curr、num_long_term_pps_foll和num_long_term_add_foll语法元素。这些语法元素指示将包含在RefPicSetLtCurr和RefPicSetLtFoll参考图片子组中的长期参考图片的数目。举例来说,num_long_term_pps_curr和num_long_term_add_curr的值的总和指示将包含在RefPicSetLtCurr参考图片子组中的长期参考图片的数目。num_long_term_pps_foll和num_long_term_add_foll的值的总和指示将包含在RefPicSetLtFoll参考图片子组中的长期参考图片的数目。
在一些其它技术中,视频编码器20可发信号通知表5的所有这些语法元素,即使视频解码器30并不需要任何长期参考图片来对当前图片进行帧间预测也是如此。举例来说,因为参考图片组可识别可用于对当前图片以及在解码次序中跟在当前图片之后的图片进行帧间预测的参考图片,即使视频解码器30并不需要利用任何长期参考图片来进行帧间预测也是如此,所以这些其它技术可仍发信号通知用于长期参考图片的这些语法元素,因为在解码次序中跟在当前图片之后的图片可利用长期参考图片。
作为说明性实例,假定视频编码器20在图片参数组中发信号通知了三个长期参考图片。在一些实例中,所述图片中的许多图片可不使用这些长期参考图片中的任一者来进行帧间预测。然而,在这些其它技术中,即使视频解码器30不需要这些长期参考图片中的任一者来对当前图片进行帧间预测,视频编码器20仍可在当前图片的片标头中发信号通知所有三个长期参考图片的语法元素,因为视频解码器30可需要这些长期参考图片来对在解码次序中跟在当前图片之后的图片进行帧间预测。在这些其它技术中,如果视频编码器20未发信号通知长期参考图片,那么视频解码器30可确定不再需要这些长期参考图片来进行帧间预测,且可将这些参考图片从DPB移除。
对当前图片进行帧间预测所不需要的长期参考图片的语法元素的此不必要信令消耗带宽。此外,用于长期参考图片的信令开销可能已经较高且复杂,因为视频编码器20可需要发信号通知到长期参考图片的候选列表中的索引值,且发信号通知不在候选长期参考图片列表中的长期参考图片的POC值。
为了解决此问题,视频编码器20可发信号通知指示视频解码器30是否需要利用任何长期参考图片来对当前图片进行帧间预测的值。此值进一步指示不参考长期参考图片来对在解码次序中跟在当前图片之后的图片进行帧间预测。
举例来说,表5包含long_term_not_used_flag。当此旗标为真时,无长期参考图片用于当前图片以及在解码次序中跟在当前图片之后的图片的帧间预测。此旗标等于0指示视频编码器20可使用表5的长期参考图片组语法中的语法元素(例如num_long_term_pps_curr、num_long_term_add_curr、num_long_term_pps_foll、num_long_term_add_foll、long_term_ref_pic_set_idx_pps和long_term_ref_pic_id_delta_add语法元素)来发信号通知长期参考图片的使用。
在一些实例中,当long_term_not_used_flag为真(例如,值1)时,视频编码器20可不发信号通知指示哪些长期参考图片属于当前图片的参考图片组中的语法元素,因为视频解码器30不需要任何长期参考图片来对当前图片进行帧间预测。举例来说,当long_term_not_used_flag为真时,视频编码器20可不发信号通知num_long_term_pps_curr、num_long_term_add_curr、num_long_term_pps_foll、num_long_term_add_foll、long_term_ref_pic_set_idx_pps和long_term_ref_pic_id_delta_add语法元素。
此外,long_term_not_used_flag为真向视频解码器30指示在解码次序中在当前图片之后无图片使用长期参考图片来进行帧间预测。在一些实例中,当long_term_not_used_flag的值为1时,如果不再需要输出,那么视频解码器30可将长期参考图片从DPB移除,因为当前图片和在解码次序中跟在当前图片之后的图片不使用长期参考图片来进行帧间预测。
根据本发明中所描述的技术,如果long_term_not_used_flag为假(例如,值0),那么视频编码器20可发信号通知指示所参考参数组中所指定的所有长期参考图片均可用于对当前图片进行帧间预测的另一值。举例来说,表5指示“if(!long_term_not_used_flag)”(即,long_term_not_used_flag为假),那么视频编码器20可发信号通知long_term_reuse_pps_flag。当long_term_reuse_pps_flag为真(例如,值1)时,如所参考图片参数组中所指定的所有长期参考图片可用于当前图片的预测,且无所参考PPS中未指示的长期参考图片可用于当前图片或在解码次序中跟在当前图片之后的图片的帧间预测。
在一些实例中,当long_term_reuse_pps_flag为真时,视频编码器20可不发信号通知num_long_term_pps_curr、num_long_term_add_curr、num_long_term_pps_foll、num_long_term_add_foll、long_term_ref_pic_set_idx_pps和long_term_ref_pic_id_delta_add语法元素。这可因为long_term_reuse_pps_flag为真指示所参考的图片参数组中的所有长期参考图片可用于对当前图片进行帧间预测。因此,可能无需发信号通知到候选列表中的索引,从而导致long_term_ref_pic_set_idx_pps语法元素为多余。因为不需要long_term_ref_pic_set_idx_pps语法元素,所以不需要num_long_term_pps_curr和num_long_term_pps_foll语法元素。
并且,long_term_reuse_pps_flag为真指示无所参考PPS中未指示的长期参考图片可用于当前图片或在解码次序中跟在当前图片之后的图片的帧间预测。这意味着不需要long_term_ref_pic_id_delta_add语法元素。举例来说,long_term_ref_pic_id_delta_add语法元素指示所参考的PPS中未指定但属于参考图片组的长期参考图片。然而,当long_term_reuse_pps_flag为真时,无不包含在所参考的PPS中的参考图片用于对当前图片或在解码次序中跟在当前图片之后的图片进行帧间预测,意味着不存在long_term_ref_pic_id_delta_add语法元素的值。因为视频编码器20不需要发信号通知long_term_ref_pic_id_delta_add语法元素,所以视频编码器20可不需要发信号通知num_long_term_add_curr和num_long_term_add_foll语法元素。
应理解,尽管本发明中描述long_term_not_used_flag和long_term_reuse_pps_flag两者,但本发明的方面不受此限制。在一些实例中,长期参考图片组语法可包含long_term_not_used_flag,但可不包含long_term_reuse_pps_flag。在一些实例中,长期参考图片组语法可包含long_term_reuse_pps_flag,但可不包含long_term_not_used_flag。
如表5中所指示,在long_term_not_used_flag和long_term_reuse_pps_flag两者不为真的例子中,视频编码器20可发信号通知num_long_term_pps_curr、num_long_term_add_curr、num_long_term_pp s_foll、num_long_term_add_foll、long_term_ref_pic_set_idx_pps和long_term_ref_pic_id_delta_add语法元素。举例来说,当long_term_not_used_flag和long_term_reuse_pps_flag两者不为真时,那么可存在视频解码器30需要用于对当前图片进行帧间预测的长期参考图片,且可存在不包含在所参考的图片参数组中的视频解码器30可需要用来对当前图片或在解码次序中跟在当前图片之后的图片进行帧间预测的长期参考图片。
如上文所述,视频解码器30可实施以上伪码来构造RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0和RefPicSetStFoll1参考图片子组。下文描述视频解码器30可构造RefPicSetLtCurr和RefPicSetLtFoll参考图片子组的方式。
如果片标头指示long_term_ref_pics_present_flag为假(例如,值0),那么视频解码器30可将RefPicSetLtCurr和RefPicSetLtFoll参考图片子组设定为空。否则,在给定片标头中的long_term_ref_pic_set()语法结构的例子的情况下,视频解码器30可如下构造RefPicSetLtCurr和RefPicSetLtFoll参考图片子组。
如果long_term_not_used_flag为真(例如,值1),那么视频解码器30可将RefPicSetLtCurr参考图片子组设定为空,且将RefPicSetLtFoll参考图片子组设定为空。这指示不存在包含于RefPicSetLtCurr和RefPicSetLtFoll参考图片子组中的参考图片。否则,如果long_term_not_used_flag为假(例如,值0),且long_term_reuse_pps_flag为真(例如,值1),那么视频解码器30可将图片参数组中的所有长期参考图片包含在RefPicSetLtCurr参考图片子组中。在此情况下,视频解码器30可将RefPicSetLtFoll参考图片子组设定为空。
视频解码器30可实施以下伪码来构造RefPicSetLtCurr参考图片子组。
否则(即,long_term_not_used_flag和long_term_reuse_pps_flag两者为假),那么视频解码器30可构造RefPicSetLtCurr参考图片子组,如以下伪码中所指示。
并且,当long_term_not_used_flag和long_term_reuse_pps_flag两者为假时,视频解码器30可构造RefPicSetLtFoll参考图片子组,如以下伪码中所指示。
上文描述视频编码器20可发信号通知长期参考图片的信息的一种实例方式,以及视频解码器30可构造参考图片组的参考图片子组的方式,所述参考图片子组包含包括长期参考图片的参考图片子组。然而,本发明的方面不受此限制。下文描述是片标头的部分的长期参考图片组语法的另一实例。
表6.长期参考图片组语法
long_term_ref_pic_set(){ |
描述符 |
long_term_pps_curr_flag |
u(1) |
if(!long_term_pps_curr_flag) |
|
long_term_pps_foll_flag |
u(1) |
if(!long_term_pps_curr_flag&&!long_term_pps_foll_flag){ |
|
num_long_term_pps_curr |
ue(v) |
num_long_term_pps_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) |
} |
|
num_long_term_add_curr |
ue(v) |
num_long_term_add_foll |
ue(v) |
for(i=0;i<num_long_term_add_curr+num_long_term_add_foil;i++) |
|
long_term_ref_pic_id_delta_add[i] |
i(v) |
} |
|
表6的长期参考图片组语法包含long_term_pps_curr_flag和long_term_pps_foll_flag。
long_term_pps_curr_flag等于1指示如所参考图片参数组中所指定的所有长期参考图片均可用于当前图片的预测。此旗标等于1指示当前图片的长期参考图片的使用是通过长期参考图片组语法表的其余语法元素来发信号通知。
当long_term_pps_curr_flag等于1时,推断num_long_term_pps_curr和num_long_term_pps_foll分别等于num_long_term_ref_pics_pps和0,且推断long_term_ref_pic_idx_pps[i]为i,其中所有i值均在0到num_long_term_ref_pics_pps-l的范围内,包含0和num_long_term_ref_pics_pps-1。
long_term_pps_foll_flag等于1指示无长期参考图片用于当前图片的帧间预测,且所参考的图片参数组(PPS)中所指示的所有长期参考图片可用于在解码次序中跟在当前图片之后的图片的帧间预测。此旗标等于0指示长期参考图片的使用是通过长期参考图片组语法表的其余语法元素来发信号通知。当long_term_pps_foll_flag不存在时,可推断所述值为等于0。
当long_term_pps_foll_flag等于1时,推断num_long_term_pps_curr和num_long_term_pps_foll分别等于0和num_long_term_ref_pics_pps,且推断long_term_ref_pic_idx_pps[i]为i,其中所有i值均在0到num_long_term_ref_pics_pps-1的范围内,包含0和num_long_term_ref_pics_pps-1。
表6的long_term_pps_curr_flag和long_term_pps_foll_flag可允许视频编码器20在某些情况下不发信号通知long_term_ref_pic_set_idx_pps索引值,以及num_long_term_pps_curr和num_long_term_pps_foll语法元素。在这些情况下,视频解码器30可无需继承图片参数组的候选长期参考图片列表中的参考图片中的任一者。
举例来说,当long_term_pps_curr_flag为真(例如,值1)时,视频解码器30可确定所参考图片参数组中的所有长期参考图片均可用于对当前图片进行帧间预测。在此情况下,可不需要发信号通知到候选长期参考图片列表中的索引值,因为候选长期参考图片列表中的所有长期参考图片均可用于对当前图片进行帧间预测。因此,当long_term_pps_curr_flag为真时,视频编码器20可不需要发信号通知且视频解码器30可不需要接收long_term_ref_pic_set_idx_pps语法元素。因为视频编码器20可不需要发信号通知且视频解码器30可不需要接收long_term_ref_pic_set_idx_pps语法元素,所以视频编码器20可不需要发信号通知且视频解码器30可不需要接收num_long_term_pps_curr和num_long_term_pps_foll语法元素。
并且,当long_term_pps_foll_flag为真(例如,值1)时,视频解码器30可确定所参考的图片参数组中无长期参考图片可用于对当前图片进行帧间预测,且所有长期参考图片均可用于对在解码次序中跟在当前图片之后的图片进行帧间预测。在此情况下,可不需要发信号通知到候选长期参考图片列表中的索引值,因为候选长期参考图片列表中的所有长期参考图片均可用于对在解码次序中跟在当前图片之后的图片进行帧间预测。因此,类似于上文,当long_term_pps_foll_flag为真时,视频编码器20可不需要发信号通知且视频解码器30可不需要接收long_term_ref_pic_set_idx_pps语法元素。因为视频编码器20可不需要发信号通知且视频解码器30可不需要接收long_term_ref_pic_set_idx_pps语法元素,所以视频编码器20可不需要发信号通知且视频解码器30可不需要接收num_long_term_pps_curr和num_long_term_pps_foll语法元素。
在其中视频编码器20发信号通知且视频解码器30接收表6的实例中的长期参考图片组语法的实例中,视频编码器20和视频解码器30可构造短期参考图片子组(例如,RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0和RefPicSetStFoll1参考图片子组),如上文所述。为了构造长期参考图片子组(例如,RefPicSetLtCurr和RefPicSetLtFoll参考图片子组),视频编码器20和视频解码器30可实施以下伪码。
如RefPicSetLtCurr和RefPicSetLtFoll参考图片子组的以上得出中所指示,视频编码器20和视频解码器30可利用long_term_ref_pic_idx_pps语法元素来构造RefPicSetLtCurr和RefPicSetLtFoll参考图片子组。然而,如果long_term_pps_curr_flag为假(例如,值0),且long_term_pps_foll_flag为假(例如,值0),那么视频编码器20可不发信号通知long_term_ref_pic_idx_pps语法元素。在这些情况下,视频编码器20和视频解码器30可推断long_term_ref_pic_idx_pps语法元素的值。举例来说,视频编码器20和视频解码器30可将long_ref_pic_idx_pps[i]的值推断为等于i,其所有值均在0到num_long_term_ref_pics_pps-1的范围内,包含0和num_long_term_ref_pics_pps-1。
应理解,尽管表6的实例语法包含long_term_pps_curr_flag和long_term_pps_foll_flag两者,但本发明的方面不受此限制。在其它实例中,视频编码器20可发信号通知long_term_pps_curr_flag,且不发信号通知long_term_pps_foll_flag。在其它实例中,视频编码器20可发信号通知long_term_pps_foll_flag,且不发信号通知long_term_pps_curr_flag。
上文描述视频编码器20可发信号通知且视频解码器30可接收可用于对当前图片和/或在解码次序中跟在当前图片之后的图片进行帧间预测的长期参考图片的信息的实例方式。举例来说,视频编码器20和视频解码器30可经配置以实施上文相对于表5所述的实例技术。在其它实例中,视频编码器20和视频解码器30可经配置以实施上文相对于表6所描述的实例技术。
举例来说,视频译码器(例如,视频编码器20或视频解码器30)可译码指示长长期参考图片是否可用于对当前图片和/或在解码次序中跟在当前图片之后的图片进行帧间预测的旗标的值。举例来说,视频译码器可译码当前图片的片的片标头中的long_term_not_used_flag的值。
当所述旗标的值为第一值时,视频译码器可仅利用一个或一个以上短期参考图片来对当前图片进行帧间预测。举例来说,当long_term_not_used_flag的值为1(例如,真)时,那么视频译码器无法使用长期参考图片来对当前图片和在解码次序中跟在当前图片之后的图片进行帧间预测。在此实例中,视频译码器可将RefPicSetLtCurr和RefPicSetLtFoll参考图片子组设定为空。
并且,在此实例中,视频译码器可构造至少一个短期参考图片子组(例如,RefPicSetStCurr0、RefPicSetStCurr1、RefPicSetStFoll0和RefPicSetStFoll1参考图片子组中的至少一者)。视频译码器可利用包含于至少一个短期参考图片子组中的短期参考图片中的一者或一者以上来对当前图片进行帧间预测。
在一些实例中,视频译码器可进一步译码另一旗标的值。举例来说,如果long_term_not_use_flag为假(例如,值0),那么视频译码器可译码long_term_reuse_pps_flag。在此实例中,long_term_not_use_flag开始值0指示长期参考图片可用于对当前图片和在解码次序中跟在当前图片之后的图片进行帧间预测。如上文所述,long_term_reuse_pps_flag指示参数组(例如,所参考图片参数组)中所指定的所有长期参考图片是否均可用于当前图片的帧间预测,以及参数组中未指定且在解码次序中在当前图片之前的长期参考图片是否可用于对当前图片或在解码次序中跟在当前图片之后的图片进行帧间预测。
当long_term_reuse_pps_flag的值为1(例如,真)时,long_term_reuse_pps_flag指示参数组中所指定的所有长期参考图片均可用于当前图片的帧间预测,且所述参数组中未指定且在解码次序中在当前图片之前的长期参考图片无法用于当前图片或在解码次序中跟在当前图片之后的图片的帧间预测。当long_term_reuse_pps_flag为1时,视频译码器可构造长期参考图片子组(例如,RefPicSetLtCurr),其包含可用于在当前图片的帧间预测中参考且可用于在解码次序中跟在当前图片之后的图片的帧间预测中参考的所有长期参考图片。在这些实例中,视频译码器可构造RefPicSetLtCurr参考图片子组,而不译码到参数组中的索引。
举例来说,long_term_ref_pic_set_idx_pps[i]语法元素可提供到候选长期参考图片列表中的索引(例如,到图片参数组中所指定的长期参考图片中的索引)。在long_term_reuse_pps_flag为1的实例中,视频译码器可能够构造RefPicSetLtCurr参考图片子组,而不译码long_term_ref_pic_set_idx_pps[i]语法元素。
当long_term_not_used_flag和long_term_reuse_ppg_flag的值均为0(例如,假)时,这可指示可用长期参考图片来对当前图片和在解码次序中跟在当前图片之后的图片进行帧间预测,不是参考组中所指定的所有长期参考图片均可用于当前图片的帧间预测,以及参数组中未指定且在解码次序中在当前图片之前的长期参考图片可用于当前图片和在解码次序中跟在当前图片之后的图片的帧间预测。在此情况下,视频译码器可构造RefPicSetLtCurr和RefPicSetLtFoll参考图片子组两者。在一些实例中,视频译码器可译码到参数组中的至少一个索引(例如,到指定长期参考图片中的索引),且可基于所述至少一个索引来构造RefPicSetLtCurr和RefPicSetLtFoll参考图片子组。
在一些其它实例中,视频译码器可译码当前图片的片的片标头中的旗标的值,其指示参数组中所指定的所有长期参考图片是否均可用于当前图片的帧间预测。举例来说,视频译码器可译码long_term_pps_curr_flag。
当long_term_pps_curr_flag的值为第一值(例如,1)时,这可指示参数组中所指定的所有所述长期参考图片均可用于当前图片的帧间预测。在此情况下,视频译码器可利用参考组中所指定的长期参考图片来对当前图片进行帧间预测,而不译码到所指定的长期参考图片的参数组中的索引(例如,不译码long_term_ref_pic_set_idx_pps[i]语法元素,其提供到候选长期参考图片列表中的索引)。
举例来说,当long_term_pps_curr_flag的值为1时,视频译码器可确定长期参考图片可用于对当前图片进行帧间预测。视频译码器可进一步确定长期参考图片将用于对当前图片进行帧间预测。在此情况下,视频译码器可基于长期参考图片将用于对当前图片进行帧间预测的确定,利用长期参考图片来对当前图片进行帧间预测。
在一些实例中,当long_term_pps_curr_flag的值为0时,视频译码器可进一步译码long_term_pps_foll_flag。当long_term_pps_curr_flag为0时,且当long_term_pps_foll_flag指示无长期参考图片用于当前图片的帧间预测且参数组中所指示的所有长期参考图片均可用于在解码次序中跟在当前图片之后的图片的帧间预测时,视频译码器可利用参数组中未指定的一个或一个以上长期参考图片且不利用参数组中所指定的长期参考图片中的任一者来对当前图片进行帧间预测。
在一些实例中,本发明中所描述的技术可针对经解码图片缓冲器(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停止位,且后接零个或零个以上等于0的后续位。表7界定NAL单元语法。
表7.NAL单元语法
在表7中,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语法元素。如表7中所指示,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中移除:(1)经解码图片未在所得出的参考图片组中识别,(2)经解码图片无需输出(即,其已被输出或既定不用于输出),以及(3)图片的时间识别值(temporal_id)小于或等于当前图片的时间识别值。如上文所述,时间识别值(temporal_id)可为指示哪些图片可用于对当前图片进行帧间预测的层级值。具有特定temporal_id值的图片可为具有相等或较大temporal_id值的图片的参考图片,但反之不然。举例来说,具有temporal_id值1的图片有可能可为具有temporal_id值1、2、3、…的图片的参考图片,但对于具有temporal_id值0的图片不是如此。
并且,如上文所述,参考图片组可识别可用于对当前图片进行帧间预测且可用于对在解码次序中跟在当前图片之后的一个或一个以上图片进行帧间预测的参考图片。在一些情况下,可缩减当前图片的参考图片组,以仅识别temporal_id值小于或等于当前图片的temporal_id值的那些参考图片。
在一些其它技术中,如果DPB中的经解码图片的temporal_id值大于当前图片的temporal_id值,那么当不需要输出时,可将所述经解码图片从DPB移除。然而,所移除的图片可为对temporal_id值大于或等于所移除图片的temporal_id值的另一图片进行帧间预测的最佳候选者。在此情况下,视频解码器30可不能够使用最佳候选者来对temporal_id值大于或等于所移除图片的temporal_id值的此图片进行帧间预测。
根据本发明中所描述的技术,上文所述的实例准则可确保temporal_id值大于当前图片的temporal_id值的经解码图片留在DPB中,使得此些图片可用于对后续图片进行帧间预测。举例来说,即使经解码图片未在所得出参考图片组中识别,且即使经解码图片不需要输出,如果经解码图片的temporal_id值大于当前图片的temporal_id值,那么视频解码器30可不将经解码图片从其DPB移除。以此方式,即使当前图片的参考图片组不识别temporal_id值大于当前图片的temporal_id值的任何图片,视频解码器30也可不移除temporal_id值大于当前图片的temporal_id值的经解码图片。
此外,在本发明中所描述的技术中,在解码当前图片之前,视频解码器30可移除经解码图片。举例来说,如上文所述,视频解码器30可得出参考图片组。因为视频解码器30在解码当前图片之前可得出参考图片组,视频解码器30可经配置以在解码当前图片之前确定是否应移除不需要输出的经解码图片。举例来说,在得出参考图片组之后且在解码当前图片之前,视频解码器30可识别不需要输出、当前图片的参考图片组中未识别且temporal_id值小于或等于当前图片的temporal_id值的经解码图片。接着,在解码当前图片之前,视频解码器30可将所识别的经解码图片从DPB移除。
DPB可包含多个缓冲器,且每一缓冲器可存储将用作参考图片或将保持以供将来输出的经解码图片。最初,DPB为空(即,将DPB满度设定为零)。
本发明描述从至少两个角度描述DPB中的经解码图片的移除技术。在第一角度中,如果图片既定用于输出,那么视频解码器30可基于输出时间移除经解码图片。在第二角度中,如果图片既定用于输出,那么视频解码器30可基于POC值移除解码图片。在任一角度中,当经解码图片不在参考图片组中时,且在解码当前图片之前,视频解码器30可移除不需要输出的经解码图片(即,已经输出或既定不用于输出)。
在第一角度中,以下技术可以以下序列在时间tr(n)处瞬时发生。在此实例中,tr(n)为含有当前图片的存取单元n的CPB移除时间(即,解码时间)。如本发明中所描述,瞬时发生的技术可意味着在HDR模型中,假定图片的解码是瞬时的(即,无限快),其中用于解码图片的时间周期等于零。
如果当前图片为IDR图片,且当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_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_frame_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)的得出。第三条件可为图片的temporal_id小于或等于当前图片的temporal_id。
以此方式,在解码图片之前,视频解码器30可基于经解码图片的输出时间、经解码图片是否在参考图片组中被识别以及经解码图片的temporal_id值,将经解码图片从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)
在所述等式中,可在与包含所述图片的存取单元相关联的图片时序SEI消息中指定dpb_output_delay(n)。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。相反,仅出于说明的目的,将CPB描述为HDR模型的一部分。
如上文,在用于移除经解码图片的第二角度中,在当前图片的解码之前,但在剖析当前图片的第一片的片标头之后,视频解码器30可将图片从DPB移除。并且,类似于用于移除经解码图片的第一角度,在第二角度中,视频解码器30可执行与上文相对于当前图片为IDR图片时的第一角度而描述的功能类似的功能。
否则,如果当前图片不是IDR图片,那么视频解码器30可清空而不输出DPB的存储标记为“不需要输出”的图片、存储不包含于当前图片的参考图片组中的图片以及存储temporal_id值小于或等于当前图片的temporal_id值的图片的缓冲器。视频解码器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中被标记为“需要输出”的所有图片的最小POC值的图片。视频解码器30可使用所述图片的活动序列参数组中所指定的修剪矩形来修剪选定图片。视频解码器30可输出经修剪的图片,且可将所述图片标记为“不需要输出”。视频解码器30可检查DPB的存储了经修剪且所输出图片的缓冲器。如果所述图片不包含在参考图片组中,且所述图片的temporal_id值小于或等于当前图片的temporal_id值,那么视频解码器30可清空所述缓冲器,且可使DPB满度递减一。
通过利用以上技术,视频编码器20和视频解码器30可在非IDR RAP图片处执行随机存取,可减少例如在长期参考图片可或可不用于对当前图片进行帧间预测的情况下需要发信号通知的信息量,且可确保时间识别值大于当前图片的时间识别值的参考图片在DPB中可用于帧间预测。并且,上文描述对图片进行帧间预测。下文描述图片的帧间预测发生的方式的实例。
在构造参考图片子组之后,如上文所述,视频解码器30可从参考图片子组构造一个或两个参考图片列表。参考图片列表识别可用于对当前图片进行帧间预测的参考图片。举例来说,如果当前图片中的块经双预测(例如,相对于两个参考图片进行预测),那么视频解码器30可构造两个参考图片,称为列表0和列表1或RefPicList0和RefPicList1。在此情况下,列表0识别参考图片中的一者,且列表1识别另一参考图片。如果当前图片中的块经单向预测(相对于一个参考来预测),那么视频解码器30可构造识别参考图片的一个参考图片列表(例如,列表0或列表1)。
在一些实例中,视频解码器30可首先构造初始参考图片列表。如果不需要参考图片列表修改,那么最终参考图片列表可等于初始参考图片列表。如果需要参考图片列表修改,那么视频解码器30可实施其中视频解码器30重新布置图片I初始参考列表的排序,将参考图片添加到所述列表,或将参考图片从所述列表移除。
在构造参考图片列表之后,视频解码器30可接收到所构造参考图片列表中的索引值。从所述索引值,视频解码器30可确定哪些参考图片用于帧间预测,可从DPB检索那些图片,且参考那些图片执行帧间预测。
下文描述视频解码器30可构造初始参考图片列表的实例方式。此初始化过程可在解码经帧间预测图片的片标头时发生。
为了构造初始RefPicList0,视频解码器30可实施以下伪码。举例来说,视频解码器30在解码P片或B片的情况下,可实施以下伪码。在此实例中,RefPicSetCurr0、RefPicSetCurr1和RefPicSetLtCurr参考图片子组中可存在至少一个参考图片。
为了构造初始RefPicList1,视频解码器30可实施以下伪码。举例来说,视频解码器30在解码B片的情况下,可实施以下伪码。在此实例中,RefPicSetCurr0、RefPicSetCurr1和RefPicSetLtCurr参考图片子组中可存在至少一个参考图片。
在以上伪码中,num_ref_idx10active_minus1+1指示RefPicList0中的参考图片的数目,且num_ref_idx_l1active_minus1+1指示RefPicList1中的参考图片的数目。在一些实例中,在接收到图片列表初始化之后,参考图片可在RefPicList0和RefPicList1中的一个以上索引处出现。
在一些实例中,可需要参考图片列表修改。在这些情况下,视频编码器20可发信号通知ref_pic_list_modification_flag_l0语法元素和/或ref_pic_list_modification_flag_l1语法元素。ref_pic_list_modification_flag_l0语法元素指示需要RefPicList0的参考图片列表修改,且ref_pic_list_modification_flag_l1语法元素指示需要RefPicList1的参考图片修改。当需要参考图片列表修改时,视频解码器30可包含RefPicList0和/或RefPicList1中不包含于初始RefPicList0和初始RefPicList1中的图片。
如上文所述,视频编码器20可发信号通知指示哪些参考图片属于参考图片组的信息。可存在视频编码器20可发信号通知此信息的各种方式。举例来说,在以上实例中,视频编码器20可在片标头中发信号通知短期参考图片组语法和长期参考图片组语法,以指示哪些短期和长期参考图片属于所述参考图片组。
在另一实例中,视频编码器20可在图片参数组和/或序列参数组中发信号通知用于短期参考图片和/或长期参考图片的参考图片识别信息(例如,POC值)的列表,且可在片标头中发信号通知到所述列表或所述列表的子组的索引,这可减少信令开销。在另一实例中,针对图片参数组和/或序列参数组中发信号通知的短期参考图片和/或长期参考图片,视频编码器20可直接或通过参考到参考图片识别信息列表的索引,在适应参数组中发信号通知用于短期参考图片和/或长期参考图片的参考图片识别信息(例如,POC值)的列表,且片标头指代适合参数组。
上文还描述构造参考图片子组的一种实例方式。在这些实例的一些实例中,参考图片子组中无一者可识别temporal_id值大于当前图片的图片。在一些其它实例中,参考图片组的子组可包含具有大于当前图片的temporal_id值的短期和/或长期参考图片。
此外,当发信号通知将包含到一个或一个以上参考图片组中的参考图片时,视频编码器20可发信号通知参考图片的参考图片识别和一些其它特性的信息(例如,由temporal_id识别的时间级信息。并且,在参考图片列表构造的至少一个步骤中,包含参考图片列表初始化和参考图片列表修改,视频解码器30可不包含具有大于参考图片列表中的当前图片的temporal_id的temporal_id的参考图片。
如上文所述,本发明中所描述的技术可根据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的大小的范围可从8x8个像素至多达具有最大64x64个像素或以上的树块的大小。每一CU可含有一个或一个以上PU以及一个或一个以上TU。与CU相关联的语法数据可描述例如将CU分区成一个或一个以上PU。划分模式可在CU是被跳过或直接模式编码、经帧内预测模式编码还是经帧间预测模式编码之间不同。可将PU分区成形状非正方形。与CU相关联的语法数据还可描述例如根据四叉树将CU分区成一个或一个以上TU。TU的形状可为正方形或非正方形。
HEVC标准允许根据TU的变换,TU对于不同CU可不同。TU通常基于为经分区LCU界定的给定CU内的PU的大小而定大小,但可能不总是这种情况。TU通常具有与PU相同或比PU小的大小。在一些实例中,可使用称为“残余四叉树”(RQT)的四叉树结构将对应于CU的残余样本再分成较小单元。RQT的叶节点可称为变换单元(TU)。与TU相关联的像素差值可经变换以产生变换系数,其可量化。
一股来说,PU包含与预测过程有关的数据。举例来说,当PU经帧内模式编码时,PU可包含描述PU的帧内预测模式的数据。作为另一实例,当PU经帧间模式编码时,PU可包含描述PU的运动向量的数据。界定PU的运动向量的数据可描述(例如)运动向量的水平分量、运动向量的垂直分量、运动向量的分辨率(例如,四分之一像素精度或八分之一像素精度)、运动向量指向的参考图片,和/或运动向量的参考图片列表(例如,列表0或列表1)。
一股来说,TU用于变换和量化过程。具有一个或一个以上PU的给定CU还可包含一个或一个以上变换单元(TU)。在预测之后,视频编码器20可计算对应于PU的残余值。残余值包括可使用TU变换为变换系数、量化,且扫描以产生经串行化变换系数以用于熵译码的像素差值。本发明通常使用术语“视频块”来指代CU的译码节点。在一些特定情况下,本发明还可使用术语“视频块”来指代树块,即LCU或CU,其包含译码节点以及PU和TU。
视频序列通常包含一系列视频帧或图片。图片组(GOP)通常包括一系列一个或一个以上视频图片。GOP可在GOP的标头、所述图片中的一者或一者以上的标头或其它地方中包含语法数据,其描述包含于GOP中的图片的数目。图片的每一片可包含片语法数据,其描述相应片的编码模式。视频编码器20通常对个别视频片内的视频块进行操作以便对视频数据进行编码。视频块可对应于CU内的译码节点。视频块可具有固定或不同大小,且其大小可根据所指定译码标准而不同。
举例来说,HM支持各种PU大小的预测。假定特定CU的大小为2Nx2N,HM支持2Nx2N或NxN的PU大小的帧内预测,以及2Nx2N、2NxN、Nx2N或NxN的对称PU大小的帧间预测。HM还支持2NxnU、2NxnD、nLx2N和nRx2N的PU大小的帧间预测的不对称分区。在不对称分区中,CU的一个方向为不分区,而另一方向为分区成25%和75%。CU的对应于25%分区的部分由“n”后接“上”、“下”、“左”或“右”的指示来指示。因此,例如,“2NxnU”指代水平分区的2Nx2N CU,其中2Nx0.5N PU在顶部,且2Nx1.5N PU在底部。
在本发明中,“NxN”与“N乘N”可互换使用,以指代依据垂直和水平尺寸的视频块的像素尺寸,例如16x16个像素或16乘16个像素。一股来说,16x16块将在垂直方向上具有16个像素(y=16),且在水平方向上具有16个像素(x=16)。同样地,NxN块通常在垂直方向上具有N个像素,且在水平方向上具有N个像素,其中N表示非负整数值。一块中的像素可布置成若干行和若干列。此外,块无需必定在水平方向上与在垂直方向上具有相同数目的像素。举例来说,块可包括NxM个像素,其中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是说明可实施本发明中所描述的技术的实例视频编码器20的框图。视频编码器20可执行视频片内的视频块的帧内和帧间译码。帧内译码依靠空间预测来减少移除去除给定视频帧或图片内的视频中的空间冗余。帧间译码依靠时间预测来减少或去除视频序列的相邻帧或图片内的视频中的时间冗余。帧内模式(I模式)可涉及若干基于空间的压缩模式中的任一者。例如单向预测(P模式)或双预测(B模式)等帧间模式可指代若干基于时间的压缩模式中的任一者。
在图2的实例中,视频编码器20包含分区单元35、预测模块41、经解码图片缓冲器(DPB)64、求和器50、变换模块52、量化单元54以及熵编码单元56。预测模块41包含运动估计单元42、运动补偿单元44和帧内预测模块46。为了视频块重构,视频编码器20还包含逆量化单元58、逆变换单元60以及求和器62。还可包含去块滤波器(图2中未展示),以对块边界进行滤波,以将成块假影从经重构的视频去除。如果需要,去块滤波器将通常对求和器62的输出进行滤波。除去块滤波器之外,还可使用额外的环路滤波器(环路中或环路后)。
如图2中所示,视频编码器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)选择参考图片,所述列表中的每一者识别存储在经解码图片缓冲器64中的一个或一个以上参考图片。运动估计单元42将所计算的运动向量发送到熵编码单元56和运动补偿单元44。
由运动补偿单元44执行的运动补偿可涉及基于通过运动估计而确定的运动向量来获取或产生预测性块,可能执行到子像素精度的内插。在接收到当前视频块的PU的运动向量后,运动补偿单元44可即刻定位运动向量在参考图片列表的一者中所指向的预测性块。视频编码器20通过将预测性块的像素值从正译码的当前视频块的像素值减去,从而形成像素差值来形成残余视频块。像素差值形成所述块的残余数据,且可包含亮度和色度差分量两者。求和器50表示执行此减法运算的组件。运动补偿单元44还可产生与视频块和视频片相关联的语法元素,以供视频解码器30用于解码视频片的视频块。
如上文所述,作为由运动估计单元42和运动补偿单元44所执行的帧间预测的替代方案,帧内预测模块46可对当前块进行帧内预测。明确地说,帧内预测模块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编码非IDR RAP图片的全POC值,其允许视频解码器30在非IDR RAP图片处实施随机存取。作为另一实例,预测模块41可致使视频编码器20基于旗标的值来编码表5和6的信号、语法元素。作为又一实例,预测模块41可基于经解码图片是否需要输出、经解码图片是否包含在参考图片组中,以及经解码图片的temporal_id值是否小于或等于当前图片的temporal_id值,来确定可将哪些经解码图片从经解码图片缓冲器64移除。
在其它实例中,不同于预测模块41的单元可实施上文所述的实例。在一些其它实例中,预测模块41结合视频编码器20的一个或一个以上其它单元可实施上文所述的实例。在又一些其它实例中,视频编码器20的处理器或单元(图2中未展示)可单独或结合视频编码器20的其它单元实施上文所述的实例。
图3是说明可实施本发明中所描述的技术的实例视频解码器30的框图。在图3的实例中,视频解码器30包含熵解码单元80、预测模块81、逆量化单元86、逆变换单元88、求和器90以及经解码图片缓冲器(DPB)92。预测模块81包含运动补偿单元82和帧内预测模块84。在一些实例中,视频解码器30可执行解码遍次,其通常与相对于来自图2的视频编码器20所描述的编码遍次互逆。
在解码过程期间,视频解码器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还存储经解码视频以供以后在显示装置(例如,图1的显示装置32)上呈现。
根据本发明,预测模块81表示用于执行上文所述的实例功能的一个实例单元。举例来说,预测模块81可基于非IDR RAP图片的全POC值来确定非RAP图片的全POC值,从而允许视频解码器30在非IDR RAP图片处执行随机存取。作为另一实例,预测模块81可基于表5和6的旗标的值来确定哪些长期参考图片可用于对当前图片进行帧间预测。作为又一实例,预测模块81可基于经解码图片是否需要输出、经解码图片是否包含在参考图片组中,以及经解码图片的temporal_id值是否小于或等于当前图片的temporal_id值,来确定可将哪些经解码图片从经解码图片缓冲器92移除。
在其它实例中,不同于预测模块81的单元可实施上文所述的实例。在一些其它实例中,预测模块81结合视频解码器30的一个或一个以上其它单元可实施上文所述的实例。在又一些其它实例中,视频解码器30的处理器或单元(图3中未展示)可单独或结合视频解码器30的其它单元实施上文所述的实例。
图4是说明根据本发明的一个或一个以上方面的实例操作的流程图。仅出于说明的目的,图4的方法可由对应于视频编码器20或视频解码器30的视频译码器来执行。
视频译码器可译码非IDR RAP图片的全识别符值(例如,全POC值)(94)。视频译码器可将全POC值的MSB和LSB译码在一起,或可单独地译码全POC值的MSB和LSB。非IDR RAP图片的实例包含GDR、CRA和BLA图片。
视频译码器可对第一非RAP图片的部分识别符值进行译码(96)。第一非RAP图片在解码次序中可在非IDR RAP图片之后。局部识别符值可为第一非RAP图片的全POC值的一部分,例如全POC值的LSB。
视频译码器可基于第一非RAP图片的全识别符值对第二非RAP图片进行帧间预测(98)。举例来说,视频译码器可基于第一非RAP图片的全识别符值来确定第一非RAP图片正将用于对第二非RAP图片进行帧间预测。第二非RAP图片在解码次序中可在第一非RAP图片之后。
图5是说明根据本发明的一个或一个以上方面的另一实例操作的流程图。仅出于说明的目的,图5的方法可由对应于例如视频解码器30等视频译码器的视频译码器来执行。视频译码器可译码可用于帧间预测的参考图片的全识别符值(100)。举例来说,视频译码器可译码可用于参数组(例如图片参数组)中的帧间预测的长期参考图片的全POC值。
在一些实例中,视频译码器可仅接收非RAP图片的局部识别符值,以及非IDR RAP图片的全识别符值。在这些实例中,视频译码器可基于非IDR RAP图片的全识别符值以及非RAP图片的局部识别符值来确定非RAP图片的全识别符值(102)。视频译码器可确定非RAP图片的全识别符值是否与参考图片的全识别符值相同(104)。当它们相同时,视频译码器可将所述非RAP图片包含在参考图片子组中(106)。
图6是说明根据本发明的一个或一个以上方面的另一实例操作的流程图。仅出于说明的目的,图6的方法可由对应于视频编码器20或视频解码器30的视频译码器来执行。
视频译码器可译码指示长期图片是否可用于对当前图片和在解码次序中跟在当前图片之后的图片进行帧间预测的第一旗标(例如,long_term_not_used_flag)的值(108)。视频译码器可确定第一旗标是否为真(110)。
当为真(110的“是”)时,视频译码器可仅使用短期参考图片对当前图片进行帧间预测(112)。当为假(110的“否”)时,译码指示参数组中所指定的所有长期参考图片是否均可用于当前图片的预测,且所述参数组中未指示且在解码次序中在当前图片之前的长期参考图片是否可用于当前图片或在解码次序中跟在当前图片之后的图片的帧间预测的第二旗标(例如long_term_reuse_pps_flag)的值。
视频译码器可确定第二旗标是否为真(116)。当为假(116的“否”)时,视频译码器可基于到指定长期参考图片的参数组中的经译码索引(例如,到参数组中所指定的候选长期参考图片列表中的索引)来构造长期参考图片子组(118)。当为真(116的“是”)时,视频译码器可构造长期参考图片子组,而不译码到参数组中的索引(例如,不译码到参数组中所指定的候选长期参考图片列表中的索引)(120)。
图7是说明根据本发明的一个或一个以上方面的另一实例操作的流程图。仅出于说明的目的,图7的方法可由对应于视频编码器20或视频解码器30的视频译码器来执行。
视频译码器可译码指示参数组中所指定的所有长期图片是否可用于当前图片的帧间预测的第一旗标(例如long_term_pps_curr_flag)的值(122)。视频译码器可确定第一旗标是否为真(124)。
当为真(124的“是”)时,视频译码器可对当前图片进行帧间预测,而不译码到所指定长期参考图片的参数组中的索引(126)。当为假(124的“否”)时,视频译码器可译码指示是否无长期参考图片用于当前图片的帧间预测以及是否参数组中所指定的所有长期参考图片均可用于帧间预测的第二旗标(例如long_term_pps_foll_flag)的值(128)。
视频译码器可确定第二旗标是否为真(130)。当为假(130的“否”)时,视频译码器可基于经译码的到参数组中的索引来构造长期参考图片子组(132)。当为真(130的“是”)时,视频译码器可使用参数组中未指定的图片且不使用参数组中所指定的图片来进行帧间预测(134)。
图8是说明根据本发明的一个或一个以上方面的另一实例操作的流程图。仅出于说明的目的,图8的方法可由对应于视频编码器20或视频解码器30的视频译码器来执行。
视频译码器可得出当前图片的参考图片组(138)。视频译码器可确定存储在DPB中的一个或一个以上经解码图片不需要输出(140),所述一个或一个以上经解码图片不在参考图片组中(142,且一个或一个以上图片的时间识别(temporal_id)值小于或等于当前图片的temporal_id(144)。在此情况下,视频译码器可将一个或一个以上图片从DPB移除(146)。
在一个或一个以上实例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么功能可作为一个或一个以上指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于例如数据存储媒体等有形媒体,或包含例如根据通信协议促进计算机程序从一处到另一处的传送的任何媒体的通信媒体。以此方式,计算机可读媒体通常可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)例如信号或载波的通信媒体。数据存储媒体可为可由一个或一个以上计算机或一个或一个以上处理器存取以检索指令、代码和/或数据结构以供实施本发明中所描述的技术的任何可用媒体。计算机程序产品可包含计算机可读媒体。
作为实例(而非限制),所述计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,快闪存储器,或可用于存储呈指令或数据结构的形式的所要程序码且可由计算机存取的任何其它媒体。并且,任何连接均可恰当地称为计算机可读媒体。举例来说,如果使用同轴电缆、光纤缆线、双绞线、数字订户线(DSL)或例如红外线、无线电及微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴电缆、光纤缆线、双绞线、DSL或例如红外线、无线电及微波等无线技术包含于媒体的定义中。然而,应理解,计算机可读存储媒体和数据存储媒体不包含连接、载波、信号或其它瞬态媒体,而是针对非瞬态有形存储媒体。如本文中所使用,磁盘及光盘包括紧密光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软磁盘及蓝光光盘,其中磁盘通常磁性地复制数据,而光盘使用激光光学地复制数据。上文的组合也应包含在计算机可读媒体的范围内。
指令可由一个或一个以上处理器执行,例如一个或一个以上数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA),或其它等效集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指上述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文所述的功能性可提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或并入在组合式编解码器中。并且,可将所述技术完全实施于一个或一个以上电路或逻辑元件中。
本发明的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元,以强调经配置以执行所揭示技术的装置的功能方面,但不一定要求由不同硬件单元来实现。相反,如上文所述,各种单元可组合在编解码器硬件单元中,或由互操作硬件单元的集合提供,包含如上文所述的一个或一个以上处理器,结合合适的软件和/或固件。
已描述了各种实例。这些和其它实例在所附权利要求书的范围内。