CN113853786A - 用于分块、砖块和条带的波前并行处理 - Google Patents

用于分块、砖块和条带的波前并行处理 Download PDF

Info

Publication number
CN113853786A
CN113853786A CN202080032937.0A CN202080032937A CN113853786A CN 113853786 A CN113853786 A CN 113853786A CN 202080032937 A CN202080032937 A CN 202080032937A CN 113853786 A CN113853786 A CN 113853786A
Authority
CN
China
Prior art keywords
bit
video
ctb
block
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080032937.0A
Other languages
English (en)
Inventor
弗努·亨德里
王业奎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210724338.6A priority Critical patent/CN115174921B/zh
Priority to CN202410047478.3A priority patent/CN117857797A/zh
Publication of CN113853786A publication Critical patent/CN113853786A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一种解码方法,包括:在视频码流中获得具有第一值的分块结束比特和字节对齐比特,其中,具有第一值的分块结束比特和字节对齐比特用于表示当前译码树块(codingtreeblock,CTB)是一个分块中的最后一个CTB;在该视频码流中获得具有第一值的CTB行结束比特和字节对齐比特,其中,具有第一值的CTB行结束比特和字节对齐比特用于表示波形并行处理(waveformparallelprocessing,WPP)被启用,并表示当前CTB是CTB行中的最后一个CTB,但不是所述分块中的最后一个CTB;根据具有第一值的分块结束比特、具有第一值的CTB行结束比特和字节对齐比特,重建分块中的多个CTB。

Description

用于分块、砖块和条带的波前并行处理
相关申请的交叉引用
本专利申请要求FnuHendry等人于2019年5月3日递交、申请号为62/843,047、申请名称为“用于分块、砖块和条带的波前并行处理”的美国临时专利申请的权益,以及FnuHendry等人于2019年6月21日递交、申请号为62/864,966、申请名称为“用于分块、砖块和条带的波前并行处理”的美国临时专利申请的权益,其通过引用结合在本申请中。
技术领域
本发明大体上描述了在视频译码中支持波前并行处理(wavefrontparallelprocessing,WPP)的技术。更具体地,本发明避免了在WPP中对比特和字节对齐的不必要重复。
背景技术
即使某一段视频相对较短,也需要大量的视频数据来描述。当该数据要在带宽容量受限的通信网络中进行流式传输或以其它方式传输时,可能会造成困难。因此,视频数据通常需要先进行压缩,然后通过现代电信网络进行传输。由于内存资源可能有限,在存储设备中存储视频时,该视频的大小也可能产生问题。视频压缩设备通常在源侧使用软件和/或硬件对该视频数据进行译码,然后进行传输或存储,从而减少用于表示数字视频图像所需的数据量。然后,对视频数据进行解码的视频解压缩设备在目的地侧接收压缩后的数据。在网络资源有限以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术几乎不影响图像质量,同时能够提高压缩比。
发明内容
第一方面涉及一种由视频解码器实现的对经编码视频码流进行解码的方法。该方法包括:视频解码器接收所述经编码视频码流,其中,所述经编码视频码流包括图像,图像包括具有一个或多个分块(tile)的一个或多个条带(slice),每个分块包括多个译码树块(codingtreeblock,CTB);视频解码器在所述经编码视频码流中获得具有第一值的分块结束比特和字节对齐比特,其中,具有第一值的分块结束比特和字节对齐比特用于表示多个CTB中的当前CTB是一个分块中的最后一个CTB;视频解码器在所述经编码视频码流中获得具有第一值的CTB行结束比特和该字节对齐比特,其中,具有第一值的CTB行结束比特和字节对齐比特用于表示波形并行处理(waveformparallelprocessing,WPP)被启用,并表示多个CTB中的当前CTB是CTB行(CTB row)中的最后一个CTB,但不是所述分块中的最后一个CTB;视频解码器根据具有第一值的分块结束比特、具有第一值的CTB行结束比特和字节对齐比特,重建所述分块中的多个CTB。
该方法提供的技术避免了在WPP中重复进行指示(signal)和字节对齐。通过消除WPP中重复进行的指示和字节对齐,从而减少了用于指示行/分块结束的比特数以及用作填充的比特数。由于减少了WPP中所需的比特数,因此,视频译码中的编码器/解码器(又称为“编解码器codec”)相对于现有的编解码器有所改进。实际上,改进的视频译码过程在发送、接收和/或观看视频时提供了更好的用户体验。
可选地,根据上述任一方面,在该方面的另一种实现方式中,分块结束比特由end_of_tile_one_bit表示。
可选地,根据上述任一方面,在该方面的另一种实现方式中,CTB行结束比特由end_of_subset_bit表示。
可选地,根据上述任一方面,在该方面的另一种实现方式中,WPP通过设置在参数集中的标志进行启用。
可选地,根据上述任一方面,在该方面的另一种实现方式中,WPP通过表示为entropy_coding_sync_enabled_flag的标志进行启用。
可选地,根据上述任一方面,在该方面的另一种实现方式中,当WPP被启用时,第一值为1(1)。
可选地,根据上述任一方面,在该方面的另一种实现方式中,该方法还包括:显示根据重建的多个CTB生成的一个图像。
第二方面涉及一种由视频编码器实现的对视频码流进行编码的方法。该方法包括:所述视频编码器将图像分割为一个或多个条带,其中,每个条带包括一个或多个分块,每个分块包括多个译码树块(codingtreeblock,CTB);当多个CTB中的当前CTB是一个分块中的最后一个CTB时,所述视频编码器将具有第一值的分块结束比特和字节对齐比特编码到所述视频码流中;当波形并行处理(waveformparallelprocessing,WPP)被启用,并且当前CTB是CTB行中的最后一个CTB,但不是所述分块中的最后一个CTB时,视频编码器将具有第一值的CTB行结束比特和字节对齐比特编码到所述视频码流中;视频编码器存储所述视频码流,以供发送给视频解码器。
该方法提供的技术避免了在WPP中重复进行指示和字节对齐。通过消除WPP中重复进行的指示和字节对齐,从而减少了用于指示行/分块结束的比特数以及用作填充的比特数。由于减少了WPP中所需的比特数,因此,视频译码中的编码器/解码器(又称为“编解码器codec”)相对于现有的编解码器有所改进。实际上,改进的视频译码过程在发送、接收和/或观看视频时提供了更好的用户体验。
可选地,根据上述任一方面,在该方面的另一种实现方式中,分块结束比特由end_of_tile_one_bit表示。
可选地,根据上述任一方面,在该方面的另一种实现方式中,CTB行结束比特由end_of_subset_bit表示。
可选地,根据上述任一方面,在该方面的另一种实现方式中,WPP通过设置在参数集中的标志进行启用。
可选地,根据上述任一方面,在该方面的另一种实现方式中,WPP通过表示为entropy_coding_sync_enabled_flag的标志进行启用。
可选地,根据上述任一方面,在该方面的另一种实现方式中,当WPP被启用时,第一值为1(1)。
可选地,根据上述任一方面,在该方面的另一种实现方式中,该方法还包括:向所述视频解码器发送所述视频码流。
第三方面涉及一种解码设备。该解码设备包括:接收器,用于接收经编码视频码流;存储器,耦合到接收器,其中,存储器存储指令;处理器,耦合到存储器,其中,处理器用于执行所述指令,使得所述解码设备执行以下操作:接收所述经编码视频码流,其中,所述经编码视频码流包括图像,图像包括具有一个或多个分块的一个或多个条带,每个分块包括多个译码树块(codingtreeblock,CTB);在所述经编码视频码流中获得具有第一值的分块结束比特和字节对齐比特,其中,具有第一值的分块结束比特和字节对齐比特用于表示多个CTB中的当前CTB是一个分块中的最后一个CTB;在所述经编码视频码流中获得具有第一值的CTB行结束比特和字节对齐比特,其中,具有第一值的CTB行结束比特和字节对齐比特用于表示波形并行处理(waveformparallelprocessing,WPP)被启用,并表示多个CTB中的当前CTB是CTB行中的最后一个CTB,但不是所述分块中的最后一个CTB;根据具有第一值的分块结束比特、具有第一值的CTB行结束比特和字节对齐比特,重建所述分块中的多个CTB。
该解码设备提供的技术避免了在WPP中重复进行指示和字节对齐。通过消除WPP中重复进行的指示和字节对齐,从而减少了用于指示行/分块结束的比特数以及用作填充的比特数。由于减少了WPP中所需的比特数,因此,视频译码中的编码器/解码器(又称为“编解码器codec”)相对于现有的编解码器有所改进。实际上,改进的视频译码过程在发送、接收和/或观看视频时提供了更好的用户体验。
可选地,根据上述任一方面,在该方面的另一种实现方式中,分块结束比特由end_of_tile_one_bit表示,CTB行结束比特由end_of_subset_bit表示,第一值为1。
第四方面涉及一种编码设备。该编码设备包括:存储器,其中,存储器存储指令;处理器,耦合到存储器,其中,处理器用于执行所述指令,使得所述编码设备执行以下操作:将图像分割为一个或多个条带,其中,每个条带包括一个或多个分块,每个分块包括多个译码树块(codingtreeblock,CTB);当多个CTB中的当前CTB是一个分块中的最后一个CTB时,将具有第一值的分块结束比特和字节对齐比特编码到视频码流中;当波形并行处理(waveformparallelprocessing,WPP)被启用,并且当前CTB是CTB行中的最后一个CTB,但不是所述分块中的最后一个CTB时,将具有第一值的CTB行结束比特和字节对齐比特编码到所述视频码流中;存储所述视频码流,以发送到视频解码器。
该编码设备提供的技术避免了在WPP中重复进行指示和字节对齐。通过消除WPP中重复进行的指示和字节对齐,从而减少了用于指示行/分块结束的比特数以及用作填充的比特数。由于减少了WPP中所需的比特数,因此,视频译码中的编码器/解码器(又称为“编解码器codec”)相对于现有的编解码器有所改进。实际上,改进的视频译码过程在发送、接收和/或观看视频时提供了更好的用户体验。
可选地,根据上述任一方面,在该方面的另一种实现方式中,所述编码设备还包括发送器,其中,发送器耦合到处理器,并用于向所述视频解码器发送所述视频码流。
可选地,根据上述任一方面,在该方面的另一种实现方式中,分块结束比特由end_of_tile_one_bit表示,CTB行结束比特由end_of_subset_bit表示,第一值为1。
第五方面涉及一种译码装置。该译码装置包括:接收器,用于接收图像进行编码或接收码流进行解码;发送器,耦合到接收器,其中,发送器用于将码流发送到解码器或将经解码图像发送到显示器;存储器,耦合到接收器或发送器中的至少一个,其中,存储器用于存储指令;处理器,耦合到存储器,其中,处理器用于执行存储在存储器中的指令,以执行本文中所公开的方法。
该译码装置提供的技术避免了在WPP中重复进行指示和字节对齐。通过消除WPP中重复进行的指示和字节对齐,从而减少了用于指示行/分块结束的比特数以及用作填充的比特数。由于减少了WPP中所需的比特数,因此,视频译码中的编码器/解码器(又称为“编解码器codec”)相对于现有的编解码器有所改进。实际上,改进的视频译码过程在发送、接收和/或观看视频时提供了更好的用户体验。
可选地,根据上述任一方面,在该方面的另一种实现方式中,显示器用于显示图像。
第六方面涉及一种系统。该系统包括:编码器;解码器,与编码器进行通信;其中,编码器或解码器包括本文中公开的解码设备、编码设备或译码装置。
该系统提供的技术避免了在WPP中重复进行指示和字节对齐。通过消除WPP中重复进行的指示和字节对齐,从而减少了用于指示行/分块结束的比特数以及用作填充的比特数。由于减少了WPP中所需的比特数,因此,视频译码中的编码器/解码器(又称为“编解码器codec”)相对于现有的编解码器有所改进。实际上,改进的视频译码过程在发送、接收和/或观看视频时提供了更好的用户体验。
第七方面涉及一种译码模块。该译码模块包括:接收模块,用于接收图像以进行编码或接收码流进行解码;发送模块,耦合到接收模块,其中,发送模块用于将码流发送到解码模块或将经解码图像发送到显示模块;存储模块,耦合到接收模块或发送模块中的至少一个,其中,存储模块用于存储指令;处理模块,耦合到存储模块,其中,处理模块用于执行存储在存储模块中的指令,以执行本文所公开的方法。
该译码模块提供的技术避免了在WPP中重复进行指示和字节对齐。通过消除WPP中重复进行的指示和字节对齐,从而减少了用于指示行/分块结束的比特数以及用作填充的比特数。由于减少了WPP中所需的比特数,因此,视频译码中的编码器/解码器(又称为“编解码器codec”)相对于现有的编解码器有所改进。实际上,改进的视频译码过程在发送、接收和/或观看视频时提供了更好的用户体验。
附图说明
为了更完整地理解本发明,参考以下结合附图和具体实施方式而进行的简要描述,其中,相同的附图标记表示相同的部件。
图1为可以利用视频译码技术的一种示例性译码系统的框图。
图2为可以实现视频译码技术的一种示例性视频编码器的框图。
图3为可以实现视频译码技术的一种示例性视频解码器的框图。
图4示出了一种用于实现波前并行处理的视频码流。
图5示出了一种对经编码视频码流进行解码的方法的实施例。
图6示出了一种对经编码视频码流进行编码的方法的实施例。
图7为一种视频译码设备的示意图。
图8为一种译码模块的实施例的示意图。
具体实施方式
首先应当理解,尽管下文提供一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可以使用任何数量的技术来实现,无论这些技术是当前已知的技术还是现有的技术。本发明不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,且可以在所附权利要求书的范围以及其等效部分的完整范围内进行修改。
以下术语定义如下,除非在本文相反的上下文中使用。具体地,下述定义旨在更加清楚地描述本发明。但是,各术语在不同的上下文中可能具有不同的描述。因此,下述定义应被视为补充信息,而不应被视为限制对这些术语进行任何其他定义的描述。
码流(bitstream)是包括视频数据的一序列的比特,这些视频数据经过压缩后在编码器和解码器之间传输。编码器(encoder)是一种用于利用编码过程将视频数据压缩到码流中的设备。解码器(decoder)是一种用于利用解码过程从码流中重建视频数据以进行显示的设备。图像(picture)是视频序列中的、旨在对应时刻向用户完整或部分地进行显示的完整图像。参考图像(referencepicture)是包括参考样本的图像,这些参考样本可以在根据帧间预测通过参考其他图像进行编码时使用。编码图像(codedpicture)是根据帧间预测或帧内预测对图像进行编码的一种表示,其包含在码流中的单个访问单元中,并且包括该图像的译码树单元(codingtreeunit,CTU)的全集。条带(slice)是图像的一种分割部分,该分割部分包括图像中的整数个完整分块或整数个连续的完整CTU行,其中,条带和所有子划分部分仅包含在单个网络抽象层(networkabstractionlayer,NAL)单元中。参考条带(referenceslice)是参考图像的条带,该条带包括参考样本或者在根据帧间预测通过参考其他条带进行编码时使用。条带头(sliceheader)是经译码条带的一部分,包括与条带中表示的所有分块或一个分块中的CTU行相关联的数据元素。入口点(entrypoint)是码流中的比特位置,包括经译码条带的对应子集的视频数据的第一比特。偏移(offset)是指已知比特位置和入口点之间的比特距离。子集(subset)是对一个集合的子划分,如分块、CTU行或CTU。CTU是条带的子集。译码树单元(codingtreeunit,CTU)是一组预定义大小的样本,可以通过译码树进行分割。针对每个亮度/色度分量,CTU被划分为译码树块(codingtreeblock,CTB)。CTB可以是64×64、32×32或16×16的像素块大小。通常,更大的像素块会提高编码效率。然后,CTB被划分为一个或多个译码单元(codingunit,CU),使得CTU的大小是最大的译码单元的大小。
CTU行(CTUrow)是一组CTU,其在条带的左边界和条带的右边界之间水平延伸。CTB行(CTBrow)是一组CTB,其在条带的左边界和条带的右边界之间水平延伸。CTU列(CTUcolumn)是一组CTU,其在条带的上边界和条带的下边界之间垂直延伸。CTB列(CTBcolumn)是一组CTB,其在条带的上边界和条带的下边界之间垂直延伸。CTB行结束比特(endofCTBrowbit)是指位于CTB行结束的比特。字节对齐比特(Bytealignmentbit)是指添加到数据子集、CTU行、CTB行、分块等的结束处作为填充的比特。字节对齐比特可以用于解释或补偿WPP引入的延迟。WPP是一种对条带的CTU行进行延迟编码的机制,以支持通过不同线程对各行进行并行解码。条带地址(sliceaddress)是指条带或其子部分的可识别位置。
本文中采用以下缩略词:译码树块(CodingTreeBlock,CTB)、译码树单元(CodingTreeUnit,CTU)、译码单元(CodingUnit,CU)、经编码视频序列(CodedVideoSequence,CVS)、联合视频专家组(JointVideoExpertsTeam,JVET)、运动约束分块集(Motion-ConstrainedTileSet,MCTS)、最大传输单元(MaximumTransferUnit,MTU)、网络抽象层(NetworkAbstractionLayer,NAL)、图像顺序编号(PictureOrderCount,POC)、原始字节序列载荷(RawByteSequencePayload,RBSP)、序列参数集(SequenceParameterSet,SPS)、子图像单元(Sub-PictureUnit,SPU)、通用视频编码(VersatileVideoCoding,VVC)、工作草案(WorkingDraft,WD)。
图1为可以利用本文描述的视频译码技术的一种示例性译码系统10的框图。如图1所示,译码系统10包括源设备12,其中,源设备12提供之后由目的地设备14进行解码的经编码视频数据。具体地,源设备12可以通过计算机可读介质16向目的地设备14提供视频数据。源设备12和目的地设备14可以包括以下多种设备中的任一种,包括台式计算机、笔记本(例如,膝上型)电脑、平板电脑、机顶盒、“智能”手机和“智能”平板等电话手持机、电视机、摄像机、显示设备、数字媒体播放器、视频游戏机、视频流设备等。在一些情况下,可以配备源设备12和目的地设备14以用于无线通信。
目的地设备14可以通过计算机可读介质16接收待解码的经编码视频数据。计算机可读介质16可以包括能够将经编码视频数据从源设备12移动到目的地设备14的任何类型的介质或设备。在一个示例中,计算机可读介质16可以包括通信介质,使得源设备12能够实时地将经编码视频数据直接发送到目的地设备14。经编码视频数据可以根据通信标准例如无线通信协议进行调制,并发送到目的地设备14。通信介质可以包括任何无线或有线通信介质,例如射频(radiofrequency,RF)频谱或一个或多个物理传输线路。通信介质可以构成分组网络如局域网、广域网或全球网络如互联网等的一部分。通信介质可以包括路由器、交换机、基站或有助于从源设备12到目的地设备14的通信的任何其它设备。
在一些示例中,可以将经编码数据从输出接口22输出到存储设备。类似地,可以通过输入接口从存储设备对经编码数据进行访问。存储设备可以包括各种分布式或本地访问的数据存储介质中的任一种,例如硬盘驱动器、蓝光光盘、数字视频磁盘(digitalvideodisk,DVD)、压缩光盘只读存储器(CompactDiscRead-OnlyMemory,CD-ROM)、闪存、易失性或非易失性存储器,或用于存储经编码视频数据的任何其它合适的数字存储介质。在另一示例中,存储设备可以对应文件服务器或者其它中间存储设备,其中,其它中间存储设备可以存储源设备12生成的经编码视频。目的地设备14可以通过流式传输或下载方式从存储设备中访问所存储的视频数据。文件服务器可以是能够存储经编码视频数据并将该经编码视频数据发送到目的地设备14的任何类型的服务器。示例性文件服务器包括万维网服务器(例如,用于网站)、文件传输协议(filetransferprotocol,FTP)服务器、网络附属存储(networkattachedstorage,NAS)设备或本地磁盘驱动器。目的地设备14可以通过任何标准数据连接,包括互联网连接,访问经编码视频数据。所述标准数据连接可以包括适于访问存储在文件服务器上的经编码视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,数字用户线(digitalsubscriberline,DSL)、电缆调制解调器等)或两者的组合。对存储设备中的经编码视频数据的传输可以是流式传输、下载传输或其组合。
本发明的技术不一定限于无线应用或设置。这些技术可以应用于视频译码以支持多种多媒体应用中的任一种,例如空中电视广播、有线电视传输、卫星电视传输、HTTP动态自适应流媒体(dynamicadaptivestreamingoverHTTP,DASH)等互联网流式视频传输、将数字视频进行编码以存储于数据存储介质中、对存储于数据存储介质中的数字视频进行解码、或其它应用。在一些示例中,译码系统10可以用于支持单向或双向视频传输,以支持视频流式传输、视频播放、视频广播和/或视频电话等应用。
在图1的示例中,源设备12包括视频源18、视频编码器20和输出接口22。目的地设备14包括输入接口28、视频解码器30和显示设备32。根据本发明,源设备12的视频编码器20和/或目的地设备14的视频解码器30可以用于应用这些技术进行视频译码。在其它示例中,源设备和目的地设备可以包括其它组件或装置。例如,源设备12可以从外部摄像机等外部视频源接收视频数据。同样地,目的地设备14可以与外部显示设备连接,而不是包括集成显示设备。
图1所示的译码系统10仅是一个示例。这些进行视频译码的技术可以由任何数字视频编码和/或解码设备实现。尽管本发明的技术通常由视频译码设备实现,但这些技术还可以由视频编码器/解码器(通常称为“编解码器(codec)”)实现。此外,本发明的技术也可以由视频预处理器实现。视频编码器和/或视频解码器可以是图形处理单元(graphicsprocessingunit,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使用,包括用于描述块和其它译码单元(例如,图像组(groupofpicture,GOP))的特征和/或处理的语法元素。显示设备32向用户显示经解码视频数据,并且可以包括多种显示设备中的任一种,例如,阴极射线管(cathoderaytube,CRT)、液晶显示器(liquidcrystaldisplay,LCD)、等离子显示器、有机发光二极管(organiclightemittingdiode,OLED)显示器,或其它类型的显示设备。
视频编码器20和视频解码器30可以根据视频编码标准(例如,目前正在开发的高效视频编码(HighEfficiencyVideoCoding,HEVC)标准)进行操作,并且可以符合HEVC测试模型(HEVCTestModel,HM)。可选地,视频编码器20和视频解码器30可以根据其它专有或行业标准进行操作,这些标准例如国际电信联盟电信标准化部门(InternationalTelecommunicationsUnionTelecommunicationStandardizationSector,ITU-T)H.264标准,还称为运动图像专家组(MovingPictureExpertGroup,MPEG)-4第10部分、高级视频编码(AdvancedVideoCoding,AVC)、H.265/HEVC或此类标准的扩展版本。然而,本发明的技术不限于任何特定的编码标准。视频编码标准的其它示例包括MPEG-2和ITU-TH.263。尽管在图1中未示出,在一些方面中,视频编码器20和视频解码器30可以分别与音频编码器和音频解码器集成,并且可以包括合适的复用器-解复用器(multiplexer-demultiplexer,MUX-DEMUX)单元或其它硬件和软件,以对共用数据流或单独数据流中的音频和视频都进行编码处理。如果适用,MUX-DEMUX单元可以遵守ITUH.223复用器协议,或用户数据报协议(userdatagramprotocol,UDP)等其它协议。
视频编码器20和视频解码器30可以分别实现为各种合适的编码器电路中的任一个,例如一个或多个微处理器、一个或多个数字信号处理器(digitalsignalprocessor,DSP)、一个或多个专用集成电路(application-specificintegratedcircuit,ASIC)、一个或多个现场可编程门阵列(fieldprogrammablegatearray,FPGA)、一个或多个离散逻辑、一个或多个软件、一个或多个硬件、一个或多个固件或其任何组合。当这些技术部分地以软件实现时,设备可以将该软件的指令存储在合适的非瞬时性计算机可读介质中,并且通过硬件中的一个或多个处理器执行这些指令,以实现本发明的技术。视频编码器20和视频解码器30可以分别包含在一个或多个编码器或解码器中,即任一者可以集成为相应设备中的组合编码器/解码器(编解码器,codec)的一部分。包括视频编码器20和/或视频解码器30的设备可以包括集成电路、微处理器和/或如蜂窝电话等无线通信设备。
图2为可以实现视频译码技术的一种示例性视频编码器20的框图。视频编码器20可以对视频条带(slice)内的视频块执行帧内编码和帧间编码。帧内编码依赖于空间预测来减少或去除给定视频帧或图像内的视频中的空间冗余。帧间编码依赖于时间预测来减少或去除视频序列的相邻帧或图像内视频中的时间冗余。帧内模式(I模式)可以指若干种基于空间的编码模式中的任一种。帧间模式,如单向预测(uni-directional/uniprediction)(P模式)或双向预测(bi-prediction/biprediction)(B模式),可以指若干种基于时间的编码模式中的任一种。
如图2所示,视频编码器20接收待编码视频帧内的当前视频块。在图2的示例中,视频编码器20包括模式选择单元40、参考帧存储器64、加法器50、变换处理单元52、量化单元54和熵编码单元56。模式选择单元40又包括运动补偿单元44、运动估计单元42、帧内预测(intra-prediction/intraprediction)单元46和分割单元48。为了重建视频块,视频编码器20还包括反量化单元58、逆变换单元60和加法器62。去块效应滤波器(图2中未示出)也包括在内,用于对块边界进行滤波,以便从重建视频中去除块效应。如果需要,去块效应滤波器通常用于对加法器62的输出进行滤波。除去块效应滤波器之外,还可以使用其它(环内或环后)滤波器。为了简洁起见,图中未示出此类滤波器,但是如果需要,此类滤波器(作为环内滤波器)可以对加法器50的输出进行滤波。
在编码过程中,视频编码器20接收待编码的视频帧或条带。该帧或条带可以划分为多个视频块。运动估计单元42和运动补偿单元44相对于一个或多个参考帧中的一个或多个块对接收到的视频块进行帧间预测编码,以提供时间预测。帧内预测单元46还可以相对于与待编码块位于同一帧或条带内的一个或多个相邻块对接收到的视频块进行帧内预测编码,以提供空间预测。视频编码器20可以执行多个编码过程,例如,以便为视频数据的每一个块选择适当的编码模式。
此外,分割单元48可以根据先前编码过程中对先前分割方案的评估将视频数据的块分割为子块。例如,分割单元48初始时可以将帧或条带分割为多个最大编码单元(largestcodingunit,LCU),并且根据率失真分析(例如,率失真优化)将每个LCU分割为多个子编码单元(sub-codingunit,sub-CU)。模式选择单元40可以进一步产生指示将LCU分割为多个子CU的四叉树数据结构。四叉树的叶节点CU可以包括一个或多个预测单元(predictionunit,PU)和一个或多个变换单元(transformunit,TU)。
本发明中使用术语“块”来指代HEVC上下文中的CU、PU或TU中的任一个或其它标准上下文中的类似数据结构(例如,H.264/AVC中的宏块及其子块)。CU包括编码节点、与编码节点关联的PU和TU。CU的大小与编码节点的大小相对应,呈正方形。CU的大小范围可以为8×8个像素到最大值为64×64个像素或更大的树块大小。每个CU可以包括一个或多个PU和一个或多个TU。例如,与CU关联的语法数据可以描述将CU分割为一个或多个PU。当在跳过模式或直接模式、帧内预测模式或帧间预测(inter-prediction/interprediction)模式下对CU进行编码时,分割模式可能有所不同。PU可以分割为非正方形的形状。例如,与CU关联的语法数据也可以描述根据四叉树将CU分割为一个或多个TU。TU可以是正方形或非正方形(例如,矩形)。
模式选择单元40可以根据误差结果等选择帧内或帧间编码模式中的一种,将所得到的帧内或帧间编码块提供给加法器50以生成残差块数据,并提供给加法器62来重建编码块以用作参考帧。模式选择单元40还将语法元素如运动矢量、帧内模式指示符、分割信息和其它此类语法信息等提供给熵编码单元56。
运动估计单元42和运动补偿单元44可以高度集成,但出于概念目的而分别进行说明。由运动估计单元42执行的运动估计是生成运动矢量的过程,这些运动矢量用于估计视频块的运动。例如,运动矢量可以表示当前视频帧或图像内的视频块的PU相对于参考帧(或其它编码单元)中的预测块的位移,所述参考帧(或其它编码单元)中的预测块是相对于当前帧(或其它编码单元)中的正被编码的当前块而言的。预测块为所找到的、在像素差方面与待编码块高度匹配的块,所述像素差可以通过绝对差和(sumofabsolutedifference,SAD)、平方差和(sumofsquaredifference,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可以用于使用深度建模模式(depthmodelingmode,DMM)对深度图的深度块进行编码。模式选择单元40可以判断可用DMM模式是否比帧内预测模式和其它DMM模式(例如,使用率失真优化(rate-distortionoptimization,RDO))产生更好的编码结果。与深度图对应的纹理图像的数据可以存储于参考帧存储器64中。运动估计单元42和运动补偿单元44还可以用于对深度图的深度块进行帧间预测。
为某块选择帧内预测模式(例如,传统的帧内预测模式或其中一个DMM模式)之后,帧内预测单元46可以将信息提供给熵编码单元56,其中,该信息用于表示为该块选择的帧内预测模式。熵编码单元56可以对表示所选择的帧内预测模式的信息进行编码。视频编码器20可以在所发送的码流中携带配置数据,所述配置数据可以包括多个帧内预测模式索引表和多个修改后的帧内预测模式索引表(也称为码字映射表),各种块的编码上下文的定义,待用于每个编码上下文的可能性最高的帧内预测模式、帧内预测模式索引表和修改后的帧内预测模式索引表的指示。
视频编码器20通过从正被编码的原始视频块中减去来自模式选择单元40的预测数据而形成残差视频块。加法器50表示执行该减法运算的一个或多个组件。
变换处理单元52对残差块应用如离散余弦变换(discretecosinetransform,DCT)或概念上类似的变换等变换,从而产生包括残差变换系数值的视频块。变换处理单元52可以执行概念上类似于DCT的其它变换,还可以应用小波变换、整数变换、子带变换或其它类型的变换。
变换处理单元52对残差块应用变换,从而产生具有残差变换系数的块。变换过程可以将残差信息从像素值域转换到变换域,例如频域。变换处理单元52可以将所得到的变换系数发送给量化单元54。量化单元54对变换系数进行量化以进一步降低码率。量化过程可以减小与部分或全部系数相关的位深度。量化程度可以通过调整量化参数来修改。然后,在一些示例中,量化单元54可以对包括量化变换系数的矩阵执行扫描。或者,熵编码单元56也可以执行扫描。
在量化之后,熵编码单元56对量化变换系数进行熵编码。例如,熵编码单元56可以执行上下文自适应可变长度编码(contextadaptivevariablelengthcoding,CAVLC)、上下文自适应二进制算术编码(contextadaptivebinaryarithmeticcoding,CABAC)、基于语法的上下文自适应二进制算术编码(syntax-basedcontext-adaptivebinaryarithmeticcoding,SBAC)、概率区间分割熵(probabilityintervalpartitioningentropy,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还可以用于对深度图的深度块进行帧间预测。
在一个实施例中,视频解码器30包括用户界面(userinterface,UI)84。用户界面84用于接收视频解码器30的用户(例如,网络管理员)的输入。通过用户界面84,用户能够管理或更改视频解码器30上的设置。例如,用户能够输入或以其它方式提供参数(例如,标志)的值,以便根据用户的偏好控制视频解码器30的配置和/或操作。例如,用户界面84可以是支持用户通过图形图标、下拉菜单、复选框等与视频解码器30交互的图形用户界面(graphicaluserinterface,GUI)。在一些情况下,用户界面84可以通过键盘、鼠标或其它外围设备从用户接收信息。在一个实施例中,用户能够通过智能手机、平板设备、远离视频解码器30的个人计算机等访问用户界面84。本文中所描述的用户界面84可以称为外部输入模块或外部模块。
考虑到上述情况,采用视频压缩技术执行空间(帧内)预测和/或时间(帧间)预测,以减少或去除视频序列中固有的冗余。对于基于块的视频译码,视频条带(即视频图像或视频图像的一部分)可以分割为多个视频块,所述多个视频块还可以称为树块、译码树块(codingtreeblock,CTB)、译码树单元(codingtreeunit,CTU)、译码单元(codingunit,CU)和/或编码节点。图像的帧内编码(I)条带中的视频块是针对同一图像的相邻块的参考样本使用空间预测进行编码的。图像的帧间编码(P或B)条带中的视频块可以是针对同一图像的相邻块的参考样本使用空间预测,或者是针对其它参考图像的参考样本使用时间预测。图像可以称为帧,参考图像可以称为参考帧。
空间预测或时间预测用于为待编码块产生预测块。残差数据表示待编码的原始块与预测块之间的像素差。帧间编码块根据运动矢量和残差数据进行编码,所述运动矢量指向组成所述预测块的参考样本的块,所述残差数据表示所述编码块与所述预测块之间的差值。帧内编码块根据帧内编码模式和残差数据进行编码。为了进一步进行压缩,所述残差数据可以从像素域变换到变换域,从而产生可以再进行量化的残差变换系数。量化变换系数最初以二维阵列排列,并且可以扫描,以产生变换系数的一维矢量。熵编码可以用于实现进一步压缩。
图像和视频压缩技术发展迅速,由此产生了各种编码标准。此类视频编码标准包括ITU-TH.261、国际标准化组织/国际电工委员会(InternationalOrganizationforStandardization/InternationalElectrotechnicalCommission,ISO/IEC)MPEG-1第2部分、ITU-TH.262或ISO/IECMPEG-2第2部分、ITU-TH.263、ISO/IECMPEG-4第2部分,高级视频编码(AdvancedVideoCoding,AVC)(也称为ITU-TH.264或ISO/IECMPEG-4第10部分),以及高效视频编码(HighEfficiencyVideoCoding,HEVC)(也称为ITU-TH.265或MPEG-H第2部分)。AVC包括可分级的视频编码(ScalableVideoCoding,SVC)、多视图视频编码(MultiviewVideoCoding,MVC)和多视图视频编码加深度(MultiviewVideoCodingplusDepth,MVC+D)以及3DAVC(3D-AVC)等扩展版。HEVC包括可分级的HEVC(ScalableHEVC,SHVC)、多视图HEVC(MultiviewHEVC,MV-HEVC)以及3DHEVC(3D-HEVC)等扩展版。
通用视频编码(VersatileVideoCoding,VVC)是ITU-T和ISO/IEC的联合视频专家组(jointvideoexpertsteam,JVET)正在开发的一种新视频编码标准。虽然VVC标准有若干个工作草案,其中一个VVC工作草案(workingdraft,WD)(草案5),即B.Bross,J.Chen和S.Liu在2019年3月27日第13次JVET会议上的提案“通用视频编码(草案5)”JVET-N1001-v3的全部内容通过引用结合在本文中。
本文中所公开的技术的说明是基于ITU-T和ISO/IEC的联合视频专家组(jointvideoexpertsteam,JVET)正在开发的视频编码标准,即通用视频编码(versatilevideocoding,VVC)。然而,这些技术还适用于其它视频编解码规范。
下文将描述HEVC中的图像分割方案。
HEVC包括四种不同的图像分割方案,即常规条带、相关条带、分块(tile)和波前并行处理(WavefrontParallelProcessing,WPP)。这些方案可以应用于最大传输单元(MaximumTransferUnit,MTU)的大小匹配、并行处理和降低端到端时延。
HEVC中的常规条带与H.264/AVC中的类似。每个常规条带都封装在自身的网络抽象层(networkabstractionlayer,NAL)单元中,且禁用帧内预测(帧内样本预测、运动信息预测、编码模式预测)和跨条带边界的熵译码依赖性。因此,常规条带可以不依赖于同一个图像内的其它常规条带进行重建(但是由于存在循环滤波操作,所以仍然可能存在相互依赖性)。
常规条带为可用于进行并行化的唯一工具,它在H.264/AVC中也以几乎相同的形式存在。基于常规条带的并行化不需要太多的处理器间或核间通信(除对经预测编码图像进行解码时针对运动补偿进行处理器间或核间数据共享的情况之外,这种情况与因帧内预测而进行的处理器间或核间数据共享的情况相比通常需要更多的通信)。然而,出于同样的原因,使用常规条带时可能会由于条带头的比特成本以及缺乏跨条带边界的预测而产生大量译码开销。此外,由于常规条带具有帧内独立性以及每个常规条带都封装在自身的NAL单元中,因此,常规条带(与下文提到的其它工具相比)还用作进行码流分割的关键机制,以用于匹配MTU大小需求。在许多情况下,由于要实现并行化和MTU大小匹配的目标,因此,对图像内的条带布局提出了互相矛盾的要求,所以实现这种情况需要开发下文提到的并行化工具。
相关条带具有缩短的条带头,并且支持在不中断任何帧内预测的情况下在树块边界处分割码流。基本上,相关条带将常规条带分割为多个NAL单元,通过在完成整个常规条带的编码之前发送常规条带的一部分,以降低端到端时延。
在WPP中,将图像分割为单行译码树块(codingtreeblock,CTB)。熵解码和预测中可以使用来自其它分割部分的CTB的数据。通过对CTB行进行并行解码,可以进行并行处理,其中,对CTB行的解码的开始时间会有两个CTB时延。这种时延确保了在对当前CTB进行解码之前,与当前CTB上方和右侧的CTB相关的数据是可用的。采用这种交错开始的方法(用图形表示时,这种方法表现为一种波前),如果图像包括CTB行,可以支持尽可能多的处理器/核进行并行处理。由于支持在图像内的相邻树块行之间进行帧内预测,所以可能需要进行大量的处理器/核间通信来实现帧内预测。与不使用WPP分割的情况相比,使用WPP分割不会产生额外的NAL单元。因此,WPP不是进行MTU大小匹配的工具当进行MTU大小匹配时,常规条带可以与WPP结合使用,然而这需要一定的译码开销。
分块定义了用于将图像分割为分块的列和行的水平和垂直边界。在按照图像的分块光栅扫描顺序对下一个分块中的左上CTB进行解码之前,CTB的扫描顺序更改为在分块内部进行(按分块的CTB光栅扫描顺序)。与常规条带类似,分块去除了对帧内预测和熵解码的依赖。但是,这些分块可以不包含在各个独立NAL单元中(在这方面与WPP相同),因此,分块可以不用于进行MTU大小匹配。每个分块可以由一个处理器/核进行处理。在条带跨越多个分块的情况下,解码相邻分块的处理单元之间的帧内预测所需的处理器间/核间通信仅限于发送共享的条带头、以及共享与环路滤波相关的重建样本和元数据。当一个条带中包括多个分块或WPP分段时,在条带头中指示除条带中的第一个分块或WPP分段之外的每个分块或WPP分段的入口点字节偏移。
为了简化,HEVC中对四种不同的图像分割方案的应用作了限制。给定的经编码视频序列不能同时包括分块和HEVC中规定的大多数配置文件(profile)的波前。对于每个条带和分块,应满足以下任一条件或同时满足以下两个条件:(1)条带中的所有译码树块属于同一个分块;(2)分块中的所有译码树块属于同一个条带。最后,波前分段仅包括一个CTB行,当进行WPP时,如果一个条带从一CTB行开始,则该条带必须在同一CTB行结束。
下文将描述VVC中的图像分割方案。
如上所述,HEVC包括四种不同的图像分割方案,即条带、分块、砖块(brick)和波前并行处理(WavefrontParallelProcessing,WPP)。这些方案可以应用于最大传输单元(MaximumTransferUnit,MTU)大小匹配、并行处理和降低端到端时延。
VVC中的分块与HEVC中的分块类似。分块定义了用于将图像分割为分块的列和行的水平和垂直边界。在VVC中,通过对分块进行进一步的水平划分以形成砖块,从而进一步改进了分块的概念。未进一步划分的分块也可以视为砖块。在按照图像的砖块光栅扫描顺序对下一个砖块中的左上CTB进行解码之前,CTB的扫描顺序更改为在砖块内部进行(按砖块的CTB光栅扫描顺序)。
VVC中的条带包括一个或多个砖块。每个条带都封装在自身的NAL单元中,且禁用帧内预测(帧内样本预测、运动信息预测、编码模式预测)和跨条带边界的熵译码依赖性。因此,常规条带可以不依赖于同一个图像内的其它常规条带进行重建(但是由于存在循环滤波操作,所以仍然可能存在相互依赖性)。VVC定义了两种条带,分别是:矩形条带和光栅扫描条带。矩形条带包括一个或多个占据图像中的矩形区域的砖块。光栅扫描条带包括一个或多个在图像中按砖块光栅扫描顺序排列的砖块。
VVC中的WPP特征与HEVC中的WPP特征类似,不同的是,HEVCWPP有两个CTU时延,而VVCWPP只有一个CTU时延。对于HEVCWPP,新的解码线程可以在前一个CTU行中的前两个CTU被解码之后开始解码为其分配的CTU行中的第一个CTU。另一方面,对于VVCWPP,新的解码线程可以在前一个CTU行中的第一个CTU被解码之后开始解码为其分配的CTU行中的第一个CTU。
下文将描述矩形条带的指示。
通过描述图像中矩形条带的数量,在图像参数集(pictureparameterset,PPS)中指示矩形条带的结构。为每个条带指示左上砖块索引的集合和用于推导右下砖块索引的增量值,以描述条带在图像中的位置及其大小(即,以砖块为单位)。对于光栅扫描条带,其信息通过光栅扫描条带中的第一个砖块的索引和该条带中的砖块数量在条带头中进行指示。
以下所示的PPS语法表部分包括用于描述指示PPS中的分块、砖块和矩形条带信息的语法元素。
Figure BDA0003332606330000141
Figure BDA0003332606330000151
Figure BDA0003332606330000161
single_brick_per_slice_flag等于1,表示参考此PPS的每个条带包括一个砖块;single_brick_per_slice_flag等于0,表示参考此PPS的条带可以包括多个砖块。当single_brick_per_slice_flag的值不存在时,则推断该值等于1。
rect_slice_flag等于0,表示每个条带中的砖块按光栅扫描顺序排列,并且不在PPS中指示条带信息;rect_slice_flag等于1,表示每个条带中的砖块覆盖图像的矩形区域,并且在PPS中指示条带信息。当single_brick_per_slice_flag等于1时,则推断rect_slice_flag等于1。
num_slices_in_pic_minus1加1,表示参考PPS的每个图像中的条带数。num_slices_in_pic_minus1的值应当在0至NumBricksInPic–1(包括首尾值)范围内。当num_slices_in_pic_minus1的值不存在且single_brick_per_slice_flag等于1时,则推断num_slices_in_pic_minus1的值等于NumBricksInPic–1。
top_left_brick_idx[i]表示位于第i个条带左上角的砖块的砖块索引。对于不等于j的任何i,top_left_brick_idx[i]的值不应等于top_left_brick_idx[j]的值。当top_left_brick_idx[i]的值不存在时,则推断该值等于i。top_left_brick_idx[i]语法元素的长度为Ceil(Log2(NumBricksInPic))比特。
bottom_right_brick_idx_delta[i]表示位于第i个条带右下角的砖块的砖块索引与top_left_brick_idx[i]之间的差值。当single_brick_per_slice_flag等于1时,则推断bottom_right_brick_idx_delta[i]的值等于0。bottom_right_brick_idx_delta[i]语法元素的长度为Ceil(Log2(NumBricksInPic–top_left_brick_idx[i]))比特。
码流一致性的要求是,条带应当包括多个完整分块,或仅包括一个分块中完整砖块的连续序列。
变量NumBricksInSlice[i]和BricksToSliceMap[j]分别表示第i个条带中的砖块数量和砖块到条带的映射,推导如下:
Figure BDA0003332606330000162
Figure BDA0003332606330000171
下文将描述VVC中WPP的指示。
VVC中WPP的指示方法在语法表和PPS、条带头和条带数据的语义中进行描述。
PPS中称作entropy_coding_sync_enabled_flag的标志表示WPP是否用于对参考该PPS的图像进行编码,如下述PPS语法表部分所示。
Figure BDA0003332606330000172
当启用WPP对图像进行编码时,该图像的所有条带的条带头包括入口点的信息(即,从条带载荷数据开始的偏移),其中,入口点用于访问CTU行的每个子集,以便根据WPP方法进行处理。对该信息的指示如下述条带头语法表部分所示。
Figure BDA0003332606330000173
当WPP被启用时,每个CTU行被称为条带数据载荷中的数据子集。在每个数据子集的结束处,对由end_of_subset_one_bit表示的一个比特进行指示,表示数据子集的结束。此外,为了确保数据子集的大小为一个字节(即,8比特)的倍数,可以进行字节对齐,以在每个数据子集的结束处添加字节对齐比特。对end_of_subset_one_bit的指示以及在每个子集结束的字节对齐如下述条带数据语法表所示。
Figure BDA0003332606330000174
Figure BDA0003332606330000181
下文将描述WPP和砖块的一些问题。
首先,当一个条带包括多个砖块,并且启用WPP对包括该条带的图像进行编码时,条带中每个砖块的每个CTU行都是一个数据子集。在每个数据子集的结束处指示语法元素end_of_subset_one_bit,表示CTU行的结束,或者在每个数据子集的结束处指示语法元素end_of_brick_one_bit,表示砖块的CTU的结束。但是,没有必要同时指示这两个语法元素。同样,应在每个数据子集的结束处执行字节对齐,但是没有必要重复执行字节对齐。
当分块、砖块和WPP一起使用时,考虑到条带可能包括一个或多个分块,而且每个分块可能包括一个或多个砖块,因此,WPP的实现可能会更加复杂。
为了解决上述问题,本发明提供了以下方面(每个方面可以单独应用,或者一些方面可以组合应用)。
第一解决方案包括一种对视频码流进行解码的方法。在一个实施例中,该视频码流包括至少一个包括多个条带的图像,多个条带中的每个条带包括多个砖块,多个砖块中的每个砖块包括多个译码树块(codingtreeblock,CTU)。该方法包括:解析参数集,以确定是否为当前图像和/或当前条带启用波前并行处理。该方法包括解析当前条带的条带数据,以获得多个砖块以及每个砖块中的CTU。该方法还包括:解析当前CTU,其中,当前CTU在砖块内;确定当前CTU的位置。此外,该方法包括:在满足以下所有条件时,指示一个比特,用于表示该CTU行的结束,并指示字节对齐比特:已启用WPP对当前条带进行编码,当前CTU不是当前砖块的最后一个CTU;按砖块的解码顺序的下一个CTU不是当前砖块中的一个CTU行的第一个CTU。该方法包括:当前CTU是当前砖块中的最后一个CTU时,指示一个比特,用于表示砖块的结束;当前砖块是当前砖块中的最后一个CTU,但不是当前条带的最后一个CTU时,指示字节对齐比特。
第二解决方案包括一种对视频码流进行编码的方法。该视频码流包括至少一个包括多个条带的图像,多个条带中的每个条带包括多个分块和砖块,每个分块包括一个或多个砖块。该方法包括:当启用WPP对当前图像进行编码时,限制当前图像的每个条带仅包括一个分块,并且限制每个分块仅包括一个砖块。
第二解决方案的替代方案包括一种对视频码流进行编码的方法。该视频码流包括至少一个包括多个条带的图像,多个条带中的每个条带包括多个分块和砖块,每个分块包括一个或多个砖块。该方法包括:当启用WPP对当前图像进行编码时,限制当前图像的每个分块仅包括一个砖块。即,当entropy_coding_sync_enabled_flag的值等于1时,brick_splitting_present_flag的值应等于0。
第二解决方案的替代方案包括一种对视频码流进行编码的方法。该视频码流包括至少一个包括多个条带的图像,多个条带中的每个条带包括多个分块和砖块,每个分块包括一个或多个砖块。该方法包括:当启用WPP对当前图像进行编码时,限制当前图像的每个条带仅包括一个砖块。即,当entropy_coding_sync_enabled_flag的值等于1时,变量NumBricksInCurrSlice的值应等于1。
图4示出了一种用于实现WPP450的视频码流400。本文中所描述的视频码流400也可以称为经编码视频码流、码流或其变体。如图4所示,码流400包括序列参数集(sequenceparameterset,SPS)402、图像参数集(pictureparameterset,PPS)404、条带头406和图像数据408。
SPS402包括图像序列(sequenceofpicture,SOP)中的所有图像共有的数据,而PPS404包括整个图像共有的数据。条带头406包括当前条带的信息,例如条带类型、要使用的参考图像等。SPS402和PPS404可以统称为参数集。SPS402、PPS404和条带头406是网络抽象层(NetworkAbstractionLayer,NAL)单元类型。NAL单元是一种语法结构,包括要遵循的数据类型(例如,经编码视频数据)的指示。NAL单元分为视频编码层(videocodinglayer,VCL)NAL单元和非视频编码层NAL(non-VCLNAL)单元。VCLNAL单元包括表示视频图像中的样本的值的数据,非VCLNAL单元包括任何关联的附加信息,例如参数集(可以应用于大量VCLNAL单元的重要条带头数据)和补充增强信息(定时信息和其它补充数据,其中,该补充数据可以增强解码后的视频信号的可用性,但它不是解码视频图像中的样本的值所必需的)。本领域技术人员应理解,码流400在实际应用中可以包括其它参数和信息。
图4所示的图像数据408包括与正被编码或解码的图像或视频关联的数据。图像数据408可以简单地称为码流400中携带的载荷或数据。图像数据408可以被分割为一个或多个图像,例如图像410、图像412和图像414。虽然图4中示出了三个图像410-414,但在实际应用中可以存在更多或更少的图像。
在一个实施例中,图像410-414分别被分割为条带,例如条带416、条带418和条带420。虽然图中示出了三个条带(例如,条带416-420),但在实际应用中可以存在更多或更少的条带。在一个实施例中,条带416-420分别被分割为分块,例如分块422、分块424和分块426。虽然图中示出了三个分块(例如,分块422-426),但在实际应用中可以存在更多或更少的分块。在一个实施例中,分块422-426分别被划分为CTB,例如CTB428和CTB430。虽然图中示出了40个CTB(例如CTB428和CTB430),但在实际应用中可以存在更多或更少的CTB。
WPP450可以用于编码和/或解码条带(例如,条带416-420)。因此,WPP450可以由编码器(例如,上述视频编码器20)或解码器(例如,上述视频解码器30)使用。
在一个实施例中,WPP450应用于分块424,该分块424是对条带416进行分割得到的,而该条带416是对图像410进行分割得到的。该分块包括多个CTB,例如CTB428和CTB430。每个CTB(例如CTB428或CTB430)是一组具有预定义大小的样本,可以按译码树分割为译码块。多个CTB428和多个CTB430可以排列成CTB行460、462、464、466和468以及CTB列470、472、474、476、478、480,482和484。CTB行460-468是一组CTB428和CTB430,其在分块424的左边界和分块424的右边界之间水平延伸。CTB列470-484是一组CTB428和CTB430,其在分块424的上边界和分块424的下边界之间垂直延伸。在一个实施例中,WPP450应用于条带(例如,条带416)而非应用于分块(例如,分块424)。即,在一些实施例中,分块是可选的。
WPP450可以使用多个计算线程并行操作,以对CTB428和CTB430进行编码。在所示的示例中,CTB428(阴影部分)已进行编码,而CTB430(非阴影部分)尚未进行编码。例如,第一线程可以在第一时间开始对CTB行460进行编码。在VVC中,在一个CTB428已经在第一CTB行460中进行编码后,第二线程可以开始对CTB行462进行编码。在一个CTB428已经在第二CTB行462中进行编码后,第三线程可以开始对CTB行464进行编码。在一个CTB428已经在第三CTB行464中进行编码后,第四线程可以开始对CTB行466进行编码。在一个CTB428已经在第四CTB行466中进行编码后,第五线程可以开始对第五CTB行468进行编码。因此形成如图4所示的图案。其它线程可以根据需要使用。换句话说,在前一行中的CTB已进行编码后,可以重复开启新CTB行的编码过程。这种机制形成了一种具有波前外观的图案,因此命名为WPP450。一些视频编码机制是根据位于当前CTB430的上方或左侧的经编码CTB428对当前CTB430进行编码。在VVC中,WPP450在启动各个线程之间具有一个CTB430编码时延,从而确保在对任何待编码的当前CTB430进行编码时已对CTB428进行编码。在HEVC中,WPP450在启动各个线程之间具有两个CTB430编码时延,从而确保在对任何待编码的当前CTB430进行编码时已对CTB428进行编码。
CTB428被编码到CTB行460-468中的码流(例如,码流400)中。因此,每个CTB行460-468可以是码流400中的分块424的独立可寻址子集。例如,每个CTB行460-468可以在入口点486处进行寻址。入口点486是对分块424进行编码之后在码流400中的比特位置,其中,该码流400包括用于该分块424的对应子集的视频数据的第一比特。当采用WPP450时,入口点486是包括对应各个CTB行460-468的第一比特的比特位置。因此,入口点的数量(NumEntryPoints)488是用于CTB行460-468的入口点486的数量。
以图4中的分块424为例。在WPP中,编码器在每个CTB行460-468的结束处添加CTB行结束比特。CTB行结束比特用于向解码器指示CTB行460-468的结束。然后,编码器执行字节对齐,以添加字节对齐比特作为填充。此外,在WPP中,编码器还在CTB行468的结束处添加分块结束比特。分块结束比特用于向解码器指示分块424的结束。然后,编码器执行字节对齐,以添加字节对齐比特作为填充。由于CTB行468的结束也是分块424的结束,在WPP中,在编码完CTB行468中的最后一个CTB430之后,编码器对CTB行结束比特和分块结束比特进行编码,并执行两次字节对齐。因此,WPP中会重复进行指示和字节对齐。
本文公开了防止在WPP中重复进行指示和字节对齐的技术。通过消除WPP中重复进行的指示和字节对齐,从而减少了用于指示分块结束的比特数以及用作填充的比特数。由于减少了WPP中所需的比特数,因此,视频译码中的编码器/解码器(又称为“编解码器codec”)相对于现有的编解码器有所改进。实际上,改进的视频译码过程在发送、接收和/或观看视频时提供了更好的用户体验。
与上文描述的WPP不同,本发明仅在对CTB行468中的最后一个CTB430进行编码之后指示分块结束比特并执行一次字节对齐。这样,相对于WPP,减少了用于指示的比特数以及用作填充的比特数。
图5示出了一种由视频解码器(例如,上述视频解码器30)实现的对经编码视频码流进行解码的方法500的实施例。该方法500可以在从视频编码器(例如,上述视频编码器20)直接或间接地接收到经解码码流之后执行。方法500通过减少用于指示的比特数以及在对分块(例如,分块424)的最后一个CTB行(例如,CTB行468)的最后一个CTB(例如,CTB430)进行编码之后用作填充的比特数,来改进解码过程。因此,这样实际上提高了编解码器的性能,从而使得用户体验更好。
步骤502:视频解码器接收经编码视频码流(例如,码流400)。在一个实施例中,经编码视频码流包括图像(例如,图像410)。在一个实施例中,图像包括具有一个或多个分块(例如,分块422-426)的一个或多个条带(例如,条带416-420)。在一个实施例中,每个分块包括多个译码树块(例如,CTB428和CTB430)。
步骤504:视频解码器在所述经编码视频码流中获得具有第一值的分块结束比特和字节对齐比特。在一个实施例中,分块结束比特由end_of_tile_one_bit表示。在一个实施例中,第一值为1(1)。在一个实施例中,字节对齐比特是编码器(例如,上述视频编码器20)执行比特对齐过程的结果。在一个实施例中,具有第一值的分块结束比特和字节对齐比特用于表示多个CTB(例如,CTB428和CTB430)中的当前CTB(例如,CTB430)是一个分块(例如,分块424)中的最后一个CTB。
步骤506:视频解码器在所述编码视频码流中获得第一值的CTB行结束比特和字节对齐比特。在一个实施例中,CTB行结束比特由end_of_subset_bit表示。在一个实施例中,第一值为1(1)。在一个实施例中,字节对齐比特是编码器(例如,上述视频编码器20)执行比特对齐过程的结果。在一个实施例中,具有第一值的CTB行结束比特和字节对齐比特用于表示WPP被启用,并表示多个CTB(例如,CTB428和CTB430)中的当前CTB(例如,CTB430)是CTB行(例如,CTB行460-466)中的最后一个CTB,但不是所述分块(例如,分块424)中的最后一个CTB。
步骤508:视频解码器根据具有第一值的分块结束比特、具有第一值的CTB行结束比特和字节对齐比特,重建所述分块中的多个CTB。在一个实施例中,根据重建的多个CTB生成一个图像。在一个实施例中,可以在电子设备(例如,智能手机、平板电脑、笔记本电脑、个人计算机等)上向用户显示该图像。
图6示出了一种由视频编码器(例如,上述视频编码器20)实现的对视频码流进行编码的方法600的实施例。该方法600可以在需要将图像(例如,来自视频)编码到视频码流并发送到视频解码器(例如,上述视频解码器30)时执行。该方法600通过减少用于指示的比特数以及在对分块(例如,分块424)的最后一个CTB行(例如,CTB行468)的最后一个CTB(例如,CTB430)进行编码之后用作填充的比特数,来改进编码过程。因此,这样实际上提高了编解码器的性能,从而使得用户体验更好。
步骤602:视频编码器将图像(例如,图像410)分割为一个或多个条带(例如,条带416-420)。在一个实施例中,每个条带包括一个或多个分块(例如,分块422-426)。在一个实施例中,每个分块包括多个译码树块(例如,CTB428和CTB430)。
步骤604:当多个CTB中的当前CTB是一个分块中的最后一个CTB时,视频编码器将具有第一值的分块结束比特和字节对齐比特编码到视频码流中。在一个实施例中,分块结束比特由end_of_tile_one_bit表示。在一个实施例中,第一值为1(1)。在一个实施例中,字节对齐比特是编码器(例如,上述视频编码器20)执行比特对齐过程的结果。在一个实施例中,具有第一值的分块结束比特和字节对齐比特用于表示多个CTB(例如,CTB428和CTB430)中的当前CTB(例如,CTB430)是一个分块(例如,分块424)中的最后一个CTB。
步骤606:当WPP被启用,并且当前CTB是CTB行中的最后一个CTB,但不是所述分块中的最后一个CTB时,视频编码器将具有第一值的CTB行结束比特和字节对齐比特编码到所述视频码流中。在一个实施例中,CTB行结束比特由end_of_subset_bit表示。在一个实施例中,第一值为1(1)。在一个实施例中,字节对齐比特是编码器(例如,上述视频编码器20)执行比特对齐过程的结果。在一个实施例中,具有第一值的CTB行结束比特和字节对齐比特用于表示WPP被启用,并表示多个CTB(例如,CTB428和CTB430)中的当前CTB(例如,CTB430)是CTB行(例如,CTB行460-466)中的最后一个CTB,但不是所述分块(例如,分块424)中的最后一个CTB。
步骤608:视频编码器存储所述视频码流,以发送到视频解码器。在一个实施例中,视频编码器向视频解码器发送所述视频码流。
以下语法和语义可以用于实现本文公开的实施例。以下描述是相对于基础文本展开的,该基础文本是指最新的VVC草案规范。换句话说,下文中只描述了新增部分,而基础文本中的文本则按原样适用,并未在下文中提及。相对于基础文本而新增的文本则以粗体形式显示,删除的文本则以斜体形式显示。
图7为本发明实施例提供的一种视频译码设备700(例如,上述视频编码器20或上述视频解码器30)的示意图。该视频译码设备700适用于实现本文所描述的公开实施例。该视频译码设备700包括:入端口710和接收单元(Rx)720,用于接收数据;处理器、逻辑单元或中央处理单元(centralprocessingunit,CPU)730,用于处理数据;发送单元(Tx)740和出端口750,用于发送数据;存储器760,用于存储数据。该视频译码设备700还可以包括光电(optical-to-electrical,OE)组件和电光(electrical-to-optical,EO)组件,耦合到入端口710、接收单元720、发送单元740和出端口750,作为光信号或电信号的出口或入口。
处理器730通过硬件和软件实现。处理器730可以实现为一个或多个CPU芯片、核(例如作为多核处理器)、现场可编程门阵列(field-programmablegatearray,FPGA)、专用集成电路(application-specificintegratedcircuit,ASIC)和数字信号处理器(digitalsignalprocessor,DSP)。处理器730与入端口710、接收单元720、发送单元740、出端口750和存储器760进行通信。处理器730包括译码模块770。该译码模块770实现上述公开实施例。例如,该译码模块770实现、处理、准备或提供各种编解码功能。因此,将该译码模块770包括在内,这实质性地改进了视频译码设备700的功能,并且对视频译码设备700转换到不同状态产生影响。可替换地,该译码模块770实现为存储在存储器760中并由处理器730执行的指令。
该视频译码设备700还可以包括用于与用户进行数据交换的输入和/或输出(I/O)设备780。I/O设备780可以包括输出设备,例如用于显示视频数据的显示器、用于输出音频数据的扬声器等。I/O设备780还可以包括输入设备,例如键盘、鼠标、轨迹球等,和/或用于与这些输出设备交互的对应接口。
存储器760包括一个或多个硬盘、磁带驱动器和固态硬盘,可以用作溢出数据存储设备,以在选择用于执行的程序时存储此类程序,以及存储在程序执行期间读取的指令和数据。存储器760可以是易失性的和/或非易失性的,可以是只读存储器(read-onlymemory,ROM)、随机存取存储器(randomaccessmemory,RAM)、三态内容寻址存储器(ternarycontent-addressablememory,TCAM)和/或静态随机存取存储器(staticrandomaccessmemory,SRAM)。
图8为一种译码模块800的实施例的示意图。在一个实施例中,译码模块800在视频译码设备802(例如,上述视频编码器20或上述视频解码器30)中实现。该视频译码设备802包括接收模块801。接收模块801用于接收图像进行编码或接收码流进行解码。该视频译码设备802包括发送模块807,耦合到接收模块801。发送模块807用于将码流发送到解码器或将经解码图像发送到显示模块(例如,上述I/O设备780中的一个)。
该视频译码设备802包括存储模块803。存储模块803耦合到接收模块801或发送模块807中的至少一个。存储模块803用于存储指令。该视频译码设备802还包括处理模块805。处理模块805耦合到存储模块803。处理模块805用于执行存储在存储模块803中的指令,以执行本文中所公开的方法。
还应当理解,本文中阐述的示例性方法的步骤不一定需要按照所描述的顺序执行,并且这些方法的步骤的顺序应理解为仅仅是示例性的。同样地,在与本发明各种实施例相一致的方法中,这些方法可以包括其它步骤,并且某些步骤可以省略或组合。
虽然本发明提供了若干个实施例,但应当理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可能通过其它多种具体形式体现。本发明的示例将被认为是说明性的而非限制性的,并不旨在受限于本文中所描述的详细内容。例如,各种元件或组件可以组合或集成在另一个系统中,或者一些特征可以省略或不实施。
此外,在不脱离本发明范围的情况下,各种实施例中描述和说明为独立或分离的技术、系统、子系统和方法可以与其它系统、模块、技术或方法组合或集成。展示或描述为彼此耦合或直接耦合或者互相通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。本领域技术人员在不脱离本文所公开的精神和范围的情况下可以确定出其它变化、替换和更改的示例。

Claims (23)

1.一种由视频解码器实现的解码方法,其特征在于,所述方法包括:
所述视频解码器接收经编码视频码流,其中,所述经编码视频码流包括图像,所述图像包括具有一个或多个分块(tile)的一个或多个条带(slice),每个分块包括多个译码树块(codingtreeblock,CTB);
所述视频解码器在所述经编码视频码流中获得具有第一值的分块结束比特和字节对齐比特,其中,所述具有第一值的分块结束比特和所述字节对齐比特用于表示所述多个CTB中的当前CTB是一个分块中的最后一个CTB;
所述视频解码器在所述经编码视频码流中获得具有所述第一值的CTB行结束比特和所述字节对齐比特,其中,所述具有第一值的CTB行结束比特和所述字节对齐比特用于表示波形并行处理(waveformparallelprocessing,WPP)被启用,并表示所述多个CTB中的所述当前CTB是CTB行中的最后一个CTB,但不是所述分块中的最后一个CTB;
所述视频解码器根据所述具有第一值的分块结束比特、所述具有第一值的CTB行结束比特和所述字节对齐比特,重建所述分块中的所述多个CTB。
2.根据权利要求1所述的方法,其特征在于,所述分块结束比特由end_of_tile_one_bit表示。
3.根据权利要求1和2中任一项所述的方法,其特征在于,所述CTB行结束比特由end_of_subset_bit表示。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述WPP通过设置在参数集中的标志进行启用。
5.根据权利要求4所述的方法,其特征在于,所述WPP通过表示为entropy_coding_sync_enabled_flag的标志进行启用。
6.根据权利要求4所述的方法,其特征在于,当所述WPP被启用时,所述第一值为1(1)。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:显示根据重建的所述多个CTB生成的一个图像。
8.一种由视频编码器实现的编码方法,其特征在于,所述方法包括:
所述视频编码器将图像分割为一个或多个条带,其中,每个条带(slice)包括一个或多个分块(tile),每个分块包括多个译码树块(codingtreeblock,CTB);
当所述多个CTB中的当前CTB是一个分块中的最后一个CTB时,所述视频编码器将具有第一值的分块结束比特和字节对齐比特编码到视频码流中;
当波形并行处理(waveformparallelprocessing,WPP)被启用,并且所述当前CTB是CTB行中的最后一个CTB,但不是所述分块中的最后一个CTB时,所述视频编码器将具有所述第一值的CTB行结束比特和所述字节对齐比特编码到所述视频码流中;
所述视频编码器存储所述视频码流,以发送到视频解码器。
9.根据权利要求8所述的方法,其特征在于,所述分块结束比特由end_of_tile_one_bit表示。
10.根据权利要求8和9中任一项所述的方法,其特征在于,所述CTB行结束比特由end_of_subset_bit表示。
11.根据权利要求8至10中任一项所述的方法,其特征在于,所述WPP通过设置在参数集中的标志进行启用。
12.根据权利要求11所述的方法,其特征在于,所述WPP通过表示为entropy_coding_sync_enabled_flag的标志进行启用。
13.根据权利要求11所述的方法,其特征在于,当所述WPP被启用时,所述第一值为1(1)。
14.根据权利要求8所述的方法,其特征在于,所述方法还包括:向所述视频解码器发送所述视频码流。
15.一种解码设备,其特征在于,所述解码设备包括:
接收器,用于接收经编码视频码流;
存储器,耦合到所述接收器,其中,所述存储器存储指令;
处理器,耦合到所述存储器,其中,所述处理器用于执行所述指令,使得所述解码设备执行以下操作:
接收所述经编码视频码流,其中,所述经编码视频码流包括图像,所述图像包括具有一个或多个分块(tile)的一个或多个条带(slice),每个分块包括多个译码树块(codingtreeblock,CTB);
在所述经编码视频码流中获得具有第一值的分块结束比特和字节对齐比特,其中,所述具有第一值的分块结束比特和所述字节对齐比特用于表示所述多个CTB中的当前CTB是一个分块中的最后一个CTB;
在所述经编码视频码流中获得具有所述第一值的CTB行结束比特和所述字节对齐比特,其中,所述具有第一值的CTB行结束比特和所述字节对齐比特用于表示波形并行处理(waveformparallelprocessing,WPP)被启用,并表示所述多个CTB中的所述当前CTB是CTB行中的最后一个CTB,但不是所述分块中的最后一个CTB;
根据所述具有第一值的分块结束比特、所述具有第一值的CTB行结束比特和所述字节对齐比特,重建所述分块中的所述多个CTB。
16.根据权利要求15所述的解码设备,其特征在于,所述分块结束比特由end_of_tile_one_bit表示,所述CTB行结束比特由end_of_subset_bit表示,所述第一值为1。
17.一种编码设备,其特征在于,所述编码设备包括:
存储器,所述存储器存储指令;
处理器,耦合到所述存储器,其中,所述处理器用于执行所述指令,使得所述编码设备执行以下操作:
将图像分割为一个或多个条带(slice),其中,每个条带包括一个或多个分块(tile),每个分块包括多个译码树块(codingtreeblock,CTB);
当所述多个CTB中的当前CTB是一个分块中的最后一个CTB时,将具有第一值的分块结束比特和字节对齐比特编码到视频码流中;
当波形并行处理(waveformparallelprocessing,WPP)被启用,并且所述当前CTB是CTB行中的最后一个CTB,但不是所述分块中的最后一个CTB时,将具有所述第一值的CTB行结束比特和所述字节对齐比特编码到所述视频码流中;
存储所述视频码流,以发送到视频解码器。
18.根据权利要求17所述的编码设备,其特征在于,所述编码设备还包括发送器,其中,所述发送器耦合到所述处理器,并用于向所述视频解码器发送所述视频码流。
19.根据权利要求17和18所述的编码设备,其特征在于,所述分块结束比特由end_of_tile_one_bit表示,所述CTB行结束比特由end_of_subset_bit表示,所述第一值为1。
20.一种译码装置,其特征在于,所述译码装置包括:
接收器,用于接收图像进行编码或接收码流进行解码;
发送器,耦合到所述接收器,其中,所述发送器用于将所述码流发送到解码器或将经解码图像发送到显示器;
存储器,耦合到所述接收器或所述发送器中的至少一个,其中,所述存储器用于存储指令;
处理器,耦合到所述存储器,其中,所述处理器用于执行存储在所述存储器中的所述指令,以执行根据权利要求1至7以及权利要求8至14中任一项所述的方法。
21.根据权利要求20所述的译码装置,其特征在于,所述译码装置还包括显示器,用于显示图像。
22.一种系统,其特征在于,所述系统包括:
编码器;
解码器,与所述编码器进行通信,其中,所述编码器或所述解码器包括根据权利要求15至21中任一项所述的解码设备、编码设备或译码装置。
23.一种译码模块,其特征在于,所述译码模块包括:
接收模块,用于接收图像进行编码或接收码流进行解码;
发送模块,耦合到所述接收模块,其中,所述发送模块用于将所述码流发送到解码模块或将经解码图像发送到显示模块;
存储模块,耦合到所述接收模块或所述发送模块中的至少一个,其中,所述存储模块用于存储指令;
处理模块,耦合到所述存储模块,其中,所述处理模块用于执行存储在所述存储模块中的所述指令,以执行根据权利要求1至7以及权利要求8至14中任一项所述的方法。
CN202080032937.0A 2019-05-03 2020-04-27 用于分块、砖块和条带的波前并行处理 Pending CN113853786A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210724338.6A CN115174921B (zh) 2019-05-03 2020-04-27 由视频解码器实现的解码方法及其相关装置和存储介质
CN202410047478.3A CN117857797A (zh) 2019-05-03 2020-04-27 由视频解码器实现的解码方法及其相关装置和存储介质

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962843047P 2019-05-03 2019-05-03
US62/843,047 2019-05-03
US201962864966P 2019-06-21 2019-06-21
US62/864,966 2019-06-21
PCT/US2020/030104 WO2020226930A1 (en) 2019-05-03 2020-04-27 Wavefront parallel processing for tile, brick, and slice

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN202410047478.3A Division CN117857797A (zh) 2019-05-03 2020-04-27 由视频解码器实现的解码方法及其相关装置和存储介质
CN202210724338.6A Division CN115174921B (zh) 2019-05-03 2020-04-27 由视频解码器实现的解码方法及其相关装置和存储介质

Publications (1)

Publication Number Publication Date
CN113853786A true CN113853786A (zh) 2021-12-28

Family

ID=73051715

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202410047478.3A Pending CN117857797A (zh) 2019-05-03 2020-04-27 由视频解码器实现的解码方法及其相关装置和存储介质
CN202080032937.0A Pending CN113853786A (zh) 2019-05-03 2020-04-27 用于分块、砖块和条带的波前并行处理
CN202210724338.6A Active CN115174921B (zh) 2019-05-03 2020-04-27 由视频解码器实现的解码方法及其相关装置和存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202410047478.3A Pending CN117857797A (zh) 2019-05-03 2020-04-27 由视频解码器实现的解码方法及其相关装置和存储介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202210724338.6A Active CN115174921B (zh) 2019-05-03 2020-04-27 由视频解码器实现的解码方法及其相关装置和存储介质

Country Status (8)

Country Link
US (2) US11889095B2 (zh)
EP (2) EP4373093A1 (zh)
JP (1) JP2022531416A (zh)
KR (1) KR20220003078A (zh)
CN (3) CN117857797A (zh)
CA (1) CA3136342A1 (zh)
MX (1) MX2021013468A (zh)
WO (1) WO2020226930A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6982253B2 (ja) * 2018-10-31 2021-12-17 日本電信電話株式会社 復号装置、符号化装置、復号方法、符号化方法、及びプログラム
US20230140628A1 (en) * 2021-11-04 2023-05-04 Meta Platforms, Inc. Novel buffer format for a two-stage video encoding process

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7162093B2 (en) * 2003-09-07 2007-01-09 Microsoft Corporation Slice-layer in video codec
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US9060174B2 (en) * 2010-12-28 2015-06-16 Fish Dive, Inc. Method and system for selectively breaking prediction in video coding
US9332259B2 (en) * 2012-01-18 2016-05-03 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding
KR102489001B1 (ko) * 2012-03-22 2023-01-18 엘지전자 주식회사 비디오 인코딩 방법, 비디오 디코딩 방법 및 이를 이용하는 장치
EP2941868B1 (en) * 2013-01-07 2020-07-08 Nokia Technologies Oy Method and apparatus for video coding and decoding
US10097839B2 (en) * 2014-12-19 2018-10-09 Qualcomm Incorporated Palette mode for subsampling format
WO2017147765A1 (en) * 2016-03-01 2017-09-08 Mediatek Inc. Methods for affine motion compensation

Also Published As

Publication number Publication date
EP3957071A4 (en) 2022-06-15
MX2021013468A (es) 2022-02-11
KR20220003078A (ko) 2022-01-07
CA3136342A1 (en) 2020-11-12
EP3957071A1 (en) 2022-02-23
US20240129504A1 (en) 2024-04-18
CN117857797A (zh) 2024-04-09
US20220060726A1 (en) 2022-02-24
EP3957071B1 (en) 2024-04-03
CN115174921A (zh) 2022-10-11
CN115174921B (zh) 2023-04-04
WO2020226930A1 (en) 2020-11-12
JP2022531416A (ja) 2022-07-06
EP4373093A1 (en) 2024-05-22
US11889095B2 (en) 2024-01-30

Similar Documents

Publication Publication Date Title
US20180367818A1 (en) Block Partition Structure in Video Compression
CN113924781A (zh) 视频译码中的逐步解码刷新
CN114584774A (zh) 视频译码中的参考图像管理
US20240129504A1 (en) Wavefront parallel processing for tile, brick, and slice
CN113273202A (zh) 基于子图像的随机接入
CN113826381A (zh) 视频译码中用于参考图像重采样的双向光流(bio)译码工具的处理
JP2024023680A (ja) ビデオ・コーディングにおける新しいコーディングされたビデオ・シーケンスを開始するピクチャのための前のピクチャの出力
CN113170098B (zh) 视频译码的约束预测模式
CN114727105B (zh) 用于视频译码的变换单元分割方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination