视频译码中的逐步解码刷新

文档序号:1804649 发布日期:2021-11-05 浏览:15次 >En<

阅读说明:本技术 视频译码中的逐步解码刷新 (Gradual decoding refresh in video coding ) 是由 王业奎 弗努·亨德里 陈建乐 于 2020-03-11 设计创作,主要内容包括:公开了一种由视频解码器实现的对经编码的视频码流进行解码的方法。所述方法包括:确定所述经编码的视频码流的编码视频序列(coded video sequence,CVS)包括具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR-NUT)的视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元,具有所述GDR-NUT的所述VCL NAL单元包含GDR图像;在所述GDR图像处开始对所述CVS的解码;根据所述解码的CVS生成图像。还公开了对应的编码方法。(A method implemented by a video decoder for decoding an encoded video bitstream is disclosed. The method comprises the following steps: determining that a Coded Video Sequence (CVS) of the coded video bitstream includes a Video Coding Layer (VCL) Network Abstraction Layer (NAL) unit having a Gradual Decoding Refresh (GDR) Network Abstraction Layer (NAL) unit type (GDR _ NUT), the VCL NAL unit having the GDR _ NUT containing a GDR image; starting decoding of the CVS at the GDR picture; generating an image from the decoded CVS. A corresponding encoding method is also disclosed.)

视频译码中的逐步解码刷新

相关申请案交叉引用

本专利申请要求Fnu Hendry等人于2019年3月11日提交的第62/816,722号、发明名称为“视频译码中的逐步解码刷新(Gradual Decoding Refresh in Video Coding)”的美国临时专利申请,以及Fnu Hendry等人于2019年7月5日提交的第62/871,020号、发明名称为“视频译码中的逐步解码刷新(Gradual Decoding Refresh in Video Coding)”的美国临时专利申请的权益,其都通过引用并入本文。

技术领域

本发明大体上描述了支持视频译码中逐步解码刷新的技术。更具体地,本发明可以实现渐进式帧内刷新以便能够在不必使用帧内随机接入点(intra random accesspoint,IRAP)图像的情况下进行随机接入。

背景技术

即使视频相对较短,也需要大量的视频数据来描述,当数据要在带宽容量受限的通信网络中进行流式传输或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后在现代电信网络中发送。由于内存资源可能有限,当在存储设备中存储视频时,视频的大小也可能成为问题。视频压缩设备通常在信源侧使用软件和/或硬件对视频数据进行编码,然后进行传输或存储,从而减少表示数字视频图像所需的数据量。然后,对视频数据进行解码的视频解压缩设备在目的地侧接收压缩数据。在网络资源有限以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。

发明内容

第一方面涉及一种由视频解码器实现的对经编码的视频码流进行解码的方法。所述方法包括:所述视频解码器确定所述经编码的视频码流的编码视频序列(coded videosequence,CVS)包括视频编码层(video coding layer,VCL)网络抽象层(networkabstraction layer,NAL)单元,所述VCL NAL单元具有具有逐步解码刷新(gradualdecoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR_NUT),所述GDR_NUT的所述VCL NAL单元包含GDR图像;所述视频解码器在所述GDR图像处开始对所述CVS的解码;所述视频解码器根据所述解码的CVS生成图像。

该方法提供了可以实现渐进式帧内刷新以便能够在不必使用帧内随机接入点(intra random access point,IRAP)图像的情况下进行随机接入的技术。视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR_NUT),以表示VCL NAL单元包含GDR图像。通过使用GDR图像而不是IRAP图像,例如,由于GDR图像相对于IRAP图像的大小,可以实现更平滑、更一致的比特率,从而可以减少端到端延迟(即时延)。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。

根据第一方面,在所述方法的第一种实现方式中,所述GDR图像是所述CVS中的初始图像。

根据第一方面或第一方面的任一上述实现方式,在所述方法的第二种实现方式中,所述GDR图像是GDR周期中的初始图像。

根据第一方面或第一方面的任一上述实现方式,在所述方法的第三种实现方式中,所述GDR图像具有等于零的时间标识符(identifier,ID)。

根据第一方面或第一方面的任一上述实现方式,在所述方法的第四种实现方式中,包含具有所述GDR_NUT的所述VCL NAL单元的接入单元指定为GDR接入单元。

根据第一方面或第一方面的任一上述实现方式,在所述方法的第五种实现方式中,所述GDR_NUT向所述视频解码器指示具有所述GDR_NUT的所述VCL NAL单元包含所述GDR图像。

第二方面涉及一种由视频编码器实现的对视频码流进行编码的方法。所述方法包括:所述视频编码器确定视频序列的随机接入点;所述视频编码器在所述视频序列的所述随机接入点处将逐步解码刷新(gradual decoding refresh,GDR)图像编码到视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元中,所述VCL NAL单元具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(networkabstraction layer,NAL)单元类型(GDR_NUT);所述视频编码器生成码流,所述码流包含所述视频序列,所述视频序列包括在所述随机接入点处的所述GDR图像,所述GDR图像在具有所述GDR_NUT的所述VCL NAL单元中;所述视频编码器存储所述码流,用于发送给视频解码器。

该方法提供了可以实现渐进式帧内刷新以便能够在不必使用帧内随机接入点(intra random access point,IRAP)图像的情况下进行随机接入的技术。视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR_NUT),以表示VCL NAL单元包含GDR图像。通过使用GDR图像而不是IRAP图像,例如,由于GDR图像相对于IRAP图像的大小,可以实现更平滑、更一致的比特率,从而可以减少端到端延迟(即时延)。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。

根据第二方面,在所述方法的第一种实现方式中,所述GDR图像是所述CVS中的初始图像。

根据第二方面或第二方面的任一上述实现方式,在所述方法的第二种实现方式中,所述GDR图像是GDR周期中的初始图像。

根据第二方面或第二方面的任一上述实现方式,在所述方法的第三种实现方式中,所述GDR图像具有等于零的时间标识符(identifier,ID)。

根据第二方面或第二方面的任一上述实现方式,在所述方法的第四种实现方式中,具有所述GDR_NUT的所述VCL NAL单元指定为GDR接入单元。

根据第二方面或第二方面的任一上述实现方式,在所述方法的第五种实现方式中,所述GDR_NUT向所述视频解码器指示具有所述GDR_NUT的所述VCL NAL单元包含所述GDR图像。

第三方面涉及一种解码设备。所述解码设备包括:接收器,用于接收经编码的视频码流;与所述接收器耦合的存储器,所述存储器存储指令;与所述存储器耦合的处理器,所述处理器用于执行所述指令以使所述解码设备:确定所述经编码的视频码流的编码视频序列(coded video sequence,CVS)包括视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元,所述VCL NAL单元具有逐步解码刷新(gradualdecoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR_NUT),具有所述GDR_NUT的所述VCL NAL单元包含GDR图像;在所述GDR图像处开始对所述CVS的解码;根据所述解码的CVS生成图像。

该解码设备提供了可以实现渐进式帧内刷新以便能够在不必使用帧内随机接入点(intra random access point,IRAP)图像的情况下进行随机接入的技术。视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR_NUT),以表示VCL NAL单元包含GDR图像。通过使用GDR图像而不是IRAP图像,例如,由于GDR图像相对于IRAP图像的大小,可以实现更平滑、更一致的比特率,从而可以减少端到端延迟(即时延)。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。

根据第三方面,在所述解码设备的第一种实现方式中,所述解码设备还包括用于显示所述生成的图像的显示器。

第四方面涉及一种编码设备。所述编码设备包括:存储器,所述存储器包含指令;与所述存储器耦合的处理器,所述处理器用于实现所述指令以使所述编码设备:确定视频序列的随机接入点;在所述视频序列的所述随机接入点处将逐步解码刷新(gradualdecoding refresh,GDR)图像编码到视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元中,所述VCL NAL单元具有逐步解码刷新(gradualdecoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR_NUT);生成码流,所述码流包含所述视频序列,所述视频序列包括在所述随机接入点处的所述GDR图像,所述GDR图像在具有所述GDR_NUT的所述VCL NAL单元中;与所述处理器耦合的发送器,所述发送器用于向视频解码器发送所述码流。

该编码设备提供了可以实现渐进式帧内刷新以便能够在不必使用帧内随机接入点(intra random access point,IRAP)图像的情况下进行随机接入的技术。视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR_NUT),以表示VCL NAL单元包含GDR图像。通过使用GDR图像而不是IRAP图像,例如,由于GDR图像相对于IRAP图像的大小,可以实现更平滑、更一致的比特率,从而可以减少端到端延迟(即时延)。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。

根据第四方面,在所述编码设备的第一种实现方式中,所述存储器在所述发送器向所述视频解码器发送所述码流之前存储所述码流。

第五方面涉及一种译码装置。所述译码装置包括:接收器,用于接收图像进行编码或接收码流进行解码;与所述接收器耦合的发送器,其中,所述发送器用于将所述码流发送到解码器或将解码图像发送到显示器;与所述接收器或所述发送器中的至少一个耦合的存储器,其中,所述存储器用于存储指令;与所述存储器耦合的处理器,其中,所述处理器用于执行存储在所述存储器中的所述指令以执行本文公开的任一种方法。

该译码装置提供了可以实现渐进式帧内刷新以便能够在不必使用帧内随机接入点(intra random access point,IRAP)图像的情况下进行随机接入的技术。视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR_NUT),以表示VCL NAL单元包含GDR图像。通过使用GDR图像而不是IRAP图像,例如,由于GDR图像相对于IRAP图像的大小,可以实现更平滑、更一致的比特率,从而可以减少端到端延迟(即时延)。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。

第六方面涉及一种系统。所述系统包括编码器;以及与所述编码器通信的解码器,其中,所述编码器或所述解码器包括本文公开的解码设备、编码设备或译码装置。

该系统提供了可以实现渐进式帧内刷新以便能够在不必使用帧内随机接入点(intra random access point,IRAP)图像的情况下进行随机接入的技术。视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR_NUT),以表示VCL NAL单元包含GDR图像。通过使用GDR图像而不是IRAP图像,例如,由于GDR图像相对于IRAP图像的大小,可以实现更平滑、更一致的比特率,从而可以减少端到端延迟(即时延)。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。

第七方面涉及一种译码模块。所述译码模块包括:接收模块,用于接收图像进行编码或接收码流进行解码;与所述接收模块耦合的发送模块,其中,所述发送模块用于将所述码流发送到解码模块或将解码图像发送到显示模块;与所述接收模块或所述发送模块中的至少一个耦合的存储模块,其中,所述存储模块用于存储指令;与所述存储模块耦合的处理模块,其中,所述处理模块用于执行存储在所述存储模块中的所述指令,以执行本文公开的任一种方法。

该译码模块提供了可以实现渐进式帧内刷新以便能够在不必使用帧内随机接入点(intra random access point,IRAP)图像的情况下进行随机接入的技术。视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR_NUT),以表示VCL NAL单元包含GDR图像。通过使用GDR图像而不是IRAP图像,例如,由于GDR图像相对于IRAP图像的大小,可以实现更平滑、更一致的比特率,从而可以减少端到端延迟(即时延)。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。

附图说明

为了更全面地理解本发明,现在参考以下结合附图和

具体实施方式

进行的简要描述,其中,相似的附图标记表示相似的部件。

图1是可以利用GDR技术的示例译码系统的框图。

图2是可以实现GDR技术的示例视频编码器的框图。

图3是可以实现GDR技术的视频解码器示例的框图。

图4是在解码顺序和呈现顺序中帧内随机接入点(intra random access point,IRAP)图像相对于前置图像和后置图像的关系的表示。

图5示出了一种逐步解码刷新技术。

图6是不希望的运动搜索的示意图。

图7示出了本发明实施例提供的描述逐步解码刷新技术的码流。

图8是对经编码的视频码流进行解码的方法的实施例。

图9是对视频码流进行编码的方法的实施例。

图10是视频译码设备的示意图。

图11是译码模块的实施例的示意图。

具体实施方式

图1为可以采用本文描述的视频译码技术的示例性译码系统10的框图。如图1所示,译码系统10包括源设备12,源设备12提供稍后待目的地设备14解码的经编码的视频数据。具体地,源设备12可以通过计算机可读介质16将视频数据提供给目的地设备14。源设备12和目的地设备14可以包括各种设备中的任一个,包括台式电脑、笔记本(例如,膝上型)电脑、平板电脑、机顶盒、“智能”手机和“智能”平板等电话手机、电视、摄像机、显示设备、数字媒体播放器、视频游戏机、视频流设备等。在一些情况下,源设备12和目的地设备14可以用于无线通信。

目的地设备14可以通过计算机可读介质16接收待解码的经编码的视频数据。计算机可读介质16可以包括能够将经编码的视频数据从源设备12移动到目的地设备14的任何类型的介质或设备。在一个示例中,计算机可读介质16可以包括通信介质,以使源设备12能够将经编码的视频数据直接实时地发送到目的地设备14。经编码的视频数据可以根据通信标准(例如,无线通信协议)来调制,然后发送给目的地设备14。该通信介质可以包括任何无线或有线通信介质,例如,射频(radio frequency,RF)频谱或一个或多个物理传输线。通信介质可以构成分组网络(如局域网、广域网或如互联网等全球网络)的一部分。该通信介质可以包括路由器、交换机、基站或任何其它可以促进源设备12与目的地设备14之间通信的设备。

在一些示例中,经编码的数据可以从输出接口22输出到存储设备。类似地,经编码的数据可以通过输入接口从存储设备中存取。该存储设备可以包括各种分布式或本地存取的数据存储介质中的任一个,例如,硬盘驱动器、蓝光光盘、数字视频光盘(digital videodisk,DVD)、只读光盘存储器(Compact Disc Read-Only Memory,CD-ROM)、闪存、易失性或非易失性存储器,或任何其它适合用于存储经编码的视频数据的数字存储介质。在另一示例中,存储设备可以对应于文件服务器或可以存储由源设备12生成的经编码的视频的另一中间存储设备。目的地设备14可以通过流式传输或下载方式从存储设备中存取所存储的视频数据。文件服务器可以是能够存储经编码的视频数据并将该经编码的视频数据发送给目的地设备14的任何类型的服务器。示例性文件服务器包括万维网服务器(例如,用于网站)、文件传输协议(file transfer protocol,FTP)服务器、网络附属存储(network attachedstorage,NAS)设备或本地磁盘驱动器。目的地设备14可以通过包括因特网连接的任何标准数据连接存取经编码的视频数据。标准数据连接可以包括无线信道(例如,Wi-Fi连接)、有线连接(例如,数字用户线(digital subscriber line,DSL)、电缆调制解调器等)或适于存取在文件服务器中存储的经编码的视频数据的两者组合。经编码的视频数据从存储设备的传输可以是流式传输、下载传输或其组合。

本发明的技术不一定限于无线应用或设置。这些技术可以应用于视频译码以支持各种多媒体应用中的任一种,例如,空中电视广播、有线电视传输、卫星电视传输、HTTP动态自适应流媒体(dynamic adaptive streaming over HTTP,DASH)等互联网流式视频传输、将数字视频编码以存储于数据存储介质中、对存储于数据存储介质中的数字视频解码,或其它应用。在一些示例中,译码系统10可以用于支持单向或双向视频传输,以支持视频流式传输、视频播放、视频广播和/或视频电话等应用。

在图1的示例中,源设备12包括视频源18、视频编码器20和输出接口22。目的地设备14包括输入接口28、视频解码器30和显示设备32。根据本发明,源设备12的视频编码器20和/或目的地设备14的视频解码器30可以用于应用视频译码技术。在其它示例中,源设备和目的地设备可以包括其它组件或装置。例如,源设备12可以从外部视频源(例如,外部相机)接收视频数据。类似地,目的地设备14可以与外部显示设备连接,而不是包括集成显示设备。

图1所示的译码系统10仅仅是一个示例。视频译码技术可以由任何数字视频编码和/或解码设备执行。尽管本发明的技术通常由视频译码设备执行,但这些技术也可以由视频编码器/解码器(通常称为“编解码器”)执行。此外,本发明的技术还可以由视频预处理器执行。视频编码器和/或解码器可以是图形处理单元(graphics processing unit,GPU)或类似设备。

源设备12和目的地设备14仅仅是此类译码设备的示例,其中,源设备12生成经编码的视频数据,用于发送给目的地设备14。在一些示例中,源设备12和目的地设备14可以基本上对称地操作,使得源设备12和目的地设备14都包括视频编码和解码组件。因此,译码系统10可以支持视频设备12和14之间的单向或双向视频传输,例如,用于视频流式传输、视频播放、视频广播或视频电话。

源设备12的视频源18可以包括视频捕获设备(例如,摄像机)、包括先前捕获的视频的视频档案库,和/或从视频内容提供方接收视频的视频输入接口。或者,视频源18可以生成基于计算机图形的数据作为源视频,或作为直播视频、存档视频和计算机生成视频的组合。

在一些情况下,当视频源18是摄像机时,源设备12和目的地设备14可以组成摄像手机或可视电话。但是,如上所述,本发明中描述的技术通常可以适用于视频译码,并且可以应用于无线应用和/或有线应用。在每种情况下,所捕获、预捕获或计算机生成的视频都可以由视频编码器20进行编码。然后,经编码的视频信息可以通过输出接口22输出到计算机可读介质16。

计算机可读介质16可以包括瞬态介质,例如,无线广播或有线网络传输,还可以包括存储介质(即,非瞬时性存储介质),例如,硬盘、闪存盘、光盘、数字视频光盘、蓝光光盘或其它计算机可读介质。在一些示例中,网络服务器(未示出)可以从源设备12接收经编码的视频数据,并且通过网络传输等将经编码的视频数据提供给目的地设备14。类似地,介质生产设施(例如,光盘冲压设施)的计算设备可以从源设备12接收经编码的视频数据,并产生包括经编码的视频数据的光盘。因此,在各种示例中,计算机可读介质16可以理解为包括一个或多个各种形式的计算机可读介质。

目的地设备14的输入接口28从计算机可读介质16接收信息。计算机可读介质16的信息可以包括由视频编码器20定义的语法信息。该语法信息还由视频解码器30使用,包括描述块和其它编码单元(例如,图像组(group of picture,GOP))的特征和/或处理方式的语法元素。显示设备32将经解码的视频数据显示给用户,并且可以包括各种显示设备中的任一个,例如,阴极射线管(cathode ray tube,CRT)、液晶显示器(liquid crystaldisplay,LCD)、等离子体显示器、有机发光二极管(organic light emitting diode,OLED)显示器或其它类型的显示设备。

视频编码器20和视频解码器30可以根据视频编码标准(例如,目前开发的高效视频编码(efficiency video coding,HEVC)标准)进行操作,并且可以遵守HEVC测试模型(HEVC test model,HM)。可选地,视频编码器20和视频解码器30可以根据其它专有或行业标准进行操作,这些标准例如为国际电信联盟电信标准化部门(InternationalTelecommunications Union Telecommunication Standardization Sector,ITU-T)H.264标准(还称为运动图像专家组(motion picture expert group,MPEG)-4第10部分,高级视频编码(advanced video coding,AVC))、H.265/HEVC及此类标准的扩展版本。但是,本发明的技术不限于任何特定的编码标准。视频编码标准的其它示例包括MPEG-2和ITU-T H.263。尽管图1未示出,但是在一些方面中,视频编码器20和视频解码器30可以分别与音频编码器和音频解码器集成,并且可以包括合适的复用器-解复用器(multiplexer-demultiplexer,MUX-DEMUX)单元或其它硬件和软件,以处理共同数据流或独立数据流中的音频和视频两者的编码。如果适用,MUX-DEMUX单元可以遵守ITU H.223复用器协议,或用户数据报协议(user datagram protocol,UDP)等其它协议。

视频编码器20和视频解码器30可以分别实现为各种合适的编码器电路中的任一个,例如,一个或多个微处理器、一个或多个数字信号处理器(digital signal processor,DSP)、一个或多个专用集成电路(application specific integrated circuit,ASIC)、一个或多个现场可编程门阵列(field programmable gate array,FPGA)、一个或多个离散逻辑、一个或多个软件、一个或多个硬件、一个或多个固件或其任何组合。当上述技术部分以软件实现时,一种设备可以将该软件的指令存储在合适的非瞬时性计算机可读介质中,并且在硬件中使用一个或多个处理器来执行这些指令,以执行本发明的技术。视频编码器20和视频解码器30都可以包括在一个或多个编码器或解码器中,其中任一者可以集成为相应设备中的组合编码器/解码器(encoder/decoder,CODEC)的部分。包括视频编码器20和/或视频解码器30的设备可以包括集成电路、微处理器和/或如蜂窝电话等无线通信设备。

图2为可以实现视频译码技术的视频编码器20示例的框图。视频编码器20可以对视频条带(slice)内的视频块执行帧内译码和帧间译码。帧内译码依赖于空间预测来减少或去除给定视频帧或图像内的视频中的空间冗余。帧间译码依赖于时间预测来减少或去除视频序列的相邻帧或图像内的视频中的时间冗余。帧内模式(I模式)可以指代若干种基于空间的译码模式中的任一种。帧间模式(例如单向预测(uni-directional/uniprediction)(P模式)或双向预测(bi-prediction/bi prediction)(B模式)可以指代若干种基于时间的译码模式中的任一种。

如图2所示,视频编码器20接收待编码的视频帧内的当前视频块。在图2的示例中,视频编码器20包括模式选择单元40、参考帧存储器64、加法器50、变换处理单元52、量化单元54和熵编码单元56。模式选择单元40又包括运动补偿单元44、运动估计单元42、帧内预测(intra-predition/intra prediction)单元46和分割单元48。为了视频块重建,视频编码器20还包括反量化单元58、逆变换单元60和加法器62。去块效应滤波器(图2中未示出)也包括在内,以对块边界进行滤波,从而从重建视频中去除块性伪影。如果需要,去块效应滤波器通常对加法器62的输出进行滤波。除去块效应滤波器之外,还可以使用其它(环内或环后)滤波器。为了简洁起见而未示出此类滤波器,但是如果需要,此类滤波器(作为环内滤波器)可以对加法器50的输出进行滤波。

在编码过程期间,视频编码器20接收待译码的视频帧或条带。可以将帧或条带划分成多个视频块。运动估计单元42和运动补偿单元44相对于一个或多个参考帧中的一个或多个块对接收到的视频块执行帧间预测译码,以提供时间预测。帧内预测单元46还可以相对于与待译码块位于同一帧或条带中的一个或多个相邻块对接收到的视频块执行帧内预测译码,以提供空间预测。视频编码器20可以执行多个译码过程,(例如)以选择用于视频数据的每一块的适当译码模式。

此外,分割单元48可以基于先前译码过程中对先前分割方案的评估而将视频数据的块分割成多个子块。例如,分割单元48可以最初将帧或条带分割成多个最大编码单元(largest coding unit,LCU),并且根据率失真分析(例如,率失真优化)将每个LCU分割成多个子编码单元(sub-coding unit,sub-CU)。模式选择单元40可以进一步产生指示LCU分割成多个子CU的四叉树数据结构。四叉树的叶节点CU可以包括一个或多个预测单元(prediction unit,PU)和一个或多个变换单元(transform unit,TU)。

本发明使用术语“块”来指代HEVC上下文中的CU、PU或TU中的任一个或其它标准上下文中的类似数据结构(例如,H.264/AVC中的宏块及其子块)。CU包括编码节点、与编码节点关联的PU和TU。CU的大小与编码节点的大小对应,呈正方形。CU的大小范围可以为8×8个像素到最大值为64×64个像素或更大的树块大小。每个CU可以包括一个或多个PU和一个或多个TU。例如,与CU关联的语法数据可以描述将CU分割为一个或多个PU。对CU进行跳过模式或直接模式编码、进行帧内预测模式编码或进行帧间预测(inter-predictio/interprediction)模式编码,分割模式可能有所不同。PU可以分割成非正方形。与CU关联的语法数据还可以描述(例如)根据四叉树将CU分割成一个或多个TU。TU可以是正方形或非正方形(例如,矩形)。

模式选择单元40可以根据误差结果等选择帧内或帧间译码模式中的一种,将所得到的帧内或帧间译码块提供给加法器50以生成残差块数据,并提供给加法器62以重建编码块以用作参考帧。模式选择单元40还将语法元素(例如,运动矢量、帧内模式指示符、分割信息和其它此类语法信息)提供给熵编码单元56。

运动估计单元42和运动补偿单元44可以高度集成,但出于概念目的而分别说明。由运动估计单元42执行的运动估计为生成运动矢量的过程,这些运动矢量估计视频块的运动。例如,运动矢量可以表示当前视频帧或图像内的视频块的PU相对于参考帧(或其它经编码单元)内的预测块(其相对于当前帧(或其它经编码单元)内的正被编码的当前块)的位移。预测块为发现在像素差方面与待译码块高度匹配的块。所述像素差可以通过绝对差和(sum of absolute difference,SAD)、平方差和(sum of square difference,SSD)或其它差度量进行确定。在一些示例中,视频编码器20可以计算存储于参考帧存储器64中的参考图像的子整数像素位置的值。例如,视频编码器20可以插值参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置的值。因此,运动估计单元42可以执行相对于整数像素位置和分数像素位置的运动搜索,并以分数像素精度输出运动矢量。

运动估计单元42通过将帧间译码条带中的视频块的PU的位置与参考图像的预测块的位置进行比较而计算该PU的运动矢量。参考图像可以选自第一参考图像列表(列表0)或第二参考图像列表(列表1),其中每一个列表标识存储于参考帧存储器64中的一个或多个参考图像。运动估计单元42将计算得到的运动矢量发送给熵编码单元56和运动补偿单元44。

由运动补偿单元44执行的运动补偿可以包括根据运动估计单元42确定的运动矢量来提取或生成预测块。另外,在一些示例中,运动估计单元42和运动补偿单元44可以在功能上集成。一旦接收到当前视频块的PU的运动矢量,运动补偿单元44可以定位在其中一个参考图像列表中运动矢量指向的预测块。加法器50通过从正被译码的当前视频块的像素值中减去预测块的像素值,从而形成像素差值来形成残差视频块,如下所述。通常,运动估计单元42执行关于亮度分量的运动估计,运动补偿单元44将根据亮度分量计算得到的运动矢量用于色度分量和亮度分量两者。模式选择单元40还可以生成与视频块和视频条带关联的语法元素,以供视频解码器30在解码视频条带的视频块时使用。

帧内预测单元46可以对当前块进行帧内预测,以替代由运动估计单元42和运动补偿单元44执行的帧间预测,如上文所述。具体地,帧内预测单元46可以确定帧内预测模式,以用于编码当前块。在一些示例中,帧内预测单元46可以(例如)在单独的编码过程期间使用各种帧内预测模式来编码当前块,而且帧内预测单元46(或在一些示例中,模式选择单元40)可以从经测试的模式中选择要使用的合适帧内预测模式。

例如,帧内预测单元46可以使用针对各种经测试的帧内预测模式的率失真分析而计算率失真值,并在经测试模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定编码块与经编码以产生编码块的原始未编码块之间的失真(或误差)量,以及用于产生编码块的比特率(即,比特数)。帧内预测单元46可以根据各个编码块的失真和速率计算比率,以判断哪种帧内预测模式对于该块表现最佳率失真值。

另外,帧内预测单元46可以用于使用深度建模模式(depth modeling mode,DMM)对深度图像的深度块进行译码。模式选择单元40可以判断可用DMM模式是否比帧内预测模式和其它DMM模式(例如,使用率失真优化(rate-distortion optimization,RDO))产生更好的译码结果。与深度图像对应的纹理图像的数据可以存储于参考帧存储器64中。运动估计单元42和运动补偿单元44还可以用于对深度图像的深度块进行帧间预测。

在选择块的帧内预测模式(例如,传统的帧内预测模式或其中一个DMM模式)之后,帧内预测单元46可以将信息提供给熵编码单元56,该信息表示为块选择的帧内预测模式。熵编码单元56可以对表示所选帧内预测模式的信息进行编码。视频编码器20可以在所发送的码流中携带配置数据,所述配置数据可以包括多个帧内预测模式索引表和多个经修改的帧内预测模式索引表(也称为码字映射表),各种块的编码上下文的定义,待用于每个编码上下文的最有可能帧内预测模式、帧内预测模式索引表和经修改的帧内预测模式索引表的指示。

视频编码器20通过从正被译码的原始视频块中减去来自模式选择单元40的预测数据而形成残差视频块。求和器50表示执行这种减法运算的一个或多个组件。

变换处理单元52将离散余弦变换(discrete cosine transform,DCT)或概念上类似的变换等变换应用于残差块,从而产生包括残差变换系数值的视频块。变换处理单元52可以执行概念上类似于DCT的其它变换。还可以使用小波变换、整数变换、子频带变换或其它类型的变换。

变换处理单元52将变换应用于残差块,从而产生残差变换系数块。上述变换可以将残差信息从像素值域转换到变换域(例如频域)。变换处理单元52可以将所得到的变换系数发送给量化单元54。量化单元54对变换系数进行量化以进一步降低比特率。量化过程可以减小与部分或全部系数关联的位深度。量化程度可以通过调整量化参数来修改。在一些示例中,量化单元54可以接着对包括量化变换系数的矩阵执行扫描。或者,熵编码单元56可以执行扫描。

在量化之后,熵编码单元56对量化变换系数进行熵编码。例如,熵编码单元56可以执行上下文自适应可变长度编码(context adaptive variable length coding,CAVLC)、上下文自适应二进制算术编码(context adaptive binary arithmetic coding,CABAC)、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptive binaryarithmetic coding,SBAC)、概率区间分割熵(probability interval partitioningentropy,PIPE)编码或其它熵编码技术。在基于上下文的熵编码的情况中,上下文可以基于相邻块。在由熵编码单元56执行熵编码之后,经编码的码流可用于发送给另一设备(例如,视频解码器30)或存档以供稍后发送或检索。

反量化单元58和逆变换单元60分别应用反量化和逆变换,以在像素域中重建残差块,(例如)以供稍后用作参考块。运动补偿单元44可以通过将残差块加到参考帧存储器64内的其中一个帧的预测块中来计算参考块。运动补偿单元44还可以将一个或多个插值滤波器应用于重建残差块,以计算子整数像素值以供用于运动估计中。加法器62将重建残差块加到由运动补偿单元44产生的运动补偿预测块中,以产生重建视频块以供存储于参考帧存储器64中。重建视频块可以由运动估计单元42和运动补偿单元44用作参考块,以对后续视频帧中的块进行帧间译码。

图3为可以实现视频译码技术的视频解码器30示例的框图。在图3的示例中,视频解码器30包括熵解码单元70、运动补偿单元72、帧内预测单元74、反量化单元76、逆变换单元78、参考帧存储器82和加法器80。在一些示例中,视频解码器30可以执行与参照视频编码器20(图2)描述的编码过程大体相反的解码过程。运动补偿单元72可以根据从熵解码单元70接收到的运动矢量来生成预测数据,而帧内预测单元74可以根据从熵解码单元70接收到的帧内预测模式指示符来生成预测数据。

在解码过程期间,视频解码器30从视频编码器20接收经编码的视频码流,该经编码的视频码流表示经编码的视频条带的视频块及关联的语法元素。视频解码器30的熵解码单元70对码流进行熵解码以生成量化系数、运动矢量或帧内预测模式指示符和其它语法元素。熵解码单元70将运动矢量和其它语法元素转发给运动补偿单元72。视频解码器30可以接收视频条带级和/或视频块级的语法元素。

当视频条带经译码为帧内译码(I)条带时,帧内预测单元74可以根据指示的帧内预测模式和来自当前帧或图像的先前解码块的数据为当前视频条带的视频块生成预测数据。当视频帧经译码为帧间译码(例如,B、P或GPB)条带时,运动补偿单元72根据从熵解码单元70接收到的运动矢量和其它语法元素为当前视频条带的视频块产生预测块。这些预测块可以根据其中一个参考图像列表内的其中一个参考图像而产生。视频解码器30可以根据存储于参考帧存储器82中的参考图像,使用默认构建技术来构建参考帧列表:列表0和列表1。

运动补偿单元72通过解析运动矢量和其它语法元素针对当前视频条带的视频块确定预测信息,并使用所述预测信息为正被解码的当前视频块产生预测块。例如,运动补偿单元72使用接收到的一些语法元素来确定用于对视频条带的视频块进行译码的预测模式(例如,帧内预测或帧间预测)、帧间预测条带类型(例如,B条带、P条带或GPB条带)、条带的一个或多个参考图像列表的构建信息、条带的每个帧间编码视频块的运动矢量、条带的每个帧间译码视频块的帧间预测状态和用于对当前视频条带中的视频块进行解码的其它信息。

运动补偿单元72还可以根据插值滤波器进行插值。运动补偿单元72可以使用由视频编码器20在视频块编码期间使用的插值滤波器来计算参考块的子整数像素的插值。在这种情况下,运动补偿单元72可以根据接收到的语法元素来确定由视频编码器20使用的插值滤波器,并使用这些插值滤波器来产生预测块。

与深度图像对应的纹理图像的数据可以存储于参考帧存储器82中。运动补偿单元72还可以用于对深度图像的深度块进行帧间预测。

考虑到上述情况,视频压缩技术执行空间(帧内)预测和/或时间(帧间)预测来减少或去除视频序列中固有的冗余。对于基于块的视频译码,视频条带(即视频图像或视频图像的一部分)可以分割成多个视频块,所述多个视频块还可以称为树块、编码树块(codingtree block,CTB)、编码树单元(coding tree unit,CTU)、编码单元(coding unit,CU)和/或编码节点。图像的帧内译码(I)条带中的视频块是相对于同一图像中的相邻块中的参考样本使用空间预测进行编码的。图像的帧间译码(P或B)条带中的视频块可以使用相对于同一图像内的相邻块中的参考样本的空间预测,或者使用相对于其它参考图像中的参考样本的时间预测。图像可以称为帧,参考图像可以称为参考帧。

空间预测或时间预测为待译码块产生预测块。残差数据表示待译码原始块与预测块之间的像素差。帧间译码块根据运动矢量和残差数据进行编码,所述运动矢量指向组成所述预测块的参考样本的块,所述残差数据表示所述经译码块与所述预测块之间的差值。帧内译码块是根据帧内译码模式和残差数据进行编码的。为了进一步压缩,所述残差数据可以从像素域变换到变换域,从而产生可以接着进行量化的残差变换系数。量化变换系数最初以二维阵列排列,并且可以扫描,以产生变换系数的一维矢量。熵编码可以用于实现进一步压缩。

图像和视频压缩发展迅速,由此产生了各种编码标准。这类视频编码标准包括ITU-T H.261、ISO/IEC MPEG-1第2部分、ITU-T H.262或ISO/IEC MPEG-2第2部分、ITU-TH.263、ISO/IEC MPEG-4第2部分,高级视频编码(advanced video coding,AVC)(也称为ITU-T H.264或ISO/IEC MPEG-4第10部分),以及高效视频编码(high efficiency videocoding,HEVC)(也称为ITU-T H.265或MPEG-H第2部分)。AVC包括可分级视频编码(scalablevideo coding,SVC)、多视图视频编码(multiview video coding,MVC)和多视图视频编码加深度(multiview video coding plus depth,MVC+D)以及3D AVC(3D-AVC)等扩展版。HEVC包括可分级HEVC(scalable HEVC,SHVC)、多视图HEVC(multiview HEVC,MV-HEVC)、3DHEVC(3D-HEVC)等扩展版。

还有一个新的视频编码标准,名为通用视频编码(versatile video coding,VVC),正在由ITU-T和ISO/IEC的联合视频专家组(joint video experts team,JVET)开发。虽然VVC标准有多个工作草案,但本文参考的是VVC的其中一个工作草案(working draft,WD),即B.Bross、J.Chen和S.Liu,“通用视频编码(草案4)(Versatile Video Coding(Draft4))”,JVET-M1001-v5,第13届JVET会议,2019年1月(VVC草案4)。

本文公开的技术的描述是基于ITU-T和ISO/IEC的联合视频专家组(joint videoexperts team,JVET)正在开发的视频编码标准通用视频编码(versatile video coding,VVC)。但是,这些技术还适用于其它视频编解码规范。

图4是在解码顺序408和呈现顺序410中IRAP图像402相对于前置图像404和后置图像406的关系的表示400。在一个实施例中,IRAP图像402称为清理随机接入(clean randomaccess,CRA)图像或伴随可解码随机接入前置(random access decodable leading,RADL)图像的即时解码刷新(instantaneous decoder refresh,IDR)图像。在HEVC中,IDR图像、CRA图像和断点链接接入(broken link access,BLA)图像都认为是IRAP图像402。对于VVC,在2018年10月的第12届JVET会议上,同意将IDR和CRA图像作为IRAP图像。

如图4所示,前置图像404(例如,图像2和3)在解码顺序408中跟在IRAP图像402之后,但在呈现顺序410中在IRAP图像402之前。后置图像406在解码顺序408和呈现顺序410中都跟在IRAP图像402之后。虽然图4中描绘了两个前置图像404和一个后置图像406,但本领域技术人员将理解,在实际应用中,在解码顺序408和呈现顺序410中可以存在更多或更少的前置图像404和/或后置图像406。

图4中的前置图像404分为两种类型,即跳过随机接入前置(random accessskipped leading,RASL)图像和RADL前置图像。当解码从IRAP图像402(例如,图像1)开始时,RADL图像(例如,图像3)可以被正确解码;但是,RASL图像(例如,图像2)无法被正确解码。因此,丢弃RASL图像。根据RADL与RASL图像之间的区别,与IRAP图像关联的前置图像类型应识别为RADL或RASL,以便实现高效和正确的译码。在HEVC中,当存在RASL图像和RADL图像时,受到如下限制:对于与同一IRAP图像关联的RASL和RADL图像,RASL图像在呈现顺序410中应位于RADL图像之前。

IRAP图像402提供了以下两个重要的功能/益处。首先,IRAP图像402的存在表示解码过程可以从该图像开始。该功能实现随机接入特征,其中,解码过程从码流中的该位置开始,而不必从码流的开始处开始,只要IRAP图像402存在于该位置即可。其次,IRAP图像402的存在刷新解码过程,使得从IRAP图像402开始的经编码图像(不包括RASL图像)在不参考先前图像的情况下被编码。因此,在码流中存在IRAP图像402可以防止在对IRAP图像402之前的经编码图像进行解码期间可能发生的任何错误传播到IRAP图像402以及解码顺序408中跟在IRAP图像402之后的那些图像。

虽然IRAP图像402提供了重要的功能,但这些IRAP图像会降低压缩效率。IRAP图像402的存在导致比特率激增。这种对压缩效率的降低归因于两个原因。首先,由于IRAP图像402是帧内预测图像,当与作为帧间预测图像的其它图像(例如,前置图像404、后置图像406)相比时,该图像将需要相对更多的比特来表示。其次,因为IRAP图像402的存在破坏了时间预测(这是因为解码器将刷新解码过程,其中,解码过程的动作之一是删除解码图像缓冲区(decoded picture buffer,DPB)中的先前参考图像),所以IRAP图像402导致在解码顺序408中跟在IRAP图像402之后的图像的译码效率较低(即,需要更多的比特来表示),这是因为这些图像具有较少参考图像来进行其帧间预测译码。

在认为是IRAP图像402的图像类型中,HEVC中的IDR图像与其它图像类型相比具有不同的指示和推导。其中一些区别如下。

对于IDR图像的图像顺序编号(picture order count,POC)值的指示和推导,POC的最高有效位(most significant bit,MSB)部分不是从先前的关键图像推导的,而是简单地设置为0。

对于参考图像管理所需的指示信息,IDR图像的条带头不包含需要进行指示以辅助参考图像管理的指示信息。对于其它图像类型(即CRA、后置、时间子层接入(temporalsub-layer access,TSA)等),参考图像标识过程(即,确定解码图像缓冲区(decodedpicture buffer,DPB)中用于参考和不用于参考的参考图像的状态的过程)需要诸如下文描述的参考图像集(reference picture set,RPS)之类的信息或其它形式的类似信息(例如参考图像列表)。但是,对于IDR图像,此类信息不需要进行指示(signal),因为IDR的存在表示解码过程应该简单地将DPB中的所有参考图像标识为不用于参考。

在HEVC和VVC中,IRAP图像402和前置图像404可以各自包含在单个网络抽象层(network abstraction layer,NAL)单元中。NAL单元集合可以称为接入单元。IRAP图像402和前置图像404被赋予不同的NAL单元类型,使得这些图像容易由系统级应用识别。例如,视频条带器需要理解经编码图像的类型,而不必理解经编码码流中语法元素的太多细节,特别是需要从非IRAP图像中识别IRAP图像402,并从后置图像406中识别前置图像404,包括确定RASL和RADL图像。后置图像406是与IRAP图像402关联并且在呈现顺序410中跟在IRAP图像402之后的那些图像。图像可以在解码顺序408中跟在特定IRAP图像402之后,并且在解码顺序408中在任何其它IRAP图像402之前。为此,赋予IRAP图像402和前置图像404其自己的NAL单元类型有助于此类应用。

对于HEVC,IRAP图像的NAL单元类型包括:

伴随前置图像的BLA(BLA_W_LP):在解码顺序中之后可以跟随一个或多个前置图像的断点链接接入(broken link access,BLA)图像的NAL单元。

伴随RADL的BLA(BLA_W_RADL):在解码顺序中之后可以跟随一个或多个RADL图像但没有RASL图像的BLA图像的NAL单元。

未伴随前置图像的BLA(BLA_N_LP):在解码顺序中之后不跟随前置图像的BLA图像的NAL单元。

伴随RADL的IDR(IDR_W_RADL):在解码顺序中之后可以跟随一个或多个RADL图像但没有RASL图像的IDR图像的NAL单元。

未伴随前置图像的IDR(IDR_N_LP):在解码顺序中之后不跟随前置图像的IDR图像的NAL单元。

CRA:之后可以跟随前置图像(即,RASL图像或RADL图像或两者)的清理随机接入(clean random access,CRA)图像的NAL单元。

RADL:RADL图像的NAL单元。

RASL:RASL图像的NAL单元。

对于VVC,IRAP图像402和前置图像404的NAL单元类型如下:

伴随RADL的IDR(IDR_W_RADL):在解码顺序中之后可以跟随一个或多个RADL图像但没有RASL图像的IDR图像的NAL单元。

未伴随前置图像的IDR(IDR_N_LP):在解码顺序中之后不跟随前置图像的IDR图像的NAL单元。

CRA:之后可以跟随前置图像(即,RASL图像或RADL图像或两者)的清理随机接入(clean random access,CRA)图像的NAL单元。

RADL:RADL图像的NAL单元。

RASL:RASL图像的NAL单元。

下面描述渐进式帧内刷新/逐步解码刷新。

对于低延迟应用,需要避免将图像译码为IRAP图像(例如,IRAP图像402),因为IRAP图像与非IRAP图像(即,P图像/B图像)相比需要相对较大的比特率,从而导致更高的时延/延迟。但是,在所有低延迟应用中,不可能完全避免使用IRAP。例如,对于多方电话会议等对话应用,有必要提供新用户可以加入电话会议的常规点。

为提供对允许新用户加入多方电话会议应用的码流的接入,一种可行的策略是使用渐进式帧内刷新技术(progressive intra refresh,PIR)而不是使用IRAP图像,以避免比特率出现峰值。PIR也可以称为逐步解码刷新(gradual decoding refresh,GDR)。术语PIR和GDR可以在本发明中互换使用。

图5示出了逐步解码刷新(gradual decoding refresh,GDR)技术500。如图所示,GDR技术500使用码流的编码视频序列508内的GDR图像502、一个或多个后置图像504和恢复点图像506来描述。在一个实施例中,GDR图像502、后置图像504和恢复点图像506可以定义CVS 508中的GDR周期。CVS 508是从GDR图像502开始,并包括直到(但不包括)下一个GDR图像或直到码流结束的所有图像(或其部分)的一系列图像(或其部分)。GDR周期是从GDR图像502开始,并包括直到恢复点图像506并包括恢复点图像506的所有图像的一系列图像。

如图5所示,GDR技术500或原理是针对以GDR图像502开始并以恢复点图像506结束的一系列图像。GDR图像502包含刷新/清理区域510和未刷新/脏区域512,其中,该刷新/清理区域510包含所有已使用帧内预测译码的块(即,帧内预测块),该未刷新/脏区域512包含所有已使用帧间预测译码的块(即,帧间预测块)。

紧邻GDR图像502的后置图像504包含刷新/清理区域510,该刷新/清理区域510具有使用帧内预测译码的第一部分510A和使用帧间预测译码的第二部分510B。第二部分510B通过参考例如CVS 508的GDR周期内的前一图像的刷新/清理区域510来译码。如图所示,随着译码过程沿一致方向(例如,从左到右)移动或前进,后置图像504的刷新/清理区域510扩展,这使未刷新/脏区域512相应地收缩。最终,从译码过程中获得仅包含刷新/清理区域510的恢复点图像506。需要说明的是,并且如下文将进一步描述的,被译码为帧间预测块的刷新/清理区域510的第二部分510B可以仅参考参考图像中的刷新区域/清理区域510。

在HEVC中,使用恢复点补充增强信息(supplemental enhancement information,SEI)消息和区域刷新信息SEI消息非规范地支持图5的GDR技术500。这两种SEI消息不定义GDR的执行方式。相反,两种SEI消息只是提供一种机制来指示GDR周期中的第一个图像和最后的图像(即,由恢复点SEI消息提供)以及被刷新的区域(即,由区域刷新信息SEI消息提供)。

在实践中,GDR技术500通过一起使用两种技术共同执行。这两种技术是运动矢量的约束帧内预测(constraint intra prediction,CIP)和编码器约束。CIP可用于GDR目的,特别是用于对仅译码为帧内预测块的区域(例如,刷新/清理区域510的第一部分510A)进行译码,因为CIP可以将不使用来自未刷新区域(例如,未刷新/脏区域512)的样本的区域用于参考。但是,使用CIP会严重降低译码性能,因为对帧内块的约束不仅必须应用于刷新区域中的帧内块,而且必须应用于图像中的所有帧内块。运动矢量的编码器约束限制编码器使用位于刷新区域之外的参考图像中的任何样本。这种约束会导致非最佳运动搜索。

图6是当使用编码器限制来支持GDR时不希望的运动搜索600的示意图。如图所示,运动搜索600描绘当前图像602和参考图像604。当前图像602和参考图像604各自包括用帧内预测译码的刷新区域606、用帧间预测译码的刷新区域608和未刷新区域608。刷新区域604、刷新区域606和未刷新区域608类似于图5中的刷新/清理区域510的第一部分510A、刷新/清理区域510的第二部分510B,以及未刷新/脏区域512。

在运动搜索过程中,编码器受到约束或防止其选择导致参考块612的一些样本位于刷新区域606之外的任何运动矢量610。即使当参考块612在预测当前图像602中的当前块614时提供最佳率失真成本标准时,也会发生这种情况。因此,图6示出了当使用编码器限制来支持GDR时,运动搜索600的非最佳性的原因。

JVET文稿JVET-K0212和JVET-L0160描述了基于使用CIP和编码器约束方法的GDR的实现方式。实现方式可总结如下:基于列对编码单元强制使用帧内预测模式,启用约束帧内预测以确保帧内CU的重建,运动矢量被限制为指向刷新区域内,同时考虑额外的裕量(例如6个像素)以避免滤波器的误差扩散,以及在重新循环帧内列时删除先前的参考图像。

JVET文稿JVET-M0529提出了一种方法,用于指示图像在规范上是GDR周期中的第一个图像和最后一个图像。提出的想法如下。

将具有NAL单元类型恢复点指示的新NAL单元定义为非视频编码层(video codinglayer,VCL)NAL单元。NAL单元的负载包含一个语法元素,该语法元素用于指定可用于推导GDR周期中最后一个图像的POC值的信息。包含具有类型恢复点指示的非VCL NAL单元的接入单元称为恢复点开始(recovery point begin,RBP)接入单元(access unit,AU),RBP接入单元中的图像称为RBP图像。解码过程可以从RBP AU开始。当解码从RBP AU开始时,除最后一个图像外,GDR周期中的所有图像都不输出。

描述了现有GDR设计的一些问题。

支持GDR的现有设计/方法至少存在以下问题。

JVET-M0529中规范定义GDR的方法存在以下问题。提出的方法没有描述GDR的执行方式。相反,所提出的方法仅提供一些指示来指示GDR周期中的第一个图像和最后的图像。为了指示GDR周期中的第一个图像和最后的图像,需要新的非VCL NAL单元。这是一种冗余,因为恢复点指示(recovery point indication,RPI)NAL单元中包含的信息可以直接包括在GDR周期中第一个图像的分块组(tile group)头中。此外,所提出的方法也无法描述GDR周期中图像中的哪个区域是刷新区域和未刷新区域。

JVET-K0212和JVET-L0160中描述的GDR方法存在以下问题。首先是CIP的使用。有必要在一些约束下使用帧内预测对刷新区域进行译码,以防止未刷新区域的任何样本用于空间参考。当使用CIP时,译码是基于图像的,这意味着图像中的所有帧内块也必须译码为CIP帧内块。因此,这会导致性能下降。此外,当与运动矢量关联的参考块的样本不完全在参考图像中的刷新区域内时,使用编码器约束来限制运动搜索会使编码器无法选择最佳运动矢量。此外,仅使用帧内预测译码的刷新区域不是CTU的大小。而是刷新区域可能会小于CTU的大小,降至最小CU的大小。这使得实现不必要地复杂化,因为它可能需要块级的指示。

本文公开了用于支持视频译码中逐步解码刷新(gradual decoding refresh,GDR)的技术。所公开的技术可以实现渐进式帧内刷新以便能够在不必使用帧内随机接入点(intra random access point,IRAP)图像的情况下进行随机接入。如下文将更完整描述的,视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(networkabstraction layer,NAL)单元类型(GDR_NUT),以表示VCL NAL单元包含GDR图像。即,GDR_NUT立即向视频解码器指示具有GDR_NUT的VCL NAL单元包含GDR图像。通过使用GDR图像而不是IRAP图像,例如,由于GDR图像相对于IRAP图像的大小,可以实现更平滑、更一致的比特率,从而可以减少端到端延迟(即时延)。因此,视频译码中的编码器/解码器(又名“编解码器”)相对于当前编解码器得到了改进。实际上,当视频在发送、接收和/或观看时,改进的视频译码过程为用户提供了更好的用户体验。

为了解决上述一个或多个问题,本发明公开了以下方面。每个方面都可以单独应用,其中一些方面可以组合应用。

(1)定义了类型为GDR_NUT的VCL NAL单元。

a.NAL单元类型为GDR_NUT的图像称为GDR图像,即GDR周期中的第一个图像。

b.GDR图像的temporalID等于0。

c.包含GDR图像的接入单元称为GDR接入单元。如上所述,接入单元是一组NAL单元。每个NAL单元可以包含单个图像。

(2)编码视频序列(coded video sequence,CVS)可以从GDR接入单元开始。

(3)当满足以下任一种条件时,GDR接入单元是CVS中的第一个接入单元:

a.GDR接入单元是码流中的第一个接入单元。

b.GDR接入单元紧随在序列结束(end-of-sequence,EOS)接入单元之后。

c.GDR接入单元紧随在码流结束(end-of-bitstream,EOB)接入单元之后。

d.称为NoIncorrectPicOutputFlag的解码器标志与GDR图像关联,并且该标志的值由解码器外部的实体设置为1(即,真(true))。

(4)当GDR图像是CVS中的第一个接入单元时,适用以下情况:

a.DPB中的所有参考图像都标识为“不用于参考”。

b.图像的POC MSB设置为0。

c.不输出GDR图像和在输出顺序中跟随在GDR图像之后直到GDR周期中的最后一个图像(不包括GDR周期中的最后一个图像)的所有图像(即,标识为“输出不需要”)。

(5)在序列级参数集(例如,在SPS中)中指示用于指定是否启用GDR的标志。

a.标志可以指定为gdr_enabled_flag。

b.当标志等于1时,GDR图像可能在CVS中存在。否则,当标志等于0时,GDR不启用,因此CVS中不存在GDR图像。

(6)可用于推导GDR周期中最后一个图像的POC值的信息在GDR图像的分块组头中指示。

a.该信息作为GDR周期中的最后一个图像与GDR图像之间的增量POC指示。该信息可以使用指定为recovery_point_cnt的语法元素来指示。

b.语法元素recovery_point_cnt在分块组头中的存在可以取决于gdr_enabled_flag的值和图像的NAL单元类型,即,仅当gdr_enabled_flag等于1且包含分块组的NAL单元的nal_unit_type为GDR_NUT时,该标志才存在。

(7)用于指定分块组是否属于刷新区域的一部分的标志在分块组头中指示。

a.该标志可以指定为refreshed_region_flag。

b.该标志的存在可以取决于gdr_enabled_flag的值以及包含分块组的图像是否在GDR周期内。因此,只有当满足以下所有条件时,标志才存在:

i.gdr_enabled_flag的值等于1。

ii.当前图像的POC等于或大于最后一个GDR图像的POC值(当当前图像为GDR图像,最后一个GDR图像为当前图像时),并且小于GDR周期中最后一个图像的POC。

c.当标志不在分块组头中存在时,推断标志的值等于1。

(8)refreshed_region_flag等于1的所有分块组覆盖连接区域。同样,refreshed_region_flag等于0的所有分块组也覆盖连接区域。

(9)具有refreshed_region_flag的分块组可以是类型I(即,帧内分块组)或B或P(即,帧间分块组)。

(10)从GDR图像开始到GDR周期中最后一个图像的每个图像包含至少一个refreshed_region_flag等于1的分块组。

(11)GDR图像包含至少一个refreshed_region_flag等于1且tile_group_type等于I(即,帧内分块组)的分块组。

(12)当gdr_enabled_flag等于1时,矩形分块组的信息,即分块组的数量及其地址可以在图像参数集(picture parameter set,PPS)或分块组头中指示。为此,在PPS中指示用于指定矩形分块组信息是否在PPS中存在的标志。该标志可以称为rect_tile_group_info_in_pps_flag。当gdr_enabled_flag等于1时,该标志可以被约束为等于1。

a.在一种替代方案中,可以在PPS中指示更通用的标志,以指定分块组信息(即,任何类型的分块组-例如矩形分块组、光栅扫描分块组)是否在PPS中存在,而不是指示矩形分块组信息是否在PPS中存在。

(13)当分块组信息不在PPS中存在时,显式分块组标识符(identifier,ID)信息的指示可以进一步约束为不存在。显式分块组ID信息包括:signaled_tile_group_id_flag、signaled_tile_group_id_length_minus1以及tile_group_id[i]。

(14)指示标志,以指定是否允许跨越图像中刷新区域与未刷新区域之间的边界进行环路滤波操作。

a.该标志可以在PPS中指示,并称为loop_filter_across_refreshed_region_enabled_flag。

b.loop_filter_across_refreshed_region_enabled_flag的存在可以取决于loop_filter_across_tile_enabled_flag的值。当loop_filter_across_tile_enabled_flag等于0时,loop_filter_across_refreshed_region_enabled_flag可能不存在,其值推断为等于0。

c.在一种替代方案中,标志可以在分块组头中指示,并且其存在可以取决于refreshed_region_flag的值,即,仅当refreshed_region_flag的值等于1时,标志才存在。

(15)当指示分块组是刷新区域,并且指示不允许跨越刷新区域进行环路滤波时,适用以下情况:

a.当共享边缘的相邻分块组是未刷新的分块组时,不对分块组边界处的边缘进行去块效应滤波。

b.分块组边界处块的样本自适应偏移(sample adaptive offset,SAO)过程不使用来自刷新区域边界以外的任何样本。

c.分块组边界处块的样本环路滤波(adaptive loop filtering,ALF)过程不使用来自刷新区域边界以外的任何样本。

(16)当gdr_enabled_flag等于1时,每个图像都与用于确定图像中刷新区域的边界的变量关联。这些变量可以称为:

a.PicRefreshedLeftBoundaryPos,对应图像中刷新区域的左边界位置。

b.PicRefreshedRightBoundaryPos,对应图像中刷新区域的右边界位置。

c.PicRefreshedTopBoundaryPos,对应图像中刷新区域的上边界位置。

d.PicRefreshedBotBoundaryPos,对应图像中刷新区域的下边界位置。

(17)可以推导图像中刷新区域的边界。在解析分块组头之后,解码器更新图像的刷新区域的边界,并且分块组的refreshed_region_flag的值等于1。

(18)在方案(17)的一个替代方案中,图像中刷新区域的边界在图像的每个分块组中被显式地指示。

a.可以指示标志,以表示分块组所属的图像是否包含未刷新区域。当指定图像不包含未刷新区域时,不指示刷新边界的信息,并且可以简单地推断为等于图像边界。

(19)对于当前图像,在环内滤波过程中使用刷新区域的边界,如下所示:

a.对于去块效应滤波过程,确定刷新区域的边缘,以决定边缘是否需要进行去块效应滤波。

b.对于SAO过程,确定刷新区域的边界,以便在不允许跨越刷新区域进行环路滤波时,可以应用限幅过程以避免使用未刷新区域的样本。

c.对于ALF过程,确定刷新区域的边界,以便在不允许跨越刷新区域进行环路滤波时,可以应用限幅过程以避免使用未刷新区域的样本。

(20)对于运动补偿过程,使用关于刷新区域的边界信息,特别是参考图像中刷新区域的边界的信息,如下所示:当当前图像中的当前块在refreshed_region_flag等于1的分块组中,并且参考块在包含未刷新区域的参考图像中时,适用以下情况:

a.从当前块到该参考图像的运动矢量被该参考图像中刷新区域的边界限幅。

b.对于该参考图像中样本的分数插值滤波器,它由该参考图像中刷新区域的边界限幅。

提供了本发明实施例的详细描述。描述是相对于基础文本,即JVET文稿JVET-M1001-v5。即,只描述了增改的内容,而下文未提到的基础文本中的文本按原样适用。相对于基础文本的修改文本为斜体。

提供了定义。

3.1清理随机接入(clean random access,CRA)图像:每个VCL NAL单元的nal_unit_type等于CRA_NUT的IRAP图像。

注-CRA图像在其解码过程中不参考除自身以外的任何图像进行帧间预测,并且可能是解码顺序中码流中的第一个图像,或者可能出现在码流中的稍后位置。CRA图像可能具有关联的RADL或RASL图像。当CRA图像的NoIncorrectPicOutputFlag等于1时,解码器不会输出关联的RASL图像,因为RASL图像由于可能包含对不在码流中存在的图像的参考而可能无法解码。

3.2编码视频序列(coded video sequence,CVS):一种接入单元序列,其按解码顺序包括NoIncorrectPicOutputFlag等于1的IRAP接入单元或NoIncorrectPicOutputFlag等于1的GDR接入单元,之后为零个或多个不是NoIncorrectPicOutputFlag等于1的IRAP接入单元或NoIncorrectPicOutputFlag等于1的GDR接入单元的接入单元,包括所有后续接入单元,直到(但不包括)是NoIncorrectPicOutputFlag等于1的IRAP接入单元或NoIncorrectPicOutputFlag等于1的GDR接入单元的任何后续接入单元。

注1-IRAP接入单元可以是IDR接入单元或CRA接入单元。对于是解码顺序中码流中的第一个接入单元,是解码顺序中跟随序列结束NAL单元的第一个接入单元,或HandleCraAsCvsStartFlag等于1的每个IDR接入单元和每个CRA接入单元,NoIncorrectPicOutputFlag的值等于1。

注2-对于是解码顺序中码流中的第一个接入单元,是解码顺序中跟随序列结束NAL单元的第一个接入单元,或HandleGdrAsCvsStartFlag等于1的每个GDR接入单元,NoIncorrectPicOutputFlag的值等于1。

3.3逐步解码刷新(gradual decoding refresh,GDR)接入单元:经编码图像是GDR图像的接入单元。

3.4逐步解码刷新(gradual decoding refresh,GDR)图像:每个VCL NAL单元的nal_unit_type等于GDR_NUT的图像。

3.5跳过随机接入前置(random access skipped leading,RASL)图像:每个VCLNAL单元的nal_unit_type等于RASL_NUT的图像。

注-所有RASL图像都是关联CRA图像的前置图像。当关联的CRA图像的NoIncorrectPicOutputFlag等于1时,RASL图像不会输出,也可能无法正确解码,因为RASL图像可能包含对不在码流中存在的图像的参考。RASL图像不作为参考图像用于非RASL图像的解码过程。当存在时,所有RASL图像在解码顺序中都在同一关联CRA图像的所有后置图像之前。

序列参数集原始字节序列负载(raw byte sequence payload,RBSP)语法和语义。

gdr_enabled_flag等于1表示编码视频序列中可能存在GDR图像。gdr_enabled_flag等于0表示编码视频序列中不存在GDR图像。

图像参数集RBSP语法和语义。

rect_tile_group_info_in_pps_flag等于1表示矩形分块组信息在PPS中指示。rect_tile_group_info_in_pps_flag等于0表示矩形分块组信息不在PPS中指示。

码流一致性要求,当活跃SPS中的gdr_enabled_flag的值等于0时,rect_tile_group_info_in_pps_flag的值应等于0。

loop_filter_across_refreshed_region_enabled_flag等于1表示可以跨越参考PPS的图像中refreshed_region_flag等于1的分块组的边界执行环内滤波操作。loop_filter_across_refreshed_region_enabled_flag等于0表示不会跨越参考PPS的图像中refreshed_region_flag等于1的分块组的边界执行环内滤波操作。环内滤波操作包括去块效应滤波操作、样本自适应偏移滤波操作以及自适应环路滤波操作。当loop_filter_across_refreshed_region_enabled_flag不存在时,推断loop_filter_across_refreshed_region_enabled_flag的值等于0。

signalled_tile_group_id_flag等于1表示指示每个分块组的分块组ID。signalled_tile_group_index_flag等于0表示不指示分块组ID。如果signalled_tile_group_index_flag不存在,则推断signalled_tile_group_index_flag的值等于0。

signalled_tile_group_id_length_minus1加1表示用于表示语法元素tile_group_id[i](当存在时),以及分块组头中的语法元素tile_group_address的比特数。signalled_tile_group_index_length_minus1的取值范围应为0到15(包括端值)。当signalled_tile_group_index_length_minus1不存在时,signalled_tile_group_index_length_minus1的值推断如下:

如果rect_tile_group_info_in_pps_flag等于1,则为

Ceil(Log2(num_tile_groups_in_pic_minus1+1))–1。

否则,为Ceil(Log2(NumTilesInPic))–1。

通用分块组头语法和语义。

tile_group_address表示分块组中的第一个分块的分块地址。当tile_group_address不存在时,推断tile_group_address的值等于0。

如果rect_tile_group_flag等于0,则适用以下情况:

tile_group_address为等式6-7指定的分块ID。

tile_group_address的长度为Ceil(Log2(NumTilesInPic))个比特。

tile_group_address的取值范围应为0到NumTilesInPic–1(包括端值)。

否则,如果rect_tile_group_flag等于1且rect_tile_group_info_in_pps等于0,则适用以下情况:

tile_group_address是位于第i个分块组的左上顶点的分块的分块索引。

tile_group_address的长度为signalled_tile_group_index_length_minus1+1个比特。

如果signalled_tile_group_id_flag等于0,则tile_group_address的取值范围应为0到NumTilesInPic–1(包括端值)。否则,tile_group_address的取值范围应为0到2(signalled_tile_group_index_length_minus1+1)–1(包括端值)。

否则(rect_tile_group_flag等于1且rect_tile_group_info_in_pps等于1),适用以下情况:

tile_group_address为分块组的分块组ID。

tile_group_address的长度为signalled_tile_group_index_length_minus1+1个比特。

如果signalled_tile_group_id_flag等于0,则tile_group_address的取值范围应为0到num_tile_groups_in_pic_minus1(包括端值)。否则,tile_group_address的取值范围应为0到2(signalled_tile_group_index_length_minus1+1)–1(包括端值)。

bottom_right_tile_id表示位于分块组的右下顶点的分块的分块索引。当single_tile_per_tile_group_flag等于1时,推断bottom_right_tile_id等于tile_group_address。bottom_right_tile_id语法元素的长度为Ceil(Log2(NumTilesInPic))个比特。

变量NumTilesInCurrTileGroup表示当前分块组中的分块数量,TopLeftTileIdx表示分块组的左上角分块的分块索引,BottomRightTileIdx表示分块组的右下角分块的分块索引,TgTileIdx[i]表示当前分块组中第i个分块的分块索引,它们如下推导:

recovery_poc_cnt表示在输出顺序中解码图像的恢复点。如果在CVS中在解码顺序中存在跟随在当前图像(即GDR图像)之后的图像picA,并且该图像picA的PicOrderCntVal等于当前图像的PicOrderCntVal加recovery_poc_cnt的值,则图像picA称为恢复点图像。否则,输出顺序中PicOrderCntVal大于当前图像的PicOrderCntVal加recovery_poc_cnt的值的第一个图像称为恢复点图像。恢复点图像在解码顺序中不应在当前图像之前。从恢复点图像的输出顺序位置开始,输出顺序中的所有解码图像都被指示为正确或近似正确的内容。recovery_poc_cnt的取值范围应为–MaxPicOrderCntLsb/2到MaxPicOrderCntLsb/2–1(包括端值)。

值RecoveryPointPocVal如下推导:

RecoveryPointPocVal=PicOrderCntVal+recovery_poc_cnt

refreshed_region_flag等于1表示无论关联GDR的NoIncorrectPicOutputFlag的值如何,分块组的解码都会产生正确的重建样本值。refreshed_region_flag等于0表示当分块组的解码从NoIncorrectPicOutputFlag等于1的关联GDR开始时,分块组的解码可能会产生错误的重建样本值。当refreshed_region_flag不存在时,推断refreshed_region_flag的值等于1。

注x-当前图像本身可以是NoIncorrectPicOutputFlag等于1的GDR图像。

分块组刷新边界如下推导:

tileColIdx=TopLeftTileIdx%(num_tile_columns_minus1+1)

tileRowIdx=TopLeftTileIdx/(num_tile_columns_minus1+1)

TGRefreshedLeftBoundary=ColBd[tileColIdx]<<CtbLog2SizeY

TGRefreshedTopBoundary=RowBd[tileRowIdx]<<CtbLog2SizeY

tileColIdx=BottomRightTileIdx%(num_tile_columns_minus1+1)

tileRowIdx=BottomRightTileIdx/(num_tile_columns_minus1+1)

TGRefreshedRightBoundary=((ColBd[tileColIdx]+ColWidth[tileColIdx])<<CtbLog2SizeY)–1

TGRefreshedRightBoundary=TGRefreshedRightBoundary>pic_width_in_luma_samples?pic_width_in_luma_samples:TGRefreshedRightBoundary

TGRefreshedBotBoundary=((RowBd[tileRowIdx]+RowHeight[tileRowIdx])<<CtbLog2SizeY)–1

TGRefreshedBotBoundary=TGRefreshedBotBoundary>pic_height_in_luma_samples?pic_height_in_luma_samples:TGRefreshedBotBoundary

NAL单元头语义。

表7-1:NAL单元类型代码和NAL单元类型类别

……

当nal_unit_type等于GDR_NUT时,经译码分块组属于GDR图像,TemporalId应等于0。

描述了接入单元的顺序和与CVS的关联。

符合本规范(即JVET文稿JVET-M1001-v5)的码流包括一个或多个CVS。

CVS包括一个或多个接入单元。第7.4.2.4.4节描述了NAL单元和经编码图像的顺序及其与接入单元的关联。

CVS的第一个接入单元是以下之一:

–NoBrokenPictureOutputFlag等于1的IRAP接入单元。

–NoIncorrectPicOutputFlag等于1的GDR接入单元。

码流一致性要求,当存在时,包含序列结束NAL单元或码流结束NAL单元的接入单元之后的下一个接入单元应为以下之一:

–IRAP接入单元,可以是IDR接入单元或CRA接入单元。

–GDR接入单元。

8.1.1描述了经编码图像的解码过程。

……

当当前图像为IRAP图像时,适用以下情况:

–当当前图像是IDR图像、解码顺序中码流中的第一个图像或解码顺序中跟随在序列结束NAL单元之后的第一个图像时,变量NoIncorrectPicOutputFlag设置为1。

–否则,当本规范中未指定的某些外部方法(例如,用户输入)可用于将变量HandleCraAsCvsStartFlag设置为当前图像的值时,变量HandleCraAsCvsStartFlag设置为等于外部方法提供的值,变量NoIncorrectPicOutputFlag设置为等于HandleCraAsCvsStartFlag。

–否则,变量HandleCraAsCvsStartFlag设置为0,变量NoIncorrectPicOutputFlag设置为0。

当当前图像为GDR图像时,适用以下情况:

–当当前图像是GDR图像、解码顺序中码流中的第一个图像或解码顺序中跟随在序列结束NAL单元之后的第一个图像时,变量NoIncorrectPicOutputFlag设置为1。

–否则,当本规范中未指定的某些外部方法可用于将变量HandleGdrAsCvsStartFlag设置为当前图像的值时,变量HandleGdrAsCvsStartFlag设置为等于外部方法提供的值,变量NoIncorrectPicOutputFlag设置为等于HandleGdrAsCvsStartFlag。

–否则,变量HandleGdrAsCvsStartFlag设置为0,变量NoIncorrectPicOutputFlag设置为0。

……

当前图像CurrPic的解码过程操作如下。

1.第8.2节规定了NAL单元的解码。

2.第8.3节中的过程使用分块组头层和更高层的语法元素规定以下解码过程。

–与图像顺序编号相关的变量和函数按照第8.3.1节的规定推导。这只需要对图像的第一个分块组调用。

–在非IDR图像的每个分块组的解码过程开始时,调用第8.3.2节规定的用于参考图像列表构建的解码过程来推导参考图像列表0(RefPicList[0])和参考图像列表1(RefPicList[1])。

–调用第8.3.3节中用于参考图像标识的解码过程,其中,参考图像可以标识为“不用于参考”或“用于长期参考”。这只对图像的第一个分块组调用。

–PicOutputFlag设置如下:

–如果满足以下条件之一,则PictureOutputFlag设置为0:

–当前图像是RASL图像,关联的IRAP图像的NoIncorrectPicOutputFlag等于1。

–gdr_enabled_flag等于1,且当前图像为NoIncorrectPicOutputFlag等于1的GDR图像。

–gdr_enabled_flag等于1,且当前图像包含一个或多个refreshed_region_flag等于0的分块组,关联GDR图像的NoBrokenPictureOutputFlag等于1。

–否则,PicOutputFlag设置为1。

3.对编码树单元调用解码过程、缩放、变换、环内滤波等。

4.在当前图像的所有分块组都完成解码之后,将当前解码图像标识为“用于短期参考”。

描述了图像顺序编号的解码过程。

该过程的输出为PicOrderCntVal,即当前图像的图像顺序编号。

每个经译码图像与图像顺序编号变量(表示为PicOrderCntVal)相关。

当当前图像不是NoIncorrectPicOutputFlag等于1的IRAP图像或NoIncorrectPicOutputFlag等于1的GDR图像时,变量prevPicOrderCntLsb和prevPicOrderCntMsb如下推导:

–假设prevTid0Pic是解码顺序中的前一个图像,该前一个图像的TemporalId等于0,并且不是RASL或RADL图像。

–将变量prevPicOrderCntLsb设置为等于prevTid0Pic的tile_group_pic_order_cnt_lsb。

–将变量prevPicOrderCntMsb设置为等于prevTid0Pic的PicOrderCntMsb。

当前图像的变量PicOrderCntMsb如下推导:

–当当前图像是NoIncorrectPicOutputFlag等于1的IRAP图像或NoIncorrectPicOutputFlag等于1的GDR图像时,PicOrderCntMsb设置为0。

–否则,PicOrderCntMsb如下推导:

PicOrderCntVal如下推导:

PicOrderCntVal=PicOrderCntMsb+tile_group_pic_order_cnt_lsb (8-2)

注1-NoIncorrectPicOutputFlag等于1的所有IRAP图像的PicOrderCntVal将等于tile_group_pic_order_cnt_lsb,因为对于NoIncorrectPicOutputFlag等于1的IRAP图像,PicOrderCntMsb设置为0。

注1-NoIncorrectPicOutputFlag等于1的所有GDR图像的PicOrderCntVal将等于tile_group_pic_order_cnt_lsb,因为对于NoIncorrectPicOutputFlag等于1的GDR图像,PicOrderCntMsb设置为0。

PicOrderCntVal的取值范围应为–231到231–1(包括端值)。

当当前图像为GDR图像时,LastGDRPocVal的值设置为等于PicOrderCntVal。

描述了图像刷新边界位置的解码过程。

只有当gdr_enabled_flag等于1时,才会调用该过程。

该过程在分块组头解析完成之后调用。

该过程的输出为当前图像的刷新区域的边界位置:PicRefreshedLeftBoundaryPos、PicRefreshedRightBoundaryPos、PicRefreshedTopBoundaryPos和PicRefreshedBotBoundaryPos。

每个经编码图像都与一组刷新区域边界位置变量关联,变量表示为PicOrderCntVal。

PicRefreshedLeftBoundaryPos、PicRefreshedRightBoundaryPos、PicRefreshedTopBoundaryPos和PicRefreshedBotBoundaryPos如下推导:

如果分块组是refreshed_region_flag等于1的当前图像的第一个接收到的分块组,则适用以下情况:

PicRefreshedLeftBoundaryPos=TGRefreshedLeftBoundary

PicRefreshedRightBoundaryPos=TGRefreshedRightBoundary

PicRefreshedTopBoundaryPos=TGRefreshedTopBoundary

PicRefreshedBotBoundaryPos=TileGroupBotBoundary

如果refreshed_region_flag等于1,则适用以下情况:

PicRefreshedLeftBoundaryPos=TGRefreshedLeftBoundary<PicRefreshedLeftBoundaryPos?TGRefreshedLeftBoundary:PicRefreshedLeftBoundaryPos

PicRefreshedRightBoundaryPos=TGRefreshedRightBoundary>PicRefreshedRightBoundaryPos?TGRefreshedRightBoundary:PicRefreshedRightBoundaryPos

PicRefreshedTopBoundaryPos=TGRefreshedTopBoundary<PicRefreshedTopBoundaryPos?TGRefreshedTopBoundary:RefreshedRegionTopBoundaryPos

PicRefreshedBotBoundaryPos=TileGroupBotBoundary>PicRefreshedBotBoundaryPos?TileGroupBotBoundary:PicRefreshedBotBoundaryPos

描述了用于参考图像列表构建的解码过程。

……

码流一致性要求,对于不是NoIncorrectPicOutputFlag等于1的IRAP图像或NoIncorrectPicOutputFlag等于1的GDR图像的每个当前图像,maxPicOrderCnt–minPicOrderCnt的值应小于MaxPicOrderCntLsb/2。

……

用于参考图像标识的解码过程

……

如果当前图像是NoIncorrectPicOutputFlag等于1的IRAP图像或NoIncorrectPicOutputFlag等于1的GDR图像,则DPB中当前的所有参考图像(如果有)都标识为“不用于参考”。

……

描述了用于时间亮度运动矢量预测的推导过程。

……

变量currCb表示亮度位置(xCb,yCb)处的当前亮度编码块。

变量mvLXCol和availableFlagLXCol如下推导:

–如果tile_group_temporal_mvp_enabled_flag等于0,则mvLXCol的两个分量都设置为0,且availableFlagLXCol设置为0。

–否则(tile_group_temporal_mvp_enabled_flag等于1),执行如下顺序步骤:

1.右下角并置运动矢量如下推导:

xColBr=xCb+cbWidth (8-414)

yColBr=yCb+cbHeight (8-415)

leftBoundaryPos=gdr_enabled_flag?由RefPicList[X][refIdxLX]引用的图像的PicRefreshedLeftBoundaryPos:0 (8-415)

topBoundaryPos=gdr_enabled_flag?由RefPicList[X][refIdxLX]引用的图像的PicRefreshedTopBoundaryPos:0 (8-415)

rightBoundaryPos=gdr_enabled_flag?由RefPicList[X][refIdxLX]引用的图像的PicRefreshedRightBoundaryPos:pic_width_in_luma_samples (8-415)

botBoundaryPos=gdr_enabled_flag?由RefPicList[X][refIdxLX]引用的图像的PicRefreshedBotBoundaryPos:pic_height_in_luma_samples (8-415)

–如果yCb>>CtbLog2SizeY等于yColBr>>CtbLog2SizeY,yColBr的范围为topBoundaryPos到botBoundaryPos(包括端值),xColBr的范围为leftBoundaryPos到rightBoundaryPos(包括端值),则适用以下情况:

–变量colCb表示覆盖由ColPic表示的并置图像内,通过((xColBr>>3)<<3,(yColBr>>3)<<3)所给出的修改位置的亮度编码块。

–亮度位置(xColCb,yColCb)设置为由colCb表示的并置亮度编码块的左上样本相对于由ColPic表示的并置图像的左上亮度样本的位置。

–调用第8.5.2.12节中规定的并置运动矢量的推导过程,将currCb、colCb、(xColCb,yColCb)、refIdxLX以及设置为0的sbFlag作为输入,输出赋值为mvLXCol和availableFlagLXCol。

–否则,mvLXCol的两个分量都设置为0,且availableFlagLXCol设置为0。

2.描述了亮度样本双线性插值过程。

该过程的输入为:

–以完整样本为单位的亮度位置(xIntL,yIntL),

–以分数样本为单位的亮度位置(xFracL,yFracL),

–亮度参考样本阵列refPicLXL

–参考图像的刷新区域边界PicRefreshedLeftBoundaryPos、PicRefreshedTopBoundaryPos、PicRefreshedRightBoundaryPos和PicRefreshedBotBoundaryPos。

……

对于i=0..1,以完整样本为单位的亮度位置(xInti,yInti)如下推导:

–如果gdr_enabled_flag等于1,则适用以下情况:

xInti=Clip3(PicRefreshedLeftBoundaryPos,PicRefreshedRightBoundaryPos,xIntL+i)

(8-458)

yInti=Clip3(PicRefreshedTopBoundaryPos,PicRefreshedBotBoundaryPos,yIntL+i)

(8-458)

–否则(gdr_enabled_flag等于0),适用以下情况:

xInti=sps_ref_wraparound_enabled_flag?ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY,picW,(xIntL+i)):Clip3(0,picW–1,xIntL+i) (8-459)

yInti=Clip3(0,picH–1,yIntL+i) (8-460)

……

描述了亮度样本8抽头插值滤波过程。

该过程的输入为:

–以完整样本为单位的亮度位置(xIntL,yIntL),

–以分数样本为单位的亮度位置(xFracL,yFracL),

–亮度参考样本阵列refPicLXL

–dir=0、1的列表padVal[dir],表示参考样本填充方向和数量。

–参考图像的刷新区域边界PicRefreshedLeftBoundaryPos、PicRefreshedTopBoundaryPos、PicRefreshedRightBoundaryPos和PicRefreshedBotBoundaryPos。

……

对于i=0..7,以完整样本为单位的亮度位置(xInti,yInti)如下推导:

–如果gdr_enabled_flag等于1,则适用以下情况:

xInti=Clip3(PicRefreshedLeftBoundaryPos,PicRefreshedRightBoundaryPos,xIntL+i–3)

(8-830)

yInti=Clip3(PicRefreshedTopBoundaryPos,PicRefreshedBotBoundaryPos,yIntL+i–3)

(8-830)

–否则(gdr_enabled_flag等于0),适用以下情况:

xInti=sps_ref_wraparound_enabled_flag?ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY,picW,xIntL+i–3):Clip3(0,picW–1,xIntL+i–3) (8-831)

yInti=Clip3(0,picH–1,yIntL+i–3) (8-832)

描述了色度样本插值过程。

该过程的输入为:

–以完整样本为单位的色度位置(xIntC,yIntC),

–以1/32分数样本为单位的色度位置(xFracC,yFracC),

–色度参考样本阵列refPicLXC

–参考图像的刷新区域边界PicRefreshedLeftBoundaryPos、PicRefreshedTopBoundaryPos、PicRefreshedRightBoundaryPos和PicRefreshedBotBoundaryPos。

……

变量xOffset设置为等于(sps_ref_wraparound_offset_minus1+1)*MinCbSizeY)/SubWidthC。

对于i=0..3,以完整样本为单位的色度位置(xInti,yInti)如下推导:

–如果gdr_enabled_flag等于1,则适用以下情况:

xInti=Clip3(PicRefreshedLeftBoundaryPos/SubWidthC,PicRefreshedRightBoundaryPos/SubWidthC,xIntL+i) (8-844)

yInti=Clip3(PicRefreshedTopBoundaryPos/SubHeightC,PicRefreshedBotBoundaryPos/SubHeightC,yIntL+i) (8-844)

–否则(gdr_enabled_flag等于0),适用以下情况:

xInti=sps_ref_wraparound_enabled_flag?ClipH(xOffset,picWC,xIntC+i–1):Clip3(0,picWC–1,xIntC+i–1) (8-845)

yInti=Clip3(0,picHC–1,yIntC+i–1) (8-846)

描述了去块效应滤波过程。

一般过程。

……

去块效应滤波过程适用于一个图像中的所有编码子块边缘和变换块边缘,但以下类型的边缘除外:

–位于该图像边界的边缘,

–满足以下所有条件时,与分块组tgA的上边界重合的边缘:

–gdr_enabled_flag等于1

–loop_filter_across_refreshed_region_enabled_flag等于0

–与分块组tgB的下边界重合,且tgB的refreshed_region_flag的值与tgA的refreshed_region_flag的值不同的边缘

–满足以下所有条件时,与分块组tgA的左边界重合的边缘:

–gdr_enabled_flag等于1

–loop_filter_across_refreshed_region_enabled_flag等于0

–与分块组tgB的右边界重合,且tgB的refreshed_region_flag的值与tgA的refreshed_region_flag的值不同的边缘

–loop_filter_across_tiles_enabled_flag等于0时与分块边界重合的边缘,

–与tile_group_loop_filter_across_tile_groups_enabled_flag等于0或tile_group_deblocking_filter_disabled_flag等于1的分块组的上边界或左边界重合的边缘,

–tile_group_deblocking_filter_disabled_flag等于1的分块组内的边缘,

–与所考虑分量的8×8样本网格边界不对应的边缘,

–边缘两侧使用帧间预测的色度分量内的边缘,

–色度变换块的除关联变换单元的边缘之外的边缘,

–跨越IntraSubPartitionsSplit值不等于ISP_NO_SPLIT的编码单元的亮度转换块的边缘。

描述了一个方向的去块效应滤波过程。

……

对于编码块宽度为log2CbW、编码块高度为log2CbH且编码块的左上样本的位置为(xCb,yCb)的每个编码单元,当edgeType等于EDGE_VER且xCb%8等于0时,或当edgeType等于EDGE_HOR且yCb%8等于0时,边缘通过以下顺序步骤进行滤波:

1.编码块宽度nCbW设置为等于1<<log2CbW,编码块高度nCbH设置为等于1<<log2CbH

2.变量filterEdgeFlag如下推导:

–如果edgeType等于EDGE_VER且满足以下一个或多个条件,则filterEdgeFlag设置为0:

–当前编码块的左边界是图像的左边界。

–当前编码块的左边界是分块的左边界且loop_filter_across_tiles_enabled_flag等于0。

–当前编码块的左边界是分块组的左边界且tile_group_loop_filter_across_tile_groups_enabled_flag等于0。

–当前编码块的左边界是当前分块组的左边界,且满足以下所有条件:

–gdr_enabled_flag等于1

–loop_filter_across_refreshed_region_enabled_flag等于0。

–存在与当前分块组的左边界共享边界的分块组,且该分块组的refreshed_region_flag的值与当前分块组的refreshed_region_flag的值不同。

–如果edgeType等于EDGE_HOR且满足以下一个或多个条件,则变量filterEdgeFlag设置为0:

–当前亮度编码块的上边界是图像的上边界。

–当前编码块的上边界是分块的上边界且loop_filter_across_tiles_enabled_flag等于0。

–当前编码块的上边界是分块组的上边界且tile_group_loop_filter_across_tile_groups_enabled_flag等于0。

–当前编码块的上边界是当前分块组的上边界,且满足以下所有条件:

–gdr_enabled_flag等于1

–loop_filter_across_refreshed_region_enabled_flag等于0。

–存在与当前分块组的上边界共享边界的分块组,且该分块组的refreshed_region_flag的值与当前分块组的refreshed_region_flag的值不同。

–否则,filterEdgeFlag设置为1。

集成分块后,调整语法。

3.二维(nCbW)×(nCbH)阵列edgeFlags的所有元素都初始化为零。

描述了SAO的CTB修改过程。

……

对于i=0..nCtbSw–1且j=0..nCtbSh–1的所有样本位置(xSi,ySj)和(xYi,yYj),根据编码单元的pcm_loop_filter_disabled_flag、pcm_flag[xYi][yYj]和cu_transquant_bypass_flag的值,该编码单元包括覆盖recPicture[xSi][ySj]的编码块,适用以下情况:

-……

修改取决于未来决策变换/量化旁路的突出显示部分。

–否则,如果SaoTypeIdx[cIdx][rx][ry]等于2,则适用以下顺序步骤:

1.hPos[k]和vPos[k](k=0..1)的值在表8-18中根据SaoEoClass[cIdx][rx][ry]指定。

2.变量edgeIdx如下推导:

–修改后的样本位置(xSik',ySjk')和(xYik',yYjk')如下推导:

(xSik',ySjk')=(xSi+hPos[k],ySj+vPos[k]) (8-1128)

(xYik',yYjk')=(cIdx==0)?(xSik',ySjk'):(xSik'*SubWidthC,ySjk'*SubHeightC)

(8-1129)

–如果满足所有样本位置(xSik',ySjk')和(xYik',yYjk')(k=0..1)的以下一个或多个条件,则edgeIdx设置为0:

–位置(xSik',ySjk')处的样本在图像边界之外。

–gdr_enabled_flag等于1,loop_filter_across_refreshed_region_enabled_flag等于0,当前分块组的refreshed_region_flag等于1,且包含位置(xSik',ySjk')处的样本的分块组的refreshed_region_flag等于0。

–位置(xSik',ySjk')处的样本属于不同的分块组,并且满足以下两个条件之一:

–MinTbAddrZs[xYik'>>MinTbLog2SizeY][yYjk'>>MinTbLog2SizeY]小于MinTbAddrZs[xYi>>MinTbLog2SizeY][yYj>>MinTbLog2SizeY]且样本recPicture[xSi][ySj]所属的分块组中的tile_group_loop_filter_across_tile_groups_enabled_flag等于0。

–MinTbAddrZs[xYi>>MinTbLog2SizeY][yYj>>MinTbLog2SizeY]小于MinTbAddrZs[xYik'>>MinTbLog2SizeY][yYjk'>>MinTbLog2SizeY]且样本recPicture[xSik'][ySjk']所属的分块组中的tile_group_loop_filter_across_tile_groups_enabled_flag等于0。

–loop_filter_across_tiles_enabled_flag等于0,并且位置(xSik',ySjk')处的样本属于不同的分块。

当合并没有分块的分块组时,修改突出显示的部分

–否则,edgeIdx如下推导:

–适用以下情况:

edgeIdx=2+Sign(recPicture[xSi][ySj]–recPicture[xSi+hPos[0]][ySj+vPos[0]])+Sign(recPicture[xSi][ySj]–recPicture[xSi+hPos[1]][ySj+vPos[1]]) (8-1130)

–当edgeIdx等于0、1或2时,edgeIdx如下修改:

edgeIdx=(edgeIdx==2)?0:(edgeIdx+1) (8-1131)

3.修改后的图像样本阵列saoPicture[xSi][ySj]如下推导:

saoPicture[xSi][ySj]=Clip3(0,(1<<bitDepth)–1,recPicture[xSi][ySj]+SaoOffsetVal[cIdx][rx][ry][edgeIdx]) (8-1132)

描述了用于ALF的亮度样本的编码树块滤波过程。

……

为了推导经滤波的重建亮度样本alfPictureL[x][y],对当前亮度编码树块内的每个重建亮度样本recPictureL[x][y]进行滤波,其中,x、y=0..CtbSizeY–1,如下所示:

-……

–在亮度样本的给定阵列recPicture内,每个对应的亮度样本(x,y)的位置(hx,vy)如下推导:

–如果gdr_enabled_flag等于1,loop_filter_across_refreshed_region_enabled_flag等于0,包含位置(x,y)处的亮度样本的分块组tgA的refreshed_region_flag等于1,则适用以下情况:

–如果位置(hx,vy)位于另一个分块组tgB中且tgB的refreshed_region_flag等于0,则变量leftBoundary、rightBoundary、topBoundary和botBoundary分别设置为等于TGRefreshedLeftBoundary、TGRefreshedRightBoundary、TGRefreshedTopBoundary和TGRefreshedBotBoundary。

–否则,变量leftBoundary、rightBoundary、topBoundary和botBoundary分别设置为等于PicRefreshedLeftBoundaryPos、PicRefreshedRightBoundaryPos、PicRefreshedTopBoundaryPos和PicRefreshedBotBoundaryPos。

hx=Clip3(leftBoundary,rightBoundary,xCtb+x) (8-1140)

vy=Clip3(topBoundary,botBoundary,yCtb+y) (8-1141)

–否则,适用以下情况:

hx=Clip3(0,pic_width_in_luma_samples–1,xCtb+x) (8-1140)

vy=Clip3(0,pic_height_in_luma_samples–1,yCtb+y) (8-1141)

-……

描述了亮度样本的ALF转置和滤波索引的推导过程。

……

在亮度样本的给定阵列recPicture内,每个对应的亮度样本(x,y)的位置(hx,vy)如下推导:

–如果gdr_enabled_flag等于1,loop_filter_across_refreshed_region_enabled_flag等于0,包含位置(x,y)处的亮度样本的分块组tgA的refreshed_region_flag等于1,则适用以下情况:

–如果位置(hx,vy)位于另一个分块组tgB中且tgB的refreshed_region_flag等于0,则变量leftBoundary、rightBoundary、topBoundary和botBoundary分别设置为等于TGRefreshedLeftBoundary、TGRefreshedRightBoundary、TGRefreshedTopBoundary和TGRefreshedBotBoundary。

–否则,变量leftBoundary、rightBoundary、topBoundary和botBoundary分别设置为等于PicRefreshedLeftBoundaryPos、PicRefreshedRightBoundaryPos、PicRefreshedTopBoundaryPos和PicRefreshedBotBoundaryPos。

hx=Clip3(leftBoundary,rightBoundary,x) (8-1140)

vy=Clip3(topBoundary,botBoundary,y) (8-1141)

–否则,适用以下情况:

hx=Clip3(0,pic_width_in_luma_samples–1,x) (8-1145)

vy=Clip3(0,pic_height_in_luma_samples–1,y) (8-1146)

描述了色度样本的编码树块滤波过程。

……

为了推导经滤波的重建色度样本alfPicture[x][y],对当前色度编码树块内的每个重建色度样本recPicture[x][y]进行滤波,其中,x、y=0..ctbSizeC–1,如下所示:

–在色度样本的给定阵列recPicture内,每个对应的色度样本(x,y)的位置(hx,vy)如下推导:

