会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 专利权 / 国际初步审查 / 国际初步审查要求 / 选定 / 在电子设备上基于选定画面跟踪参考画面

在电子设备上基于选定画面跟踪参考画面

阅读:1018发布:2020-08-04

IPRDB可以提供在电子设备上基于选定画面跟踪参考画面专利检索,专利查询,专利分析的服务。并且提出了用于在解码器上跟踪参考画面的方法。引入了包括“回绕POC”和poc循环以信号通知长期画面的缓存描述的修改以减少参考画面的开销。,下面是在电子设备上基于选定画面跟踪参考画面专利的具体信息内容。

1.一种用于对视频比特流进行解码的方法,包括:接收包括熵编码的量化变换系数的比特流;

从所述比特流接收对解码参考画面的参考描述;

确定用于解码的当前画面的画面顺序计数POC,其中每个解码参考画面与画面顺序计数POC相关联,将解码参考画面的画面顺序计数POC在多个集合中排序,每个集合具有[0,...MaxPOC-1]的POC值范围,MaxPOCSetIndex的具体值对应于[0,...MaxPOC-1]的具体集合;

其中所述参考描述包括长期参考画面的修改参数,其中所述解码参考画面的修改参数是解码参考画面的MaxPOCSetIndex和当前画面的MaxPOCSetIndex之间的差;

基于所述画面顺序计数和所述参考描述,从解码画面缓存中识别所述当前画面的所述解码参考画面;

基于所述解码参考画面,使用帧间预测来对所述当前画面进行解码;以及将所解码的画面缓存到所述解码画面缓存中以用于未来预测。

2.根据权利要求1所述的方法,其中,所述修改参数是POC循环参数。

3.根据权利要求1所述的方法,其中,所述修改参数是用于开始另一POC循环的指示符。

4.根据权利要求1至3中任一项所述的方法,其中,所述参考描述包括所述解码参考画面的画面顺序计数。

5.根据权利要求2所述的方法,其中,所述POC循环参数位于片首部中。

6.一种用于对视频流进行编码的方法,包括:

确定正在被编码的当前画面的画面顺序计数POC;

从解码画面缓存中识别所述当前画面的参考画面;

基于参考画面使用帧间预测来对所述当前画面进行编码,其中每个参考画面与画面顺序计数POC相关联,将参考画面的画面顺序计数POC在多个集合中排序,每个集合具有[0,...MaxPOC-1]的POC值范围,MaxPOCSetIndex的具体值对应于[0,...MaxPOC-1]的具体集合;

确定对参考画面的参考描述;

发送包括编码画面和对参考画面的参考描述在内的比特流;

其中所述比特流包括熵编码的量化变换系数,

其中所述参考描述包括长期参考画面的修改参数,其中长期参考画面的修改参数是用于对所述当前画面进行编码的参考画面的MaxPOCSetIndex和所述当前画面的MaxPOCSetIndex之间的差;

基于用于对所述当前画面进行编码的参考画面使用帧间预测来对所述当前画面进行解码;以及将所解码的画面缓存到所述解码画面缓存中以用于未来预测。

7.一种包括非瞬时数据存储设备的装置,所述非瞬时数据存储设备用于存储编码视频数据,所述编码视频数据包括:表示当前画面的编码画面数据,其中使用参考画面对所述当前画面进行编码;以及对参考画面的参考描述;

其中所述编码画面数据包括熵编码的量化变换系数,其中每个参考画面与画面顺序计数POC相关联,将参考画面的画面顺序计数在多个集合中排序,每个集合具有[0,...MaxPOC-1]的POC值范围,MaxPOCSetIndex的具体值对应于[0,...MaxPOC-1]的具体集合;

其中所述参考描述包括长期参考画面的修改参数,其中解码画面的修改参数是用于对所述当前画面进行编码的参考画面的MaxPOCSetIndex和所述当前画面的MaxPOCSetIndex之间的差;

其中用于对所述当前画面进行编码的参考画面的POC是基于所述当前画面的画面顺序计数和所述参考描述来确定的。

说明书全文

在电子设备上基于选定画面跟踪参考画面

[0001] 本申请是申请日为2012年10月12日、最早优先权日为2011年10月13日的中国专利申请CN201280050538.2(“在电子设备上基于选定画面跟踪参考画面”)的分案申请。
[0002] 相关引用
[0003] 本申请是2011年11月8日递交的标题为“TRACKING A REFERENCE PICTURE BASED ON A DESIGNATED PICTURE ON AN ELECTRONIC DEVICE”的美国专利申请No.13/291,961的部分接续申请案,其是2011年11月1日递交的标题为“TRACKING A REFERENCE PICTURE BASED ON A DESIGNATED PICTURE ON AN ELECTRONIC DEVICE”的美国专利申请No.13/287,015的部分接续申请案,其是2011年10月13递交的标题为“TRACKING A REFERENCE PICTURE ON AN ELECTRONIC DEVICE”的美国专利申请No.13/273,191的部分接续申请案,所有这些申请的全部内容均通过引用方式并入本文。

技术领域

[0004] 本公开大体上涉及电子设备。更具体地,本公开涉及实现参考画面的跟踪。

背景技术

[0005] 电子设备已经变得更小且更强大的,以满足消费者的需求并提高便携性和方便性。消费者已经变得依赖电子设备并且逐渐期望增加的功能。电子设备的一些示例包括台式计算机、膝上型计算机、蜂窝电话、智能电话、媒体播放器、集成电路等。
[0006] 一些电子设备用于处理和显示数字媒体。例如,便携式电子设备现在允许在消费者所在的几乎任何位置处消费数字媒体。此外,一些电子设备可以提供数字媒体内容的下载或流式传送,以供消费者使用和享受。
[0007] 数字媒体的日渐流行已经呈现出多个问题。例如,高效地表示用于存储、传输和回放的高质量数字媒体呈现多个挑战。可以从本讨论中看到,更高效地表示数字媒体的系统和方法可以是有益的。

发明内容

[0008] 优选的实施例是一种用于对视频比特流进行解码的方法,包括:从所述比特流接收对解码参考画面的参考描述;确定用于解码的当前画面的画面顺序计数(POC);基于所述画面顺序计数和所述参考描述,从解码画面缓存中识别所述当前画面的解码参考画面;基于所述解码参考画面,使用帧间预测对所述当前画面进行解码;以及将所解码的画面缓存到所述解码画面缓存中以用于未来预测,其中,所述参考描述包括针对长期参考画面的修改参数;以及所述识别使用所述修改参数以修改对解码参考画面集合的至少一部分参考。
[0009] 另一优选实施例是一种被配置为对视频比特流进行解码的电子设备,包括:处理器;存储器,与所述处理器进行电子通信;指令,被存储在所述存储器中,所述指令可执行以:从所述比特流接收对解码参考画面的参考描述;确定用于解码的当前画面的画面顺序计数(POC);基于所述画面顺序计数和所述参考描述,从解码画面缓存中识别所述当前画面的所述解码参考画面;基于所述解码参考画面使用帧间预测对所述当前画面进行解码;以及将所解码的画面缓存到所述解码画面缓存中以用于未来预测,其中,所述参考描述包括针对长期参考画面的修改参数;以及所述修改参数用于修改对解码参考画面集合的至少一部分参考。

附图说明

[0010] 图1是示出了可以在其中实现用于基于选定画面来跟踪参考画面的系统和方法的一个或更多个电子设备的示例的框图;
[0011] 图2是示出了解码器的一个配置的框图;
[0012] 图3是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法的一个配置的流程图;
[0013] 图4是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法的更具体配置的流程图;
[0014] 图5是示出了循环参数所参考的多个画面集合的一个示例的示意图;
[0015] 图6是示出了多个画面集合的另一示例的示意图;
[0016] 图7是示出了循环参数所参考的多个画面集合的更具体的示例的示意图;
[0017] 图8是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法的一个配置的流程图;
[0018] 图9是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法的另一配置的流程图;
[0019] 图10是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法的另一配置的流程图;
[0020] 图11是示出了根据本文所公开的系统和方法信号通知回绕指示符的一个示例的示意图;
[0021] 图12是示出了根据本文所公开的系统和方法信号通知回绕指示符的一个示例的示意图;
[0022] 图13是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法的另一更具体配置的流程图;
[0023] 图14是示出了用于确定在画面集合之间是否发生转换的方法的一个配置的流程图;
[0024] 图15是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法的另一更具体配置的流程图;
[0025] 图16示出了可以用电子设备中利用的各种组件;以及
[0026] 图17是示出了根据本文所公开的系统和方法的使用情况的示例的示意图。

具体实施方式

[0027] 描述了一种用于在电子设备上跟踪参考画面的方法。该方法包括:接收比特流。该方法还包括:对该比特流的一部分进行解码,以产生解码参考画面。该方法还包括:基于选定画面利用减少开销参考来跟踪解码画面缓存(DPB)中的解码参考画面。该方法还包括:基于解码参考画面来对画面进行解码。选定画面可以是即时解码刷新(IDR)画面。附加地,解码参考画面的缓存描述可以包括:画面顺序计数(POC)、循环参数、时间标识符和缩放参数。
[0028] 跟踪解码参考画面可以包括:基于选定画面来确定循环参数。可以基于选定画面来重置循环参数。
[0029] 跟踪解码参考画面可以包括:基于选定画面来确定画面顺序计数(POC)。可以基于选定画面来重置画面顺序计数(POC)序列。
[0030] 解码参考画面的分辨率可以与画面的分辨率不同。该方法还可以包括:基于缩放参数来处理解码参考画面的变换系数以对画面进行解码。
[0031] 跟踪解码参考画面可以包括:跟踪包括解码参考画面的解码参考画面集合。跟踪解码参考画面还可以包括:获得缓存描述并修改缓存描述。修改缓存描述可以包括:删除条目、添加条目和/或替换条目。
[0032] 还描述了一种被配置为跟踪参考画面的电子设备。所述电子设备包括:处理器和存储在存储器中的指令,所述存储器与所述处理器进行电子通信。所述电子设备接收比特流。所述电子设备还对所述比特流的一部分进行解码,以产生解码参考画面。所述电子设备还基于选定画面利用减少开销参考来跟踪解码画面缓存(DPB)中的解码参考画面。所述电子设备还基于解码参考画面来对画面进行解码。
[0033] 本文所公开的所述系统和方法描述用于在电子设备上基于选定画面来跟踪参考画面的多个配置。例如,本文所公开的所述系统和方法描述了利用减少开销参考来跟踪解码画面缓存(DPB)中的解码参考画面。例如,描述了用于长期参考画面信号通知的多个方案。应当注意的是,解码画面缓存(DPB)可以是针对假想参考解码器所规定的保存解码画面以用于参考、输出重排序或输出延迟的缓存。
[0034] 在电子设备上,解码画面缓存(DPB)可以用于存储在解码器处重构的(例如解码的)画面。然后,这些存储的画面可以用在例如帧间预测机制中。当对画面进行乱序解码时,画面可以存储在DPB中,使得可以随后按顺序显示画面。
[0035] 在H.264或高级视频编码(AVC)标准中,使用内存管理控制操作(MMCO)执行DPB管理(例如画面的删除、画面的添加、画面的重排序等)。针对即将到来的高效视频编码(HEVC)标准,更可靠的DPB管理方案在考虑中。更可靠的方案的一个示例是基于如来自视频编码联合协作组(JCT-VC)的文档JCTVC-F493的“Absolute signaling of reference pictures”中详述的参考画面的绝对信令。
[0036] JCTVC-F493概述了用于识别哪些参考画面应当保存在解码画面缓存(DPB)中的参考画面的绝对信令。具体而言,JCTVC-F493概述了用于基于画面顺序计数(POC)来识别哪些参考画面要保存在DPB中的两种不同方案。画面顺序计数(POC)可以是与每个编码画面相关联并具有以回绕的输出顺序随着画面位置的增加而增加的值的变量。
[0037] 在一个示例中,假定所有画面具有时间标识符(temporalID)=0。还假定当前POC=5并且当前DPB包含={3,2}。此外,假定画面参数集合(PPS)的定义是:BufferDescription0={deltaPOC=-1,temporalID=0}、{deltaPOC=-2,temporalID=
0}。deltaPOC指定参考画面与当前画面的POC值的距离,其中,当前画面可以是正在解码的画面。所给出的一个方案是参考PPS中的缓存描述。在此方案中,POC=5的画面的片首部包含对PPS中的BufferDescription0的参考。假定动作是从DPB中丢弃POC=2的解码画面,并向DPB添加POC=4的解码画面。因此,DPB于是包含={4,3}。
[0038] 在一个配置中,缓存描述被定义为两个列表(表示为POCBD和TemporalIDBD)和针对所有画面给出的变量NumberOfPicturesInBD。这是使得POCBD包含参考画面的画面顺序计数值,并且TemporalIDBD包含参考画面的相应时间标识符,两个列表均包含NumberOfPicturesInBD值。
[0039] 应当注意的是,temporalID可以如下在视频编码联合协作组(JCT-VC)的文档JCTVC-F803中所定义:“temporalID指定针对NAL单元的时间标识符。针对访问单元的所有NAL单元,temporalID的值应当是相同的。当访问单元包含nal_unit_type等于5的任意NAL单元时,temporalID应当等于0。”应当注意的是,NAL可以是“网络抽象层”的缩写。
[0040] 另一方案是关于当前POC使用增量POC来显式地信号通知DPB的内容。在此方案中,POC=5的画面的片首部包含{deltaPOC=-1,temporalID=0}和{deltaPOC=-2,temporalID=0}。假定动作是从DPB中丢弃POC=2的解码画面,并向DPB添加POC=4的解码画面。因此,新DPB包含={4,3}。
[0041] JCTVC-F493给出的方案的一些优点如下。JCTVC-F493中的方案提供了简单机制。此外,在解码器容易检测到画面的丢失。此外,可以检测到并较好地支持具有较高时间ID的整层画面的丢弃。
[0042] 然而,在下文中给出了JCTVC-F493中所给出的方案的一些缺点。用于信号通知长期参考画面的比特开销可能变得较大。此外,可以分配固定数量的比特以传送POC。因此,当达到正在使用的比特的数量所允许的最大值时,POC编号应当回绕至0。因此,可能不能保证可以使用POC来唯一地标识画面。
[0043] 本文所公开的系统和方法可以帮助减轻这些缺点。具体而言,通过减少与绝对长期画面参考相关联的开销,本文所公开的系统和方法可能是有益的,并且其能够实现唯一地标识画面(例如长期(参考)画面可以不与其他短期画面或长期画面混淆,反之亦然)。
[0044] 本文所公开的系统和方法可以提供如下所述的一个或更多个附加益处。本文所公开的系统和方法一个或更多个配置可以充分利用可用POC编号空间[0,…,MaxPOC-1],其中MaxPOC=2log2_max_pic_order_cnt_minus4+4并且log2_max_pic_order_cnt_minus4指定在解码处理中用于画面顺序计数的变量MaxPOC的值。例如,用于解决POC回绕之后[0,…,MaxPOC-1]的重用的一个现有方案主张当向画面指派标识符(例如POC号)时,越过当前使用的POC。这导致POC空间的一部分未使用。然而,本文所公开的系统和方法可以解决越过POC和相关联的POC空间缩小的问题。
[0045] 另一益处可以是本文所公开的系统和方法的用于信号通知的一些配置在每个画面中可以是独立的。因此,与依赖于来自先前画面(可能丢失或被丢弃)的信息传播的方案相比,差错恢复可以更好。例如,解码画面缓存(DPB)描述的一个配置不依赖于在其他画面中嵌入的信息,以保持与编码器相同的DPB。
[0046] 本文所公开的系统和方法的一些配置的另一益处可以是:如果画面丢失,则一旦缓存描述在解码器处(其在下一接收画面处)可用就可以检测到丢失。这允许解码器采取纠正动作。另一益处是如果POC分辨率足够,则不需要额外比特。
[0047] 现在参考附图描述各种配置,在附图中,相似的附图标记可以指示功能上相似的元件。可以以各种不同配置来布置和设计如本文附图中一般地描述和示出的系统和方法。因此,如在附图中表示的多个配置的以下更详细的描述不旨在限制要求保护的范围,而仅表示系统和方法。
[0048] 图1是示出了可以在其中实现用于基于选定画面来跟踪参考画面的系统和方法的一个或更多个电子设备104的示例的框图。在本示例中,示出了电子设备A 104a和电子设备B 104b。然而,应当注意的是,在一些配置中,关于电子设备A 104a和电子设备B 104b所描述的特征和/或功能可以组合到单个电子设备中。
[0049] 电子设备A 104a包括编码器108和开销信令模块112。电子设备A 104a中包括的元件中的每一个元件(例如编码器108和开销信令模块112)可以以硬件、软件或硬件和软件的组合来实现。
[0050] 电子设备A104a可以获得输入画面106。在一些配置中,可以使用图像传感器在电子设备A104a上捕获、从存储器取回和/或从另一电子设备接收输入画面106。
[0051] 编码器108可以对输入画面106进行编码以产生编码数据110。例如,编码器108可以对一系列输入画面106(例如视频)进行编码。在一个配置中,编码器108可以是高效视频编码(HEVC)编码器。编码数据110可以是数字数据(例如比特流)。
[0052] 开销信令模块112可以基于编码数据110来生成开销信令。例如,开销信令模块112可以将开销数据添加到编码数据110中,例如片首部信息、画面参数集合(PPS)信息、画面顺序计数(POC)、参考画面指示等。在一些配置中,开销信令模块112可以产生指示两个画面集合之间的转换的回绕指示符。
[0053] 以下给出了可以由电子设备A 104a产生的各种开销信令的更多细节。具体而言,开销信令模块112可以根据配置产生下面关于解码所描述的参数、指示符或各种信息中的零个、一个或更多个。应当注意的是,在一些配置中,开销信令模块112可以被包括在编码器108中。开销信令模块112可以实现利用减少开销参考进行画面跟踪。
[0054] 编码器108(以及例如开销信令模块112)可以产生比特流114。比特流114可以包括基于输入画面106的编码画面数据。在一些配置中,比特流114还可以包括开销数据,例如片首部信息、PPS信息等。以下给出了开销数据的更多细节。当对附加输入画面106进行编码时,比特流114可以包括一个或更多个编码画面。例如,比特流114可以包括一个或更多个编码参考画面和/或其他画面。
[0055] 可以将比特流114提供给解码器102。在一个示例中,可以使用有线链路或无线链路向电子设备B 104b发送比特流114。在一些情况下,这可以通过网络(例如互联网或局域网(LAN))来完成。如图1所示,解码器102可以与电子设备A 104a上编码器108分离地实现在电子设备B 104b上。然而,应当注意的是,在一些配置中,编码器108和解码器102可以实现在相同的电子设备上。在编码器108和解码器102实现在相同的电子设备上的实现方式中,例如可以通过总线向解码器102提供比特流114,或者可以将比特流114存储在存储器中以供解码器102取回。
[0056] 解码器可以以硬件、软件或硬件和软件的组合来实现。在一个配置中,解码器102可以是高效视频编码(HEVC)解码器。解码器102可以接收(例如获得)比特流114。解码器102可以基于比特流114生成解码画面118(例如一个或更多个解码画面118)。可以显示、回放、在存储器中存储、和/或向另一设备发送解码画面118等等。
[0057] 解码器102可以包括参考画面跟踪模块116。参考画面跟踪模块116可以使解码器102能够利用减少开销参考来跟踪参考画面。例如,参考画面跟踪模块116可以利用比现有方案(例如JCTVC-F493中给出的方案)所需的开销更少的开销来跟踪解码画面缓存(DPB)中的参考画面。
[0058] 例如,在现有方案中,非减少开销参考可以用于指定当前画面与长期参考画面之间的关系。例如,在现有方案中,可以通过增加POC编号空间来指定当前画面和长期参考画面之间的关系,从而避免POC回绕问题。然而,只能以针对POC的增加的比特-需求为代价来实现增加POC编号空间。本示例是可以用于避免现有方案中的POC回绕问题的多个可能机制之一。然而,本特定示例阐述针对现有方案中的长期画面的较大开销方面。
[0059] 例如,对于长期画面,JCTVC-F493使用缓存描述中指定绝对POC的longterm_poc[i]字段和缓存描述中指定时间ID的longterm_temporal_id[i]字段。这然后在JCTVC-F803中被移除,JCTVC-F803不包括用于长期画面的机制。在随后讨论中,给出了越过(长期画面)POC的方案。
[0060] 现有方案可能存在问题。首先,可能需要大量开销数据来指定长期参考画面和另一画面之间的关系。例如,可能需要分配大量开销比特来适当地表示长期参考画面和另一画面之间的POC整数差值。其次,如果指定有限数量的比特来表示此差值,则当号被重用时(由于例如号集合周期循环),该差值可能被有歧义地指示。
[0061] 参考画面跟踪模块116可以使用以下更详细描述的一个或更多个方案或方法来减少参考开销。一些示例包括使用循环参数,并且基于回绕指示符或画面集合之间的转换来递减循环参数。
[0062] 应当注意的是,在一些配置中,本文所描述的“参考画面”可以取而代之的是参考画面集合(例如帧组)。因此,在一些配置中,本文所描述的“解码参考画面”可以取而代之的是“解码参考画面集合”。例如,可以应用参考画面集合代替结合本文所公开的系统和方法所描述的单个参考画面。参考画面集合可以包括一个或更多个参考画面。参考画面集合中的两个或更多个参考画面可以对应于相同时刻或不同(例如类似)时刻。例如,在三维(3D)编码场景中,比特流114包含多个画面,其中,一些画面可以涉及左视图,而一些画面可以涉及右视图。因此,参考画面集合可以标识与特定显示时间相对应的左画面和右画面。
[0063] 在另一示例(例如可缩放编码场景)中,比特流可以包含不同分辨率的画面。在本示例中,参考画面集合可以包括(例如标识)相同画面的不同分辨率版本。
[0064] 图2是示出了解码器202的一个配置的框图。解码器202可以被包括在电子设备204中。例如,解码器202可以是高效视频编码(HEVC)解码器。解码器202和/或如所示的包括在解码器202中的元件中的一个或更多个元件可以以硬件、软件或硬件和软件的组合来实现。解码器202可以接收用于解码的比特流214(例如比特流214中包括的一个或更多个编码画面)。在一些配置中,所接收的比特流214可以包括接收的开销信息,例如接收的片首部、接收的PPS、接收的缓存描述信息等。比特流214中包括的编码画面可以包括一个或更多个编码参考画面和/或一个或更多个其他编码画面。
[0065] 熵解码模块254可以对(比特流214中包括的一个或更多个编码画面中的)接收符号进行熵解码,从而产生运动信息信号256和经量化、缩放和/或变换的系数258。
[0066] 运动信息信号256可以与来自帧存储器264的参考帧信号284的一部分在运动补偿模块260处进行组合,这可以产生帧间预测信号268。逆向模块262可以对经量化、缩小和/或变换的系数258进行逆量化、放大和逆变换,从而产生解码残差信号270。解码残差信号270可以添加到预测信号278,以产生组合信号272。预测信号278可以是选自帧间预测信号268或由帧内预测模块274产生的帧内预测信号276中的信号。在一些配置中,此信号选择可以基于(例如受控于)比特流214。
[0067] 帧内预测信号276可以是根据来自(例如当前帧中的)组合信号272的先前解码信息来预测的。还可以由去块滤波器280对组合信号272进行滤波。可以将所得到的滤波信号282写到帧存储器264中。所得到的滤波信号282可以包括解码画面。
[0068] 帧存储器264可以包括如本文所描述的解码画面缓存(DPB)。DPB可以包括作为短期参考帧或长期参考帧保存的一个或更多个解码画面。帧存储器264还可以包括与解码画面相对应的开销信息。例如,帧存储器264可以包括片首部、画面参数集合(PPS)信息、循环参数、缓存描述信息等。这些信息中的一个或更多个信息可能是由编码器(例如编码器108、开销信令模块112)信号通知的。帧存储器264可以提供解码画面218。
[0069] 解码器202可以包括参考画面跟踪模块216。参考画面跟踪模块216可以利用减少参考开销来跟踪帧存储器264中的一个或更多个参考画面。在一个示例中,参考画面跟踪模块216可以使用循环参数并基于所接收的回绕指示符修改(例如递减)循环参数来跟踪长期参考画面。在另一示例中,可以关于正在被解码的画面执行所有参考画面循环参数的更新。此更新过程可以针对当前画面(例如正在被解码的画面)执行一次。可以隐式地在POC的帮助下跟踪循环之间的转换。循环参数可能有时会增加(例如当在乱序画面解码中可能发生的从画面集合“n”转换到画面集合“n-1”时)。以下给出了关于用于基于选定画面来跟踪参考画面的一个或更多个方案的更多细节。
[0070] 本文所公开的系统和方法的一些配置可以使用修改缓存描述。以下给出修改缓存描述的示例。可以修改缓存描述以包括针对长期参考画面的“POC”、“poc_cycle”和“temporalID”。应当注意的是,“poc_cycle”可以是本文所描述的循环参数的一个示例。根据本文所公开的系统和方法所给出的(修改)缓存描述、(修改)句法和/或参数能够实现减少开销参考。
[0071] 以下表格(1)给出了将现有方案与根据本文所公开的系统和方法的一个提出方案中的PPS内的缓存描述进行比较的一个示例。被创建用于进一步描述JCTVC-F493的工作的文档“candidate working draft text of ad-hoc group 21”(AHG21)中详细描述了现有方案。应当注意的是,AHG21(JCTVC-F803)单独地分组并规定“负画面”(例如具有负deltaPOC值的画面)和“正画面”(例如具有正deltaPOC值的画面)。
[0072]
[0073] 表格(1)
[0074] 在上述表格(1)中,(POC0,poc_cycles0,temporalID3)和(POC1,poc_cycles1,temporalID4)表示长期(参考)画面。应当注意的是,缓存描述可以包含针对短期参考画面的两个列表POCBD和TemporalIDBD(分别与POC字段和TemporalID字段相对应)。此外,缓存描述可以包含针对长期参考画面的三个列表POCBD、POC_CYCLE_BD和TemporalIDBD(分别与POC字段、poc_cycle字段和TemporalID字段相对应)。
[0075] 在一些配置中,在画面参数集合中定义多个缓存描述。具有索引i的每个缓存描述包含用于参考画面的列表:POCBD_pps[i]、POC_CYCLE_pps[i]、DeltaPOCBD_pps[i]和TemporalIDBD_pps[i]以及变量NumberOfPicturesInBD_pps[i]。第i个列表POCBD_pps[i]包含参考画面的画面顺序计数值。第i个列表POC_CYCLE_pps[i]包含参考画面的poc_cycle值。第i个列表TemporalIDBD_pps[i]包含参考画面的相应的时间标识符。此外,第i个列表TemporalIDBD_pps[i]包含NumberOfPicturesInBD_pps[i]个条目。列表集合被称为POC_pps、POC_CYCLE_pps、DeltaPOCBD_pps和TemporalIDBD_pps。针对deltaPOC参考,单个列表DeltaPOCBD_pps[i]包含参考画面的deltaPOC值。应当注意的是,在ad-hoc组21的候选工作草案文本中,DeltaPOCBD_pps可以被称为DeltaPOCBD。列表POCBD_pps[i]和列表DeltaPOCBD_pps[i]中条目的总数可以由值NumberOfPicturesInBD_pps[i]给出。此外,POCBD_pps[i]和POC_CYCLE_pps[i]中条目的数量是相同的。
[0076] 应当注意的是,AHG21中给出的句法未充分地支持固定的长期参考。以下列表(1)阐述了ad-hoc组21的候选工作草案文本(AHG21)所需的比特流句法修改的一个示例。在列表(1)中用粗体文本给出由于现有方案的改变。
[0077]
[0078]
[0079] 列表(1)
[0080] positive_pictures_in_buffer_descriptions_flag指定是否存在具有正deltaPOC的任意缓存描述画面。bits_for_temporal_id_in_buffer_descriptions指定用于temporal_id_negative_pps[i][j]、temporal_id_positive_pps[i][j]、temporal_id_poc_pps[i][j]、temporal_id_negative[i]和temporal_id_positive[i]的比特的数量。number_of_bds指定画面参数集合中的缓存描述的数量。number_of_negative_pictures_pps[i]指定列表DeltaPOCBD_pps[i]中具有负值的条目的数量。number_of_negative_pictures_pps[i]将OffsetBD[i]的值定义为OffsetBD[i]=number_of_negative_pictures_pps[i]。number_of_negative_pictures_pps[i]的值应当在0至max_num_ref_frames的范围中(包含端点)。negative_delta_poc_minus_one_pps[i][j]指定POC值的绝对距离。max_num_ref_frames指定可以由解码过程针对序列中的任意画面的帧间预测所使用的参考帧、补充参考字段对和非配对参考字段的最大数量。这里,参考字段表示参考帧的一部分。例如,在使用交错式视频的应用中,参考帧可以由两个参考字段构成。第一参考字段可以包含参考帧中的数据的第一子集,而第二参考字段可以包含参考帧中的数据的第二子集,其中,第一子集和第二子集对应于不同数据。
[0081] negative_delta_poc_minus_one_pps[i][j]将变量DeltaPOCBD_pps[i][j]的值定义为DeltaPOCBD_pps[i][j]=-(negative_delta_poc_minus_one_pps[i][j]+1)(如果j等于0)。此外,negative_delta_poc_minus_one_pps[i][j]将变量DeltaPOCBD_pps[i][j]的值定义为DeltaPOCBD_pps[i][j]=DeltaPOCBD_pps[i][j-1]-(negative_delta_poc_minus_one_pps[i][j]+1)(如果j>0)。DeltaPOCBD_pps[i][j]应当在-1至-MaxPOC/2的范围中。
[0082] temporal_id_negative_pps[i][j]指定时间标识符,并应当由bits_for_temporal_id_in_buffer_descriptions个比特表示。temporal_id_negative_pps[i][j]被添加到列表TemporalIDBD_pps[i]中。在以上一个配置中,添加操作是附加操作。在另一配置中,附加操作是以预定义顺序替换列表中的项目的操作。temporal_id_negative_pps[i][j]应当在0至max_temporal_layers_minus1的范围中(包括端点)。max_temporal_layers_minus1+1指定序列中存在的时间层的最大数量。
[0083] number_of_positive_pictures_in_bd_pps[i]指定列表DeltaPOCBD_pps[i]中具有正值的条目的数量。number_of_positive_pictures_in_bd_pps[i]的值应当在0至max_num_ref_frames-OffsetBD[i]的范围中(包含端点)。当number_of_positive_pictures_in_bd_pps[i]句法要素不存在时,number_of_positive_pictures_in_bd_pps[i]的值应当被推断为等于0。
[0084] delta_poc_minus_one_pps[i][j]指定POC值的绝对距离。delta_poc_minus_one_pps[i][j]将变量DeltaPOCBD_pps[i][j+OffsetBD[i]]的值定义为DeltaPOCBD_pps[i][j+OffsetBD[i]]=delta_poc_minus_one_pps[i][j]+1(如果j等于0),并且定义为DeltaPOCBD_pps[i][j+OffsetBD[i]]=DeltaPOCBD_pps[i][j-1+OffsetBD[i]]+delta_poc_minus_one_pps[i][j]+1(如果j>0)。DeltaPOCBD_pps[i][j+OffsetBD[i]]应当在1至MaxPOC/2-1的范围中。
[0085] temporal_id_positive_pps[i][j]指定时间标识符,并应当由bits_for_temporal_id_in_buffer_descriptions个比特表示。temporal_id_positive_pps[i][j]将变量TemporalIDBD_pps[i][j]的值定义为TemporalIDBD_pps[i][j+OffsetBD[i]]=temporal_id_positive_pps[i][j]。temporal_id_positive_pps[i][j]应当在0至max_temporal_layers_minus1的范围中(包括端点)。
[0086] 以下给出列表(1)中的参数的描述的示例。number_of_longterm_pictures_pps[i]指定列表POCBD_pps[i]和POC_CYCLE_BD_pps[i]中的条目的数量。number_of_longterm_pictures_pps[i]的值应当在0至max_num_ref_frames的范围中(包含端点)。max_num_ref_frames指定短期参考帧和长期参考帧的最大数量。poc_pps[i][j]指定POC值,并将要添加到列表POCBD_pps[i]的值定义为POCBD[i][j]=poc[j]。在以上一个配置中,添加操作是附加操作。在另一配置中,附加(或添加)操作是以预定义顺序替换列表中的项目的操作。poc_pps[i][j]应当在0至MaxPOC-1的范围中。
[0087] poc_cycle_pps[i][j]指定poc_cycle(例如循环参数)值,并定义要添加到列表POC_CYCLE_BD_pps[i]的值。在以上一个配置中,添加操作是附加操作。在另一配置中,附加(或添加)操作是以预定义顺序替换列表中的项目的操作。在一些配置中,poc_cycle_pps[i][j](例如循环参数)可以小于或等于零。在这种情况下,有符号整数可以用于表示循环参数。在其他配置中,无符号整数可以用于表示循环参数。
[0088] temporal_id_poc_pps[i][j]指定时间标识符,并且如果bits_for_temporal_id_in_buffer_descriptions>0,则temporal_id_poc_pps[i][j]应当存在。temporal_id_poc_pps[i][j]定义列表TemporalIDBD_pps[i]中的条目的值。temporal_id_poc_pps[i][j]被添加到列表TemporalIDBD_pps[i]中。在以上一个配置中,添加操作是附加操作。在另一配置中,附加(或添加)操作是以预定义顺序替换列表中的项目的操作。temporal_id_poc_pps[i][j]应当在0至max_temporal_layers_minus1的范围中(包括端点)。max_temporal_layers_minus1+1指定序列中存在的时间层的最大数量。应当注意的是,可以按number_of_negative_pictures_pps[i]+number_of_positive_pictures_pps[i]+number_of_longterm_pictures_pps[i]来计算变量NumberOfPicturesInBD_pps[i]。
[0089] 针对在第i个画面参数集合的缓存描述中传输的针对参考画面的负deltaPOC值和正deltaPOC值被添加到列表DeltaPOCBD_pps[i]中。在以上一个配置中,添加操作是附加操作。在另一配置中,附加(或添加)操作是以预定义顺序替换列表中的项目的操作。
[0090] 以下列表(2)示出了备选的示例性配置,其中,可以使用以下句法用不同循环参数(例如poc_cycle)在PPS中创建多个缓存描述。在列表(2)中用粗体文本给出由于现有方案的改变。
[0091]
[0092]
[0093] 列表(2)
[0094] 在列表(2)中,以下给出了其他参数的描述的示例。当被设置为1时,poc_cycle_steps_flag指定应当为除了poc_cycle计数之外与信号通知的缓存描述模型完全相同的信号通知的缓存描述模型,生成附加缓存描述。poc_cycle_steps_flag应当默认是0。此外,poc_cycle_steps指定应当为信号通知的缓存描述模型生成的附加缓存描述的数量。除了poc_cycle计数应当递减之外,附加缓存描述应当与信号通知的缓存描述相同。在一个配置中,所生成的附加缓存描述具有poc_cycle_pps[i][j]值-1、-2、-3、...、-(poc_cycle_steps)。
[0095] 在一些配置中,可以在比特流中启用分辨率切换。在这些配置中,参考画面的分辨率可以与当前画面的分辨率不同。因此,知道可以使用哪种机制来将参考画面缩放至正确的分辨率可能是有益的。信号通知该机制的一种方式是与缓存描述一起显式地信号通知该机制。例如,编码器108(例如开销信令模块112)可以向解码器102信号通知缩放参数s。因此,可以在表格(2)中示出备选缓存描述。
[0096]备选缓存描述
deltaPOC0,temporalID0
deltaPOC1,temporalID1
deltaPOC2,temporalID2,s0
(POC0,poc_cycles0,temporalID3,s1)
(POC1,poc_cycles1,temporalID4,s2)
[0097] 表格(2)
[0098] 在表格(2)中,前两个条目具有与当前画面的分辨率匹配的分辨率。然而,其余三个条目具有不同的分辨率,并可以分别使用缩放参数s0,s1,s2。可以选择性地信号通知缩放参数。例如,可以仅当当前画面和参考画面具有不同分辨率时,才信号通知缩放参数。在另一配置中,可以始终信号通知缩放参数。在另一配置中,可以例如通过使用由当前画面特性(例如分辨率)和参考画面特性(例如分辨率)作为索引的查找表,(由解码器)隐式地推断缩放参数。
[0099] 在另一配置中,可以针对缓存描述中所定义的画面的任意子集,信号通知缩放参数。例如,可以针对使用正deltaPOC值信号通知的参考画面的子集、使用负deltaPOC值信号通知的参考画面的子集、使用POC和poc_cycle信号通知的画面的子集,信号通知缩放参数。在一个配置中,子集可以包含整个列表。以下表格(3)中阐述了一个示例,其中,negativeDeltaPOC0和negativeDeltaPOC1是负增量POC值,positiveDeltaPOC2是正增量POC值,而s0、s1、s2、s3和s4是分别针对第一条目、第二条目、第三条目、第四条目和第五条目的缩放参数。
[0100]备选缓存描述
negativeDeltaPOC0,temporalID0,s0
negativeDeltaPOC1,temporalID1,s1
positiveDeltaPOC2,temporalID2,s2
(POC0,poc_cycles0,temporalID3,s3)
(POC1,poc_cycles1,temporalID4,s4)
[0101] 表格(3)
[0102] 在另一配置中,缩放参数可以指示要保存在解码画面缓存中的参考画面的一个或更多个分辨率。在另一配置中,缩放参数可以用于信号通知要用于运动补偿过程的参考画面的分辨率。在另一配置中,如果参考画面与正在解码的画面的分辨率不相同,则缩放参数指示要使用的运动补偿过程以生成预测。
[0103] 在一个配置中,缩放参数信号通知(例如指示)水平和/或垂直分辨率的改变(以象素为单位)。在一个配置中,缩放参数信号通知(例如指示)期望的水平和/或垂直分辨率与原始水平和/或垂直分辨率之间的比例。在一个配置中,缩放参数是二元组,其中,第一值标识水平分辨率的缩放比例,而第二值标识垂直分辨率的缩放比例。
[0104] 在一些配置中,可以基于缩放参数处理参考画面的变换系数,以获得期望的分辨率。这可能对通过在对参考画面进行编码时仅允许比特定阈值大的块大小来能够实现更好分辨率自适应有益。
[0105] 在另一配置中,可以基于缩放参数来处理参考画面的重构象素,以获得期望的分辨率。应当注意的是,这些配置可以应用于本文所公开的所有参考画面索引方案。
[0106] 列表(3)阐述了来自AHG21的针对PPS的句法修改的另一示例。具体而言,列表(3)阐述了AHG21中所概述的用在片首部中的缓存描述句法的一个示例。然而,在列表(3)中以粗体文本表示根据本文所公开的系统和方法的对AHG21中所给出的句法的修改。
[0107]
[0108]
[0109]
[0110] 列表(3)
[0111] 以下给出列表(3)中的参数的描述的示例。number_of_negative_pictures指定负增量POC条目的数量。number_of_negative_pictures将Offset(偏移)的值定义为Offset=number_of_negative_pictures。number_of_negative_pictures的值应当在0至max_num_ref_frames的范围中(包含端点)。
[0112] negative_delta_poc_minus_one[i]指定POC值的绝对距离。negative_delta_poc_minus_one[i]将变量POCBD[i]的值定义为POCBD[i]=(pic_order_cnt+MaxPOC-(negative_delta_poc_minus_one[i]+1))%MaxPOC(如果i等于0),并定义为POCBD[i]=(POCBD[i-1]+MaxPOC-(negative_delta_poc_minus_one[i]+1))%MaxPOC(如果i>0)。这里,pic_order_cnt是如在片首部中信号通知的当前画面的POC。negative_delta_poc_minus_one[i]的值应当在0至MaxPOC-1的范围中(包含端点)。POCBD[i]的值应当是使得DiffPOC(currPic,refPic)的值在-1至-MaxPOC/2的范围中。这里,refPic是pic_order_cnt等于POCBD[i]的参考画面。
[0113] 按如下方式规定DiffPOC(picA,picB):
[0114]
[0115] 按照下式规定函数POC(picX):POC(picX)=picX的pic_order_cnt。将POC_CYCLE_BD[i]设置为第i个负deltaPOC参考画面的poc_cycle。第i个负deltaPOC参考画面的poc_cycle是基于选定画面来计算的。
[0116] temporal_id_negative[i]指定时间标识符,并应当由bits_for_temporal_id_in_buffer_descriptions个比特表示,其中bits_for_temporal_id_in_buffer_descriptions是来自由当前画面所使用的画面参数集合的句法要素。temporal_id_negative[i]将变量TemporalIDBD[i]的值定义为TemporalIDBD[i]=temporal_id_negative[i]。temporal_id_negative[i]应当在0至max_temporal_layers_minus1的范围中(包括端点)。限制TemporalIDBD[i]的值,使得TemporalIDBD[i]必须等于在pic_order_cnt等于POCBD[i]的参考画面的NAL-首部中信号通知的temporal_id。
[0117] number_of_positive_pictures指定列表DeltaPOCBD_pps[i]中具有正值的条目的数量。number_of_positive_pictures的值应当在0至max_num_ref_frames-Offset的范围中(包含端点)。当number_of_positive_pictures句法要素不存在时,number_of_positive_pictures的值应当推断为等于0。
[0118] delta_poc_minus_one[i]指定POC值的绝对距离。delta_poc_minus_one[i]将变量POCBD[i+Offset]的值定义为POCBD[i+Offset]=(pic_order_cnt+(delta_poc_minus_one[i]+1))%MaxPOC(如果i等于0),并定义为POCBD[i+Offset]=(POCBD[i-1+Offset]+(delta_poc_minus_one[i]+1))%MaxPOC(如果i>0)。这里,pic_order_cnt是如在片首部中信号通知的当前画面的POC。delta_poc_minus_one[i]的值应当在0至MaxPOC-1的范围中(包含端点)。POCBD[i+Offset]的值应当是使得DiffPOC(currPic,refPic)的值在1至MaxPOC/2-1的范围中,其中refPic是pic_order_cnt等于POCBD[i+Offset]的参考画面。将POC_CYCLE_BD[i+Offset]设置为第i个正deltaPOC参考画面的poc_cycle。第i个正deltaPOC参考画面的poc_cycle是基于选定画面来计算的。
[0119] temporal_id_positive[i]指定时间标识符,并应当由bits_for_temporal_id_in_buffer_descriptions个比特表示,其中bits_for_temporal_id_in_buffer_descriptions是来自由当前画面所使用的画面参数集合的句法要素。temporal_id_positive[i]将变量TemporalIDBD[i+Offset]的值定义为TemporalIDBD[i+Offset]=temporal_id_positive[i]。temporal_id_positive[i]应当在0至max_temporal_layers_minus1的范围中(包括端点)。限制TemporalIDBD[i]的值,使得TemporalIDBD[i]必须等于在pic_order_cnt等于POCBD[i]的参考画面的NAL-首部中信号通知的temporal_id。
[0120] bd_poc_cycle_update_flag等于1指定应当针对当前画面重载参考缓存描述的POC_CYCLE_BD_pps[bd_idx][j]。在一些配置中,未来帧还可以重载poc_cycle信息。如果bd_poc_cycle_update_flag是0,则要使用参考缓存描述的原始POC_CYCLE_BD_pps[bd_idx][j]。poc_cycle_pps_override[j]指定仅针对当前画面要用于重载POC_CYCLE_BD_pps[bd_idx][j]中的值的值。在备选配置中,poc_cycle_pps_override[j]指定偏移。仅针对当前画面,可以使用(POC_CYCLE_BD_pps[bd_idx][j]+poc_cycle_pps_override[j]),而不是POC_CYCLE_BD_pps[bd_idx][j]。
[0121] poc_pps_override[j]指定仅针对当前画面要用于重载POCBD_pps[bd_idx][j]中的值的值。在备选配置中,poc_pps_override[j]指定偏移。仅针对当前画面,可以使用(POCBD_pps[bd_idx][j]+poc_pps_override[j]),而不是POCBD_pps[bd_idx][j]。temporal_id_pps_override[j]指定仅针对当前画面要用于重载TemporalIDBD_pps[bd_idx][j]中的值的值。在备选配置中,temporal_id_pps_override[j]指定偏移。仅针对当前画面,可以使用(TemporalIDBD_pps[bd_idx][j]+temporal_id_pps_override[j]),而不是TemporalIDBD_pps[bd_idx][j]。
[0122] number_of_longterm_pictures指定列表POCBD和POC_CYCLE_BD中的长期画面条目的数量。number_of_longterm_pictures的值应当在0至max_num_ref_frames的范围中(包含端点)。max_num_ref_frames指定短期参考帧和长期参考帧的最大数量。poc[j]将要添加到列表POCBD中的POC值指定为POCBD[bd_idx][j]=poc[j]。在以上一个配置中,添加操作是附加操作。在另一配置中,附加(或添加)操作是以预定义顺序替换列表中的项目的操作。poc[j]应当在0至MaxPOC-1的范围中。
[0123] poc_cycle[j](例如循环参数)指定poc_cycle的值,并定义要添加到列表POC_CYCLE_BD的值。在以上一个配置中,添加操作是附加操作。在另一配置中,附加(或添加)操作是以预定义顺序替换列表中的项目的操作。poc_cycle[j]可以小于或等于零,或可以占据不同的数值范围。
[0124] temporal_id_poc[j]指定时间标识符,并应当由bits_for_temporal_id_in_buffer_descriptions个比特表示。temporal_id_poc[j]定义要添加到列表TemporalIDBD中的值。在以上一个配置中,添加操作是附加操作。在另一配置中,附加(或添加)操作是以预定义顺序替换列表中的项目的操作。temporal_id_poc[i][j]应当在0至max_temporal_layers_minusl的范围中(包括端点)。max_temporal_layers_minus1+1指定序列中存在的时间层的最大数量。
[0125] 在一些配置中,可以在列表(3)中所阐述的“for”循环之前发送number_of_longterm_pictures_pps[bd_idx],从而避免对片首部以及PPS的依赖。备选地,bd_poc_cycle_update_flag可以替换为另一参数num_longterm_poccycle_override_count。例如,可以用“If num_longterm_poccycle_override_count>0then For(j=0;j<num_longterm_poccycle_override_count;j++){....}”替换列表(3)中的相关代码。
[0126] bd_reference_flag等于1指定应当使用在片首部中未发送的句法要素来创建当前画面的缓存描述。在一个配置中,使用画面参数集合中的句法要素来创建针对当前画面的缓存描述。bd_reference_flag等于0指定可以通过在片首部中发送的缓存描述和在片首部中未发送的缓存描述的组合来创建当前画面的缓存描述。在一个配置中,在画面参数集合中发送在片首部中未发送的缓存描述。
[0127] bd_idx标识可用缓存描述集合中的缓存描述。在一个配置中,bd_idx指示应当用于当前画面的缓存描述的创建的列表POCBD_pps、DeltaPOCBD_pps、POC_CYCLE_BD_pps和TemporalIDBD_pps中的索引。
[0128] (DeltaPOCBD_pps[bd_idx],TemporalIDBD_pps[bd_idx])中与deltaPOC个参考画面相对应的值被转换为画面顺序计数(例如POC)、循环参数(例如poc_cycle)和时间标识符,并被添加到画面缓存描述列表POCBD、POC_CYCLE_BD和TemporalIDBD中。列表(POCBD_pps[bd_idx],POC_CYCLE_BD_pps[bd_idx],TemporalIDBD_pps[bd_idx])中与参考画面相对应的值被添加到画面缓存描述列表POCBD、POC_CYCLE_BD和TemporalIDBD中。在以上一个配置中,添加操作是附加操作。在另一配置中,附加(或添加)操作是以预定义顺序替换列表中的项目的操作。
[0129] combine_with_reference_flag等于1指定来自活动PPS的句法要素用于结合显式信令指派列表POCBD、POC_CYCLE_BD和TemporalIDBD中的值。当combine_with_reference_flag句法要素不存在时,combine_with_reference_flag的值应当推断为等于0。
[0130] bd_combination_idx指定列表DeltaPOCBD_pps和TemporalIDBD_pps中的索引,该索引应当用于结合显式信令创建当前画面的缓存描述。应当由ceil(log2(number_of_bds))个比特表示bd_combination_idx。bd_combination_idx的值应当在0至number_of_bds-1的范围中,其中number_of_bds是来自由当前画面所使用的画面参数集合的句法要素。然后,使用预定义机制将来自列表DeltaPOCBD_pps[bd_idx]、POCBD_pps[bd_idx]、POC_CYCLE_BD_pps[bd_idx]和TemporalIDBD_pps[bd_idx]的值添加到列表POCBD、POC_CYCLE_BD和TemporalIDBD中的当前画面中。在以上一个配置中,添加操作是附加操作。在另一配置中,附加(或添加)操作是以预定义顺序替换列表中的项目的操作。
[0131] 在下文中给出了可以应用本文所描述的系统和方法的方式的一些示例。假定POC=0的画面是由来自后续画面集合的POC=MaxPOC-1的画面和POC=0的画面所使用的长期(参考)画面。可以以不同方式指示长期(参考)画面。
[0132] 在第一种方式中,PPS中存在两个缓存描述,包括缓存描述A:{POC=0,poc_cycle=0,temporalID}和缓存描述B:{POC=0,poc_cycle=-1,temporalID}。POC=MaxPOC-1的画面将指向缓存描述A。来自后续画面集合的POC=0的画面将参考缓存描述B。
[0133] 在第二备选方式中,POC=MaxPOC-1的画面将指向缓存描述A。来自后续画面集合的POC=0的画面将参考缓存描述A。缓存描述A对应于{POC=0,poc_cycle=0,temporalID}。为了参考正确的画面,poc_cycle应当被设置为-1,这是因为参考画面属于先前的[0,…,MaxPOC-1]画面集合。因此,可以通过在片首部中发送“-1”仅针对当前片重载(例如设置为不同的值)当前被设置为0的缓存描述A的poc_cycle值。在一些配置中,画面中的第一片可用于仅针对当前画面重载缓存描述中的poc_cycle值。
[0134] 在一些配置中,可以在更优级别修改在较高级别信号通知的参考画面列表。例如,可以在PPS中发送的缓存描述中信号通知(例如在较高级别信号通知)参考画面列表。然而,可以修改(例如在更优级别修改)PPS中发送的缓存描述。例如,可以通过删除现有条目来修改缓存描述。附加地或备选地,可以修改来自PPS的缓存描述信息以添加新条目或替换条目。例如如果没有可用的空槽位,则还可以修改来自PPS的缓存描述信息以使用预定义机制来添加新条目并替换当前条目。允许修改的益处是可以获得更高级别的控制。这可以替换使用来自PPS的没有修改的缓存描述,或者附加地或备选地仅替换前“n”个条目。
[0135] 在一些配置中,可以定义附加句法以替换槽位列表中的条目。在此情况下,将指定列表中所替换的索引、以及可以替换在该索引处的当前条目的条目。
[0136] 附加地或备选地,如果槽位列表没有空缺,则可以定义附加句法以利用替换方式在列表中添加条目。在此情况下,可以使用先前在比特流中发送的一些信息,显式地信号通知(例如从编码器108或开销信令模块112)或隐式地推断(例如通过解码器102)列表中应当替换的索引。
[0137] 列表(4)阐述了来自AHG21的针对PPS的句法修改的另一示例。具体而言,列表(4)阐述了AHG21中所概述的用在片首部中的缓存描述句法的另一示例。然而,在列表(4)中以粗体文本表示根据本文所公开的系统和方法的对AHG21中所给出的句法的修改。
[0138]
[0139]
[0140]
[0141] 列表(4)
[0142] 列表(4)包含许多与列表(3)的要素类似的要素。列表(4)还包含对片首部的句法修改,以允许参考画面的删除和/或添加。
[0143] 以下给出列表(4)中参数的描述的示例。bd_poc_cycle_delete_count指定针对当前画面(例如仅针对当前画面),要从列表POCBD_pps[bd_idx]、temporalIDBD_pps[bd_idx]和POC_CYCLE_BD_pps[bd_idx]中删除的条目的数量。在一些配置中,bd_poc_cycle_delete_count可以大于或等于0。
[0144] bd_pps_delete_idx[j]指定针对当前画面,删除列表中的POC_CYCLE_BD_pps[bd_idx][bd_pps_delete_idx[j]]条目、temporalIDBD_pps[bd_idx][bd_pps_delete_idx[j]]条目、和POCBD_pps[bd_idx][bd_pps_delete_idx[j]]条目。在一些配置中,一旦删除画面,该画面就可能不再可供后续解码画面参考。在其他配置中,一旦所有删除完成,就可以将列表POCBD_pps[bd_idx]、temporalIDBD_pps[bd_idx]和POC_CYCLE_BD_pps[bd_idx]中的剩余条目移向初始索引(例如第零个索引)以占据所空出的槽位。可以执行此过程使得在任意两个已占用槽位之间都不剩余空的槽位。这里,槽位对应于缓存描述中的条目。例如,如果列表是[Slot0=A][Slot1=空][Slot2=B][Slot3=C][Slot4=空][Slot5=D],则在删除之后,条目被移至Slot0,直到在任意两个已占用槽位之间都不剩余空的槽位为止。在本示例中,所得到的列表是[Slot0=A][Slot1=B][Slot2=C]Slot3=D][Slot4=空][Slot5=空]。
[0145] bd_poc_cycle_append_count指定针对当前画面,要向列表POCBD_pps[bd_idx]、temporalIDBD_pps[bd_idx]和POC_CYCLE_BD_pps[bd_idx]附加的条目的数量。在一些配置中,bd_poc_cycle_append_count可以大于或等于0。
[0146] poc_pps_append[j]指定针对当前画面(例如仅针对当前画面),要附加到列表POCBD_pps[bd_idx]的POC值。在一些配置中,如果在列表中存在任何空槽位,从与零-索引最接近的空槽位开始然后以槽位索引递增的顺序执行添加。
[0147] poc_cycle_pps_append[j]指定针对当前画面(例如仅针对当前画面),要附加到列表POC_CYCLE_BD_pps[bd_idx]的poc_cycle值。在一些配置中,如果在列表中存在任何空槽位,则可以首先填充与零.索引最接近的空槽位。附加地,可以以槽位索引递增的顺序填充槽位。在一些配置中,以预定义顺序执行针对POCBD_pps[bd_idx]和POC_CYCLE_BD_pps[bd_idx]重载条目、删除条目和添加条目这些操作。
[0148] temporal_id_pps_append[j]指定针对当前画面(例如仅针对当前画面),要附加到列表TemporalIDBD_pps[bd_idx]的时间标识符值。在一些配置中,如果在列表中存在任何空槽位,从与零-索引最接近的空槽位开始然后以槽位索引递增的顺序执行添加。
[0149] 在下文中给出了本文所公开的系统和方法的配置的一些示例。在一个配置中,可以用二元组(LTSlotIdx、temporalID)替换三元组(POC、poc_cycle、temporalID)。LTSlotIndex可以是指向长期DPB中的位置的槽位索引。此方案的一个可能益处是减少比特率开销。
[0150] 在另一配置中,可以用(f(POC,poc_cycle)、temporalID)替换三元组(POC、poc_cycle、temporalID),其中f(POC,poc_cycle)是将二元组(POC、poc_cycle)映射到索引的函数(例如查找表)。在另一配置中,可以使用绝对POC值,而不是(POC、poc_cycle)。在一个示例中,此绝对POC值将与JCTVC-F493中的缓存描述中规定绝对POC的longterm_poc[i]字段不同。具体而言,JCTVC-F493的longterm_poc[i]字段仅能够信号通知范围0至MaxPOC中的值。然而,根据本文所公开的系统和方法,可以使用AVC的最高有效位(MSB)和最低有效位(LSB)方案来信号通知(并可能导出)绝对POC值,因此提供较大比特分辨率。备选地,可以使用比MaxPOC大的号空间来信号通知绝对POC值。
[0151] 在另一配置中,根据本文所公开的系统和方法的绝对POC可以用于参考所有参考画面(例如短期画面和长期画面)。在另一配置中,可以使用根据本文所公开的系统和方法的绝对POC,而不是deltaPOC信令。在一些配置中,可以用绝对POC值替换POC和poc_cycle,如以下示例所示(并且可以不限于以下示例):
[0152]
[0153] 在本示例中,absolute_poc_pps[i][j]是针对PPS中第i个缓存描述中第j个长期画面条目的绝对画面顺序计数。
[0154]
[0155] 在本示例中,absolute_poc[j]是针对缓存描述中的第j个长期画面条目的绝对画面顺序计数。
[0156] 在一些配置中,可以附加地或备选地在自适应片参数集合或自适应参数集合(APS)中承载通常在PPS中和/或在缓存描述中包含的一些或所有信息。此信息包括以下各项中一个或更多个:number_of_longterm_pictures、poc[j]、poc_cycle[j]、temporal_id_poc[j]、number_of_longterm_pictures_pps[i]、poc_pps[i][j]、poc_cycle_pps[i][j]和temporal_id_poc_pps[i][j]。例如,自适应片参数集合或自适应参数集合(APS)可以包括以下各项中一个或更多个:参考画面的数量(例如number_of_longterm_pictures)、画面顺序计数(例如poc[j])、画面顺序计数循环参数(例如poc_cycle[j])、时间标识符画面顺序计数参数(例如temporal_id_poc[j])、参考画面的画面参数集合数量(例如number_of_longterm_pictures_pps[i])、画面参数集合画面顺序计数(例如poc_pps[i][j])、画面参数集合画面顺序计数循环参数(例如poc_cycle_pps[i][j])和画面参数集合时间标识符画面顺序计数参数(例如temporal_id_poc_pps[i][j])。
[0157] 在一些配置中,如果信息poc_cycle[j]与0不同,则可以(例如从编码器108向解码器102、202)仅信号通知信息poc_cycle[j]。在此情况下,可以定义备选句法。
[0158] 在另一配置中,可以附加地或备选地在片首部中与缓存描述信息分离地承载通常在PPS中和/或在缓存描述中包含的一些或所有信息。例如,片首部可以(与缓存描述容器分离地)承载以下各项中一个或更多个:参考画面的数量(例如number_of_longterm_pictures)、画面顺序计数(例如poc[j])、画面顺序计数循环参数(例如poc_cycle[j])、时间标识符画面顺序计数参数(例如temporal_id_poc[j])、参考画面的画面参数集合数量(例如number_of_longterm_pictures_pps[i])、画面参数集合画面顺序计数(例如poc_pps[i][j])、画面参数集合画面顺序计数循环参数(例如poc_cycle_pps[i][j])和画面参数集合时间标识符画面顺序计数参数(例如temporal_id_poc_pps[i][j])。
[0159] 在备选配置中,可以通过将长期(参考)画面编为x.y的索引来信号通知该长期(参考)画面,其中,x=poc[j]或poc_pps[i][j],而y是新信息子索引,该新信息子索引定义用于对长期(参考)画面编子索引的附加名称空间/号空间。在此情况下,可以在PPS和/或缓存描述(在片首部中)中发送针对每个长期(参考)画面的x条目和y条目。
[0160] 在一些配置中,可以使用增量参考(使用例如deltaPOC和temporalID)或绝对参考(使用例如POC、poc_cycle和temporalID)来参考所有(参考)画面(例如长期的和短期的)。例如,整个解码画面缓存(DPB)可以包含接收画面集合。这些接收画面的子集可以使用增量参考,而剩余的接收画面可以使用绝对参考。应当注意的是,现有方案未规定与根据本文所公开的系统和方法(例如使用POC和poc_cycle)给出的绝对参考相同的绝对参考。应当注意的是,可以结合本文所描述的方法和/或方案中的一个或更多个来实现所描述的缓存描述和句法的配置中的一个或更多个。
[0161] 图3是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法300的一个配置的流程图。电子设备204(例如解码器202)可以接收302比特流。例如,解码器202可以接收302包括编码参考画面(以及例如其他编码画面)的比特流214。在一些配置中,比特流214还可以包括开销信息(例如PPS、缓存描述信息、参数、回绕指示符、参考画面指示或标识符等)。
[0162] 电子设备204可以对比特流214的一部分进行解码304,以产生解码参考画面。例如,解码器202可以对比特流214的一部分进行解码304,以产生解码参考画面,该解码参考画面被存储在帧存储器264中。应当注意的是,可以对比特流214的一个或更多个部分进行解码304,以产生一个或更多个解码参考画面。
[0163] 电子设备204可以利用减少开销参考来跟踪306解码画面缓存(DPB)中的解码参考画面。例如,电子设备204可以将循环参数与解码参考画面进行关联,并且如果接收到回绕指示符或如果确定了画面集合之间的转换,则修改(例如递减或递增)循环参数。其他方案可以用于跟踪306解码参考画面。以下给出更多细节。应当注意的是,DPB可以包括一个或更多个解码参考画面。
[0164] 电子设备204可以基于一个或更多个解码参考画面对画面进行解码308。例如,可以基于参考画面对比特流214的一部分(不是解码304用于产生解码参考画面的部分)进行解码308。例如,可以向运动补偿模块260提供(在DPB中已经跟踪的)解码参考画面,以基于帧间预测机制生成帧间预测信号268。然后,帧间预测信号268可以用于对画面进行解码308。在一些配置或实例中,可以对一个或更多个解码参考画面进行跟踪306,并将其用于对画面进行解码308。
[0165] 图4是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法400的更具体配置的流程图。此方法400可以是用于当POC被重用时跟踪哪个画面正在被参考的一个方案。电子设备204(例如解码器202)可以接收402比特流214。例如,解码器202可以接收402包括编码参考画面(以及例如其他编码画面)的比特流214。在一些配置中,比特流214可以包括开销信息(例如PPS、缓存描述信息、参数、回绕指示符、参考画面指示或标识符等)。
[0166] 电子设备204可以对比特流214的一部分进行解码404,以产生解码参考画面。例如,解码器202可以对比特流214的一部分进行解码404,以产生解码参考画面,该解码参考画面被存储在帧存储器264中。应当注意的是,可以对比特流214的一个或更多个部分进行解码404,以产生一个或更多个解码参考画面。
[0167] 电子设备204可以将循环参数与包括解码参考画面的解码画面集合进行关联406。例如,电子设备204可以将循环参数“poc_cycle”与包括解码参考画面的解码画面集合进行关联406。
[0168] 可以如下定义循环参数“poc_cycle”。当固定数量的比特用于表示范围[0,…,MaxPOC-1]中的画面的POC时,存在MaxPOC个唯一整数值。如果正在编码的画面的数量超过MaxPOC,则画面编号机制必须重用已经指派的POC值。在一个示例中,POC编号然后按如下方式进行:……、[0,…,MaxPOC-1]n-2、[0,…,MaxPOC-1]n-1、[0,…,MaxPOC-1]n、[0,…,MaxPOC-1]n+1、……。本示例中的下标表示集合[0,…,MaxPOC-1]已经被重复的次数。此下标或集合[0,…,MaxPOC-1]已经被重复的次数可以表示为MaxPOCSetIndex。例如,POC=0且MaxPOCSetIndex=n的画面表示序列中的第(n*MaxPOC+1)个画面(假定例如画面集合编号从1开始)。以下结合图5给出关于循环参数“poc_cycle”的附加细节。
[0169] 电子设备204可以确定408是否接收到回绕指示符。例如,每当编码器108或发送电子设备A 104a达到画面集合中的画面的预定最大数量时,编码器108或发送电子设备A 104a可以发送由解码器102或接收电子设备B 104b接收的回绕指示符,以指示正在发送另一画面集合(例如POC正在重置或开始另一循环)。以下结合图12给出更多细节。
[0170] 如果电子设备204确定408已经接收到回绕指示符,则电子设备204可以修改410(例如递减)循环参数。例如,电子设备204递减针对DPB中的每个画面或每个画面集合的循环参数。在另一示例中,电子设备204可以递增循环参数。
[0171] 电子设备204可以基于解码参考画面对画面进行解码412。例如,可以基于参考画面对比特流214的一部分(不是解码404用于产生解码参考画面的部分)进行解码412。例如,可以向运动补偿模块260提供(在DPB中已经跟踪的)解码参考画面,以基于帧间预测机制生成帧间预测信号268。然后,帧间预测信号268可以用于对画面进行解码412。在一些配置或实例中,一个或更多个解码参考画面可以用于对画面进行解码412。
[0172] 图5是示出了循环参数所参考的多个画面集合的一个示例的示意图。更具体而言,图5示出了使用循环参数基于选定画面利用减少开销参考来跟踪参考画面的示例。具体而言,图5示出了与画面集合A 507a相关联的循环参数(例如poc_cycle=-1)、与画面集合B 507b相关联的循环参数(例如poc_cycle=0)和与画面集合C 507c相关联的循环参数(例如poc_cycle=+1)。然而,应当注意的是,画面集合A 507a可以是或可以不是帧序列中的第一画面集合。例如,一个或更多个画面集合可以在画面集合A 507a之前。此外,应当注意的是,画面集合C 507c可以是或可以不是帧序列中的最后一个画面集合。例如,一个或更多个画面集合可以在画面集合C 507c之后。
[0173] 每个画面集合507a-c可以包括一个或更多个画面501a-n、503a-n、505a-n。在本示例中,每个画面集合507a-c包括MaxPOC个画面501、503、505。具体而言,每个画面501、503、505可以具有相应的画面顺序计数(POC),在图5中被表示为[0,1,2,…,MaxPOC-1]。
[0174] 在一个示例中,包含当前解码画面的画面集合的poc_cycle可以被设置为0,以用于计算其他画面的poc_cycle。在一些情况下,可以乱序地对画面进行解码。例如,解码器可以看见503b,然后看见505a,然后看见503c。在本示例中,假定当前正在被解码的画面是画面集合B 507b中POC=1的画面503b。然后可以基于当前解码画面的poc_cycle来计算另一画面(例如参考画面)的poc_cycle。
[0175] 图6是示出了多个画面集合的另一示例的示意图。图6包含与以上结合图5所描述的画面集合507a-c类似的画面集合607a-c。每个画面集合607a-c中可以包括一个或更多个画面601a-c、603a-n、605a-n。画面集合607a-c可以包括MaxPOC个画面。此外,每个画面601a-c、603a-n、605a-n可以具有相应的画面顺序计数(POC),画面顺序计数属于如图6所示的集合[0,1,2,…,MaxPOC-1]。
[0176] 画面集合607可以包括一个或更多个画面。例如,画面集合B 607b中的画面603a-n可以分组为画面集合。同样,画面集合C 607c中的画面605a-n可以一起分组为画面集合。画面集合可以包括当编码时相互毗邻的画面,或可以由分组在一起的随机画面构成。在另一示例中,画面集合可以组成由画面[0,1,2,…,MaxPOC-1]构成的poc_cycle。
[0177] 在一些配置中,画面集合607a可以包括即时解码刷新(IDR)画面603a(例如IDR访问单元)。编码器可以在比特流中信号通知IDR画面603a。附加地或备选地,可以基于画面类型来识别IDR。在一些配置中,IDR画面603a可以向解码器202指示比特流214中没有后续画面将需要参考比特流214中的先前画面。
[0178] 当解码器202对IDR画面603a进行解码时,可以将POC重置回预定值。例如,在对画面集合A 607a进行解码之后,接收到或信号通知IDR画面603a。至此,可以将POC重置回0,并开始新画面集合(画面集合B 607b)。换句话说,IDR画面603a可以关于选定画面指定参考画面。发送IDR画面603a的一个益处可以是引入新参考画面。以下将结合图7更详细地描述此益处。
[0179] 图7是示出了循环参数所参考的多个画面集合的更具体的示例的示意图。图7示出了画面集合707a-d和画面701、703、705以及它们相关联的POC和poc_cycle,画面集合707a-d和画面701、703、705与以上结合图5所描述的组成部分507a-c、501、503、505类似。附加地,图7示出了附加画面集合707d以及相关联的画面731a-n。
[0180] 图7还示出了选定画面703a。在一个配置中,针对选定画面的循环参数(例如poc_cycle)可以设置为0。例如,当画面集合中的第一画面(例如POC=0)是选定画面(例如IDR画面)时,则针对选定画面的poc_cycle可以等于0。可以参照循环参数被设置为0(例如poc_cycle=0)的画面集合来计算后续画面集合的循环参数(例如poc_cycle)。
[0181] 选定画面的一个示例是与以上结合图6所描述的IDR画面603a相类似的IDR画面703a(例如IDR访问单元)。为了方便,选定画面703a将被描述为IDR画面。然而,应当注意的是,选定画面703a可以是编码器利用比特流中的信令指示的或可以由解码器隐式地确定的任意画面。
[0182] 在一些配置中,编码器可以在比特流中发送指示IDR画面703a的信号。可以基于此信号确定POC计数器的值。例如,信号可以(向解码器)指示将针对IDR画面的POC设置为0(如果例如针对IDR画面的POC不为0的话)。例如,IDR画面703a可以使解码器将POC计数器重置为初始值,例如0。poc_cycle还可以基于IDR画面703a。类似于POC,信号可以指示应当将poc_cycle重置为初始值。在另一示例中,信号可以指示不需要对POC或poc_cycle进行修改(如果针对IDR画面703a的POC或poc_cycle处于初始值的话)。
[0183] IDR画面703a可以是用于设置或重置可以用于关于选定画面703a跟踪参考画面的POC和poc_cycle(和/或例如其他循环参数)的指示。例如,解码器202可以对集合A 707a中的画面701a-c进行解码。画面集合A 707a可以具有与之相关联的循环参数poc_cycle=m。然后可以通过比特流214信号通知IDR画面703a。IDR画面703a可以指示新循环参数(例如poc_cycle=0),并可以指示POC=0。然后,可以对画面集合707b-d进行解码,并且可以从初始值递增它们相关联的循环参数(例如分别为poc_cycle=0、poc_cycle=+1、poc_cycle=+2)。在本示例中,参照新设置的循环参数和POC来计算后续画面集合707b-d。
[0184] 如上所述,IDR画面703a可以向解码器202指示比特流中没有后续画面将需要参考比特流214中的画面之前的画面。然而,IDR画面703a可以仅信号通知POC或循环参数的重置。例如,画面集合A可以具有循环参数poc_cycle=m,其中m=+5。当接收到IDR画面703a时,m可以改变为m=-1。因此,IDR画面703a可以关于选定画面来对参考画面进行poc_cycle计数。换句话说,IDR画面703a可以信号通知poc_cycle计数,以关于序列中的选定画面而不仅是当前画面来计算参考画面。
[0185] 图8是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法800的一个配置的流程图。电子设备204(例如解码器202)可以接收802比特流,并对比特流214的一部分进行解码804,以产生解码参考画面。这可以以与以上结合图3所描述的类似方式进行。
[0186] 电子设备204可以基于选定画面利用减少开销参考来跟踪解码画面缓存(DPB)中的解码参考画面。这可以按以下方式完成。电子设备204(例如解码器202)可以确定806选定画面。在一个配置中,电子设备204可以基于在比特流214中所接收的显式信令来作出此确定806。例如,比特流214可以包括对选定画面进行指定的指示符。在一个示例中,选定画面可以是由在比特流214中接收的(例如画面参数集合(PPS)、缓存描述中等的)信令所指示的即时解码刷新(IDR)画面。
[0187] 电子设备204可以基于选定画面来确定808画面顺序计数(POC)。例如,电子设备204可以设置或重置与选定画面相关联的POC。例如,与选定画面相关联的POC可以被设置为
0。相应地,电子设备204可以基于选定画面来重置POC顺序。例如,可以基于与如图6所示的选定画面603a相关联的POC来对针对其他画面的POC进行编号。
[0188] 电子设备204可以基于选定画面来确定810循环参数(例如poc_cycle)。例如,与包括选定画面的画面集合相关联的循环参数可以被设置或重置为0。可以基于包括选定画面(例如IDR画面)的画面集合来确定(例如计算)针对其他画面集合的循环参数。结合图7示出并描述其一个示例。
[0189] 当基于选定画面来确定POC和循环参数(例如poc_cycle)时,可以在需要时更新解码参考画面的POC和循环参数。这能够实现解码画面缓存(DPB)中解码参考画面的跟踪。因此,可以基于选定画面(例如IDR画面)来跟踪解码参考画面。
[0190] 电子设备204可以从DPB获得812解码参考画面。例如,电子设备204可以根据基于选定画面的POC和循环参数(例如poc_cycle)从DPB取回解码参考画面。
[0191] 电子设备204可以基于解码参考画面来对画面进行解码814。这可以以与以上结合图3所描述的类似方式进行。应当注意的是,可以根据方法800跟踪具有一个或更多个解码参考画面的集合。
[0192] 图9是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法900的另一配置的流程图。如上所述,电子设备204可以接收902比特流。电子设备204还可以对比特流的一个或更多个部分进行解码904,以产生参考画面集合。解码参考画面集合可以包括一个或更多个解码参考画面。
[0193] 电子设备204可以基于选定画面利用减少开销参考来跟踪906解码画面缓存(DPB)中的解码参考画面集合。这可以如上文结合图8所描述的来完成。如上所述,解码参考画面集合中的两个或更多个解码参考画面可以涉及相同或不同时刻(例如类似时刻)。
[0194] 电子设备204可以可选择地确定908解码参考画面集合中的(用于对画面进行解码的)解码参考画面的分辨率是否与当前画面的分辨率不同。如果两个画面之间的分辨率不同,则电子设备204可以基于缩放参数来处理910解码参考画面的变换系数,以对画面进行解码。以上结合表格(2)给出了与缩放参数和分辨率切换有关的更详细描述。应当注意的是,缩放参数可以通过显式地接收缩放参数来确定或通过隐式地(例如使用查找表、画面分辨率特性等)确定缩放参数来确定。
[0195] 无论分辨率是相同的还是不同的,电子设备204可以基于解码参考画面集合(例如解码参考画面集合中的解码参考画面)对画面进行解码912。
[0196] 图10是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法1000的另一配置的流程图。电子设备204可以接收1002比特流,并对比特流的一部分进行解码1004以产生解码参考画面。电子设备204可以基于选定画面利用减少开销参考来跟踪1006解码画面缓存(DPB)中的解码参考画面。这可以按上文完成。
[0197] 电子设备204还可以获得1008缓存描述。以上详细描述了缓存描述的一些示例。例如,以上表格(1)和表格(2)包含多种缓存描述的示例。解码器可以作为参数画面集合(PPS)的一部分,从编码器接收缓存描述。解码器还可以作为片首部的一部分,接收对合适缓存描述的索引。一旦获得1008缓存描述,电子设备204就可以确定1010是否修改缓存描述。如果缓存描述不需要修改,则电子设备204可以基于解码参考画面对画面进行解码1014。然而,如果缓存描述需要修改,则电子设备204可以修改1012一个或更多个条目。修改1012的示例可以包括:删除条目、添加条目或替换条目。可以在上文结合列表(4)的描述中找到删除、添加或替换条目的更详细的描述。一旦修改1012完成,则电子设备204就可以基于解码参考画面对画面进行解码1014。
[0198] 图11是示出了根据本文所公开的系统和方法信号通知回绕指示符的一个示例的示意图。在本示例中,示出了多个画面1101a-n、1103a。POC=0的第一画面1101a是针对图11所示的剩余画面1101b-n、1103a的参考画面。具体而言,图11示出了参考画面1101a与其他画面1101b-n、1103a之间的关联或对应关系1109。例如,POC=0的画面1101a可以是要保存在DPB中用于对其他画面1101b-n、1103a进行解码的长期参考画面1101a。
[0199] 如图11所示,POC号0至MaxPOC-1以及重用的0可以分别对应于画面1101a-n、1103a。第一画面集合1101a-n可以对应于POC号0至MaxPOC-1。如上所述,(具有POC号0至MaxPOC-1的)每个画面集合可以对应于循环参数(例如poc_cycle)。
[0200] 在一个配置中,可以在一个画面集合和后续画面集合之间的第一转换时信号通知1133回绕指示符。例如,POC编号第一次从一个[0,…,MaxPOC-1]集合转换到下一集合时,可以信号通知1133回绕指示符。在一些配置中,信号通知的回绕指示符可以是表示为“poc_wraparound”的受保护消息。如本文所使用的“信号通知”可以意味着在编码器和解码器之间传送。在一些配置中,“信号通知”还可以意味着在不同电子设备之间传送。
[0201] 受保护消息可以是电子设备204必须接收以维持期望功能(例如丢失画面的检测)的消息。用于发送作为受保护消息的消息的一种机制是当与其他信息消息进行比较时,向受保护消息指派较高优先级。然后,智能设备(例如网络拥塞控制代理)可以检查此优先级指派,并丢弃较低优先级消息以满足诸如可用网络带宽等的约束。
[0202] 在一些配置中,可以在画面参数集合(PPS)、片首部、自适应参数集合(APS)或比特流中任意合适位置中信号通知回绕指示符(例如poc_wraparound)消息。附加地或备选地,可以在带外(例如与画面比特流分离地)信号通知回绕指示符。每当解码器102接收到回绕指示符(例如poc_wraparound消息)时,针对DPB中的每个画面(例如每个画面集合)的循环参数(例如poc_cycle)可以递减(例如递减1)。
[0203] 图12是示出了根据本文所公开的系统和方法信号通知回绕指示符1133的一个示例的示意图。在本示例中,阐述了多个画面1137a-n、1139a-n、1141a-n、1143a-n、1145a-n和画面集合1107a-e。具体而言,图12示出了随时间的参考缓存状态1135以及相应的当前帧和回绕指示符的定时1149。
[0204] 在本示例中,假定poc_cycle=0的画面集合B 1107b中的画面B01139a是第一时刻的当前画面或帧。当转换A 1147a发生时,信号通知1133a回绕指示符。在第二时刻,画面集合C 1107c中的画面C0 1141a是当前画面或帧。假定画面C0 1141a是针对(例如画面集合D1107d和画面集合E1107e中的)所有后续画面的参考画面。例如,画面C0 1141a是要保存在DPB中以用于对后续画面1141b-n、1143a-n、1l45a-n进行解码的长期参考画面。当转换B 1147b发生时,信号通知1133b另一回绕指示符。如所述的,在信号通知1133回绕指示符时,更新poc_cycle参数。根据本文所公开的系统和方法,此过程可以用于跟踪参考画面。此外,应当注意的是,可以如本文所描述的基于解码参考画面来重置或重新开始POC和poc_cycle。
[0205] 如图12所述,POC号0至MaxPOC-1重复地对应于画面1137a-n、1139a-n、1141a-n、1143a-n、1145a-n。如上所述,(具有POC号0至MaxPOC-1的)每个画面集合1107a-e可以对应于循环参数(例如poc_cycle)。
[0206] 在一个配置中,可以在当前画面集合(例如画面集合B 1107b)与后续画面集合(例如画面集合C 1107c)之间的第一转换1147a时信号通知1133a回绕指示符。例如,POC号第一次从一个[0,…,MaxPOC-1]集合转换到下一集合时,可以信号通知1133回绕指示符。在一些配置中,当POC编号从一个[0,…,MaxPOC-1]集合转换到另一集合时,可以信号通知1133回绕指示符。备选地,poc_cycle编号第一次针对下一[0,…,MaxPOC-1]画面集合转换时,可以信号通知1133回绕指示符。在一些配置中,当poc_cycle编号针对下一个[0,…,MaxPOC-1]画面集合转换时,可以信号通知1133回绕指示符。在一些配置中,信号通知的回绕指示符可以是表示为“poc_wraparound”的受保护消息。如本文所使用的“信号通知”可以意味着在编码器和解码器之间传送。在一些配置中,“信号通知”还可以意味着在不同电子设备之间传送。
[0207] 受保护消息可以是电子设备204必须接收以保持期望功能(例如丢失画面的检测)的消息。用于发送作为受保护消息的消息的一种机制是当与其他信息消息进行比较时,向受保护消息指派较高优先级。然后,智能设备(例如网络拥塞控制代理)可以检查此优先级指派,并丢弃较低优先级消息以满足诸如可用网络带宽等的约束。
[0208] 在一些配置中,可以在画面参数集合(PPS)、片首部、自适应参数集合(APS)或比特流中任意合适位置中信号通知回绕指示符(例如poc_wraparound)消息。附加地或备选地,可以在带外(例如与画面比特流分离地)信号通知回绕指示符。每当解码器102接收到回绕指示符(例如poc_wraparound消息)时,针对DPB中的每个画面(例如每个画面集合)的循环参数(例如poc_cycle)可以递减(例如递减1)。
[0209] 以下列表(5)阐述了用于信号通知画面参数集合中的回绕指示符所需的比特流句法修改的一个示例:
[0210]
[0211]
[0212]
[0213] 列表(5)
[0214] wrap_indicator_flag等于1指定POC编号已经第一次从一个[0,…,MaxPOC-1]画面集合转换到下一画面集合。wrap_indicator_flag等于0指定除此之外的其他情况。在一些配置中,wrap_indicator_flag等于1指定POC编号从一个[0,…,MaxPOC-1]画面集合转换到另一画面集合。wrap_indicator_flag等于0指定除此之外的其他情况。
[0215] 在一些配置中,wrap_indicator_flag等于1指定poc_cycle已经第一次针对下一[0,…,MaxPOC-1]画面集合转换。wrap_indicator_flag等于0指定除此之外的其他情况。
[0216] 在一些配置中,wrap_indicator_flag等于1指定poc_cycle已经从一个[0,…,MaxPOC-1]画面集合转换到另一画面集合。wrap_indicator_flag等于0指定除此之外的其他情况。
[0217] 在一些配置中,wrap_indicator_flag可以使用多于一个比特来标识附加信息,例如,转换的方向。在另一配置中,可以信号通知wrap_indicator_flag作为使用熵编码进行可变长度编码的无符号整数。在另一配置中,wrap_indicator_flag是使用熵编码进行可变长度编码的有符号整数。
[0218] seq_parameter_set_id标识由画面参数集合引用的序列参数集合。seq_parameter_set_id的值应当在0至31的范围中(包含端点)。
[0219] pic_parameter_set_id标识在片首部中引用的画面参数集合。pic_parameter_set_id的值应当在0至255的范围中(包含端点)。entropy_coding_mode_flag选择要应用于句法要素的熵解码方法。
[0220] num_temporal_layer_switching_point_flags指定存在多少时间切换点标记。如果temporal_id_nesting_flag等于1,则num_temporal_layer_switching_point_flags应当等于0。
[0221] temporal_layer_switching_point_flag[i]指定当前访问点是否是允许在此访问单元之后的更高时间id层的解码的时间切换点。如果temporal_id_nesting_flag等于1,则应当推断temporal_layer_switching_point_flag[i]等于1。如果temporal_id_nesting_flag等于0并且num_temporal_layer_switching_point_flags小于i,则应当推断temporal_layer_switching_point_flag[i]等于0。应当注意的是,当开始对更高时间层i进行解码时,可以紧跟在IDR或temporal_id值j小于i并且temporal_switching_flag[j]等于1的画面之后确保所需参考画面的可用性。
[0222] num_ref_idx_10_default_active_minus1指定针对num_ref_idx_active_override_flag等于0的P片和B片,如何推断num_ref_idx_10_active_minus1。num_ref_idx_10_default_active_minus1的值应当在0至31的范围中(包含端点)。
[0223] num_ref_idx_11_default_active_minus1指定针对num_ref_idx_active_override_flag等于0的B片,如何推断num_ref_idx_11_active_minus1。num_ref_idx_11_default_active_minus1的值应当在0至31的范围中(包含端点)。
[0224] pic_init_qp_minus26指定针对每个片,SliceQPY的初始值减去26。当对slice_qp_delta的非零值进行解码时,在片层处修改初始值,并且当在编码单元层处对cu_qp_delta的非零值进行解码时,进一步修改初始值。pic_init_qp_minus26的值应当在-(26+QpBdOffsetY)至+25的范围中(包含端点)。
[0225] constrained_intra_pred_flag等于0指定帧内预测允许使用利用帧间宏块预测模式进行编码的相邻宏块的残差数据和解码采样,用于使用帧内宏块预测模式进行编码的宏块的预测。constrained_intra_pred_flag等于1指定受限帧内预测,在此情况下,使用帧内宏块预测模式进行编码的宏块的预测仅使用来自I宏块类型的残差数据和解码采样。
[0226] slice_granularity指示画面中的片粒度。slice_granularity的值不应大于Min(Log2MaxCUSize-4,log2_diff_max_min_coding_block_size)。变量SliceGranularity设置为(slice_granularity<<1)的值。
[0227] shared_pps_info_enabled_flag指定画面参数集合RBSP中的共享信息应当用于已参考的片。如果shared_pps_info_enabled_flag等于1,则画面参数集合RBSP中的alf_param()应当应用于已参考的片。否则,应当应用片首部中的alf_param()。
[0228] max_cu_qp_delta_depth指定用于为编码单元指定QPY值的最大允许深度。max_cu_qp_delta_depth的值应当在0至15的范围中(包含端点)。
[0229] 变量log2MinCUDQPSize按下式指定可以进一步修改QPY值的最小编码单元大小:log2MinCUDQPSize=Log2MaxCUSize-max_cu_qp_delta_depth。alf_param()是确定自适应环路滤波器参数句法的函数。rbsp_trailing_bits()是对应于停止比特(等于1)后接零比特直到实现字节对齐的函数。
[0230] 以下列表(6)阐述了用于信号通知片首部中的回绕指示符所需的比特流句法修改的一个示例:
[0231]
[0232]
[0233]
[0234] 列表(6)
[0235] lightweight_slice_flag等于1指定应当推断未出现的片首部句法要素的值等于前一片中的片首部句法要素的值。lightweight_slice_flag等于0指定在当前片首部中发送片首部句法要素的值。slice_type指定片P、B或I的编码类型。
[0236] idr_pic_id标识即时解码刷新(IDR)画面。IDR画面的所有片中的idr_pic_id值应当保持不变。当解码顺序中的两个连续访问单元都是IDR访问单元时,第一个这种IDR访问单元的片中的idr_pic_id值应当与第二个这种IDR访问单元中的idr_pic_id值不同。idr_pic_id的值应当在0至65535的范围中(包含端点)。
[0237] pic_order_cnt指定编码画面的画面顺序计数,并用作缓存描述应用处理和参考画面列表创建处理中的标识符。pic_order_cnt句法要素应当由log2_max_pic_order_cnt_minus4+4个比特来表示。pic_order_cnt的值应当在0至MaxPOC-1的范围中(包含端点)。
[0238] num_ref_idx_active_override_flag等于1指定对于P片和B片,存在句法要素num_ref_idx_10_active_minus1,而对于B片,存在句法要素num_ref_idx_11_active_minus1。num_ref_idx_active_override_flag等于0指定句法要素num_ref_idx_10_active_minus1和num_ref_idx_11_active_minusl不存在。
[0239] 当当前片是P片或B片且field_pic_flag等于0且画面参数集合中的num_ref_idx_10_default_active_minusl的值超过15时,num_ref_idx_active_override_flag应当等于
1。当当前片是B片且field_pic_flag等于0且画面参数集合中的num_ref_idx_11_default_active_minus1的值超过15时,num_ref_idx_active_override_flag应当等于1。num_ref_idx_10_active_minus1指定应当用于对片进行解码的参考画面列表0的最大参考索引。
[0240] 当当前片是P片或B片并且num_ref_idx_10_active_minus1不存在时,应当推断num_ref_idx_10_active_minus1等于num_ref_idx_10_default_active_minus1。按照下式指定num_ref_idx_10_active_minus1的范围。如果field_pic_flag等于0,num_ref_idx_10_active_minus1应当在0至15的范围中(包含端点)。当MbaffFrameFlag等于1时,num_ref_idx_10_active_minus1是用于帧宏块的解码的最大索引值,并且2*num_ref_idx_10_active_minus1+1是用于字段宏块的解码的最大索引值。否则(当field_pic_flag等于1时),num_ref_idx_10_active_minus1应当在0至31的范围中(包含端点)。
[0241] num_ref_idx_11_active_minus1指定应当用于对片进行解码的参考画面列表1的最大参考索引。当当前片是B片并且num_ref_idx_11_active_minus1不存在时,应当推断num_ref_idx_11_active_minus1等于num_ref_idx_11_default_active_minus1。如在用11和列表1分别替换10和列表0的num_ref_idx_10_active_minus1的句法中所指定的,num_ref_idx_11_active_minus1的范围受限。
[0242] no_output_of_prior_pics_flag指定在IDR画面的解码之后,如何处理解码画面缓存中的先前解码画面。当IDR画面是比特流中的第一IDR画面时,no_output_of_prior_pics_flag的值不对解码过程产生影响。当IDR画面不是比特流中的第一IDR画面,并且从活动序列参数集合中导出的PicWidthInMbs、FrameHeightInMbs或max_dec_frame_buffering的值与从针对先前画面活动的序列参数集合导出的PicWidthInMbs、FrameHeightInMbs或max_dec_frame_buffering的值不同时,解码器可以(但不应当)推断no_output_of_prior_pics_flag等于1,而不管no_output_of_prior_pics_flag的实际值如何。
[0243] cabac_init_idc指定用于确定初始化表格的索引,该初始化表格用在上下文变量的初始化过程中。cabac_init_idc的值应当在0至2的范围中(包含端点)。
[0244] first_slice_in_pic_flag指示片是否是画面的第一片。如果first_slice_in_pic_flag等于1,则变量SliceAddress和LCUAddress均被设置为0,并且解码开始于画面中的第一最大编码单元(LCU)。
[0245] slice_address以片粒度分辨率指定片开始的地址,并应当由比特流中(Ceil(Log2(NumLCUsInPicture))+SliceGranularity)个比特表示,其中NumLCUsInPicture是画面中LCU的数量。变量LCUAddress被设置为(slice_address>>SliceGranularity),并表示具有逐行扫描顺序的片地址的LCU部分。变量GranularityAddress被设置为(slice_address-(LCUAddress<<SliceGranularity)),并表示以z-扫描顺序表示的片地址的子LCU部分。然后,变量SliceAddress被设置为(LCUAddress<<(log2_diff_max_min_coding_block_size<<1))+(GranularityAddress<<((log2_diff_max_min_coding_block_size<<1)-SliceGranularity),并且片解码开始于可能在片起始坐标处的最大编码单元。
[0246] slice_qp_delta指定在被编码单元层中的cu_qp_delta值修改之前要用于片中所有宏块的亮度量化参数QPY的初始值。按照下式计算针对片的初始QPY量化参数:SliceQPY=26+pic_init_qp_minus26+slice_qp_delta。应当限制slice_qp_delta的值,使得SliceQPY在-QpBdOffsetY至+51的范围中(包含端点)。“QpBdOffsetY=6*bit_depth_luma_minus8”指定亮度量化参数范围偏移值。“bit_depth_luma_minus8+8”指定亮度阵列的采样的比特深度。pic_init_qp_minus26指定针对每个片的SliceQPY的初始值减去26。
[0247] collocated_from_10_flag等于1指定应当从列表0导出包含协同水平切分(co-located partition)的画面,否则应当从列表1导出画面。ref_pic_list_modification()是标识参考画面列表修改的句法的函数。ref_pic_list_combination()是标识参考画面列表组合的句法的函数。alf_cu_control_param()是标识自适应环路滤波器编码单元控制参数的句法的函数。sao_param()是标识采样自适应偏移参数的句法的函数。
[0248] disable_deblocking_filter_idc等于1针对特定块边缘禁用去块滤波器的应用。disable_deblocking_filter_idc等于0针对特定块边缘启用去块滤波器的应用。去块过程是使用句法要素slice_alpha_c0_offset_div2和slice_beta_offset_div2的值控制的。
[0249] 以下列表(7)阐述了用于信号通知自适应参数集合(APS)中的回绕指示符所需的比特流句法修改的示例:
[0250]
[0251]
[0252] 列表(7)
[0253] aps_id标识在片首部中引用的自适应参数集合。aps_sample_adaptive_offset_flag等于1指定对于引用当前APS的片,SAO是开启的。当aps_sample_adaptive_offset_flag等于0时,这指定对于引用当前APS的片,SAO是关闭的。如果不存在活动APS,则推断aps_sample_adaptive_offset_flag值为0。
[0254] aps_adaptive_loop_filter_flag等于1指定对于引用当前APS的片,ALF是开启的。当aps_sample_adaptive_offset_flag等于0时,这指定对于引用当前APS的片,ALF是关闭的。如果不存在活动APS,则推断aps_adaptive_loop_filter_flag值为0。
[0255] aps_cabac_use_flag等于1指定当sao_param()存在时,CABAC解码过程应当用于sao_param(),并且当alf_param()存在时,CABAC解码过程应当用于alf_param()。当aps_cabac_use_flag等于0时,这指定当sao_param()存在时,CAVLC解码过程应当用于sao_param(),并且当alf_param()存在时,CAVLC解码过程应当用于alf_param()。
[0256] aps_cabac_init_idc指定用于确定初始化表格的索引,该初始化表格用在SAO和ALF的上下文变量的初始化过程中。cabac_init_idc的值应当在0至2的范围中(包含端点)。aps_cabac_init_qp_minus26指定量化参数减26,其中,量化参数用在SAO和ALF的上下文变量的初始化过程中。alf_data_byte_count指定字节数量。sao_data_byte_point指定字节数量。byte_align()将插入0至7个比特,直到达到对齐为止。
[0257] 在一些配置中,画面参数集合可以包括仅与长期画面相对应的多个缓存描述。以下列表(8)阐述了用于信号通知仅与长期画面相对应的多个缓存描述的比特流句法修改的示例。
[0258]
[0259]
[0260] 列表(8)
[0261] longterm_pictures_only_flag_pps[i]等于1指示第i个缓存描述仅包含长期画面参考。longterm_pictures_only_flag_pps[i]等于0指示第i个缓存描述包含deltaPOC和长期画面参考。
[0262] 在一些配置中,缓存描述可以涉及不可用于参考的画面。不可用于参考的画面指代在当前画面之前还未被解码的画面。此外,不可用于参考的画面指代在当前画面之前已经被解码但被标识为不再可用于参考的画面。用于识别画面不再可用于参考的过程的一个示例是通过IDR帧的使用。IDR帧表示IDR帧和随后接收的所有画面不参考在接收到IDR帧之前所接收的画面。因此,针对IDR帧和随后接收的帧,在IDR帧之前接收的所有帧不再可用于参考。
[0263] 在缓存描述涉及不可用于参考的画面的配置中,解码器不允许将不可用于参考的画面用在预测用于对当前帧进行解码的信息中。在一个配置中,这是通过不将帧包括在创建参考帧集合的过程中来完成的。因此,如果缓存描述涉及不可用于参考的画面,如果缓存描述不涉及不可用于参考的画面,和如果两个缓存描述所涉及的其他画面是相同的,则创建参考帧集合的过程的输出可能是相同的。在另一配置中,在创建参考帧集合的过程中包括不可用于参考的画面。因此,如果缓存描述涉及不可用于参考的画面和如果缓存描述不涉及不可用于参考的画面,则创建参考帧集合的过程的输出不相同。在此配置中,解码器不允许选择不可用于参考的画面来预测用于对当前帧进行解码的信息。
[0264] 在一些配置中,基于参考画面在显示顺序方面关于(正在被解码的)当前画面是过去画面还是未来画面,来划分PPS中定义的第i个参考画面列表POCBD_pps[i]、temporalIDBD_pps[i]、POC_CYCLE_BD_pps[i]以及列表POCBD、temporalIDBD和POC_CYCLE_BD。应当注意的是,i可以取从0至number_of_bds-1的值。
[0265] 在一些配置中,可以用信号通知或指示(正在被解码的)当前画面是否使用相应的参考画面的标记,替换时间标识符。因此,包含以上标记的列表usedByCurPicBD和usedByCurPicBD_pps[i]分别替换temporalID列表temporalIDBBD和PPS中第i个temporalID列表temporalIDBD_pps[i]。在一些配置中,标记的值可以用于将PPS中定义的第i个参考画面列表POCBD_pps[i]、usedByCurPicBD_pps[i]、POC_CYCLE_BD_pps[i]以及列表POCBD、usedByCurPicBD、POC_CYCLE_BD划分为一个或更多个列表。在一个配置中,将针对标记具有零值的条目指派给一个列表,并且将具有非零值(例如1)的那些条目指派给另一列表。应当注意的是,i可以取从0至number_of_bds-1的值。
[0266] 列表(9)阐述了来自AHG21的针对PPS的句法修改的另一示例。具体而言,列表(9)阐述了AHG21工作草案中所概述的用在片首部中的缓存描述句法的另一示例。然而,在列表(9)中以粗体文本表示根据本文所公开的系统和方法的对AHG21工作草案中所给出的句法的修改。
[0267]
[0268]
[0269]
[0270] 列表(9)
[0271] 列表(9)包含许多与列表(4)的要素类似的要素。列表(9)还包含对片首部的句法修改,以允许选择性地替换参考画面。
[0272] bd_poc_cycle_replace_count指定在列表POCBD_pps[bd_idx]、POC_CYCLE_BD_pps[bd_idx]和temporalIDBD_pps[bd_idx]中要选择性地替换的条目的数量。在一些配置中,bd_poc_cycle_replace_count可以大于或等于0。bd_pps_replace_idx[j]标识在列表POCBD_pps[bd_idx]、POC_CYCLE_BD_pps[bd_idx]和temporalIDBD_pps[bd_idx]中要替换的条目的索引。
[0273] 针对当前画面,应当替换所参考的缓存描述的POC_CYCLE_BD_pps[bd_idx][bd_pps_replace_idx[j]]。在一些配置中,未来帧还可以重载poc_cycle信息。poc_cycle_pps_replace[j]指定仅针对当前画面,要用于替换POC_CYCLE_BD_pps[bd_idx][bd_pps_replace_idx[j]]中的值的值。
[0274] poc_pps_replace[j]指定仅针对当前画面,要用于替换POCBD_pps[bd_idx][bd_pps_replace_idx[j]]中的值的值。temporal_id_pps_replace[j]指定仅针对当前画面,要用于替换TemporalIDBD_pps[bd_idx][bd_pps_replace_idx[j]]中的值的值。
[0275] 在一些配置中,如果划分了PPS中定义的第i个参考画面列表POCBD_pps[i]、usedByCurPicBD_pps[i]、POC_CYCLE_BD_pps[i],则首先对使用划分列表所生成的导出列表执行选择性的替换、重载、删除和附加操作。在操作的全部或子集完成之后,可以将导出列表中的条目划分回(例如恢复)根据其导出该导出列表的原始列表。应当注意的是,i可以取从0至number_of_bds-1的值。
[0276] 在一些配置中,针对属于PPS中的缓存描述的每个列表集合(例如(负deltaPOC列表、负deltaPOC  usedByCurPicBD列表)集合、(正deltaPOC列表、正deltaPOC usedByCurPicBD列表)集合和(poc列表、poc_cycle列表、poc和poc_cycle usedByCurPicBD列表)集合),分离地信号通知选择性的替换、重载、删除和附加操作。在另一配置中,在每个列表集合中都可以存在缩放参数列表。
[0277] 在一些配置中,如果比特流包含具有第一分辨率的第一画面和具有第二分辨率的第二画面,如果第一分辨率和第二分辨率不相等,并且如果第二画面不是IDR画面或在第一画面之后和在第二画面之前未接收到序列参数集合(SPS),则解码画面缓存可以包含具有不同分辨率的画面。然后,编码器可以向解码器信号通知对解码画面缓存(DPB)中的参考画面进行修改,使得参考画面包括以下选项之一:
[0278] (a)第一分辨率,
[0279] (b)第二分辨率,或
[0280] (c)第一分辨率和第二分辨率
[0281] 以下给出了一些示例性使用情况。如果参考画面将仅用于以较低分辨率的运动预测,则选项(a)是有用的。如图17中所示的第一示例1653a给出了选项(a)的示例。
[0282] 当比特流包含在第二画面之后的第三画面时,选项(b)是有用的,其中,第三画面是处于第一分辨率,并且DPB中所存储的长期画面可以用于运动预测。如图17中所示的第二示例1653b给出了选项(b)的示例。
[0283] 当参考画面的较低分辨率版本用在针对较低分辨率画面的运动预测中时,选项(c)是有用的。此外,当对第二画面之后的第三画面进行解码时参考画面的较高分辨率版本用于运动预测,其中,第三画面是处于第一分辨率。如图17中所示的第三示例1653c给出了选项(c)的示例。
[0284] 可以使用如以下列表(10)所示的句法修改信号通知分辨率切换。以下以粗体文本表示根据本文所描述的系统和方法的修改。
[0285]
[0286]
[0287] 列表(10)
[0288] 如果adaptive_res_coding_flag等于0,则序列不进行分辨率切换。如果adaptive_res_coding_flag等于1,则序列进行分辨率切换。
[0289] refPicS0Height[i]和refPicS0Width[i]表示与负deltaPOC相对应的第i个参考画面的原始高度和宽度。refPicS1Height[i]和refPicS1Width[i]表示与正deltaPOC相对应的第i个参考画面的原始高度和宽度。curPicHeight和curPicWidth表示正在被解码的当前画面的高度和宽度。
[0290] num_negative_pics指定以下delta_poc_s0_minus1[i]和used_by_curr_pic_s0_flag[i]句法要素的数量。num_positive_pics指定以下delta_poc_s1_minus1[i]和used_by_curr_pic_s1_flag1[i]句法要素的数量。
[0291] delta_poc_s0_minus1[i]加1指定两个画面顺序计数值之间的绝对差值。delta_poc_s0_minus1[i]的值应当在0至215-1的范围中(包含端点)。delta_poc_s0_minus1[i]对应于负deltaPOC值。
[0292] used_by_curr_pic_s0_flag[i]等于0指定具有比当前画面的画面顺序计数小的画面顺序计数的第i个参考画面不用于供当前画面参考。delta_poc_s1_minus1[i]加1指定两个画面顺序计数值之间的绝对差值。delta_poc_s1_minus1[i]的值应当在0至215-1的范围中(包含端点)。delta_poc_s1_minus1[i]对应于正deltaPOC值。
[0293] used_by_curr_pic_s1_flag[i]等于0指定具有比当前画面的画面顺序计数大的画面顺序计数的第i个参考画面不用于供当前画面参考。
[0294] used_by_curr_pic_longterm_flag[i]等于0指定第i个长期参考画面不用于供当前画面参考。
[0295] ref_pic_s0_resolution_idx[i]等于0指定对参考画面进行缩放,以使其分辨率与正在被解码的当前画面的分辨率相匹配。ref_pic_s0_resolution_idx[i]等于1指定以参考画面的原始分辨率保存参考画面。ref_pic_s0_resolution_idx[i]等于2指定以参考画面的原始分辨率并以当前画面的分辨率两者维持参考画面的分辨率。当ref_pic_s0_resolution_idx[i]不存在时推断ref_pic_s0_resolution_idx[i]为0。
[0296] ref_pic_s1_resolution_idx[i]等于0指定对参考画面进行缩放,以使其分辨率与正在被解码的当前画面的分辨率相匹配。ref_pic_s1_resolution_idx[i]等于1指定以参考画面的原始分辨率保存参考画面。ref_pic_s1_resolution_idx[i]等于2指定以参考画面的原始分辨率并以当前画面的分辨率两者维持参考画面的分辨率。当ref_pic_s1_resolution_idx[i]不存在时推断ref_pic_s1_resolution_idx[i]为0。
[0297] 在一个配置中,如果比特流包含具有第一分辨率的第一画面和具有第二分辨率的第二画面和第四画面,其中第一分辨率和第二分辨率不相等,并且第二画面不是IDR画面或在第一画面之后和在第二画面之前未接收到序列参数集合(SPS),则第二画面可以仅参考具有第一分辨率的一个参考画面。在第二配置中,如果比特流包含具有第一分辨率的第一画面和具有第二分辨率的第二画面,其中第一分辨率和第二分辨率不相等,并且第二画面不是IDR画面或在第一画面之后且在第二画面之前未接收到序列参数集合(SPS),则第四画面可以仅参考具有第二分辨率的其他画面未参考的具有第一分辨率的一个参考画面。
[0298] 例如,如果具有相同分辨率的其他画面在第四画面之前,则除了在第四画面之前的具有相同分辨率的画面所使用的参考画面之外,第四画面还可以参考具有第一分辨率的一个参考画面。换句话说,当对具有第二分辨率的画面进行解码时,仅具有第一分辨率的一个参考画面可以用于当对画面进行解码时的参考。一旦具有第一分辨率的画面用于当对具有第二分辨率的画面进行解码时的参考,则认为用于参考的具有第一分辨率的画面具有用于对后续画面进行解码的第二分辨率的分辨率。
[0299] 图13是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法1200的另一更具体配置的流程图。此方法1200可以是用于当重用POC时跟踪哪个画面正在被参考的另一方案。电子设备204(例如解码器202)可以接收1202比特流。例如,解码器202可以接收1202包括编码参考画面的比特流214。在一些配置中,比特流214还可以包括开销信息(例如PPS、缓存描述信息、参数、参考画面指示或标识符等)。
[0300] 电子设备204可以对比特流的一部分进行解码1204,以产生解码参考画面。例如,解码器202可以对比特流214的一部分进行解码1204,以产生解码参考画面,该解码参考画面被存储在帧存储器264中。应当注意的是,可以对比特流214的一个或更多个部分进行解码404,以产生一个或更多个解码参考画面。
[0301] 电子设备204可以将循环参数与包括解码参考画面的解码画面集合进行关联1206。例如,电子设备204可以将循环参数“poc_cycle”与包括解码参考画面的解码画面集合或解码画面集合中的每个画面进行关联1206。在下文中更详细地描述循环参数“poc_cycle”。
[0302] 电子设备204可以确定1208在画面集合之间是否已经发生转换。例如,可以通过检查正在被解码的当前画面的POC(例如CurPOC)并将其与上一解码画面的POC(例如LastPOC)进行比较,来确定1208转换。例如,如果正在被解码的当前画面的POC(例如CurPOC)小于上一解码画面的POC(例如LastPOC),并且LastPOC-CurPOC大于阈值TH_FWD,则可以确定1208从先前画面集合到后续画面集合的转换。然而,如果正在被解码的当前画面的POC(例如CurPOC)大于上一解码画面的POC(例如LastPOC),并且CurPOC-LastPOC大于阈值TH_BCKWD,则可以确定1208从后续画面集合到先前画面集合的转换。针对所有其他情况,可以确定1208未发生转换。在一些配置中,阈值可以取值TH_FWD=TH_BCKWD=MaxPOC/2。
[0303] 如果电子设备204确定1208在两个画面集合之间已经发生转换,则电子设备204可以修改1210循环参数。例如,当转换是从先前画面集合进行的时,电子设备204可以递减针对DPB中的每个画面或每个画面集合的循环参数。在另一示例中,当转换是从后续画面集合进行的时,电子设备204可以递增针对DPB中的每个画面或每个画面集合的循环参数。因此,可以关于正在被解码的画面对所有参考画面循环参数进行更新。可以针对正在被解码的每个画面执行一次此更新过程(例如,确定1208在画面集合之间是否已经发生转换,并可能修改1210循环参数)。
[0304] 循环参数“poc_cycle”的一个备选定义可以是(当前)正在被解码的画面的poc_cycle是0。因此,包括当前正在被解码的画面的画面集合可以是0。
[0305] 可以按参考画面的MaxPOCSetIndex减去正在被解码的画面的MaxPOCSetIndex来计算任意其他画面(例如参考画面)的poc_cycle。例如,如果正在被解码的画面的MaxPOCSetIndex是n并且参考画面的MaxPOCSetIndex是n-1,则参考画面的poc_cycle可以是(n-1)-n=-1。
[0306] 应当注意的是,针对参考画面的poc_cycle可以取决于参考画面与正在被解码的画面之间的MaxPOCSetIndex距离。这可以隐式地通过在编码器108和解码器102二者处跟踪一个画面集合[0,…,MaxPOC-1]与另一画面集合[0,…,MaxPOC-1]之间的转换(例如确定1208转换是否已经发生)来确定。
[0307] 电子设备204可以基于解码参考画面来对画面进行解码1212。例如,可以基于解码参考画面对比特流214的一部分(不是解码1204用于产生解码参考画面的部分)进行解码1212。例如,可以向运动补偿模块260提供(在DPB中已经跟踪的)解码参考画面,以基于帧间预测机制来生成帧间预测信号268。然后,帧间预测信号268可以用于对画面进行解码1212。
在一些配置或实例中,一个或更多个解码参考画面可以用于对画面进行解码1212。
[0308] 图14是示出了用于确定在画面集合之间是否已经发生转换的方法1300的一个配置的流程图。例如,图14提供了确定1208在如图13所示的画面集合之间是否已经发生转换的一个示例。电子设备204可以确定1302正在被解码的当前画面的POC(例如表示为“CurPOC”)是否小于上一解码画面的POC(例如表示为“LastPOC”)。例如,电子设备204可以将正在被解码的当前画面的POC(例如CurPOC)与上一解码画面的POC(例如LastPOC)进行比较,以作出此确定1302。
[0309] 如果CurPOC<LastPOC,则电子设备204可以确定1308LastPOC-CurPOC是否大于阈值TH_FWD。如果LastPOC-CurPOC大于阈值TH_FWD,则电子设备204可以确定1308从先前画面集合到后续画面集合的转换已经发生。然而,如果LastPOC-CurPOC不大于TH_FWD,则电子设备204可以确定1308未发生转换。
[0310] 如果CurPOC不小于LastPOC,则电子设备204可以确定1304CurPOC是否大于LastPOC。如果电子设备204确定1304CurPOC大于LastPOC,则电子设备204可以确定1306CurPOC-LastPOC是否大于阈值TH_BCKWD。如果电子设备确定1306CurPOC-LastPOC大于阈值TH_BCKWD,则电子设备204可以确定1306从后续画面集合到先前画面集合的转换已经发生。如果电子设备确定1306CurPOC-LastPOC不大于阈值TH_BCKWD,则电子设备204可以确定1306未发生转换。
[0311] 如果电子设备204确定1304CurPOC不大于阈值LastPOC,则电子设备可以确定1304未发生转换。在一些配置中,阈值可以取值TH_FWD=TH_BCKWD=MaxPOC/2。
[0312] 图15是示出了用于基于选定画面利用减少开销参考来跟踪参考画面的方法1400的另一更具体配置的流程图。此方法1400可以是用于当重用POC时跟踪哪个画面正在被参考的一个方案。电子设备204(例如解码器202)可以接收1402比特流214。例如,解码器202可以接收1402包括编码参考画面(以及例如其他编码画面)的比特流214。在一些配置中,比特流214还可以包括开销信息(例如PPS、缓存描述信息、参数、参考画面指示或标识符等)。
[0313] 电子设备204可以对比特流214的一部分进行解码1404,以产生解码参考画面。例如,解码器202可以对比特流214的一部分进行解码1404,以产生解码参考画面,该解码参考画面被存储在帧存储器264中。应当注意的是,可以对比特流214的一个或更多个部分进行解码1404,以产生一个或更多个解码参考画面。
[0314] 电子设备204可以将循环参数与包括解码参考画面的解码画面集合进行关联1406。例如,电子设备204可以将循环参数“poc_cycle”与包括解码参考画面的解码画面集合进行关联1406。
[0315] 电子设备204可以确定1408在画面集合之间是否已经发生转换。例如,每当解码器102对画面集合中的预定数量的画面进行解码时,解码器102或电子设备B 104b可以确定
1408在两个画面集合之间已经发生了转换。在另一示例中,每当解码器102检测到POC循环(例如从最大值至最小值重新开始)时,解码器102或电子设备B 104b可以确定1408在两个画面集合之间已经发生了转换。
[0316] 如果电子设备204确定1408在画面集合之间已经发生转换,则电子设备204可以修改1410(例如递减)循环参数。例如,电子设备204递减针对DPB中的每个画面或每个画面集合的循环参数。在另一示例中,电子设备204可以递增循环参数。
[0317] 电子设备204可以基于解码参考画面来对画面进行解码1412。例如,可以基于参考画面对比特流214的一部分(不是解码1404用于产生解码参考画面的部分)进行解码1412。例如,可以向运动补偿模块260提供(在DPB中已经跟踪的)解码参考画面,以基于帧间预测机制生成帧间预测信号268。然后,帧间预测信号268可以用于对画面进行解码1412。在一些配置或实例中,一个或更多个解码参考画面可以用于对画面进行解码1412。
[0318] 图16示出了可以在电子设备1504中利用的各种组件。电子设备1504可以实现为先前所描述的电子设备中的一个或更多个电子设备(例如电子设备104、204)。
[0319] 电子设备1504包括控制电子设备1504的操作的处理器1517。处理器1517还可以被称为CPU。存储器1511(可以包括只读存储器(ROM)、随机存取存储器(RAM)或可以存储信息的任意类型的设备)向处理器1517提供指令1513a(例如可执行指令)和数据1515a。存储器1511中的一部分还可以包括非易失性随机存取存储器(NVRAM)。存储器1511可以与处理器
1517进行电子通信。
[0320] 指令1513b和数据1515b还可以驻留在处理器1517中。装载到处理器1517中的指令1513b和/或数据1515b还可以包括装载用于由处理器1517执行或处理的来自存储器1511的指令1513a和/或数据1515a。指令1513b可以由处理器1517执行,以实现本文所公开的系统和方法。
[0321] 电子设备1504可以包括用于与其他电子设备进行通信的一个或更多个通信接口1519。通信接口1519可以基于有线通信技术、无线通信技术或两者。通信接口1519的示例包括:串行端口、并行端口、通用串行总线(USB)、以太网适配器、IEEE 1394总线接口、小型计算机系统接口(SCSI)总线接口、红外(IR)通信端口、蓝牙无线通信适配器、符合第三代合作伙伴计划(3GPP)规范的无线收发机等。
[0322] 电子设备1504可以包括一个或更多个输出设备1523和一个或更多个输入设备1521。输出设备1523的示例包括扬声器、打印机等。可以包括在电子设备1504中的一种类型的输出设备是显示设备1525。与本文所公开的配置一起进行使用的显示设备1525可以利用任意合适图像投影技术,例如阴极射线管(CRT)、液晶显示器(LCD)、发光二级管(LED)、气体等离子、电致发光等。可以提供显示控制器1527,用于将存储器1511中存储的数据转化为在显示器1525上示出的文本、图形和/或移动图像(在合适时)。输入设备1521的示例包括键盘、鼠标、麦克风、移动控制设备、按钮、操纵杆、轨迹球、触摸板、触摸屏、光笔等。
[0323] 电子设备1504的各种组件可以通过总线系统1529耦合在一起,除了数据总线之外,总线系统1529还可以包括电源总线、控制信号总线和状态信号总线。然而,为了清楚,各种总线在图16被示为总线系统1529。图16中所示的电子设备1504是功能框图,而不是特定组件的列表。
[0324] 图17是示出了根据本文所公开的系统和方法的使用情况的示例的示意图。具体而言,示出了如上所述的三个示例1653a-c。如果比特流包含具有第一分辨率的第一画面和具有第二分辨率的第二画面,如果第一分辨率和第二分辨率不相等,并且如果第二画面不是IDR画面或在第一画面之后且在第二画面之前未接收到序列参数集合(SPS),则这三个示例可能发生。
[0325] 第一示例1653a示出了在解码画面缓存中存储的具有第一分辨率的画面1655a和具有第二分辨率的画面1657a。在第一示例1653a中,编码器可以向解码器信号通知对解码画面缓存(DPB)中的参考画面进行修改,使得参考画面处于第一分辨率。如果参考画面将仅用于以较低分辨率的运动预测,则这可能是有用的。
[0326] 第二示例1653b示出了在解码画面缓存中存储的具有第一分辨率的画面1655b和具有第二分辨率的画面1657b。在第二示例1653b中,编码器可以向解码器信号通知对解码画面缓存(DPB)中的参考画面进行修改,使得参考画面处于第二分辨率。当比特流包含在第二画面之后的第三画面时,这可能是有用的,其中,第三画面处于第一分辨率,并且DPB中所存储的长期画面可以用于运动预测。
[0327] 第三示例1653c示出了在解码画面缓存中存储的具有第一分辨率的画面1655c和具有第二分辨率的画面1657c。在第三示例1653c中,编码器可以向解码器信号通知对解码画面缓存(DPB)中的参考画面进行修改,使得参考画面具有第一分辨率和第二分辨率两者。当对第二画面之后的第三画面进行解码时参考画面的较高分辨率版本用于运动预测时,这可能是有用的,其中,第三画面是处于第一分辨率。
[0328] 术语“计算机可读介质”指代可以由计算机或处理器访问的任意可用介质。本文所使用的术语“计算机可读介质”可以表示非瞬时和有形的计算机可读介质和/或处理器可读介质。通过示例方式而非限制,计算机可读介质或处理器可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储设备、磁盘存储设备或其他磁存储设备、或可以用于以指令或数据结构的形式承载或存储期望程序代码并可由计算机或处理器访问的任意其他介质。本文所使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和 光盘,磁盘通常磁性地复制数据,而光盘利用激光光学地复制数据。
[0329] 应当注意的是,本文所描述的方法中的一个或更多个方法可以使用硬件来实施和/或执行。例如,本文所描述的方法中的一个或更多个方法可以使用芯片集、专用集成电路(ASIC)、大规模集成电路(LSI)或集成电路等来实施和/或实现。
[0330] 本文所公开的方法中的每一个方法包括用于实现所述方法的一个或更多个步骤或动作。在不脱离权利要求的范围的前提下,方法步骤和/或动作可以相互互换和/或组合为单个步骤。换句话说,除非描述的方法的合适操作需要步骤或动作的特定顺序,否则在不脱离权利要求的范围的前提下,可以修改特定步骤和/或动作的顺序和/或使用。
[0331] 应当理解的是,权利要求不限于准确的上述配置和组件。在不脱离权利要求的范围的前提下,可以在本文所描述的系统、方法和装置的布置、操作和细节中作出各种修改、改变和变形。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用