CN114073073B - 一种支持混合nal单元的编解码方法和编解码器 - Google Patents
一种支持混合nal单元的编解码方法和编解码器 Download PDFInfo
- Publication number
- CN114073073B CN114073073B CN202080046021.0A CN202080046021A CN114073073B CN 114073073 B CN114073073 B CN 114073073B CN 202080046021 A CN202080046021 A CN 202080046021A CN 114073073 B CN114073073 B CN 114073073B
- Authority
- CN
- China
- Prior art keywords
- picture
- image
- sub
- irap
- nal unit
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 136
- 238000004590 computer program Methods 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 abstract description 27
- 108091000069 Cystinyl Aminopeptidase Proteins 0.000 abstract 1
- 102100020872 Leucyl-cystinyl aminopeptidase Human genes 0.000 abstract 1
- 230000033001 locomotion Effects 0.000 description 89
- 230000008569 process Effects 0.000 description 38
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 32
- 238000013139 quantization Methods 0.000 description 26
- 239000013598 vector Substances 0.000 description 25
- 238000007906 compression Methods 0.000 description 22
- 230000006835 compression Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 20
- 238000013459 approach Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 16
- 239000010410 layer Substances 0.000 description 15
- 238000001914 filtration Methods 0.000 description 14
- 238000005192 partition Methods 0.000 description 14
- 230000003044 adaptive effect Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 230000002123 temporal effect Effects 0.000 description 11
- 101150114515 CTBS gene Proteins 0.000 description 10
- 230000008859 change Effects 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 9
- 238000000605 extraction Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000007774 longterm Effects 0.000 description 9
- 230000011218 segmentation Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 102100026926 60S ribosomal protein L4 Human genes 0.000 description 7
- 101100527655 Arabidopsis thaliana RPL4D gene Proteins 0.000 description 7
- 101100469270 Candida albicans (strain SC5314 / ATCC MYA-2876) RPL10A gene Proteins 0.000 description 7
- 101100304908 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) RPL5 gene Proteins 0.000 description 7
- 230000004886 head movement Effects 0.000 description 7
- 101150060526 rpl1 gene Proteins 0.000 description 7
- 101150009248 rpl4 gene Proteins 0.000 description 7
- 101150079275 rplA gene Proteins 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 6
- 230000002411 adverse Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000011144 upstream manufacturing Methods 0.000 description 4
- 241000023320 Luma <angiosperm> Species 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 230000000153 supplemental effect Effects 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- FMYKJLXRRQTBOR-UBFHEZILSA-N (2s)-2-acetamido-4-methyl-n-[4-methyl-1-oxo-1-[[(2s)-1-oxohexan-2-yl]amino]pentan-2-yl]pentanamide Chemical group CCCC[C@@H](C=O)NC(=O)C(CC(C)C)NC(=O)[C@H](CC(C)C)NC(C)=O FMYKJLXRRQTBOR-UBFHEZILSA-N 0.000 description 2
- 241001482237 Pica Species 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 241000985610 Forpus Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/172—Methods 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 picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/174—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/188—Methods 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 a video data packet, e.g. a network abstraction layer [NAL] unit
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/58—Motion compensation with long-term prediction, i.e. the reference frame for a current frame not being the temporally closest one
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/117—Filters, e.g. for pre-processing or post-processing
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了一种视频译码机制。所述机制包括:接收包括当前图像的码流,其中,所述当前图像包括不具有相同网络抽象层(network abstraction layer,NAL)单元类型的多个视频译码层(video coding layer,VCL)NAL单元;获取条带对应的参考图像列表中的活动条目,其中,所述条带位于解码顺序在所述当前图像之后的后续图像的子图像A(subpicA)中,当所述当前图像中的subpicA与帧内随机接入点(intra‑random access point,IRAP)NAL单元类型相关联时,所述活动条目不参考解码顺序在所述当前图像之前的任何参考图像;根据所述参考图像列表中的活动条目,对所述后续图像进行解码;转发所述后续图像,其中,所述后续图像作为经解码视频序列的一部分显示。
Description
相关申请交叉引用
本专利申请要求王业奎于2019年7月8日提交的申请号为62/871,524、发明名称为“视频译码中的一个图像内的混合NAL单元类型的约束(Constraints for Mixed NAL UnitTypes within One Picture in Video Coding)”的美国临时专利申请的权益,其内容通过引用结合在本申请中。
技术领域
本发明大体上涉及视频译码,具体涉及在视频译码中对图像中的子图像进行译码。
背景技术
即使视频相对较短,也需要大量的视频数据来描述,当数据要在带宽容量有限的通信网络中进行流式传输或以其它方式进行传输时,这可能会造成困难。因此,视频数据通常要先压缩,然后通过现代电信网络进行传输。由于内存资源可能有限,当在存储设备上存储视频时,该视频的大小也可能是一个问题。视频压缩设备通常在信源侧使用软件和/或硬件对视频数据进行编码,然后传输或存储视频数据,从而减少表示数字视频图像所需的数据量。然后,对视频数据进行解码的视频解压缩设备在目的地侧接收压缩数据。在网络资源有限以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。
发明内容
在一个实施例中,本发明包括一种在解码器中实现的方法。所述方法包括:所述解码器的接收器接收包括当前图像的码流,其中,所述当前图像包括不具有相同网络抽象层(network abstraction layer,NAL)单元类型的多个视频译码层(video coding layer,VCL)NAL单元;所述解码器的处理器获取条带对应的参考图像列表中的活动条目,其中,所述条带位于解码顺序在所述当前图像之后的后续图像的子图像A(subpicA)中,当所述当前图像中的subpicA与帧内随机接入点(intra-random access point,IRAP)NAL单元类型相关联时,所述活动条目不参考解码顺序在所述当前图像之前的任何参考图像;所述处理器根据所述参考图像列表中的活动条目对所述后续图像进行解码;所述处理器转发所述后续图像,其中,所述后续图像作为经解码视频序列的一部分显示。
视频译码系统可以通过使用IRAP图像和非IRAP图像对视频进行编码。IRAP图像是根据帧内预测译码的图像,这些图像用作视频序列的随机接入点。IRAP图像可以在不先解码任何其它图像的情况下解码。因此,解码器可以从任何IRAP图像开始解码视频序列。相反,解码器通常不能从非IRAP图像开始解码视频序列。IRAP图像也可以刷新DPB。这是因为IRAP图像可以用作编码视频序列(coded video sequence,CVS)的起点,而且CVS中的图像不参考前一CVS中的图像。因此,IRAP图像还可以中断/停止帧间预测链并停止产生帧间预测相关的译码错误,因为这些错误无法通过IRAP图像传播。
在一些情况下,视频译码系统可以用于对虚拟现实(virtual reality,VR)视频进行译码。VR视频可以包括视频内容组成的球体,显示起来就像用户处于球体的中心一样。向用户显示的只是球体的一部分,称为视角(viewport)。图像的其余部分被丢弃,而不进行显示。通常传输的是整个图像,使得可以根据用户的头部移动,动态地选择和显示不同的视角。这种方法可能会产生非常大的视频文件大小。为了提高译码效率,一些系统将图像分成子图像。视频可以按两种或两种以上分辨率进行编码。每个分辨率都被编码到对应于子图像的一组不同子码流中。当用户流式传输VR视频时,译码系统可以根据用户正在使用的当前视角将子码流合并为码流进行传输。具体地,当前视角是从高分辨率子码流中获得的,而未被观看的视角是从一个或多个低分辨率码流中获得的。这样,向用户显示的是最高质量的视频,而低质量的视频被丢弃。如果用户选择一个新视角,则向用户显示的是低分辨率视频。解码器可以请求新视角接收高分辨率视频。然后,编码器可以相应地改变合并过程。一旦到达IRAP图像,解码器就可以从新视角开始解码高分辨率视频序列。这种方法显著改善了视频压缩,而不会对用户的观看体验产生不好影响。
上述办法存在的一个问题是,改变分辨率所需的时长基于到达IRAP图像之前的时长。这是因为解码器不能从非IRAP图像开始解码不同的视频序列,如上所述。减少这种延迟的一种方法是包括更多的IRAP图像。但是,这样增大了文件大小。为了平衡功能与译码效率,不同的视角/子图像可以包括不同频率下的IRAP图像。例如,更有可能被观看的视角可能比其它视角包括更多的IRAP图像。这种方法会产生其它问题。具体地,在IRAP图像之后的图像被约束为不参考在IRAP图像之前的图像。但是,这种约束是在图像级别进行的。在图像级别,可能不会考虑将包括混合NAL单元(同时包括IRAP子图像和非IRAP子图像)的图像作为IRAP图像。因此,这些图像级别约束可能不适用。这可能导致在IRAP子图像之后的部分图像错误地参考在IRAP图像之前的图像。在这种情况下,IRAP子图像会无法作为接入点正常使用,因为参考图像/子图像可能不可用,这会使在IRAP子图像之后的子图像不可解码。此外,IRAP子图像不能阻止非IRAP子图像进行这种参考,因为这样做达不到产生混合NAL单元(例如,根据子图像位置的不同长度的经帧间译码序列)的目的。
本示例包括用于在图像同时包括IRAP NAL单元和非IRAP NAL单元时减少译码错误的机制。具体地,当前图像中的子图像可以包括IRAP NAL单元。当发生这种情况时,在当前图像之后的图像中的也包括在子图像中的条带被约束为不参考在当前图像之前的参考图像。这确保了IRAP NAL单元停止子图像级别的帧间预测传播。因此,解码器可以从IRAP子图像开始解码。与后续图像中的子图像相关联的条带始终可以被解码,因为这些条带不参考在IRAP子图像(尚未解码)之前的任何数据。这种约束不适用于非IRAP NAL单元。因此,包括非IRAP数据的子图像的帧间预测不会中断。因此,所公开的机制可以实现其它功能。例如,当使用子图像码流时,所公开的机制支持子图像级别的动态分辨率变化。因此,所公开的机制可以在流式传输VR视频时传输低分辨率子图像码流,而不会大大影响用户体验。因此,所公开的机制提高了译码效率,因此降低了编码器和解码器侧网络资源、内存资源和处理资源的使用率。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述IRAP NAL单元类型为纯随机接入(clean random access,CRA)NAL单元类型。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述IRAP NAL单元类型为即时解码刷新(instantaneous decoding refresh,IDR)NAL单元类型。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述方法还包括:所述处理器确定所述当前图像的位于所述subpicA中的所有条带与相同NAL单元类型相关联。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述方法还包括:所述处理器根据标志确定所述当前图像中的所述多个VCL NAL单元的第一NAL单元类型值与所述当前图像中的所述多个VCLNAL单元的第二NAL单元类型值不同。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述码流包括图像参数集(picture parameter set,PPS),所述标志是从所述PPS中获得的。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述标志为mixed_nalu_types_in_pic_flag,所述mixed_nalu_types_in_pic_flag在表示参考所述PPS的每个图像包括多个VCL NAL单元且所述多个VCL NAL单元不具有相同NAL单元类型(nal_unit_type)值时等于1。
在一个实施例中,本发明包括一种在编码器中实现的方法。所述方法包括:所述编码器的处理器确定当前图像包括不具有相同NAL单元类型的多个VCL NAL单元;所述处理器确定所述当前图像中的subpicA与IRAP NAL单元类型相关联;所述处理器生成条带对应的参考图像列表中的活动条目,其中,所述条带位于解码顺序在所述当前图像之后的后续图像的subpicA中,当所述当前图像中的所述subpicA与所述IRAP NAL单元类型相关联时,所述活动条目不参考解码顺序在所述当前图像之前的任何参考图像;所述处理器根据所述参考图像列表将所述后续图像编码到码流中;与所述处理器耦合的存储器存储所述码流,其中,所述码流用于发送给解码器。
视频译码系统可以通过使用IRAP图像和非IRAP图像对视频进行编码。IRAP图像是根据帧内预测译码的图像,这些图像用作视频序列的随机接入点。IRAP图像可以在不先解码任何其它图像的情况下解码。因此,解码器可以从任何IRAP图像开始解码视频序列。相反,解码器通常不能从非IRAP图像开始解码视频序列。IRAP图像也可以刷新DPB。这是因为IRAP图像可以用作编码视频序列(coded video sequence,CVS)的起点,而且CVS中的图像不参考前一CVS中的图像。因此,IRAP图像还可以中断帧间预测链并停止产生帧间预测相关的译码错误,因为这些错误无法通过IRAP图像传播。
在一些情况下,视频译码系统可以用于对虚拟现实(virtual reality,VR)视频进行译码。VR视频可以包括视频内容组成的球体,显示起来就像用户处于球体的中心一样。向用户显示的只是球体的一部分,称为视角(viewport)。图像的其余部分被丢弃,而不进行显示。通常传输的是整个图像,使得可以根据用户的头部移动,动态地选择和显示不同的视角。这种方法可能会产生非常大的视频文件大小。为了提高译码效率,一些系统将图像分成子图像。视频可以按两种或两种以上分辨率进行编码。每个分辨率都被编码到对应于子图像的一组不同子码流中。当用户流式传输VR视频时,译码系统可以根据用户正在使用的当前视角将子码流合并为码流进行传输。具体地,当前视角是从高分辨率子码流中获得的,而未被观看的视角是从一个或多个低分辨率码流中获得的。这样,向用户显示的是最高质量的视频,而低质量的视频被丢弃。如果用户选择一个新视角,则向用户显示的是低分辨率视频。解码器可以请求新视角接收高分辨率视频。然后,编码器可以相应地改变合并过程。一旦到达IRAP图像,解码器就可以从新视角开始解码高分辨率视频序列。这种方法显著改善了视频压缩,而不会对用户的观看体验产生不好影响。
上述办法存在的一个问题是,改变分辨率所需的时长基于到达IRAP图像之前的时长。这是因为解码器不能从非IRAP图像开始解码不同的视频序列,如上所述。减少这种延迟的一种方法是包括更多的IRAP图像。但是,这样增大了文件大小。为了平衡功能与译码效率,不同的视角/子图像可以包括不同频率下的IRAP图像。例如,更有可能被观看的视角可能比其它视角包括更多的IRAP图像。这种方法会产生其它问题。具体地,在IRAP图像之后的图像被约束为不参考在IRAP图像之前的图像。但是,这种约束是在图像级别进行的。在图像级别,可能不会考虑将包括混合NAL单元(同时包括IRAP子图像和非IRAP子图像)的图像作为IRAP图像。因此,这些图像级别约束可能不适用。这可能导致在IRAP子图像之后的部分图像错误地参考在IRAP图像之前的图像。在这种情况下,IRAP子图像会无法作为接入点正常使用,因为参考图像/子图像可能不可用,这会使在IRAP子图像之后的子图像不可解码。此外,IRAP子图像不能阻止非IRAP子图像进行这种参考,因为这样做达不到产生混合NAL单元(例如,根据子图像位置的不同长度的经帧间译码序列)的目的。
本示例包括用于在图像同时包括IRAP NAL单元和非IRAP NAL单元时减少译码错误的机制。具体地,当前图像中的子图像可以包括IRAP NAL单元。当发生这种情况时,在当前图像之后的图像中的也包括在子图像中的条带被约束为不参考在当前图像之前的参考图像。这确保了IRAP NAL单元停止子图像级别的帧间预测传播。因此,解码器可以从IRAP子图像开始解码。与后续图像中的子图像相关联的条带始终可以被解码,因为这些条带不参考在IRAP子图像(尚未解码)之前的任何数据。这种约束不适用于非IRAP NAL单元。因此,包括非IRAP数据的子图像的帧间预测不会中断。因此,所公开的机制可以实现其它功能。例如,当使用子图像码流时,所公开的机制支持子图像级别的动态分辨率变化。因此,所公开的机制可以在流式传输VR视频时传输低分辨率子图像码流,而不会大大影响用户体验。因此,所公开的机制提高了译码效率,因此降低了编码器和解码器侧网络资源、内存资源和处理资源的使用率。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述IRAP NAL单元类型为CRANAL单元类型。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述IRAP NAL单元类型为IDRNAL单元类型。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述方法还包括:所述处理器通过确保所述当前图像的位于所述subpicA中的所有条带与相同NAL单元类型相关联,将所述当前图像编码到所述码流中。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述方法还包括:所述处理器将标志编码到所述码流中,其中,所述标志表示所述当前图像中的所述多个VCLNAL单元的第一NAL单元类型值与所述当前图像中的所述多个VCL NAL单元的第二NAL单元类型值不同。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述标志被编码到所述码流中的PPS中。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述标志为mixed_nalu_types_in_pic_flag,所述mixed_nalu_types_in_pic_flag在表示参考所述PPS的每个图像包括多个VCL NAL单元且所述多个VCL NAL单元不具有相同nal_unit_type值时设置为1。
在一个实施例中,本发明包括一种视频译码设备。所述视频译码设备包括:处理器、与所述处理器耦合的接收器、与所述处理器耦合的存储器和与所述处理器耦合的发送器,其中,所述处理器、接收器、存储器和发送器用于执行根据任一上述方面所述的方法。
在一个实施例中,本发明包括一种非瞬时性计算机可读介质。所述非瞬时性计算机可读介质包括供视频译码设备使用的计算机程序产品,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质中的计算机可执行指令,当处理器执行所述计算机可执行指令时,使得所述视频译码设备执行根据任一上述方面所述的方法。
在一个实施例中,本发明包括解码器。所述解码器包括:接收模块,用于接收包括当前图像的码流,其中,所述当前图像包括不具有相同NAL单元类型的多个VCL NAL单元;获取模块,用于获取条带对应的参考图像列表中的活动条目,其中,所述条带位于解码顺序在所述当前图像之后的后续图像的subpicA中;确定模块,用于确定当所述当前图像中的subpicA与IRAP NAL单元类型相关联时,所述活动条目不参考解码顺序在所述当前图像之前的任何参考图像;解码模块,用于根据所述参考图像列表中的活动条目对所述后续图像进行解码;转发模块,用于转发所述后续图像,其中,所述后续图像作为经解码视频序列的一部分显示。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述解码器还用于执行根据任一上述方面所述的方法。
在一个实施例中,本发明包括编码器。所述编码器包括:确定模块,用于:确定当前图像包括不具有相同NAL单元类型的多个VCL NAL单元;确定所述当前图像中的subpicA与IRAP NAL单元类型相关联;生成模块,用于生成条带对应的参考图像列表中的活动条目,其中,所述条带位于解码顺序在所述当前图像之后的后续图像的subpicA中,当所述当前图像中的所述subpicA与所述IRAP NAL单元类型相关联时,所述活动条目不参考解码顺序在所述当前图像之前的任何参考图像;编码模块,用于根据所述参考图像列表将所述后续图像编码到码流中;存储模块,用于存储所述码流,其中,所述码流用于发送给解码器。
可选地,根据任一上述方面,在所述方面的另一种实现方式中,所述编码器还用于执行根据任一上述方面所述的方法。
为了清楚起见,任一上述实施例可以与上述其它任何一个或多个实施例组合以创建在本发明范围内的新实施例。
根据以下结合附图和权利要求书进行的具体实施方式,将更清楚地理解这些和其它特征。
附图说明
为了更全面地理解本发明,现在参考下文结合附图和详细说明进行的简要描述,其中,相似的附图标记表示相似的部件。
图1为对视频信号进行译码的示例性方法的流程图。
图2为用于视频译码的示例性编码和解码(编解码)系统的示意图。
图3为示例性视频编码器的示意图。
图4为示例性视频解码器的示意图。
图5为从虚拟现实(virtual reality,VR)图像视频流中划分出来的多个子图像视频流的示意图。
图6为在当前图像包括混合网络抽象层(Network Abstraction Layer,NAL)单元类型时使用的约束的示意图。
图7为包括参考图像列表的示例性参考图像列表结构的示意图。
图8为包括具有混合NAL单元类型的图像的示例性码流的示意图。
图9为示例性视频译码设备的示意图。
图10为将包括具有混合NAL单元类型的图像的视频序列编码到码流中的示例性方法的流程图。
图11为从码流中解码包括具有混合NAL单元类型的图像的视频序列的示例性方法的流程图。
图12为将包括具有混合NAL单元类型的图像的视频序列译码到码流中的示例性系统的示意图。
具体实施方式
首先应当理解,尽管下文提供一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可以使用任意数量的技术来实施,无论这些技术是当前已知的还是现有的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可以在所附权利要求书的范围以及其等效物的完整范围内修改。
以下术语的定义如下所述,除非在本文相反的上下文中使用。具体地,以下定义是为了更加清晰地描述本发明。但是,术语在不同的上下文中可能会有不同的描述。因此,以下定义应当视为补充信息,而不应当视为对此处为这些术语提供的描述的任何其它定义进行限制。
码流是包括视频数据的一系列比特,这些视频数据被压缩以在编码器和解码器之间传输。编码器是一种用于使用编码过程将视频数据压缩到码流中的设备。解码器是一种用于使用解码过程从码流中重建视频数据进行显示的设备。图像(picture)是创建帧(frame)或其场的亮度样本和/或色度样本组成的阵列。为了论述清楚,正在被编码或解码的图像可以称为当前图像,而在当前图像之后的任何图像都可以称为后续图像。子图像(sub-picture)是一系列图像内的一个或多个条带(slice)组成的矩形区域。需要说明的是,正方形是一种矩形,因此子图像可以包括正方形区域。条带(slice)是图像中的整数个完整分块或图像中的一个分块内的整数个连续完整的编码树单元(coding tree unit,CTU)行,这些分块或CTU行只包括在单个网络抽象层(network abstraction layer,NAL)单元中。NAL单元是包括数据字节和其中包括的数据类型的指示的语法结构。NAL单元包括含有视频数据的视频译码层(video coding layer,VCL)NAL单元和含有支持语法数据(supporting syntax data)的非VCL NAL单元。NAL单元类型是NAL单元中包含的一种数据结构。帧内随机接入点(intra-random access point,IRAP)NAL单元类型是包括来自IRAP图像或子图像的数据的数据结构。IRAP图像/子图像是根据帧内预测译码的图像/子图像,这表示解码器可以从对应的图像/子图像开始解码视频序列,无需参考在IRAP图像/子图像之前的图像。纯随机接入(clean random access,CRA)NAL单元类型是包括来自CRA图像或子图像的数据的数据结构。CRA图像/子图像是不刷新解码图像缓冲区(decoded picturebuffer,DPB)的IRAP图像/子图像。即时解码刷新(instantaneous decoding refresh,IDR)NAL单元类型是包括来自IDR图像或子图像的数据的数据结构。IDR图像/子图像是刷新DPB的IRAP图像/子图像。参考图像是包括参考样本的图像,这些参考样本可以在根据帧间预测通过参考对其它图像进行译码时使用。参考图像列表是用于帧间预测和/或层间预测的一列参考图像。一些视频译码系统参考两个图像列表,这两个图像列表可以表示为参考图像列表1和参考图像列表0。参考图像列表结构是包括多个参考图像列表的可寻址语法结构。活动条目(active entry)是参考图像列表中的条目,该条目是指在执行帧间预测时可由当前图像使用的参考图像。标志(flag)是一种包括一系列比特的数据结构,这些比特可以设置为表示对应数据。图像参数集(picture parameter set,PPS)是包括与一个或多个图像相关的图像级别数据的参数集。解码顺序是语法元素通过解码过程进行处理的顺序。经解码视频序列是一系列已经由解码器重建以准备显示给用户的图像。
本文中使用以下缩略语:编码视频序列(Coded Video Sequence,CVS)、解码图像缓冲区(Decoded Picture Buffer,DPB)、即时解码刷新(Instantaneous DecodingRefresh,IDR)、帧内随机接入点(Intra-Random Access Point,IRAP)、最低有效位(LeastSignificant Bit,LSB)、最高有效位(Most Significant Bit,MSB)、网络抽象层(NetworkAbstraction Layer,NAL)、图像顺序编号(Picture Order Count,POC)、原始字节序列载荷(Raw Byte Sequence Payload,RBSP)、序列参数集(Sequence Parameter Set,SPS)和工作草案(Working Draft,WD)。
许多视频压缩技术可以用来减小视频文件的大小,同时最大限度地减少数据丢失。例如,视频压缩技术可以包括执行空间(例如,帧内)预测和/或时间(例如,帧间)预测来减少或去除视频序列中的数据冗余。对于基于块的视频译码,视频条带(例如,视频图像或视频图像的一部分)可以被分割成视频块,这些视频块还可以称为树块(treeblock)、编码树块(coding tree block,CTB)、编码树单元(coding tree unit,CTU)、编码单元(codingunit,CU)和/或译码节点(coding node)。图像中的经帧内译码(I)条带中的视频块是相对于同一图像中的相邻块中的参考样本使用空间预测进行译码的,而图像中的经帧间译码的单向预测(P)或双向预测(B)条带中的视频块可以是相对于同一图像中的相邻块中的参考样本使用空间预测进行译码的,也可以是相对于其它参考图像中的参考样本使用时间预测进行译码的。图像(picture/image)可以称为帧(frame),参考图像可以称为参考帧。空间预测或时间预测会产生表示图像块的预测块。残差数据表示原始图像块与预测块之间的像素差。因此,经帧间译码块是根据运动矢量和残差数据进行编码的,其中,运动矢量指向形成预测块的参考样本组成的块,残差数据表示经译码块与预测块之间的差值;而经帧内译码块是根据帧内译码模式和残差数据进行编码的。为了进一步压缩,残差数据可以从像素域变换到变换域。这些产生可以量化的残差变换系数。量化变换系数最初可以排列为二维阵列。量化变换系数可以扫描,目的是产生变换系数的一维矢量。熵译码可以用于实现进一步压缩。下文更详细地论述了这些视频压缩技术。
为了确保经编码视频能够正确解码,视频根据对应的视频编码标准进行编码和解码。视频编码标准包括国际电信联盟(International Telecommunication Union,ITU)标准化部门(ITU Standardization Sector,ITU-T)H.261、国际标准化组织/国际电工委员会(International Organization for Standardization/InternationalElectrotechnical Commission,ISO/IEC)运动图像专家组(Motion Picture ExpertsGroup,MPEG)-1第2部分、ITU-T H.262或ISO/IEC MPEG-2第2部分、ITU-T H.263、ISO/IECMPEG-4第2部分、高级视频编码(Advanced Video Coding,AVC)(还称为ITU-T H.264或ISO/IEC MPEG-4第10部分)以及高效视频编码(High Efficiency Video Coding,HEVC)(还称为ITU-T H.265或MPEG-H第2部分)。AVC包括可分级的视频编码(Scalable Video Coding,SVC)、多视图视频编码(Multiview Video Coding,MVC)和多视图视频编码加深度(Multiview Video Coding plus Depth,MVC+D)、三维(three dimension,3D)AVC(3D-AVC)等扩展版本。HEVC包括可分级的HEVC(Scalable HEVC,SHVC)、多视图HEVC(MultiviewHEVC,MV-HEVC)、3D HEVC(3D-HEVC)等扩展版本。ITU-T和ISO/IEC的联合视频专家组(jointvideo experts team,JVET)已经着手开发一种称为通用视频编码(Versatile VideoCoding,VVC)的视频编码标准。VVC涵盖在工作草案(Working Draft,WD)中,该WD包括JVET-N1001-v10。
视频译码系统可以通过使用IRAP图像和非IRAP图像对视频进行编码。IRAP图像是根据帧内预测译码的图像,这些图像用作视频序列的随机接入点。在帧内预测中,图像中的块是通过参考同一图像中的其它块进行译码的。这与使用帧间预测的非IRAP图像相反。在帧间预测中,当前图像中的块是通过参考与当前图像不同的参考图像中的其它块进行译码的。由于IRAP图像是在不参考其它图像的情况下译码的,因此IRAP图像可以在不先解码任何其它图像的情况下解码。因此,解码器可以从任何IRAP图像开始解码视频序列。相反,非IRAP图像是在参考其它图像的情况下译码的,因此解码器通常不能从非IRAP图像开始解码视频序列。IRAP图像也可以刷新DPB。这是因为IRAP图像可以用作CVS的起点,而且CVS中的图像不参考前一CVS中的图像。因此,IRAP图像还可以停止产生帧间预测相关的译码错误,因为这些错误无法通过IRAP图像传播。但是,从数据大小的角度来看,IRAP图像明显大于非IRAP图像。因此,视频序列通常包括许多非IRAP图像,其中穿插着少量IRAP图像,以平衡译码效率与功能。例如,60帧的CVS可以包括1个IRAP图像和59个非IRAP图像。
在一些情况下,视频译码系统可以用于对虚拟现实(virtual reality,VR)视频进行译码,VR视频还可以称为360度视频。VR视频可以包括视频内容组成的球体,显示起来就像用户处于球体的中心一样。向用户显示的只是球体的一部分,称为视角(viewport)。例如,用户可以使用头盔式显示器(head mounted display,HMD),HMD根据用户的头部移动选择和显示球体的视角。这样产生了身临视频所描绘的虚拟空间的效果。为了实现这一效果,视频序列中的每个图像包括对应时刻的视频数据组成的整个球体。但是,向用户显示的只是图像的一小部分(例如,单个视角)。图像的其余部分被丢弃,而不进行显示。通常传输的是整个图像,使得可以根据用户的头部移动,动态地选择和显示不同的视角。这种方法可能会产生非常大的视频文件大小。
为了提高译码效率,一些系统将图像分成子图像。子图像是图像中的定义好的空间区域。每个子图像都包括图像的对应视角。视频可以按两种或两种以上分辨率进行编码。每个分辨率都被编码到不同的子码流中。当用户流式传输VR视频时,译码系统可以根据用户正在使用的当前视角将子码流合并为码流进行传输。具体地,当前视角是从高分辨率子码流中获得的,而未被观看的视角是从一个或多个低分辨率码流中获得的。这样,向用户显示的是最高质量的视频,而低质量的视频被丢弃。如果用户选择一个新视角,则向用户显示的是低分辨率视频。解码器可以请求新视角接收高分辨率视频。然后,编码器可以相应地改变合并过程。一旦到达IRAP图像,解码器就可以从新视角开始解码高分辨率视频序列。这种方法显著改善了视频压缩,而不会对用户的观看体验产生不好影响。
上述办法存在的一个问题是,改变分辨率所需的时长基于到达IRAP图像之前的时长。这是因为解码器不能从非IRAP图像开始解码不同的视频序列,如上所述。减少这种延迟的一种方法是包括更多的IRAP图像。但是,这样增大了文件大小。为了平衡功能与译码效率,不同的视角/子图像可以包括不同频率下的IRAP图像。例如,更有可能被观看的视角可能比其它视角包括更多的IRAP图像。例如,在篮球运动中,由于用户不太可能观看那些观看看台或天花板的视角,所以相比之下,与篮筐和/或中场相关的视角可以包括更高频率下的IRAP图像。
这种方法会产生其它间题。具体地,在IRAP图像之后的图像被约束为不参考在IRAP图像之前的图像。但是,这种约束是在图像级别进行的。在图像级别,可能不会考虑将包括混合NAL单元(同时包括IRAP子图像和非IRAP子图像)的图像作为IRAP图像。因此,这些图像级别约束可能不适用。这可能导致在IRAP子图像之后的部分图像错误地参考在IRAP图像之前的图像。在这种情况下,IRAP子图像会无法作为接入点正常使用,因为参考图像/子图像可能不可用,这会使在IRAP子图像之后的子图像不可解码。此外,IRAP子图像不能阻止非IRAP子图像进行这种参考,因为这样做达不到产生混合NAL单元(例如,根据子图像位置的不同长度的经帧间译码序列)的目的。
本文公开了用于在图像同时包括IRAP NAL单元和非IRAP NAL单元时减少译码错误的机制。具体地,当前图像中的子图像可以包括IRAP NAL单元。当发生这种情况时,在当前图像之后的图像中的也包括在子图像中的条带被约束为不参考在当前图像之前的参考图像。这确保了IRAP NAL单元中断子图像级别的帧间预测(例如,停止帧间预测参考链)。因此,解码器可以从IRAP子图像开始解码。与后续图像中的子图像相关联的条带始终可以被解码,因为这些条带不参考在IRAP子图像(尚未解码)之前的任何数据。这种约束不适用于非IRAP NAL单元。因此,包括非IRAP数据的子图像的帧间预测不会中断。因此,所公开的机制可以实现其它功能。例如,当使用子图像码流时,所公开的机制支持子图像级别的动态分辨率变化。因此,所公开的机制可以在流式传输VR视频时传输低分辨率子图像码流,而不会大大影响用户体验。因此,所公开的机制提高了译码效率,因此降低了编码器和解码器侧网络资源、内存资源和处理资源的使用率。
图1为对视频信号进行译码的示例性操作方法100的流程图。具体地,视频信号是在编码器侧进行编码的。编码过程通过使用各种机制来压缩视频信号,以减小视频文件大小。文件较小使得压缩视频文件可以传输给用户,同时降低相关的带宽开销。然后,解码器对压缩视频文件进行解码,以重建原始视频信号向终端用户显示。解码过程通常是编码过程的逆过程,以使解码器重建的视频信号可以与编码器侧的视频信号保持一致。
在步骤101中,将视频信号输入到编码器中。例如,视频信号可以是存储在存储器中的未压缩视频文件。又如,视频文件可以由摄像机等视频捕获设备捕获,并且进行编码以支持视频的直播流传输。视频文件可以同时包括音频分量和视频分量。视频分量包括一系列图像帧。这些图像帧按顺序观看时,给人以运动的视觉效果。这些帧包括以光表示的像素,在本文中称为亮度分量(或亮度样本),还包括以颜色表示的像素,称为色度分量(或色度样本)。在一些示例中,这些帧还可以包括深度值,以支持三维观看。
在步骤103中,将视频分割成块。分割包括将每帧中的像素细分成正方形块和/或矩形块进行压缩。例如,在高效视频编码(High Efficiency Video Coding,HEVC)(还称为H.265和MPEG-H第2部分)中,首先将帧分成编码树单元(coding tree unit,CTU),这些CTU是预定义大小(例如,64个像素×64个像素)的块。这些CTU同时包括亮度样本和色度样本。译码树(coding tree)可以用于将CTU分成块,然后重复细分这些块,直到获得支持进一步编码的配置。例如,帧的亮度分量可以细分到各个块包括相对均匀的亮度值。此外,帧的色度分量可以细分到各个块包括相对均匀的色值。因此,分割机制因视频帧的内容而异。
在步骤105中,使用各种压缩机制对在步骤103中分割得到的图像块进行压缩。例如,可以使用帧间预测和/或帧内预测。帧间预测是为了利用公共场景中的对象往往出现在连续帧中这一事实而设计的。因此,描述参考帧中的对象的块不需要在相邻帧中重复描述。具体地,一个对象(例如一张桌子)可以在多个帧中保持在固定位置上。因此,该桌子被描述一次,而且相邻帧可以重新参考该参考帧。模式匹配机制可以用于在多个帧上匹配对象。此外,由于对象移动或相机移动等原因,移动对象可以跨多个帧表示。在一个具体示例中,视频可以在多个帧上显示跨屏幕移动的汽车。运动矢量可以用于描述这种移动。运动矢量是一个二维矢量,提供对象在一个帧中的坐标到该对象在参考帧中的坐标的偏移。因此,帧间预测可以将当前帧中的图像块编码为一组运动矢量,这些运动矢量表示当前帧中的图像块与参考帧中的对应块的偏移。
帧内预测对公共帧中的块进行编码。帧内预测利用亮度分量和色度分量往往聚集在一个帧中这一事实。例如,一棵树某个部分的一片绿色往往与类似的几片绿色相邻。帧内预测使用多种方向性预测模式(例如,HEVC中有33种)、平面模式和直流(direct current,DC)模式。这些方向性模式表示当前块中的样本与对应方向上的相邻块中的样本相似/相同。平面模式表示一行/列(例如平面)中的一系列块可以根据该行的边缘上的相邻块进行插值。平面模式实际上通过使用变化值的相对恒定的斜率表示光/颜色跨行/列的平稳过渡。DC模式用于边界平滑,并表示块和与所有相邻块中的样本相关联的平均值相似/相同,这些相邻块与方向性预测模式的角度方向相关联。因此,帧内预测块可以将图像块表示为各种关系预测模式值而不是表示为实际值。此外,帧间预测块可以将图像块表示为运动矢量值而不是表示为实际值。在任一种情况下,预测块在一些情况下可能都无法准确表示图像块。所有差值都存储在残差块中。变换可以应用于残差块以进一步压缩文件。
在步骤107中,可以应用各种滤波技术。在HEVC中,滤波器是根据环内滤波方案应用的。上文描述的基于块的预测可能会在解码器侧产生块状图像。此外,基于块的预测方案可以对块进行编码,然后重建经编码块。这些经编码块后续用作参考块。环内滤波方案迭代地将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和样本自适应偏移(sampleadaptive offset,SAO)滤波器应用于块/帧。这些滤波器减少了块伪影,使得可以准确地重建经编码文件。此外,这些滤波器减少了重建参考块中的伪影,使得伪影不太可能在根据重建参考块编码的后续块中产生其它伪影。
一旦视频信号完成分割、压缩和滤波,则在步骤109中,将所得数据编码到码流中。码流包括上述数据以及支持在解码器侧进行适当的视频信号重建所需要的任何指示数据。例如,这些数据可以包括分割数据、预测数据、残差块和提供译码指令给解码器的各种标志。码流可以存储在存储器中,以便在请求时传输到解码器。码流还可以广播和/或组播到多个解码器。创建码流是一个迭代过程。因此,步骤101、步骤103、步骤105、步骤107和步骤109可以在多个帧和块中连续和/或同时执行。图1所示的顺序是为了清楚和便于论述的目的,并非为了将视频译码过程限于特定顺序。
在步骤111中,解码器接收码流并开始解码过程。具体地,解码器使用熵解码方案将码流转换为对应的语法数据和视频数据。在步骤111中,解码器使用码流中的语法数据来确定帧的分割部分。分割可以匹配步骤103中的块分割的结果。下面描述在步骤111中使用的熵编码/解码。编码器在压缩过程中做出许多选择,例如,根据一个或多个输入图像中的值的空间定位从几个可能选择中选择块分割方案。指示确切的选择可能会使用大量的位元(bin)。本文所使用的“位元”是一个作为变量的二进制值(例如,可能因内容而异的比特值)。熵编码使得编码器丢弃任何明显不适合特定情况的选择,从而留下一组允许选项。然后,为每个允许选项分配一个码字。码字的长度取决于允许选项的数量(例如,1个位元对应2个选项,2个位元对应3到4个选项,以此类推)。然后,编码器对选定选项的码字进行编码。这种方案减小了码字的大小,这是因为码字与预期的一样大,从而唯一地指示从允许选项的小子集中进行选择,而不是唯一地指示从所有可能选项的可能大集合中进行选择。然后,解码器通过以与编码器类似的方式确定这一组允许选项对这一选择进行解码。通过确定这一组允许选项,解码器可以读取码字并确定编码器做出的选择。
在步骤113中,解码器执行块解码。具体地,解码器使用逆变换,以生成残差块。然后,解码器使用残差块和对应的预测块,根据分割来重建图像块。预测块可以包括编码器在步骤105中生成的帧内预测块和帧间预测块。接着,根据在步骤111中确定的分割数据将重建图像块放置在重建视频信号的帧中。还可以通过上述熵编码在码流中指示用于步骤113的语法。
在步骤115中,以类似于编码器侧的步骤107的方式对重建视频信号的帧执行滤波。例如,噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和SAO滤波器可以应用于帧,以去除块伪影。一旦对帧进行了滤波,则在步骤117中,可以将视频信号输出到显示器,以供终端用户观看。
图2为用于视频译码的示例性编码和解码(编解码)系统200的示意图。具体地,编解码系统200提供功能来支持操作方法100的实现。编解码系统200广义地用于描述编码器和解码器侧都使用的组件。编解码系统200接收视频信号并对视频信号进行分割,如参照操作方法100中的步骤101和步骤103所述,得到分割后的视频信号201。然后,编解码系统200在充当编码器时将分割后的视频信号201压缩到经译码码流中,如参照方法100中的步骤105、步骤107和步骤109所述。编解码系统200在充当解码器时从码流中生成输出视频信号,如参照操作方法100中的步骤111、步骤113、步骤115和步骤117所述。编解码系统200包括通用译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、帧内预测组件217、运动补偿组件219、运动估计组件221、缩放和逆变换组件229、滤波器控制分析组件227、环内滤波器组件225、解码图像缓冲区组件223以及标头格式和上下文自适应二进制算术编码(context adaptive binary arithmetic coding,CABAC)组件231。这些组件如图所示耦合。在图2中,黑线表示待编码/待解码数据的运动,而虚线表示控制其它组件操作的控制数据的运动。编解码系统200中的组件都可以存在于编码器中。解码器可以包括编解码系统200中的组件的子集。例如,解码器可以包括帧内预测组件217、运动补偿组件219、缩放和逆变换组件229、环内滤波器组件225以及解码图像缓冲区组件223。下面对这些组件进行描述。
分割后的视频信号201是捕获到的已经通过译码树(coding tree)分割成像素块的视频序列。译码树使用各种划分模式将像素块细分成较小的像素块。然后,这些块可以进一步被细分成较小的块。这些块可以称为译码树上的节点。较大的父节点被划分成较小的子节点。节点进行细分的次数称为节点/译码树的深度。在一些情况下,划分得到的块可以包括在编码单元(coding unit,CU)中。例如,CU可以是CTU的子部分,包括亮度块、一个或多个红色差色度(Cr)块和一个或多个蓝色差色度(Cb)块以及CU对应的语法指令。划分模式可以包括二叉树(binary tree,BT)、三叉树(triple tree,TT)和四叉树(quad tree,QT),它们用于根据所使用的划分模式将节点分别分割成不同形状的2个、3个或4个子节点。将分割后的视频信号201转发给通用编码器控制组件211、变换缩放和量化组件213、帧内估计组件215、滤波器控制分析组件227和运动估计组件221进行压缩。
通用译码器控制组件211用于根据应用约束做出与将视频序列中的图像译码到码流中相关的决策。例如,通用译码器控制组件211管理码率/码流大小相对于重建质量的优化。这些决策可以根据存储空间/带宽可用性和图像分辨率请求做出。通用译码器控制组件211还根据传输速度来管理缓冲区利用率,以缓解缓存欠载和超载问题。为了解决这些问题,通用译码器控制组件211管理由其它组件进行的分割、预测和滤波。例如,通用译码器控制组件211可以动态提高压缩复杂度以提高分辨率和增加带宽利用率,或者降低压缩复杂度以降低分辨率和带宽利用率。因此,通用译码器控制组件211控制编解码系统200中的其它组件来平衡视频信号重建质量与码率问题。通用译码器控制组件211生成控制数据,这些控制数据用于控制其它组件的操作。还将控制数据转发给标头格式和CABAC组件231,以编码到码流中,从而指示解码器进行解码所使用的参数。
还将分割后的视频信号201发送给运动估计组件221和运动补偿组件219进行帧间预测。分割后的视频信号201的帧或条带可以被分成多个视频块。运动估计组件221和运动补偿组件219相对于一个或多个参考帧中的一个或多个块对所接收到的视频块执行帧间预测译码,以提供时间预测。编解码系统200可以执行多个译码回合,以便为每个视频数据块选择合适的译码模式,等等。
运动估计组件221和运动补偿组件219可以高度集成,但出于概念目的,单独说明。由运动估计组件221执行的运动估计是生成运动矢量的过程,其中,这些运动矢量用于估计视频块的运动。例如,运动矢量可以表示经译码对象相对于预测块的位移。预测块是在像素差方面发现与待译码块高度匹配的块。预测块还可以称为参考块。这种像素差可以通过绝对差异和(sum ofabsolute difference,SAD)、平方差异和(sum of square difference,SSD)或其它差异度量来确定。HEVC使用几个经译码对象,包括CTU、编码树块(coding treeblock,CTB)和CU。例如,CTU可以被分成CTB,CTB然后被分成CB,CB包含在CU中。CU可以被编码为包括预测数据的预测单元(prediction unit,PU)和/或包括CU的变换残差数据的变换单元(transform unit,TU)。运动估计组件221使用率失真分析作为率失真优化过程的一部分来生成运动矢量、PU和TU。例如,运动估计组件221可以确定当前块/帧的多个参考块、多个运动矢量等,并且可以选择具有最佳率失真特性的参考块、运动矢量等。最佳率失真特性平衡了视频重建的质量(例如,压缩造成的数据丢失量)和译码效率(例如,最终编码的大小)。
在一些示例中,编解码系统200可以计算存储在解码图像缓冲区组件223中的参考图像的子整数像素位置的值。例如,视频编解码系统200可以对参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置的值进行插值。因此,运动估计组件221可以相对于整像素位置和分数像素位置执行运动搜索,并输出具有分数像素精度的运动矢量。运动估计组件221通过将PU的位置与参考图像的预测块的位置进行比较,计算经帧间译码条带中的视频块的PU的运动矢量。运动估计组件221将计算到的运动矢量作为运动数据输出到标头格式和CABAC组件231进行编码,并作为运动数据输出到运动补偿组件219。
运动补偿组件219执行的运动补偿可以涉及根据运动估计组件221所确定的运动矢量获取或生成预测块。同样,在一些示例中,运动估计组件221和运动补偿组件219可以在功能上集成。在接收到当前视频块的PU的运动矢量时,运动补偿组件219可以定位运动矢量指向的预测块。然后,从正被译码的当前视频块的像素值中减去预测块的像素值,得到像素差,如此形成残差视频块。一般而言,运动估计组件221相对于亮度分量执行运动估计,运动补偿组件219将根据亮度分量计算到的运动矢量用于色度分量和亮度分量。将预测块和残差块转发给变换缩放和量化组件213。
还将分割后的视频信号201发送给帧内估计组件215和帧内预测组件217。与运动估计组件221和运动补偿组件219一样,帧内估计组件215和帧内预测组件217可以高度集成,但出于概念目的,单独说明。帧内估计组件215和帧内预测组件217相对于当前帧中的各块对当前块进行帧内预测,以替代如上所述的由运动估计组件221和运动补偿组件219在各帧之间执行的帧间预测。具体地,帧内估计组件215确定帧内预测模式以对当前块进行编码。在一些示例中,帧内估计组件215从多个测试的帧内预测模式中选择合适的帧内预测模式对当前块进行编码。然后,将选定的帧内预测模式转发给标头格式和CABAC组件231进行编码。
例如,帧内估计组件215对各种测试的帧内预测模式进行率失真分析来计算率失真值,并在测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定经编码块与经编码以产生经编码块的原始未编码块之间的失真(或误差)量,以及确定用于产生经编码块的码率(例如,比特数)。帧内估计组件215根据各种经编码块的失真和速率计算比率,以确定表现出块的最佳率失真值的帧内预测模式。另外,帧内估计组件215可以用于根据率失真优化(rate-distortion optimization,RDO),使用深度建模模式(depthmodeling mode,DMM)对深度图像的深度块进行译码。
帧内预测组件217在编码器上实现时可以根据由帧内估计组件215确定的选定帧内预测模式从预测块中生成残差块,或者在解码器上实现时,可以从码流中读取残差块。残差块包括预测块与原始块之间的差值,表示为矩阵。然后,将残差块转发给变换缩放和量化组件213。帧内估计组件215和帧内预测组件217可以对亮度分量和色度分量都进行操作。
变换缩放和量化组件213用于进一步压缩残差块。变换缩放和量化组件213将离散余弦变换(discrete cosine transform,DCT)、离散正弦变换(discrete sine transform,DST)等变换或者概念上类似的变换应用于残差块,从而产生包括残差变换系数值的视频块。还可以使用小波变换、整数变换、子频带变换或其它类型的变换。变换可以将残差信息从像素值域转换到变换域,例如频域。变换缩放和量化组件213还用于根据频率等对变换残差信息进行缩放。这种缩放涉及将缩放因子应用于残差信息,使得在不同的粒度下量化不同的频率信息,这可能会影响重建视频的最终视觉质量。变换缩放和量化组件213还用于量化变换系数以进一步降低码率。量化过程可以减小与部分或全部系数相关的位深度。量化程度可以通过调整量化参数来修改。在一些示例中,变换缩放和量化组件213随后可以对包括量化变换系数的矩阵执行扫描。将量化变换系数转发给标头格式和CABAC组件231,以编码到码流中。
缩放和逆变换组件229应用与变换缩放和量化组件213相反的操作以支持运动估计。缩放和逆变换组件229应用逆缩放、逆变换和/或反量化以重建像素域中的残差块。例如,残差块后续用作参考块。该参考块可以成为另一当前块的预测块。运动估计组件221和/或运动补偿组件219可以通过将残差块添加回对应的预测块来计算参考块,以用于后续块/帧的运动估计中。将滤波器应用于重建参考块,以减少在缩放、量化和变换期间产生的伪影。当预测后续块时,这些伪影可能会使预测不准确(并产生额外的伪影)。
滤波器控制分析组件227和环内滤波器组件225将滤波器应用于残差块和/或重建图像块。例如,可以将来自缩放和逆变换组件229的变换残差块与来自帧内预测组件217和/或运动补偿组件219的对应预测块组合以重建原始图像块。然后,可以将滤波器应用于重建图像块。在一些示例中,滤波器还可以应用于残差块。与图2中的其它组件一样,滤波器控制分析组件227和环内滤波器组件225高度集成,可以一起实现,但是出于概念目的,单独描述。将应用于重建参考块的滤波器应用于特定空间区域,这些滤波器包括多个参数以调整使用这些滤波器的方式。滤波器控制分析组件227对重建参考块进行分析,以确定需要使用这些滤波器的位置并设置对应的参数。将这些数据作为滤波器控制数据转发给标头格式和CABAC组件231进行编码。环内滤波器组件225根据滤波器控制数据应用这些滤波器。这些滤波器可以包括去块效应滤波器、噪声抑制滤波器、SAO滤波器和自适应环路滤波器。这些滤波器可以根据示例应用于空间域/像素域(例如,重建像素块)或频域中。
当作为编码器操作时,解码图像缓冲区组件223存储经过滤波的重建图像块、残差块和/或预测块,以供后续用于运动估计中,如上所述。当作为解码器操作时,解码图像缓冲区组件223存储经重建和经滤波的块并将其作为输出视频信号的一部分转发给显示器。解码图像缓冲区组件223可以是任何能够存储预测块、残差块和/或重建图像块的存储设备。
标头格式和CABAC组件231从编解码系统200中的各种组件接收数据,并将这些数据编码到经译码码流中,以发送给解码器。具体地,标头格式和CABAC组件231生成各种标头以对控制数据(例如,通用控制数据和滤波器控制数据)进行编码。此外,将预测数据(包括帧内预测数据和运动数据)以及以量化变换系数数据为形式的残差数据都编码到码流中。最终的码流包括解码器重建原始分割后的视频信号201所需要的所有信息。这些信息还可以包括帧内预测模式索引表(还称为码字映射表)、各种块的编码上下文的定义、最可能帧内预测模式的指示、分割信息的指示等。这些数据可以通过熵编码来编码。例如,这些信息可以通过上下文自适应可变长度编码(context adaptive variable length coding,CAVLC)、CABAC、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptive binary arithmetic coding,SBAC)、概率区间分割熵(probability intervalpartitioning entropy,PIPE)编码或其它熵编码技术来编码。在熵编码之后,可以将经译码码流发送给另一设备(例如,视频解码器)或存档以供后续传输或检索。
图3为示例性视频编码器300的框图。视频编码器300可以用于实现编解码系统200的编码功能和/或执行操作方法100中的步骤101、步骤103、步骤105、步骤107和/或步骤109。编码器300对输入视频信号进行分割,得到分割后的视频信号301,其基本上类似于分割后的视频信号201。然后,通过编码器300中的组件压缩分割后的视频信号301并编码到码流中。
具体地,将分割后的视频信号301转发给帧内预测组件317进行帧内预测。帧内预测组件317可以基本上类似于帧内估计组件215和帧内预测组件217。还将分割后的视频信号301转发给运动补偿组件321,以根据解码图像缓冲区组件323中的参考块进行帧间预测。运动补偿组件321可以基本上类似于运动估计组件221和运动补偿组件219。将来自帧内预测组件317和运动补偿组件321的预测块和残差块转发给变换和量化组件313进行残差块的变换和量化。变换和量化组件313可以基本上类似于变换缩放和量化组件213。将变换量化残差块和对应的预测块(与相关的控制数据一起)转发给熵编码组件331,以译码到码流中。熵编码组件331可以基本上类似于标头格式和CABAC组件231。
还将变换量化残差块和/或对应的预测块从变换和量化组件313转发给逆变换和反量化组件329,以重建为参考块供运动补偿组件321使用。逆变换和反量化组件329可以基本上类似于缩放和逆变换组件229。根据示例,环内滤波器组件325中的环内滤波器还应用于残差块和/或重建参考块。环内滤波器组件325可以基本上类似于滤波器控制分析组件227和环内滤波器组件225。环内滤波器组件325可以包括多个滤波器,如参照环内滤波器组件225所述。然后,将经滤波的块存储在解码图像缓冲区组件323中,以作为参考块供运动补偿组件321使用。解码图像缓冲区组件323可以基本上类似于解码图像缓冲区组件223。
图4为示例性视频解码器400的框图。视频解码器400可以用于实现编解码系统200的解码功能和/或执行操作方法100中的步骤111、步骤113、步骤115和/或步骤117。解码器400从编码器300等接收码流,并根据码流生成重建输出视频信号,以向终端用户显示。
码流由熵解码组件433接收。熵解码组件433用于执行熵解码方案,例如CAVLC、CABAC、SBAC、PIPE解码或其它熵解码技术。例如,熵解码组件433可以使用标头信息来提供上下文以解析在码流中编码为码字的附加数据。经解码信息包括对视频信号进行解码所需的任何信息,例如,通用控制数据、滤波器控制数据、分割信息、运动数据、预测数据和残差块中的量化变换系数。将量化变换系数转发给逆变换和反量化组件429,以重建为残差块。逆变换和反量化组件429可以类似于逆变换和反量化组件329。
将重建残差块和/或预测块转发给帧内预测组件417,以根据帧内预测操作重建为图像块。帧内预测组件417可以类似于帧内估计组件215和帧内预测组件217。具体地,帧内预测组件417使用预测模式来定位帧中的参考块,并将残差块应用于上述结果中以重建帧内预测图像块。将重建帧内预测图像块和/或残差块以及对应的帧间预测数据通过环内滤波器组件425转发给解码图像缓冲区组件423。解码图像缓冲区组件423和环内滤波器组件425可以基本上分别类似于解码图像缓冲区组件223和环内滤波器组件225。环内滤波组件425对重建图像块、残差块和/或预测块进行滤波。这些信息存储在解码图像缓冲区组件423中。将来自解码图像缓冲区组件423的重建图像块转发给运动补偿组件421进行帧间预测。运动补偿组件421可以基本上类似于运动估计组件221和/或运动补偿组件219。具体地,运动补偿组件421使用参考块的运动矢量来生成预测块,并将残差块应用于上述结果以重建图像块。还可以通过环内滤波器组件425将所得到的重建块转发给解码图像缓冲区组件423。解码图像缓冲区组件423继续存储其它重建图像块。这些重建图像块可以通过分割信息重建为帧。这些帧还可以放置在一个序列中。该序列作为重建输出视频信号输出到显示器。
图5为从VR图像视频流500中划分出来的多个子图像视频流501、502和503的示意图。例如,子图像视频流501至503和/或VR图像视频流500可以由编码器(例如,编解码系统200和/或编码器300)根据方法100进行编码。此外,子图像视频流501至503和/或VR图像视频流500可以由解码器(例如,编解码系统200和/或解码器400)进行解码。
VR图像视频流500包括随时间呈现的多个图像。具体地,VR通过对视频内容组成的球体进行译码来操作,这些视频内容显示起来就像用户处于球体的中心一样。每个图像都包括整个球体。同时,向用户显示的只是图像的一部分,称为视角(viewport)。例如,用户可以使用头盔式显示器(head mounted display,HMD),HMD根据用户的头部移动选择和显示球体的视角。这样产生了身临视频所描绘的虚拟空间的效果。为了实现这一效果,视频序列中的每个图像包括对应时刻的视频数据组成的整个球体。但是,向用户显示的只是图像的一小部分(例如,单个视角)。图像的其余部分被丢弃,而不进行显示。通常传输的是整个图像,使得可以根据用户的头部移动,动态地选择和显示不同的视角。
在所示的示例中,VR图像视频流500中的图像都可以根据可用视角被细分成子图像。因此,每个图像和对应的子图像包括作为呈现一部分的图像顺序编号。子图像视频流501至503是在随着时间的推移一致应用细分时产生的。这种一致细分产生子图像视频流501至503,其中,每个流包括相对于VR图像视频流500中的对应图像具有预定大小、形状和空间位置的一组子图像。此外,子图像视频流501至503中的子图像的图像顺序编号随呈现时间而发生变化。因此,子图像视频流501至503中的子图像可以根据图像顺序相对于呈现时间进行对齐。然后,子图像视频流501至503中的每个图像顺序编号值的子图像可以根据预定义的空间位置在空间域中合并,以重建VR图像视频流500进行显示。具体地,子图像视频流501至503可以分别被编码到单独的子码流中。当这些子码流合并在一起时,它们会产生一个码流,该码流包括呈现时间内的整个图像集。得到的码流可以传输给解码器,以根据用户当前选择的视角进行解码和显示。
VR视频存在的其中一个问题是,所有子图像视频流501至503可以高质量(例如,高分辨率)地传输给用户。这样使得解码器可以动态地选择用户的当前视角,并实时显示对应子图像视频流501至503中的一个或多个子图像。但是,用户可以只从子图像视频流501等观看单个视角,而子图像视频流502和503被丢弃。因此,高质量传输子图像视频流502和503可能会浪费大量带宽。为了提高译码效率,VR视频可以被编码到多个视频流500中,其中,每个视频流500以不同的质量/分辨率进行编码。这样,解码器可以传输对当前子图像视频流501的请求。作为响应,编码器(或中间条带器或其它内容服务器)可以从高质量的视频流500中选择高质量的子图像视频流501,而从低质量的视频流500中选择低质量的子图像视频流502和503。然后,编码器可以将这些子码流合并成一个完整的经编码码流,以传输给解码器。这样,解码器接收一系列图像,其中,当前视角的质量高,而其它视角的质量低。此外,最高质量的子图像通常显示给用户(没有头部移动),而低质量的子图像通常被丢弃,这样平衡了功能与译码效率。
如果用户从观看子图像视频流501转向观看子图像视频流502,则解码器请求以高质量传输的新的当前子图像视频流502。然后,编码器可以相应地改变合并机制。解码器只能从IRAP图像开始解码新的CVS。这是因为IRAP图像是根据帧内预测进行译码的,这样不参考其它图像。因此,即使在IRAP图像之前的图像不可用,IRAP图像也可以被解码。非IRAP图像是根据帧间预测进行译码的。因此,如果不先根据参考图像列表解码一组对应的参考图像,则非IRAP图像不能被解码。因此,解码器通常不能从非IRAP图像开始解码视频序列。由于存在这些约束,所以低质量显示子图像视频流502,直到到达IRAP图像/子图像。然后可以高质量解码IRAP图像,以开始解码子图像视频流502的高质量版本。这种方法显著改善了视频压缩,而不会对用户的观看体验产生不好影响。
上述办法存在的一个问题是,改变分辨率所需的时长基于在视频流中到达IRAP图像之前的时长。这是因为解码器不能从非IRAP图像开始解码不同版本的子图像视频流502。减少这种延迟的一种方法是包括更多的IRAP图像。但是,这样增大了文件大小。为了平衡功能与译码效率,不同的视角/子图像视频流501至503可以包括不同频率下的IRAP图像。例如,更有可能被观看的视角/子图像视频流501至503可能比其它视角/子图像视频流501至503具有更多的IRAP图像。例如,在篮球运动中,由于用户不太可能观看那些观看看台或天花板的视角/子图像视频流501至503,所以相比之下,与篮筐和/或中场相关的视角/子图像视频流501至503可以包括更高频率下的IRAP图像。
这种方法会产生其它问题。具体地,子图像视频流501至503中共享POC的的子图像是单个图像的一部分。如上所述,图像中的条带根据图像类型包括在NAL单元中。在一些视频译码系统中,与单个图像相关的所有NAL单元都被约束为包括相同NAL单元类型。当不同的子图像视频流501至503包括不同频率下的IRAP图像时,有些图像既包括IRAP子图像,也包括非IRAP子图像。这样违背了每个图像只可以使用相同类型的NAL单元的约束。
这一问题可以通过解除图像中条带的所有NAL单元使用相同NAL单元类型的约束来解决。例如,图像包括在接入单元中。通过解除这种约束,接入单元既可以包括IRAP NAL单元类型,也可以包括非IRAP NAL单元类型。此外,可以编码标志以表示图像/接入单元何时包括IRAP NAL单元类型和非IRAP NAL单元类型的混合单元类型。在一些示例中,标志是图像标志中的混合NAL单元类型(mixed_nalu_types_in_pic_flag)。另外,约束可以用于要求单个混合图像/接入单元只能包括一种IRAP NAL单元和一种非IRAP NAL单元。这样可以避免出现未预期的混合NAL单元类型。如果可以存在这些混合单元类型,则解码器必须设计成管理这些混合单元类型。这样会不必要地增加所需的硬件复杂度,但对译码过程没有额外帮助。例如,混合图像可以包括选自IDR_W_RADL、IDR_N_LP或CRA_NUT中的一种IRAP NAL单元。此外,混合图像可以包括选自TRAIL_NUT、RADL_NUT和RASL_NUT中的一种非IRAP NAL单元。
图6为在当前图像包括混合NAL单元类型时使用的约束600的示意图。约束600可以在对VR图像视频流500进行译码时使用。因此,约束600可以由编码器(例如,应用方法100的编解码系统200和/或编码器300)使用。此外,约束600可以由解码器(例如,应用方法100的编解码系统200和/或解码器400)使用。约束600是对视频数据、支持参数和/或与视频数据编码和/或解码相关的过程提出的要求。
具体地,图6示出了已经被分成子图像的一系列图像。子图像表示为子图像A(subpicA)601和子图像B(subpicB)603。子图像(即subpicA 601和subpicB 603)是一系列图像内的一个或多个条带组成的矩形区域和/或正方形区域。subpicA 601和subpicB 603可以包含在子图像视频流(例如,图5中的子图像视频流501至503中的任一个子图像视频流)中。为了论述清楚,只显示了两个子图像,但可以使用任意数量的子图像。
图像(picture)是创建帧(frame)或其场的亮度样本和/或色度样本组成的阵列。图像是按照解码顺序650进行编码和/或解码的。解码顺序是语法元素通过解码过程进行处理的顺序。随着解码顺序继续,解码过程通过图像继续。为了论述清楚,当前在特定时刻正被编码/解码的图像称为当前图像620。已经被编码/解码的图像是前一图像610。尚未被解码的图像是后续图像630和/或640。如图6所示,图像被一致分割成subpicA 601和subpicB603。因此,前一图像610、当前图像620以及后续图像630和640都被分割成和/或包括subpicA601和subpicB 603。
如上所述,IRAP子图像可以在一些示例中以不同的频率使用。在所示的示例中,当前图像620包括不具有相同NAL单元类型的多个VCL NAL单元。具体地,当前图像620中的subpicA 601包括IRAP NAL单元621,而当前图像620中的subpicB 603包括非IRAP NAL单元623。IRAP NAL单元621是包括来自IRAP图像或子图像的数据的数据结构。IRAP图像/子图像是根据帧内预测译码的图像/子图像,这表示解码器可以从对应的图像/子图像开始解码视频序列,无需参考在IRAP图像/子图像之前的图像。IRAP NAL单元621可以包括CRA NAL单元和/或IDR NAL单元。CRA图像/子图像是不刷新DPB的IRAP图像/子图像,而IDR图像/子图像是刷新DPB的IRAP图像/子图像。非IRAP NAL单元623是不包括IRAP图像/子图像的任一VCLNAL单元。例如,非IRAP NAL单元623可以包括前置图像,例如跳过随机接入前置(randomaccess skipped leading,RASL)图像或可解码随机接入前置(random access decodableleading,RADL)图像,还可以包括后置图像。前置图像按照呈现顺序在IRAP图像之前,但按照解码顺序650出现在IRAP图像之后。后置图像按照呈现顺序和解码顺序650都出现在IRAP图像之后。非IRAP NAL单元623可以是根据帧间预测译码的。因此,当前图像620是根据subpicB 603中的帧间预测和subpicA 601中的帧内预测译码的。
前一图像610包括非IRAP NAL单元611和非IRAP NAL单元613,后续图像630包括非IRAP NAL单元631和非IRAP NAL单元633,后续图像640包括非IRAP NAL单元641和非IRAPNAL单元643。非IRAP NAL单元611、613、631、633、641和643可以类似于非IRAP NAL单元623(例如,可以是根据帧间预测译码的),但可能包括不同的视频数据。
由于当前图像620包括不具有相同NAL单元类型的VCLNAL单元,所以当前图像620是混合NAL单元图像。混合NAL单元图像的存在可以通过码流中的参数集中的标志来指示(signal)。约束600在遇到混合NAL单元图像(例如当前图像620)时使用。
在编码过程中,编码器可以确定当前图像620中的subpicA 601与IRAP NAL单元类型相关联,因此包括IRAP NAL单元621。这表示当前图像620中的subpicA 601可以作为边界,而且防止subpicA 601中的帧间预测跨当前图像620参考。因此,非IRAP NAL单元631不能参考非IRAP NAL单元611或在IRAP NAL单元621之前的任何其它NAL单元。通过确保当前图像的位于subpicA 601中的所有条带与相同NAL单元类型相关联,编码器可以对当前图像620进行编码。例如,当subpicA 601包括至少一个CRA条带(或IDR条带)时,subpicA 601中的所有条带也必须是CRA(或IDR)条带。然后,根据NAL单元类型(例如,帧内预测和帧间预测)对当前图像620的条带(包括IRAP NAL单元621和非IRAP NAL单元623)进行编码。按照解码顺序650在当前图像620之后的后续图像630和640也被编码。为了确保IRAP NAL单元621可以阻止帧间预测传播,防止非IRAP NAL单元631和641参考632前一图像610。参考632是通过参考图像列表控制的,其中,参考图像列表中的活动条目表示当前正被译码的图像可使用的参考图像。因此,约束600确保了与位于后续图像630和640中的subpicA 601中的条带(例如,非IRAP NAL单元631和641)相关联的活动条目在当前图像620中的subpicA 601与具有IRAP NAL单元类型的IRAP NAL单元621相关联时不参考(refer to/reference)632解码顺序650在当前图像620之前的任一参考图像。非IRAP NAL单元631仍然可以参考当前图像620和/或后续图像640。此外,非IRAP NAL单元641仍然可以参考当前图像620和/或后续图像630。这样停止了非IRAP NAL单元631和641的帧间预测传播,因为非IRAP NAL单元631和641在subpicA601中的IRAP NAL单元621之后。这时,后续图像630和/或640可以根据NAL单元类型并按照约束600进行编码。
这种约束600不适用于非IRAP NAL单元633和643,因为它们位于subpicB603中,因此不在subpicB603中的IRAP NAL单元之后。因此,非IRAP NAL单元633和643可以参考634前一图像610。因此,与非IRAP NAL单元633和643相关联的参考图像列表中的活动条目可以分别参考前一图像610、当前图像620和/或后续图像640或630。以这种方式,IRAP NAL单元621中断了subpicA601的帧间预测,但是IRAP NAL单元621不停止subpicB603的帧间预测传播。因此,通过使用约束600,帧间预测链可以通过子图像停止(或不停止)。如上所述,只显示了2个子图像。但是,约束600可以应用于任一数量的子图像,以便通过子图像停止帧间预测参考链的传播。
图7为包括参考图像列表(reference picture list,RPL)的示例性RPL结构700的示意图。RPL结构700可以用于存储在单向帧间预测和/或双向帧间预测中使用的参考图像的指示。因此,RPL结构700可以由编解码系统200、编码器300和/或解码器400在执行方法100时使用。此外,RPL结构700可以在对VR图像视频流500进行译码时使用,在这种情况下,RPL结构700可以是根据约束600译码的。
RPL结构700是包括RPL0711和RPL1 712等多个参考图像列表的可寻址语法结构。RPL结构700可以被译码和/或推导出,以在译码对应条带时使用。根据示例,RPL结构700可以存储在码流的SPS和/或条带头中。参考图像列表(例如RPL0711和RPL1 712)是表示用于帧间预测的参考图像的列表。RPL0711和RPL1 712都可以包括多个条目715。RPL结构条目715是RPL结构700中的可寻址位置,表示与参考图像列表(例如RPL0711和/或RPL1 712)相关联的参考图像。每个条目715可以包括参考用于帧间预测的图像的图像顺序编号(picture order count,POC)值(或其它指针(pointer)值)。具体地,单向帧间预测使用的图像的参考图像存储在RPL0711中,双向帧间预测使用的图像的参考图像存储在RPL0711和RPL1 712中。例如,双向帧间预测可以使用通过RPL0711表示的一个参考图像和通过RPL1712表示的一个参考图像。
在一个具体示例中,RPL结构700可以表示为ref_pic_list_struct(listIdx,rplsIdx),其中,列表索引(listIdx)721标识参考图像列表RPL0 711和/或RPL1 712,参考图像列表结构索引(rplsIdx)725标识参考图像列表中的条目715。因此,ref_pic_list_struct是根据listIdx 721和rplsIdx 725返回条目715的语法结构。编码器可以对用于视频序列中的每个非帧内译码条带的RPL结构700的一部分进行编码。然后,解码器可以在对编码视频序列中的每个非帧内译码条带进行解码之前解析RPL结构700的对应部分。表示在根据帧间预测对当前图像进行译码时可使用的参考图像的条目715称为活动条目。不能用于当前图像的条目715称为非活动条目。
图8为包括具有混合NAL单元类型的图像的示例性码流800的示意图。例如,码流800可以由编解码系统200和/或编码器300生成,以由编解码系统200和/或解码器400根据方法100进行解码。此外,码流800可以包括从多个子图像视频流501至503以多个视频分辨率合并得到的VR图像视频流500。此外,码流800可以包括根据约束600进行译码的RPL结构700。
码流800包括序列参数集(sequence parameter set,SPS)810、多个图像参数集(picture parameter sets,PPS)811、多个条带头815和图像数据820。SPS 810包括码流800中包括的视频序列中所有图像共用的序列数据。这些数据可以包括图像大小、位深度、译码工具参数、码率限制等。PPS 811包括应用于整个图像的参数。因此,视频序列中的每个图像都可以参考PPS 811。需要说明的是,虽然每个图像都参考PPS 811,但在一些示例中,单个PPS 811可以包括多个图像的数据。例如,多个类似图像可以根据类似的参数进行译码。在这种情况下,单个PPS 811可以包括这些类似图像的数据。PPS 811可以表示量化参数、偏移、可用于对应图像中条带的译码工具等。条带头815包括图像中每个条带特有的参数。因此,视频序列中的每个条带都可以存在一个条带头815。条带头815可以包括条带类型信息、图像顺序编号(picture order count,POC)、参考图像列表、预测权重、分块入口点(tileentry point)、去块效应滤波参数等。需要说明的是,在一些上下文中,条带头815还可以称为分块组头。
图像数据820包括根据帧间预测和/或帧内预测编码的视频数据以及对应的变换和量化残差数据。例如,视频序列包括译码为图像数据820的多个图像821。图像821是视频序列中的单帧,因此在显示视频序列时通常作为单个单元显示。但是,子图像823可以显示用来实现某些技术,例如虚拟现实。图像821都参考PPS 811。图像821可以被分成为子图像823、分块和/或条带。子图像823是图像821中的空间区域,一致应用于编码视频序列之上。因此,子图像823可以由HMD在VR背景中显示。此外,具有指定POC的子图像823可以从对应分辨率的子图像视频流501至503中获得。子图像823可以参考SPS 810。在一些系统中,条带825称为包括分块的分块组。条带825和/或分块的分块组参考条带头815。条带825可以被定义为图像821中的整数个完整分块或图像821中的分块内的整数个连续完整编码树单元(coding tree unit,CTU)行,这些分块或CTU行只包括在单个NAL单元中。因此,条带825进一步被分成CTU和/或编码树块(coding tree block,CTB)。CTU/CTB根据译码树(codingtree)进一步被分成译码块(coding block)。然后,译码块可以根据预测机制进行编码/解码。
参数集和/或条带825是在NAL单元中译码的。NAL单元可以被定义一种语法结构,包括要遵循的数据类型的指示和以RBSP的形式包括数据的字节,必要时穿插有预防混淆字节。具体地,NAL单元是包括图像821中的参数集或条带825和对应的条带头815的存储单元。具体地,VCL NAL单元840是包括图像821中的条带825和对应的条带头815的NAL单元。此外,非VCL NAL单元830包括参数集,例如SPS 810和PPS 811。可以使用几种NAL单元。例如,SPS810和PPS 811可以分别包括在SPS NAL单元类型(SPS_NUT)831和PPS NAL单元类型(PPS_NUT)832中,这两种单元类型都是非VCL NAL单元830。因此,解码器可以从码流800中读取SPS_NUT 831,得到由编码器译码的SPS 810。类似地,解码器可以从码流800中读取PPS_NUT832,得到由编码器译码的PPS 811。
IRAP图像/子图像中的条带825可以包括在IRAP NAL单元845中。前置图像和后置图像等非IRAP图像/子图像中的条带825可以包括在非IRAP NAL单元849中。例如,条带825可以包括在单个VCL NAL单元840中。然后,VCL NAL单元840可以根据包括条带825的图像821和/或子图像823的类型分配到类型标识符。例如,从作为CRA子图像的子图像823中获取的条带825包括在CRA_NUT 843中。码流800包括几种IRAP NAL单元845,因此包括图像/子图像类型,包括未伴随前置图像的IDR图像、伴随可解码随机接入前置(random accessdecodable leading,RADL)图像的IDR图像,以及CRA图像。码流800还包括几种非IRAP NAL单元849,因此包括图像/子图像类型,包括跳过随机接入前置(random access skippedleading,RASL)图像、RADL图像和后置图像。
前置图像是按照解码顺序在IRAP图像之后但按照呈现顺序在该图像之前译码的图像。IRAP NAL单元845是包括从IRAP图像或子图像中获取的条带825的任一NAL单元。非IRAP NAL单元849是包括从不是IRAP图像或子图像的任一图像(例如,前置图像或后置图像)中获取的条带825的任一NAL单元。IRAP NAL单元845和非IRAP NAL单元849都是VCL NAL单元840,因为它们都包括条带数据。在一个示例性实施例中,IRAP NAL单元845可以包括IDR_N_LP NAL单元841或IDR_w_RADL NAL单元842中的未伴随前置图像的IDR图像或伴随RADL图像的IDR图像中的条带825。此外,IRAP NAL单元845可以包括CRA_NUT 843中的CRA图像中的条带825。在一个示例性实施例中,非IRAP NAL单元849可以包括RASL_NUT 846、RADL_NUT 847或TRAIL_NUT 848中的RASL图像、RADL图像或后置图像中的条带825。在一个示例性实施例中,下面示出了按照NAL单元类型排序的可能NAL单元的完整列表。
如上所述,VR视频流可以包括子图像823和不同频率下的IRAP图像。这使得用户不太可能观看的空间区域要使用更少的IRAP图像,而用户可能经常观看的空间区域要使用更多的IRAP图像。这样,用户可能定期切换回的空间区域可以快速调整到更高分辨率。当这种方法产生同时包括IRAP NAL单元845和非IRAP NAL单元849的图像821时,图像821称为混合图像。这种条件可以通过图像标志(mixed_nalu_types_in_pic_flag)827中的混合NAL单元类型指示。mixed_nalu_types_in_pic_flag 827可以设置在PPS 811中。此外,mixed_nalu_types_in_pic_flag 827在表示参考PPS 811的每个图像821包括多个VCL NAL单元840且VCL NAL单元840不具有相同NAL单元类型(nal_unit_type)值时可以设置为1。此外,当参考PPS 811的每个图像821包括一个或多个VCL NAL单元840且参考PPS 811的每个图像821中的VCL NAL单元840都具有相同nal_unit_type值时,mixed_nalu_types_in_pic_flag 827可以设置为0。
此外,可以使用各种约束,使得当设置了mixed_nalu_types_in_pic_flag 827时,图像821中的一个或多个子图像823中的VCL NAL单元840都具有NAL单元类型的第一特定值,而图像821中的其它VCLNAL单元840都具有NAL单元类型的不同的第二特定值。例如,约束可以要求混合图像821包括一种IRAP NAL单元845和一种非IRAP NAL单元849。例如,图像821可以包括一个或多个IDR_N_LP NAL单元841、一个或多个IDR_w_RADL NAL单元842,或者一个或多个CRA_NUT 843,但不包括这些IRAP NAL单元845的任意组合。此外,图像821可以包括一个或多个RASL_NUT 846、一个或多个RADL_NUT 847,或者一个或多个TRAIL_NUT848,但不包括这些IRAP NAL单元845的任意组合。另外,子图像823可以被约束为只包括一种VCL NAL单元840。此外,约束600可以根据码流800中使用的VCLNAL单元840的类型应用于子图像823。
下面更详细地描述上述信息。在视频编解码规范中,图像类型可以用于定义解码过程。这可以包括推导图像识别(例如POC)、标识(DPB中的)参考图像状态、从DPB输出图像等。
在AVC和HEVC中,图像类型可以从包括经译码图像的NAL单元类型中识别出。AVC中的图像类型包括IDR图像和非tDR图像。HEVC中的图像类型包括后置图像、时间子层接入(temporal sub-layer access,TSA)图像、步进式时间子层接入(step-wise temporalsub-layer access,STSA)图像、可解码随机接入前置(random access decodable leading,RADL)图像、跳过随机接入前置(random access skipped leading,RASL)图像、断点连接接入(broken-link access,BLA)图像、IDR图像和CRA图像。HEVC中的这些图像类型都可以进一步区分为子层参考图像或子层非参考图像。BLA图像还可以包括伴随前置图像的BLA图像、伴随RADL图像的BLA图像和未伴随前置图像的BLA图像。IDR图像可以包括伴随RADL图像的IDR图像和未伴随前置图像的IDR图像。
在HEVC中,IDR图像、BLA图像和CRA图像都是IRAP图像。VVC使用IDR图像和CRA图像作为IRAP图像。IRAP图像提供以下功能/优势。IRAP图像的存在表示解码过程可以从该图像开始。这个功能支持随机接入功能,即只要IRAP图像存在于码流中的一个位置上,解码过程就可以从该位置开始。该位置可能不在码流的起始处。IRAP图像的存在还可以刷新解码过程,使得在IRAP图像之后的经译码图像(不包括RASL图像)是在不参考IRAP图像之前的图像的情况下译码的。因此,IRAP图像避免了在IRAP图像之前发生的错误传播到解码顺序在IRAP图像之后的图像。
IRAP图像提供了上述功能,但降低了压缩效率。IRAP图像的存在还导致码率激增。压缩效率降低有两个原因。首先,IRAP图像是帧内预测图像,因此表示IRAP图像比表示帧间预测图像使用更多的比特。其次,当参考图像从DPB中移除时,IRAP图像的存在会刷新解码过程,这样可能会中断时间预测。因此,在IRAP图像之后的图像的译码效率较低,因为可用于帧间预测的参考图像较少。
HEVC中的IDR图像可以通过与其它图像类型不同的方式推导和指示。其中一些差异如下所述。当指示和推导IDR图像的POC值时,POC的最高有效位(most significant bit,MSB)可以设置为0,而不是根据前一关键图像推导。此外,IDR图像的条带头可能不包括用于协助参考图像管理的信息。对于CRA图像和后置图像等其它图像类型,参考图像集(reference picture set,RPS)或参考图像列表信息可以用于参考图像标识过程。这一过程用于确定DPB中参考图像的状态为用于参考或不用于参考。对于IDR图像,可以不指示这些信息,因为IDR图像的存在表示解码过程需要将DPB中的所有参考图像都标识为不用于参考。
除图像类型之外,图像识别还用于多种目的。这包括帧间预测中的参考图像的图像识别、识别从DPB中输出的图像、识别用于运动矢量缩放的图像、识别用于加权预测的图像等。在AVC和HEVC中,图像可以通过POC识别。在AVC和HEVC中,DPB中的图像可以被标识为用于短期参考、用于长期参考或不用于参考。一旦图像被标识为不用于参考,该图像就不能再用于预测。当图像不再需要输出时,该图像可以从DPB中移除。AVC使用短期参考图像和长期参考图像。当参考图像不再需要用于预测参考时,该图像可以被标识为不用于参考。短期参考、长期参考、不用于参考之间的转换是通过解码参考图像标识过程控制的。隐式滑动窗口过程和显式内存管理控制操作(memory management control operation,MMCO)过程可以用作解码参考图像标识机制。当参考帧的数量等于SPS中指定的最大数量时,滑动窗口过程将短期参考图像标识为不用于参考。短期参考图像以先入先出的方式存储,使得最近解码的短期图像保存在DPB中。显式MMCO过程可以包括多个MMCO命令。MMCO命令可以将一个或多个短期或长期参考图像标识为不用于参考,或将所有图像标识为不用于参考。MMCO命令还可以将当前参考图像或现有的短期参考图像标识为长期参考图像,然后将长期图像索引分配给该长期参考图像。在AVC中,参考图像标识操作以及从DPB中输出和移除图像的过程是在对图像完成解码之后执行的。
HEVC使用RPS进行参考图像管理。RPS对于每个条带可以包括当前图像或任何后续图像使用的完整参考图像集。因此,RPS指示需要保存在DPB中以供当前图像或后续图像使用的所有图像的完整集合。这与AVC方案不同,AVC方案中只指示DPB的相对变化。为了保持DPB中参考图像的正确状态,RPS可能不会在解码时保存靠前图像的信息。HEVC中的图像解码和DPB操作的顺序利用了RPS的优点并提高了抗误码能力。在AVC中,图像标识和缓冲操作可以是在当前图像完成解码之后执行的。在HEVC中,首先从当前图像的条带头中解码RPS。然后,在对当前图像进行解码之前应用图像标识和缓冲操作。
VVC可以直接指示和推导参考图像列表0和参考图像列表1。参考图像列表不像在HEVC和AVC中那样基于RPS、滑动窗口或MMCO过程。参考图像标识是通过利用参考图像列表中的活动和非活动条目根据参考图像列表0和1直接执行的。只有活动条目可以用作当前图像中的CTU的帧间预测中的参考索引。用于推导两个参考图像列表的信息通过SPS、PPS和条带头中的语法元素和语法结构指示。预定义的RPL结构在SPS中指示,以供在条带头中进行参考。为所有类型的条带生成两个参考图像列表,这些条带包括双向帧间预测(B)条带、单向帧间预测(P)条带和帧内预测(I)条带。两个参考图像列表的构建没有使用参考图像列表初始化过程或参考图像列表修改过程。长期参考图像(long-term reference picture,LTRP)通过POC LSB识别。LTRP的增量POC MSB周期可以根据需要以图像为基础进行指示。
HEVC可以使用常规条带、独立条带、分块和波前并行处理(Wavefront ParallelProcessing,WPP)作为分割方案。这些分割方案可以应用于最大传输单元(maximumtransfer unit,MTU)大小匹配、并行处理和降低端到端时延。每个常规条带可以封装在单独的NAL单元中。熵编码依赖关系和帧内预测(包括样本内预测、运动信息预测和译码模式预测)可以跨条带边界禁用。因此,常规条带可以独立于同一图像中的其它常规条带进行重建。但是,由于环路滤波操作,条带可能仍然存在一些相互依赖关系。
基于常规条带的并行化可能不需要大量的处理器间或核间通信。一个例外情况是,在对经预测译码的图像进行解码时,处理器间和/或核间数据共享可能对运动补偿非常重要。由于是帧内预测,这一过程涉及的处理资源可能比处理器间或核间数据共享使用的处理资源多。但是,出于同样的原因,使用常规条带可能会由于条带头的比特成本以及缺乏跨条带边界的预测而产生大量译码开销。此外,由于常规条带具有帧内独立性以及每个常规条带都封装在单独的NAL单元中,所以常规条带还用作码流分割机制,以匹配MTU大小要求。在许多情况下,实现并行化和MTU大小匹配这两个目标对图像内的条带布局提出了互相矛盾的要求。
非独立条带具有短的条带头,并且可以在树块边界处对码流进行分割,而不会中断任何帧内预测。非独立条带可以将常规条带分割成多个NAL单元。这样通过先完成整个常规条带的编码,然后将该常规条带的一部分传输出去,降低了端到端时延。
在WPP中,图像被分割成多个单行CTB。熵解码和预测可以使用来自其它分割部分中的CTB的数据。并行处理可以通过CTB的并行解码实现。根据示例,CTB行解码的开始可以延迟一个或两个CTB,以确保在当前CTB进行解码之前,与当前CTB上方和右侧的CTB相关的数据可用。这种交错式开始解码产生了波面的样子。这个过程使用与图像中包括的CTB行一样多的处理器/核来支持并行化。由于支持在图像内的相邻树块行之间进行帧内预测,所以可能需要大量处理器间/核间通信来实现帧内预测。WPP分割不会产生额外的NAL单元。因此,WPP不能用于MTU大小匹配。但是,如果需要MTU大小匹配,则常规条带可以与WPP一起使用,产生一定的译码开销。
分块定义了将图像分割成分块列和行的水平和垂直边界。CTB的扫描顺序可以是按照分块内的CTB光栅扫描顺序在一个分块内执行扫描的顺序。因此,一个分块可以完全解码,然后按照图像的分块光栅扫描顺序对下一分块中的左上方CTB进行解码。与常规条带类似,分块打破了帧内预测依赖关系以及熵解码依赖关系。但是,分块可以不包括在各个NAL单元中。因此,分块不能用于MTU大小匹配。每个分块都可以由一个处理器/核进行处理。在对相邻分块进行解码的处理单元之间、用于帧内预测的处理器间/核间通信可能只限于在条带包括多个分块时发送共享的条带头以及执行重建样本和元数据的环路滤波相关共享。当条带中包括多个分块或WPP段时,除条带中的第一个分块或WPP段以外,每个分块和WPP段的入口点字节偏移都可以指示在条带头中。
为了简单起见,HEVC对四种不同的图像分割方案的应用提出了一些限制。编码视频序列不能包括HEVC中详述的大多数档次(profile)中的分块和波面。此外,对于每个条带和/或分块,必须满足以下条件中的任一个或两个。条带中的所有经译码树块都包括在同一分块中。此外,分块中的所有经译码树块都包括在同一条带中。另外,波前段正好包括一个CTB行。当使用WPP时,从CTB行开始的条带需要在同一CTB行中结束。
HEVC可以包括时间运动约束分块集(temporal motion constrained tile set,MCTS)补充增强信息(supplemental enhancement information,SEI)消息、MCTS提取信息集SEI消息和MCTS提取信息嵌套SEI消息。时间MCTS SEI消息表示码流中存在MCTS并指示MCTS。对于MCTS,运动矢量被限制为指向MCTS内部的整样本位置以及指向只使用MCTS内部的整样本位置进行插值的分数样本位置。禁止使用根据MCTS外部的块推导的用于时间运动矢量预测的运动矢量候选。这样,每个MCTS可以独立解码,不需要MCTS中不包括的分块。MCTS提取信息集SEI消息提供补充信息,补充信息可以用于MCTS子码流提取中,以生成用于MCTS集的一致性码流。这些信息包括多个提取信息集,每个提取信息集定义多个MCTS集并包括要在MCTS子码流提取过程中使用的替换视频参数集(replacement video parameterset,VPS)、SPS和PPS的RBSP字节。当根据MCTS子码流提取过程提取子码流时,VPS、SPS、PPS等参数集可能会被重写或替换。条带头也可能被更新,因为一个或多个条带地址相关语法元素在子码流提取之后可能包括不同的值。
VVC可以如下所述对图像进行分割。图像可以被分成分块组和分块。分块可以是覆盖图像的矩形区域的一系列CTU。分块组还称为条带,可以包括图像中的多个分块。条带/分块组可以根据光栅扫描模式和矩形模式配置。在光栅扫描模式中,分块组/条带包括相对于图像边界按照光栅扫描顺序排列的一系列分块。在矩形模式中,分块组/条带包括共同组成图像的矩形区域的多个分块。矩形分块组内的分块相对于分块组/条带按照光栅扫描顺序包括在内。
360度视频应用(例如,VR)只能显示内容组成的球体的一部分,因此只能显示整个图像的子集。视角相关的360度传输可以用于降低通过DASH传输VR视频的码率。视点相关的译码可以将整个球体/投影图像(例如,使用立方体投影)分成多个MCTS。两个或两个以上码流可以按不同的空间分辨率或质量进行编码。来自高分辨率/质量码流的一个或多个MCTS被发送给解码器,以用于要显示的视角(例如,前视角)。其余视角使用来自低分辨率/质量码流的MCTS。这些MCTS以一定的方式打包,然后发送给接收器进行解码。用户通常看到的视角由高分辨率/高质量的MCTS表示,这样提供了良好的观看体验。当用户转向观看另一个视角(例如,左视角或右视角)时,显示的内容来自低分辨率/质量的视角。这种情况持续一小段时间,直到系统可以获取该视角的高分辨率/质量MCTS。
在用户转动与显示视角的高分辨率/质量表示之间发生时延。这种时延取决于系统获取该视角的高分辨率/质量MCTS的速度。这取决于IRAP周期,即两个IRAP发生之间的间隔。这是因为新视角的MCTS只能从IRAP图像开始解码。如果IRAP周期每1秒译码一次,则以下情况适用。当用户正好在系统开始获取新的段/IRAP周期之前转向观看新视角时,时延的最佳情况与网络往返时延(round-trip delay)相同。在这种场景下,系统可以立即为新视角请求高分辨率/质量的MCTS。因此,唯一的时延是网络往返时延,这包括提取请求的时延加上传输所请求的MCTS的时间。这假设最小缓冲时延可以设置为0或其它可忽略的值。例如,网络往返时延可以为200毫秒左右。当用户正好在系统已经请求下一段之后转向观看新视角时,时延的最坏情况是IRAP周期加上网络往返时延。为了改善上述最坏情况,可以编码包括更多频繁的IRAP图像的码流,使得IRAP周期更短,从而降低了整体时延。但是,更多的IRAP图像会增加带宽,因此降低了压缩效率。
混合NAL单元类型通过添加PPS标志可以用于图像内,该标志表示图像中的所有VCL NAL单元是否都具有相同NAL单元类型。还可以添加约束,以要求对于任何特定图像,所有VCL NAL单元都是相同NAL单元类型,或者一些VCL NAL单元具有特定的IRAP NAL单元类型,其余的具有特定的非IRAP VCL NAL单元类型。该机制的示例性描述如下。
IRAP图像是mixed_nalu_types_in_pic_flag等于0的经译码图像,并且每个VCLNAL单元的NalUnitType的取值范围为IDR_W_RADL至CRA_NUT(包括端值)。
示例性PPS RBSP语法如下。
示例性NAL单元头语义如下。NalUnitType等于IDR_N_LP的IDR图像未伴随码流中存在的关联前置图像。NalUnitType等于IDR_W_RADL的IDR图像未伴随码流中存在的关联RASL图像,但可以伴随码流中的关联RADL图像。对于任何特定图像中的VCL NAL单元,以下内容适用。如果mixed_nalu_types_in_pic_flag等于0,则所有VCL NAL单元都具有相同的nal_unit_type值。否则,一些VCL NAL单元可以具有特定的IRAP NAL单元类型值(例如,nal_unit_type的取值范围为IDR_W_RADL至CRA_NUT(包括端值)),而所有其它VCL NAL单元可以具有特定的非IRAP VCL NAL单元类型(例如,nal_unit_type的取值范围为TRAIL_NUT至RSV_VCL_15(包括端值),或者等于GRA_NUT)。
示例性PPS RBSP语义如下。pps_seq_parameter_set_id表示活动SPS的sps_seq_parameter_set_id的值。pps_seq_parameter_set_id的取值范围可以为0至15(包括端值)。mixed_nalu_types_in_pic_flag可以设置为1,以表示参考PPS的每个图像都包括多个VCLNAL单元且这些NAL单元不具有相同的nal_unit_type值。mixed_nalu_types_in_pic_flag可以设置为0,以表示参考PPS的每个图像中的VCL NAL单元具有相同的nal_unit_type值。当sps_idr_rpl_present_flag等于0时,mixed_nalu_types_in_pic_flag的值可以等于0。
图像可以被分成子图像。子图像存在的指示可以与子图像的其它序列级信息一起指示在SPS中。子图像的边界在解码过程(不包括环内滤波操作)中是否被当作图像边界处理可以由码流控制。是否禁用跨子图像边界的环内滤波可以由每个子图像的码流控制。更新去块效应滤波器(deblocking filter,DBF)、SAO和自适应环路滤波器(adaptive loopfilter,ALF)过程,以控制跨子图像边界的环内滤波操作。子图像宽度、高度、水平偏移和垂直偏移可以使用亮度样本为单位指示在SPS中。子图像边界可以被约束为条带边界。在解码过程(不包括环内滤波操作)中将子图像当作图像处理通过更新以下内容规定:语法coding_tree_unit()、高级时间亮度运动矢量预测的推导过程、亮度样本双线性插值过程、亮度样本8抽头插值滤波过程和色度样本插值过程。子图像标识符(identifier,ID)显式表示在SPS中,并包括在分块组头中,以便能够提取子图像序列,而无需更改VCL NAL单元。输出子图像集(output sub-picture set,OSPS)可以指定子图像及其集合的规范提取和一致性点。
上述系统存在一些问题。码流可能包括具有IRAP条带和非IRAP条带的图像。如果图像中的条带(解码顺序在这种图像之后且覆盖这种图像中的IRAP条带组成的相同图像区域)参考解码顺序在这种图像之前的图像进行帧间预测时,则会发生错误。
本发明包括用于支持视频编码中的基于子图像或MCTS的随机接入的改进技术。具体地,本发明公开了对包括IRAP条带和非IRAP条带的图像内的IRAP条带采取一些约束的方法。技术描述参见VVC。但是,这些技术也可以应用于其它视频/媒体编解码规范。
例如,添加约束以确保图像中的条带(1)案子解码顺序在混合NAL单元图像之后,以及(2)覆盖不参考解码顺序在混合NAL单元图像之前的参考图像进行帧间预测的图像中的IRAP条带的相同图像区域。一种示例性实现方式如下。
IRAP图像可以被定义为mixed_nalu_types_in_pic_flag等于0的经译码图像,并且每个VCLNAL单元的NalUnitType的取值范围为IDR_W_RADL至CRA_NUT(包括端值)。
示例性PPS RBSP语法如下。
示例性NAL单元头语义如下。NalUnitType等于IDR_N_LP的IDR图像未伴随码流中存在的关联前置图像。NalUnitType等于IDR_W_RADL的IDR图像未伴随码流中存在的关联RASL图像,但可以伴随码流中的关联RADL图像。对于任何特定图像中的VCL NAL单元,以下内容适用。如果mixed_nalu_types_in_pic_flag等于0,则所有VCL NAL单元都具有相同的nal_unit_type值。否则,一些VCL NAL单元可以具有特定的IRAP NAL单元类型值(例如,nal_unit_type的取值范围为IDR_W_RADL至CRA_NUT(包括端值)),而所有其它VCL NAL单元可以具有特定的非IRAP VCL NAL单元类型(例如,nal_unit_type的取值范围为TRAIL_NUT至RSV_VCL_15(包括端值),或者等于GRA_NUT)。
示例性PPS RBSP语义如下。pps_seq_parameter_set_id表示活动SPS的sps_seq_parameter_set_id的值。pps_seq_parameter_set_id的取值范围可以为0至15(包括端值)。mixed_nalu_types_in_pic_flag可以设置为1,以表示参考PPS的每个图像都包括多个VCLNAL单元且这些NAL单元不具有相同的nal_unit_type值。mixed_nalu_types_in_pic_flag可以设置为0,以表示参考PPS的每个图像中的VCL NAL单元具有相同的nal_unit_type值。当sps_idr_rpl_present_flag等于0时,mixed_nalu_types_in_pic_flag的值可以等于0。对于包括至少一个非IRAP条带的图像picA中的每个IRAP条带,以下内容适用。IRAP条带可以属于子图像subpicA,而且子图像的边界在解码过程(不包括环内滤波操作)中被当作图像边界处理。例如,subpicA的sub_pic_treated_as_pic_flag[i]的值可以等于1。IRAP条带可以不属于包括一个或多个非IRAP条带的同一图像中的子图像。对于解码顺序中的所有随后的层接入单元(access unit,AU),subpicA中条带的RefPicList[0]和RefPicList[1]在活动条目中都不包括解码顺序在picA之前的任何图像。
图9为示例性视频译码设备900的示意图。视频译码设备900适合于实现本文描述的公开示例/实施例。视频译码设备900包括下行端口920、上行端口950和/或收发单元(Tx/Rx)910。收发单元910包括用于通过网络在上行和/或下行进行数据通信的发送器和/或接收器。视频译码设备900还包括处理器930和存储器932。处理器930包括逻辑单元和/或中央处理单元(central processing unit,CPU),以处理数据。存储器932用于存储数据。视频译码设备900还可以包括与上行端口950和/或下行端口920耦合的电组件、光电(optical-to-electrical,OE)组件、电光(electrical-to-optical,EO)组件和/或无线通信组件,用于通过电通信网络、光通信网络或无线通信网络进行数据通信。视频译码设备900还可以包括用于与用户进行数据通信的输入和/或输出(input/output,I/O)设备960。I/O设备960可以包括输出设备,例如,用于显示视频数据的显示器、用于输出音频数据的扬声器等。I/O设备960还可以包括键盘、鼠标、轨迹球等输入设备和/或用于与这些输出设备交互的对应接口。
处理器930通过硬件和软件实现。处理器930可以实现为一个或多个CPU芯片、一个或多个核(例如,实现为多核处理器)、一个或多个现场可编程门阵列(field-programmablegate array,FPGA)、一个或多个专用集成电路(application specific integratedcircuit,ASIC)以及一个或多个数字信号处理器(digital signal processor,DSP)。处理器930与下行端口920、Tx/Rx 910、上行端口950和存储器932通信。处理器930包括译码模块914。译码模块914实现本文描述的公开实施例,例如方法100、方法1000和/或方法1100,它们可以使用根据约束600译码的VR图像视频流500、码流800和/或RPL图像700。译码模块914还可以实现本文描述的任何其它方法/机制。此外,译码模块914可以实现编解码系统200、编码器300和/或解码器400。例如,译码模块914可以对包括具有IRAP NAL单元和非IRAPNAL单元的当前图像的VR视频进行译码。例如,IRAP NAL单元可以包括在子图像中。当发生这种情况时,译码模块914可以约束在当前图像之后的图像中的条带也包括在子图像中。可以避免这些条带参考在当前图像之前的参考图像。因此,译码模块914使得视频译码设备900在对视频数据进行译码时提供其它功能和/或提高译码效率。因此,译码模块914改进了视频译码设备900的功能,同时解决了视频译码领域特有的问题。此外,译码模块914影响了视频译码设备900到不同状态的转换。可选地,译码模块914可以实现为存储在存储器932中并由处理器930执行的指令(例如,实现为存储在非瞬时性介质中的计算机程序产品)。
存储器932包括一种或多种存储器类型,例如磁盘、磁带机、固态硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、闪存、三态内容寻址存储器(ternary content-addressable memory,TCAM)、静态随机存取存储器(staticrandom-access memory,SRAM)等。存储器932可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令和数据。
图10为将包括具有混合NAL单元类型的图像的视频序列编码到码流(例如包括具有RPL结构700的VR图像视频流500的码流800)中的示例性方法1000的流程图。方法1000可以根据约束600对这种码流进行编码。方法1000可以由编码器(例如,编解码系统200、编码器300和/或视频译码设备900)在执行方法100时执行。
方法1000可以开始于:编码器接收包括多个图像(例如VR图像)的视频序列,并根据用户输入等确定将所述视频序列编码到码流中。所述码流可以包括VR视频数据。所述VR视频数据可以包括多个图像,每个图像表示所述视频序列中对应时刻的内容组成的球体。所述图像可以被分割成一组子图像。例如,每个子图像都可以包括与VR视频的视角对应的视频数据。此外,各种子图像可以包括不同频率下的IRAP NAL单元和非IRAP NAL单元。在步骤1001中,所述编码器确定当前图像包括不具有相同NAL单元类型的多个VCL NAL单元。例如,所述多个VCL NAL单元可以包括具有IRAP NAL单元类型的IRAP NAL单元和具有非IRAPNAL单元类型的非IRAP NAL单元。例如,所述IRAP NAL单元类型可以包括IDR NAL单元类型或CRA NAL单元类型。此外,所述非IRAP NAL单元类型可以包括后置NAL单元类型、RASL NAL单元类型和/或RADL NAL单元类型。
在步骤1003中,所述编码器将标志编码到所述码流中。所述标志表示所述当前图像中的所述多个VCL NAL单元的第一NAL单元类型值与所述当前图像中的所述多个VCL NAL单元的第二NAL单元类型值不同。在一个示例中,所述标志可以被编码到所述码流中的PPS中。在一个具体的示例中,所述标志可以为mixed_nalu_types_in_pic_flag 827。所述mixed_nalu_types_in_pic_flag在表示参考所述PPS的每个图像包括多个VCL NAL单元且所述多个VCLNAL单元不具有相同nal_unit_type值时可以设置为1。
在步骤1005中,所述编码器确定所述当前图像中的subpicA与IRAP NAL单元类型相关联。在步骤1007中,所述编码器将所述当前图像编码到所述码流中。例如,所述编码器确保所述当前图像的位于所述subpicA中的所有条带都与相同NAL单元类型(例如,所述IRAP NAL单元类型)相关联。所述编码器可以根据帧内预测对所述subpicA进行编码。编码器还可以确定子图像B(subpicB)包括所述非IRAP NAL单元类型的条带。因此,所述编码器可以根据帧间预测对所述当前图像中的所述subpicB进行编码。
在步骤1009中,所述编码器可以准备对解码顺序在所述当前图像之后的后续图像进行编码。例如,所述编码器可以生成位于所述后续图像的所述subpicA中的条带对应的参考图像列表中的活动条目。指定的后续图像对应的活动条目表示在对所述指定的后续图像执行帧间预测编码过程时可用作参考图像的图像。具体地,约束所述后续图像中的所述subpicA对应的活动条目,使得这些活动条目不参考解码顺序在所述当前图像之前的任何参考图像。这种约束在所述当前图像中的所述subpicA与所述IRAP NAL单元类型相关联时使用。这种约束确保了在IRAP子图像之后的子图像中的条带不参考在IRAP子图像之前的图像,否则当IRAP子图像用作随机接入点时,会产生译码错误。不在IRAP子图像之后的后续图像中的条带(例如,位于subpicB中且在非IRAP NAL单元之后的条带)可以继续参考在所述当前图像之前的图像。
在步骤1011中,所述编码器根据所述参考图像列表将所述后续图像编码到码流中。例如,所述编码器可以根据帧间预测和/或帧内预测(取决于与对应子图像中的条带相关联的NAL类型)对所述后续图像进行编码。帧间预测过程使用所述参考图像列表。所述参考图像列表包括参考图像列表0和参考图像列表1。此外,所述参考图像列表可以是在参考图像列表结构中译码的。所述参考图像列表结构也可以被编码到所述码流中。所述编码器还可以存储所述码流,以发送给解码器。
图11为从码流(例如包括具有RPL结构700的VR图像视频流500的码流800)中解码包括具有混合NAL单元类型的图像的视频序列的示例性方法1100的流程图。方法1100可以根据约束600对这种码流进行解码。方法1100可以由解码器(例如,编解码系统200、解码器400和/或视频译码设备900)在执行方法100时使用。
方法1100可以开始于:解码器开始接收表示视频序列(例如作为方法1000的结果)的经译码数据的码流。所述码流可以包括VR视频序列,所述VR视频序列包括多个图像,例如VR图像。所述码流可以包括VR视频数据。所述VR视频数据可以包括多个图像,每个图像表示所述视频序列中对应时刻的内容组成的球体。所述图像可以被分割成一组子图像。例如,每个子图像都可以包括与VR视频的视角对应的视频数据。此外,各种子图像可以包括不同频率下的IRAP NAL单元和非IRAP NAL单元。在步骤1101中,所述解码器接收所述码流。所述码流包括当前图像,所述当前图像包括不具有相同NAL单元类型的多个VCL NAL单元。例如,所述多个VCL NAL单元可以包括具有IRAP NAL单元类型的IRAP NAL单元和具有非IRAP NAL单元类型的非IRAP NAL单元。例如,所述IRAP NAL单元类型可以包括IDR NAL单元类型或CRANAL单元类型。此外,所述非IRAP NAL单元类型可以包括后置NAL单元类型、RASL NAL单元类型和/或RADL NAL单元类型。
在步骤1103中,所述解码器根据标志确定所述当前图像中的所述多个VCL NAL单元的第一NAL单元类型值与所述当前图像中的所述多个VCL NAL单元的第二NAL单元类型值不同。在一个示例中,所述码流可以包括与所述当前图像相关联的PPS。所述标志可以是从所述PPS中获取的。在一个具体的示例中,所述标志可以为mixed_nalu_types_in_pic_flag827。所述mixed_nalu_types_in_pic_flag在表示参考所述PPS的每个图像包括多个VCLNAL单元且所述多个VCL NAL单元不具有相同nal_unit_type值时可以设置为1。
在步骤1105中,所述解码器可以确定所述当前图像的位于subpicA中的所有条带都与相同NAL单元类型相关联。所述解码器还可以根据所述条带的NAL单元类型对subpicA和/或所述当前图像进行解码。例如,所述当前图像中的所述subpicA可以包括IRAP NAL单元。在这种情况下,所述subpicA可以是根据帧内预测解码的。所述解码器还可以确定subpicB包括所述非IRAP NAL单元类型的条带。因此,所述解码器可以根据帧间预测对所述当前图像中的所述subpicB进行解码。
在步骤1107中,所述解码器可以获取条带对应的参考图像列表中的活动条目,其中,所述条带位于解码顺序在所述当前图像之后的后续图像的subpicA中。指定的后续图像对应的活动条目表示在对所述指定的后续图像执行帧间预测解码过程时可用作参考图像的图像。
在步骤1109中,所述解码器可以确定当所述当前图像中的所述subpicA与帧内随机接入点(intra-random access point,IRAP)NAL单元类型相关联时,所述活动条目不参考解码顺序在当前图像之前的任何参考图像。这种约束确保了在IRAP子图像之后的子图像中的条带不参考在IRAP子图像之前的图像,否则当IRAP子图像用作随机接入点时,会产生译码错误。不在IRAP子图像之后的后续图像中的条带(例如,位于subpicB中且在非IRAPNAL单元之后的条带)可以继续参考在所述当前图像之前的图像。
在步骤1111中,所述解码器可以根据所述参考图像列表中的活动条目对所述后续图像进行解码。例如,所述解码器可以根据帧间预测和/或帧内预测(取决于与对应子图像中的条带相关联的NAL类型)对所述后续图像进行解码。帧间预测过程使用所述参考图像列表。所述参考图像列表包括参考图像列表0和参考图像列表1。此外,所述参考图像列表可以是从译码到所述码流中的参考图像列表结构中获得的。所述解码器可以转发所述当前图像、所述后续图像和/或其子图像(例如,subpicA或subpicB),其中,所述当前图像、所述后续图像和/或其子图像作为经解码视频序列的一部分显示。
图12为将包括具有混合NAL单元类型的图像的视频序列译码到码流(例如包括具有RPL结构700的VR图像视频流500且根据约束600译码的码流800)中的示例性系统1200的示意图。系统1200可以由编码器和解码器(例如,编解码系统200、编码器300、解码器400和/或视频译码设备900)实现。此外,系统1200可以在执行方法100、方法1000和/或方法1100时使用。
系统1200包括视频编码器1202。视频编码器1202包括确定模块1201,用于确定当前图像包括不具有相同NAL单元类型的多个VCL NAL单元。确定模块1201还用于确定所述当前图像中的subpicA与IRAP NAL单元类型相关联。视频编码器1202还包括生成模块1203,用于生成条带对应的参考图像列表中的活动条目,其中,所述条带位于解码顺序在所述当前图像之后的后续图像的subpicA中,当所述当前图像中的所述subpicA与所述IRAP NAL单元类型相关联时,所述活动条目不参考解码顺序在所述当前图像之前的任何参考图像。视频编码器1202还包括编码模块1205,用于根据所述参考图像列表将所述后续图像编码到码流中。视频编码器1202还包括存储模块1207,用于存储所述码流,其中,所述码流用于发送给解码器。视频编码器1202还包括发送模块1209,用于将所述码流发送给视频解码器1210。视频编码器1202还可以用于执行方法1000的任一步骤。
系统1200还包括视频解码器1210。视频解码器1210包括接收模块1211,用于接收包括当前图像的码流,其中,所述当前图像包括不具有相同NAL单元类型的多个VCL NAL单元。视频解码器1210还包括获取模块1213,用于获取条带对应的参考图像列表中的活动条目,其中,所述条带位于解码顺序在所述当前图像之后的后续图像的subpicA中。视频解码器1210还包括确定模块1215,用于确定当所述当前图像中的subpicA与IRAP NAL单元类型相关联时,所述活动条目不参考解码顺序在所述当前图像之前的任何参考图像。视频解码器1210还包括解码模块1217,用于根据所述参考图像列表中的活动条目对所述后续图像进行解码。视频解码器1210还包括转发模块1219,用于转发所述后续图像,其中,所述后续图像作为经解码视频序列的一部分显示。视频解码器1210还可以用于执行方法1100的任一步骤。
当第一组件与第二组件之间除线、迹线或其它介质之外不存在中间组件时,第一组件与第二组件直接耦合。当第一组件与第二组件之间除线、迹线或其它介质之外还存在中间组件时,第一组件与第二组件间接耦合。术语“耦合”及其变型包括直接耦合和间接耦合。除非另有说明,否则使用术语“约”意指包括后续数字±10%的范围。
还应当理解,本文中阐述的示例性方法的步骤不一定需要按照所描述的顺序执行,并且这些方法的步骤的顺序应当理解为仅仅是示例性的。同理,在与本发明各种实施例相一致的方法中,这些方法可以包括其它步骤,并且某些步骤可以省略或组合。
虽然本发明提供了若干个实施例,但应当理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可以通过其它多种具体形式体现。本发明示例应当被视为说明性而非限制性的,且本发明并不限于本文所给出的详细内容。例如,各种元件或组件可以组合或集成在另一系统中,或者一些特征可以省略或不实施。
另外,在不脱离本发明范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、组件、技术或方法组合或集成。其它变更、替换、更改示例能够由本领域技术人员确定,并且可以在不脱离本文公开的精神和范围的情况下进行。
Claims (20)
1.一种在解码器中实现的方法,其特征在于,所述方法包括:
所述解码器的接收器接收包括当前图像的码流,其中,所述当前图像包括不具有相同网络抽象层NAL(network abstraction layer)单元类型的多个视频译码层VCL(videocoding layer)NAL单元;
所述解码器的处理器获取条带对应的参考图像列表中的活动条目(active entry),其中,所述条带位于解码顺序在所述当前图像之后的后续图像的子图像A中,当所述当前图像中的子图像A与帧内随机接入点IRAP(intra-random access point)NAL单元类型相关联时,所述活动条目不参考解码顺序在所述当前图像之前的任何参考图像;其中,所述后续图像中的子图像A和所述当前图像中的子图像A处于同一层;
所述处理器根据所述参考图像列表中的活动条目对所述后续图像进行解码。
2.根据权利要求1所述的方法,其特征在于,所述IRAP NAL单元类型为纯随机接入CRA(clean random access)NAL单元类型。
3.根据权利要求1所述的方法,其特征在于,所述IRAP NAL单元类型为即时解码刷新IDR(instantaneous decoding refresh)NAL单元类型。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:所述处理器确定所述当前图像的位于所述子图像A中的所有条带与相同NAL单元类型相关联。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:所述处理器根据标志确定所述当前图像中的所述多个VCL NAL单元的第一NAL单元类型值与所述当前图像中的所述多个VCL NAL单元的第二NAL单元类型值不同。
6.根据权利要求5所述的方法,其特征在于,所述码流包括图像参数集PPS,所述标志是从所述PPS中获得的。
7.根据权利要求6所述的方法,其特征在于,所述标志为mixed_nalu_types_in_pic_flag,所述mixed_nalu_types_in_pic_flag在表示参考所述PPS的每个图像包括多个VCLNAL单元且所述多个VCL NAL单元不具有相同NAL单元类型(nal_unit_type)值时等于1。
8.一种在编码器中实现的方法,其特征在于,所述方法包括:
所述编码器的处理器确定当前图像包括不具有相同网络抽象层NAL(networkabstraction layer)单元类型的多个视频译码层VCL(video coding layer)NAL单元;
所述处理器确定所述当前图像中的子图像A与帧内随机接入点IRAP(intra-randomaccess point)NAL单元类型相关联;
所述处理器生成条带对应的参考图像列表中的活动条目,其中,所述条带位于解码顺序在所述当前图像之后的后续图像的子图像A中,当所述当前图像中的子图像A与所述IRAPNAL单元类型相关联时,所述活动条目不参考解码顺序在所述当前图像之前的任何参考图像;其中,所述后续图像中的子图像A和所述当前图像中的子图像A处于同一层;
所述处理器根据所述参考图像列表将所述后续图像编码到码流中。
9.根据权利要求8所述的方法,其特征在于,所述IRAP NAL单元类型为纯随机接入CRA(clean random access)NAL单元类型。
10.根据权利要求8所述的方法,其特征在于,所述IRAP NAL单元类型为即时解码刷新IDR(instantaneous decoding refresh)NAL单元类型。
11.根据权利要求8至10中任一项所述的方法,其特征在于,所述方法还包括:所述处理器通过确保所述当前图像的位于所述子图像A中的所有条带与相同NAL单元类型相关联,将所述当前图像编码到所述码流中。
12.根据权利要求8至10中任一项所述的方法,其特征在于,所述方法还包括:所述处理器将标志编码到所述码流中,其中,所述标志表示所述当前图像中的所述多个VCL NAL单元的第一NAL单元类型值与所述当前图像中的所述多个VCL NAL单元的第二NAL单元类型值不同。
13.根据权利要求12所述的方法,其特征在于,所述标志被编码到所述码流中的图像参数集PPS(picture parameter set)中。
14.根据权利要求13所述的方法,其特征在于,所述标志为mixed_nalu_types_in_pic_flag,所述mixed_nalu_types_in_pic_flag在表示参考所述PPS的每个图像包括多个VCLNAL单元且所述多个VCL NAL单元不具有相同NAL单元类型(nal_unit_type)值时设置为1。
15.一种视频译码设备,其特征在于,所述视频译码设备包括:
处理器、与所述处理器耦合的接收器、与所述处理器耦合的存储器和与所述处理器耦合的发送器,其中,所述处理器、接收器、存储器和发送器用于执行根据权利要求1至14中任一项所述的方法。
16.一种非瞬时性计算机可读介质,其特征在于,所述非瞬时性计算机可读介质包括供视频译码设备使用的计算机程序产品,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质中的计算机可执行指令,当处理器执行所述计算机可执行指令时,使得所述视频译码设备执行根据权利要求1至14中任一项所述的方法。
17.一种解码器,其特征在于,所述解码器包括:
接收模块,用于接收包括当前图像的码流,其中,所述当前图像包括不具有相同网络抽象层NAL(network abstraction layer)单元类型的多个视频译码层VCL(video codinglayer)NAL单元;
获取模块,用于获取条带对应的参考图像列表中的活动条目,其中,所述条带位于解码顺序在所述当前图像之后的后续图像的子图像A中;
确定模块,用于确定当所述当前图像中的子图像A与帧内随机接入点IRAP(intra-random access point)NAL单元类型相关联时,所述活动条目不参考解码顺序在所述当前图像之前的任何参考图像;其中,所述后续图像中的子图像A和所述当前图像中的子图像A处于同一层;
解码模块,用于根据所述参考图像列表中的活动条目对所述后续图像进行解码;
转发模块,用于转发所述后续图像,其中,所述后续图像作为经解码视频序列的一部分显示。
18.根据权利要求17所述的解码器,其特征在于,所述解码器还用于执行根据权利要求1至7中任一项所述的方法。
19.一种编码器,其特征在于,所述编码器包括:
确定模块,用于:
确定当前图像包括不具有相同网络抽象层NAL(network abstraction layer)单元类型的多个视频译码层VCL(video coding layer)NAL单元;
确定所述当前图像中的子图像A与帧内随机接入点IRAP(intra-random accesspoint)NAL单元类型相关联;
生成模块,用于生成条带对应的参考图像列表中的活动条目,其中,所述条带位于解码顺序在所述当前图像之后的后续图像的子图像A内,当所述当前图像中的所述子图像A与所述IRAP NAL单元类型相关联时,所述活动条目不参考解码顺序在所述当前图像之前的任何参考图像;其中,所述后续图像中的子图像A和所述当前图像中的子图像A处于同一层;
编码模块,用于根据所述参考图像列表将所述后续图像编码到码流中;
存储模块,用于存储所述码流,其中,所述码流用于发送给解码器。
20.根据权利要求19所述的编码器,其特征在于,所述编码器还用于执行根据权利要求8至14中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310695326.XA CN116708795A (zh) | 2019-07-08 | 2020-07-07 | 视频译码中的混合nal单元图像约束 |
CN202210411349.9A CN114827600B (zh) | 2019-07-08 | 2020-07-07 | 一种图像解码的方法及解码器 |
CN202310695333.XA CN116723326A (zh) | 2019-07-08 | 2020-07-07 | 视频译码中的混合nal单元图像约束 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962871524P | 2019-07-08 | 2019-07-08 | |
US62/871,524 | 2019-07-08 | ||
PCT/US2020/041035 WO2021007225A1 (en) | 2019-07-08 | 2020-07-07 | Mixed nal unit picture constraints in video coding |
Related Child Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310695326.XA Division CN116708795A (zh) | 2019-07-08 | 2020-07-07 | 视频译码中的混合nal单元图像约束 |
CN202310695333.XA Division CN116723326A (zh) | 2019-07-08 | 2020-07-07 | 视频译码中的混合nal单元图像约束 |
CN202210411349.9A Division CN114827600B (zh) | 2019-07-08 | 2020-07-07 | 一种图像解码的方法及解码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114073073A CN114073073A (zh) | 2022-02-18 |
CN114073073B true CN114073073B (zh) | 2023-06-06 |
Family
ID=74114239
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310695333.XA Pending CN116723326A (zh) | 2019-07-08 | 2020-07-07 | 视频译码中的混合nal单元图像约束 |
CN202080046021.0A Active CN114073073B (zh) | 2019-07-08 | 2020-07-07 | 一种支持混合nal单元的编解码方法和编解码器 |
CN202310695326.XA Pending CN116708795A (zh) | 2019-07-08 | 2020-07-07 | 视频译码中的混合nal单元图像约束 |
CN202210411349.9A Active CN114827600B (zh) | 2019-07-08 | 2020-07-07 | 一种图像解码的方法及解码器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310695333.XA Pending CN116723326A (zh) | 2019-07-08 | 2020-07-07 | 视频译码中的混合nal单元图像约束 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310695326.XA Pending CN116708795A (zh) | 2019-07-08 | 2020-07-07 | 视频译码中的混合nal单元图像约束 |
CN202210411349.9A Active CN114827600B (zh) | 2019-07-08 | 2020-07-07 | 一种图像解码的方法及解码器 |
Country Status (10)
Country | Link |
---|---|
US (1) | US12041249B2 (zh) |
EP (1) | EP3987771A4 (zh) |
JP (2) | JP7453329B2 (zh) |
KR (1) | KR20220027207A (zh) |
CN (4) | CN116723326A (zh) |
AU (1) | AU2020311890A1 (zh) |
BR (1) | BR112022000158A2 (zh) |
CA (1) | CA3146555A1 (zh) |
MX (1) | MX2022000292A (zh) |
WO (1) | WO2021007225A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220042125A (ko) | 2019-08-10 | 2022-04-04 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 서브픽처 디코딩에서의 버퍼 관리 |
JP7322290B2 (ja) | 2019-10-02 | 2023-08-07 | 北京字節跳動網絡技術有限公司 | ビデオビットストリームにおけるサブピクチャシグナリングのための構文 |
JP7482220B2 (ja) | 2019-10-18 | 2024-05-13 | 北京字節跳動網絡技術有限公司 | サブピクチャのパラメータセットシグナリングにおける構文制約 |
US11477487B2 (en) * | 2019-12-10 | 2022-10-18 | Zte (Uk) Limited | Subpicture signaling in video coding |
US11375232B2 (en) * | 2019-12-10 | 2022-06-28 | Zte (Uk) Limited | Sub picture signaling in video coding |
WO2021132963A1 (ko) * | 2019-12-23 | 2021-07-01 | 엘지전자 주식회사 | 슬라이스 또는 픽처에 대한 nal 유닛 타입 기반 영상 또는 비디오 코딩 |
WO2021133721A1 (en) | 2019-12-26 | 2021-07-01 | Bytedance Inc. | Techniques for implementing a decoding order within a coded picture |
KR20220141794A (ko) * | 2020-03-05 | 2022-10-20 | 엘지전자 주식회사 | 혼성 nal 유닛 타입에 기반하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법 |
WO2021206993A1 (en) | 2020-04-06 | 2021-10-14 | Bytedance Inc. | Video coding using parameter sets |
KR20220163390A (ko) * | 2020-04-12 | 2022-12-09 | 바이트댄스 아이엔씨 | 인스턴트 디코딩 리프레시 서브픽처의 코딩 |
CN114615549B (zh) * | 2022-05-11 | 2022-09-20 | 北京搜狐新动力信息技术有限公司 | 流媒体seek方法、客户端、存储介质和移动设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011129602A2 (ko) * | 2010-04-14 | 2011-10-20 | 삼성전자 주식회사 | 3차원 영상 데이터를 부호화하는 방법 및 장치와 복호화 방법 및 장치 |
WO2013157828A1 (ko) * | 2012-04-16 | 2013-10-24 | 한국전자통신연구원 | 복수의 계층을 지원하는 비트스트림의 디코딩 방법 및 이를 이용하는 장치 |
CN103703782A (zh) * | 2011-05-05 | 2014-04-02 | 奥林奇公司 | 对积分图像进行编码和解码的方法、对积分图像进行编码和解码的装置及对应的计算机程序 |
CN105122815A (zh) * | 2013-04-07 | 2015-12-02 | 夏普株式会社 | 在vps扩展中用信号通知dpb参数以及dpb操作 |
CN105379271A (zh) * | 2013-07-15 | 2016-03-02 | 高通股份有限公司 | 帧内随机接入点图片的改进的跨层对齐 |
EP3123725A1 (en) * | 2014-03-24 | 2017-02-01 | Qualcomm Incorporated | Use of hevc decoded picture hash sei messages for multi-layer codecs |
WO2018071666A1 (en) * | 2016-10-12 | 2018-04-19 | Arris Enterprises Llc | Coding schemes for virtual reality (vr) sequences |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100591138C (zh) * | 2002-11-25 | 2010-02-17 | 松下电器产业株式会社 | 图像编码方法及其装置、图像解码方法及其装置 |
US9924184B2 (en) * | 2008-06-30 | 2018-03-20 | Microsoft Technology Licensing, Llc | Error detection, protection and recovery for video decoding |
US9596486B2 (en) * | 2013-04-05 | 2017-03-14 | Qualcomm Incorporated | IRAP access units and bitstream switching and splicing |
US10003815B2 (en) * | 2013-06-03 | 2018-06-19 | Qualcomm Incorporated | Hypothetical reference decoder model and conformance for cross-layer random access skipped pictures |
US9648348B2 (en) | 2013-10-23 | 2017-05-09 | Qualcomm Incorporated | Multi-layer video file format designs |
US9948950B2 (en) * | 2014-01-03 | 2018-04-17 | Qualcomm Incorporated | Disparity vector and/or advanced residual prediction for video coding |
US20150264404A1 (en) * | 2014-03-17 | 2015-09-17 | Nokia Technologies Oy | Method and apparatus for video coding and decoding |
JP2017522767A (ja) * | 2014-06-18 | 2017-08-10 | テレフオンアクチーボラゲット エルエム エリクソン(パブル) | ビデオビットストリームにおけるランダムアクセス |
KR101961385B1 (ko) * | 2014-07-07 | 2019-03-25 | 에이치에프아이 이노베이션 인크. | 인트라 블록 카피 검색 및 보상 범위의 방법 |
US20170105004A1 (en) * | 2015-10-07 | 2017-04-13 | Qualcomm Incorporated | Methods and systems of coding a predictive random access picture using a background picture |
CN118784881A (zh) | 2016-02-09 | 2024-10-15 | 弗劳恩霍夫应用研究促进协会 | 解码器、编码器、方法、网络设备以及可读存储介质 |
US11062738B2 (en) * | 2017-03-23 | 2021-07-13 | Qualcomm Incorporated | Signalling of video content including sub-picture bitstreams for video coding |
WO2020254720A1 (en) * | 2019-06-20 | 2020-12-24 | Nokia Technologies Oy | An apparatus, a method and a computer program for video encoding and decoding |
US11375232B2 (en) | 2019-12-10 | 2022-06-28 | Zte (Uk) Limited | Sub picture signaling in video coding |
-
2020
- 2020-07-07 BR BR112022000158A patent/BR112022000158A2/pt unknown
- 2020-07-07 JP JP2022500875A patent/JP7453329B2/ja active Active
- 2020-07-07 MX MX2022000292A patent/MX2022000292A/es unknown
- 2020-07-07 CN CN202310695333.XA patent/CN116723326A/zh active Pending
- 2020-07-07 CN CN202080046021.0A patent/CN114073073B/zh active Active
- 2020-07-07 CN CN202310695326.XA patent/CN116708795A/zh active Pending
- 2020-07-07 WO PCT/US2020/041035 patent/WO2021007225A1/en active Application Filing
- 2020-07-07 AU AU2020311890A patent/AU2020311890A1/en active Pending
- 2020-07-07 CN CN202210411349.9A patent/CN114827600B/zh active Active
- 2020-07-07 EP EP20836076.8A patent/EP3987771A4/en active Pending
- 2020-07-07 KR KR1020227003242A patent/KR20220027207A/ko not_active Application Discontinuation
- 2020-07-07 CA CA3146555A patent/CA3146555A1/en active Pending
-
2022
- 2022-01-04 US US17/568,517 patent/US12041249B2/en active Active
-
2024
- 2024-03-07 JP JP2024035012A patent/JP2024073509A/ja active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011129602A2 (ko) * | 2010-04-14 | 2011-10-20 | 삼성전자 주식회사 | 3차원 영상 데이터를 부호화하는 방법 및 장치와 복호화 방법 및 장치 |
CN103703782A (zh) * | 2011-05-05 | 2014-04-02 | 奥林奇公司 | 对积分图像进行编码和解码的方法、对积分图像进行编码和解码的装置及对应的计算机程序 |
WO2013157828A1 (ko) * | 2012-04-16 | 2013-10-24 | 한국전자통신연구원 | 복수의 계층을 지원하는 비트스트림의 디코딩 방법 및 이를 이용하는 장치 |
CN105122815A (zh) * | 2013-04-07 | 2015-12-02 | 夏普株式会社 | 在vps扩展中用信号通知dpb参数以及dpb操作 |
CN105379271A (zh) * | 2013-07-15 | 2016-03-02 | 高通股份有限公司 | 帧内随机接入点图片的改进的跨层对齐 |
EP3123725A1 (en) * | 2014-03-24 | 2017-02-01 | Qualcomm Incorporated | Use of hevc decoded picture hash sei messages for multi-layer codecs |
WO2018071666A1 (en) * | 2016-10-12 | 2018-04-19 | Arris Enterprises Llc | Coding schemes for virtual reality (vr) sequences |
Non-Patent Citations (1)
Title |
---|
浅析视频编码新标准H.264的特性;姜忠;《有线电视技术》;20060610(第18期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20220132148A1 (en) | 2022-04-28 |
EP3987771A4 (en) | 2022-08-24 |
JP2024073509A (ja) | 2024-05-29 |
WO2021007225A1 (en) | 2021-01-14 |
EP3987771A1 (en) | 2022-04-27 |
JP2022539865A (ja) | 2022-09-13 |
CN114827600B (zh) | 2023-09-01 |
BR112022000158A2 (pt) | 2022-02-22 |
CA3146555A1 (en) | 2021-01-14 |
AU2020311890A1 (en) | 2022-02-03 |
JP7453329B2 (ja) | 2024-03-19 |
US12041249B2 (en) | 2024-07-16 |
CN116708795A (zh) | 2023-09-05 |
MX2022000292A (es) | 2022-02-03 |
CN114073073A (zh) | 2022-02-18 |
CN114827600A (zh) | 2022-07-29 |
KR20220027207A (ko) | 2022-03-07 |
CN116723326A (zh) | 2023-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114073073B (zh) | 一种支持混合nal单元的编解码方法和编解码器 | |
CN115550647B (zh) | 视频译码中的子图像标识符指示 | |
CN115442595B (zh) | 一种码流解码的方法、解码器及存储码流的设备 | |
CN114650428B (zh) | 使用标识符指示的视频译码码流提取的方法、设备和介质 | |
CN117956190A (zh) | 视频译码中的显式地址指示 | |
RU2822452C2 (ru) | Ограничения изображений смешанных единиц nal при кодировании/декодировании видео |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |