会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~

用信号通知输出层集的改变

阅读:976发布:2020-05-13

IPRDB可以提供用信号通知输出层集的改变专利检索,专利查询,专利分析的服务。并且一种解码视频比特流的系统包括:接收比特流和多个增强比特流,同时接收视频参数集和视频参数集扩展。所述系统还接收包含指示至少一个输出层集的改变的信息的输出层集改变消息。,下面是用信号通知输出层集的改变专利的具体信息内容。

1.一种用于解码视频比特流的方法,包括:

(a)接收表示编码视频序列的基础比特流;

(b)接收表示所述编码视频序列的多个增强比特流;

(c)接收包含应用于所述基础比特流和所述多个增强比特流的语法元素的视频参数集,其中,所述视频参数集包含通知视频参数集扩展的语法元素;

(d)接收所述视频参数集扩展,所述视频参数集扩展包含与所述多个增强比特流中的至少一个增强比特流相关的语法元素;

(e)接收包含对至少一个输出层集的改变加以指示的信息的输出层集改变消息。

2.如权利要求1所述的方法,其中,所述输出层集改变消息是补充增强信息(SEI)消息。

3.如权利要求1所述的方法,其中,所述输出层集改变消息包括移除所述至少一个输出层集之一的语法。

4.如权利要求1所述的方法,其中,所述输出层集改变消息包括向所述至少一个输出层集添加输出层集的语法。

5.如权利要求1所述的方法,其中,所述输出层集改变消息包括改变所述至少一个输出层集中的输出层集的语法。

6.如权利要求3所述的方法,其中,所述输出层集改变消息包括向所述至少一个输出层集添加输出层集的语法。

7.如权利要求6所述的方法,其中,所述输出层集改变消息包括改变所述至少一个输出层集中的输出层集的语法。

8.如权利要求4所述的方法,其中,所述输出层集改变消息包括改变所述至少一个输出层集中的输出层集的语法。

9.如权利要求5所述的方法,其中,所述输出层集改变消息包括移除所述至少一个输出层集之一的语法。

说明书全文

用信号通知输出层集的改变

[0001] 本申请是申请日为2014年4月4日、题为“用信号通知输出层集的改变”的发明专利申请No.201480019612.3(其国际申请号为PCT/JP2014/001967,并于2015年9月30日进入中国)的分案申请。

技术领域

[0002] 本公开总体涉及电子设备。更具体地,本公开涉及用于用信号通知基于子图像的假想参考解码器参数的电子设备,以及用于解码图像缓冲区(DPB)的混合操作的系统和方法。

背景技术

[0003] 电子没备已变得更小且更强大,以便满足消费者的需要并提高便携性和便利性。消费者已变得依赖于电子设备并期待更多的功能。电子设备的一些示例包括台式计算机、膝上型计算机、蜂窝电话、智能电话、媒体播放器、集成电路等。
[0004] 一些电子设备被用于处理和显示数字媒体。例如,便携式电子设备目前允许在消费者可能所处的几乎任何位置消费数字媒体。此外,一些电子设备可以提供数字媒体内容的下载或流传输以供消费者使用和娱乐。
[0005] 数字媒体的日益普及已经出现了若干问题。例如,有效地表示高质量数字媒体以供存储、传输和快速回放面临着诸多挑战。如从该讨论中可以观察到,以改进的性能有效地表示数字媒体的系统和方法会是有益的。
[0006] 通过结合附图考虑本发明的以下详细描述,本发明的上述和其它目的、特征和优点将更容易理解。

发明内容

[0007] 本发明的一方面提供一种用于解码视频比特流的方法,包括:(a)接收表示编码视频序列的基础比特流;(b)接收表示所述编码视频序列的多个增强比特流;(c)接收包含应用于所述基础比特流和所述多个增强比特流的语法元素的视频参数集,其中,所述视频参数集包含用信号通知视频参数集扩展的语法元素;(d)接收所述视频参数集扩展,所述所述视频参数集扩展包含与所述多个增强比特流中的至少一个增强比特流相关的语法元素;(e)接收包含指示至少一个输出层集的改变的信息的输出层集改变消息。
[0008] 本发明的一方面提供一种用于解码视频比特流的方法,包括:(a)接收表示编码视频序列的基础比特流;(b)接收表示所述编码视频序列的多个增强比特流;(c)接收包含应用于所述基础比特流和所述多个增强比特流的语法元素的视频参数集,其中,所述视频参数集包含用信号通知视频参数集扩展的语法元素;(d)接收所述视频参数集扩展,所述视频参数集扩展包含如下语法元素,所述语法元素包括用于所述多个增强比特流中的至少一个增强比特流的解码图像缓冲区的与解码图像缓冲区相关的参数。
[0009] 本发明的一方面提供一种用于视频编码的方法,包括:开始解析当前图像的第一条带(slice)头;确定由解码图像缓冲区(DPB)执行的哪些步骤将基于图像以及哪些步骤将基于访问单元(AU);执行从DPB的移除;执行从DPB的图像输出;执行对DPB中的当前解码图像的解码和存储;标记DPB中的当前解码图像;执行从DPB的附加图像输出。
[0010] 本发明的一方面提供一种配置用于视频编码的电子设备,包括:处理器;存储器,与处理器电通信,其中,存储在存储器中的指令可被执行以:开始解析当前图像的第一条带头;确定由解码图像缓冲区(DPB)执行的哪些步骤将基于图像以及哪些步骤将基于访问单元(AU);执行从DPB的移除;执行从DPB的图像输出;执行对DPB中的当前解码图像的解码和存储;标记DPB中的当前解码图像;执行从DPB的附加图像输出。

附图说明

[0011] 图1A是示出可以实施用于发送消息和缓冲比特流的系统和方法的一个或多个电子设备的示例的框图。
[0012] 图1B是示出可以实施用于发送消息和缓冲比特流的系统和方法的一个或多个电子设备的示例的另一框图。
[0013] 图2是示出用于发送消息的方法的一种配置的流程图。
[0014] 图3是示出用于确定针对访问单元中的解码单元的一个或多个移除延迟的方法的一种配置的流程图。
[0015] 图4是示出用于缓冲比特流的方法的一种配置流程图;
[0016] 图5是示出用于确定针对访问单元中的解码单元的一个或多个移除延迟的方法的一种配置的流程图。
[0017] 图6A是示出电子设备上的编码器604的一种配置的框图。
[0018] 图6B是示出电子设备上的编码器604的一种配置的另一框图。
[0019] 图7A是示出电子设备上的解码器的一种配置的框图。
[0020] 图7B是示出电子设备上的解码器的一种配置的另一框图。
[0021] 图8示出可以在发送方电子设备中利用的各种组件。
[0022] 图9是示出可以在接收方电子设备中利用的各种组件的框图。
[0023] 图10是示出可以实施用于发送消息的系统和方法的电子设备的一种配置的框图。
[0024] 图11是示出可以实施用于缓冲比特流的系统和方法的电子设备的一种配置的框图。
[0025] 图12是示出用于解码图像缓冲区的操作的方法的一种配置的框图。
[0026] 图13A示出不同的NAL单元头语法。
[0027] 图13B示出不同的NAL单元头语法。
[0028] 图13C示出不同的NAL单元头语法。
[0029] 图14示出通用NAL单元语法。
[0030] 图15示出现有的视频参数集。
[0031] 图16示出现有的可缩放性类型。
[0032] 图17示出示例性视频参数集。
[0033] 图18示出示例性可缩放性映射(map)语法。
[0034] 图19示出示例性视频参数集。
[0035] 图20示出现有的视频参数集。
[0036] 图21示出现有的维度类型、维度id语法。
[0037] 图22示出示例性视频参数集。
[0038] 图23示出示例性可缩放性映射语法。
[0039] 图24示出示例性视频参数集。
[0040] 图25示出示例性视频参数集。
[0041] 图26示出示例性视频参数集。
[0042] 图27示出示例性可缩放性掩码(mask)语法。
[0043] 图28示出示例性视频参数集扩展语法。
[0044] 图29示出示例性视频参数集扩展语法。
[0045] 图30示出示例性视频参数集扩展语法。
[0046] 图31示出示例性视频参数集扩展语法。
[0047] 图32示出示例性视频参数集扩展语法。
[0048] 图33示出示例性视频参数集扩展语法。
[0049] 图34示出示例性视频参数集语法。
[0050] 图35示出示例性视频参数集扩展语法。
[0051] 图36示出示例性输出层集改变语法。
[0052] 图37示出另一示例性输出层集改变语法。
[0053] 图38A示出示例性视频参数扩展语法。
[0054] 图38B示出示例性视频参数扩展语法。
[0055] 图39A示出示例性op_dpb_info_parameters(j)语法。
[0056] 图39B示出示例性op_dpb_info_parameters(j)语法。
[0057] 图40示出另一示例性视频参数扩展语法。
[0058] 图41示出另一示例性oop_dpb_info_parameters(j)语法。
[0059] 图42示出另一示例性oop_dpb_info_parameters(j)语法。
[0060] 图43示出示例性num_dpb_info_parameters语法。
[0061] 图44示出另一示例性oop_dpb_info_parameters(j)语法。
[0062] 图45示出另一个示例性num_dpb_info_parameters语法。
[0063] 图46示出另一个示例性num_dpb_info_parameters语法。
[0064] 图47示出另一示例性视频参数扩展语法和layer_dpb_info(i)。
[0065] 图48示出示例性oop_dpb_info_parameters和layer_dpb_info(i)语法。
[0066] 图49A示出另一示例性vps_extension()。
[0067] 图49B示出另一示例性vps_extension()。
[0068] 图50示出示例性oop_dpb_maxbuffering_parameters(i)。
[0069] 图51示出示例性layer_dpb_info_parameters(i)。
[0070] 图52示出另一示例性vps_extension()。
[0071] 图53示出另一示例性vps_extension()。
[0072] 图54示出示例性oop_dpb_maxbuffering_parameters(i,k)。
[0073] 图55示出示例性oop_dpb_maxbuffering_parameters(i,k)。
[0074] 图56示出另一示例性vps_extension()。
[0075] 图57示出示例性oop_dpb_maxbuffring_parameters(i,k)。
[0076] 图58示出示例性oop_dpb_maxbuffring_parameters(i,k)。
[0077] 图59示出示例性oop_dpb_maxbuffring_parameters(i,k)。
[0078] 图60示出示例性oop_dpb_maxbuffring_parameters(i,k)。
[0079] 图61示出示例性oop_dpb_maxbufffing_parameters(i,k)。
[0080] 图62示出示例性seq_parameter_set_rbsp()。
[0081] 图63是示出多个电子设备之间的视频编码的框图。
[0082] 图64是用于混合解码图像缓冲区(DPB)操作的方法的流程图。
[0083] 图65是用于混合解码图像缓冲区(DPB)操作的另一方法的流程图。
[0084] 图66是示出解码器的一种配置的框图;
[0085] 图67A是示出使用增强层和基础层两者来进行视频编码的框图,其中,针对基础层和增强层,使用分开的解码图像缓冲区(DPB)和分开的混合解码图像缓冲区(DPB)操作模块。
[0086] 图67B是示出针对基础层和增强层使用共享的解码图像缓冲区(DPB)和共享的混合解码图像缓冲区(DPB)操作模块的框图。
[0087] 图68是示出混合解码图像缓冲区(DPB)操作的时序图。
[0088] 图69是示出当第二增强层(EL2)的图像速率比基础层(BL)和第一增强层(EL1)的图像速率低时,编码图像的层中的网络抽象层(NAL)单元和访问单元(AU)的结构和时序的框图。
[0089] 图70是示出当基础层(BL)的图像速率比第一增强层(EL1)和第二增强层(EL2)的图像速率低时,编码图像的层中的网络抽象层(NAL)单元和访问单元(AU)的结构和时序的框图。

具体实施方式

[0090] 示例1
[0091] 描述了一种用于发送消息的电子设备。该电子设备包括处理器和存储在与所述处理器进行电通信的存储器中的指令。当编码图像缓冲区(CPB)支持子图像级别的操作时,电子设备确定在图像时序补充增强信息(SEI)消息中是否包括公共解码单元CPB移除延迟参数。当公共解码单元CPB移除延迟参数将被包括在图像时序SEI消息(或某个其它SEI消息或某个其它参数集(如图像参数集或序列参数集或视频参数集或适应参数集))中时,电子设备还产生公共解码单元CPB移除延迟参数,其中,所述公共解码单元CPB移除延迟参数可应用于来自CPB的访问单元中的所有解码单元。当在图像时序SEI消息中没有包括公共解码单元CPB移除延迟参数时,电子设备还针对访问单元中的每个解码单元产生单独的解码单元CPB移除延迟参数。该电子设备还将图像时序SEI消息与所述公共解码单元CPB移除延迟参数或所述解码单元CPB移除延迟参数一起发送。
[0092] 公共解码单元CPB移除延迟参数可指定:在从CPB移除刚好在与图像时序SEI消息相关联的访问单元中的当前解码单元之前的那个解码单元之后到从CPB移除当前解码单元之前要等待的子图像时钟周期(clock tick)的量。
[0093] 此外,当解码单元是访问单元中的第一解码单元时,公共解码单元CPB移除延迟参数可指定:在从CPB移除与前一访问单元中的最近的缓冲期SEI消息相关联的访问单元中的最后一个解码单元之后,到从CPB移除与所述图像时序SEI消息相关联的访问单元中的第一解码单元之前,所要等待的子图像时钟周期的量。
[0094] 相反,当解码单元是访问单元中的非第一解码单元时,公共解码单元CPB移除延迟参数可指定:在从CPB移除与图像时序SEI消息相关联的访问单元中的前一解码单元之后,到从CPB移除与图像时序SEI消息相关联的访问单元中的当前解码单元之前,所要等待的子图像时钟周期的量。
[0095] 解码单元CPB移除延迟参数可指定:在从CPB移除最后一个解码单元之后到从CPB移除在与图像时序SEI消息相关联的访问单元中的第i个解码单元之前要等待的子图像时钟周期的量。
[0096] 电子设备可以根据模数2(cpb_removal_delay_length_minus1+1)计数器的余数计算解码单元CPB移除延迟参数,其中,cpb_removal_delay_length_minus1+1是公共解码单元CPB移除延迟参数的长度。
[0097] 当CPB支持访问单元级别的操作时,电子设备还可以产生包括下述CPB移除延迟参数的图像时序SEI消息,其中,所述CPB移除延迟参数指定:在从CPB移除与前一访问单元中的最近的缓冲期SEI消息相关联的访问单元之后,到从CPB移除与所述图像时序SEI消息相关联的访问单元数据之前,要等待多少个时钟周期。
[0098] 电子设备还可确定CPB是否支持子图像级别或访问单元级别的操作。这可以包括确定图像时序标志,其中,所述图像时序标志基于所述图像时序标志的值指示编码图像缓冲区(CPB)是否提供支持子图像级别的操作。图像时序标志可被包括在图像时序SEI消息中。
[0099] 确定是否包括公共解码单元CPB移除延迟参数可包括:当公共解码单元CPB移除延迟参数将被包括在图像时序SEI消息中时,将公共解码单元CPB移除延迟标志设置为1。其还可包括:当公共解码单元CPB移除延迟参数将不被包括在图像时序SEI消息中时,将公共解码单元CPB移除延迟标志设置为0。公共解码单元CPB移除延迟标志可被包括在图像时序SEI消息中。
[0100] 当CPB支持子图像级别的操作时,电子设备还可以产生分开的网络抽象层(NAL)单元相关的参数,所述参数分别指示访问单元中的每个解码单元的NAL单元的量偏移1后的量。作为备选或补充,电子设备可产生公共NAL参数,该参数指示访问单元中的每个解码单元公共的NAL单元的量偏移1后的量。
[0101] 还描述了一种用于缓冲比特流的电子设备。电子设备包括处理器和存储在与处理器进行电通信的存储器中的指令。电子设备确定CPB用信号通知(signal)了访问单元的子图像级别的参数。当接收到的图像时序补充增强信息(SEI)消息包括公共解码单元编码图像缓冲区(CPB)移除延迟标志时,电子设备还确定公共解码单元CPB移除延迟参数可应用于访问单元中的所有解码单元。当图像时序SEI消息不包括公共解码单元CPB移除延迟标志时,电子设备还确定用于访问单元中的每个解码单元的单独的解码单元CPB移除延迟参数。电子设备还使用公共解码单元CPB移除延迟参数或单独的解码单元CPB移除延迟参数从CPB移除解码单元。电子设备还对访问单元中的解码单元进行解码。
[0102] 在一种配置中,电子设备确定图像时序标志被设置在图像时序SEI消息中。电子设备还可以根据下面的[数学式1]设置CPB移除延迟参数cpb_removal_delay,
[0103] [数学式1]
[0104]
[0105] 其中,du_cpb_removal_delay[i]是解码单元CPB移除延迟参数,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量,并且i是索引。
[0106] 备选地,电子设备可以设置CPB移除延迟参数cpb_removal_delay和du_cpb_removal_delay[num_decoding_units_minus1]以满足等式
[0107] [数学式2]
[0108]
[0109] 其中,du_cpb_removal_delay[i]是解码单元CPB移除延迟参数,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量,并且i是索引。
[0110] 备选地,电子设备可以根据cpb_removal_delay*tc=du_cpb_removal_delay[num_decoding_units_minus1]*tc_sub设置CPB移除延迟参数cpb_removal_delay和du_cpb_removal_delay[num_decoding_units_minus1],其中,du_cpb_removal_delay[num_decoding_units_minus1]是用于第num_decoding_units_minus1个解码单元的解码单元CPB移除延迟参数,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量。
[0111] 在一种配置中,电子设备确定图像时序标志被设置在图像时序SEI消息中。电子设备还可以设置CPB移除延迟参数cpb_removal_delay和du_cpb_removal_delay[num_decoding_units_minus1]以满足等式:-1≤(cpb_removal_delay*tc-du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub)≤1,其中du_cpb_removal_delay[num_decoding_units_minus1]是用于第num_decoding_units_minus1个解码单元的解码单元CPB移除延迟参数,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量。
[0112] 变量ClockDiff可被定义为ClockDiff=(num_units_in_tick-(num_units_in_sub_tick*(num_decoding_units_minus1+1))/time_scale),其中,num_units_in_tick是以与时钟周期计数器的一个增量对应的频率time_scale Hz操作的时钟的时间单位的数量,num_units_in_sub_tick是以与子图像时钟周期计数器的一个增量对应的频率time_scale Hz操作的时钟的时间单位的数量,num_decoding_units_minus1+1是访问单元中的解码单元的量,time_scale是在一秒钟内经过的时间单位的数量。
[0113] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1,CPB操作在子图像级别且ClockDiff大于零时,针对解码单元m的移除时间tr(m)根据下式确定:tr(m)=tr,n(m)+tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)+ClockDiff,其中,tr,n(m)是解码单元m的额定(nominal)移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数(ceiling function)且taf(m)是解码单元m的最终到达时间。
[0114] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(n)<taf(n),图像时序标志被设置为1,CPB操作在访问单元级别且ClockDiff大于零时,针对访问单元n的移除时间tr(n)根据下式确定:tr(n)=tr,n(n)+tc*Ceil((taf(n)-tr,n(n))/tc)-ClockDiff,其中,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,Ceil()是向上取整函数且taf(n)是访问单元n的最终到达时间。
[0115] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1且CPB操作在子图像级别时,针对访问单元的最后的解码单元m的移除时间tr(m)根据下式确定:tr(m)=tr,n(m)+max((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),(tc*Ceil((taf(n)-tr,n(n))/tc))),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间。
[0116] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(n)<taf(n),图像时序标志被设置为1且CPB操作在访问单元级别时,针对访问单元n的移除时间tr(n)根据下式确定:tr(n)=tr,n(n)+max((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),(tc*Ceil((taf(n)-tr,n(n))/tc))),其中,tr,n(m)是最后的解码单元n的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间。
[0117] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1且CPB操作在子图像级别时,针对访问单元的最后的解码单元m的移除时间tr(m)根据下式确定:tr(m)=tr,n(m)+min((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),(tc*Ceil((taf(n)-tr,n(n))/tc))),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间。
[0118] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(n)<taf(n),图像时序标志被设置为1且CPB操作在访问单元级别时,针对访问单元n的移除时间tr(n)根据下式确定:tr(n)=tr,n(n)+min((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),(tc*Ceil((taf(n)-tr,n(n))/tc))),其中,tr,n(m)是最后的解码单元n的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间。
[0119] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1且CPB操作在子图像级别时,针对访问单元的最后的解码单元m的移除时间tr(m)根据下式确定:tr(m)=tr,n(m)+(tc*Ceil((taf(n)-tr,n(n))/tc)),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间。
[0120] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(n)<taf(n),图像时序标志被设置为1且CPB操作在访问单元级别时,针对访问单元n的移除时间tr(n)根据下式确定:tr(n)=tr,n(n)+(tc*Ceil((taf(n)-tr,n(n))/tc)),其中,tr,n(m)是最后的解码单元n的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间。
[0121] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1且CPB操作在子图像级别时,针对不是最后的解码单元的解码单元m的移除时间被设置为tr(m)=taf(m),其中,taf(m)是解码单元m的最终到达时间。当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1且CPB操作在子图像级别时,针对作为访问单元的最后的解码单元m的解码单元m的移除时间根据下式确定:tr(m)=tr,n(m)+(tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间,taf(m)是访问单元n中的最后的解码单元m的最终到达时间。
[0122] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1且CPB操作在子图像级别时,针对不是最后的解码单元的解码单元m的移除时间被设置为tr(m)=taf(m),其中,taf(m)是解码单元m的最终到达时间。当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1且CPB操作在子图像级别时,针对作为访问单元的最后的解码单元m的解码单元m的移除时间根据下式确定:tr(m)=tr,n(m)+(tc*Ceil((taf(m)-tr,n(m))/tc)),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间,taf(m)是访问单元n中的最后的解码单元m的最终到达时间。
[0123] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1且CPB操作在子图像级别时,针对解码单元m的移除时间被设置为tr(m)=taf(m),其中,tr,n(m)是解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间,taf(m)是访问单元n中的解码单元m的最终到达时间。
[0124] 当低延迟假想参考解码器(HRD)标志(例如low_delay_hrd_flag)被设置为1,tr,n(n)<taf(n),图像时序标志被设置为1且CPB操作在访问单元级别时,针对访问单元n的移除时间tr(n)根据下式确定:tr(n)=taf(n),其中,tr,n(m)是最后的解码单元n的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间。
[0125] 此外,在一些情况中,可以在比特流的一部分中发送标志以用信号通知以上可替换等式中的哪个被用于决定解码单元的移除时间和访问单元的移除时间。在一种情况中,该标志可被称为du_au_cpb_alignment_mode_flag。如果du_au_cpb_alignment_mode_flag是1,则使用以上等式中的使操作在基于子图像的模式下的CPB的操作与操作在访问单元模式下的CPB对齐的等式。如果du_au_cpb_alignment_mode_flag是0,则使用以上等式中的不使操作在基于子图像的模式下的CPB的操作与操作在访问单元模式下的CPB对齐的等式。
[0126] 在一种情况中,可以在视频使用信息(VUI)中用信号通知标志du_au_cpb_alignment_mode_flag。在另一情况中,可以在图像时序SEI消息中发送标志du_au_cpb_alignment_mode_flag。在另一情况中,可以在比特流的一些其它规范部分中发送标志du_au_cpb_alignment_mode_flag。根据在此公开的系统和方法修改的语法和语义的一个示例可以在下面的表(0)中给出。
[0127] [表0]
[0128]
[0129] 表(0)
[0130] 应当指出的是,可使用与以上用于各种变量的符号(名称)不同的符号(名称)。例如,访问单元n的tr(n)可被称为CpbRemovalTime(n),解码单元n的tr(m)可被称为CpbRemovalTime(m),tc_sub可被称为ClockSubTick,tc可被称为ClockTick,访问单元m的taf(n)可被称为访问单元n的FinalArrivalTime,解码单元m的taf(m)可被称为FinalArrivalTime(m),tr,n(n)可被称为访问单元n的NominalRemovalTime(n),tr,n(m)可被称为解码单元m的NominalRemovalTime(m)。
[0131] 还描述了一种由电子设备发送消息的方法。所述方法包括:当编码图像缓冲区(CPB)支持子图像级别的操作时,确定是否将公共解码单元CPB移除延迟参数包括在图像时序补充增强信息(SEI)消息中。所述方法还包括:当公共解码单元CPB移除延迟参数将被包括在图像时序SEI消息中时,产生公共解码单元CPB移除延迟参数,其中,公共解码单元CPB移除延迟参数可应用于来自CPB的访问单元中的所有解码单元。所述方法还包括:当在图像时序SEI消息中没有包括公共解码单元CPB移除延迟参数时,产生用于访问单元中的每个解码单元的单独的解码单元CPB移除延迟参数。所述方法还包括发送具有公共解码单元CPB移除延迟参数或解码单元CPB移除延迟参数的图像时序SEI消息。
[0132] 还描述了一种用于由电子设备缓冲比特流的方法。所述方法包括确定CPB用信号通知了访问单元的子图像级别的参数。所述方法还包括:当接收到的图像时序补充增强信息(SEI)消息包括公共解码单元编码图像缓冲区(CPB)移除延迟标志时,确定公共解码单元CPB移除延迟参数可应用于访问单元中的所有解码单元。所述方法还包括:当图像时序SEI消息不包括公共解码单元CPB移除延迟标志时,确定用于访问单元中的每个解码单元的单独的解码单元CPB移除延迟参数。所述方法还包括:使用公共解码单元CPB移除延迟参数或单独的解码单元CPB移除延迟参数从CPB移除解码单元。所述方法还包括:对访问单元中的解码单元进行解码。
[0133] 在此公开的系统和方法描述了用于发送消息和缓冲比特流的电子设备。例如,在此公开的系统和方法描述了对以子图像参数开始的比特流进行缓冲。在一些配置中,在此公开的系统和方法可描述用信号通知基于子图像的假想参考解码器(HRD)参数。例如,在此公开的系统和方法描述了对图像时序补充增强信息(SEI)消息的修改。在此公开的系统和方法(例如HRD修改)可实现在每个子图像按照规定间隔到达且从CPB移除时的参数的更紧凑的信号通知。
[0134] 此外,当子图像级别CPB移除延迟参数存在时,编码图像缓冲区(CPB)可操作在访问单元级别或子图像级别。本系统和方法还可施加一种比特流约束,使得基于子图像级别的CPB操作和访问单元级别的CPB操作实现相同的解码单元移除时序。具体地,在以子图像模式操作时移除访问单元中的最后的解码单元的时序与在以访问单元模式操作时移除访问单元的时序相同。
[0135] 应当指出的是,虽然在提到HRD时使用了术语“假想”,但是HRD可被物理实现。例如,“HRD”可被用于描述实际的解码器的实现。在一些配置中,HRD可被实现以确定比特流是否符合高效视频编码(HEVC)标准。例如,HRD可被用于确定I型比特流和II型比特流是否符合HEVC标准。I型比特流可以仅包含视频编码层(VCL)网络访问层(NAL)单元和填充数据NAL单元。II型比特流可包含其它额外的NAL单元和语法元素。
[0136] 视频编码联合协作组(JCTVC)文档JCTVC-I0333包括基于子图像的HRD并支持图像时序SEI消息。此功能已被并入高效视频编码(HEVC)委员会草案(JCTVC-I1003),通过引用将其全文合并于此。2013年1月在日内瓦由B.Bros、W-J.Han、J-R.Ohm、G.J.Sullivan、Wang和T-.Wiegand提出的JCTVC-J10003_v34“High efficiency video coding(HEVC)text specification draft 10(for DFIS&Last Call)(高效视频编码(HEVC)文本标准草案10(用于DFIS和最后通话)”,在此通过引用被全文合并于此。2013年1月在日内瓦由B.Bros、W-J.Han、J-R.Ohm、G.J.Sullivan、Wang和T-.Wiegand提出的JCTVC-L1003“High efficiency video coding(HEVC)text specification draft 10(高效视频编码(HEVC)文本标准草案10)”在此通过引用被全文合并于此。
[0137] 根据在此公开的系统和方法的修改后的语法和语义的一个示例由下表(1)给出。
[0138] [表1]
[0139]
[0140] 表(1)
[0141] 根据在此公开的系统和方法的关于缓冲期SEI消息语义的示例如下给出。具体地,关于修改后的语法元素的语义的附加细节如下给出。当NalHrdBpPresentFlag或VclHrdBpPresentFlag等于1,缓冲期SEI消息可以与比特流中的任何访问单元相关联,并且缓冲期SEI消息可以与每个IDR访问单元、每个CRA访问单元、以及与恢复点SEI消息相关联的每个访问单元,相关联。对于一些应用,可能期望缓冲期SEI消息频繁存在。缓冲期被指定为按照解码顺序的在缓冲期SEI消息的两个实例之间的一组访问单元。
[0142] “seq_paremeter_set_id”指定包含序列HRD属性的序列参数集。seq_paremeter_set_id的值可以等于通过与缓冲期SEI消息相关联的基本编码图像参考的图像参数集中的seq_paremeter_set_id的值。seq_paremeter_set_id的值可以在0至31(含)的范围内。
[0143] ′initial_cpb_removal_delay′[SchedSelIdx]指定在HRD初始化之后的第一缓冲期内,针对第SchedSelIdx个CPB的、在与访问单元(所述访问单元与缓冲期SEI消息相关联)相关联的编码数据的第一比特的到达CPB的时间与从CPB移除与同一访问单元相关联的编码数据的时间之间的延迟。语法元素具有由initial_cpb_removal_delay_length_minus1+1给出的比特长度。它以90kHz时钟为单位。initial_cpb_removal_delay[SchedSelIdx]不可等于0,且不可超过90000*(CpbSize[SchedSelIdx]/BitRate[SchedSelIdx]),即CPB尺寸的以90KHz时钟为单位的时间等价物。
[0144] ′initial_cpb_removal_delay_offset′[SchedSelIdx]用于第SchedSelIdx个CPB,与cpb_removal_delay结合以指定编码访问单元到CPB的初始传送时间。initial_cpb_removal_delay_offset[SchedSelIdx]以90kHz时钟为单位。initial_cpb_removal_delay_offset[SchedSelIdx]语法元素是固定长度代码,其比特长度由initial_cpb_removal_delay_length_minus1+1给出。该语法元素不被解码器使用,并仅被传送调度器(HSS)(例如,如在JCTVC-I1003的附录C中的规定)需要。
[0145] 在整个编码视频序列上,initial_cpb_removal_delay[SchedSelIdx]与initial_cpb_removal_delay_offset[SchedSelIdx]的和对于SchedSelIdx的每个值可以是恒定的。
[0146] ′initial_du_cpb_removal_delay′[SchedSelIdx]指定在HRD初始化之后的第一缓冲期内,第SchedSelIdx个CPB的、在与访问单元(所述访问单元与缓冲期SEI消息相关联)中的第一解码单元相关联的编码数据的第一比特到达CPB的时间与从CPB移除与同一解码单元相关联的编码数据的时间之间的延迟。语法元素具有由initial_cpb_removal_delay_length_minus1+1给出的比特长度。它以90kHz时钟为单位。initial_du_cpb_removal_delay[SchedSelIdx]不可等于0,且不可超过90000*(CpbSize[SchedSelIdx]/BitRate[SchedSelIdx]),即CPB尺寸的以90KHz时钟为单位的时间等价物。
[0147] ′initial_du_cpb_removal_delay_offset′[SchedSelIdx]用于第SchedSelIdx个CPB,与cpb_removal_delay结合以指定解码单元到CPB的初始传送时间。
[0148] initial_cpb_removal_delay_offset[SchedSelIdx]以90kHz时钟为单位。initial_cpb_removal_delay_offset[SchedSelIdx]语法元素是固定长度代码,其比特长度由initial_cpb_removal_delay_length_minus1+1给出。该语法元素不被解码器使用,并仅被传送调度器(HSS)(例如,如在JCTVC-I1003的附录C中的规定)需要。
[0149] 在整个编码视频序列上,initial_cpb_removal_delay[SchedSelIdx]与initial_cpb_removal_delay_offset[SchedSelIdx]的和对于SchedSelIdx的每个值可以是恒定的。
[0150] 根据在此公开的系统和方法的关于缓冲期SEI消息语义的示例如下给出。具体地,关于修改后的语法元素的语义的附加细节如下给出。
[0151] 图像时序SEI消息的语法取决于针对与图像时序SEI消息相关联的编码图像而言活跃的序列参数集的内容。然而,除非即时解码刷新(IDR)访问单元的图像时序SEI消息被同一访问单元中的缓冲期SEI消息超前,否则直到对编码图像的第一编码条带网络抽象层(NAL)单元进行解码,才会发生对相关联的序列参数集的激活(以及,对于不是比特流中的第一图像的IDR图像,才会发生对编码图像是IDR图像的确定)。由于编码图像的编码条带NAL单元按照NAL单元顺序跟随在图像时序SEI消息之后,可能存在如下情况:即解码器必须存储包含图像时序SEI消息的原始字节序列净荷(RBSP),直到确定将针对编码图像激活的序列参数的参数为止,然后执行对图像时序SEI消息的解析。
[0152] 比特流中的图像时序SEI消息的存在如下指定。如果CpbDpbDelaysPresentFlag等于1,则编码视频序列的每个访问单元中可以存在一个图像时序SEI消息。否则(CpbDpbDelaysPresentFlag等于0),在编码视频序列的任何访问单元中都不存在图像时序SEI消息。
[0153] ′cpb_removal_delay′指定在从CPB移除与前一访问单元中的最近的缓冲期SEI消息相关联的访问单元之后,到从该缓冲区移除与图像时序SEI消息相关联的访问单元数据之前要等待多少个时钟周期(见JCTVC-I1003的分条款E.2.1)。该值还用于计算访问单元数据到达用于HSS的CPB的最早可能时间,如在JCTVC-I1003的附录C中的规定。该语法元素是固定长度代码,其比特长度由cpb_removal_delay_length_minus1+1给出。cpb_removal_delay是模数2(cpb_removal_delay_length_minus1+1计数器的余数。
[0154] 确定语法元素cpb_removal_delay的(比特)长度的cpb_removal_delay_length_minus1的值是在针对与图像时序SEI消息相关联的基本编码图像激活的序列参数集中编码的cpb_removal_delay_length_minus1的值,尽管cpb_removal_delay指定相对于包含缓冲期SEI消息的前一访问单元(其可以是不同的编码视频序列的访问单元)的移除时间的时钟周期的数量。
[0155] ′dpb_output_delay′用于计算图像的解码图像缓冲区(DPB)输出时间。其指定在从CPB移除访问单元中的最后的解码单元之后到从DPB输出解码图像之前要等待多少个时钟周期(见JCTVC-I1003的分条款C.2)。
[0156] 对于DPB,在图像仍被标记为“用于短期参考”或“用于长期参考”时,在该图像的输出时间不从DPB移除该图像。针对解码图像只指定一个dpb_output_delay。语法元素dpb_output_delay的比特长度由dpb_output_delay_length_minus1+1给出。当max_dec_pic_buffering[max_temporal_layers_minus1]等于0时,dpb_output_delay可以等于0。
[0157] 如在JCTVC-I1003的分条款C.2中规定的,从输出时序一致性(conforming)解码器输出的任何图像的根据dpb_output_delay得到的输出时间可以在按照解码顺序的任何在后编码视频序列中的所有图像的根据dpb_output_delay得到的输出时间之前。由该语法元素的值建立的图像输出顺序可以与由分条款规定的PicOrderCnt()的值建立的顺序相同。对于不被分条款的“弹出(bumping)”处理输出的图像(由于它们按照解码顺序在no_output_of_prior_pics_flag等于1或者被推断等于1的IDR图像之前),根据dpb_output_delay得到的输出时间可以随着相对于同一编码视频序列中的所有图像的PicOrderCnt()值的增加而增加。
[0158] ′num_decoding_units_minus1′加1指定与图像时序SEI消息相关联的访问单元中的解码单元的数量。num_decoding_units_minus1的值可以在0到PicWidthInCtbs*PicHeightInCtbs-1(含)的范围内。
[0159] ′common_du_cpb_removal_delay_flag′等于1表明语法元素common_du_cpb_removal_delay存在。
[0160] ′common_du_cpb_removal_delay_flag′等于0表明语法元素common_du_cpb_removal_delay不存在。
[0161] ′common_du_cpb_removal_delay′指定如下信息:如果解码单元是与图像时序SEI消息相关联的访问单元中的第一解码单元,则common_du_cpb_removal_delay指定在从CPB移除与前一访问单元中的最近的缓冲期SEI消息相关联的访问单元中的最后的解码单元之后,到从CPB移除与图像时序SEI消息相关联的访问单元中的第一解码单元之前要等待多少个子图像时钟周期(见JCTVC-I1003的分条款E.2.1)。
[0162] 否则,common_du_cpb_removal_delay指定在从CPB移除与图像时序SEI消息相关联的访问单元中的前一解码单元之后,到从CPB移除与图像时序SEI消息相关联的访问单元中的当前解码单元之前要等待多少个子图像时钟周期(见JCTVC-I1003的分条款E.2.1)。该值还用于计算解码单元数据到达用于HSS的CPB的最早可能时间,如在JCTVC-I1003的附录C中的规定。该语法元素是固定长度代码,其比特长度由cpb_removal_delay_length_minus1+1给出。common_du_cpb_removal_delay是模数2(cpb_removal_delay_length_minus1+1)计数器的余数。
[0163] 指定′common_du_cpb_removal_delay′的备选方式如下所示。
[0164] common_du_cpb_removal_delay指定在从CPB移除上一个解码单元之后,到从CPB移除与图像时序SEI消息相关联的访问单元中的当前解码单元之前要等待多少个子图像时钟周期(见JCTVC-I1003的分条款E.2.1)。该值还用于计算解码单元数据到达用于HSS的CPB的最早可能时间,如在JCTVC-I1003的附录C中的规定。该语法元素是固定长度代码,其比特长度由cpb_removal_delay_length_minus1+1给出。common_du_cpb_removal_delay是模数2(cpb_removal_delay_length_minus1+1)计数器的余数。
[0165] 确定语法元素common_du_cpb_removal_delay的(比特)长度的cpb_removal_delay_length_minus1的值是在针对与图像时序SEI消息相关联的编码图像激活的序列参数集中编码的cpb_removal_delay_length_minus1的值,尽管common_du_cpb_removal_delay指定相对于包含缓冲期SEI消息的前一访问单元(其可以是不同的编码视频序列的访问单元)中的第一解码单元的移除时间的子图像时钟周期的数量。
[0166] ′num_nalus_in_du_minus1[i]′加1指定与图像时序SEI消息相关联的访问单元的第i个解码单元中的NAL单元的数量。num_nalus_in_du_minus1[i]的值可以在0到PicWidthInCtbs*PicHeightInCtbs-1(含)的范围内。
[0167] 访问单元的第一解码单元包括访问单元中的按照解码顺序的前num_nalus_in_du_minus1[0]+1个连续的NAL单元。访问单元的第i(i大于0)个解码单元包括按照解码顺序的紧跟着访问单元的前一解码单元中的最后的NAL单元的num_nalus_in_du_minus1[i]+1个连续的NAL单元。在每个解码单元中存在至少一个VCL NAL单元。与一个VCL NAL单元相关联的所有非VCL NAL单元可被包括在同一解码单元中。
[0168] ′du_cpb_removal_delay[i]′指定在从CPB移除与前一访问单元中的最近的缓冲期SEI消息相关联的访问单元的第一解码单元之后,到从CPB移除与图像时序SEI消息相关联的访问单元中的第i个解码单元之前要等待多少个子图像时钟周期(见JCTVC-I1003的分条款E.2.1)。该值还用于计算解码单元数据到达用于HSS的CPB的最早可能时间(例如如在JCTVC-I1003的附录C中的规定)。该语法元素是固定长度代码,其比特长度由cpb_removal_delay_length_minus1+1给出。du_cpb_removal_delay[i]是模数2(cpb_removal_delay_length_minus1+1)计数器的余数。
[0169] 确定语法元素du_cpb_removal_delay[i]的(比特)长度的cpb_removal_delay_length_minus1的值是在针对与图像时序SEI消息相关联的编码图像激活的序列参数集中编码的cpb_removal_delay_length_minus1的值,尽管du_cpb_removal_delay[i]指定相对于包含缓冲期SEI消息的前一访问单元(其可以是不同的编码视频序列的访问单元)中的第一解码单元的移除时间的子图像时钟周期的数量。
[0170] 在一种配置中,解码单元移除的时序和解码单元的解码可以如下实施。
[0171] 如果SubPicCpbFlag等于0,则变量CpbRemovalDelay(m)被设置为与作为解码单元m的访问单元相关联的图像时序SEI消息中的cpb_removal_delay的值,且变量Tc被设置为tc。否则,如果SubPicCpbFlag等于1且common_du_cpb_removal_delay_flag是0,则变量CpbRemovalDelay(m)被设置为与包含解码单元m(其中m在0到num_decoding_units_minus1范围内)的访问单元相关联的图像时序SEI消息中的针对解码单元m的du_cpb_removal_delay[i]的值,且变量Tc被设置为tc_sub。
[0172] 在一些情况下,另外,如果SubPicCpbFlag等于1且common_du_cpb_removal_delay_flag是0,则变量CpbRemovalDelay(m)被设置为与包含解码单元m(其中m在0到num_decoding_units_minus1范围内)的访问单元相关联的图像时序SEI消息中的针对解码单元m的(m+1)*du_cpb_removal_delay[i]的值,且变量Tc被设置为tc_sub。
[0173] 否则,如果SubPicCpbFlag等于1且common_du_cpb_removal_delay_flag是1,则变量CpbRemovalDelay(m)被设置为与包含解码单元m的访问单元相关联的图像时序SEI消息中的针对解码单元m的common_du_cpb_removal_delay的值,且变量Tc被设置为tc_sub。
[0174] 当解码单元m是n等于0的解码单元(初始化HRD的访问单元的第一解码单元)时,从CPB移除该解码单元的额定移除时间由tr,n(0)=InitCpbRemovalDelay[SchedSelIdx]/90000指定。
[0175] 当解码单元m是非初始化HRD的缓冲期的第一访问单元的第一解码单元时,从CPB移除该解码单元的额定移除时间由tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m)指定,其中,tr,n(mb)是先前缓冲期的第一解码单元的额定移除时间。
[0176] 当解码单元m是缓冲期的第一解码单元时,在解码单元m的移除时间tr,n(m),mb被设置为等于m。不是缓冲期的第一解码单元的解码单元m的额定移除时间tr,n(m)由tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m)给出,其中,tr,n(mb)是当前缓冲期的第一解码单元的额定移除时间。
[0177] 解码单元m的移除时间如下指定。如果low_delay_hrd_flag等于0或者tr,n(m)≥taf(m),则解码单元m的移除时间由tr(m)=tr,n(m)指定。否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),解码单元m的移除时间由tr(m)=tr,n(m)+Tc*Ceil((taf(m)-tr,n(m))/Tc)指定。后一情况(low_delay_hrd_flag等于1且tr,n(m)<taf(m))指示解码单元m的尺寸b(m)太大了,导致其阻止了在额定移除时间处进行移除。
[0178] 在另一情况下,解码单元m的移除时间如下指定。如果low_delay_hrd_flag等于0或者tr,n(m)≥taf(m),则解码单元m的移除时间由tr(m)=tr,n(m)指定。否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),作为不是访问单元中的最后的解码单元的解码单元m的移除时间由tr(m)=taf(m)指定,而作为访问单元中的最后的解码单元的解码单元m的移除时间由tr(m)=tr,n(m)+Tc*Ceil((taf(m)-tr,n(m))/tc)指定。后一情况(low_delay_hrd_flag等于1且tr,n(m)<taf(m))指示解码单元m的尺寸b(m)太大了,导致其阻止了在额定移除时间处进行移除。
[0179] 在另一情况下,解码单元m的移除时间如下指定。如果low_delay_hrd_flag等于0或者tr,n(m)≥taf(m),则解码单元m的移除时间由tr(m)=tr,n(m)指定。否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),作为不是访问单元中的最后的解码单元的解码单元m的移除时间由tr(m)=taf(m)指定,而作为访问单元中的最后的解码单元的解码单元m的移除时间由tr(m)=tr,n(m)+tc*Ceil((taf(m)-tr,n(m))/tc)指定。后一情况(low_delay_hrd_flag等于1且tr,n(m)<taf(m))指示解码单元m的尺寸b(m)太大了,导致其阻止了在额定移除时间处进行移除。
[0180] 在另一情况下,解码单元m的移除时间如下指定。如果low_delay_hrd_flag等于0或者tr,n(m)≥taf(m),则解码单元m的移除时间由tr(m)=tr,n(m)指定。否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),解码单元m的移除时间由tr(m)=taf(m)指定。后一情况(low_delay_hrd_flag等于1且tr,n(m)<taf(m))指示解码单元m的尺寸b(m)太大了,导致其阻止了在额定移除时间处进行移除。
[0181] 当SubPicCpbFlag等于1时,访问单元n的额定CPB移除时间tr,n(n)被设置为访问单元n中的最后的解码单元的额定CPB移除时间,防问单元n的CPB移除时间tr(n)被设置为访问单元n中的最后的解码单元的CPB移除时间。
[0182] 当SubPicCpbFlag等于0时,每个解码单元都是访问单元,因此,访问单元n的额定CPB移除时间和CPB移除时间是解码单元n的额定CPB移除时间和CPB移除时间。
[0183] 在解码单元m的CPB移除时间,解码单元被立即解码。
[0184] 根据在此公开的系统和方法的图像时序SEI消息的修改后的语法和语义的另一示例如下表(2)给出。根据在此公开的系统和方法的修改用粗线标出。
[0185] [表2]
[0186] 表(2)
[0187] 表(2)中示出的示例包括语法元素common_num_nalus_in_du_minus1,其可被用于确定当移除解码单元时应该从CPB移除多少数据。′common_num_nalus_in_du_minus1′加1指定与图像时序SEI消息相关联的访问单元的每个解码单元中的NAL单元的数量。common_num_nalus_in_du_minus1的值可以在0到PicWidthInCtbs*PicHeightInCtbs-1(含)的范围内。
[0188] 访问单元的第一解码单元包括访问单元中的按照解码顺序的前common_num_nalus_in_du_minus1+1个连续NAL单元。访问单元的第i(i大于0)解码单元包括按照解码顺序紧跟着访问单元的前一解码单元中的最后的NAL单元的common_num_nalus_in_du_minus1+1个连续NAL单元。在每个解码单元中存在至少一个VCL NAL单元。与一个VCL NAL单元相关联的所有非VCL NAL单元可被包括在同一解码单元中。
[0189] 根据在此公开的系统和方法的图像时序SEI消息的修改后的语法和语义的另一示例如下表(3)给出。根据在此公开的系统和方法的修改用粗线标出。
[0190] [表3]
[0191]
[0192] 表(3)
[0193] 表(3)中示出的示例包括语法元素′common_num_nalus_in_du_flag′,当其等于1时表明语法元素′common_num_nalus_in_du_minus1′存在。当′common_num_nalus_in_du_flag′等于0时表明语法元素′common_num_nalus_in_du_minus1′不存在。
[0194] 在另一实施例中,标志common_du_cpb_removal_delay_flag、common_num_nalus_in_du_minus1可不被发送。作为替代,可以每次都发送语法元素common_num_nalus_in_du_minus1和common_du_cpb_removal_delay。在此情况下,这些语法元素的值0(或其它)可用于指示没有用信号通知这些元素。
[0195] 除了对图像时序SEI消息的语法元素和语义的修改之外,本系统和方法还可实施比特流约束,使得基于子图像的CPB操作和访问单元级别的CPB操作实现相同的解码单元移除时序。
[0196] 当sub_pic_cpb_params_present_flag等于1,表明子图像级别CPB移除延迟参数存在时,CPB可以操作在访问单元级别或子图像级别。sub_pic_cpb_params_present_flag等于0表明子图像级别CPB移除延迟参数不存在,并且CPB操作在访问单元级别。当sub_pic_cpb_params_present_flag不存在时,推断其值等于0。
[0197] 为了支持访问单元级别或子图像级别两者的操作,可以使用以下比特流约束:如果sub_pic_cpb_params_present_flag是1,则比特流一致性要求当用信号通知cpb_removal_delay和针对所有i的du_cpb_removal_delay[i]的值时满足以下约束:
[0198] [数学式3]
[0199]
[0200] 其中,du_cpb_removal_delay[i]是解码单元CPB移除延迟参数,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量,i是索引。在一些实施例中,可以添加容差参数以满足以上约束。
[0201] 为了支持在访问单元级别或子图像级别两者的操作,可使用以下比特流约束:将变量Tdu(k)定义为:
[0202] [数学式4]
[0203]
[0204] 其中,du_cpb_removal_delay_minus1k[i]和num_decoding_units_minus1k是针对第k个访问单元的第i个解码单元(其中针对初始化HRD的访问单元,k=0;针对k<1,Tdu(k)=0)的参数,并且其中,du_cpb_removal_delay_minus1k[i]+1=du_cpb_removal_delay_minus1k[i]是针对第k个访问单元的第i个解码单元的解码单元CPB移除延迟参数,并且num_decoding_units_minus1k是第k个访问单元中的解码单元的数量,tc是时钟周期,tc,sub是子图像时钟周期,i和k是索引。于是,当图像时序标志(例如sub_pic_cpb_params_present_flag)被设置为1时,以下约束应为真:(au_cpb_removal_delay_minus1+1)*tc==Tdu(k),其中,(au_cpb_removal_delay_minus1+1)=cpb_removal_delay(CPB移除延迟)。因此,在这种情况下,CPB移除延迟(au_cpb_removal_delay_minus1+1)被设置为使得基于子图像的CPB操作和基于访问单元的CPB操作实现相同的访问单元移除时序和访问单元的最后的解码单元移除时序。
[0205] 为了支持访问单元级别或子图像级别两者的操作,可以使用以下比特流约束:如果sub_pic_cpb_params_present_flag是1,则比特流一致性要求当用信号通知cpb_removal_delay和针对所有i的du_cpb_removal_delay[i]的值时满足以下约束:
[0206] [数学式5]
[0207]
[0208] 当du_cpb_removal_delay[i]是解码单元CPB移除延迟参数时,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量,i是索引。
[0209] 为了支持访问单元级别或子图像级别两者的操作,可以使用以下比特流约束:如果sub_pic_cpb_params_present_flag是1,则比特流一致性要求当用信号通知cpb_removal_delay和du_cpb_removal_delay[num_decoding_units_minus1]的值时满足以下约束:cpb_removal_delay*tc=du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub,其中,du_cpb_removal_delay[num_decoding_units_minus1]是用于第num_decoding_units_minus1个解码单元的解码单元CPB移除延迟参数,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量。在一些实施例中,可以添加容差参数以满足以上约束。
[0210] 为了支持访问单元级别或子图像级别两者的操作,可以使用以下比特流约束:如果sub_pic_cpb_params_present_flag是1,则比特流一致性要求当用信号通知cpb_removal_delay和针对所有i的du_cpb_removal_delay[i]的值时满足以下约束:-1≤(cpb_removal_delay*tc-du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub)≤1,其中,du_cpb_removal_delay[num_decoding_units_minus1]是用于第num_decoding_units_minus1个解码单元的解码单元CPB移除延迟参数,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量。
[0211] 此外,本系统和方法可修改解码单元移除的时序。当子图像级别的CPB移除延迟参数存在时,针对“大图像”的解码单元的移除时间(当low_delay_hrd_flag是1且tr,n(m)<taf(m)时)可被改变以补偿由于时钟周期计数器和子图像时钟周期计数器而可能导致的差异。
[0212] 当sub_pic_cpb_params_present_flag等于1时,子图像级别CPB移除延迟参数存在,且CPB可以操作在访问单元级别或子图像级别。sub_pic_cpb_params_present_flag等于0表明子图像级别CPB移除延迟参数不存在,且CPB操作在访问单元级别。当sub_pic_cpb_params_present_flag不存在时,推断其值等于0。
[0213] 具体地,解码单元移除的时序和解码单元的解码实施如下所示。变量SubPicCpbPreferredFlag或者由外部装置指定,或者当不由外部装置指定时被设置为0。变量SubPicCpbFlag如下导出:SubPicCpbFlag=SubPicCpbPreferredFlag&&sub_pic_cpb_params_present_flag。如果SubPicCpbFlag等于0,则CPB操作在访问单元级别并且每个解码单元是访问单元。否则,CPB操作在子图像级别,并且每个解码单元是访问单元的子集。
[0214] 如果SubPicCpbFlag等于0,则变量CpbRemovalDelay(m)被设置为与作为解码单元m的访问单元相关联的图像时序SEI消息中的cpb_removal_delay的值,且变量Tc被设置为tc。否则,变量CpbRemovalDelay(m)被设置为与包含解码单元m的访问单元相关联的图像时序SEI消息中的针对解码单元m的du_cpb_removal_delay[i]的值,且变量Tc被设置为tc_sub。
[0215] 当解码单元m是n等于0的解码单元(初始化HRD的访问单元的第一解码单元)时,解码单元从CPB移除的额定移除时间由tr,n(0)=InitCpbRemovalDelay[SchedSelIdx]/90000指定。
[0216] 当解码单元m是非初始化HRD的缓冲期的第一访问单元的第一解码单元时,解码单元从CPB移除的额定移除时间由tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m)指定,其中,tr,n(mb)是先前缓冲期的第一解码单元的额定移除时间。
[0217] 当解码单元m是缓冲期的第一解码单元时,在解码单元m的移除时间tr,n(m),mb被设置为等于m。
[0218] 作为不是缓冲期的第一解码单元的解码单元m的额定移除时间tr,n(m)由tr,n(m)=tr,n(mb)+Tc*CpbRemovalDelay(m)给出,其中,tr,n(mb)是当前缓冲期的第一解码单元的额定移除时间。
[0219] 解码单元的移除时间如下指定。变量ClockDiff被定义为ClockDiff=(num_units_in_tick-(num_units_in_sub_tick*(num_decoding_units_minus1+1))/time_scale)。在一些情况下,比特流一致性可能要求用信号通知参数num_units_in_tick、num_units_in_sub_tick、num_decoding_units_minus1从而满足以下等式:(num_units_in_tick-(num_units_in_sub_tick*(num_decoding_units_minus1+1)))≥0。
[0220] 在一些情况下,比特流一致性可能要求用信号通知参数num_units_in_tick、num_units_in_sub_tick、num_decoding_units_minus1从而满足以下等式:(num_units_in_tick-(num_units_in_sub_tick*(num_decoding_units_minus1+1)))≤0。如果low_delay_hrd_flag等于0或者tr,n(m)>=taf(m),则解码单元m的移除时间由tr(m)=tr,n(m)指定。
[0221] 否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),并且当sub_pic_cpb_params_present_flag等于1且CPB操作在子图像级别,并且如果ClockDiff大于零,则作为访问单元n的最后的解码单元的解码单元m的移除时间由tr(m)=tr,n(m)+Tc*Ceil((taf(m)-tr,n(m))/Tc)+ClockDiff指定。
[0222] 否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),并且当sub_pic_cpb_params_present_flag等于1且CPB操作在访问单元级别,并且如果ClockDiff小于零,则访问单元n的移除时间由tr(m)=tr,n(m)+tc*Ceil((taf(m)-tr,n(m))/tc)-ClockDiff指定。
[0223] 否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),则解码单元m的移除时间由tr(m)=tr,n(m)+Tc*Ceil((taf(m)-tr,n(m))/Tc)指定。后一情况(low_delay_hrd_flag等于1且tr,n(m)<taf(m))指示解码单元m的尺寸b(m)太大了,导致其阻止了在额定移除时间处进行移除。
[0224] 否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),且当图像时序标志被设置为1且CPB操作在子图像级别时,针对访问单元的最后的解码单元m的移除时间tr(m)根据:tr(m)=tr,n(m)+min((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),(tc*Ceil((taf(n)-tr,n(n))/tc))),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期且taf(n)是访问单元n的最终到达时间。
[0225] 否则(low_delay_hrd_flag等于1且tr,n(n)<taf(n)),且当图像时序标志被设置为1且CPB操作在访问单元级别时,针对访问单元n的移除时间tr(n)根据:tr(n)=tr,n(n)+min((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),(tc*Ceil((taf(n)-tr,n(n))/tc))),其中,tr,n(m)是最后的解码单元n的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期且taf(n)是访问单元n的最终到达时间。
[0226] 否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),且图像时序标志被设置为1且CPB操作在子图像级别,针对访问单元的最后的解码单元m的移除时间tr(m)根据:tr(m)=tr,n(m)+(tc*Ceil((taf(n)-tr,n(n))/tc)),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期且taf(n)是访问单元n的最终到达时间。
[0227] 否则(low_delay_hrd_flag等于1且tr,n(n)<taf(n)),且图像时序标志被设置为1且CPB操作在访问单元级别,针对访问单元n的移除时间tr(n)根据:tr(n)=tr,n(n)+(tc*Ceil((taf(n)-tr,n(n))/tc)),其中,tr,n(m)是最后的解码单元n的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期且taf(n)是访问单元n的最终到达时间。
[0228] 否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),且图像时序标志被设置为1且CPB操作在子图像级别,针对不是访问单元的最后的解码单元的解码单元的移除时间被设置为tr(m)=taf(m),其中,taf(m)是解码单元m的最终到达时间。针对访问单元的最后的解码单元m的移除时间tr(m)根据下式设置:tr(m)=tr,n(m)+(tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间,taf(m)是访问单元n中的最后的解码单元m的最终到达时间。
[0229] 否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),且图像时序标志被设置为1且CPB操作在子图像级别,针对不是访问单元的最后的解码单元的解码单元的移除时间被设置为tr(m)=taf(m),其中,taf(m)是解码单元m的最终到达时间。针对访问单元的最后的解码单元m的移除时间tr(m)根据下式设置:tr(m)=tr,n(m)+(tc*Ceil((taf(m)-tr,n(m))/tc)),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间,taf(m)是访问单元n中的最后的解码单元m的最终到达时间。
[0230] 否则(low_delay_hrd_flag等于1且tr,n(m)<taf(m)),且图像时序标志被设置为1且CPB操作在子图像级别,针对解码单元的移除时间被设置为tr(m)=taf(m),其中,tr,n(m)是解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间,taf(m)是访问单元n中的解码单元m的最终到达时间。
[0231] 否则(low_delay_hrd_flag等于1且tr,n(n)<taf(n)),且图像时序标志被设置为1且CPB操作在访问单元级别,针对访问单元n的移除时间根据:tr(n)=taf(n),其中,tr,n(m)是最后的解码单元n的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间。
[0232] 当SubPicCpbFlag等于1时,访问单元n的额定CPB移除时间tr,n(n)被设置为访问单元n中的最后的解码单元的额定CPB移除时间,访问单元n的CPB移除时间tr(n)被设置为访问单元n中的最后的解码单元的CPB移除时间。
[0233] 当SubPicCpbFlag等于0时,每个解码单元都是访问单元,因此访问单元n的额定CPB移除时间和CPB移除时间是解码单元n的额定CPB移除时间和CPB移除时间。在解码单元m的CPB移除时间,解码单元被立即解码。
[0234] 如上文所示,在此公开的系统和方法提供修改携带基于子图像的参数的图像时序SEI消息比特流的语法和语义。在一些配置中,在此公开的系统和方法可应用于HEVC规范。
[0235] 为了方便,以下给出可应用于在此公开的系统和方法的若干定义。随机访问点可以是数据流(例如比特流)中的任何点,其中,对比特流的解码不需要访问比特流中的在该随机访问点之前的任何点以解码当前图像和按照输出顺序在所述当前图像之后的所有图像。
[0236] 缓冲期可被指定为按照解码顺序的在缓冲期SEI消息中的两个实例之间的一组访问单元。补充增强信息(SEI)可包含不需要对来自VCL NAL单元的编码图像的采样进行解码的信息。SEI消息可帮助与解码、显示或其它目的相关的处理。一致性解码器可不需要按照与HEVC规范(例如HEVC规范(JCTVC-I1003)的附录C包括关于一致性的规范)一致的输出顺序处理该信息。一些SEI消息信息可用于检查比特流一致性并用于输出时序解码器一致性。
[0237] 缓冲期SEI消息可以是与缓冲期相关的SEI消息。图像时序SEI消息可以是与CPB移除时序相关的SEI消息。这些消息可以定义用于定义比特流到达时序和编码图像移除时序的语法和语义。
[0238] 编码图像缓冲区(CPB)可以是包含按照假想参考解码器(HRD)中规定的解码顺序的访问单元的先进先出缓冲区。访问单元可以是按照解码顺序连续的一组的网络访问层(NAL)单元并包含恰好一个编码图像。除了编码图像的编码条带NAL单元之外,访问单元还可以包含不包含编码图像的条带的其它NAL单元。对访问单元的解码总是产生解码图像。NAL单元可以是包括表明所跟随的数据的类型的指示和包含按原始字节序列净荷的形式的数据的字节(根据需要点缀有防竞争字节)的语法结构。
[0239] 如这里所使用的,术语“公共”一般表示可应用于多于一个对象的语法元素或变量。例如,在图像时序SEI消息中的语法元素的情境下,术语“公共”可表示语法元素(例如common_du_cpb_removal_delay)可应用于与图像时序SEI消息相关联的访问单元中的所有解码单元。此外,以“n”和“m”描述的数据单元一般分别表示访问单元和解码单元。
[0240] 现在参照附图描述各种配置,其中,相似标号可指示功能相似的元素。在这里的附图中一般描述和示出的系统和方法可被布置和设计成各种不同的配置。因此,在下文的附图中表示的若干配置的更详细的描述不意在限制要求保护的范围,而仅仅是代表性的系统和方法。
[0241] 图1A是示出可以实施用于发送消息和缓冲比特流的系统和方法的一个或多个电子设备102的示例的框图。在该示例中,示出电子设备A 102a和电子设备B 102b。然而,应当指出的是,在一些配置中,相对于电子设备A 102a和电子设备B 102b描述的的特征和功能的一个或多个可被组合在单个电子设备中。
[0242] 电子设备A 102a包括编码器104。编码器104包括消息产生模块108。包括在电子设备A 102a中的每个元件(例如,编码器104和消息产生模块108)可被实施为硬件、软件或两者的组合。
[0243] 电子设备A 102a可以获得一个或多个输入图像106。在一些配置中,可以使用图像传感器在电子设备A 102a上捕捉输入图像106,可以从存储器检索输入图像106和/或可以从另一电子设备接收输入图像106。
[0244] 编码器104可以编码输入图像106以产生编码数据。例如,编码器104可编码一系列输入图像106(例如,视频)。在一种配置中,编码器104可以是HEVC编码器。经编码的数据可以是数字数据(例如,比特流114的一部分)。编码器104可以产生基于输入信号的开销信令。
[0245] 消息产生模块108可以产生一个或多个消息。例如,消息产生模块108可产生一个或多个SEI消息或其它消息。对于支持在子图像级别操作的CPB,电子设备102可以发送子图像参数(例如,CPB移除延迟参数)。具体地,电子设备102(例如,编码器104)可确定在图像时序SEI消息中是否包括公共解码单元CPB移除延迟参数。例如,当编码器104将公共解码单元CPB移除延迟参数(例如,common_du_cpb_removal_delay)包括在图像时序SEI消息中时,电子设备可以将标志(例如,common_du_cpb_removal_delay_flag)设置为一。当公共解码单元CPB移除延迟参数被包括时,电子设备可以产生可应用于访问单元中的所有解码单元的公共解码单元CPB移除延迟参数。换句话说,一个公共参数可应用于图像时序SEI消息所关联的访问单元中的所有解码单元,而不是针对访问单元中的每个解码单元分别包括解码单元CPB移除延迟参数。
[0246] 相反,当公共解码单元CPB移除延迟参数不被包括在图像时序SEI消息中时,电子设备102可针对与图像时序SEI消息关联的访问单元中的每个解码单元产生单独的解码单元CPB移除延迟。消息产生模块108可执行结合以下的图2和图3所描述的一个或多个处理。
[0247] 在一些配置中,电子设备A 102a可将该消息作为比特流114的一部分发送到电子设备B 102b。在一些配置中,电子设备A 102a可以通过单独的传输110将消息发送给电子设备B 102b。例如,单独的传输可以不是比特流114的一部分。例如,可以使用一些带外机制来发送图像时序SEI消息或其它消息。应当指出的是,在一些配置中,其它消息可以包括上述图像时序SEI消息的一个或多个特征。此外,在一个或多个方面,其它消息可类似地用于上述SEI消息。
[0248] 编码器104(和例如消息产生模块108)可产生比特流114。比特流114可以包括基于输入图像106的编码图像数据。在一些配置中,比特流114还可以包括开销数据,诸如图像时序SEI消息或其它消息、条带头,PPS等。当附加输入图像106被编码时,比特流114可包括一个或多个编码图像。例如,比特流114可包括与开销数据(例如,图像时序SEI消息或其它消息)对应的一个或多个编码图像。
[0249] 比特流114可被提供给解码器112。在一个示例中,可使用有线或无线链路将比特流114发送到电子设备B 102b。在一些情况下,这可以通过网络(诸如互联网或局域网(LAN))完成。如图1A所示,解码器112可以实施在电子设备B 102b上,并与电子设备A 102a上的编码器104分离。但是,应该指出的是,在一些配置中,编码器104和解码器112可实施在同一电子设备上。例如,在编码器104和解码器112实施在同一电子设备上的实施方式中,比特流114可以通过总线被提供到解码器112或存储在存储器中以被解码器112检索。
[0250] 解码器112可以实施在硬件、软件或两者的组合中。在一种配置中,解码器112可以是HEVC解码器。解码器112可以接收(例如,获得)比特流114。解码器112可基于比特流114产生一个或多个解码图像118。解码图像118可被显示、回放、存储在存储器和/或传输到另一个设备等。
[0251] 解码器112可包括CPB 120。CPB 120可以临时存储编码图像。CPB 120可以使用在图像时序SEI消息中发现的参数来确定何时移除数据。当CPB 120支持在子图像级别的操作时,一次可移除单个解码单元而不是整个访问单元。解码器112可以包括解码图像缓冲区(DPB)122。每个解码图像被置于DPB 122中,以被解码处理参考并用于输出和剪切。在稍后的DPB输出时间或不再需要被用于帧间预测参考时,从DPB移除解码图像。
[0252] 解码器112可以接收消息(例如,图像时序SEI消息或其它消息)。解码器112还可以确定接收到的消息是否包括公共解码单元CPB移除延迟参数(例如,common_du_cpb_removal_delay)。这可以包括识别在公共参数存在于图像时序SEI消息中时被设置的标志(例如,common_du_cpb_removal_delay_flag)。如果公共参数存在,则解码器112可确定公共解码单元CPB移除延迟参数可适用于访问单元中的所有解码单元。如果公共参数不存在,则解码器112可确定用于访问单元中的每个解码单元的单独的解码单元CPB移除延迟参数。解码器112还可以使用公共解码单元CPB移除延迟参数或单独的解码单元CPB移除延迟参数来从CPB 120移除解码单元。CPB 120可以执行以下结合图4和图5所描述的一个或多个处理。
[0253] 上述HRD可以是图1A中所示的解码器112的一个示例。因此,在一些配置中,电子设备102可以根据上述HRD和CPB 120和DPB 122来操作。
[0254] 应当指出的是,包括在电子设备102中的元件或部件的一个或多个可以实施在硬件中。例如,其元件或部分的一个或多个可被实施为芯片、电路或硬件组件等。还应当指出的是,在此描述的功能或方法的一个或多个可以实施在硬件中和/或使用硬件来执行。例如,在此描述的方法的一个或多个可以实施在芯片组、专用集成电路(ASIC)、大规模集成电路(LSI)或集成电路等中和/或使用芯片组、专用集成电路(ASIC)、大规模集成电路(LSI)或集成电路等来实现。
[0255] 图1B是示出编码器1908和解码器1972的另一个示例的框图。在该示例中,示出了电子设备A 1902和电子设备B 1970。但是,应该指出的是,在一些配置中,关于电子设备A 1902和电子设备B 1970描述的特征和功能可被组合在单个电子设备中。
[0256] 电子设备A 1902包括编码器1908。编码器1908可以包括基础层编码器1910和增强层编码器1920。视频编码器1908适用于稍后描述的可缩放视频编码和多视图视频编码。编码器1908可被实施在硬件、软件或两者的组合中。在一种配置中,编码器1908可以是一个高效视频编码(HEVC)编码器,包括可缩放视图和/或多视图。同样可使用其它编码器。电子设备A 1902可获得源1906。在一些配置中,可以在电子设备A 1902上使用图像传感器捕获源1906、从存储器检索源1906或从另一电子设备接收源1906。
[0257] 编码器1908可以对源1906进行编码,以产生基础层比特流1934和增强层比特流1936。例如,编码器1908可以编码源1906中的一系列图像(例如,视频)。具体地,对于针对SNR可缩放性(还被已知为质量可缩放性)的可缩放视频编码,相同的源1906可被提供给基础层编码器和增强层编码器。具体地,对于针对空间可缩放性的可缩放视频编码,下采样源可被用于基础层编码器。具体地,对于多视图编码,不同的视图源可被用于基础层编码器和增强层编码器。编码器1908可与稍后结合图6B描述的编码器1782类似。
[0258] 比特流1934、1936可包括基于源1906的编码图像数据。在一些配置中,比特流1934、1936还可包括开销数据,诸如条带头信息、PPS信息等。当源1906中的附加图像被编码时,比特流1934、1936可以包括一个或多个编码图像。
[0259] 比特流1934、1936可被提供给解码器1972。解码器1972可以包括基础层解码器1980和增强层解码器1990。视频解码器1972适合于可缩放视频解码和多视图视频解码。在一个示例中,可以使用有线或无线链路将比特流1934、1936发送到电子设备B 1970。在一些情况下,这可以通过网络(诸如因特网或局域网(LAN))完成。如图1B所示,解码器1972可被实施在电子设备B 1970上,并与电子设备A 1902的编码器1908分离。但是,应该指出的是,在一些配置中,编码器1908和解码器1972可以实施在同一电子设备上。例如,在编码器1908和解码器1972实施在同一电子设备上的实施方式中,比特流1934、1936可以通过总线被提供给解码器1972,或存储在存储器中以被解码器1972检索。解码器1972可以提供解码的基础层1992和解码的增强层图像1994作为输出。
[0260] 解码器1972可实施在硬件、软件或两者的组合中。在一种配置中,解码器1972可以是高效视频编码(HEVC)解码器,包括可缩放和/或多视图。可以同样使用其它解码器。解码器1972可以与稍后结合图7B描述的解码器1812类似。另外,基础层编码器和/或增强层编码器可各自包括消息产生模块,诸如参照图1A的描述。另外,基础层解码器和/或增强层解码器可以包括一个编码图像缓冲区和/或解码图像缓冲区,诸如参照图1A的描述。此外,适当地,图1B的电子设备可以根据图1A的电子设备的功能来操作。
[0261] 图2是示出用于发送消息的方法200的一种配置的流程图。方法200可通过编码器或它的子部分之一(例如,一个消息产生模块108)来执行104。编码器104可在202确定图像时序标志(例如,sub_pic_cpb_params_present_flag),其指示CPB 120是否支持子图像级别的操作。例如,当图像时序标志被设置为1时,CPB 120可在访问单元级别或子图像级别操作。应当指出的是,即使当图像时序标志被设置为1,也由解码器自身来确定实际上是否在子图像级别操作。
[0262] 编码器104还可以在204确定用于访问单元中的解码单元的一个或多个移除延迟。例如,编码器104可从CPB 120确定适用于访问单元中的所有解码单元的单个公共解码单元CPB移除延迟参数(例如,common_du_cpb_removal_delay)。备选地,编码器104可确定用于访问单元中的每个解码单元的单独的解码单元CPB移除延迟(例如,du_cpb_removal_delay[i])。
[0263] 编码器104还可以在206中确定一个或多个NAL参数,其指示访问点中的每个解码单元中的NAL以1为偏移的量。例如,编码器104可从CPB 120确定适用于访问单元中的所有解码单元的单个公共NAL参数(例如,common_num_nalus_in_du_minus1)。备选地,编码器104可确定用于访问单元中的每个解码单元的单独的解码单元CPB移除延迟(例如,num_nalus_in_du_minus1[i])。
[0264] 编码器104还可以在208发送图像时序SEI消息,其包括图像时序标志、移除延迟和NAL参数。图像时序SEI消息还可以包括其它参数(例如,cpb_removal_delay、dpb_output_delay等)。例如,电子设备102可以经由无线传输、有线传输、设备总线、网络等中的一个或多个的发送消息。例如,电子设备A 102A可以将消息发送给电子设备B 102B。该消息可以例如是比特流114的一部分。在一些配置中,电子设备A 102a可在208以单独的传输110(即不是比特流114的一部分)将消息发送给电子设备B 102b。
[0265] 例如,可以使用一些外带外机制发送消息。在一些情况下,可以以与图像时序SEI消息不同的SEI消息发送用204、206指示的信息。在另一种情况下,可以以一个参数集(例如视频参数集和/或序列参数集和/或图像参数集和/或适配参数集和/或条带头)发送用204、206指示的信息。
[0266] 图3是示出用于确定访问单元中的解码单元的一个或多个移除延迟的方法300的一种配置的流程图。换句话说,图3所示的方法300可以进一步示出图2所示的方法200的步骤204。方法300可以由编码器104来执行。编码器104可以在302确定是否包括公共解码单元CPB移除延迟参数(例如,common_du_cpb_removal_delay)。
[0267] 这可以包括确定公共解码单元CPB移除延迟标志(例如,common_du_cpb_removal_delay_flag)是否被设置。在解码单元从CPB以规则间隔移除的情况下,编码器104可以发送该公共参数。这可能是这种情况,例如,当每个解码单元对应于图像的特定行数或具有一些其它规则结构。
[0268] 例如,当公共解码单元CPB移除延迟参数将被包括在图像时序SEI消息中时,公共解码单元CPB移除延迟标志可被设置为1;当公共解码单元CPB移除延迟参数不被包括在图像时序SEI消息中时,公共解码单元CPB移除延迟标志可被设置为0。如果是(例如,标志被设置为1),则编码器104可在304确定适用于访问单元中的所有解码单元的公共解码单元CPB移除延迟参数(例如,common_du_cpb_removal_delay)。如果不是(例如,标志被设置为0),则编码器104可在306确定用于访问单元中的每个解码单元的单独的解码单元CPB移除延迟参数(例如,du_cpb_removal_delay[i])。
[0269] 如果公共解码单元CPB移除延迟参数存在于图像时序SEI消息中,则其可指定:在与图像时序SEI消息相关联的访问单元中,在从CPB移除前一解码单元之后到从CPB移除当前解码单元之前要等待的子图像时钟周期的量。
[0270] 例如,当解码单元是访问单元中的第一解码单元时,公共解码单元CPB 120移除延迟参数可指定:在从CPB移除与前一访问单元中的最近的缓冲期SEI消息相关联的访问单元中的最后的解码单元之后,到从CPB移除与图像时序SEI消息相关联的访问单元中的第一解码单元之前,所要等待的子图像时钟周期的量。
[0271] 当解码单元是访问单元中的非第一解码单元时,公共解码单元CPB移除延迟参数可指定:在从CPB移除与图像时序SEI消息相关联的访问单元中的前一解码单元之后,到从CPB移除与图像时序SEI消息相关联的访问单元中的当前解码单元之前,所要等待的子图像时钟周期的量。
[0272] 相反,当公共解码单元CPB移除延迟参数(例如,common_du_cpb_removal_delay)不存在于图像时序SEI消息中时,针对访问单元中的每个解码单元可在图像时序SEI消息中包括单独的解码单元CPB移除延迟参数(例如,du_cpb_removal_delay[i])。解码单元CPB移除延迟参数可指定:在从CPB 120移除最后的解码单元之后到从与CPB 120移除与图像时序SEI消息相关联的访问单元中的第i个解码单元之前,所要等待的子图像时钟周期的量。解码单元CPB移除延迟参数可根据模数2(cpb_removal_delay_length_minus1+1)计数器的余数来计算,其中,cpb_removal_delay_length_minus1+1是公共解码单元CPB移除延迟参数的长度。
[0273] 图4是示出用于缓冲比特流的方法400的一种配置的流程图。该方法400可以由可在402接收消息(例如,图像时序SEI消息或其它消息)的电子设备102(例如,电子设备B 102b)中的解码器112来执行。例如,电子设备102可以在402经由无线传输、有线传输、设备总线、网络等中一个或多个接收消息。例如,电子设备B 102B可在402接收来自电子设备A 
102A的消息。该消息可以例如是比特流114的一部分。在另一示例中,电子设备B 102b可以以单独的传输110(例如不是比特流114的一部分)接收来自电子设备A 102a的信息。例如,可以使用一些带外机制接收图像时序SEI消息。在一些配置中,该消息可以包括一个或多个图像时序的标志、针对访问单元中的解码单元的一个或多个移除延迟和一个或多个NAL参数。因此,在402接收该消息可以包括接收一个或多个图像时序标志、针对访问单元中的解码单元的一个或多个移除延迟和一个或多个NAL参数。
[0274] 解码器112可在404确定CPB120在访问单元级别操作还是在子图像级别操作。例如,如果要实现低延迟,则解码器112可确定基于子图像操作。或者,该确定可以基于解码器112是否具有足够的资源来支持基于子图像的操作。如果CPB 120在子图像级别操作,则解码器可在406确定用于访问单元中的解码单元的一个或多个移除延迟。例如,解码器112可确定适用于访问单元中的所有解码单元的单个公共解码单元CPB移除延迟参数(例如,common_du_cpb_removal_delay)。备选地,解码器112可确定用于访问单元中的每个解码单元的单独的解码单元CPB移除延迟(例如,du_cpb_removal_delay[i])。换句话说,图像时序SEI消息可以包括适用于访问单元中的所有解码单元的公共参数或用于每个解码单元的单独的参数。
[0275] 解码器112还可以在408使用适用于访问单元中的所有解码单元的公共参数或针对每个解码单元的单独的参数,基于针对解码单元的移除延迟移除解码单元。解码器112还可以在410对解码单元进行解码。
[0276] 在确定从各个由信号通知的参数确定的移除时间时,解码器112可使用变量ClockDiff。具体地,ClockDiff可以根据ClockDiff=(num_units_in_tick-(num_units_in_sub_tick*(num_decoding_units_minus1+1))/time_scale)来确定,其中,num_units_in_tick是在频率time_scale Hz操作的时钟的与时钟周期计数器的一个增量对应的时间单位的数量,num_units_in_sub_tick是在频率time_scale Hz操作的时钟的与子图像时钟周期计数器的一个增量对应的时间单位的数量,num_decoding_units_minus1+1是访问单元中的解码单元的量,time_scale是在一秒内经过的时间单位的数量。
[0277] 当低延迟假想参考解码器(HRD)标志(例如,low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1,CPB在子图像级别操作并且ClockDiff大于零时,针对解码单元m的移除时间tr(m)根据下式确定:tr(m)=tr,n(m)+tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)+ClockDiff,其中,tr,n(m)是解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数并且taf(m)是解码单元m的最终到达时间。
[0278] 当低延迟假想参考解码器(HRD)标志(例如,low_delay_hrd_flag)被设置为1,tr,n(n)<taf(n),图像时序标志被设置为1,CPB在访问单元级别操作并且ClockDiff大于零时,针对访问单元n的移除时间tr(n)根据下式确定:tr(n)=tr,n(n)+tc*Ceil((taf(n)-tr,n(n))/tc)-ClockDiff,其中,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,Ceil()是向上取整函数并且taf(n)是访问单元n的最终到达时间。
[0279] 当低延迟假想参考解码器(HRD)标志(例如,low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1并且CPB操作在子图像级别时,针对解码单元m的移除时间tr(m)根据下式确定:tr(m)=tr,n(m)+max((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),(tc*Ceil((taf(n)-tr,n(n))/tc))),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期并且taf(n)是访问单元n的最终到达时间。
[0280] 当低延迟假想参考解码器(HRD)标志被设置为1,tr,n(n)<taf(n),图像时序标志被设置为1并且CPB操作在访问单元级别时,针对访问单元n的移除时间tr(n)根据下式确定:tr(n)=tr,n(n)+max((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),(tc*Ceil((taf(n)-tr,n(n))/tc))),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期并且taf(n)是访问单元n的最终到达时间。
[0281] 当低延迟假想参考解码器(HRD)标志(例如,low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1并且CPB操作在子图像级别时,针对访问单元的最后的解码单元m的移除时间tr(m)根据下式确定:tr(m)=tr,n(m)+min((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub),(tc*Ceil((taf(n)-tr,n(n))/tc)),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期并且taf(n)是访问单元n的最终到达时间。
[0282] 当低延迟假想参考解码器(HRD)标志被设置为1,tr,n(n)<taf(n),图像时序标志被设置为1并且CPB操作在访问单元级别时,针对访问单元n的移除时间tr(n)根据下式确定:tr(n)=tr,n(n)+min((tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),(tc*Ceil((taf(n)-tr,n(n))/tc))),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期并且taf(n)是访问单元n的最终到达时间。
[0283] 当低延迟假想参考解码器(HRD)标志(例如,low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1并且CPB操作在子图像级别时,针对最后的解码单元m的移除时间tr(m)根据下式确定:tr(m)=tr,n(m)+(tc*Ceil((taf(n)-tr,n(n))/tc)),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期并且taf(n)是访问单元n的最终到达时间。
[0284] 当低延迟假想参考解码器(HRD)标志被设置为1,tr,n(n)<taf(n),图像时序标志被设置为1并且CPB操作在访问单元级别时,针对访问单元n的移除时间tr(n)根据下式确定:tr(n)according to:tr(n)=tr,n(n)+(tc*Ceil((taf(n)-tr,n(n))/tc)),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期并且taf(n)是访问单元n的最终到达时间。
[0285] 当低延迟假想参考解码器(HRD)标志(例如,low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1并且CPB操作在子图像级别时,针对不是访问单元的最后的解码单元的解码单元的移除时间被设置为tr(m)=taf(m),其中,taf(m)是解码单元m的最终到达时间。并且针对访问单元的最后的解码单元m的移除时间tr(m)根据下式确定:tr(m)=tr,n(m)+(tc_sub*Ceil((taf(m)-tr,n(m))/tc_sub)),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间,taf(m)是访问单元n中的最后的解码单元的最终到达时间。
[0286] 当低延迟假想参考解码器(HRD)标志(例如,low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1并且CPB操作在子图像级别时,针对不是访问单元的最后的解码单元的解码单元的移除时间被设置为tr(m)=taf(m),其中,taf(m)是解码单元m的最终到达时间。并且针对访问单元的最后的解码单元m的移除时间tr(m)根据下式确定:tr(m)=tr,n(m)+(tc*Ceil((taf(m)-tr,n(m))/tc)),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间,taf(m)是访问单元n中的最后的解码单元的最终到达时间。
[0287] 当低延迟假想参考解码器(HRD)标志(例如,low_delay_hrd_flag)被设置为1,tr,n(m)<taf(m),图像时序标志被设置为1并且CPB操作在子图像级别时,针对解码单元的移除时间被设置为tr(m)=taf(m),其中,tr,n(m)是解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间,taf(m)是访问单元n中的解码单元m的最终到达时间。
[0288] 当低延迟假想参考解码器(HRD)标志被设置为1,tr,n(n)<taf(n),图像时序标志被设置为1并且CPB操作在访问单元级别时,针对访问单元n的移除时间tr(n)根据:tr(n)=taf(n),其中,tr,n(m)是最后的解码单元m的额定移除时间,tc_sub是子图像时钟周期,Ceil()是向上取整函数,taf(m)是最后的解码单元m的最终到达时间,tr,n(n)是访问单元n的额定移除时间,tc是时钟周期,taf(n)是访问单元n的最终到达时间。
[0289] 如果CPB操作在访问单元级别,则解码器112可在412确定CPB移除延迟参数。这可以包括在接收到的图像时序SEI消息(例如,cpb_removal_delay)中。解码器112还可在414基于CPB移除延迟参数移除访问单元并在416解码访问单元。换句话说,解码器112可一次解码整个访问单元(而不是访问单元中的解码单元)。
[0290] 图5是示出用于确定用于访问单元中的解码单元的一个或多个移除延迟的方法500的一种配置的流程图。换句话说,图5所示的方法500可进一步说明图4所示的方法400的步骤406。方法500可以由解码器112来执行。解码器112可在502确定接收到的图像时序SEI消息是否包括公共解码单元CPB移除延迟参数。这可以包括确定公共解码单元CPB移除延迟标志(例如,common_du_cpb_removal_delay_flag)是否被设置。如果是,则解码器112可在
504确定适用于访问单元中的所有解码单元的公共解码单元CPB移除延迟参数(例如,common_du_cpb_removal_delay)。如果不是,则解码器112可以在506确定用于访问单元中的每个解码单元的单独的解码单元CPB移除延迟参数(例如,du_cpb_removal_delay[i])。
[0291] 除了修改图像时序SEI消息语义之外,本系统和方法还可施加比特流约束,使得基于子图像的CPB操作和基于访问单元的CPB操作的操作导致解码单元移除的相同时序。具体地,当图像时序标志(例如,sub_pic_cpb_params_present_flag)被设置为1时,CPB移除延迟可以根据下式设置:
[0292] [数学式6]
[0293]
[0294] 其中,du_cpb_removal_delay[i]是解码单元CPB移除延迟参数,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量,并且i是索引。
[0295] 备选地,CPB移除延迟可被设置为如下描述:使变量Tdu(k)被定义为:
[0296] [数学式7]
[0297]
[0298] 其中,du_cpb_removal_delay_minus1k[i]和num_decoding_units_minus1k是针对第k个访问单元的第i个解码单元的参数(对于初始化HRD的访问单元而言k=0并且对于k<1而言Tdu(k)=0),并且其中,du_cpb_removal_delay_minus1k[i]+1=du_cpb_removal_delay_minus1k[i]是第k个访问单元的第i个解码单元的解码单元CPB移除延迟参数,num_decoding_units_minus1k是第k个访问单元中的解码单元的数量,tc是时钟周期,tc,sub是子图像时钟周期,i和k是指数。然后,当图像时序标志(例如,sub_pic_cpb_params_present_flag)被设置为1时,以下条件应为真:
[0299] (au_cpb_removal_delay_minus1+1)*tc==Tdu(k),其中,(au_cpb_removal_delay_minus1+1)=cpb_removal_delay(CPB移除延迟)。因此在此情况下,CPB移除延迟(au_cpb_removal_delay_minus1+1)被设置为使得基于子图像的CPB操作和基于访问单元的CPB操作的操作导致访问单元移除和访问单元的最后的解码单元移除的相同时序。
[0300] 备选地,CPB移除延迟可根据下式设置:
[0301] [数学式8]
[0302]
[0303] 其中,du_cpb_removal_delay[i]是解码单元CPB移除延迟参数,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量,并且i是索引。
[0304] 备选地,cpb_removal_delay和du_cpb_removal_delay[num_decoding_units_minus1]可根据下式设置:cpb_removal_delay*tc=du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub,其中,du_cpb_removal_delay[num_decoding_units_minus1]是针对第num_decoding_units_minus1个解码单元的解码单元CPB移除延迟参数,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量。
[0305] 除了修改图像时序SEI消息语义之外,本系统和方法还可施加比特流约束,使得基于子图像的CPB操作和基于访问单元的CPB操作的操作导致解码单元移除的相同时序。具体地,当图像时序标志(例如,sub_pic_cpb_params_present_flag)被设置为1时,针对cpb_removal_delay和du_cpb_removal_delay[num_decoding_units_minus1]的值可被设置为满足:-1<=(cpb_removal_delay*tc-du_cpb_removal_delay[num_decoding_units_minus1]*tc,sub)<=1,其中,du_cpb_removal_delay[num_decoding_units_minus1]是针对第num_decoding_units_minus1个解码单元的解码单元CPB移除延迟参数,tc是时钟周期,tc,sub是子图像时钟周期,num_decoding_units_minus1是访问单元中的解码单元的量偏移1后的量。
[0306] 图6A是示出电子设备602上的编码器604的一种配置的框图。应当指出的是,被示出为包括在电子设备602内的元件的一个或多个可以实施在硬件、软件或两者的组合中。例如,电子设备602包括编码器604,其可以实施在硬件、软件或两者的组合中。例如,编码器604可被实现为电路、集成电路、专用集成电路(ASIC)、与具有可执行指令的存储器进行电通信的处理器、固件、现场可编程门阵列(FPGA)等或它们的组合。在一些配置中,编码器604可以是HEVC编码器。
[0307] 电子设备602可以包括源622。源622可以提供图像或图像数据(例如,视频)作为到编码器604的一个或多个输入图像606。源622的示例可包括图像传感器、存储器、通信接口、网络接口、无线接收器、端口等。
[0308] 一个或多个输入图像606可被提供给帧内预测模块和重建缓冲区624。输入图像606还可被提供给运动估计和运动补偿模块646和减法模块628。
[0309] 帧内预测模块和重建缓冲区624可以基于一个或多个输入图像606和重建数据660产生帧内模式信息640和帧内信号626。运动估计和运动补偿模块646可以基于一个或多个输入图像606和来自解码图像缓冲区676的参考图像678产生帧间模式信息648和帧间信号644。在一些配置中,解码图像缓冲区676可以包括来自解码图像缓冲区676中的一个或多个参考图像的数据。
[0310] 编码器604可以根据模式在帧内信号626和帧间信号644之间进行选择。帧内信号626可被用于发挥帧内编码模式下的图像内的空间特性。帧间信号644可被用于发挥帧间编码模式下的图像之间的时间特性。在帧内编码模式下,帧内信号626可被提供给减法模块
628,并且帧内模式信息640可被提供给熵编码模块642。在帧间编码模式下,帧间信号644可被提供给减法模块628,并且帧间模式信息648可被提供给熵编码模块642。
[0311] 在减法模块628中从输入图像606减去帧内信号626或帧间信号644(取决于模式),以产生预测残差630。预测残差630被提供给变换模块632。变化模块632可以压缩预测残差630以产生被提供给量化模块636的变换后的信号634。量化模块636对变换后的信号634进行量化,以产生变换和量化后的系数(TQC)638。
[0312] TQC 638被提供给熵编码模块642和逆量化模块650。逆量化模块650对TQC 638执行逆量化,以产生被提供到逆变换模块654的逆量化信号652。逆变换模块654解压缩逆量化信号652,以产生被提供给重建模块658的解压缩信号656。
[0313] 重建模块658可基于解压缩信号656产生重建数据660。例如,重建模块658可以重建(修改后的)的图像。重建数据660可被提供给去块(deblocking)滤波器662并被提供给帧内预测模块和重建缓冲区624。去块滤波器662可基于重建数据660产生滤波信号664。
[0314] 滤波信号664可被提供给采样自适应偏移(SAO)模块666。SAO模块666可以产生被提供给熵编码模块642的SAO信号670和被提供给自适应环路滤波器(ALF)672的SAO信息668。ALF 672产生被提供给解码图像缓冲区676的ALF信号674。ALF信号674可以包括来自可被用作参考图像的一个或多个图像的数据。
[0315] 熵编码模块642可对TQC 638编码以产生比特流A614a(例如,编码图像数据)。例如,熵编码模块642可以使用上下文自适应可变长度编码(CAVLC)或上下文自适应二进制算术编码(CABAC)对TQC 638编码。具体地,熵编码模块642可以基于帧内模式信息640、帧间模式信息648和SAO信息668中的一个或多个对TQC 638编码。比特流A614a(例如,编码图像数据)可被提供给消息产生模块608。消息产生模块608可以与结合图1所描述的消息产生模块108类似地配置。另外或备选地,消息产生模块608可以执行结合图2和图3所描述的一个或多个处理。
[0316] 例如,消息产生模块608可以产生包括子图像参数的消息(例如,图像时序SEI消息或其它消息)。子图像参数可以包括针对解码单元的一个或多个移除延迟(例如,common_du_cpb_removal_delay ordu_cpb_removal_delay[i])和一个或多个NAL参数(例如,common_num_nalus_in_du_minus1 or num_nalus_in_du_minus1[i])。在一些配置中,可将消息插入到比特流A 614a中以产生比特流B 614b。因此,例如,可以在产生了整个比特流A 614a之后(例如,在产生了大部分的比特流B 614b之后)产生消息。在其它配置中,可不将消息插入比特流A 614a(在这种情况下比特流B 614b上与比特流A 614A相同),而是可以以单独的传输610来提供消息。
[0317] 在一些配置中,电子设备602将比特流614发送到另一电子设备。例如,比特流614可被提供给通信接口、网络接口、无线发射机、端口等。例如,比特流614可经由局域网、因特网、蜂窝电话的基站等被发送到另一个电子设备。比特流614可以附加地或备选地存储在存储器或电子设备602的其它部件上。
[0318] 图6B是示出电子设备1702上的视频编码器1782的一种配置的框图。视频编码器1782可以包括增强层编码器1706、基础层编码器1709,分辨率倍增块1770和输出接口1780。
如这里的描述,图6B的视频编码器例如适合用于可缩放视频编码和多视图视频编码。
[0319] 增强层编码器1706可包括接收输入图像1704的视频输入1781。视频输入1781的输出可被提供给接收预测选择1750的输出的加法/减法器1783。加法/减法器1783的输出可被提供给变换和量化块1752。变换和量化块1752的输出可被提供给熵编码1748块以及缩放和逆变换块1772。在熵编码1748被执行之后,熵编码块1748的输出可被提供给输出接口1780。输出接口1780可输出编码的基础层视频比特流1707和编码的增强层视频比特流1710两者。
[0320] 缩放和逆变换块1772的输出可被提供给加法器1779。加法器1779还可以接收预测选择1750的输出。加法器1779的输出可被提供给去块块1751。去块块1751的输出可被提供给参考缓冲区1794。参考缓冲区1794的输出可被提供给运动补偿块1754。运动补偿块1754的输出可被提供给预测选择1750。参考缓冲区1794的输出还可被提供给帧内预测器1756。帧内预测器1756的输出可被提供给预测选择1750。预测选择1750还可以接收分辨率倍增块
1770的输出。
[0321] 基础层编码器1709可包括视频输入1762,其接收下采样输入图像、或适合于与另一图像组合的其它图像内容、或者备选视图输入图像或相同的输入图像1703(即,与增强层编码器1706接收到的输入图像1704相同)。视频输入1762的输出可被提供给编码预测环路1764。熵编码1766可被设置在编码预测环路1764的输出。编码预测环路1764的输出还可被提供到参考缓冲区1768。参考缓冲区1768可以将反馈提供给编码预测环路1764。参考缓冲区1768的输出还可被提供给分辨率倍增块1770。一旦熵编码1766被执行,输出可被提供给输出接口1780。如果期望,编码的基础层视频比特流1707和/或编码的增强层视频比特流
1710可被提供给一个或多个消息产生模块。
[0322] 图7A是示出电子设备702上的解码器712的一种配置的框图。解码器712可被包括在电子设备702中。例如,解码器712可以是HEVC解码器。解码器712和被示出为包括在解码器712中的一个或多个元件可以实施在硬件、软件或两者的组合中。解码器712可接收比特流714(例如,一个或多个编码图像以及包括在比特流714中的开销数据)以进行解码。在一些配置中,接收的比特流714可以包括接收的开销数据,诸如消息(例如,图像时序SEI消息或其它消息)、片头、PPS等。在一些配置中,解码器712可以额外地接收单独的传输710。单独的传输710可包括消息(例如,图像时序SEI消息或其它消息)。例如,图像时序SEI消息或其它消息可以通过单独的传输710(而不是比特流714)被接收。但是,应该指出的是,单独的传输710可以是可选的,并且在一些配置中可以不被使用。
[0323] 解码器712包括CPB 720。CPB 720可以与以上结合图1描述的CPB120类似地配置。另外或备选地,解码器712可以执行结合图4和图5描述的一个或多个处理。例如,解码器712可以接收具有子图像参数的消息(例如,图像时序SEI消息或其它消息),并基于子图像参数移除和解码访问单元中的解码单元。应当指出的是,一个或多个访问单元可被包括在比特流中,并且可以包括编码图像数据和开销数据中的一个或多个。
[0324] 编码图像缓冲区(CPB)720可将编码图像数据给熵解码模块701。编码图像数据可被熵解码模块701解码,由此产生运动信息信号703以及量化、缩放和/或变换系数705。
[0325] 运动信息信号703可以在运动补偿模块780与来自解码图像缓冲区709的参考帧信号798的一部分组合,这样可以产生帧间预测信号782进行组合。量化、去缩放和/或变换系数705可被逆模块707逆量化、缩放和逆变换,由此产生解码残差信号784。解码残差信号784可被添加到预测信号792以产生组合信号786。预测信号792可以是从由运动补偿模块780产生的帧间预测信号782或由帧内预测模块788产生的帧内预测信号790中选择的信号。在一些配置中,这种信号选择可基于比特流714(例如,由比特流714控制)。
[0326] 可以从来自(例如当前帧中的)组合信号786的先前解码信息预测帧内预测信号790。还可通过去块过滤器794对组合信号786进行滤波。得到的滤波信号796可被写入解码图像缓冲区709。得到的滤波信号796可包括解码图像。解码图像缓冲区709可以提供可被输出718的解码图像。在一些情况下,709可以是视为帧存储器。
[0327] 图7B是示出电子设备1802上的视频解码器1812的一种配置的框图。视频解码器1812可以包括增强层解码器1815和基础层解码器1813。视频解码器812还可以包括接口
1889和分辨率倍增1870。如这里的描述,图7B的视频解码器例如适用于可缩放视频解码和多视图视频解码。
[0328] 接口1889可接收编码视频流1885。编码视频流1885可以包括基础层编码视频流和增强层视频编码流。这两个流可被分别或一起发送。接口1889可以将编码视频流1885的一些或全部提供给基础层解码器1813中的熵解码块1886。熵解码块1886的输出可以被提供给解码预测环路1887。解码预测环路1887的输出可以被提供给参考缓冲区1888。参考缓冲区可以将反馈提供给解码预测环路1887。参考缓冲区1888还可以输出解码的基础层视频流1884。
[0329] 接口1889还可以将编码视频流1885的一些或全部提供给增强层解码器1815中的熵解码块1890。熵解码块1890的输出可以被提供给逆量化块1891。逆量化块1891的输出可被提供给加法器1892。加法器1892可以将逆量化块1891的输出和预测选择块1895的输出相加。加法器1892的输出可以被提供给去块块1893。去块块1893的输出可以被提供给参考缓冲区1894。参考缓冲区1894可以输出解码的增强层视频流1882。参考缓冲区1894的输出还可以被提供给帧内预测器1897。增强层解码器1815可以包括运动补偿1896。可以在分辨率倍增1870之后执行运动补偿1896。预测选择块1895可接收帧内预测器1897的输出与运动补偿1896的输出。此外,如果期望,解码器可以包括一个或多个编码图像缓冲区,诸如与接口1889一起的编码图像缓冲区。
[0330] 图8示出可以在发送方电子设备802中利用的各种组件。可根据在图8所示的发送方电子设备802来实施电子设备102、602、702中的一个或多个。
[0331] 发送方电子设备802包括控制电子设备802的操作的处理器817。处理器817也可被称为CPU。可以包括只读存储器(ROM)、随机存储存储器(RAM)或可存储信息的任何类型的设备的存储器811将指令813a(例如,可执行指令)和数据815a提供到处理器817。存储器811的一部分还可以包括非易失性随机存取存储器(NVRAM)。存储器811可以与处理器817进行电通信。
[0332] 指令813b和数据815b还可以贮存在处理器817中。加载到处理器817中的指令813b和/或数据815b还可以包括来自存储器811的用于处理器817的执行或处理而加载的指令813a和/或数据815a。指令813b可以被处理器817执行以实现在此公开的系统和方法。例如,指令813b可被执行以执行上述方法200、300、400中的一个或多个。
[0333] 发送方电子设备802可以包括用于与其它电子设备(例如,接收方电子设备)进行通信的一个或多个通信接口819。通信接口819可以基于有线通信技术、无线通信技术或两者。通信接口819的示例包括串行端口、并行端口、通用串行总线(USB)、以太网适配器、IEEE1394总线接口、小型计算机系统接口(SCSI)总线接口、红外线(IR)通信端口、蓝牙无线通信适配器、根据第三代合作伙伴计划(3GPP)规定的无线收发器等。
[0334] 发送方电子设备802可以包括一个或多个输出设备823以及一个或多个输入设备821。输出设备823的示例包括扬声器、打印机等。可被包括在电子设备802中的一种类型的输出设备是显示设备825。利用在此公开的配置的显示设备825可使用任何合适的图像投影技术,诸如阴极射线管(CRT)、液晶显示器(LCD)、发光二极管(LED)、气体等离子、电致发光等。显示控制器827可以被提供用于将存储在存储器811中的数据转换成在显示器825上显示的文本、图形和/或运动图像(根据需要)。输入设备821的示例包括键盘、鼠标、麦克风、遥控设备、按钮、操纵杆、轨迹球、触摸板、触摸屏、光笔等。
[0335] 发送方电子设备802的各个组件通过总线系统829连接在一起,除了数据总线之外,总线系统829可以包括电源总线、控制信号总线和状态信号总线。然而,为了清楚,在图8中各种总线被示出为总线系统829。在图8所示的发送方电子设备802是功能框图而不是具体组件的列表。
[0336] 图9是示出可以在接收方电子设备902中利用的各种组件的框图。可以根据图9所示的接收方电子设备902来实施在此描述的电子设备102、602、702中的一个或多个。
[0337] 接收方电子设备902包括控制电子设备902的操作的处理器917。处理器917也可被称为CPU。可以包括只读存储器(ROM)、随机存储存储器(RAM)或可存储信息的任何类型的设备的存储器911将指令913a(例如,可执行指令)和数据915a提供到处理器917。存储器911的一部分还可以包括非易失性随机存取存储器(NVRAM)。存储器911可以与处理器917进行电通信。
[0338] 指令913b和数据915b还可以贮存在处理器917中。加载到处理器917中的指令913b和/或数据915b还可以包括来自存储器911的用于处理器917的执行或处理而加载的指令913a和/或数据915a。指令913b可以被处理器917执行以实现在此公开的系统和方法。例如,指令913b可被执行以执行上述方法200、300、400、500中的一个或多个。
[0339] 接收方电子设备902可以包括用于与其它电子设备(例如,接收方电子设备)进行通信的一个或多个通信接口919。通信接口919可以基于有线通信技术、无线通信技术或两者。通信接口919的示例包括串行端口、并行端口、通用串行总线(USB)、以太网适配器、IEEE 1394总线接口、小型计算机系统接口(SCSI)总线接口、红外线(IR)通信端口、蓝牙无线通信适配器、根据第三代合作伙伴计划(3GPP)规定的无线收发器等。
[0340] 接收方电子设备902可以包括一个或多个输出设备923以及一个或多个输入设备921。输出设备923的示例包括扬声器、打印机等。可被包括在电子设备902中的一种类型的输出设备是显示设备925。利用在此公开的配置的显示设备925可使用任何合适的图像投影技术,诸如阴极射线管(CRT)、液晶显示器(LCD)、发光二极管(LED)、气体等离子、电致发光等。显示控制器927可以被提供用于将存储在存储器911中的数据转换成在显示器925上显示的文本、图形和/或运动图像(根据需要)。输入设备921的示例包括键盘、鼠标、麦克风、遥控设备、按钮、操纵杆、轨迹球、触摸板、触摸屏、光笔等。
[0341] 接收方电子设备902的各个组件通过总线系统929连接在一起,除了数据总线之外,总线系统929可以包括电源总线、控制信号总线和状态信号总线。然而,为了清楚,在图9中各种总线被示出为总线系统929。在图9所示的接收方电子设备902是功能框图而不是具体组件的列表。
[0342] 图10是示出可实施用于发送消息的系统和方法的电子设备1002的一种配置的框图。电子设备1002包括编码装置1031和发送装置1033。编码装置1031和发送装置1033可以被配置为执行结合以上图1、图2、图3、图6和图8中的一个幅或多幅描述的一个或多个功能。例如,编码装置1031和发送设备1033可以产生比特流1014。以上图8示出了图10的具体装置结构的一个示例。其它各种结构可被实施以实现图1、图2、图3、图6和图8的一个或多个功能。例如,DSP可以由软件来实现。
[0343] 图11是示出可实施用于缓冲比特流1114的系统和方法的电子设备1102的一种配置的框图。电子设备1102包括接收装置1135和解码装置1137。接收装置1135和解码装置1137可以被配置为执行结合以上图1、图4、图5、图7和图8中的一个幅或多幅描述的一个或多个功能。例如,接收装置1135和解码装置1137可以产生比特流1114。以上图9示出了图11的具体装置结构的一个示例。其它各种结构可被实施以实现图1、图4、图5、图7和图8的一个或多个功能。例如,DSP可以由软件来实现。
[0344] 图12是示出用于解码图像缓冲区(DPB)的操作的方法1200的一种配置的流程图。方法1200可以由编码器104或其子部件之一(例如,解码图像缓冲区模块676)来执行。方法
1200可以由电子设备102(例如,电子设备B 102b)中的解码器112来执行。作为补偿或备选,方法1200可以由解码器712或其子部件之一(例如,解码图像缓冲区模块709)来执行。解码器可解析图像1202的第一条带头。当从CPB移除包含当前图像的访问单元的第一解码单元时,在解码当前图像之前(但是在解析当前图像的第一条带的条带头之后)立即发生从DPB输出和移除图像,并且后续操作如下所示。
[0345] -调用针对参考图像集(RPS)的解码处理。参考图像集是与图像相关联的参考图像的集合,包括按解码顺序在关联图像之前的可用于关联图像的帧间预测的所有参考图像、或者按解码顺序在关联图像之后的任何图像。
[0346] -视频的比特流可包括被置于逻辑数据包中的一般被称为网络抽象层(NAL)单元的语法结构。每个NAL单元包括NAL单元头(诸如两字节NAL单元头(例如16比特))以识别关联数据净荷的目的。例如,每个编码条带(和/或图像)可被编码进一个或多个条带(和/或图像)NAL单元。其它NAL单元可被包括用于其它种类的数据,诸如补充增强信息、时间子层访问(TSA)图像的编码条带、逐步时间子层访问(STSA)图像的编码条带、非TSA非STSA尾随图像的编码片、损坏链接访问图像的编码条带、瞬时解码刷新图像的编码条带、干净随机访问图像的编码条带、可解码前导图像的编码条带、用于标记丢弃图像的编码条带、视频参数集、序列参数集、图像参数集、访问单元定界符、序列的结束、比特流的结束、填充数据和/或序列增强信息消息。表(4)示出NAL单元代码和NAL单元类型类的一个示例。如果需要,可以包括其它NAL单元类型。还应该理解的是,表(4)中所示的NAL单元的NAL单元类型值可以被重新配置和重新分配。还可以添加额外的NAL单元类型。也可以移除一些NAL单元类型。
[0347] 帧内随机访问点(IRAP)图像是每个视频编码层NAL单元具有表(4)中所示的BLA_W_LP到RSV_IRAP_VCL23(含)范围中的nal_unit_type的编码图像。IRAP图像仅包含帧内编码(I)条带。瞬时解码刷新(IDR)图像是每个视频编码层NAL单元具有等于表(4)中所示的IDR_W_RADL或IDR_N_LP的nal_unit_type的IRAP图像。瞬时解码刷新(IDR)图像仅包含I条带,并且可以是比特流中的按照解码顺序的第一图像,或者可以稍迟地出现在比特流中。每个IDR图像是编码视频序列(CVS)中的按照解码顺序的第一图像。损坏链接访问(BLA)图像是每个视频编码层NAL单元具有等于表(4)中所示的BLA_W_LP、BLA_W_RADL或BLA_N_LP的nal_unit_type的IRAP图像。BLA图像仅包含I条带,并且可以是比特流中的按照解码顺序的第一图像,或者可以稍迟地出现在比特流中。每个BLA图像开始新的编码视频序列,并且具有与IDR图像的解码处理相同的效果。然而,BLA图像包括指定非空参考图像集的语法元素。
[0348] [表4]
[0349]
[0350]
[0351]
[0352] 表(4)
[0353] 参照表(5),NAL单元头语法可以包括两字节(即16比特)数据。第一比特是“forbidden_zero_bit”,其在NAL单元的开始始终被设置为零。接下来的6比特是“nal_unit_type”,其指定包含在表(4)中所示NAL单元的原始字节序列净荷(“RBSP”)数据结构的类型。接下来的6比特是“nuh_layer_id”,其指定层的标识符。在一些情况下,作为替代,这些6比特可以被指定为“nuh_reserved_zero_6bits”。nuh_reserved_zero_6bits可以在标准的基本规范中等于0。在可缩放视频编码和/或语法扩展中,nuh_layer_id可指定该特定NAL单元属于由这些6比特的值确定的层。接下来的语法元素是“nuh_temporal_id_plus1”。nuh_temporal_id_plus1减1可指定NAL单元的时间标识符。变量时间标识符TemporalId可以被指定为TemporalId=nuh_temporal_id_plus1-1。时间标识符TemporalId用于标识时间子层。变量HighestTid标识将被解码的最高时间子层。
[0354] [表5]
[0355]
[0356] 表(5)
[0357] 表(6)示出示例性序列参数集(SPS)的语法结构。
[0358] pic_width_in_luma_samples指定以亮度采样为单位的每个解码图像的宽度。pic_width_in_luma_samples不应等于0。
[0359] pic_height_in_luma_samples指定以亮度采样为单位的每个解码图像的高度。pic_height_in_luma_samples不应等于0。
[0360] sps_max_sub_layers_minus1加1指定可存在于参考SPS的每一个CVS中的时间子层的最大数量。sps_max_sub_layers_minus1的值应在0到6(含)范围内。
[0361] sps_sub_layer_ordering_info_present_flag标志等于1指定sps_max_dec_pic_buffering_minus1[i]、sps_max_num_reorder_pics[i]和sps_max_latency_increase_plus1[i]的语法元素存在用于sps_max_sub_layers_minus1+1个子层。sps_sub_layer_ordering_info_present_flag等于0指定sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1]、ps_max_num_reorder_pics[sps_max_sub_layers_minus1]和sps_max_latency_increase_plus1[sps_max_sub_layers_minus1]的值适用于所有子层。
[0362] sps_max_dec_pic_buffering_minus1[i]加1指定当HighestTid等于i时以图像存储缓冲区为单位的CVS的解码图像缓冲区的最大需要尺寸。sps_max_dec_pic_buffering_minus1[i]的值应在0到MaxDpbSize-1(含)的范围中,其中,MaxDpbSize指定以图像存储缓冲区为单位的最大解码图像缓冲区尺寸。当i大于0时,sps_max_dec_pic_buffering_minus1[i]应大于或等于sps_max_dec_pic_buffering_minus1[i-1]。当sps_max_dec_pic_buffering_minus1[i]针对在0到sps_max_sub_layers_minus1-1(含)范围中的i不存在时,由于sps_sub_layer_ordering_info_present_flag等于0,因此推断其等于sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1]。
[0363] sps_max_num_reorder_pics[i]表示当HighestTid等于i时,可以按照解码顺序在CVS中的任何图像之前并且按照输出顺序在该图像之后的图像的最大允许数量。sps_max_num_reorder_pics[i]的值应在0至sps_max_dec_pic_buffering_minus1[i](含)中。当i大于0时,sps_max_num_reorder_pics[i]应大于或等于sps_max_num_reorder_pics[i-1]。当sps_max_num_reorder_pics[i]针对在0到sps_max_sub_layers_minus1-1(含)范围中的i不存在时,由于sps_sub_layer_ordering_info_present_flag等于0,因此推断其等于sps_max_num_reorder_pics[sps_max_sub_layers_minus1]。
[0364] 不等于0的sps_max_latency_increase_plus1[i]被用于计算SpsMaxLatencyPictures[i]的值,其指定当HighestTid等于i时,可以按照输出顺序在CVS的任何图像之前并按照解码顺序在该图像之后的图像的最大数量。
[0365] 当sps_max_latency_increase_plus1[i]不等于0时,SpsMaxLatencyPictures[i]的值如下指定:
[0366] SpsMaxLatencyPictures[i]=sps_max_num_reorder_pics[i]+sps_max_latency_increase_plus1[i]-1。
[0367] 当sps_max_latency_increase_plus1[i]等于0时,没有相应的限制被表达。
[0368] sps_max_latency_increase_plus1[i]的值应在0至232-2(含)的范围中。当sps_max_latency_increase_plus1[i]针对在0到sps_max_sub_layers_minus1-1(含)范围中的i不存在时,由于sps_sub_layer_ordering_info_present_flag等于0,因此推断其等于sps_max_latency_increase_plus1[sps_max_sub_layers_minus1]。
[0369] [表6]
[0370]
[0371] 表(6)
[0372] 当当前图像是IRAP图像,出现以下情况:
[0373] -如果当前图像是IDR图像、BLA图像,比特流中按照解码顺序的第一图像、或按照解码顺序跟随序列NAL单元的结束的第一图像,则变量NoRaslOutputFlag被设置为等于1。
[0374] -否则,如果一些外部装置能够将变量HandleCraAsBlaFlag设置为针对当前图像的值,则变量HandleCraAsBlaFlag被设置为等于由外部装置提供的值,并且变量NoRaslOutputFlag被设置为等于HandleCraAsBlaFlag。
[0375] -否则,变量HandleCraAsBlaFlag被设置为等于0,并且变量NoRaslOutputFlag被设置为等于0。
[0376] 如果当前图像是NoRaslOutputFlag等于1且不是图像0的IRAP图像,则应用以下顺序步骤:
[0377] 1.变量NoOutputOfPriorPicsFlag针对被测解码器如下得到:
[0378] -如果当前图像是CRA图像,则NoOutputOfPriorPicsFlag被设置为等于1(无论no_output_of_prior_pics_flag的值如何)。
[0379] -否则,如果从激活SPS得到的pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值与从针对前一图像激活的SPS得到的各个pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值不同,则NoOutputOfPriorPicsFlag可以(但不应该)被被测解码器设置为1,无论no_output_of_prior_pics_flag的值如何。
[0380] -否则,NoOutputOfPriorPicsFlag被设置为等于no_output_of_prior_pics_flag。
[0381] 2.针对被测解码器得到的NoOutputOfPriorPicsFlag的值被如下应用于HRD:
[0382] -如果NoOutputOfPriorPicsFlag等于1,则DPB中的所有图像存储缓冲区被清空,而不输出它们包含的图像,并且DPB填充度被设置为等于0。
[0383] -否则(NoOutputOfPriorPicsFlag等于0),包含被标记为“不需要输出”和“未用于参考”的图像的所有图像存储缓冲区被清空(不输出),并且DPB中的所有非空图像存储缓冲区通过重复调用“弹出”处理1204被清空,并且DPB填充度被设置为等于0。
[0384] -否则(当前图像不是NoRaslOutputFlag等于1的IRAP图像),包含被标记为“不需要输出”和“未用于参考”的图像的所有图像存储缓冲区被清空(不输出)。对于被清空的每个图像存储缓冲区而言,DPB填充度以一为单位递减。当以下条件的一个或多个为真时,针对每个被清空的附加图像存储缓冲区,在进一步以一为单位递减DPB填充度的同时重复调用“弹出”处理1204,直到以下条件都不为真:
[0385] 1.DPB中被标记为“需要输出”的具有特定nuh_layer_id值的图像的数量大于来自激活序列参数集(当特定nuh_layer_id值等于0时)或来自针对该特定nuh_layer_id值的激活层序列参数集的sps_max_num_reorder_pics[HighestTid]。
[0386] 2.如果来自激活序列参数集(当特定nuh_layer_id值等于0时)或来自针对特定nuh_layer_id值的激活层序列参数集的sps_max_latency_increase_plus1[HighestTid]不等于0,并且在DPB中存在被标记为“需要输出”的具有特定nuh_layer_id值的至少一个图像,且针对所述至少一个图像,关联变量PicLatencyCount大于或等于针对特定nuh_layer_id值的SpsMaxLatencyPictures[HighestTid]。
[0387] 3.DPB中的具有特定nuh_layer_id值的图像的数量大于或等于来自激活序列参数集(当特定nuh_layer_id值等于0时)或来自针对特定nuh_layer_id值的激活层序列参数集的sps_max_dec_pic_buffering[HighestTid]+1。
[0388] 在包含当前图像的访问单元的最后一个解码单元从CPB移除时立即发生块1206中的图像解码处理(图像解码和标记)。
[0389] 对于DPB中的被标记为“需要输出”的nuh_layer_id值等于当前图像的nuh_layer_id值的的每个图像,关联变量PicLatencyCount被设置为等于PicLatencyCount+1。
[0390] 当前图像被认为在图像的最后解码单元被解码后被解码。当前解码图像存储在DPB中的空图像存储缓冲区中,并出现以下情况:
[0391] -如果当前解码图像具有等于1的PicOutputFlag,则其被标记为“需要输出”并且其关联变量PicLatencyCount被设置为等于0。
[0392] -否则(当前解码图像具有等于0的PicOutputFlag)时,其被标记为“不需要输出”。
[0393] 当前解码图像被标记为“用于短期参考”。
[0394] 当以下条件的一个或多个为真时,重复调用附加“弹出”处理1208,直到以下条件均不为真:
[0395] -在DPB中的被标记为“需要输出”的具有等于当前图像的nuh_layer_id值的nuh_layer_id值的图像的数量大于来自激活序列参数集(当当前图像的nuh_layer_id值等于0时)或者来自针对当前图像的nuh_layer_id值的激活层序列参数集的sps_max_num_reorder_pics[HighestTid]。
[0396] -来自激活序列参数集(当当前图像的nuh_layer_id值等于0时)或来自针对特定nuh_layer_id值的激活层序列参数集的sps_max_latency_increase_plus1[HighestTid]不等于0,并且在DPB中存在具有特定nuh_layer_id值的被标记为“需要输出”的至少一个图像:其中,关联变量PicLatencyCount大于或等于针对特定nuh_layer_id值的SpsMaxLatencyPictures[HighestTid]。
[0397] “弹出”处理1204和附加弹出处理1208在步骤方面是相同的,并包括以下顺序步骤:选择首先被输出的图像作为DPB中的被标记为“需要输出”的所有图像的图像顺序计数(PicOrderCntVal)的最小值。图像顺序计数是与每个图像相关联的变量,其唯一地标识CVS中的所有图像之中的关联图像,并且当关联图像将从解码图像缓冲区输出时,指示按照输出顺序的关联图像相对于将从解码图像缓冲区输出的同一CVS中的其它图像的输出顺序位置的位置。
[0398] -使用在针对nuh_layer_id等于0的图像的激活序列参数集中或在针对nuh_layer_id值等于该图像的nuh_layer_id值的激活层序列参数集中指定的一致性剪切窗口来剪切这些图像,以nuh_layer_id的升序输出剪切的图像,并且这些图像被标记为“不需要输出”。
[0399] -包含被标记为“未用于参考”的图像以及包括被剪切和输出的图像之一的每个图像存储缓冲区被清空。
[0400] 参照图13A,如前所述,NAL单元头语法可包括两字节(即16比特)数据。第一比特是“forbidden_zero_bit”,其在NAL单元的开始始终被设置为零。接下来的6比特是“nal_unit_type”,其指定包含在NAL单元中的原始字节序列净荷(“RBSP”)数据结构的类型。接下来的6比特是“nuh_reserved_zero_6bits”。nuh_reserved_zero_6bits可以在标准的基本规范中等于0。如果期望,可以指定nuh_reserved_zero_6bits的其它值。当基于标准的基本规定处理流时,解码器可忽略(即,从比特流移除并丢弃)nuh_reserved_zero_6bits不等于0的所有NAL单元。在可缩放或其它扩展中,nuh_reserved_zero_6bits可指定其它值以用信号通知可缩放视频编码和/或语法扩展。在一些情况下,语法元素nuh_reserved_zero_
6bits可被称为reserved_zero_6bits。在一些情况下,语法元素nuh_reserved_zero_6bits可被称为如图13B和图13C中所示的layer_id_plus1或layer_id。在该情况下,元素layer_id将是layer_id_plus1减1。在该情况下,其可用于用信号通知与可缩放编码视频的层相关的信息。接下来的语法元素是“nuh_temporal_id_plus1”。nuh_temporal_id_plus1减1可指定针对NAL单元的时间标识符。变量时间标识符TemporalId可被指定为TemporalId=nuh_temporal_id_plus1-1。
[0401] 参照图14,示出通用NAL单元语法结构。图13的NA1单元头的两字节语法包括在图14的对nal_unit_header()的参考中。NAL单元语法的剩余部分总体上涉及RBSP。
[0402] 用于使用“nuh_reserved_zero_6bits”的一个现有技术在于通过将nuh_reserved_zero_6bits的6个比特划分为不同的比特字段(即,依赖性ID、质量ID、视图ID、深度标志中的一个或多个,其中的每个均表示可缩放编码视频的不同层的标识),来用信号通知视频编码信息。因此,6比特指示该特定NAL单元术语可缩放编码技术的什么层。之后在数据净荷(诸如图15中所示的视频参数集(“VPS”)扩展语法(“scalability_type”))中,定义关于层的信息。图15的VPS扩展语法包括针对可缩放性类型(语法元素scalability_type)的4个比特,其指定编码视频序列中使用的可缩放性类型以及通过NAL单元头中的layer_id_plus1(或layer_id)用信号通知的维度。当可缩放性类型等于0时,编码视频序列符合基本规定,因此所有NAL单元的layer_id_plus1等于0,并且不存在属于增强层或视图的NAL单元。如图16所示解释可缩放性类型的较高的值。
[0403] layer_id_dim_len[i]指定第i个可缩放性维度ID的比特长度。针对0到7范围中的所有i值的layer_id_dim_len[i]值的和小于或等于6。vps_extension_byte_alignment_reserved_zero_bit是0。vps_layer_id[i]指定应用了以下的层依赖性信息的第i层的layer_id的值。num_direct_ref_layers[i]指定第i层直接依赖的层的数量。ref_layer_id[i][j]标识第i层直接依赖的第j层。
[0404] 以这种方式,现有技术用信号通知NAL单元中和视频参数集中的可缩放性标识符,以在图16列出的可缩放性类型中分配比特。之后对于每个可缩放性类型,图16定义多少个维度被支持。例如,可缩放性类型1具有2个维度(即,空间和质量)。对于每个维度,layer_id_dim_len[i]定义被分配给这两个维度中的每个维度的比特的数量,其中,layer_id_dim_len[i]的所有值的总和小于或等于6,6是NAL单元头的nuh_reserved_zero_6bits中的比特的数量。因此,通过组合,该技术标识哪些可缩放性类型被使用以及NAL单元头的6个比特如何在可缩放性中分配。
[0405] 虽然图16中所示的不同可缩放性维度的固定组合适用于许多应用中,但是存在没有被包括的期望组合。参照图17,修改的视频参数集扩展语法指定针对nuh_reserved_zero_6bits语法元素中的每个比特的可缩放性类型。vps_extension_byte_alignment_reserved_zero_bit被设置为0。max_num_layers_minus1_bits指示图13中的被称为layer_id_plus1或nuh_reserved_zero_6bits的NAL单元头的第一个两字节中的语法元素的比特的总数量。scalability_map[i]指定针对layer_id_plus1语法元素中的每个比特的可缩放性类型。在一些情况下,layer_id_plus1语法元素可被代替地称为nuh_reserved_zero_6bits或rserved_zero_6bits语法元素。针对语法元素layer_id_plus1的所有比特的可缩放性映射一起指定在编码视频序列中使用的可缩放性。针对每个可缩放性类型的标识符的实际值通过NAL单元头中的layer_id_plus1(nuh_reserved_zero_6bits)字段中的相应比特而被用信号通知。当scalability_map[i]针对i的所有值都等于0时,编码视频序列符合基本规定,因此NAL单元的layer_id_plus1值等于0,并且不存在属于增强层或视图的NAL单元。The vps_layer_id[i]指定应用了以下层依赖性信息的第i层的layer_id的值。num_direct_ref_layers[i]指定第i层直接依赖的层的数量。ref_layer_id[i][j]标识第i层直接依赖的第j层。
[0406] 如图18所示解释scalability_map[i]的更高的值。scalability_map[i]包括以下可缩放性维度:(0)无、(1)空间、(2)质量、(3)深度、(4)多视图、(5)未指定、(6)保留和(7)保留。
[0407] 因此,基于可缩放性维度是什么(例如,无、空间、质量、深度、多视图、未指定、保留)的视频参数集中的3个比特来解释NAL单元头中的每个比特。例如,为了用信号通知layer_id_plus1中的所有比特对应于空间可缩放性,针对NAL单元头的6比特,VPS中的scalability_map值可被编码为001 001 001 001 001 001。还例如,为了用信号通知layer_id_plus1中的3比特对应于空间可缩放性并且3比特对应于质量可缩放性,针对NAL单元头的6个比特,VPS中的scalability_map值可被编码为001 001 001 010 010 010。
[0408] 参照图19,另一个实施例包括使用num_scalability_dimensions_minus1用信号通知NAL单元头的6比特的可缩放性维度的数量的视频参数集。num_scalability_dimensions_minus1加1表示通过layer_id_plus1信号通知的可缩放性维度;nuh_
reserved_zero_6bits;和/或reserved_zero_6bits语法元素。所述scalability_map[i]的语义与以上关于图17的描述相同。Bum_bits_for_scalability_map[i]指定第i个可缩放性维度的比特长度。针对i=0,..num_scalability_dimensions_minus1的所有num_bits_for_scalability_map[i]的和等于6(或另外等于用于layer_id_plus1;vps_reserved_zero_6bits;max_num_layers_minus1;reserved_zero_6bits;nuh_reserved_zero_6bits语法元素的比特数)。
[0409] 关于图17和图19,如果期望,可使用其它变化。在一个实施例中,例如,scalability_map[i]可利用u(4)(或者n>3或n<3的u(n))来用信号通知。在此情况下,scalability_map[i]的更高的值可被保留用于符合视频技术的特定规章的比特流。例如,当利用u(4)来用信号通知scalability_map[i]时,可缩放性映射值6..15可被指定为“保留”。在另一实施例中,例如,scalability_map[i]可利用ue(v)或一些其它的编码方案来用信号通知。在另一实施例中,例如,可指定限制,使得scalability_map[i]值被布置为单调非降(或非增)顺序。这导致NAL单元头中的layer_id_plus1字段中的各个可缩放性维度字段连续。
[0410] 使用“layer_id_plus1”或“nuh_reserved_zero_6bits”语法元素来用信号通知可缩放视频编码的另一现有技术是通过用信号通知视频参数集中的通用查找表来将NAL单元头中的layer_id_plus1映射到层标识。参照图20,现有技术包括视频参数集,其指定针对查找表的第i层的维度类型和维度标识的数量。具体地,vps_extension_byte_alignment_reserved_zero_bit为零。num_dimensions_minus1[i]加1指定针对第i层维度类型(dimension_type[i][j])和维度标识符(dimension_id[i][j])的数量。dimension_type[i][j]的指定第i层的第j个可缩放性维度类型,其中,layer_id或layer_id_plus1等于i,如在图31中的说明。如图21中所示,被标识的维度包括(0)视图顺序idx;(1)深度标志;(2)依赖性ID;(3)质量ID;(4)-(15)保留。dimension_id[i][j]的指定第i层的第j个可缩放性维度类型的标识符,其中,当其不存在时被推断为0。num_direct_ref_layers[i]指定第i层直接依赖的层数。ref_layer_id[i][j]标识第i层直接依赖于第j层。不幸的是,图20所示的提出的实施例导致不实用的大型查找表20。
[0411] 参照图22,修改的视频参数集扩展包括用于与可缩放性维度组合的可缩放性掩码。scalability_mask用信号通知0和1比特的样式,其中,每个比特对应于由图23的可缩放性映射语法所示的一个可缩放性维度。针对特定可缩放性维度的值1指示该可缩放性维度存在于该层(第i层)。针对特定可缩放性维度的值0指示该可缩放性维度不存在于该层(第i层)。例如,一组比特00100000表示质量可缩放性。存在的特定可缩放性维度的实际标识符值由被信号通知的scalability_id[j]表示。num_scalability_types[i]的值等于值为1的scalability_mask中的比特数的和。从而
[0412] [数学式9]
[0413]
[0414] scalability_id[j]表示针对由scalability_mask信号通知的可缩放性值的类型的第j个可缩放性维度的标识符值。
[0415] 参照图24,图22的修改包括可缩放性掩码被在循环外用信号通知。这导致针对每个层标识的一个公共掩码。参照图25,在该修改中,对应示例性视频参数集可以包括可缩放性掩码不被包括的可缩放标识。在这种情况下,语法元素scalable_id[j]具有与图22中的语法元素scalability_id[j]相同的解释。
[0416] 参照图26,图22的修改包括可缩放性掩码(scalability_mask)被在循环外用信号通知。这导致针对每个层标识的一个公共掩码。scalability_mask用信号通知0和1比特的样式,其中,每个比特对应于由图27的可缩放性映射语法所示的一个可缩放性维度。针对特定可缩放性维度的值1指示该可缩放性维度存在于该层(第i层)。针对特定可缩放性维度的值0指示该可缩放性维度不存在于该层(第i层)。例如,一组比特00100000表示质量可缩放性。存在的特定可缩放性维度的实际标识符值由被信号通知的scalability_id[j]表示。num_scalability_types[i]的值等于值为1的scalability_mask中的比特数的和。从而[0417] [数学式10]
[0418]
[0419] 在此情况下,scalability_id[j]变量可被代替地称为dimension_id[i][j]变量。dimension_id[i][j]指定第i层的第j个可缩放性维度的可缩放性标识符。随后变量ScalabilityId[i][j]被如下得到。
[0420] [表7]
[0421]
[0422] 其中,ScalabilityId[i][k]如下用信号通知针对对应可缩放性类型的维度ID。
[0423] [表8]
[0424]k ScalabilityId[i][k]
0 DependencyId[i][k]
1 QualityId[i][k]
2 depthFlag[i][k]
3 ViewId[i][k]
4-15 Reserved
[0425] 其中,DependencyId[i][1]是针对第i层的空间可缩放性维度的依赖性ID,QualityId[i][2]是针对第i层的质量可缩放性维度的质量ID,depthFlag[i][3]是针对第i层的深度可缩放性维度的深度标志/深度ID,ViewId[i][4]是针对第i层的的多视图可缩放性维度的视图ID。
[0426] 另外,在图26中,avc_base_codec_flag等于1指定基础层符合ITU-TH.264|ISO/IEC 14496-10规定,并且avc_base_codec_flag等于1指定符合HEVC。vps_nuh_layer_id_presnet_flag表示用信号通知NAL单元头中的layer_id的值的layer_id_in_nuh[i]变量是否被信号通知。
[0427] 在另一个实施例中,语法元素scalability_mask[i]、scalability_mask、scalability_id[j]中的一个或多个可以使用与u(8)不同数量的比特来被信号通知。例如,它们可以利用u(16)(或n>8或n<8的u(n))被信号通知。在另一个实施例中,一个或多个这些语法元素可利用ue(v)被信号通知。在另一个实施例中,scalability_mask可以在NAL单元头中在layer_id_plus1;vps_reserved_zero_6bits;max_num_layers_minus1;reserved_zero_6bits和/或nuh_reserved_zero_6bits语法元素中被信号通知。在一些实施例中,系统可以仅针对VPS NAL单元、或仅针对非VPS NAL单元或针对所有NAL单元这样做。在另一个实施例中,scalability_mask可在比特流中的任何位置针对每个图像被信号通知。例如,它可以在比特流的条带头、图像参数集、视频参数集、或任何其它参数集或任何其它规范部分中被信号通知。
[0428] 应当指出的是,图13、图15、图18、图20、图21、图22、图23和相应的描述参照6比特,这是由于图13的NAL单元头中的语法元素nuh_reserved_zero_6bits或layer_id_plus1具有6比特。但是,如果语法元素使用与6比特不同的比特数,则所有上述描述可以被适当地修改。例如,如果语法元素(nuh_reserved_zero_6bits或layer_id_plus1)使用9比特,则在图17中,max_num_layer_minus1比特的值将是9并且scalability_map[i]将针对9比特(而不是6比特)中的每个被信号通知。
[0429] 参照图24,图22的修改提供用于用信号通知层依赖性信息的语法。定义了新的语法元素layer_dependency_information_pattern。
[0430] layer_dependency_information_pattern用信号通知长度等于vps_max_layers_minus1的0和1比特的样式。针对第i比特的值0表示与layer_id为(i+1)的层为独立层。针对第i比特的值1表示与layer_id为(i+1)的层为依赖于一个或多个其它层的依赖层。
[0431] NumDepLayers的值等于值为1的layer_dependency_information_pattern中的的比特数的和。从而
[0432] [数学式11]
[0433]
[0434] 参照图29,图26的修改提供用于用信号通知层依赖性信息的语法。定义了新的语法元素layer_dependency_flag[i]。layer_dependency_flag[i]用信号通知层是否依赖于其它层。标志值为0表示layer_id为i的层是独立层。标志值为1表示layer_id为i的层是依赖层。
[0435] 参照图30,图26的修改提供用于用信号通知层依赖性信息的语法。。定义了新的语法元素layer_dependency_map[i]。layer_dependency_map[i]用信号通知长度等于vps_max_layers_minus1的0和1比特的样式。针对layer_dependency_map[i]的第k比特的值0表示层i不依赖于layer_id为(k+1)的层。针对layer_dependency_map[i]的第k比特的值1表示层i依赖于layer_id为(k+1)的层。
[0436] 参照图31,图26的修改提供用于用信号通知层依赖性信息的语法。定义了新的语法元素layer_dependency_information_pattern。
[0437] layer_dependency_information_pattern用信号通知长度等于vps_max_layers_minus1的0和1比特的样式。针对第i比特的值0表示layer_id为(i+1)的层是独立层。针对第i比特的值1表示layer_id为(i+1)的层是依赖于一个或多个其它层的依赖层。NumDepLayers的值等于值为1的layer_dependency_information_pattern中的比特数的和。从而
[0438] [数学式12]
[0439]
[0440] layer_dependency_map[i]用信号通知长度等于vps_max_layers_minus1的0和1比特的样式。针对layer_dependency_map[i]的第k比特的值0表示层i不依赖于layer_id为(k+1)的层。针对layer_dependency_map[i]的第k比特的值1表示层i依赖于layer_id为(k+1)的层。
[0441] 参照图32,图26的修改提供用于用信号通知层依赖性信息的语法。定义了新的语法元素layer_dependency_information_pattern。
[0442] layer_dependency_information_pattern用信号通知长度等于vps_max_layers_minus1的0和1比特的样式。针对第i比特的值0表示layer_id为(i+1)的层是独立层。针对第i比特的值1表示layer_id为(i+1)的层是依赖于一个或多个其它层的依赖层。
[0443] NumDepLayers的值等于值为1的layer_dependency_information_pattern中的比特数的和。从而
[0444] [数学式13]
[0445]
[0446] 仅当layer_dependency_information_pattern(i)的值为1时,用信号通知语法元素num_direct_ref_layers[i]和ref_layer_id[i][j]。其中,layer_depdndency_information_pattern(i)是语法元素layer_dependency_pattern的第i比特。
[0447] 参照图33,图26的修改提供用于用信号通知层依赖性信息的语法。图29是基于图31中的语法的变形语法。定义了新的语法元素layer_dependency_information_pattern。
[0448] layer_dependency_information_pattern用信号通知具有等于vps_max_layers_minus1的长度的0和1比特的样式。针对第i比特的值0表示layer_id为(i+1)的层是独立层。针对第i比特的值1表示layer_id为(i+1)的层是依赖于一个或多个其它层的依赖层。
[0449] NumDepLayers的值等于值为1的layer_dependency_information_pattern中的比特数的和。从而
[0450] [数学式14]
[0451]
[0452] layer_dependency_map[i]用信号通知长度等于vps_max_layers_minus1的0和1比特的样式。针对layer_dependency_map[i]的第k比特的值0表示层i不依赖于layer_id为(k+1)的层。针对layer_dependency_map[i]的第k比特的值1表示层i依赖于layer_id为(k+1)的层。仅当layer_dependency_information_pattern(i)的值为1时,用信号通知语法元素layer_dependency_map[i]。其中,layer_depdndency_information_pattern(i)是语法元素layer_dependency_pattern的第i比特。
[0453] 在另一实施例中,语法元素layer_dependency_information_pattern可以被信号通知为1比特标志值的集合。在此情况下,vps_max_layers_minus1的1比特值的总和可被信号通知为:
[0454] [表9]
[0455] 在另一实施例中,语法元素layer_dependency_map[i]可以被信号通知为1比特标志值的集合。在此情况下,vps_max_layers_minus1的1比特值的总和可被信号通知为:
[0456] [表10]
[0457]
[0458] 在另一实施例中,可使用已知固定数量的比特(而非u(v))来用信号通知语法元素layer_dependency_information_pattern、layer_dependency_map中的一个或多个。例如,可以使用u(64)来用信号通知它们。
[0459] 在另一个实施例中,语法元素layer_dependency_information_pattern、layer_dependency_map中的一个或多个可以用ue(v)或一些其它的编码方案被信号通知。
[0460] 在另一个实施例中,相比于所描述的语法和语义,可通过添加plus1或plus2或通过减去minus1或minus2来改变各种语法元素和它们的语义的名称。
[0461] 在又一个实施例中,可在比特流中的任何位置针对每个图像用信号通知诸如layer_dependency_information_pattern、layer_dependency_map、layer_dependency_flag[i]等的各个语法元素。例如,其可以被信号通知在比特流的条带头、pps/sps/vps/aps或任何其它参数集或其它规范部分中。
[0462] 如前所述,可缩放视频编码是对还包含一个或多个子集比特流的视频比特流进行编码的技术。可通过丢弃来自较大视频的包来得到子集视频比特流,以减少子集比特流所需要的带宽。子集比特流可表示较低空间分辨率(较小的屏幕)、较低时间分辨率(较低的帧率)或较低质量的视频信号。例如,视频比特流可包括5个子集比特流,其中,每个子集比特流将附加内容添加到基础比特流。Hannuksela等人于2012年10月在上海发表的″Test Model for Scalable Extensions of High Efficiency Video Coding(HEVC)″JCTVC-L0453通过引用被全部包含于此。Chen等人于2013年3月在日内瓦发表的″SHVC Draft Text 1,″JCTVC-L1008通过引用被全部包含于此。Wang等人于2013年4月在仁川发表的″AHG9:On VPS and SPS in HEVC 3DV and scalable extensions,″JCTVC-M0268通过引用被全部包含于此。
[0463] 如前所述,多视图视频编码是对还包含一个或多个表示备选视图的其它比特流的视频比特流进行编码的技术。例如,多视图可以是用于立体视频的一对视图。例如,多视图可表示同一场景的来自不同视点的多个视图。由于图像是同一场景的来自不同视点的图像,因此多视图一般包含大量视图间统计依赖性。因此,组合的时间和视图间预测可实现高效的多视图编码。例如,不仅可从时间相关帧,还可从相邻视点的帧高效预测帧。Hannuksela等人于2013年1月在日内瓦发表的″Common specification text for scalable and multi-view extensions,″JCTVC-L0452通过引用被全部包含于此。Tech等人于2013年1月在日内瓦发表的″MV-HEVC Draft Text 3(ISO/IEC 23008-2:201x/PDAM2),″JCT3V-C1004_d3通过引用被全部包含于此。
[0464] Chen等人于2013年1月在日内瓦发表的″SHVC Draft Text 1,″JCTVC-L1008、Hannuksela等人于2012年10月在上海发表的″Test Model for Scalable Extensions of High Efficiency Video Coding(HEVC),″JCTVC-L0453-spec-text均通过引用被全部包含于此。JCTVC-L0452和JCTVC-L0453均具有输出操作点的构思。这在之后在JCTVC-L1008中被改变为输出层集的构思。在JCTVC-L0452和JCTVC-L0453中,针对语法元素num_output_operation_points、output_op_point_index[]和output_layer_flag[][]被定义用于输出操作点,并且在JCTVC-L1008中,它们被修改为num_output_layer_sets、output_layer_set_idx[]和output_layer_flag[][]。在所述每篇文献中,定义了层依赖性改变SEI消息。SEI消息允许用信号通知从包含SEI消息的当前访问单元开始的层依赖性消息改变。
[0465] Chen等人于2013年1月在日内瓦发表的″SHVC Draft Text 1,″JCTVC-L1008、Hannuksela等人于2012年10月在上海发表的″Test Model for Scalable Extensions of High Efficiency Video Coding(HEVC),″JCTVC-L0453-spec-text均通过引用被全部包含于此,其中它们均具有输出顺序解码图像缓冲区(DPB),其基于使用sps_max_num_reorder_pics[HighestTid]、sps_max_latency_increase_plus1[HighestTid]和sps_max_dec_pic_buffering[HighestTid]语法元素用于从DPB输出和移除图像0。该信息在针对基础层的视频参数集中被信号通知,其中,该信息提供针对包括增强层(如果存在的话)的视频内容的缓冲信息。
[0466] 参照图34,示出视频参数集的另一示例。具体地,图34的视频参数集包括对关联视频参数集扩展(vps_extension)的参考。可以利用vps_extension_flag、vps_extension2_flag和/或vps_extension_data_flag用信号通知vps_extension。
[0467] 参照图35,示出视频参数集扩展的另一示例。具体地,图35的视频参数集扩展包括对num_output_layer_sets的参考,num_output_layer_sets定义比特流的层的集合中的可被解码器输出给观看者的那些层。num_output_layer_sets指定利用output_layer_set_index[i]和output_layer_flag[lsIdx][j]指定了输出层的层集的数量。当不存在时,num_output_layer_sets的值被推断为等于0。描述输出层的层集是输出层集。
[0468] output_layer_set_idx[i]指定output_layer_flag[lsIdx][j]存在的层级的索引lsIdx。
[0469] output_layer_flag[lsIdx][j]等于1指定nuh_layer_id等于j的层是第lsIdx层集的目标输出层。output_layer_flag[lsIdx][j]等于0指定nuh_layer_id等于j的层不是第lsIdx层集的目标输出层。
[0470] 在num_output_layer_sets以描述的方式被定义在vps_extension中的情况下,可以通过将新的视频参数集与对应的视频参数集扩展一起发送来更新num_output_layer_sets。不幸的是,将新的视频参数集与对应的视频参数集扩展一起发送导致可用宽带的显著减小。另外,仅可以特定图像类型(例如以帧内随机访问点图像类型)激活新的视频参数集。
[0471] 作为示例,比特流可以包括基础层0和四个增强层,即增强层1、增强层2、增强层3和增强层4。第一层集可以是基础层0和增强层1。第二层集可以是基础层0、增强层1和增强层2。第三层集可以是基础层0、增强层1和增强层3。第四层集可以是基础层0和增强层4。输出层集定义了可被提供为输出的层集的特定层。例如,输出层集1可以是:层0是输出而层1不是输出。例如,输出层集2可以是:层0是输出,层1是输出,而层2不输出。例如,输出层集3可以是:层0不被输出,层1不被输出,而层3被输出。例如,输出层集4可以是:层0被输出而层4不被输出。输出层的有限数量是可用于适应有限的解码能力。在一些情况下,期望禁用不同层之间的一些依赖性,以适应解码其它层和/或解码器能力。当一些层依赖性改变时,也可同样地期望启用、禁用和/或添加其它层作为输出层。作为示例,层依赖性改变可能需要更少的将被解码的层来解码特定目标层(例如,MV-HEVC中的视图)。因此,解码器可以在层依赖性改变之后解码和输出层(例如,附加视图),由于解码器的硬件限制使得其之前不能进行这种操作。目前,不存在在不发送新的视频参数集的情况下允许用信号通知输出层级的改变的机制。
[0472] 参照图36,SEI消息语法可以用于帮助输出层集的变化,即,output_layer_sets_change(payloadSize)。该SEI消息表示从包含SEI消息的当前访问单元开始的输出层集信息改变,并相对于激活视频参数集而解释。如所希望的,多于一个的视频参数集可包括在比特流中,并且激活视频参数集被改变。当存在时,输出层集改变SEI消息按照解码顺序应用于包括当前访问单元和所有的后续访问单元的目标访问单元,直到下一个输出层集改变SEI消息或编码视频序列的结束(按解码顺序中的较早方为准)。输出层集改变SEI消息优选不具有累积效应。
[0473] active_vps_id标识包含应用了改变或添加的输出层集的激活视频参数集。active_vps_id的值等于针对包含SEI消息的访问单元的VCLNAL单元的激活视频参数集。
[0474] num_changed_output_layer_sets指定改变的输出层集的数量,其中,输出层被指定在由active_vps_id标识的激活视频参数集的vps扩展区间中。num_changed_output_layer_sets的值应该在0到num_output_layer_sets(含)的范围内。当不存在时,num_output_layer_sets的值被推断为等于0。
[0475] ′changed_output_layer_sets_idx_entry′[i]标识由active_vps_id标识的vps扩展中的输出层集条目的列表中的索引条目,其中,应用了output_layer_flag[clsIdx][j]改变。changed_output_layer_set_idx_entry[i]的值应该在0到num_output_layer_sets(含)之间。若i不等于j,则changed_output_layer_sets_idx_entry[i]不等于changed_output_layer_sets_idx_entry[j]。
[0476] ′output_layer_flag′[clsIdx][j]等于1指定nuh_layer_id等于j的层是第clsIdx层的目标输出层。output_layer_flag[clsIdx][j]的值等于0指定nuh_layer_id等于j的层不是第clsIdx层的目标输出层。
[0477] 当对于0到vps_num_layer_sets_minus1(含)范围中的clsIdx以及0到63(含)的范围中的j,不存在output_layer_flag[clsIdx][j]时,output_layer_flag[clsIdx][j]被推断为等于(j==LayerSetLayerIdList[clsIdx][NumLayersInIdList[clsIdx]-1])。
[0478] num_addl_output_layer_sets指定附加层集的数量,其中,利用addl_output_layer_set_idx[i]和output_layer_flag[addllsIdx][j]指定了输出层。当不存在时,num_addl_output_layer_sets的值被推断为等于0。′addl_output_layer_sets_idx′[i]标识output_layer_flag[addllsIdx][j]存在的层集的索引addllsIdx。
[0479] ′output_layer_flag′[addllsIdx][j]等于1指定nuh_layer_id等于j的层是第addllsIdx层的目标输出层。output_layer_flag[clsIdx][j]的值等于0指定nuh_layer_id等于j的层不是第addllsldx层的目标输出层。
[0480] 当对于0到vps_num_layer_sets_minus1(含)范围中的addllsIdx以及0到63(含)的范围中的j,不存在output_layer_flag[addllsIdx][j]时,output_layer_flag[addllsIdx][j]被推断为等于(i==LayerSetLayerIdList[addllsIdx][NumLayersInIdList[addllsIdx]-1])。
[0481] 当对于0到vps_num_layer_sets_minus1(含)范围中的addllsIdx以及0到63(含)的范围中的j不存在output_layer_flag[addllsIdx][j],并且当对于0到vps_num_layer_sets_minus1(含)范围中的clsIdx以及0到63(含)的范围中的j不存在output_layer_flag[addllsIdx][j]时,output_layer_flag[addllsIdx][j]被推断为等于(j==LayerSetLayerIdList[addllsIdx][NumLayersInIdList[addllsIdx]-1])。
[0482] 当对于0到vps_num_layer_sets_minus1(含)范围中的addllsIdx以及0到63(含)的范围中的j不存在output_layer_flag[addllsIdx][j],并且当对于0到vps_num_layer_sets_minus1(含)范围中的clsIdx以及0到63(含)的范围中的j不存在output_layer_flag[addllsIdx][j]时,output_layer_flag[clsIdx][j]被推断为等于(j==LayerSetLayerIdList[clsIdx][NumLayersInIdList[clsIdx]-1])。
[0483] 如果期望 ,可得到输出 层的目 标列表。目标输出层标识符 列表(targetOpLayerIdList)按照nuh_layer_id值的增序指定nuh_layer_id值的列表,其中,作为针对选择的输出层集的输出层的nuh_layer_id可如下得到:
[0484] 对于选择的输出层集oLsIdx,目标输出层标识符列表targetOpLayerIdList如下得到:
[0485] [表11]
[0486]for(k=0,numOutputLayers=0;k<=vps_max_layer_id;k++)
if(output_layer_flag[oLsldx][k])
targetOpLayerldList[numOutputLayers++]=layer_id_in_nuh[k]
[0487] 目标输出层集可由关联目标输出层标识符列表targetOpLayerIdList标识。
[0488] 如果没有输出层集改变SEI消息,则选择的输出层集oLsIdx在0和num_output_layer_sets之间。
[0489] 如果存在输出层集改变SEI消息,则选择的输出层集oLsIdx在0和num_output_layer_sets+num_addl_output_layer_sets之间。
[0490] 如果期望 ,可得到解 码层的目 标列表。目标解码层标识符 列表(targetDLayerIdList)指定nuh_layer_id值的列表,其中,针对选择的输出层集需要被解码的nuh_layer_id值可如下得到:
[0491] 对于选择的输出层集oLsIdx,目标输出层标识符列表targetOpLayerIdList如下得到:
[0492] [表12]
[0493]for(k=0,numOutputLayers=0;k<=vps_max_layer_id;k++)
if(output_layer_flag[oLsldx][k])
targetOpLayerldList[numOutputLayers++]=layer_id_in_nuh[k]
[0494] 目标解码层标识符列表targetDLayerIdList可被得到为:
[0495] [表13]
[0496]
[0497] 在一些情况下,可通过按照nuh_layer_id值的增序对以上nuh_layer_id分类来获得最终targetDLayerIdList。
[0498] 目标解码层集由关联目标解码层标识符列表targetDLayerIdList标识。在一些情况下,targetDLayerIdList可以与来自JCTVC-L1008中的层标识符列表TargetDecLayerIdList相同,其中,TargetDecLayerIdList按照将被解码的NAL单元的nuh_layer_id值的增序指定nuh_layer_id值的列表:
[0499] 如果没有输出层集改变SEI消息,则选择的输出层集oLsIdx在0和num_output_layer_sets之间。
[0500] 如果存在输出层集改变SEI消息,则选择的输出层集oLsIdx在0和num_output_layer_sets+num_addl_output_layer_sets之间。
[0501] 参照图37,可使用另一SEI消息语法来帮助输出层集的改变,即,output_layer_sets_change(payloadSize)。
[0502] num_deleted_output_layer_sets指定被删除因此不再存在的输出层集的数量。num_deleted_output_layer_sets的值在0到num_output_layer_sets(含)的范围内。当不存在时,num_deleted_output_layer_sets的值被推断为等于0。
[0503] ′deleted_output_layer_sets_idx_entry′[i]标识表示将被删除并因此不再存在的输出层集条目的列表中的索引条目。deleted_output_layer_set_idx_entry[i]的值应该在0到num_output_layer_sets(含)之间。若i不等于j,则deleted_output_layer_sets_idx_entry[i]不等于deleted_output_layer_sets_idx_entry[j]。
[0504] num_changed_output_layer_sets指定改变的输出层集的数量,其中,输出层被指定在由active_vps_id标识的激活视频参数的vps扩展区间中。num_changed_output_layer_sets的值应该在0到num_output_layer_sets-num_deleted_output_layer_sets(含)的范围内。当不存在时,num_output_layer_sets的值被推断为等于0。
[0505] 如果期望 ,可得到输出 层的目 标列表。目标输出层标识符 列表(targetOpLayerIdList)按照nuh_layer_id值的增序指定nuh_layer_id值的列表,其中,作为针对选择的输出层集的输出层的nuh_layer_id可如下得到:
[0506] 对于选择的输出层集oLsIdx,目标输出层标识符列表targetOpLayerIdList如下得到:
[0507] [表14]
[0508]for(k=0,numOutputLayers=0;k<=vps_max_layer_id;k++)
if(output_layer_flag[oLsldx][k])
targetOpLayerldList[numOutputLayers++]=layer_id_in_nuh[k]
[0509] 目标输出层集可由关联目标输出层标识符列表targetOpLayerIdList标识。
[0510] 如果没有输出层集改变SEI消息,则选择的输出层集oLsIdx在0和num_output_layer_sets之间。
[0511] 如果存在输出层集改变SEI消息,则选择的输出层集oLsIdx在0和num_output_layer_sets-num_deleted_output_layer_sets+num_addl_output_layer_sets之间。
[0512] 如果期望,可得到解码层的目标列表。
[0513] 目标解码层标识符列表(targetDLayerIdList)指定nuh_layer_id值的列表,其中,针对选择的输出层集需要被解码的nuh_layer_id值可如下得到:
[0514] 对于选择的输出层集oLsIdx,目标输出层标识符列表targetOpLayerIdList如下得到:
[0515] [表15]
[0516]for(k=0,numOutputLayers=0;k<=vps_maxlayer_id;k++)
if(output_layer_flag[oLsldx][k])
targetOpLayerldList[numOutputLayers++]=layer_id_in_nuh[k]
[0517] 然后,目标解码层标识符列表targetDLayerIdList可被得到为:
[0518] [表16]
[0519]
[0520] 在一些情况下,可通过按照nuh_layer_id值的增序对以上nuh_layer_id分类来获得最终targetDLayerIdList。
[0521] 目标解码层集由关联目标解码层标识符列表targetDLayerIdList标识。在一些情况下,targetDLayerIdList可以与来自JCTVC-L1008中的层标识符列表TargetDecLayerIdList相同,其中,TargetDecLayerIdList按照将被解码的NAL单元的nuh_layer_id值的增序指定nuh_layer_id值的列表:
[0522] 如果没有输出层集改变SEI消息,则选择的输出层集oLsIdx在0和num_output_layer_sets之间。
[0523] 如果存在输出层集改变SEI消息,则选择的输出层集oLsIdx在0和num_output_layer_sets-num_deleted_output_layer_sets+num_addl_output_layer_sets之间。
[0524] 输出层集改变SEI消息被定义为使得其效果不是累积的。在另一实施例中,该消息语法和/或予以语义可被定义为使得它们是累积的。在此情况下,解码器(和编码器)可保持跟踪(来自vps_extension的)num_output_layer_sets和/或num_deleted_output_layer_sets和/或num_changed_output_layer_sets和/或num_addl_output_layer_sets的所有先前值,并可在每次用信号通知新的SEI消息时累加这些改变。
[0525] 在在另一实施例中,可使用已知固定数量的比特(而非u(v)而非ue(v))来用信号通知语法元素中的一个或多个。例如,可以使用u(8)或u(16)或u(32)或u(64)来用信号通知它们。
[0526] 在另一实施例中,语法元素中的一个或多个可以用ue(v)或诸如u(v)编码的一些其它编码方案(而非固定数量的比特)被信号通知。
[0527] 在另一个实施例中,相比于所描述的语法和语义,可通过添加plus1或plus2或通过减去minus1或minus2来改变各种语法元素的名称和它们的语义。
[0528] 在另一实施例中,可以按照每个图像或按照其它频率在比特流中的任何位置用信号通知在输出层集SEI消息中包含的各个语法元素。例如,它们可以被信号通知在比特流的条带分段头、pps/sps/vps/适配参数集或任何其它参数集或其它规范部分中。
[0529] 在另一实施例中,可以在比特流中的任何位置按照每个图像或以其它频率用信号通知各个语法元素。例如,它们可以被信号通知在比特流的条带分段头、pps/sps/vps/适配参数集或任何其它参数集或其它规范部分中。
[0530] 在另一实施例中,在本发明中定义的与输出层集相关的所有构思可被应用于在JCTVC-L0452和JCTVC-L0453中定义的输出操作点和/或在JCTVC-L1003中定义的操作点。
[0531] 示例2
[0532] 本发明的另一示例如下所述。需要注意的是,为了方便,功能与第一示例中示出的各个部件的功能相同的部件被赋予相同的标号,因此在此省略对这些部件的描述。
[0533] 确定了基于使用sps_max_num_reorder_pics[HighestTid]、sps_max_latency_increase_plus1[HighestTid]和sps_max_dec_pic_buffering[HighestTid]语法元素来用信号通知输出顺序解码图像缓冲区(DPB)以从DPB输出和移除图像,不导致可能由可缩放视频编码引起的缓冲区特性,诸如当使用不同数量的增强层时倾向于在基于用户的观看偏好编码了内容之后而变化,并且多视图增强层倾向于在基于用户的观看偏好编码了内容之后而变化。此外,当解码器操作在特定操作点和/或正在输出选择的输出层集时,确定了基于使用sps_max_num_reorder_pics[HighestTid]、sps_max_latency_increase_plus1[HighestTid]和sps_max_dec_pic_buffering[HighestTid]语法元素来用信号通知输出顺序解码图像缓冲区(DPB)以从DPB输出和移除图像可能在DPB的存储器使用方面不是最优的。为了适应上述观看偏好的不同,输出顺序解码图像缓冲区(DPB)还可和/或备选地基于与视频参数集扩展(VPS扩展)一起被包括的语法元素,以针对一个或多个增强层提供语法元素。以这种方式,语法元素可被选择为尤其适合于倾向于对应于用户的观看偏好的特定操作点或输出层集。
[0534] 与DPB缓冲相关的参数(vps_max_dec_pic_buffering_minus1、vps_max_num_reorder_pics、vps_max_latency_increase_plus1)可针对CVS的子层被信号通知,以用于一个或多个操作点和/或用于VPS扩展中的输出层集。类似地,如果来自VPS扩展中的被信号通知的DPB缓冲参数被信号通知用于被测操作点或用于选择的输出层集,则系统可定义用于输出顺序DPB的操作和弹出处理来使用所述来自VPS扩展中的被信号通知的DPB缓冲参数。否则,使用来自激活SPS(当对应于当前图像的nuh_layer_id的currLayerId等于0时)或来自取决于当前层的layer_id的激活层SPS中的相应SPS级别参数。在一些情况下,参数vps_max_dec_pic_buffering_minus1、vps_max_num_reorder_pics、vps_max_latency_increase_plus1可被命名为max_vps_dec_pic_buffering_minus1、max_vps_num_reorder_pics,max_vps_latency_increase_plus1。
[0535] 在另一情况下,与DPB缓冲相关的参数max_vps_dec_pic_buffering_minus1可针对CVS的子层被信号通知,以用于VPS扩展中的一个或多个输出层集。输出层集可对应于操作点。与DPB缓冲相关的参数max_vps_num_reorder_pics、max_vps_latency_increase_plus1可针对CVS的子层被信号通知,以用于VPS扩展中的每个层。类似地,如果来自VPS扩展中的被信号通知的DPB缓冲参数被信号通知用于被测操作点或用于选择的输出层集,则系统可定义用于输出顺序DPB的操作和弹出处理来使用所述来自VPS扩展中的被信号通知的DPB缓冲参数。否则,使用来自激活SPS(当对应于当前图像的nuh_layer_id的currLayerId等于0时)或来自取决于当前层的layer_id的激活层SPS中的相应SPS级别参数。
[0536] 参照图38A,输出示例性的修改后的vps_extension。修改后的vps扩展包括新的语法,即num_op_dpb_info_parameters和operation_point_layer_set_idx[1]。该修改的vps扩展可以根据操作点被定义,其中,所述操作点是通过利用作为输入的目标层标识符列表、目标最高TemporalId和另一比特流的子比特流提取处理的操作从所述另一比特流创建的比特流。
[0537] num_output_layer_sets指定利用output_layer_set_index[i]和output_layer_flag[1sIdx][j]指定了输出层的层集的数量。当不存在时,num_output_layer_sets的值被推断为等于0。描述输出层的层集是输出层集。
[0538] output_layer_set_idx[i]指定output_layer_flag[1sIdx][j]存在的层集的索引lsIdx。
[0539] output_layer_flag[lsIdx][j]等于1指定nuh_layer_id等于j的层是第1sIdx层集的目标输出层。output_layer_flag[lsIdx][j]等于1指定nuh_layer_id等于j的层不是第lsIdx层集的目标输出层。
[0540] num_op_dpb_info_parameters指定存在于根据操作点定义的VPS扩展RBSP中的op_dpb_parameters()语法结构的数量。num_op_dpb_info_parameters解码器是在0到vps_num_layer_sets_minus1(含)的范围内。
[0541] operation_point_layer_set_idx[i]在由操作点定义的层集的列表中指定索引,其中,VPS扩展中的第i个op_dpb_info_parameters()结构被应用于所述操作点。operation_point_layer_set_idx[i]的值可以在0到vps_num_layer_sets_minus1(含)的范围内。对于比特流一致性,如果i不等于j,则operation_point_layer_set_idx[i]不等于operation_point_layer_set_idx[j]。
[0542] 参照图39A,op_dpb_info_parameters指定vps_max_sub_layers_minus1[j]、vps_sub_layer_ordering_info_present_flag[j]、vps_max_dec_pic_buffering_minus1[j][k]、vps_max_num_reorder_pics[j][k]和vps_max_latency_increase_plus1[j][k]。
[0543] vps_max_sub_layers_minus1[j]加1表示包括了多少个子层。vps_max_sub_layers_minus1[j]加1指定针对nuh_layer_id等于j的层可存在于CVS中的时间子层的最大数目。vps_max_sub_layers_minus1[j]的值在0到6(含)范围内。
[0544] vps_sub_layer_ordering_info_present_flag[j]指示语法是用于包括所有层的一个集合还是用于每个单独的层。vps_sub_layer_ordering_info_present_flag[j]等于1指定针对nuh_layer_id等于1的层中的vps_max_sub_layers_minus1[j]+1个子层存在vps_max_dec_pic_buffering_minus1[j][k]、vps_max_num_reorder_pics[j][k]和vps_max_latency_increase_plus1[j][k]。vps_sub_layer_ordering_info_present_flag[j]等于0指定vps_max_dec_pic_buffering_minus1[j][vps_max_sub_layers_minus1[j]]、vps_max_num_reorder_pics[j][vps_max_sub_layers_minus1[j]]和vps_max_latency_increase_plus1[j][vps_max_sub_layers_minus1[j]]的值应用于nuh_layer_id等于1的层中的所有子层。
[0545] vps_max_dec_pic_buffering_minus1[j][k]加1指定当HighestTid等于k时,针对nuh_layer_id等于j的层对于CVS的解码图像缓冲区所需要的以图像存储缓冲区为单位的最大尺寸。vps_max_dec_pic_buffering_minus1[j][k]的值应该在0到MaxDpbSize-1(如分条款A.4中的规定)(含)的范围内。当k大于0时,vps_max_dec_pic_buffering_minus1[j][k]应该大于或等于vps_max_dec_pic_buffering_minus1[j][k-1]。当针对0到vps_max_sub_layers_minus1[j]-1(含)的范围内的k不存在vps_max_dec_pic_buffering_minus1[j][k]时,由于vps_sub_layer_ordering_info_present_flag[j]等于0,因此推断其等于vps_max_dec_pic_buffering_minus1[j][vps_max_sub_layers_minus1[j]]。
[0546] vps_max_num_reorder_pics[j][k]表示当HighestTid等于k时,针对nuh_layer_id等于j的层可以按照解码顺序在CVS中的任何图像之前并且按照输出顺序在该图像之后的图像的最大允许数量。vps_max_num_reorder_pics[j][k]的值应该在0到vps_max_dec_pic_buffering_minus1[j][k](含)的范围内。当k大于0时,vps_max_num_reorder_pics[j][k]大于或等于vps_max_num_reorder_pics[j][k-1]]。当针对0到vps_max_sub_layers_minus1[j]-1(含)的范围内的k不存在vps_max_num_reorder_pics[j][k]时,由于vps_sub_layer_ordering_info_present_flag[j]等于0,因此推断其等于vps_max_num_reorder_pics[j][vps_max_sub_layers_minus1[j]]。
[0547] vps_max_latency_increase_plus1[j][k]不等于0被用于计算VpsMaxLatencyPictures[j][k]的值,VpsMaxLatencyPictures[j][k]指定当HighestTid等于k时,针对nuh_layer_id等于j的层可以按照输出顺序在CVS中的任何图像之前并且按照解码顺序在该图像之后的图像的最大允许数量。
[0548] 当vps_max_latency_increase_plus1[j][k]不等于0时,VpsMaxLatencyPictures[j][k]的值可被如下指定:
[0549] VpsMaxLatencyPictures[j][k]=vps_max_num_reorder_pics[j][k]+vps_max_latency_increase_plus1[j][k]-1。
[0550] 当vps_max_latency_increase_plus1[j][k]等于0时,没有相应限制被表达。
[0551] vps_max_latency_increase_plus1[j][k]的值在0到232-2(含)的范围内。当针对0到vps_max_sub_layers_minus1[j]-1(含)的范围内的k不存在vps_max_latency_increase_plus1[j][k]时,由于vps_sub_layer_ordering_info_present_flag[j]等于0,因此推断其等于vps_max_latency_increase_plus1[j][vps_max_sub_layers_minus1[j]]。
[0552] ′vps_max_sub_layers_minus1′[id][j]加1指定对于与索引id相关联的操作点,针对nuh_layer_id等于j的层可以存在于CVS中的时间子层的最大数量。vps_max_sub_layers_minus1[id][j]的值应该在0到6(含)的范围内。
[0553] ′vps_sub_layer_ordering_info_present_flag′[id][j]等于1指定对于与索引id相关联的操作点,针对nuh_layer_id等于j的层中的vps_max_sub_layers_minus1[id][j]+1个子层存在vps_max_dec_pic_buffering_minus1[id][j][k]、vps_max_num_reorder_pics[id][j][k]和vps_max_latency_increase_plus1[id][j][k]。
[0554] vps_sub_layer_ordering_info_present_flag[id][j]等于0指定对于与索引id相关联的操作点,vps_max_dec_pic_buffering_minus1[id][j][vps_max_sub_layers_minus1[id][j]]、vps_max_num_reorder_pics[id][j][vps_max_sub_layers_minus1[id][j]]和vps_max_latency_increase_plus1[id][j][vps_max_sub_layers_minus1[id][j]]的值应用于针对nuh_layer_id等于j的层中的所有子层。
[0555] ′vps_max_dec_pic_buffering_minus1′[id][j][k]加1指定当HighestTid等于k时,对于与索引id相关联的操作点,针对nuh_layer_id等于j的层的CVS中的以图像存储缓冲区为单位的解码图像缓冲区的最大需要数量。vps_max_dec_pic_buffering_minus1[id][j][k]的值应该在0到MaxDpbSize-1(如分条款A.4中的规定)(含)的范围中。当k大于0时,vps_max_dec_pic_buffering_minus1[id][j][k]应该大于或等于vps_max_dec_pic_buffering_minus1[id][j][k-1]。当针对0到vps_max_sub_layers_minus1[id][j]-1(含)的范围内的k不存在vps_max_dec_pic_buffering_minus1[id][j][k]时,由于vps_sub_layer_ordering_info_present_flag[id][j]等于0,因此其被推断为等于vps_max_dec_pic_buffering_minus1[id][j][vps_max_sub_layers_minus1[id][j]]。
[0556] ′vps_max_num_reorder_pics′[id][j][k]表示当HighestTid等于k时,对于与索引id相关联的操作点,针对nuh_layer_id等于j的层可以按照解码顺序在CVS中的任何图像之前并按照输出顺序在该图像之后的图像的最大允许数量。vps_max_num_reorder_pics[id][j][k]的值应该在0到vps_max_dec_pic_buffering_minus1[id][j][k](含)的范围中。当k大于0时,vps_max_num_reorder_pics[id][j][k]应该大于或等于vps_max_num_reorder_pics[id][j][k-1]。当针对0到vps_max_sub_layers_minus1[id][j]-1(含)的范围内的k不存在vps_max_num_reorder_pics[id][j][k]时,由于vps_sub_layer_ordering_info_present_flag[id][j]等于0,因此其被推断为等于vps_max_num_reorder_pics[id][j][vps_max_sub_layers_minus1[id][j]]。
[0557] ′vps_max_latency_increase_plus1′[id][j][k]不等于0被用于计算VpsMaxLatencyPictures[id][j][k]的值,VpsMaxLatencyPictures[id][j][k]指定当HighestTid等于k时,针对nuh_layer_id等于j的层可以按照输出顺序在CVS中的任何图像之前并且按照解码顺序在该图像之后的图像的最大允许数量。
[0558] 当vps_max_latency_increase_plus1[id][j][k]不等于0时,vps_max_latency_increase_plus1[id][j][k]的值可被如下指定:
[0559] VpsMaxLatencyPictures[id][j][k]=vps_max_num_reorder_pics[id][j][k]+vps_max_latency_increase_plus1[id][j][k]-1
[0560] 当vps_max_latency_increase_plus1[id][j][k]等于0时,没有相应限制被表达。
[0561] vps_max_latency_increase_plus1[id][j][k]的值在0到232-2(含)的范围内。当针对0到vps_max_sub_layers_minus1[id][j]-1(含)的范围内的k不存在vps_max_latency_increase_plus1[id][j][k]时,由于vps_sub_layer_ordering_info_present_flag[id][j]等于0,因此推断其等于vps_max_latency_increase_plus1[id][j][vps_max_sub_layers_minus1[id][j]]。
[0562] 参照图39B,op_dpb_info_parameters还可被修改为如op_dpb_info_parameters(id,j)所示。在此情况下,VPS扩展的语法可被示出在图38B中。假想参考解码器(HRD)被用于检查比特流和解码器一致性。两种类型的比特流或比特流子集受到用于视频编码联合协作组(JCT-VC)的HRD一致性检查。第一类型(被称为类型I比特流)是仅包含针对比特流中的所有访问单元的VCL NAL单元和nal_unit_type等于FD_NUT(填充数据NAL单元)的NAL单元的NAL单元流。第二类型(被称为类型II比特流)除了包含针对比特流中的所有访问单元的VCL NAL单元和填充数据NAL单元之外,还包括以下(a)和(b)中的至少一个:(a)不是填充数据NAL单元的附加非VCL NAL单元、(b)形成来自NAL单元流中的字节流的所有leading_zero_8bits、zero_byte、start_code_prefix_one_3bytes和trailing_zero_8bits语法元素。
[0563] HRD所需要的非VCL NAL单元的语法元素(或一些语法元素的默认值)在条款7的语义分条款、附录D和E中指定。
[0564] 使用两种类型的HRD参数集(NAL HRD和VCL HRD参数)。HRD参数集通过hrd_parameters()语法结构被信号通知,hrd_parameters()语法结构可以是SPS语法结构或VPS语法结构的一部分。
[0565] 可能需要多个测试来检查比特流(被称为被测比特流)的一致性。对于每个测试,以下步骤按照列出的顺序执行:
[0566] (1)选择被测操作点(被称为TargetOp)。TargetOp的层标识符列表OpLayerIdList包括按照nuh_layer_id值的增序存在于与TargetOp相关联的比特流子集中的nuh_layer_id值的列表,其是存在于被测比特流中的nuh_layer_id值的子集。TargetOp的OpTid等于存在于与TargetOp相关联的比特流子集中的最高TemporalId。
[0567] (2)将TargetDecLayerIdList设置为等于TargetOp的OpLayerIdList。将HighestTid设置为等于TargetOp的OpTid,并且利用作为输入的TargetDecLayerIdList、HighestTid和被测比特流调用在条款10中指定的子比特流提取处理,并且将输出分配给BitstreamToDecode。
[0568] (3)选择适用于TargetOp的hrd_parameters()语法结构和sub_layer_hrd_parameters()语法结构。如果TargetDecLayerIdList包含存在于被测比特流中的所有nuh_layer_id值,则选择激活SPS中的(或通过没有在本说明书中指定的外部装置提供的)hrd_parameters()语法结构。否则,选择激活VPS中的(或通过没有在本说明书中指定的外部装置提供的)适用于TargetOp的hrd_parameters()的语法结构。在选定的hrd_
parameters()语法结构中,如果BitstreamToDecode是类型I比特流,则选择紧随条件“if(vcl_hrd_parameters_present_flag)”的sub_layer_hrd_parameters(HighestTid)语法结构且变量NalHrdModeFlag被设置为等于0;否则(BitstreamToDecode是类型II的比特流),选择紧随条件“if(vcl_hrd_parameters_present_flag)”(在此情况下变量NalHrdModeFlag被设置为等于0)或条件“if(nal_hrd_parameters_present_flag)”(在此情况下变量NalHrdModeFlag被设置为等于1)的sub_layer_hrd_parameters(HighestTid)语法结构。当BitstreamToDecode是类型II比特流且NalHrdModeFlag等于0时,从
BitstreamToDecode丢弃除填充数据NAL单元以外的所有的非VCL NAL单元、以及形成NAL单元流中的字节流的所有leading_zero_8bits、zero_byte、start_code_prefix_one_3bytes和trailing_zero_8bits语法元素(如在附录B中的规定)(当存在时),并且剩余比特流被分配给BitstreamToDecode。
[0569] 在另一情况下,可能需要多个测试来检查比特流(被称为被测比特流)的一致性。对于每个测试,以下步骤按照列出的顺序执行:
[0570] (1)选择被测输出层集(被称为TargetOpLs)。在TargetOpLs中由output_layer_set_idx[]表示的操作点标识被测操作点。TargetOpLs的OpLayerIdList包括按照nuh_layer_id值的增序存在于与TargetOp和TargetOpLs相关联的比特流子集中的nuh_layer_id值的列表,其是存在于被测比特流中的nuh_layer_id值的子集。TargetOp的OpTid等于存在于与TargetOp相关联的比特流子集中的最高TemporalId
[0571] (2)将TargetDecLayerIdList设置为等于针对选择的输出层集TargetOpLs的目标解码层标识符列表targetDLayerIdList,将HighestTid设置为等于TargetOp的OpTid,并且利用作为输入的TargetDecLayerIdList、HighestTid和被测比特流调用在条款10中指定的子比特流提取处理,并且将输出分配给BitstreamToDecode。
[0572] (3)选择适用于TargetOp的hrd_parameters()语法结构和sub_layer_hrd_parameters()语法结构。如果TargetDecLayerIdList包含存在于被测比特流中的所有nuh_layer_id值,则选择激活SPS中的(或通过没有在本说明书中指定的外部装置提供的)hrd_parameters()语法结构。否则,选择激活VPS中的(或通过没有在本说明书中指定的外部装置提供的)适用于TargetOp的hrd_parameters()的语法结构。在选择的hrd_
parameters()语法结构中,如果BitstreamToDecode是类型I比特流,则选择紧随条件“if(vcl_hrd_parameters_present_flag)”的sub_layer_hrd_parameters(HighestTid)语法结构且变量NalHrdModeFlag被设置为等于0;否则(BitstreamToDecode是类型II的比特流),选择紧随条件“if(vcl_hrd_parameters_present_flag)”(在此情况下变量NalHrdModeFlag被设置为等于0)或条件“if(nal_hrd_parameters_present_flag)”(在此情况下变量NalHrdModeFlag被设置为等于1)的sub_layer_hrd_parameters(HighestTid)语法结构。当BitstreamToDecode是类型II比特流且NalHrdModeFlag等于0时,从
BitstreamToDecode丢弃除填充数据NAL单元以外的所有的非VCL NAL单元、以及形成NAL单元流中的字节流的所有leading_zero_8bits、zero_byte、start_code_prefix_one_3bytes和trailing_zero_8bits语法元素(如在附录B中的规定)(当存在时),并且剩余比特流被分配给BitstreamToDecode。
[0573] 一致性解码器可符合该分条款中规定的所有要求。
[0574] (1)假设在VCL NAL单元中表示的所有VPS、SPS和PPS以及合适的缓冲期和图像时序SEI消息按照时间的方式以比特流(通过非VCLNAL单元)或通过没有在本说明书中指定的外部装置被传达给解码器,则符合特定简表、等级和级别的解码器应该能够成功地解码符合分条款C.4中规定的比特流一致性要求的所有比特流。
[0575] (2)当比特流包含被指定为保留的值的语法元素并且其被指定为解码器应该忽略包含具有保留值的语法元素的NAL单元或语法元素的值,并且比特流另外符合本说明书的规定时,一致性解码器应该以与其解码一致性比特流相同的方式解码比特流,并且应该忽略包含具有被指定为保留值的语法元素的NAL单元或语法元素。
[0576] 存在解码器的两种类型的一致性:输出时序一致性和输出顺序一致性。
[0577] 为了检查解码器的一致性,符合在分条款C.4中规定的要求简表、等级和级别的测试比特流被假想流调度器(HSS)传送到HRD和被测解码器(DUT)两者。由HRD输出的所有剪切解码图像还应该被DUT输出,由DUT输出的每个剪切解码图像应该是PicOutputFlag等于1的图像,并且针对所述由DUT输出的每个剪切解码图像,被输出的所有采样的值应该等于由指定的解码处理产生的采样的值。
[0578] 对于输出时序解码器一致性,HSS如上所述操作,其中,传送调度仅从针对指定的简表、等级和级别的比特率和CPB尺寸被限制为如附录A中的规定的SchedSelIdx的值的子集中选择,或者具有如下指定的针对指定的简表、等级和级别的比特率和CPB尺寸被限制为如附录A中的规定的“内插”传送调度。相同传送调度被用于HRD和DUT两者。
[0579] 当HRD参数和缓冲期SEI消息存在且cpb_cnt_minus1[HighestTid]大于0时,解码器应该能够对使用从使用被指定为具有峰值比特率r、CPB尺寸c(r)和初始CPB移除延迟的“内插”传送调度操作的HSS传送的比特流进行解码。
[0580] [数学式15]
[0581] (f(r)÷r)
[0582] 如下:
[0583] [表17]
[0584]
[0585] 对于任何SchedSelIdx>0和使得BitRate[SchedSelIdx-1]<=r<=BitRate[SchedSelIdx]的r,使得针对指定的简表、等级和级别的最大比特流和缓冲区尺寸的r和c(r)在如附录A中规定的限制内。InitCpbRemovalDelay[SchedSelIdx]的缓冲期可以与另一个的不同并且需要被重新计算。
[0586] 对于输出时序解码器一致性,使用如上所述的HRD,并且图像输出的时序(相对于第一比特的传送时间)针对HRD和DUT两者是相同的,为固定延迟。
[0587] 对于输出顺序解码器一致性,出现以下情况:
[0588] (1)HSS“根据需要”将比特流BitstreamToDecode从DUT传送到DUT,这意味着HSS仅在DUT需要更多的比特来进行其处理时(按照解码顺序)传送比特。这意味着对于该测试,DUT的编码图像缓冲区可以与最大解码单元的尺寸一样小。
[0589] (2)使用下述修改的HRD,并且HSS通过在比特流BitstreamToDecode中指定的调度之一来将比特流传送到HRD,使得比特率和CPB尺寸被限制为附录A中规定的限制。图像输出的顺序应该针对HRD和DUT是相同的。
[0590] (3)HRD CPB尺寸由在分条款E.2.3中规定的CpbSize[SchedSelIdx]给出,其中,如分条款C.1中的规定来选择SchedSelIdx和HRD参数。DPB尺寸由来自激活SPS(当针对当前解码图像的nuh_layer_id等于0时)或来自针对当前解码图像的nuh_layer_id值的激活层SPS的sps_max_dec_pic_buffering_minus1[HighestTid]+1给出。在一些情况下,当currLayerId等于0,或者在currLayerId大于0时针对被测操作点的currLayerId被设置为vps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid]时,如果操作点DPB信息参数op_dpb_info_parameters()针对选择的输出层集存在,则DPB尺寸由vps_max_dec_pic_buffering_minus1[HighestTid]给出,其中,currLayerId是当前解码图像的nuh_layer_id。否则,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点不存在,则DPB尺寸由来自激活SPS(当针对当前解码图像的nuh_layer_id等于0时)或来自针对当前解码图像的nuh_layer_id值的激活层SPS的sps_max_dec_pic_buffering_minus1[HighestTid]+1给出。
[0591] 在一些情况下,当currLayerId等于0,或者在currLayerId大于0时针对选择的输出层集的currLayerId被设置为vps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid]时,如果输出层集DPB信息参数oop_dpb_info_parameters()针对选择的输出层集存在,则DPB尺寸由vps_max_dec_pic_buffering_minus1[HighestTid]给出,其中,currLayerId是当前解码图像的nuh_layer_id。否则,如果输出层集DPB信息参数op_dpb_info_parameters()针对选择的输出层集不存在,则DPB尺寸由来自激活SPS(当针对当前解码图像的nuh_layer_id等于0时)或来自针对当前解码图像的nuh_layer_id值的激活层SPS的sps_max_dec_pic_buffering_minus1[HighestTid]+1给出。
[0592] 针对HRD的从CPB移除的时间是最终比特到达时间,并且解码紧接着开始。该HRD的DPB的操作在分条款C.5.2至C.5.2.3中描述。
[0593] 解码图像缓冲区包含图像存储缓冲区。针对nuh_layer_id等于0的图像存储缓冲区的数量从激活SPS得到。针对每个非零nuh_layer_id值的图像存储缓冲区的数量从针对该非零nuh_layer_id值的激活层SPS得到。每个图像存储缓冲区包括被标记为“用于参考”或者被保持以用于未来输出的解码图像。调用在分条款F.13.5.2.2中规定的用于从DPB输出和移除图像的处理,接着调用在分条款F.13.5.2.3中规定的用于图像解码、标记、附加弹出和存储的处理。“弹出”处理在分条款F.13.5.2.4中规定并且如分条款F.13.5.2.2和F.13.5.2.3中的规定被调用。
[0594] 当从CPB移除包含当前图像的访问单元的第一解码单元时,在解码当前图像之前(但是在解析当前图像的第一条带的条带头之后)从DPB输出和移除图像立即发生,并且后续操作如下所示。
[0595] 调用在分条款8.3.2中规定的用于RPS的解码处理。
[0596] 如果当前图像是NoRaslOutputFlag等于0且nuh_layer_id等于0的不是图像0的IRAP图像,则适用以下顺序步骤:
[0597] (A)变量NoOutputOfPriorPicsFlag针对被测解码器如下得到:
[0598] (i)如果当前图像是CRA图像,则NoOutputOfPriorPicsFlag被设置为等于1(无论no_output_of_prior_pics_flag的值如何)。
[0599] (ii)否则,如果从激活SPS得到的pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值与从针对前一图像的激活SPS得到的各个pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值不同,则NoOutputOfPriorPicsFlag可以(但不应该)被被测解码器设置为1,无论no_output_of_prior_pics_flag的值如何。虽然在这些条件下优选将NoOutputOfPriorPicsFlag设置为等于no_output_of_prior_pics_flag,但是在此情况下允许被测解码器将
NoOutputOfPriorPicsFlag设置为1。
[0600] (iii)否则,NoOutputOfPriorPicsFlag被设置为等于no_output_of_prior_pics_flag。
[0601] (B)针对被测解码器得到的NoOutputOfPriorPicsFlag的值被如下应用于HRD:
[0602] (i)如果NoOutputOfPriorPicsFlag等于1,则DPB中的所有图像存储缓冲区被清空,而不输出它们包含的图像,并且DPB填充度被设置为等于0。
[0603] (ii)否则(NoOutputOfPriorPicsFlag等于0),包含被标记为“不需要输出”和“未用于参考”的图像的所有图像存储缓冲区被清空(不输出),并且DPB中的所有非空图像存储缓冲区通过重复调用在分条款中规定的“弹出”处理被清空,并且DPB填充度被设置为等于0。
[0604] (iii)否则(当前图像不是NoRaslOutputFlag等于1且nuh_layer_id等于0的IRAP图像),包含被标记为“不需要输出”和“未用于参考”的图像的所有图像存储缓冲区被清空(不输出)。对于被清空的每个图像存储缓冲区而言,DPB填充度以一为单位递减。变量currLayerId被设置为等于当前解码图像的nuh_layer_id。
[0605] 如下基于当前被测操作点得到变量MaxNumReorderPics[TargetOp][currLayerId][HighestTid]、MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid]、MaxLatencyPictures[TargetOp][currLayerId][HighestTid]、
MaxDecPicBufferingMinus1[TargetOp][currLayerId][HighestTid]。
[0606] (1)当currLayerId等于0,或者在currLayerId大于0时针对被测操作点的currLayerId被设置为vps_max_num_reorder_pics[TargetOp][CurrLayerId]
[HighestTid]时,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点TargetOp存在,则MaxNumReorderPics[TargetOp][currLayerId][HighestTid]被设置为vps_max_num_reorder_pics[HighestTid]。否则,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点不存在,则MaxNumReorderPics[TargetOp][currLayerId][HighestTid]被设置为来自激活SPS(当currLayerId等于0时)或来自针对currLayerId值的激活层SPS的sps_max_num_reorder_pics[HighestTid]。
[0607] (2)当currLayerId等于0,或者在currLayerId大于0时针对被测操作点的currLayerId被设置为vps_max_latency_increase_plus1[TargetOp][CurrLayerId][HighestTid]时,如果操作点DPB信息参数opdpb_info_parameters()针对被测操作点TargetOp存在,则MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid]被设置为vps_max_latency_increase_plus1[HighestTid]。当currLayerId等于0,或者在currLayerId大于0时针对被测操作点的currLayerId被设置为VpsMaxLatencyPictures[TargetOp][CurrLayerId][HighestTid]时,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点存在,则MaxLatencyPictures[TargetOp][currLayerId][HighestTid]被设置为VpsMaxLatencyPictures[HighestTid]。否则,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点不存在,则MaxLatencyIncreasePlus1[TargetOp][currLayerId][HighestTid]被设置为激活SPS(当currLayerId等于0时)或针对currLayerId值的激活层SPS的sps_max_latency_increase_plus1[HighestTid],并且MaxLatencyPictures[TargetOp][currLayerId][HighestTid]被设置为从激活SPS(当currLayerId等于0时)或针对currLayerId值的激活层SPS得到的SpsMaxLatencyPictures[HighestTid]。
[0608] (3)当currLayerId等于0,或者在currLayerId大于0时针对被测操作点的currLayerId被设置为vps_max_dec_pic_buffering_minus1[TargetOp]时,如果操作点DPB信息参数op_dpb_info_parameters()针对选择的被测操作点TargetOp存在,则
MaxDecPicBufferingMinus1[TargetOp]被设置为vps_max_dec_pic_buffering_minus1[HighestTid]。否则,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点不存在,则MaxDecPicBufferingMinus1[TargetOp][currLayerId][HighestTid]被设置为来自激活SPS(当currLayerId等于0时)或来自针对currLayerId值的激活层SPS的sps_max_dec_pic_buffering_minus1[HighestTid]。
[0609] 当以下条件的一个或多个为真时,针对被清空的每个附加图像缓冲区,在进一步以一为单位递减DPB填充度的同时重复调用在分条款F.13.5.2.4中规定的“弹出”处理,直到以下条件都不为真:
[0610] (1)DPB中的被标记为“需要输出”的nuh_layer_id等于currLayerId的图像的数量大于来自激活序列参数集(当特定nuh_layer_id值等于0时)或MaxNumReorderPics[TargetOp][CurrLayerId][HighestTid]。
[0611] (2)如果MaxLatencyIncreasePlus1[TargetOp][CurrLayerId][HighestTid]不等于0,并且存在DPB中的nuh_layer_id等于currLayerId的被标记为“需要输出”的至少一个图像,其中,关联变量PicLatencyCount[currLayerId]大于或等于MaxLatencyPictures[TargetOp][CurrLayerId][HighestTid]。
[0612] (3)DPB中的nuh_layer_id等于currLayerId的图像的数量大于或等于MaxDecPicBuffering[TargetOp][CurrLayerId][HighestTid]。
[0613] 在从CPB移除包含当前图像的访问单元n的最后解码单元时,立即发生在该分条款中指定的处理。
[0614] 变量currLayerId被设置为等于当前当前解码图像的nuh_layer_id。
[0615] 针对DPB中的被标记为“需要输出”且nuh_layer_id值等于currLayerId的每个图像,关联变量PicLatencyCount[currLayerId]被设置为等于PicLatencyCount[currLayerId]+1。
[0616] 当前图像被视为在图像的最后解码单元被解码之后被解码。当前解码图像存储在DPB中的空图像存储缓冲区中,并且出现以下情况:
[0617] (A)如果当前解码图像的PicOutputFlag等于1,则其被标记为“需要输出”且其关联变量PicLatencyCount[currLayerId]被设置为等于0。
[0618] (B)否则(当前解码图像的PicOutputFlag等于0),其被标记为“不需要输出”。
[0619] 当前解码图像被标记为“用于短期参考”。
[0620] 当以下条件的一个或多个为真时,重复调用在分条款F.13.5.2.4中规定的“弹出”处理,直到以下条件均不为真:
[0621] (A)DPB中的nuh_layer_id等于currLayerId的被标记为“需要输出”的图像的数量大于MaxNumReorderPics[TargetOp][CurrLayerId][HighestTid]。
[0622] (B)MaxLatencyIncreasePlus1[TargetOp][CurrLayerId][HighestTid]不等于0,并且存在DPB中的nuh_layer_id等于currLayerId的被标记为“需要输出”的至少一个图像,其中,关联变量PicLatencyCount[currLayerId]大于或等于MaxLatencyPictures[TargetOp][CurrLayerId][HighestTid]。
[0623] 在其它情况下,变量MaxNumReorderPics[currLayerId][HighestTid],MaxLatencyIncreasePlus1[currLayerId][HighestTid]、MaxLatencyPictures
[currLayerId][HighestTid]、MaxDecPicBufferingMinus1[currLayerId][HighestTid]可如下得到:
[0624] (1)当currLayerId等于0,或者在currLayerId大于0时针对被测操作点的currLayerId被设置为vps_max_num_reorder_pics[CurrLayerId][HighestTid]时,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点存在,则
MaxNumReorderPics[currLayerId][HighestTid]被设置为vps_max_num_reorder_pics[HighestTid]。否则,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点不存在,则MaxNumReorderPics[currLayerId][HighestTid]被设置为来自激活SPS(当currLayerId等于0时)或来自针对currLayerId值的激活层SPS的sps_max_num_reorder_pics[HighestTid]。
[0625] (2)当currLayerId等于0,或者在currLayerId大于0时针对被测操作点的currLayerId被设置为vps_max_latency_increase_plus1[CurrLayerId][HighestTid]时,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点TargetOp存在,则MaxLatencyIncreasePlus1[currLayerId][HighestTid]被设置为vps_max_latency_increase_plus1[HighestTid]。当currLayerId等于0,或者在currLayerId大于0时针对被测操作点的currLayerId被设置为VpsMaxLatencyPictures[CurrLayerId][HighestTid]时,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点存在,则MaxLatencyPictures[currLayerId][HighestTid]被设置为VpsMaxLatencyPictures[HighestTid]。否则,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点不存在,则MaxLatencyPictures[currLayerId][HighestTid]被设置为激活SPS(当currLayerId等于0时)或针对currLayerId值的激活层SPS的sps_max_latency_increase_plus1[HighestTid],并且MaxLatencyPictures[currLayerId][HighestTid]被设置为从激活SPS(当currLayerId等于0时)或针对currLayerId值的激活层SPS得到的
SpsMaxLatencyPictures[HighestTid]。
[0626] (3)当currLayerId等于0,或者在currLayerId大于0时针对被测操作点的currLayerId被设置为vps_max_dec_pic_buffering_minus1[CurrLayerId][HighestTid]时,如果操作点DPB信息参数op_dpb_info_parameters()针对选择的被测操作点存在,则MaxDecPicBufferingMinus1[currLayerId][HighestTid]被设置为vps_max_dec_pic_buffering_minus1[HighestTid]。否则,如果操作点DPB信息参数op_dpb_info_parameters()针对被测操作点不存在,则MaxDecPicBufferingMinus1[currLayerId][HighestTid]被设置为来自激活SPS(当currLayerId等于0时)或来自针对currLayerId值的激活层SPS的sps_max_dec_pic_buffering_minus1[HighestTid]。
[0627] 当以下条件的一个或多个为真时,针对被清空的每个附加图像缓冲区,在进一步以一为单位递减DPB填充度的同时重复调用在分条款F.13.5.2.4中规定的“弹出”处理,直到以下条件都不为真:
[0628] (1)DPB中的被标记为“需要输出”的nuh_layer_id等于currLayerId的图像的数量大于MaxNumReorderPics[CurrLayerId][HighestTid]。
[0629] (2)如果MaxLatencyIncreasePlus1[CurrLayerId][HighestTid]不等于0,并且存在DPB中的nuh_layer_id等于currLayerId的被标记为“需要输出”的至少一个图像,其中,关联变量PicLatencyCount[currLayerId]大于或等于MaxLatencyPictures[CurrLayerId][HighestTid]。
[0630] (3)DPB中的nuh_layer_id等于currLayerId的图像的数量大于或等于MaxDecPicBuffering[CurrLayerId][HighestTid]。
[0631] 在从CPB移除包含当前图像的访问单元n的最后解码单元时,立即发生在该分条款中指定的处理。
[0632] 变量currLayerId被设置为等于当前当前解码图像的nuh_layer_id。
[0633] 针对DPB中的被标记为“需要输出”且nuh_layer_id值等于currLayerId的每个图像,关联变量PicLatencyCount[currLayerId]被设置为等于PicLatencyCount[currLayerId]+1。
[0634] 当前图像被视为在图像的最后解码单元被解码之后被解码。当前解码图像存储在DPB中的空图像存储缓冲区中,并且出现以下情况:
[0635] (A)如果当前解码图像的PicOutputFlag等于1,则其被标记为“需要输出”且其关联变量PicLatencyCount[currLayerId]被设置为等于0。
[0636] (B)否则(当前解码图像的PicOutputFlag等于0),其被标记为“不需要输出”。
[0637] 当前解码图像被标记为“用于短期参考”。
[0638] 当以下条件的一个或多个为真时,重复调用在分条款F.13.5.2.4中规定的“弹出”处理,直到以下条件均不为真:
[0639] (A)DPB中的nuh_layer_id等于currLayerId的被标记为“需要输出”的图像的数量大于MaxNumReorderPics[CurrLayerId][HighestTid]。
[0640] (B)MaxNumReorderPics[CurrLayerId][HighestTid]不等于0,并且存在DPB中的nuh_layer_id等于currLayerId的被标记为“需要输出”的至少一个图像,其中,关联变量PicLatencyCount[currLayerId]大于或等于MaxNumReorderPics[CurrLayerId][HighestTid]。
[0641] “弹出”处理包括以下顺序步骤:
[0642] (A)选择首先被输出的图像作为DPB中的所有图像的被标记为“需要输出”的PicOrderCntVal的最小值的图像。
[0643] (B)使用在针对nuh_layer_id等于0的图像的激活序列参数集中或在针对nuh_layer_id值等于该图像的nuh_layer_id值的激活层序列参数集中指定的一致性剪切窗口来剪切这些图像,以nuh_layer_id的升序输出剪切的图像,并且这些图像被标记为“不需要输出”。
[0644] (C)包含被标记为“未用于参考”的图像以及包括被剪切和输出的图像之一的每个图像存储缓冲区被清空。
[0645] 如果期望,VPS扩展可具有附加修改。
[0646] 参照图40,附加可包括DPB参数被发送到VPS扩展中以用于输出层集而非操作点,其中,oops_dpb_info_parameters(j)在图41中示出。
[0647] num_dpb_info_parameters指定存在于VPS扩展RBSP中的oop_dpb_parameters()语法结构的数量。num_dpb_info_parameters解码器应该在0到hum_output_layer_sets(含)范围内。
[0648] output_point_layer_set_idx[i]在目标输出层集的列表中定义索引,其中,VPS扩展中的第i个oop_dpb_info_parameters()语法结构应用于所述目标输出层集的列表。
[0649] output_point_layer_set_idx[i]的值应该在0到num_output_layer_sets(含)之间。比特流一致性要求如果i不等于j,则output_point_layer_set_idx[i]应该不等于output_point_layer_set_idx[j]。
[0650] 参照图42,oop_dpb_info_paremters(c)可被进一步修改,其中,VPS扩展中的语法可在图43中示出。
[0651] 参照图44,oop_dpb_info_paremters(c)可被进一步修改,其中,VPS扩展中的语法可在图45或图46中示出。
[0652] 针对VPS扩展中的语法的示例性替换是
[0653] [表18]
[0654]for(j=0;j<=vps_max_layer_id;j++)
oop_dpb_info_parameters(j)
[0655] 可被改变为
[0656] [表19]
[0657]for(j=0;j<=vps_max_layers_minus1;j++)
oop_dpb_info_parameters(j)
[0658] vps_max_layer_id指定CVS中的所有NAL单元的nuh_layer_id的最大允许值。vps_max_layers_minus1指定可存在于CVS中的层的最大数量,其中,层可以是例如空间可缩放层、质量可缩放层、纹理视图或深度视图。
[0659] 针对VPS扩展中的语法的另一示例性替换为:
[0660] [表20]
[0661]for(j=0;j<=vps_max_layer_id;j++)
oop_dpb_infoparameters(j)
[0662] 可被改变为
[0663] [表21]
[0664]for(j=0;j<numOutputLayers;j++)
oop_dpb_info_parameters(j)
[0665] 其中,针对选择的输出层集索引oplsIdx的numOutputLayers被得到为:
[0666] [表22]
[0667]for(k=0,numOutputLayers=0;k<=vps_max_layer_id;k++)
if(outputlayer_flag[opLsIdx][k])
targetOpLayerIdList[numOutputLayers++]=layer_id_in_nuh[k]
[0668] 针对VPS扩展中的语法的另一示例性替换为:
[0669] [表23]
[0670]for(j=0;j<=vps_max_layer_id;j++)
oop_dpb_info_parameters(j)
[0671] 可被改变为
[0672] [表24]
[0673]for(j=0;j<numDecodedLayers;j++)
oop_dpb_info_parameters(j)
[0674] 其中,针对选择的oplsIdx的numOutputLayers被得到为:
[0675] [表25]
[0676]for(k=0,numOutputLayers=0;k<=vps_max_layer_id;k++)
if(output_layer_flag[opLsIdx][k])
targetOpLayerIdListnumOutputLayers++]=layer_id_in_nuh[k]
[0677] 之后,针对选择的oplsIdx的目标解码层标识符列表targetDLayerIdList和numDecodedLayers被得到为:
[0678] [表26]
[0679]
[0680] 在一个实施例中,附加标志可被信号通知为指示oop_dpb_information_parameters是否被信号通知用于特定层,如下所示:
[0681] [表27]
[0682] vps_layer_info_present_flag[j]等于1指定oop_dpb_info_parameters针对特定输出层集的第j层存在。vps_layer_info_present_flag[j]等于0指定oop_dpb_info_parameters针对特定输出层集的第j层不存在。
[0683] 在另一实施例中,num_dpb_info_parameters decoders应该在0到1024(含)范围内。在另一实施例中,可使用不同的固定数量代替1024。
[0684] 在备选实施例中,output_point_layer_set_idx[i]在0到1023(含)范围内。
[0685] 参照图47,如果DPB参数被发送到VPS扩展中以用于独立于输出层集和操作点的每个层,则可使用另一修改的VPS扩展和layer_dpb_info(i)。
[0686] 参照图48,当从VPS信号通知的语法元素vps_max_sub_layer_minus1被用于所有层而不是在oop_dpb_info_parameters(id)/op_dpb_info_parameters(id)中单独发信号通知的情况下,可使用修改的layer_dpb_info(i)。
[0687] 参照图49A和图49B,示出示例性的修改vps_extension。修改vps_extension包括新的语法,即max_sub_layers_vps_predict_flag[i]、max_sub_layers_vps_minus1[i]、num_dpb_info_parameters、output_point_layer_set_idx[i]、oop_dpb_maxbuffering_parameters(i)和layer_dpb_info_parameters(i)。num_output_layer_sets指定针对用output_layer_set_index[i]和output_layer_flag[lsIdx][j]指定的输出层的层集的数量。当不存在时,num_output_layer_sets的值被推断为等于0。描述输出层的层集是输出层集。
[0688] ′max_sub_layers_vps_predict_flag′[i]等于1指定max_sub_layers_vps_minus1[i]被推断为等于max_sub_layers_vps_minus1[i-1]。
[0689] max_sub_layers_vps_predict_flag[i]等于0指定max_sub_layers_vps_minus1[i]被显式地信号通知。max_sub_layers_vps_predict_flag[0]的值被推断为等于0。
[0690] ′max_sub_layers_vps_predict_flag′[i]加1指定可存在于针对nuh_layer_id等于i的层的CVS中的时间子层的最大数量。max_vps_sub_layers_vps_minus1[i]的值应该在0到6(含)范围内。在一些情况下,max_sub_layers_vps_minus1[i]用于推断SPS语法元素sps_max_sub_layers_minus1。当max_sub_layers_vps_predict_flag[i]等于1时,max_sub_layers_vps_minus1[i]被推断为等于max_sub_layers_vps_minus1[i-1]。max_sub_layers_vps_minus1[0]的值被推断为等于vps_max_sub_layers_minus1。
[0691] 针对0到num_dpb_info_parameters-1(含)范围中的setId的变量MaxSubLayers[setId]如下得到:
[0692] [表28]
[0693]
[0694] ′num_dpb_info_parameters′指定存在于VPS扩展RBSP中的oop_dpb_maxbuffering_parameters(i)语法结构的数量。num_dpb_info_parameters解码器应该在0到numOutputLayerSets(含)范围内。
[0695] ′output_point_layer_set_idx′[i]在输出层集的列表中定义索引,其中,VPS扩展中的第i个oop_dpb_maxbuffering_parameters(i)语法结构应用于所述输出层集的列表。
[0696] output_point_layer_set_idx[i]的值应该在0到numOutputLayerSets(含)之间。比特流一致性要求。
[0697] 如果i不等于j,则output_point_layer_set_idx[i]应该不等于output_point_layer_set_idx[j]
[0698] 参照图50,oop_dpb_maxbuffering_parameters指定′sub_layer_vps_buf_info_present_flag′[i]、′max_vps_dec_pic_buffering_minus1′[i][j]。
[0699] ′sub_layer_vps_buf_info_present_flag′[i]等于1指定max_vps_dec_pic_buffering_minus1[i][j]针对MaxSubLayers[i]子层存在。sub_layer_vps_buf_info_present_flag[i]等于0指定max_vps_dec_pic_buffering_minus1[i][MaxSubLayers[i]-1]的值应用于所有子层。
[0700] ′max_vps_dec_pic_buffering_minus1′[i][j]加1指定当HighestTid等于j时,在与索引i相关联的输出层集中的针对nuh_layer_id等于highestLayerId的层对于CVS的解码图像缓冲区所需要的以图像存储缓冲区为单位的最大尺寸。max_vps_dec_pic_buffering_minus1[i][j]的值应该在0到MaxDpbSize-1(如分条款A.4中的规定)(含)的范围内。当j大于0时,max_vps_dec_pic_buffering_minus1[i][j]应该大于或等于max_vps_dec_pic_buffering_minus1[i][j-1]。在一些情况下,使用max_vps_dec_pic_buffering_minus1[i][j]来推断SPS语法元素sps_max_dec_pic_buffering_minus1[j]的值。当针对0到MaxSubLayers[i]-2(含)的范围内的i不存在max_vps_dec_pic_puffering_minus1[i][j]时,由于sub_layer_vps_buf_info_present_flag[i]等于0,因此推断其等于max_vps_dec_pic_buffering_minus1[i][MaxSubLayers[i]-1]。
[0701] 针对j的每个值的max_vps_dec_pic_buffering_minus1[0][j]的值被推断为等于vps_max_dec_pic_buffering_minus1[j]。
[0702] 参照图51,layer_dpb_info_parameters指定′sub_layer_vps_ordering_info_present_flag′[i]、max_vps_num_reorder_pics[i][j]、′max_vps_latency_increase_plus1′[i][j]。
[0703] ′sub_layer_vps_ordering_info_present_flag′[i]等于1指定针对max_sub_layers_vps_minus1+1个子层存在max_vps_num_reorder_pics[i][j]和max_vps_latency_increase_plus1[i][j]。
[0704] sub_layer_vps_ordering_info_present_flag[i]等于0指定max_vps_num_reorder_pics[i][vps_max_sub_layers_minus1]和max_vps_latency_increase_plus1[i][max_sub_layers_vps_minus1]的值应用于所有子层。
[0705] ′max_vps_num_reorder_pics′[i][j]表示当HighestTid等于j时,针对nuh_layer_id等于i的层可以按照解码顺序在CVS中的任何图像之前并且按照输出顺序在该图像之后的图像的最大允许数量。max_vps_num_reorder_pics[i][j]的值应该在0到max_vps_dec_pic_buffering_minus1[i][j](含)的范围内。当j大于0时,max_vps_num_reorder_pics[i][j]应该大于或等于max_vps_num_reorder_pics[i][j-1]。在一些情况下,使用max_vps_num_reorder_pics[i][j]来推断SPS语法元素sps_max_num_reorder_pics[j]的值。当针对0到max_sub_layers_vps_minus1[i]-1(含)的范围内的i不存在max_vps_num_reorder_pics[i][j]时,由于sub_layer_vps_ordering_info)present_flag[i]等于0,因此推断其等于max_vps_num_reorder_pics[i][max_sub_layers_vps_minus1[i]]。
[0706] max_vps_latency_increase_plus1[i][j]不等于0被用于计算VpsMaxLatencyPictures[i][j]的值,VpsMaxLatencyPictures[i][j]指定当HighestTid等于j时,针对nuh_layer_id等于i的层可以按照输出顺序在CVS中的任何图像之前并且按照解码顺序在该图像之后的图像的最大允许数量。
[0707] 当max_vps_latency_increase_plus1[i][j]不等于0时,VpsMaxLatencyPictures[i][j]的值可被如下指定:
[0708] VpsMaxLatencyPictures[i][j]=max_vps_num_reorder_pics[i][j]+max_vps_latency_increase_plus1[i][j]-1。
[0709] 当max_vps_latency_increase_plus1[i][j]等于0时,没有相应限制被表达。
[0710] max_vps_latency_increase_plus1[j][k]的值应该在0到232-2(含)的范围内。在一些情况下,使用max_vps_latency_increase_plus1[i][j]来推断SPS语法元素sps_max_latency_increase_plus1[j]的值。当针对0到max_sub_layers_vps_minus1[i]-1(含)的范围内的i不存在max_vps_latency_increase_plus1[i][j]时,由于sub_layer_vps_ordering_info_present_flag[i]等于0,因此推断其等于max_vps_latency_increase_plus1[i][max_sub_layers_vps_minus1[i]]。
[0711] 参照图52,示出示例性的修改vps_extension。修改vps_extension包括对图49中的语法的进一步修改的新的语法,即被条件性低信号通知的sub_layer_vps_buf_info_predict_flag[i]、sub_layer_vps_ordering_info_predict_flag[i]。sub_layer_vps_buf_info_predict_flag[i]等于1指定针对j的每个值,max_vps_dec_pic_buffering_minus1[i][j]被推断为等于max_vps_dec_pic_buffering_minus1[i-1][j]。
[0712] sub_layer_vps_buf_info_predict_flag[i]等于0指定针对j的至少一个值的max_vps_dec_pic_buffering_minus1[i][j]被显式地信号通知。sub_layer_vps_buf_info_predict_flag[0]被推断为等于0。当不存在时,sub_layer_vps_buf_info_predict_flag[i]被推断为等于0。
[0713] sub_layer_vps_ordering_info_predict_flag[i]等于1指定语法元素sub_layer_vps_ordering_info_present_flag[i]、max_vps_num_reorder_pics[i][j]和max_vps_latency_increase_plus1[i][j]被推断为分别等于sub_layer_vps_ordering_info_present_flag[i-1]、max_vps_num_reorder_pics[i-1][j]和max_vps_latency_increase_plus1[i1][j]。sub_layer_vps_ordering_info_predict_flag[i]等于0指定表示语法元素sub_layer_vps_ordering_info_present_flag[i],max_vps_num_reorder_pics[i][j]和max_vps_latency_increase_plus1[i][j]被显式地信号通知。当不存在时,sub_layer_vps_ordering_info_predict_flag[i]的值被设置为等于0。
[0714] 图52的其它语法元素和它们的语义意义与图49中的相同。
[0715] 参照图53,示出示例性的修改vps_extension。修改vps_extension包括图49中的语法的进一步修改。与图49中的针对输出层集i中的最高层id用信号通知oop_dpb_maxbuffering_parameters(i)参数的单个集合相比,在图53中,针对特定输出层集i的每个层j用信号通知oop_dpb_maxbuffering_parameters(i,j)。
[0716] 参照图54,oop_dpb_maxbuffering_parameters指定sub_layer_vps_buf_info_present_flag[i][k]、max_vps_dec_pic_buffering_minus1[i][k][j]。
[0717] sub_layer_vps_buf_info_present_flag[i][k]等于1指定针对max_sub_layers_vps_minus1[k]个子层存在max_vps_dec_pic_buffering_minus1[i][k][j]。sub_layer_vps_buf_info_present_flag[i][k]等于0指定max_vps_dec_pic_buffering_minus1[i][k][max_sub_layers_vps_minus1[k]]的值应用于所有子层。
[0718] max_vps_dec_pic_buffering_minus1[i][k][j]加1指定当HighestTid等于j时,在与索引i相关联的输出层集中的针对nuh_layer_id等于k的层对于CVS的解码图像缓冲区所需要的以图像存储缓冲区为单位的最大尺寸。max_vps_dec_pic_buffering_minus1[i][k][j]的值应该在0到MaxDpbSize-1(如分条款A.4中的规定)(含)的范围内。
[0719] 当j大于0时,max_vps_dec_pic_buffering_minus1[i][k][j]应该大于或等于max_vps_dec_pic_buffering_minus1[i][k][j-1],其中,使用max_vps_dec_pic_buffering_minus1[i][k][j-1]来推断SPS语法元素sps_max_dec_pic_buffering_minus1[j]的值。
[0720] 当针对0到max_sub_layers_vps_minus1[k]-1(含)的范围内的i不存在max_vps_dec_pic_buffering_minus1[i][j]时,由于sub_layer_vps_buf_info_present_flag[i][k]等于0,因此推断其等于max_vps_dec_pic_buffering_minus_1[i][k][max_sub_layers_vps_minus_1[k]]。
[0721] 针对i和j的每个值的max_vps_dec_pic_buffering_minus_1[i][0][j]的值被推断为等于vps_max_dec_pic_buffering_minus1[j]。
[0722] 参照图55,oop_dpb_maxbuffering_parameters指定sub_layer_vps_buf_info_present_flag[i][k]、max_vps_dec_pic_buffering_minus1[i][k][j]。图55是与图54中的针对oop_dpb_maxbuffering_parameters的语法相比的针对oop_dpb_maxbuffering_parameters的变化语法。
[0723] 针对0到num_dpb_info_parameters-1(含)范围内的setID的变量MaxSubLayers[setId][k]如下得到:
[0724] [表29]
[0725]
[0726] 在此情况下,将在图55中定义oop_dpb_maxbuffering_parametersparameters(i,k)。
[0727] 参照图56,示出示例性的修改vps_extension。修改vps_extension包括图52中的语法的进一步修改的新的语法。与图52中的针对输出层集i中的最高层id用信号通知oop_dpb_maxbuffering_parameters(i)参数的单个集合相比,在图53中,针对特定输出层集i的每个层j用信号通知该oop_dpb_maxbuffering_parameters(i,j)。
[0728] oop_dpb_maxbuffring_parameters(i,k)在图57中示出。
[0729] 参照图58,oop_dpb_maxbuffering_parameters指定sub_layer_vps_buf_info_present_flag[i][k]、max_vps_dec_pic_buffering_minus1[i][k][j]。图58是与图57中的针对oop_dpb_maxbuffering_parameters的语法相比的针对oop_dpb_maxbuffering_parameters的变化语法。
[0730] 针对0到num_dpb_info_parameters-1(含)范围内的setID的变量MaxSubLayers[setId][k]如下得到:
[0731] [表30]
[0732]
[0733] 在此情况下,将在图58中定义oop_dpb_maxbuffering_parametersparameters(i,k)。
[0734] 参照图59,示出示例性的修改vps_extension。修改vps_extension包括图56中的语法的进一步修改的新的语法,即,被条件性地信号通知的附加标志layer_dpb_info_parameters_presence_flag。layer_dpb_info_parameters_presence_flag使得用信号通知VPS扩展中的layer_dpb_info_parameters(i)是可选的。
[0735] layer_dpb_info_parameters_presence_flag[i]等于1指定针对vps_max_num_layers_minus1个层存在语法元素sub_layer_vps_ordering_info_predict_flag[i]和layer_dpb_info_parameters(i)。layer_dpb_info_parameters_presence_flag[i]等于0指定针对vps_max_num_layers_minus1个层不存在语法元素sub_layer_vps_ordering_info_predict_flag[i]和layer_dpb_info_parameters(i)。
[0736] 在图60中示出oop_dpb_maxbuffring_parameters(i,k)。
[0737] 参照图61,oop_dpb_maxbuffering_parameters指定sub_layer_vps_buf_info_present_flag[i][k]、max_vps_dec_pic_buffering_minus1[i][k][j]。图61是与图60中的针对oop_dpb_maxbuffering_parameters的语法相比的针对oop_dpb_maxbuffering_parameters的变化语法。
[0738] 针对0到num_dpb_info_parameters-1(含)范围内的setID的变量MaxSubLayers[setId][k]如下得到:
[0739] [表31]
[0740]
[0741] 在该情况中,将在图61中定义oop_dpb_maxbuffering_parametersparameters(i,k)。
[0742] 针对VPS扩展中的语法的示例性替换为:
[0743] [表32]
[0744]for(k=1;j<=vps_max_layers_minus1;k++)
oop_dpb_maxbuffering_parameters(k)
[0745] 可被改变为
[0746] [表33]
[0747]for(k=0;k<=vps_max_layers_minus1;k++)
oop_dpb_maxbuffering_parameters(k)
[0748] 因此索引k可以从0而非1开始。
[0749] 针对VPS扩展中的语法的示例性替换为:
[0750] [表34]
[0751]for(k=0;k<=vps_max_layers_minus1;k++)
oop_dpb_maxbuffering_parameters(k)
[0752] 可被改变为:
[0753] [表35]
[0754]for(k=0;k<=vps_max_layer_id;k++)
oop_dpb_maxbuffering_parameters(k)
[0755] vps_max_layer_id指定CVS中的所有NAL单元的nuh_layer_id的最大允许值。vps_max_layers_minus1指定可存在于CVS中的层的最大数量,其中,层可以例如使空间可缩放层、质量可缩放层、纹理视图或深度视图。
[0756] 针对VPS扩展中的语法的另一示例性替换为:
[0757] [表36]
[0758]for(k=1;k<=vps_max_layers_minus1;k++)
oop_dpb_maxbuffering_parameters(I,k)
[0759] 可被改变为
[0760] [表37]
[0761]for(k=1;k<umOutputLayers;k++)
oop_dpb_maxbuffering_parameters(I,k)
[0762] 其中,numOutputLayers被得到为:
[0763] [表38]
[0764]
[0765] 或其可被改变为:
[0766] [表39]
[0767]
[0768] 在一个实施例中,附加标志可被信号通知以指示oop_dpb_information_parameters是否针对特定层被信号通知,如下所示:
[0769] [表40]
[0770]
[0771] vps_layer_info_present_flag[k]等于1指定针对特定输出层集的第k层存在oop_dpb_maxbuffering_parameters。vps_layer_info_present_flag[k]等于0指定针对特定输出层集的第k层不存在oop_dpb_maxbuffering_parameters。
[0772] HRD所需要的非VCL NAL单元的语法元素(或它们的针对一些其它元素的默认值)在条款7的语义子条款、附录D和E中指定。
[0773] 使用两种类型的HRD参数集(NAL HRD和VCL HRD参数)。HRD参数集通过hrd_parameters()语法结构被信号通知,hrd_parameters()语法结构可以是SPS语法结构或VPS语法结构的一部分。
[0774] 可能需要多个测试来检查比特流(被称为被测比特流)的一致性。对于每个测试,以下步骤按照列出的顺序执行:
[0775] (1)选择被测输出层集(被称为TargetOpLs)。在TargetOpLs中由output_layer_set_idx[ ]表示的操作点标识被测操作点。TargetOpLs的输出层标识符列表OpLayerIdList包括按照nuh_layer_id值的增序存在于与TargetOp和TargetOpLs相关联的比特流子集中的nuh_layer_id值的列表,其是存在于被测比特流中的nuh_layer_id值的子集。TargetOp的OpTid等于存在于与TargetOp相关联的比特流子集中的最高TemporalId。
[0776] (2)将TargetDecLayerIdList设置为等于针对选择的输出层集TargetOpLs的目标解码层标识符列表targetDLayerIdList,将HighestTid设置为等于TargetOp的OpTid,并且利用作为输入的TargetDecLayerIdList、HighestTid和被测比特流调用在条款10中指定的子比特流提取处理,并且将输出分配给BitstreamToDecode。
[0777] (3)选择适用于TargetOp的hrd_parameters()语法结构和sub_layer_hrd_parameters()语法结构。如果TargetDecLayerIdList包含存在于被测比特流中的所有nuh_layer_id值,则选择激活SPS中的(或通过没有在本说明书中指定的外部装置提供的)hrd_parameters()语法结构。否则,选择激活VPS中的(或通过没有在本说明书中指定的外部装置提供的)适用于TargetOp的hrd_parameters()的语法结构。在选定的hrd_
parameters()语法结构中,如果BitstreamToDecode是类型I比特流,则选择紧随条件“if(vcl_hrd_parameters_present_flag)”的sub_layer_hrd_parameters(HighestTid)语法结构且变量NalHrdModeFlag被设置为等于0;否则(BitstreamToDecode是类型II的比特流),选择紧随条件“if(vcl_hrd_parameters_present_flag)”(在此情况下变量NalHrdModeFlag被设置为等于0)或条件“if(nal_hrd_parameters_present_flag)”(在此情况下变量NalHrdModeFlag被设置为等于1)的sub_layer_hrd_parameters(HighestTid)语法结构。当BitstreamToDecode是类型II比特流且NalHrdModeFlag等于0时,从
BitstreamToDecode丢弃除填充数据NAL单元以外的所有的非VCL NAL单元、以及形成NAL单元流中的字节流的所有leading_zero_8bits、zero_byte、start_code_prefix_one_3bytes和trailing_zero_8bits语法元素(如在附录B中的规定)(当存在时),并且剩余比特流被分配给BitstreamToDecode。
[0778] 一致性解码器可符合该分条款中规定的所有要求。
[0779] (1)假设在VCL NAL单元中表示的所有VPS、SPS和PPS以及合适的缓冲期和图像时序SEI消息按照时间的方式以比特流(通过非VCLNAL单元)或通过没有在本说明书中指定的外部装置被传达给解码器,则符合特定简表、等级和级别的解码器应该能够成功地解码符合分条款C.4中规定的比特流一致性要求的所有比特流。
[0780] (2)当比特流包含被指定为保留的值的语法元素并且其被指定为解码器应该忽略包含具有保留值的语法元素的NAL单元或语法元素的值,并且比特流另外符合本说明书的规定时,一致性解码器应该以与其解码一致性比特流相同的方式解码比特流,并且应该忽略包含具有被指定为保留值的语法元素的NAL单元或语法元素。
[0781] 存在解码器的两种类型的一致性:输出时序一致性和输出顺序一致性。
[0782] 为了检查解码器的一致性,符合在分条款C.4中规定的要求简表、等级和级别的测试比特流被假想流调度器(HSS)传送到HRD和被测解码器(DUT)两者。由HRD输出的所有剪切解码图像还应该被DUT输出,由DUT输出的每个剪切解码图像应该是PicOutputFlag等于1的图像,并且针对所述由DUT输出的每个剪切解码图像,被输出的所有采样的值应该等于由指定的解码处理产生的采样的值。
[0783] 对于输出时序解码器一致性,HSS如上所述操作,其中,传送调度仅从针对指定的简表、等级和级别的比特率和CPB尺寸被限制为如附录A中的规定的SchedSelIdx的值的子集中选择,或者具有如下指定的针对指定的简表、等级和级别的比特率和CPB尺寸被限制为如附录A中的规定的“内插”传送调度。相同传送调度被用于HRD和DUT两者。
[0784] 当HRD参数和缓冲期SEI消息存在且cpb_cnt_minus1[HighestTid]大于0时,解码器应该能够对使用从使用被指定为具有峰值比特率r、CPB尺寸c(r)和初始CPB移除延迟的“内插”传送调度操作的HSS传送的比特流进行解码。
[0785] [数学式16]
[0786] (f(r)÷r)
[0787] 如下:
[0788] [表41]
[0789]
[0790] 对于任何SchedSelIdx>0和使得BitRate[SchedSelIdx-1]<=r<=BitRate[SchedSelIdx]的r,使得针对指定的简表、等级和级别的最大比特流和缓冲区尺寸的r和c(r)在如附录A中规定的限制内。InitCpbRemovalDelay[SchedSelIdx]的缓冲期可以与另一个的不同并且需要被重新计算。
[0791] 对于输出时序解码器一致性,使用如上所述的HRD,并且图像输出的时序(相对于第一比特的传送时间)针对HRD和DUT两者是相同的,为固定延迟。
[0792] 对于输出顺序解码器一致性,出现以下情况:
[0793] (1)HSS“根据需要”将比特流BitstreamToDecode从DUT传送到DUT,这意味着HSS仅在DUT需要更多的比特来进行其处理时(按照解码顺序)传送比特。这意味着对于该测试,DUT的编码图像缓冲区可以与最大解码单元的尺寸一样小。
[0794] (2)使用下述修改的HRD,并且HSS通过在比特流BitstreamToDecode中指定的调度之一来将比特流传送到HRD,使得比特率和CPB尺寸被限制为附录A中规定的限制。图像输出的顺序应该针对HRD和DUT是相同的。
[0795] (3)HRD CPB尺寸由在分条款E.2.3中规定的CpbSize[SchedSelIdx]给出,其中,如分条款C.1中的规定来选择SchedSelIdx和HRD参数。DPB尺寸由来自激活SPS(当针对当前解码图像的nuh_layer_id等于0时)或来自针对当前解码图像的nuh_layer_id值的激活层SPS的sps_max_dec_pic_buffering_minus1[HighestTid]+1给出。
[0796] 在一些情况下,如果输出层集DPB信息参数oop_dpb_maxbuffering_parameters()针对选择的输出层集存在,则DPB尺寸由max_vps_dec_pic_buffering_minus1[CurrLayerId][HighestTid]给出,其中,currLayerId是当前解码图像的nuh_layer_id。否则,如果输出层集DPB信息参数oop_dpb_maxbuffering_parameters()针对选择的输出层集不存在,则DPB尺寸由来自激活SPS(当针对当前解码图像的nuh_layer_id等于0时)或来自针对当前解码图像的nuh_layer_id值的激活层SPS的sps_max_dec_pic_buffering_minus1[HighestTid]+1给出。
[0797] 针对HRD的从CPB移除的时间是最终比特到达时间,并且解码紧接着开始。该HRD的DPB的操作在分条款C.5.2至C.5.2.3中描述。
[0798] 解码图像缓冲区包含图像存储缓冲区。针对nuh_layer_id等于0的图像存储缓冲区的数量从激活SPS得到。针对每个非零nuh_layer_id值的图像存储缓冲区的数量从针对该非零nuh_layer_id值的激活层得到。每个图像存储缓冲区包括被标记为“用于参考”或者被保持以用于未来输出的解码图像。调用在分条款F.13.5.2.2中规定的用于从DPB输出和移除图像的处理,接着调用在分条款F.13.5.2.3中规定的用于图像解码、标记、附加弹出和存储的处理。“弹出”处理在分条款F.13.5.2.4中规定并且如分条款F.13.5.2.2和F.13.5.2.3中的规定被调用。
[0799] 当从CPB移除包含当前图像的访问单元的第一解码单元时,在解码当前图像之前(但是在解析当前图像的第一条带的条带头之后)从DPB输出和移除图像立即发生,并且后续操作如下所示。
[0800] 调用在分条款8.3.2中规定的用于RPS的解码处理。
[0801] (1)如果当前图像是NoRaslOutputFlag等于0且nuh_layer_id等于0的不是图像0的IRAP图像,则适用以下顺序步骤:
[0802] (A)变量NoOutputOfPriorPicsFlag针对被测解码器如下得到:
[0803] (i)如果当前图像是CRA图像,则NoOutputOfPriorPicsFlag被设置为等于1(无论no_output_of_prior_pics_flag的值如何)。
[0804] (ii)否则,如果从激活SPS得到的pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值与从针对前一图像的激活SPS得到的各个pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值不同,则NoOutputOfPriorPicsFlag可以(但不应该)被被测解码器设置为1,无论no_output_of_prior_pics_flag的值如何。虽然在这些条件下优选将NoOutputOfPriorPicsFlag设置为等于no_output_of_prior_pics_flag,但是在此情况下允许被测解码器将
NoOutputOfPriorPicsFlag设置为1。
[0805] (iii)否则,NoOutputOfPriorPicsFlag被设置为等于no_output_of_prior_pics_flag。
[0806] (B)针对被测解码器得到的NoOutputOfPriorPicsFlag的值被如下应用于HRD:
[0807] (i)如果NoOutputOfPriorPicsFlag等于1,则DPB中的所有图像存储缓冲区被清空,而不输出它们包含的图像,并且DPB填充度被设置为等于0。
[0808] (ii)否则(NoOutputOfPriorPicsFlag等于0),包含被标记为“不需要输出”和“未用于参考”的图像的所有图像存储缓冲区被清空(不输出),并且DPB中的所有非空图像存储缓冲区通过重复调用在分条款中规定的“弹出”处理被清空,并且DPB填充度被设置为等于0。
[0809] (iii)否则(当前图像不是NoRaslOutputFlag等于1且nuh_layer_id等于0的IRAP图像),包含被标记为“不需要输出”和“未用于参考”的图像的所有图像存储缓冲区被清空(不输出)。对于被清空的每个图像存储缓冲区而言,DPB填充度以一为单位递减。变量currLayerId被设置为等于当前解码图像的nuh_layer_id。
[0810] 如下得到变量MaxNumReorderPics[currLayerId][HighestTid]、MaxLatencyIncreasePlus1[currLayerId][HighestTid]、MaxLatencyPictures
[currLayerId][HighestTid]、MaxDecPicBufferingMinus1[currLayerId][HighestTid]。
[0811] 如果层DPB信息参数layer_dpb_info_parameters()存在于VPS中,则当currLayerId等于0时,MaxNumReorderPics[currLayerId][HighestTid]被设置为vps_max_num_reorder_pics[HighestTid],或者在currLayerId大于0时,MaxNumReorderPics[currLayerId][HighestTid]被设置为currLayerId被设置为max_vps_num_reorder_pics[CurrLayerId][HighestTid]。否则,如果层DPB信息参数layer_dpb_info_parameters()不存在,则MaxNumReorderPics[currLayerId][HighestTid]被设置为来自激活SPS(当currLayerId等于0时)或来自针对currLayerId值的激活层SPS的sps_max_num_reorder_pics[HighestTid]。
[0812] 如果层DPB信息参数layer_dpb_info_parameters()存在于VPS中,则当currLayerId等于0时,MaxLatencyIncreasePlus1[currLayerId][HighestTid]被设置为vps_max_latency_increase_plus1[HighestTid],或者当currLayerId大于0时,
MaxLatencyIncreasePlus1[currLayerId][HighestTid]被设置为针对currLayerId的max_vps_latency_increase_plus1[CurrLayerId][HighestTid]。如果层DPB信息参数layer_dpb_info_parameters()存在于VPS中,当currLayerId等于0时,MaxLatencyPictures[currLayerId][HighestTid]被设置为SpsMaxLatencyPictures[HighestTid],或者当currLayerId大于0时,MaxLatencyPictures[currLayerId][HighestTid]被设置为针对currLayerId的VpsMaxLatencyPictures[CurrLayerId][HighestTid]。否则,如果层DPB信息参数layer_dpb_info_parameters( )针对被测操作点不存在,则
MaxLatencyIncreasePlus1[currLayerId][HighestTid]被设置为激活SPS(当currLayerId等于0时)或针对currLayerId值的激活层SPS的sps_max_latency_increase_plus1
[HighestTid],并且MaxLatencyPictures[currLayerId][HighestTid]被设置为从激活SPS(当currLayerId等于0时)或针对currLayerId值的激活层SPS得到的
SpsMaxLatencyPictures[currLayerId][HighestTid]。
[0813] 如果操作点DPB信息参数oop_dpb_maxbuffering_parameters()针对选择的输出层集存在,则当currLayerId等于0,MaxDecPicBufferingMinus1[currLayerId][HighestTid]被设置为vps_max_dec_pic_buffering_minus1[HighestTid],或者当currLayerId大于0时,MaxDecPicBufferingMinus1[currLayerId][HighestTid]被设置为针对被测操作点的针对currLayerId的max_vps_dec_pic_buffering_minus1
[CurrLayerId][HighestTid]。否则,如果操作点DPB信息参数oop_dpb_maxbuffering_parameters()针对被测操作点不存在,则MaxDecPicBufferingMinus1[currLayerId][HighestTid]被设置为来自激活SPS(当currLayerId等于0时)或来自针对currLayerId值的激活层SPS的sps_max_dec_pic_buffering_minus1[HighestTid]。
[0814] 当以下条件的一个或多个为真时,针对被清空的每个附加图像缓冲区,在进一步以一为单位递减DPB填充度的同时重复调用在分条款F.13.5.2.4中规定的“弹出”处理,直到以下条件都不为真:
[0815] (1)DPB中的被标记为“需要输出”的nuh_layer_id等于currLayerId的图像的数量大于MaxNumReorderPics[CurrLayerId][HighestTid]。
[0816] (2)如果MaxLatencyIncreasePlus1[TargetOp][CurrLayerId][HighestTid]不等于0,并且存在DPB中的nuh_layer_id等于currLayerId的被标记为“需要输出”的至少一个图像,其中,关联变量PicLatencyCount[currLayerId]大于或等于MaxLatencyPictures[TargetOp][CurrLayerId][HighestTid]。
[0817] (3)DPB中的nuh_layer_id等于currLayerId的图像的数量大于或等于MaxDecPicBuffering[TargetOp][CurrLayerId][HighestTid]。
[0818] 在从CPB移除包含当前图像的访问单元n的最后解码单元时,立即发生在该分条款中指定的处理。
[0819] 变量currLayerId被设置为等于当前当前解码图像的nuh_layer_id。
[0820] 针对DPB中的被标记为“需要输出”且nuh_layer_id值等于currLayerId的每个图像,关联变量PicLatencyCount[currLayerId]被设置为等于PicLatencyCount[currLayerId]+1。
[0821] 当前图像被视为在图像的最后解码单元被解码之后被解码。当前解码图像存储在DPB中的空图像存储缓冲区中,并且出现以下情况:
[0822] (A)如果当前解码图像的PicOutputFlag等于1,则其被标记为“需要输出”且其关联变量PicLatencyCount[currLayerId]被设置为等于0。
[0823] (B)否则(当前解码图像的PicOutputFlag等于0),其被标记为“不需要输出”。
[0824] 当前解码图像被标记为“用于短期参考”。
[0825] 当以下条件的一个或多个为真时,重复调用在分条款F.13.5.2.4中规定的“弹出”处理,直到以下条件均不为真:
[0826] (A)DPB中的nuh_layer_id等于currLayerId的被标记为“需要输出”的图像的数量大于MaxNumReorderPics[CurrLayerId][HighestTid]。
[0827] (B)MaxNumReorderPics[CurrLayerId][HighestTid]不等于0,并且存在DPB中的nuh_layer_id等于currLayerId的被标记为“需要输出”的至少一个图像,其中,关联变量PicLatencyCount[currLayerId]大于或等于MaxNumReorderPics[CurrLayerId][HighestTid]。
[0828] “弹出”处理包括以下顺序步骤:
[0829] (A)选择首先被输出的图像作为DPB中的所有图像的具有被标记为“需要输出”的PicOrderCntVal的最小值的图像。
[0830] (B)使用在针对nuh_layer_id等于0的图像的激活SPS中或在针对nuh_layer_id值等于该图像的nuh_layer_id值的激活层SPS中指定的一致性剪切窗口来剪切这些图像,以nuh_layer_id的升序输出剪切的图像,并且这些图像被标记为“不需要输出”。
[0831] (C)包含被标记为“未用于参考”的图像以及包括被剪切和输出的图像之一的每个图像存储缓冲区被清空。
[0832] 参照图62,示出了示例性的修改序列参数集(sps)语法seq_parameter_set_rbsp。修改sps包括sps_dpb_params_present_flag。在一个实施例中,基于该标志的值并基于nuh_layer_id的值,可以不用信号通知一些语法元素(例如sps_sub_layer_ordering_info_present_flag、sps_max_dec_pic_buffering_minus1[i]、sps_max_num_reorder_pics[i]、sps_max_latency_incease_plus1[i])。
[0833] sps_dpb_params_present_flag等于0指定针对nuh_layer_id>0的SPS,在该SPS中不存在语法元素sps_sub_layer_ordering_info_present_flag、sps_max_dec_pic_buffering_minus1[i]、sps_max_num_reorder_pics[i]、sps_max_latency_increase_plus1[i]。这些参数的值被设置为等于在激活VPS扩展中用信号通知的sub_layer_vps_buf_info_present_flag[i]、max_vps_num_reorder_pics[i][j]和max_vps_latency_increase_plus1[i][j]参数的值。sps_dpb_params_present_flag等于1指定针对nuh_layer_id>0的SPS,在该SPS中存在语法元素sps_sub_layer_ordering_info_present_flag、sps_max_dec_pic_buffering_minus1[i]、sps_max_num_reorder_pics[i]、sps_max_latency_increase_plus1[i]。
[0834] 在另一实施例中,可使用已知固定数量的比特(而非u(v)而非ue(v))来用信号通知语法元素中的一个或多个。例如,可以使用u(8)或u(16)或u(32)或u(64)来用信号通知它们。
[0835] 在另一实施例中,语法元素中的一个或多个可以用ue(v)或诸如u(v)编码的一些其它编码方案(而非固定数量的比特)被信号通知。
[0836] 在另一个实施例中,相比于所描述的语法和语义,可通过添加plus1或plus2或通过减去minus1或minus2来改变各种语法元素的名称和它们的语义。
[0837] 在另一实施例中,可以在比特流中的任何位置按照每个图像用信号通知各个语法元素。例如,它们可以被信号通知在比特流的条带分段头、pps/sps/vps/或任何其它参数集或其它规范部分中。
[0838] 在另一实施例中,在本发明中定义的与输出层集相关的所有构思可应用于输出操作点[2,3]和/或操作点[1]。
[0839] 示例3
[0840] 公开了一种用于视频编码的方法。该方法包括开始解析当前图像的第一条带头。确定由解码图像缓冲区(DPB)执行的哪些步骤将是基于图像的,哪些步骤将是基于访问单元(AU)的。执行从DPB的移除。执行从DPB的图像输出。执行DPB中的当前解码图像的解码和存储。标记DPB中的当前解码图像。还执行从DPB的附加图像输出。
[0841] 在一些配置中,从DPB的移除和输出可以基于至少一个AU输出标志,诸如AU输出标志、AU无RASL输出标志和/或AU无之前图像输出标志。可以基于比特流中信号通知的语法元素和其它条件来得到AU输出标志。AU标志表示在访问单元(AU)级别得到和应用的标志。在一些情况下,这些将是与在图像级别被信号通知或得到的相似标志(诸如图像输出标志(例如,pic_output_flag)、图像无RASL输出标志(例如,NoRaslOutputFlag)和/或图像无之前图像输出标志(例如,no_output_of_prior_pics flag))不同的标志。
[0842] 在一种配置中,第一AU输出标志可以被DPB得到并使用,第二AU输出标志可以被DPB得到和使用。在另一配置中,当图像输出标志存在于第一条带头中时,所有图像输出标志语法元素值可以被约束为针对AU中的所有编码图像的相同值。在一些配置中,当无图像输出标志存在于第一条带头中时,所有图像输出标志语法元素值可以被约束为针对AU中的所有编码图像的相同值。
[0843] 在一种配置中,移除可以基于图像,图像输出可以基于AU(访问单元),存储和解码可以基于图像,标记可以基于图像,附加图像输出可以基于AU。从DPB移除可以在解码当前图像之前从DPB移除一个或多个图像。
[0844] 在另一配置中,移除可以基于图像,图像输出、解码和存储、标记以及附加图像输出可以基于AU。在另一配置中,移除、图像输出、解码和存储、标记以及附加图像输出可以基于AU。在另一配置中,移除、解码和存储以及标记可以基于图像,图像输出和附加图像输出可以基于AU。在另一配置中,移除、图像输出、解码和存储、标记以及附加图像输出可以基于图像。
[0845] 在DPB中标记当前解码图像可以包括参考标记步骤和输出标记步骤。参考标记步骤可以基于图像,输出标记步骤可以基于AU。当解码图像被存储到DPB中的空存储缓冲区中时,DPB填充度可以以一为单位递增。当图像从DPB输出时,DPB填充度可以以一为单位递减。可针对每层跟踪DPB填充度。还可以针对输出层集跟踪DPB填充度。
[0846] DPB可针对具有不同分辨率、不同比特深度和不同颜色色度中的一个或多个的解码图像包括单独标识和管理的图像缓冲区。DPB可包括公共的图像存储缓冲区池。解码图像可基于尺寸、分辨率和比特深度中的至少一个被存储在图像存储缓冲区中。在一种配置中,解码图像可以被存储在图像存储缓冲区的一个图像缓冲区槽中。
[0847] 该方法可以由电子设备中的符合可缩放高效视频编码(SHVC)标准的解码器来执行。该方法还可以由电子设备中的符合多视图高效视频编码(MV-HEVC)标准的解码器来执行。
[0848] 还公开了一种配置用于视频编码的电子设备。该电子设备包括处理器和与所述处理器进行电通信的存储器。存储器中的指令可被执行以开始解析当前图像的第一条带头。存储器中的指令还可被执行以确定由解码图像缓冲区(DPB)执行的哪些步骤将基于图像以及那些步骤将基于访问单元(AU)。存储器中的指令还可被执行以执行从DPB的移除。存储器中的指令还可被执行以从DPB执行图像输出。存储器中的指令还可被执行以执行DPB中的当前解码图像的解码和存储。存储器中的指令还可被执行以标记DPB中的当前解码图像。存储器中的指令还可被执行以从DPB执行附加图像输出。
[0849] 现在参照附图描述各种配置,其中,相似标号可指示功能上相似的元件。这里在附图中总体描述和示出的系统和方法可以各种不同配置被布置和设计。因此,下面在附图中表示的对若干配置的更详细的描述并非意在限制要求的保护范围,而仅仅是代表性的系统和方法。
[0850] 图63是示出多个电子设备2102a-b之间的视频编码的框图。示出第一电子设备2102a和第二电子设备2102b。然而,应该指出的是,在一些配置中,关于第一电子设备2102a和第二电子设备2102b描述的特征和功能中的一个或多个可被组合在单个电子设备102中。
每个电子设备102可以被配置为编码视频和/或解码视频。电子设备102可以被配置为使用混合解码图像缓冲区(DPB)中操作。混合解码图像缓冲区(DPB)操作表示在解码图像缓冲区(DPB)2116上执行的移除、输出(弹出)、存储、标记和附加输出(弹出)的各种步骤基于图像或基于访问单元(AU)发生的场景。虽然这些步骤的特定组合被称为基于图像或基于访问单元(AU)被执行,但是可独立地支持基于图像或基于访问单元(AU)进行这些步骤中的每个步骤的所有可能组合。
[0851] 如这里所使用的,访问单元(AU)表示根据指定分类规则彼此关联的一组网络抽象层(NAL),该一组网络抽象层(NAL)按照解码顺序连续,并包括与相同输出时间相关联的所有编码图像的视频编码层(VCL)NAL单元及其关联的非VCL NAL单元。基础层是nuh_layer_id等于0的所有VCL NAL单元。编码图像是这样一种图像的编码表示,其中,所述图像包括具有特定值的nuh_layer_id的VCL NAL单元并包括图像的所有编码树单元。在一些情况下,编码图像可以被称为层分量。参照下面的图69和图70给出关于步骤是基于图像还是基于访问单元(AU)的附加细节。
[0852] 在一种配置中,每个电子设备102可以符合高效视频编码(HEVC)标准、可缩放高效视频编码(SHVC)标准或多视图高效视频编码(MV-HEVC)标准。HEVC标准是作为H.264/MPEG-4AVC(高级视频编码)的继承者的视频压缩标准,并且提供改善的视频质量和提高的数据压缩率。如这里所使用的,图像是单色格式的亮度样本的阵列、或是4∶2∶0、4∶2∶2和4∶4∶4颜色格式或一些其它颜色格式下的亮度样本的阵列和色度样本的两个相应阵列。针对JCTVC-M1008、JCTVC-L1008、JCTVC-D1004、JCT3V-C1004、JCTVC-L0453和JCTVC-L0452中的SHVC和MV-HEVC描述假想参考解码器(HRD)的操作和输出顺序解码图像缓冲区(DPB)2116的操作。
[0853] 第一电子设备2102a可以包括编码器2108和开销信令模块2112。第一电子设备2102a可以获得输入图像2106。在一些配置中,输入图像2106可以在第一电子设备2102a上使用图像传感器来捕获,从存储器中检索和/或从另一电子设备102接收。编码器2108可以编码输入图像2106以产生编码数据2110。例如,编码器2108可编码一系列输入图像2106(例如,视频)。编码数据2110可以是数字数据(例如,比特流)。
[0854] 开销信令模块2112可基于编码数据2110产生开销信令。例如,开销信令模块2112可将开销数据(诸如条带头信息、视频参数集(VPS)信息、序列参数集(SPS)信息、图像参数集(PPS)信息、图像顺序计数(POC)、参考图像指定等)添加到编码数据2110。在一些配置中,开销信令模块2112可产生指示两个图像集之间的转换的缠绕(wrap)指示符。
[0855] 编码器2108(和例如开销信令模块2112)可产生比特流2114。比特流2114可包括基于输入图像2106的编码图像数据。在一些配置中,比特流2114还可包括开销数据,诸如条带头信息、VPS信息、SPS信息、PPS信息等。当附加输入图像2106被编码时,比特流2114可包括一个或多个编码图像。例如,比特流2114可包括一个或多个编码参考图像和/或其它图像。
[0856] 比特流2114可被提供给解码器2104。在一个示例中,可使用有线或无线链路将比特流2114发送到第二电子设备2102b。在一些情况下,这可以通过网络(诸如因特网或局域网(LAN))完成。如图63中所示,解码器2104可以实施在第二电子设备上2102b上,与第一电子设备2102a上的编码器2108分离。然而,应该指出的是,在一些配置中,编码器2108和解码器2104可以实施在同一电子设备102上。当编码器2108和解码器2104实施在同一电子设备上时,例如,比特流2114可以通过总线被提供给解码器2104或存储在存储器中以被解码器2104检索。
[0857] 解码器2104可接收(例如,获得)比特流2114。解码器2104可产生基于比特流2114解码图像2118(例如,一个或多个解码图像2118)。解码图像2118可被显示、回放、存储在存储器和/或传输到另一个设备,等等。
[0858] 解码器2104可以包括解码图像缓冲区(DPB)2116。解码图像缓冲区(DPB)2116可以是保持解码图像用于参考、输出重排序或针对假想参考解码器(HRD)指定的输出延迟的缓冲区。在电子设备102解码图像缓冲区(DPB)2116可被用于存储在解码器2104重建的(例如,解码)图像。这些存储的图像随后可被用于例如帧间预测机制。当图像不按顺序被解码时,图像可以被存储在解码图像缓冲区(DPB)2116中,从而它们可以稍后按照顺序被显示。
[0859] 在H.264或先进视频编码(AVC)标准中,使用存储器管理控制操作(MMCO)执行解码图像缓冲区(DPB)2116管理(例如,删除、添加图像、对图像进行重排序,等等)。许多不同的解码图像缓冲区(DPB)2116的管理办法正在考虑中。
[0860] 解码器2104可以包括混合解码图像缓冲区(DPB)操作模块2120。混合解码图像缓冲区(DPB)操作模块2120可允许使用基于图像的步骤2122的解码图像缓冲区(DPB)2116管理方法和/或使用基于访问单元(AU)的步骤2124的解码图像缓冲区(DPB)2116管理方法。例如,使用基于图像的步骤2124来进行移除、存储和参考标记的一个优点在于最佳解码图像缓冲区(DPB)2116存储器将被多个层使用。因此,当使用基于图像的步骤时整体所需要的存储器可能会降低。使用基于访问单元(AU)的步骤2124来进行输出(包括输出、输出标记和附加输出)的一个优点在于输出处理可以被简化。
[0861] 图64是用于混合解码图像缓冲区(DPB)2116操作的方法2200的流程图。方法2200可以由作为电子设备102上的解码器2104的一部分的解码图像缓冲区(DPB)2116来执行。在一种配置中,方法2200可以由混合解码图像缓冲区(DPB)操作模块2120来执行。解码图像缓冲区(DPB)2116可以在2202开始解析当前图像的第一条带头。解码图像缓冲区(DPB)2116可以在2204确定混合解码图像缓冲区(DPB)的哪些步骤将基于图像以及哪些步骤将基于访问单元(AU)。
[0862] 解码图像缓冲区(DPB)2116可以在2206从解码图像缓冲区(DPB)2116执行移除(不输出)。该移除可以在解码当前图像之前从解码图像缓冲区(DPB)2116移除图像。解码图像缓冲区(DPB)2116可以在2208从解码图像缓冲区(DPB)2116执行图像输出(弹出)。图像输出(弹出)可以表示在编码图像缓冲区(CPB)移除时间从解码图像缓冲区(DPB)2116输出图像。在一些配置中,术语弹出可以用于指示从解码图像缓冲区(DPB)2116输出一个或多个图像。
因此,术语弹出和输出可以互换使用。
[0863] 解码图像缓冲区(DPB)2116可解码(2210)当前图像并将其存储在解码图像缓冲区(DPB)2116中。解码图像缓冲区(DPB)2116可以在2212标记存储在解码图像缓冲区(DPB)2116中的当前解码图像。例如,解码图像缓冲区(DPB)2116可以在2212将当前解码图像标记为“未用于参考”、“用于参考”、“需要输出”或“不需要输出”。解码图像缓冲区(DPB)2116还可以在2214从解码图像缓冲区(DPB)2116执行另一图像输出(附加弹出)。在一些配置中,从解码图像缓冲区(DPB)2116的图像移除/弹出可重复发生,直到满足特定条件。
[0864] 图65是用于混合解码图像缓冲区(DPB)2116操作的另一方法2300的流程图。例如,图65的方法2300可以是用于混合解码图像缓冲区(DPB)2116操作的优选方法。方法2300可以由作为电子设备102上的解码器2104的一部分的解码图像缓冲区(DPB)2116来执行。在一种配置中,方法2300可以由混合解码图像缓冲区(DPB)操作模块2120来执行。解码图像缓冲区(DPB)2116可以在2302开始解析当前图像的第一条带头。术语混合表示一些解码图像缓冲区(DPB)2116操作步骤基于图像执行而一些解码图像缓冲区(DPB)2116操作步骤基于访问单元(AU)执行的情况。解码图像缓冲区(DPB)2116可在2304从解码图像缓冲区(DPB)2116执行基于图像的移除(不输出)。解码图像缓冲区(DPB)2116可在2306从解码图像缓冲区(DPB)2116执行基于访问单元(AU)的图像输出(弹出)。解码图像缓冲区(DPB)2116可在2308对解码图像缓冲区(DPB)中的当前图像执行基于图像的解码和存储。
[0865] 解码图像缓冲区(DPB)2116可在2310对解码图像缓冲区(DPB)中的当前解码图像执行基于图像的标记。由解码图像缓冲区(DPB)2116执行的标记步骤还可被子划分为包括参考标记步骤和输出标记步骤。如这里所使用的,将图像标记为“未用于参考”或“用于参考”被称为参考标记步骤。解码图像缓冲区(DPB)2116中的解码图像可在解码处理操作期间的任意给定时间仅被标记为“未用于参考”、“用于短期参考”或“用于长期参考”之一。将这些标记之一分配给图像隐式地移除了被分配给该图像的另一标记。当图像被称为被标记为“用于参考”时,其总体表示图像被标记为“用于短期参考”或“用于长期参考”,但不是表示两者。如这里所使用的,将图像标记为“需要输出”或“不需要输出”被称为输出标记步骤。
[0866] 解码图像缓冲区(DPB)2116可以如下方式操作:参考标记步骤和输出标记步骤可基于图像或基于访问单元(AU)发生。一般来说,支持分别基于图像或基于访问单元(AU)进行这两个标记步骤的所有可能组合(一般是四种组合)。然而,优选的是,参考标记步骤基于图像而输出标记步骤基于访问单元(AU)。
[0867] 解码图像缓冲区(DPB)2116还在2312对当前解码图像执行基于访问单元(AU)的输出标记。解码图像缓冲区(DPB)2116可在2314从解码图像缓冲区(DPB)2116执行另一基于访问单元(AU)的图像输出(附加弹出)。在一些配置中,从解码图像缓冲区(DPB)2116的图像移除/弹出可重复发生,直到满足特定条件。
[0868] 在一些方法中,对于条带分段头中的标志可能要求比特流一致性约束。在一些情况下,约束可应用于属于同一访问单元(AU)的所有图像的标志。例如,可要求标志pic_output_flag和/或no_output_of_prior_pics_flag遵守比特流一致性约束。例如,JCTVC-L1003、JCTVC-M1008和JCT3V-D1004均使用pic_output_flag和no_output_of_prior_pics_flag描述条带分段头中的信令。此外,可基于语法元素和NAL单元类型得到诸如PicOutputFlag、NoRaslOutputFlag和NoOutputOfPriorPicsFlag的标志。
[0869] JCTVC-L1003、JCTVC-M1008和JCT3V-D1004还包括对于HEVC、SHVC和MV-HEVC的DPB的描述。JCTVC-M1008SHVC Draft Text 1提供针对HEVC的可伸缩扩展的文本草案。JCT3V-D1004MV-HEVC Draft Text 4描述针对HEVC的多视图扩展的文本草案。
[0870] 根据JCTVC-L1003、JCTVC-M1008和/或JCT3V-D1004的视频编码比特流可包括被置于通常被称为网络抽象层(NAL)单元的逻辑数据包中的语法结构。每个NAL单元包括NAL单元头,诸如两字节NAL单元头(例如16比特)以标识关联数据净荷的目的。例如,每个编码条带(和/或图像)可以被编码进一个或多个条带(和/或图像)NAL单元。其它NAL单元可被包括用于其它种类的数据,诸如补充增强信息、时间子层访问(TSA)图像的编码条带、逐步时间子层访问(STSA)图像编码条带、非TSA编码条带、非STSA尾随图像、损坏链接访问图像的编码条带、瞬时解码刷新图像的编码条带、干净随机访问图像的编码条带、可解码前导图像的编码条带、用于标记丢弃图像的编码条带、视频参数集、序列参数集、图像参数集、访问单元定界符、序列的结束、比特流的结束、填充数据和/或序列增强信息消息。下面的表(7)示出NAL单元代码和NAL单元类型类的一个示例。如果期望,还可以包括其它NAL单元类型。
[0871] 应理解,在表(7)中示出的NAL单元的NAL单元类型值可被重新布置和重新分配。此外,附加NAL单元类型可被添加或移除。
[0872] 帧内随机访问点(IRAP)图像是每个视频编码层NAL单元具有表(7)中所示的BLA_W_LP到RSV_IRAP_VCL23(含)范围中的nal_unit_type的编码图像。IRAP图像仅包含帧内编码(I)条带。
[0873] 瞬时解码刷新(IDR)图像是每个视频编码层NAL单元具有等于表(7)中所示的IDR_W_RADL或IDR_N_LP的nal_unit_type的IRAP图像。瞬时解码刷新(IDR)图像仅包含I条带,并且可以是比特流中的按照解码顺序的第一图像,或者可以稍迟地出现在比特流中。
[0874] 每个IDR图像是编码视频序列(CVS)中的按照解码顺序的第一图像。损坏链接访问(BLA)图像是每个视频编码层NAL单元具有等于表(7)中所示的BLA_W_LP、BLA_W_RADL或BLA_N_LP的nal_unit_type的IRAP图像。
[0875] BLA图像仅包含I条带,并且可以是比特流中的按照解码顺序的第一图像,或者可以稍迟地出现在比特流中。每个BLA图像开始新的编码视频序列,并且具有与IDR图像的解码处理相同的效果。然而,BLA图像包括指定非空参考图像集的语法元素。
[0876] [表42]
[0877]
[0878]
[0879] 表(7)
[0880] 参照下面的表(8),NAL单元头语法可以包括两字节(即16比特)数据。第一比特可以是“forbidden_zero_bit”,其在NAL单元的开始始终被设置为零。接下来的6比特可以是“nal_unit_type”,其指定包含在表(7)中所示NAL单元的原始字节序列净荷(“RBSP”)数据结构的类型。接下来的6比特是“nuh_layer_id”,其指定层的标识符。在一些情况下,作为替代,这些6比特可以被指定为“nuh_reserved_zero_6bits”。nuh_reserved_zero_6bits可以在标准的基本规范中等于0。在可缩放视频编码和/或语法扩展中,nuh_layer_id可指定该特定NAL单元属于由这些6比特的值确定的层。
[0881] 接下来的语法元素可以是“nuh_temporal_id_plus1”。nuh_temporal_id_plus1减1可指定NAL单元的时间标识符。变量时间标识符TemporalId可以被指定为TemporalId=nuh_temporal_id_plus1-1。时间标识符TemporalId用于标识时间子层。变量HighestTid标识将被解码的最高时间子层。
[0882] [表43]
[0883]
[0884] 表(8)
[0885] 下面的表(9)示出示例性序列参数集(SPS)的语法结构。pic_width_in_luma_samples指定以亮度采样为单位的每个解码图像的宽度。pic_width_in_luma_samples不应等于0。pic_height_in_luma_samples指定以亮度采样为单位的每个解码图像的高度。pic_height_in_luma_samples不应等于0。
[0886] sps_max_sub_layers_minus1加1指定可存在于参考SPS的每一个CVS中的时间子层的最大数量。sps_max_sub_layers_minus1的值应在0到6(含)范围内。
[0887] sps_sub_layer_ordering_info_present_flag标志等于1指定sps_max_dec_pic_buffering_minus1[i]、sps_max_num_reorder_pics[i]和sps_max_latency_increase_plus1[i]的语法元素存在用于sps_max_sub_layers_minus1+1个子层。sps_sub_layer_ordering_info_present_flag等于0指定sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1]、ps_max_num_reorder_pics[sps_max_sub_layers_minus1]和sps_max_latency_increase_plus1[sps_max_sub_layers_minus1]的值适用于所有子层。
[0888] sps_max_dec_pic_buffering_minus1[i]加1指定当HighestTid等于i时以图像存储缓冲区为单位的CVS的解码图像缓冲区的最大需要尺寸。sps_max_dec_pic_buffering_minus1[i]的值在0到MaxDpbSize-1(含)的范围中,其中,MaxDpbSize指定以图像存储缓冲区为单位的最大解码图像缓冲区尺寸。当i大于0时,sps_max_dec_pic_buffering_minus1[i]应大于或等于sps_max_dec_pic_buffering_minus1[i-1]。当sps_max_dec_pic_buffering_minus1[i]针对在0到sps_max_sub_layers_minus1-1(含)范围中的i不存在时,由于sps_sub_layer_ordering_info_present_flag等于0,因此推断其等于sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1]。
[0889] sps_max_num_reorder_pics[i]表示当HighestTid等于i时,可以按照解码顺序在CVS中的任何图像之前并且按照输出顺序在该图像之后的图像的最大允许数量。sps_max_num_reorder_pics[i]的值在0至sps_max_dec_pic_buffering_minus1[i](含)范围中。当i大于0时,sps_max_num_reorder_pics[i]可大于或等于sps_max_num_reorder_pics[i-1]。当sps_max_num_reorder_pics[i]针对在0到sps_max_sub_layers_minus1-1(含)范围中的i不存在时,由于sps_sub_layer_ordering_info_present_flag等于0,因此推断其等于sps_max_num_reorder_pics[sps_max_sub_layers_minus1]。
[0890] 不等于0的sps_max_latency_increase_plus1[i]可被用于计算SpsMaxLatencyPictures[i]的值,其指定当HighestTid等于i时,可以按照输出顺序在CVS的任何图像之前并按照解码顺序在该图像之后的图像的最大数量。当sps_max_latency_increase_plus1[i]不等于0时,SpsMaxLatencyPictures[i]的值被指定为:
SpsMaxLatencyPictures[i]=sps_max_num_reorder_pics[i]+sps_max_latency_
increase_plus1[i]-1。当sps_max_latency_increase_plus1[i]等于0时,没有相应的限制被表达。
[0891] sps_max_latency_increase_plus1[i]的值应在0至232-2(含)的范围中。当sps_max_latency_increase_plus1[i]针对在0到sps_max_sub_layers_minus1-1(含)范围中的i不存在时,由于sps_sub_layer_ordering_info_present_flag等于0,因此推断其等于sps_max_latency_increase_plus1[sps_max_sub_layers_minus1]。
[0892] [表44]
[0893]
[0894] 表(9)
[0895] 此外,JCTVC-L1003描述HEVC标准。例如,关于pic_out_flag和no_output_of_prior_pics_flag的细节在下面的表(10)中提供:
[0896] [表45]
[0897]
[0898] 表(10)
[0899] 在表(10)中,在如JCTVC-L1003的附录C中所规定的解码不是比特流中的第一图像的IDR或BLA图像之后,no_output_of_prior_pics_flag影响解码图像缓冲区(DPB)中的先前解码图像的输出。
[0900] output_flag_present_flag等于1表示pic_output_flag syntax元素存在于关联条带头中。output_flag_present_flag等于0表示pic_output_flagsyntax元素不存在于关联条带头中。pic_output_flag影响如JCTVC-L1003的附录C中所规定的解码图像输出和移除处理。当pic_output_flag不存在时,其被推断为等于1。
[0901] 对于通常解码处理(如JCTVC-L1003的8.1中的描述),PicOutputFlag被如下设置:
[0902] -如果当前图像是RASL图像并且关联IRAP图像的NoRaslOutputFlag等于1,则PicOutputFlag可被设置为等于0。
[0903] -否则,PicOutputFlag可被设置为等于pic_output_flag。
[0904] 此外,在用于产生不可用参考图像的通常解码处理(如JCTVC-L1003的8.3.3.1中的描述)期间,针对产生的图像的PicOutputFlag的值可在特定条件下被设置为等于0。
[0905] 当当前图像是IRAP图像,出现以下情况:
[0906] -如果当前图像是IDR图像、BLA图像、比特流中按照解码顺序的第一图像、或按照解码顺序跟随序列NAL单元的结束的第一图像,则变量NoRaslOutputFlag可被设置为等于1。
[0907] -否则,如果没有在JCTVC-L1003中指定的一些外部装置能够将变量HandleCraAsBlaFlag设置为针对当前图像的值,则变量HandleCraAsBlaFlag可被设置为等于由外部装置提供的值,并且变量NoRaslOutputFlag可被设置为等于
HandleCraAsBlaFlag。
[0908] -否则,变量HandleCraAsBlaFlag可被设置为等于0,并且变量NoRaslOutputFlag可被设置为等于0。
[0909] 如上所述,访问单元(AU)表示根据指定分类规则彼此关联的一组网络抽象层(NAL),该一组网络抽象层(NAL)按照解码顺序连续,并包括与相同输出时间相关联的所有编码图像的视频编码层(VCL)NAL单元及其关联的非VCLNAL单元。基础层是nuh_layer_id等于0的所有VCL NAL单元。编码图像是这样一种图像的编码表示,其中,所述图像包括具有特定值的nuh_layer_id的VCL NAL单元并包括图像的所有编码树单元。在一些情况下,编码图像可以被称为层分量。参照下面的图69和图70给出关于步骤是基于图像还是基于访问单元(AU)的附加细节。
[0910] 在一些配置中,针对pic_output_flag和/或no_output_of_prior_pics_flag的比特流一致性约束可用于访问单元(AU)中的编码图像。此外,可以基于AU中的编码图像的NAL单元类型和各个语法元素的值得到针对AU的三个新的访问单元输出标志:AU输出标志(例如,AuOutputFlag)、AU无RASL输出标志(例如,AuNoRaslOutputFlag)和AU无之前图像输出标志(例如,AuNoOutputOfPriorPicsFlag)。在一些配置中,图像的输出和移除可以基于针对SHVC和多视图HEVC的这三个标志(例如,AuOutputFlag、AuNoRaslOutputFlag和AuNoOutputOfPriorPicsFlag)。
[0911] 例如,这里描述的系统和方法可以遵守针对HEVC扩展的比特流一致性约束。具体地,比特流一致性约束可应用于SHVC比特流。此外,比特流一致性约束可应用于MV-HEVC比特流。
[0912] 在一种配置中,当存在时,可要求条带分段头语法元素pic_output_flag的值可以在访问单元(AU)中的编码图像的所有条带分段头中都相同。在另一配置中,当存在时,条带分段头语法元素pic_output_flag的值可以在编码图像具有相同NAL单元类型时在访问单元(AU)中的编码图像的所有条带分段头中都相同。
[0913] 在一种配置中,当存在时,针对nuh_layer_id等于目标层的nuh_layer_id值的条带分段的条带分段头语法元素pic_output_flag的值可以在访问单元(AU)中的这种编码图像的所有条带分段头中相同。在另一配置中,当存在时,针对nuh_layer_id不等于目标层的nuh_layer_id值的条带分段的条带分段头语法元素pic_output_flag的值可以在访问单元(AU)中的这种编码图像的所有条带分段头中等于0。
[0914] 在一种配置中,目标层可以是属于在JCTVC-L1003、JCTVC-M1008或JCT3V-D1004中定义的层集或目标层集或输出层集的层。在另一配置中,目标层可以是意图被解码的层。在另一配置中,目标层可以是意图被解码和输出(被显示或被发送以输出)的层。
[0915] 在一些配置中,当存在时,条带分段头语法元素no_output_of_prior_pics_flag的值可以在访问单元(AU)中的编码图像的所有条带分段头中都相同。在另一配置中,当存在时,条带分段头语法元素no_output_of_prior_pics_flag的值可以在编码图像具有相同NAL单元类型时在访问单元(AU)中的编码图像的所有条带分段头中都相同。在一种配置中,当存在时,针对nuh_layer_id等于目标层的nuh_layer_id值的条带分段的条带分段头语法元素no_output_of_prior_pics_flag的值可以在访问单元(AU)中的这种编码图像的所有条带分段头中相同。
[0916] 在一些配置中,当nuh_layer_id>0时,语法元素pic_output_flag和/或no_output_of_prior_pics_flag可不被信号通知。在此情况下,nuh_layer_id>0的层的值可被推断为等于它们的针对nuh_layer_id等于0的用信号通知的值。
[0917] 在一些配置中,可采用诸如AuOutputFlag和AuNoRaslOutputFlag的附加标志。可根据方法的数量得到标志AuOutputFlag和AuNoRaslOutputFlag。在一个方法或配置中,两个标志AuOutputFlag和AuNoRaslOutputFlag可被得到并用于DPB操作。如果PicOutputFlag针对AU中的所有图像等于1,则AuOutputFlag可被设置为等于1。否则,AuOutputFlag可被设置为等于0。
[0918] 在另一方法中,如果PicOutputFlag针对AU中的至少一个图像等于1,则AuOutputFlag可被设置为等于1。否则,AuOutputFlag可被设置为等于0。因此,在此情况下,如果PicOutputFlag针对AU中的所有图像等于0,则AuOutputFlag可被设置为等于0。
[0919] 在另一方法中,如果PicOutputFlag针对AU中的所有目标输出层等于1,则AuOutputFlag可被设置为等于1。否则,AuOutputFlag可被设置为等于0。
[0920] 在另一方法中,如果PicOutputFlag针对AU中的至少一个目标输出层等于1,则AuOutputFlag可被设置为等于1。否则,AuOutputFlag可被设置为等于0。
[0921] 在一个方法中,如果NoRaslOutputFlag针对AU中的所有图像等于1,则AuNoRaslOutputFlag可被设置为等于1。否则,AuNoRaslOutputFlag可被设置为等于0。
[0922] 在另一方法中,如果NoRaslOutputFlag针对AU中的至少一个图像等于1,则AuNoRaslOutputFlag可被设置为等于1。否则,AuNoRaslOutputFlag可被设置为等于0。因此,在此情况下,如果NoRaslOutputFlag针对AU中的所有图像等于0,则AuNoRaslOutputFlag可被设置为等于0。
[0923] 在另一方法中,如果NoRaslOutputFlag针对属于AU中的所有目标输出层的图像等于1,则AuNoRaslOutputFlag可被设置为等于1。否则,AuNoRaslOutputFlag可被设置为等于0。
[0924] 在另一方法中,如果NoRaslOutputFlag针对属于AU中的至少一个目标输出层的图像等于1,则AuNoRaslOutputFlag可被设置为等于1。否则,AuNoRaslOutputFlag可被设置为等于0。
[0925] 在以上方法和配置中的一些中,DPB操作可使用AuOutputFlag来代替PicOutputFlag。此外,DPB操作可使用AuNoRaslOutputFlag来代替NoRaslOutputFlag。
[0926] 在下面的列表(1A)和列表(2A)提供示出根据本系统和方法的使用AU输出标志(诸如AuOutputFlag和AuNoRaslOutputFlag)的示例。此外,如在下面的列表(1)、列表(1A)、列表(2)和列表(2A)中的描述,AU输出标志AuNoOutputOfPriorPicsFlag可被得到和用于DPB操作。
[0927] 本系统和方法可通过改变标准文档来实现。下面的列表(1)提供可被改变为适合于本系统和方法的JCTVC-L1003的章节。
[0928] 列表1
[0929] C.3解码图像缓冲区(DPB)的操作
[0930] C.3.1概论
[0931] 本分条款中的规定独立地适用于如分条款C.1中的规定选择的每组DPB参数。DPB针对每层单独或独立地操作。因此,以下步骤针对具有特定值的nuh_layer_id的每个解码图像单独地发生。
[0932] 解码图像缓冲区包含图像存储缓冲区。每层包括其自身的图像存储缓冲区的集合。因此,每层的图像存储缓冲区与该层的nuh_layer_id值相关联。每个图像存储缓冲区可包含被标记为“用于参考”或被保持以用于未来输出的解码图像。在分条款C.3.2、C.3.3和C.3.4中规定的处理被顺序地应用,这在下面说明。
[0933] C.3.2从DPB移除图像
[0934] 在属于访问单元n(包含当前图像)的当前图像的访问单元的第一解码单元的CPB移除时间,在解码当前图像之前(但是在解析当前图像的第一条带的条带头之后)从DPB移除图像立即发生,并且后续操作如下所示:
[0935] -调用在分条款8.3.2中规定的用于RPS的解码处理。
[0936] -当当前图像是NoRaslOutputFlag等于1的不是图像0的IRAP图像时,适用以下顺序步骤:
[0937] 1.变量NoOutputOfPriorPicsFlag针对被测解码器如下得到:
[0938] -如果当前图像是CRA图像,则NoOutputOfPriorPicsFlag被设置为等于1(无论no_output_of_prior_pics_flag的值如何)。
[0939] -否则,如果从与当前图像的nuh_layer_id值对应的激活SPS得到的pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值与从针对nuh_layer_id值等于当前图像的nuh_layer_id值的前一图像的激活SPS得到的各个pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值不同,则NoOutputOfPriorPicsFlag可以(但不应该)被被测解码器设置为1,无论no_output_of_prior_pics_flag的值如何。
[0940] 注意-虽然在这些条件下优选将NoOutputOfPriorPicsFlag设置为等于no_output_of_prior_pics_flag,但是在此情况下允许被测解码器将
NoOutputOfPriorPicsFlag设置为1。
[0941] -否则,NoOutputOfPriorPicsFlag被设置为等于no_output_of_prior_pics_flag。
[0942] 2.针对被测解码器得到的NoOutputOfPriorPicsFlag的值被如下应用于HRD:使得当NoOutputOfPriorPicsFlag的值等于1时,DPB中的与当前图像的nuh_layer_id值对应的所有图像存储缓冲区被清空,而不输出它们包含的图像,并且针对当前图像的nuh_layer_id值的DPB填充度被设置为等于0。
[0943] 在一个实施例中,针对被测解码器得到的NoOutputOfPriorPicsFlag的值被如下应用于HRD:使得当NoOutputOfPriorPicsFlag的值等于1时,DPB中的与当前图像的nuh_layer_id值对应的所有图像存储缓冲区被清空,而不输出它们包含的图像,并且针对所有nuh_layer_id值的DPB填充度被设置为等于0。
[0944] 在一个实施例中,针对被测解码器得到的NoOutputOfPriorPicsFlag的值被如下应用于HRD:使得当NoOutputOfPriorPicsFlag的值等于1时,DPB中的currLayerId等于当前图像的nuh_layer_id值的所有图像存储缓冲区PSB[currLayerId]被清空,而不输出它们包含的图像,并且针对所有当前图像的nuh_layer_id值currLayerId的DPB填充度DPBFullness[currLayerId]被设置为等于0。
[0945] 在一个实施例中,针对被测解码器得到的NoOutputOfPriorPicsFlag的值被如下应用于HRD:使得当NoOutputOfPriorPicsFlag的值等于1时,DPB中的针对nuh_layer_id值的所有图像存储缓冲区PSB[nuh_layer_id]被清空,而不输出它们包含的图像,并且针对所有nuh_layer_id值的DPB填充度DPBFullness[nuh_layer_id]被设置为等于0。
[0946] -当针对DPB中的与当前图像的nuh_layer_id值对应的图像存储缓冲区中的任何图像k,以下两个条件都为真时,在DPB中的所有这样的图像k被从DPB移除:
[0947] -图像k被标记为“未用于参考”
[0948] -图像k具有PicOutputFlag等于0或者其DPB输出时间小于或等于当前图像n的第一解码单元(被表示为解码单元m)的CPB移除时间;即,DpbOutputTime[k]小于或等于CpbRemovalTime(m)
[0949] -针对从DPB移除的每个图像,DBP填充度以一为单位递减。
[0950] -在一个实施例中,针对从DPB移除的具有nuh_layer_id值nuhLayerIdk的每个图像k,DPB填充度DPBFullness[nuhLayerIdk]以一为单位递减。
[0951] C.3.3图像输出
[0952] 在本分条款中规定的处理在访问单元n的CPB移除时间(AuCpbRemovalTime[n])立即发生。
[0953] 当图像n具有PicOutputFlag等于1时,其DPB输出时间DpbOutputTime[n]如下得到,其中,如果访问单元是缓冲期的第一访问单元,则变量firstPicInBufferingPeriodFlag等于1,否则变量firstPicInBufferingPeriodFlag等于
0:
[0954] if(ISubPicHrdFIag){
[0955] DpbOutputTime[n]=AuCpbRemovalTime[n]+ClockTick*picDpbOutputDelay (C-16)[0956] if(firstPiclaBufferingPeriodFlag)
[0957] DpbOutputTime[n]-ClockTick*DpbDelavOffset
[0958] }else
[0959] DpbOutputTime[n]=AuCpbRemovalTime[n]+ClockSubTick*picSptDpbOutputDuDelay
[0960] 其中,picDpbOutputDelay是与访问单元n相关联的图像时序SEI消息中的pic_dpb_output_delay的值,并且picSptDpbOutputDuDelay是与访问单元n相关联的解码单元信息时序SEI消息中的pic_spt_dpb_output_du_delay(当存在时)的值,或者是当不存在与访问单元n相关联的解码单元信息时序SEI消息或者与访问单元n相关联的解码单元信息时序SEI消息不具有pic_spt_dpb_output_du_delay时的与访问单元n相关联的图像时序SEI消息中的pic_dpb_output_du_delay的值。
[0961] 注意-当语法元素pic_spt_dpb_output_du_delay不存在于与访问单元n相关联的任何解码单元信息SEI消息中时,其值被推断为等于与访问单元n相关联的图像时序SEI消息中的pic_dpb_output_du_delay。
[0962] 如果nuh_layer_id属于TargetDecLayerIdList中的层,则当前图像的输出被如下指定:
[0963] -如果PicOutputFlag等于1且DpbOutputTime[n]等于AuCpbRemovalTime[n],则当前图像被输出。
[0964] -否则,如果PicOutputFlag等于0,则当前图像不被输出,而是如分条款C.3.4中的规定将被存储在DPB中的与当前图像的nuh_layer_id值对应的图像存储缓冲区中。
[0965] -否则(PicOutputFlag等于1且DpbOutputTime[n]大于AuCpbRemovalTime[n]),当前图像被稍后输出并且(如分条款C.3.4中的规定)将被存储在DPB中的与当前图像的nuh_layer_id值对应的图像存储缓冲区中并在时间DpbOutputTime[n]输出,除非通过解码指示不被输出,或者在DpbOutputTime[n]之前推断no_output_of_prior_pics_flag等于1。
[0966] 在另一实施例中,以上步骤被规定为用于:
[0967] 在nuh_layer_id属于与(当前)操作点对应的输出层集中的层的情况下的当前图像的输出。
[0968] 在另一实施例中,以上步骤被规定为用于:
[0969] 当前图像的输出(而不需要检查其是否属于TargetDecLayerIdList或针对当前操作点的输出层集)。
[0970] 当被输出时,图像使用在针对图像的激活SPS中规定的一致性剪切窗口被剪切。
[0971] 当图像n是被输出的图像并且不是比特流中输出的最后图像时,变量DpbOutputInterval[n]的值如下得到:
[0972] DpbOutputlnterval[n]=DpbOutputTime[nextPiclnOutputOrder]-DpbOutputTime[n]  (C-17)
[0973] 其中,nextPicInOutputOrder是按照输出顺序跟随图像n并且具有PicOutputFlag等于1的图像。
[0974] C.3.4当前解码图像标记和存储
[0975] 在本分条款中规定的处理在访问单元n的CPB移除时间(CpbRemovalTime[n])立即发生。
[0976] 当前解码图像被存储在与当前图像的nuh_layer_id值对应的空的图像存储缓冲区中的DPB中,针对当前图像的nuh_layer_id值的DPB填充度以一为单位递增,并且当前图像被标记为“用于短期参考”。
[0977] 在一个实施例中:
[0978] nuh_layer_id等于currLayerId的当前解码图像被存储在DPB中的currLayerId等于当前图像的nuh_layer_id值的空的图像存储缓冲区PSB[currLayerId]中的DPB中,针对当前图像的nuh_layer_id值的DPB填充度DPBFullness[currLayerId]以一为单位递增,并且当前图像被标记为“用于短期参考”。
[0979] C.4比特流一致性
[0980] 适用分条款C.4中的规定。
[0981] C.5解码器一致性
[0982] F.8.1.1 C.5.1概论
[0983] 适用分条款C.5.1中的规定。
[0984] 列表(1)
[0985] 如在以上列表(1)中所使用的,PSB表示图像存储缓冲区。DPBFullness表示用于描述解码图像缓冲区(DPB)的填充度的变量。
[0986] 下面的列表(1A)提供根据适应本系统和方法的对列表(1)的章节C.3.2的备选方法。在一些配置中,列表(1A)可仅表示对JCTVC-L1003中的章节C.3.2的改变。列表(1A)可使用上面定义的标志AuNoOutputOfPriorPicsFlag和AuNoRaslOutputFlag。
[0987] 列表1A
[0988] C.3.2从DPB移除图像
[0989] 在属于访问单元n(包含当前图像)的当前图像的访问单元的第一解码单元的CPB移除时间,在解码当前图像之前(但是在解析当前图像的第一条带的条带头之后)从DPB移除图像立即发生,并且后续操作如下所示:
[0990] -调用在分条款8.3.2中规定的用于RPS的解码处理。
[0991] -当当前图像是AuNoRaslOutputFlag等于1的不是图像0的IRAP图像时,适用以下顺序步骤:
[0992] -在另一配置中,当当前图像是NoRaslOutputFlag等于1的不是图像0的IRAP图像时,适用以下顺序步骤:
[0993] 1.变量AuNoOutputOfPriorPicsFlag针对被测解码器如下得到:
[0994] -如果当前图像是CRA图像,则AuNoOutputOfPriorPicsFlag被设置为等于1(无论针对AU中的当前图像或其它图像的no_output_of_prior_pics_flag的值如何)。
[0995] -否则,如果从激活SPS得到的pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值与从针对前一图像的激活SPS得到的各个pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值不同,则AuNoOutputOfPriorPicsFlag可以(但不应该)被被测解码器设置为1,无论no_output_of_prior_pics_flag的值如何。
[0996] 注意-虽然在这些条件下优选将AuNoOutputOfPriorPicsFlag设置为等于no_output_of_prior_pics_flag,但是在此情况下允许被测解码器将AuNoOutputOfPriorPicsFlag设置为1。
[0997] -否则,AuNoOutputOfPriorPicsFlag基于针对AU中的当前图像和其它图像的no_output_of_prior_pics_flag的值被如下设置:
[0998] -如果no_output_of_prior_pics_flag针对AU中的至少一个图像等于1,则AuNoOutputOfPriorPicsFlag被设置为等于1。否则,AuNoOutputOfPriorPicsFlag被设置为等于0。因此在此情况下,如果no_output_of_prior_pics_flag针对AU中的所有图像等于0,则AuNoOutputOfPriorPicsFlag被设置为等于0。
[0999] -在另一实施例中,如果no_output_of_prior_pics_flag针对当前图像等于1,则AuNoOutputOfPriorPicsFlag被设置为等于1。否则,AuNoOutputOfPriorPicsFlag保持不变。
[1000] -在另一实施例中,如果no_output_of_prior_pics_flag针对AU中的所有图像等于1,则AuNoOutputOfPriorPicsFlag被设置为等于1。否则,AuNoOutputOfPriorPicsFlag被设置为等于0。
[1001] -在另一实施例中,如果no_output_of_prior_pics_flag针对属于AU中的目标输出层的所有图像等于1,则AuNoOutputOfPriorPicsFlag被设置为等于1。否则,AuNoOutputOfPriorPicsFlag被设置为等于0。
[1002] -在另一实施例中,如果no_output_of_prior_pics_flag针对属于AU中的目标输出层的至少一个图像等于1,则AuNoOutputOfPriorPicsFlag被设置为等于1。否则,AuNoOutputOfPriorPicsFlag被设置为等于0。
[1003] 2.针对被测解码器得到的AuNoOutputOfPriorPicsFlag的值被如下应用于HRD:使得当AuNoOutputOfPriorPicsFlag的值等于1时,DPB中的与所有nuh_layer_id值对应的所有图像存储缓冲区被清空,而不输出它们包含的图像,并且针对所有nuh_layer_id值的DPB填充度被设置为等于0。
[1004] 在另一实施例中,针对被测解码器得到的AuNoOutputOfPriorPicsFlag的值被如下应用于HRD:使得当AuNoOutputOfPriorPicsFlag的值等于1时,DPB中的与当前图像的nuh_layer_id值对应的所有图像存储缓冲区被清空,而不输出它们包含的图像,并且针对所有nuh_layer_id值的DPB填充度被设置为等于0。
[1005] 列表(1A)
[1006] 下面的列表(2)提供可被改变为适用于本系统和方法的JCTVC-L1008的章节。
[1007] 列表2
[1008] F.13假想参考解码器
[1009] F.13.1概论
[1010] 适用分条款C.1中的规定。
[1011] F.13.2编码图像缓冲区(CPB)的操作
[1012] 适用分条款C.2中的规定。
[1013] F.13.3解码图像缓冲区(DPB)的操作
[1014] 分条款C.3中的规定单独地适用于具有特定值nuh_layer_id的解码图像的每个集合。
[1015] 针对不包括在目标输出层中的图像的PicOutputFlag被设置为等于0。
[1016] DPB输出时间相同并且PicOutputFlag等于1的解码图像按照这些解码图像的nuh_layer_id值的降序被输出。
[1017] F.13.5解码器一致性
[1018] F.13.5.1概论
[1019] 适用分条款C.5.1中的规定。
[1020] F.13.5.2输出顺序DPB的操作
[1021] F.13.5.2.1概论
[1022] 解码图像缓冲区包含图像存储缓冲区。每层包括其自身的图像存储缓冲区的集合。因此,每层的图像存储缓冲区与该层的nuh_layer_id值相关联。针对nuh_layer_id等于0的图像存储缓冲区的数量从nuh_layer_id等于0的层的激活SPS得到。针对每个非零nuh_layer_id值的图像存储缓冲区的数量从针对该非零nuh_layer_id值的激活层SPS得到。每个图像存储缓冲区包括被标记为“用于参考”或者被保持以用于未来输出的解码图像。调用在分条款F.13.5.2.2中规定的用于从DPB输出和移除图像的处理,接着调用在分条款F.13.5.2.3中规定的用于图像解码、标记、附加弹出和存储的处理。“弹出”处理在分条款F.13.5.2.4中规定并且如分条款F.13.5.2.2和F.13.5.2.3中的规定被调用。
[1023] F.13.5.2.2从DPB输出和移除图像
[1024] 当从CPB移除属于包含当前图像的访问单元的当前图像的第一解码单元时,在解码当前图像之前(但是在解析当前图像的第一条带的条带头之后)从DPB输出和移除图像立即发生,并且后续操作如下所示。
[1025] 调用在分条款8.3.2中规定的用于RPS的解码处理。
[1026] -如果当前图像是NoRaslOutputFlag等于0且nuh_layer_id等于0的不是图像0的IRAP图像,则适用以下顺序步骤:
[1027] 1.变量NoOutputOfPriorPicsFlag针对被测解码器如下得到:
[1028] -如果当前图像是CRA图像,则NoOutputOfPriorPicsFlag被设置为等于1(无论no_output_of_prior_pics_flag的值如何)。
[1029] -否则,如果从与当前图像的nuh_layer_id值对应的激活SPS得到的pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值与从针对nuh_layer_id值等于当前图像的nuh_layer_id值的前一图像的激活SPS得到的各个pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值不同,则NoOutputOfPriorPicsFlag可以(但不应该)被被测解码器设置为1,无论nooutput_of_prior_pics_flag的值如何。
[1030] 注意-虽然在这些条件下优选将NoOutputOfPriorPicsFlag设置为等于no_output_of_prior_pics_flag,但是在此情况下允许被测解码器将
NoOutputOfPriorPicsFlag设置为1。
[1031] -否则,NoOutputOfPriorPicsFlag被设置为等于no_output_of_prior_pics_flag。
[1032] 2.针对被测解码器得到的NoOutputOfPriorPicsFlag的值被如下应用于HRD:
[1033] -如果NoOutputOfPriorPicsFlag等于1,则DPB中的与当前图像的nuh_layer_id值对应的所有图像存储缓冲区被清空,而不输出它们包含的图像,并且针对当前图像的nuh_layer_id值的DPB填充度被设置为等于0。
[1034] 在一个实施例中,如果NoOutputOfPriorPicsFlag等于1,则DPB中的与所有uh_layer_id值对应的所有图像存储缓冲区被清空,而不输出它们包含的图像,并且针对所有nuh_layer_id值的DPB填充度被设置为等于0。
[1035] 在一个实施例中,如果NoOutputOfPriorPicsFlag等于1,则DPB中的与当前图像的nuh_layer_id值currLayerId对应的所有图像存储缓冲区PSB[currLayerId]被清空,而不输出它们包含的图像,并且DPB填充度DPBFullness[currLayerId]被设置为等于0。
[1036] 在一个实施例中,如果NoOutputOfPriorPicsFlag等于1,则DPB中的针对所有nuh_layer_id值的所有图像存储缓冲区PSB[nuh_layer_id]被清空,而不输出它们包含的图像,并且针对所有nuh_layer_id值的DPB填充度DPBFullness[nuh_layer_id]被设置为等于0。
[1037] -否则(NoOutputOfPriorPicsFlag等于0),包含被标记为“不需要输出”和“未用于参考”的图像的所有图像存储缓冲区被清空(不输出),并且DPB中的与当前图像的nuh_layer_id值对应的所有非空图像存储缓冲区通过重复调用在分条款中规定的“弹出”处理被清空,并且针对当前图像的nuh_layer_id值的DPB填充度被设置为等于0。
[1038] 在另一实施例中,当NoOutputOfPriorPicsFlag等于0时,包含被标记为“不需要输出”和“未用于参考”的图像的与所有nuh_layer_id值对应的所有图像存储缓冲区被清空(不输出),并且DPB中的与所有nuh_layer_id值对应的所有非空图像存储缓冲区通过重复调用在分条款中规定的“弹出”处理被清空,并且针对所有nuh_layer_id值的DPB填充度被设置为等于0。
[1039] -在另一实施例中,否则(NoOutputOfPriorPicsFlag等于0),包含被标记为“不需要输出”和“未用于参考”的图像的所有图像存储缓冲区被清空(不输出),并且DPB中的与当前图像的nuh_layer_id值currLayerId对应的所有非空图像存储缓冲区PSB[currLayerId]通过重复调用在分条款中规定的“弹出”处理被清空,并且针对当前图像的nuh_layer_id值的DPB填充度DPBFullness[currLayerId]被设置为等于0。
[1040] -在另一实施例中,当NoOutputOfPriorPicsFlag等于0时,DPB中的包含被标记为“不需要输出”和“未用于参考”的图像的所有图像存储缓冲区PSB[nuh_layer_id]被清空(不输出),并且DPB中的与所有nuh_layer_id值对应的所有非空图像存储缓冲区PSB[nuh_layer_id]通过重复调用在分条款中规定的“弹出”处理被清空,并且针对所有nuh_layer_id值的DPB填充度DPBFullness[nuh_layer_id]被设置为等于0。
[1041] -否则(当前图像不是NoRaslOutputFlag等于1且nuh_layer_id等于0的IRAP图像),包含被标记为“不需要输出”和“未用于参考”的图像的与当前图像的nuh_layer_id值对应的所有图像存储缓冲区被清空(不输出)。对于被清空的每个图像存储缓冲区而言,与当前解码图像的nuh_layer_id值对应的DPB填充度以一为单位递减。变量currLayerId被设置为等于当前解码图像的nuh_layer_id且当以下条件的一个或多个为真时,针对被清空的与当前解码图像的nuh_layer_id值对应的每个附加图像缓冲区,在进一步以一为单位递减DPB填充度的同时重复调用在分条款F.13.5.2.4中规定的“弹出”处理,直到以下条件都不为真:
[1042] -DPB中被标记为“需要输出”的nuh_layer_id等于currLayerId的图像的数量大于来自激活SPS(当currLayerId等于0时)或来自针对currLayerId值的激活层SPS的sps_max_num_reorder_pics[HighestTid]。
[1043] -激活SPS(当currLayerId等于0时)的或针对currLayerId值的激活层SPS的sps_max_latency_increase_plus1[HighestTid]不等于0,并且DPB中存在被标记为“需要输出”的nuh_layer_id值等于currLayerId至少一个图像:其中,关联变量PicLatencyCount[currLayerId]大于或等于来自激活SPS(当currLayerId等于0时)或来自针对currLayerId值的激活层SPS的sps_max_num_reorder_pics[HighestTid]。
[1044] -DPB中的特定nuh_layer_id值的图像的数量大于或等于来自激活SPS(当currLayerId等于0时)或来自针对currLayerId值的激活层SPS的sps_max_dec_pic_buffering[HighestTid]+1。
[1045] 在另一实施例中:否则(当前图像不是NoRaslOutputFlag等于1且nuh_layer_id等于0的IRAP图像),包含被标记为“不需要输出”和“未用于参考”的图像的与所有nuh_layer_id值对应的所有图像存储缓冲区被清空(不输出)。对于被清空的每个图像存储缓冲区而言,与图像的nuh_layer_id值对应的DPB填充度以一为单位递减。
[1046] 在另一实施例中:否则(当前图像不是NoRaslOutputFlag等于1且nuh_layer_id等于0的IRAP图像),DPB中的包含被标记为“不需要输出”和“未用于参考”的图像的与当前图像的nuh_layer_id值currLayerId对应的所有图像存储缓冲区PSB[currLayerId]被清空(不输出)。对于被清空的每个图像存储缓冲区而言,与当前解码图像的nuh_layer_id值对应的DPB填充度DPBFullness[currLayerId]以一为单位递减。
[1047] 在另一实施例中:否则(当前图像不是NoRaslOutputFlag等于1且nuh_layer_id等于0的IRAP图像),DPB中的包含被标记为“不需要输出”和“未用于参考”的图像的与所有nuh_layer_id值对应的所有图像存储缓冲区PSB[nuh_layer_id]被清空(不输出)。对于被清空的每个图像存储缓冲区而言,与被清空的图像的nuh_layer_id值对应的DPB填充度DPBFullness[nuh_layer_id]以一为单位递减。
[1048] F.13.5.2.3图像解码、标记、附加弹出和存储
[1049] 当从CPB移除包含当前图像的访问单元n的最后解码单元时,在本分条款中规定的处理立即发生。
[1050] 变量currLayerId被设置为等于当前解码图像的nuh_layer_id。
[1051] 针对DPB中的被标记为“需要输出”且nuh_layer_id值等于currLayerId的每个图像,关联变量PicLatencyCount[currLayerId]被设置为等于PicLatencyCount[currLayerId]+1。
[1052] 当前图像被视为在图像的最后解码单元被解码之后被解码。当前解码图像存储在DPB中的与currLayerId(当前图像的nuh_layer_id值)对应的空图像存储缓冲区中,并且出现以下情况:
[1053] -如果当前解码图像的PicOutputFlag等于1,则其被标记为“需要输出”且其关联变量PicLatencyCount[currLayerId]被设置为等于0。
[1054] -否则(当前解码图像的PicOutputFlag等于0),其被标记为“不需要输出”。
[1055] 在一个实施例中,当前图像被视为在图像的最后解码单元被解码之后被解码。当前解码图像存储在DPB中的与currLayerId(当前图像的nuh_layer_id值)对应的空图像存储缓冲区中,并且出现以下情况:
[1056] -如果当前解码图像的PicOutputFlag等于1,则其被标记为“需要输出”且其关联变量PicLatencyCount[currLayerId]被设置为等于0。包含与当前解码图像相同的图像顺序计数值(PicOrderCntVal)的图像的所有图像存储缓冲区被标记为“需要输出”。
[1057] -否则(当前解码图像的PicOutputFlag等于0),其被标记为“不需要输出”。
[1058] 在一个实施例中,当前解码图像存储在DPB中的与currLayerId(当前图像的nuh_layer_id值)对应的空图像存储缓冲区PSB[currLayerId]中,针对当前图像的nuh_layer_id值的DPB填充度DPBFullness[currLayerId]以一为单位递增,并且出现以下情况:
[1059] 当前解码图像被标记为“用于短期参考”。
[1060] 当以下条件的一个或多个为真时,重复调用在分条款F.13.5.2.4中规定的“弹出”处理,直到以下条件均不为真:
[1061] -DPB中被标记为“需要输出”的nuh_layer_id等于currLayerId的图像的数量大于来自激活SPS(当currLayerId等于0时)或来自针对currLayerId值的激活层SPS的sps_max_num_reorder_pics[HighestTid]。
[1062] -sps_max_latency_increase_plus1[HighestTid]不等于0,并且DPB中存在被标记为“需要输出”的nuh_layer_id值等于currLayerId至少一个图像:其中,关联变量PicLatencyCount[currLayerId]大于或等于从激活SPS(当currLayerId等于0时)得到或从针对currLayerId值的激活层SPS得到的SpsMaxLatencyPictures[HighestTid]。
[1063] F13.5.2.4“弹出”处理
[1064] “弹出”处理包括以下顺序步骤:
[1065] 1.选择首先被输出的图像作为DPB中的所有图像的具有被标记为“需要输出”的PicOrderCntVal的最小值的图像。
[1066] 2.使用在针对nuh_layer_id等于0的图像的激活SPS中或在针对nuh_layer_id值等于该图像的nuh_layer_id值的激活层SPS中指定的一致性剪切窗口来剪切这些图像,以nuh_layer_id的升序输出剪切的图像,并且这些图像被标记为“不需要输出”。
[1067] 3.包含被标记为“未用于参考”的图像以及包括被剪切和输出的图像之一的每个图像存储缓冲区被清空。
[1068] 列表(2)
[1069] 下面的列表(2A)提供根据适合本系统和方法的对列表(2)的章节F.13.5.2.2的备选方法。在一些配置中,列表(2A)可仅表示对JCTVC-L1008重的章节F.13.5.2.2的修改。列表(2A)可使用以上定义的AuNoOutputOfPriorPicsFlag和AuNoRaslOutputFlag。
[1070] 列表2A
[1071] F.13.5.2.2从DPB输出和移除图像
[1072] 当从CPB移除属于包含当前图像的访问单元的当前图像的第一解码单元时,在解码当前图像之前(但是在解析当前图像的第一条带的条带头之后)从DPB输出和移除图像立即发生,并且后续操作如下所示。
[1073] 调用在分条款8.3.2中规定的用于RPS的解码处理。
[1074] -如果当前图像是AuNoRaslOutputFlag等于0且nuh_layer_id等于0的不是图像0的IRAP图像,则适用以下顺序步骤:
[1075] -在另一配置中,如果当前图像是NoRaslOutputFlag等于0且nuh_layer_id等于0的不是图像0的IRAP图像,则适用以下顺序步骤:
[1076] 1.变量AuNoOutputOfPriorPicsFlag针对被测解码器如下得到:
[1077] -如果当前图像的nuh_layer_id等于0且AuNoOutputOfPriorPicsFlag初始化为0,则:
[1078] -如果当前图像是CRA图像,则AuNoOutputOfPriorPicsFlag被设置为等于1(无论针对AU中的当前图像或其它图像的no_output_of_prior_pics_flag的值如何)。
[1079] -否则,如果从激活SPS得到的pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值与从前一图像的激活SPS得到的各个pic_width_in_luma_samples、pic_height_in_luma_samples或sps_max_dec_pic_buffering_minus1[HighestTid]的值不同,则AuNoOutputOfPriorPicsFlag可以(但不应该)被被测解码器设置为1,无论no_output_of_prior_pics_flag的值如何。
[1080] 注意-虽然在这些条件下优选将AuNoOutputOfPriorPicsFlag设置为等于no_output_of_prior_pics_flag,但是在此情况下允许被测解码器将AuNoOutputOfPriorPicsFlag设置为1。
[1081] -否则,AuNoOutputOfPriorPicsFlag基于针对AU中的当前图像和其它图像的no_output_of_prior_pics_flag的值被如下设置:
[1082] -如果no_output_of_prior_pics_flag针对AU中的至少一个图像等于1,则AuNoOutputOfPriorPicsFlag被设置为等于1。否则,AuNoOutputOfPriorPicsFlag被设置为等于0。因此在此情况下,如果no_output_of_prior_pics_flag针对AU中的所有图像等于0,则AuNoOutputOfPriorPicsFlag被设置为等于0。
[1083] -在另一实施例中,如果no_output_of_prior_pics_flag针对当前图像等于1,则AuNoOutputOfPriorPicsFlag被设置为等于1。否则,AuNoOutputOfPriorPicsFlag保持不变。
[1084] -在另一实施例中,如果no_output_of_prior_pics_flag针对AU中的所有图像等于1,则AuNoOutputOfPriorPicsFlag被设置为等于1。否则,AuNoOutputOfPriorPicsFlag被设置为等于0。
[1085] -在另一实施例中,如果no_output_of_prior_pics_flag针对属于AU中的目标输出层的所有图像等于1,则AuNoOutputOfPriorPicsFlag被设置为等于1。否则,AuNoOutputOfPriorPicsFlag被设置为等于0。
[1086] -在另一实施例中,如果no_output_of_prior_pics_flag针对属于AU中的目标输出层的至少一个图像等于1,则AuNoOutputOfPriorPicsFlag被设置为等于1。否则,AuNoOutputOfPriorPicsFlag被设置为等于0。
[1087] 2.针对被测解码器得到的AuNoOutputOfPriorPicsFlag的值被如下应用于HRD:
[1088] -如果AuNoOutputOfPriorPicsFlag等于1,则DPB中的与所有nuh_layer_id值对应的所有图像存储缓冲区被清空,而不输出它们包含的图像,并且针对所有nuh_layer_id值的DPB填充度被设置为等于0。
[1089] -在另一实施例中,如果AuNoOutputOfPriorPicsFlag等于1,则DPB中的与当前图像的所有nuh_layer_id值对应的所有图像存储缓冲区被清空,而不输出它们包含的图像,并且针对当前图像的nuh_layer_id值的DPB填充度被设置为等于0。
[1090] -否则(AuNoOutputOfPriorPicsFlag等于0),包括被标记为“不需要输出”和“未用于参考”的图像的与所有nuh_layer_id值对应的所有图像存储缓冲区被清空(不输出),并且DPB中的所有非空图像存储缓冲区通过重复调用在分条款F.13.5.2.4中规定的“弹出”处理被清空,并且针对所有nuh_layer_id值的DPB填充度被设置为等于0。
[1091] 在另一实施例中:
[1092] 否则(AuNoOutputOfPriorPicsFlag等于0),包括被标记为“不需要输出”和“未用于参考”的图像的与当前图像的nuh_layer_id值对应的所有图像存储缓冲区被清空(不输出),并且DPB中的所有非空图像存储缓冲区通过重复调用在分条款F.13.5.2.4中规定的“弹出”处理被清空,并且针对当前图像的nuh_layer_id值的DPB填充度被设置为等于0。
[1093] 列表(2A)
[1094] 在一种配置中,针对以上提出的列表(1)、列表(1A)、列表(2)、列表(2A)中的文本,出现的所有“当前图像”可被替换为“当前解码图像”。
[1095] 下面的列表(3)提供用于适合于本系统和方法的解码的附加章节。列表(3)提供可改变为适合于本系统和方法的JCTVC-L1003(即,HEVC规定版本34)的章节。
[1096] 列表3
[1097] 8.3.2针对参考图像集的解码处理
[1098] 当当前图像是NoRaslOutputFlag等于1的IRAP图像时,DPB中的当前与当前图像的nuh_layer_id值对应的所有参考图像(如果有)被标记为“未用于参考”。
[1099] 在另一实施例中,当当前图像是NoRaslOutputFlag等于1的IRAP图像时,DPB中的当前与所有nuh_layer_id值对应的所有参考图像(如果有)被标记为“未用于参考”。
[1100] 列表(3)
[1101] [表46]
[1102]
[1103] 表(11)
[1104] [表47]
[1105]
[1106]
[1107] 表(12)
[1108] [表48]
[1109]
[1110] 表(13)
[1111] [表49]
[1112]
[1113] 表(14)
[1114] [表50]
[1115]
[1116] 表(15)
[1117] 图66是示出解码器2404的一种配置的框图。解码器2404可被包括在电子设备2402中。例如,解码器2404可以是高效视频编码(HEVC)解码器。解码器2404和/或示出为包括在解码器2404中的一个或多个元件可以被实施在硬件、软件或两者的组合中。解码器2404可以接收比特流2414(例如,包括在比特流2414中的一个或多个编码图像)以进行解码。在一些配置中,接收的比特流2414可包括接收到的开销信息,诸如接收到的条带头、接收到的PPS、接收到的缓冲区描述信息等。包括在比特流2414中的编码图像可包括一个或多个编码参考图像和/或一个或多个其它编码图像。
[1118] 接收到的(包括在比特流2414中的一个或多个编码图像中的)符号可以被熵解码模块454熵解码,从而产生运动信息信号456和量化、缩放和/或变换的系数458。
[1119] 运动信息信号456可在运动补偿模块460与来自帧存储器464的参考帧信号484的一部分组合,这样可产生帧间预测信号468。量化、去缩放和/或变换系数458可被逆模块462逆量化、缩放和逆变换,从而产生解码残差信号470。解码残差信号470可被添加到预测信号478以产生组合信号472。预测信号478可以是从帧间预测信号468或由帧内预测模块474产生的帧内预测信号476中选择的信号。在一些配置中,这种信号选择可基于比特流2414(例如,由比特流2414控制)。
[1120] 可从来自(例如当前帧中的)组合信号472的先前解码信息预测帧内预测信号476。还可通过去块过滤器480对组合信号472进行滤波。得到的滤波信号482可被写入帧存储器
464。得到的滤波信号482可包括解码图像。
[1121] 如这里的描述,帧存储器464可包括解码图像缓冲区(DPB)2416。解码图像缓冲区(DPB)2416能够进行混合解码图像缓冲区(DPB)的操作。解码图像缓冲区(DPB)2416可包括可被维持为短期或长期参考帧的一个或多个解码图像。帧存储器464还可包括与解码图像对应的开销信息。例如,帧存储器464可包括条带头、视频参数集(VPS)信息、序列参数集(SPS)信息、图像参数集(PPS)信息、循环参数、缓冲区描述信息等。这些信息中的一个或多个可从编码器(例如,编码器2108、开销信令模块2112)被信号通知。
[1122] 图67A是示出使用增强层和基础层两者来进行视频编码的框图,其中,使用分开的解码图像缓冲区(DPB)516a至516b和分开的混合解码图像缓冲区(DPB)操作模块520a至520b用于基础层和增强层。示出第一电子设备502a和第二电子设备502b。第一电子设备
502a可包括视频编码器508,视频编码器508包括增强层编码器526和基础层编码器528。包括在第一电子设备502a中的每个元件(即,增强层编码器526和基础层编码器528)均可以实施在硬件、软件或两者的组合中。第一电子设备502a可以获得输入图像2506。在一些配置中,输入图像2506可以使用图像传感器在第一电子设备502a上被捕获、从存储器检索或从另一电子设备502接收。
[1123] 增强层编码器526可编码输入图像2506以产生编码数据。例如,增强层编码器526可编码一系列输入图像2506(例如,视频)。编码数据可以包括在编码的增强层视频比特流530中。增强层编码器526可基于输入图像2506产生开销信令。
[1124] 增强层视频解码器534可以包括解码图像缓冲区(DPB)516a和混合解码图像缓冲区(DPB)操作模块520a。同样地,基础层解码器536可包括解码图像缓冲区(DPB)516b和混合解码图像缓冲区(DPB)操作模块520b。
[1125] 基础层编码器528还可以编码输入图像2506。在一种配置中,与增强层编码器526使用的相同的输入图像2506也可以被基础层编码器528使用。在另一配置中,基础层编码器528可以使用与增强层编码器526使用的不同(但相似)的输入图像2506。例如,对于信噪比(SNR)的可缩放性(也称为质量可缩放性),增强层编码器526和基础层编码器528两者可使用相同的输入图像2506。作为另一示例,对于空间可缩放性,基础层编码器528可使用下采样的图像。在另一示例中,对于多视图可缩放性,基础层编码器528可以使用不同的视图图像。基础层编码器528可产生包括在编码的基础层视频比特流532中的编码数据。
[1126] 编码的增强层视频比特流530和编码的基础层视频比特流532均可包括基于所输入图像2506的编码数据。在一个示例中,编码的增强层视频比特流530和编码的基础层视频比特流532可以包括编码图像数据。在一些配置中,编码的增强层视频比特流530和/或编码的基础层视频比特流532还可包括开销数据,诸如序列参数集(SPS)信息、图像参数集(PPS)信息、视频参数集(VPS)信息、条带头信息等。
[1127] 编码的增强层视频比特流530可以被提供到第二电子设备502b。同样地,编码的基础层视频比特流532可以被提供到第二电子设备502b中。第二电子设备502b可以包括视频解码器2504。视频解码器2504可以包括增强层解码器534和基础层解码器536。在一种配置中,编码的基础层视频比特流532被基础层解码器536解码,而编码的增强层视频比特流530被增强层解码器534解码。
[1128] 在一个示例中,可以使用有线或无线链路将编码的增强层视频比特流530和编码的基础层视频比特流532发送到第二电子设备502b。在一些情况下,这可以通过用于在设备之间通信的网络(诸如因特网、局域网(LAN)或其它类型的网络)来完成。应当指出的是,在一些配置中,编码器(即,增强层编码器526和基础层编码器528)和解码器2504(例如,基础层解码器536和增强层解码器534)可以实施在同一电子设备502上(即,第一电子设备502a和第二电子设备502b可以是单个电子设备502的一部分)。例如,在编码器和解码器实施在同一电子设备502上的实施方式中,编码的增强层视频比特流530和编码的基础层视频比特流532可以以各种方式被提供给视频解码器2504。例如,编码的增强层视频比特流530和编码的基础层视频流532可以通过总线提供给视频解码器2504或存储在存储器中以被视频解码器2504检索。
[1129] 视频解码器2504可基于编码的增强层视频比特流530和编码的基础层视频比特流532产生一个或多个解码图像。解码图像2118(其可以包括增强层解码图像538和基础层解码图像540)可被显示、回放、存储在存储器中和/或发送到另一个设备等。
[1130] 在一个示例中,解码图像2118可以被发送到另一设备或发送回第一电子设备502a。解码图像2118还可以被存储或以其它方式保持在第二电子设备502b中。在另一示例中,第二电子设备502b可以显示解码图像2118。在其它配置中,解码图像2118包括具有基于对比特流2114执行的编码和其它操作的不同性质的输入图像2506的元素。在一些配置中,解码图像2118可以包括在具有来自输入图像2506的不同分辨率、格式、规格或其它属性的图像流中。
[1131] 图67B是示出使用共享的解码图像缓冲区(DPB)516c和共享的混合解码图像缓冲区(DPB)操作模块520c用于基础层和增强层的框图。除了增强层视频编码器534和基础层解码器536共享解码图像缓冲区(DPB)516c和混合解码图像缓冲区(DPB)操作模块520c两者之外,图67B包括与图67A相同的组件。
[1132] 图68是示出混合解码图像缓冲区(DPB)操作的时序图。图68的混合解码图像缓冲区(DPB)操作示出优选变化的步骤,其中,移除、存储和参考标记基于图像,而输出、输出标记和附加输出基于访问单元(AU)。理想的解码图像缓冲区(DPB)和假想参考解码器(HRD)可以以如下方式操作:示出的各个单独步骤(例如,移除621a至621b、输出623、存储625a至625c、标记627a至627c、629以及附加输出631)都被立即执行。为了说明目的在各个步骤之间示出这些步骤的序列和时序偏移。对于输出时序解码器的一致性,图像输出的时序(相对于第一比特的传送时间)针对假想参考解码器(HRD)和被测解码器(DUT)两者是相同的,都是固定延迟。如此,与HRD相比,对于引入固定延迟的DUT可能发生示出的时序偏移。
[1133] 示出针对第一增强层(EL1)2642a的解码图像缓冲区(DPB)、第二增强层(EL2)2642b的解码图像缓冲区(DPB)和基础层(BL)2644的解码图像缓冲区(DPB)的步骤。示出基础层(BL)2644的编码图像缓冲区(CPB)移除时间2646。在编码图像缓冲区(CPB)移除时间
2646之后,可以由第二增强层(EL2)2642b的解码图像缓冲区(DPB)执行基于图像的移除(不输出)621a,可以由基础层(BL)2644的解码图像缓冲区(DPB)执行基于图像的移除(不输出)
621b。在一个时序偏移之后,可以由基础层(BL)2644的解码图像缓冲区(DPB)、第一增强层(EL1)2642a的解码图像缓冲区(DPB)和第二增强层(EL2)2642b的解码图像缓冲区(DPB)执行基于访问单元(AU)的图像输出(弹出)623。
[1134] 在另一个时序偏移之后,示出与当前解码图像相关的处理613。可以由基础层(BL)2644的解码图像缓冲区(DPB)、第一增强层(ELl)2642a的解码图像缓冲区(DPB)和第二增强层(EL2)2642b的解码图像缓冲区(DPB)执行基于图像的存储步骤625a至625c。可以在基础层(BL)2644、第一增强层(EL1)2642a和第二增强层(EL2)2642b图像中的每个被解码之后执行存储步骤。存储步骤625可以被进一步子划分。在存储步骤625,解码图像被存储在空存储缓冲区中的解码图像缓冲区(DPB)中,并且解码图像缓冲区(DPB)填充度以一为单位递增。
此外,当从解码图像缓冲区(DPB)移除(不输出)图像时,解码图像缓冲区(DPB)填充度以一为单位递减。类似地,当(在弹出或附加弹出期间)从解码图像缓冲区(DPB)弹出图像时,解码图像缓冲区(DPB)填充度以一为单位递减。
[1135] 解码图像缓冲区(DPB)可包括单独标识和管理的针对具有不同特性的解码图像的图像缓冲区。例如,解码图像缓冲区(DPB)可包括单独标识和管理的针对具有不同分辨率、不同比特深度和/或不同颜色色度的解码图像的图像缓冲区。
[1136] 解码图像可以替代地被存储在解码图像缓冲区(DPB)中的公共的图像存储缓冲区池中。例如,两个附加子情况可用于确定影响弹出/移除处理和级别定义的解码图像缓冲区(DPB)尺寸约束。在基于字节的解码图像缓冲区(DPB)约束中,可以考虑基于分辨率和/或比特深度的尺寸来存储解码图像。解码图像缓冲区(DPB)尺寸约束可被定义为考虑每个解码图像的分辨率和比特深度的字节限制。在基于图像单元的解码图像缓冲区(DPB)约束中,解码图像可被存储(并被视为占用一个图像缓冲区槽)。解码图像缓冲区(DPB)尺寸约束随后可被定义为图像槽限制的数量,而不需要考虑每个解码图像的分辨率和比特深度。
[1137] 在一种配置中,可以针对每层跟踪解码图像缓冲区(DPB)填充度。例如,可以用信号通知解码图像缓冲区(DPB)尺寸约束,并且可以针对每层应用弹出。在每层包括其自身的图像存储缓冲区的情况下,变量DPBFullness[nuh_layer_id]可用于跟踪每层的解码图像缓冲区(DPB)填充度。当从层ID值等于nuh_layer_id的层移除图像时,变量DPBFullness[nuh_layer_id]可被设置为等于DPBFullness[nuh_layer_id]-1(即,DPBFullness[nuh_layer_id]可以以一为单位递减)。在此情况下,图像从图像存储缓冲区PSB[nuh_layer_id]移除。
[1138] 类似地,当层ID值等于nuh_layer_id的当前解码图像被存储在解码图像缓冲区(DPB)中时,变量DPBFullness[nuh_layer_id]被设置为等于DPBFullness[nuh_layer_id]+1(即,DPBFullness[nuh_layer_id]以一为单位递增)。在此情况下,图像被存储在图像存储缓冲区PSB[nuh_layer_id]中。
[1139] 还可针对输出层集跟踪解码图像缓冲区(DPB)填充度。可随后用信号通知解码图像缓冲区(DPB)尺寸约束,并且可基于针对输出层集指定的约束来应用弹出。可针对与被测操作点相关联的输出层集跟踪DPBFullness值。因此,当从属于输出层集的层移除图像时,解码图像缓冲区(DPB)填充度的值可以以一为单位递减,如DPBFullness=DPBFullness-1。类似地,当当前解码图像被存储在解码图像缓冲区(DPB)中时,解码图像缓冲区(DPB)填充度可以以一为单位递增,如DPBFullness=DPBFullness+1。
[1140] 在当前解码图像相关的处理613中示出标记处理611。标记处理611可包括参考标记627a至627c以及输出标记629。在存储步骤625a至625c的时间偏移之后,可以由基础层(BL)2644的解码图像缓冲区(DPB)、第一增强层(EL1)2642a的解码图像缓冲区(DPB)和第二增强层(EL2)2642b的解码图像缓冲区(DPB)执行基于图像的参考标记步骤627a至627c。在另一时间偏移之后,可以由基础层(BL)2644的解码图像缓冲区(DPB)、第一增强层(EL1)2642a的解码图像缓冲区(DPB)和第二增强层(EL2)2642b的解码图像缓冲区(DPB)执行基于访问单元(AU)的输出标记步骤629。一旦当前解码图像相关的处理613完成,可以由基础层(BL)2644的解码图像缓冲区(DPB)、第一增强层(EL1)2642a的解码图像缓冲区(DPB)和第二增强层(EL2)2642b的解码图像缓冲区(DPB)执行基于访问单元(AU)的图像输出(附加弹出)步骤631。
[1141] 图69是示出当第二增强层(EL2)942b的图像速率比基础层(BL)944和第一增强层(EL1)942a的图像速率低时,针对编码图像的层中的网络抽象层(NAL)单元和访问单元(AU)的结构和时序的框图。沿着第一增强层(EL1)942a示出EL1编码图像953a的NAL单元。沿着第二增强层(EL2)942b示出EL2编码图像953b的NAL单元。沿着基础层(BL)944示出基础层编码图像953c的NAL单元。
[1142] 在时间t1,EL1编码图像953a的NAL单元、EL2编码图像953b的NAL单元和基础层编码图像953c的NAL单元是访问单元(AU)955a的一部分。在时间t2,EL1编码图像953a的NAL单元和基础层编码图像953c的NAL单元是访问单元(AU)955b的一部分。在时间t3,EL1编码图像953a的NAL单元、EL2编码图像953b的NAL单元和基础层编码图像953c的NAL单元是访问单元(AU)955c的一部分。在时间t4,EL1编码图像953a的NAL单元和基础层编码图像953c的NAL单元是访问单元(AU)955d的一部分。
[1143] 图70是示出当基础层(BL)1044的图像速率比第一增强层(EL1)1042a和第二增强层(EL2)1042b的图像速率低时,针对编码图像的层中的网络抽象层(NAL)单元和访问单元(AU)的结构和时序的框图。沿着第一增强层(EL1)1042a示出EL1编码图像1053a的NAL单元。沿着第二增强层(EL2)1042b示出EL2编码图像1053b的NAL单元。沿着基础层(BL)1044示出基础层编码图像1053c的NAL单元。
[1144] 在时间t1,EL1编码图像1053a的NAL单元、EL2编码图像1053b的NAL单元和基础层编码图像1053c的NAL单元是访问单元(AU)1055a的一部分。在时间t2,EL1编码图像1053a的NAL单元和EL2编码图像1053b的NAL单元是访问单元(AU)1055b的一部分。在时间t3,EL1编码图像1053a的NAL单元、EL2编码图像1053b的NAL单元和基础层编码图像1053c的NAL单元是访问单元(AU)1055c的一部分。在时间t4,EL1编码图像1053a的NAL单元和EL2编码图像1053b的NAL单元是访问单元(AU)1055d的一部分。
[1145] 术语“计算机可读介质”表示可被计算机或处理器访问的任何可用介质。如这里所使用的,术语“计算机可读介质”可表示非暂时且有形的计算机和/或处理器可读介质。通过示例而非限制的方式,计算机可读或处理器可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光学盘存储器、磁盘存储器或其它磁存储设备、或者可用于承载或存储可被计算机或处理器访问的指令或数据结构的形式下的期望程序代码的任何其它介质。如这里所使用的磁盘或光盘包括致密盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘和蓝光(注册商标)盘,其中,磁盘通常磁再现数据,而光盘通常利用激光光再现数据。
[1146] 应当指出的是,在此描述的一个或多个方法可被实施在硬件中和/或使用硬件实施。例如,在此描述的一个或多个方法或途径可以在芯片组、ASIC、LSI或集成电路等中实施和/或使用芯片组、ASIC、LSI或集成电路等来实现。
[1147] 在此公开的每个方法包括用于实现描述的方法的一个或多个步骤或动作。在不脱离权利要求的范围的情况下,方法步骤和/或动作可以彼此互换和/或组合为单个步骤。换句话说,除非为了描述的方法的正确操作要求特定顺序的步骤或动作,否则可以在不脱离权利要求的范围的情况下修改特定步骤和/或动作的顺序和/或使用。
[1148] 应理解,权利要求不受限于以上示出的详细配置和组件。在不脱离权利要求的范围的情况下,可以对在此描述的系统、方法和装置的布置、操作和细节进行各种修改、改变和变化。
高效检索全球专利

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

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

电话:13651749426

侵权分析

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

立即试用