–如果gdr_enabled_flag等于1,loop_filter_across_refreshed_region_enabled_flag等于0,包含位置(x,y)处的亮度样本的分块组tgA的refreshed_region_flag等于1,则适用以下情况:

–如果位置(hx,vy)位于另一个分块组tgB中且tgB的refreshed_region_flag等于0,则变量leftBoundary、rightBoundary、topBoundary和botBoundary分别设置为等于TGRefreshedLeftBoundary、TGRefreshedRightBoundary、TGRefreshedTopBoundary和TGRefreshedBotBoundary。

–否则,变量leftBoundary、rightBoundary、topBoundary和botBoundary分别设置为等于PicRefreshedLeftBoundaryPos、PicRefreshedRightBoundaryPos、PicRefreshedTopBoundaryPos和PicRefreshedBotBoundaryPos。

hx=Clip3(leftBoundary/SubWidthC,rightBoundary/SubWidthC,xCtbC+x)(8-1140)

vy=Clip3(topBoundary/SubWidthC,botBoundary/SubWidthC,yCtbC+y)(8-1141)

–否则,适用以下情况:

hx=Clip3(0,pic_width_in_luma_samples/SubWidthC–1,xCtbC+x) (8-1177)

vy=Clip3(0,pic_height_in_luma_samples/SubHeightC–1,yCtbC+y) (8-1178)

图7示出了本发明实施例提供的用于实现逐步解码刷新(gradual decodingrefresh,GDR)技术700的视频码流750。GDR技术700可以类似于图5的GDR技术500。本文使用的视频码流750还可以称为经编码的视频码流、码流或其变体。如图7所示,码流750包括序列参数集(sequence parameter set,SPS)752、图像参数集(picture parameter set,PPS)754、条带头756和图像数据758。

SPS 752包括图像序列(sequence of picture,SOP)中的所有图像共有的数据。相比之下,PPS 754包括整个图像共有的数据。条带头756包括当前条带的信息,例如条带类型、待使用的参考图像等。SPS 752和PPS 754可以统称为参数集。SPS 752、PPS 754和条带头756是网络抽象层(network abstraction layer,NAL)单元的类型。NAL单元是一种语法结构,包括待遵循的数据类型(例如,经译码的视频数据)的指示。NAL单元分为视频编码层(video coding layer,VCL)和非VCL NAL单元。VCL NAL单元包含表示视频图像中样本值的数据,非VCL NAL单元包含任何关联的附加信息,如参数集(可应用于大量VCL NAL单元的重要报头数据)和补充增强信息(定时信息和其它补充数据,该补充数据可以增强解码视频信号的可用性,但不是解码视频图像中样本的值所必需的)。本领域技术人员将理解,码流750在实际应用中可以包括其它参数和信息。

图7的图像数据758包括与正在编码或解码的图像或视频关联的数据。图像数据758可以简单地称为码流750中携带的负载或数据。在一个实施例中,图像数据758包括CVS708,该CVS 708包括GDR图像702、一个或多个后置图像704和恢复点图像706。在一个实施例中,GDR图像702、后置图像704和恢复点图像706可以定义CVS 708中的GDR周期。

如图7所示,GDR技术700或原理是针对以GDR图像702开始并以恢复点图像706结束的一系列图像。GDR图像702包含刷新/清理区域710和未刷新/脏区域712,其中,该刷新/清理区域710包含所有已使用帧内预测译码的块(即,帧内预测块),该未刷新/脏区域712包含所有已使用帧间预测译码的块(即,帧间预测块)。

紧邻GDR图像702的后置图像704包含刷新/清理区域710,该刷新/清理区域710具有使用帧内预测译码的第一部分710A和使用帧间预测译码的第二部分710B。第二部分710B通过参考例如CVS 708的GDR周期内的前一图像的刷新/清理区域710来译码。如图所示,随着译码过程沿一致方向(例如,从左到右)移动或前进,后置图像704的刷新/清理区域710扩展,这使未刷新/脏区域712相应地收缩。最终,从译码过程中获得仅包含刷新/清理区域710的恢复点图像706。被译码为帧间预测块的刷新/清理区域710的第二部分710B可以仅参考参考图像中的刷新区域/清理区域710。

如图7所示,CVS 708中的GDR图像702、后置图像704和恢复点图像706各自包含在自己的VCL NAL单元730中。CVS 708中的VCL NAL单元730的集合可以称为接入单元。

CVS 708中包含GDR图像702的NAL单元730具有GDR NAL单元类型(GDR_NUT)。即,在一个实施例中,CVS 708中包含GDR图像702的NAL单元730相对于后置图像704和恢复点图像706具有自己唯一的NAL单元类型。在一个实施例中,GDR_NUT允许码流以GDR图像702开始,而不是码流必须以IRAP图像开始。例如,将GDR图像702的VCL NAL单元730指定为GDR_NUT可以向解码器指示CVS 708中的初始VCL NAL单元730包括GDR图像702。

在一个实施例中,GDR图像702是CVS 708中的初始图像。在一个实施例中,GDR图像702是GDR周期中的初始图像。在一个实施例中,GDR图像702具有等于零的时间标识符(identifier,ID)。时间ID是标识图像相对于其它图像的位置或顺序的值或数字。在一个实施例中,包含具有GDR_NUT的VCL NAL单元730的接入单元指定为GDR接入单元。在一个实施例中,GDR图像702是另一个(例如,较大)GDR图像的经译码条带。即,GDR图像702可以是较大的GDR图像的一部分。

图8为由视频解码器(例如视频解码器30)实现的对经编码的视频码流进行解码的方法800的一个实施例。方法800可以在从视频编码器(例如视频编码器20)直接或间接地接收解码码流之后执行。方法800改进了解码过程,因为该方法可以实现渐进式帧内刷新以便能够在不必使用IRAP图像的情况下进行随机接入。通过使用GDR图像而不是IRAP图像,例如,由于GDR图像相对于IRAP图像的大小,可以实现更平滑、更一致的比特率,从而可以减少端到端延迟(即时延)。因此,实际上,提高了编解码器的性能,从而提供了更好的用户体验。

在步骤802中,视频解码器确定经编码的视频码流的编码视频序列(coded videosequence,CVS)包括具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(network abstraction layer,NAL)单元类型(GDR_NUT)的视频编码层(video codinglayer,VCL)网络抽象层(network abstraction layer,NAL)单元,具有GDR_NUT的所述VCLNAL单元包含GDR图像。

在一个实施例中,GDR图像是CVS中的初始图像。在一个实施例中,GDR图像是GDR周期中的初始图像。在一个实施例中,GDR图像具有等于零的时间标识符(identifier,ID)。时间ID为零可以表示GDR图像是例如CVS或GDR周期中的第一个图像。在一个实施例中,包含具有GDR_NUT的VCL NAL单元的接入单元指定为GDR接入单元。在一个实施例中,GDR图像是另一个GDR图像的经译码条带。

在步骤804中,视频解码器在GDR图像处开始对CVS的解码。

在步骤806中,视频解码器根据解码的CVS生成图像。然后,可以为电子设备(例如,智能手机、平板电脑、笔记本电脑、个人计算机等)的用户显示图像。

图9为由视频编码器(例如视频编码器20)实现的对视频码流进行编码的方法900的一个实施例。方法900可以在(例如视频中的)图像待编码到视频码流中并接着发送给视频解码器(例如视频解码器30)时执行。方法900改进了编码过程,因为该方法可以实现渐进式帧内刷新,以便能够在不必使用IRAP图像的情况下进行随机接入。通过使用GDR图像而不是IRAP图像,例如,由于GDR图像相对于IRAP图像的大小,可以实现更平滑、更一致的比特率,从而可以减少端到端延迟(即时延)。因此,实际上,提高了编解码器的性能,从而提供了更好的用户体验。

在步骤902中,视频编码器确定视频序列的随机接入点。在步骤904中,视频编码器在视频序列的随机接入点处将逐步解码刷新(gradual decoding refresh,GDR)图像编码到具有逐步解码刷新(gradual decoding refresh,GDR)网络抽象层(networkabstraction layer,NAL)单元类型(GDR_NUT)的视频编码层(video coding layer,VCL)网络抽象层(network abstraction layer,NAL)单元中。

在一个实施例中,GDR图像是CVS中的初始图像。在一个实施例中,GDR图像是GDR周期中的初始图像。在一个实施例中,GDR图像具有等于零的时间标识符(identifier,ID)。时间ID为零可以表示GDR图像是例如CVS或GDR周期中的第一个图像。在一个实施例中,包含具有GDR_NUT的VCL NAL单元的接入单元指定为GDR接入单元。在一个实施例中,GDR图像是另一个GDR图像的经译码条带。

在步骤906中,视频编码器生成码流,所述码流包含视频序列,所述视频序列包括在所述随机接入点处的所述GDR图像,所述GDR图像在具有所述GDR_NUT的所述VCL NAL单元中。

在步骤908中,存储码流,用于发送给视频解码器。视频码流也可以称为经编码的视频码流(coded video bitstream/encoded video bitstream)。视频编码器可以向视频解码器发送码流。视频解码器接收到经编码的视频码流之后,就可以对经编码的视频码流进行解码(例如,如上所述),以生成或产生图像,从而在电子设备(例如智能手机、平板电脑、笔记本电脑、个人计算机等)的显示器或屏幕上显示给用户。

图10为本发明实施例提供的视频译码设备1000(例如视频编码器20或视频解码器30)的示意图。视频译码设备1000适用于实现本文描述的公开实施例。视频译码设备1000包括:入端口1010和接收单元(Rx)1020,用于接收数据;处理器、逻辑单元或中央处理单元(central processing unit,CPU)1030,用于处理数据;发送单元(Tx)1040和出端口1050,用于发送数据;存储器1060,用于存储数据。视频译码设备1000还可以包括与入端口1010、接收单元1020、发送单元1040和出端口1050耦合的光电(optical-to-electrical,OE)组件和电光(electrical-to-optical,EO)组件,用作光信号或电信号的出口或入口。

处理器1030通过硬件和软件实现。处理器1030可以实现为一个或多个CPU芯片、一个或多个核(例如,实现为多核处理器)、一个或多个现场可编程门阵列(field-programmable gate array,FPGA)、一个或多个专用集成电路(application specificintegrated circuit,ASIC)以及一个或多个数字信号处理器(digital signalprocessor,DSP)。处理器1030与入端口1010、接收单元1020、发送单元1040、出端口1050和存储器1060通信。处理器1030包括译码模块1070。译码模块1070实现上文描述的公开实施例。例如,译码模块1070实现、处理、准备或提供各种编解码功能。因此,将译码模块1070包括在内使得视频译码设备1000的功能得到了显著改进,并且实现了视频译码设备1000到不同状态的转换。或者,以存储在存储器1060中并由处理器1030执行的指令来实现译码模块1070。

视频译码设备1000还可以包括输入和/或输出(input/output,I/O)设备1080,用于与用户进行数据通信。I/O设备1080可以包括输出设备,例如显示视频数据的显示器、输出音频数据的扬声器等。I/O设备1080还可以包括键盘、鼠标、轨迹球等输入设备和/或与上述输出设备进行交互的对应接口。

存储器1060包括一个或多个磁盘、磁带机和固态硬盘,可用作溢出数据存储设备,以在选择执行程序时存储这类程序,并存储在程序执行期间读取的指令和数据。存储器1060可以是易失性和/或非易失性的,并且可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、三态内容寻址存储器(ternary content-addressable memory,TCAM)和/或静态随机存取存储器(static random-access memory,SRAM)。

图11为译码模块1100的实施例的示意图。在一个实施例中,译码模块1100在视频译码设备1102(例如视频编码器20或视频解码器30)中实现。视频译码设备1102包括接收模块1101。接收模块1101用于接收图像进行编码或者接收码流进行解码。视频译码设备1102包括与接收模块1101耦合的发送模块1107。发送模块1107用于向解码器发送所述码流或者向显示模块(例如多个I/O设备1080中的一个I/O设备)发送解码图像。

视频译码设备1102包括存储模块1103。存储模块1103与接收模块1101或发送模块1107中的至少一个耦合。存储模块1103用于存储指令。视频译码设备1102还包括处理模块1105。处理模块1105与存储模块1103耦合。处理模块1105用于执行存储在存储模块1103中的指令,以执行本文公开的方法。

还应当理解,本文中阐述的示例性方法的步骤不一定需要按照所描述的顺序执行,并且这些方法的步骤的顺序应当理解为仅仅是示例性的。同理,在与本发明各种实施例相一致的方法中,这样的方法可以包括其它步骤,并且某些步骤可以省略或组合。

虽然本发明提供了若干个实施例,但应该理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可以通过其它多种具体形式体现。本发明示例应被视为说明性而非限制性的,且本发明并不限于本文所给出的详细内容。例如,各种元件或组件可以组合或集成在另一系统中,或者一些特征可以省略或不实施。

另外,在不脱离本发明范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法组合或集成。示出或描述为彼此耦合、或直接耦合、或彼此通信的其它项目可通过某种接口、设备或中间组件以电方式、机械方式或其它方式间接耦合或通信。变化、替换和变更的其它示例可由本领域技术人员确定,并可在不脱离本文公开的精神和范围的情况下举例。

52页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于在视频编解码中信令发送运动合并模式的系统和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类